:root{color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-synthesis:none;--mint-50: #f0fdfa;--mint-100: #ccfbf1;--mint-200: #99f6e4;--mint-500: #14b8a6;--mint-600: #0d9488;--mint-700: #0f766e;--mint-800: #115e59;--brand-start: #0f766e;--brand-mid: #0d9488;--brand-end: #047857;--color-canvas: #ffffff;--color-surface: #ffffff;--color-surface-subtle: #f1f5f9;--color-surface-hover: #e2e8f0;--color-text: #0f172a;--color-text-secondary: #334155;--color-text-tertiary: #94a3b8;--color-primary: var(--mint-600);--color-primary-soft: var(--mint-50);--color-action: var(--mint-600);--color-action-hover: var(--mint-700);--color-border: rgba(148, 163, 184, .24);--color-border-strong: rgba(148, 163, 184, .42);--color-focus: var(--mint-500);--color-danger: #dc2626;--color-warning: #d97706;--color-success: #15803d;--hero-glow: radial-gradient(circle at 18% 12%, rgba(204, 251, 241, .55) 0%, transparent 42%), radial-gradient(circle at 82% 8%, rgba(224, 242, 254, .6) 0%, transparent 45%), radial-gradient(circle at 50% 32%, rgba(240, 253, 250, .45) 0%, transparent 50%);--radius-pill: 9999px;--radius-4xl: 32px;--radius-3xl: 24px;--radius-2xl: 16px;--radius-xl: 12px;--radius-control: var(--radius-xl);--radius-card: var(--radius-3xl);--radius-panel: var(--radius-2xl);--shadow-subtle: 0 4px 20px -2px rgba(15, 23, 42, .04);--shadow-float: 0 20px 35px -8px rgba(13, 148, 136, .12), 0 8px 16px -4px rgba(0, 0, 0, .03);--shadow-pill: 0 6px 24px rgba(15, 23, 42, .06);--shadow-modal: 0 25px 60px -15px rgba(15, 23, 42, .3);--shadow-panel: var(--shadow-subtle)}*{box-sizing:border-box}html{background:var(--color-canvas);color:var(--color-text)}body{min-width:320px;min-height:100vh;margin:0;background:var(--color-canvas);color:var(--color-text)}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button,a{color:inherit}select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:linear-gradient(45deg,transparent 50%,rgba(51,65,85,.92) 50%),linear-gradient(135deg,rgba(51,65,85,.92) 50%,transparent 50%),linear-gradient(180deg,#ffffffeb,#f8fafceb);background-position:calc(100% - 18px) calc(50% - 2px),calc(100% - 12px) calc(50% - 2px),0 0;background-size:6px 6px,6px 6px,100% 100%;background-repeat:no-repeat}select:hover{border-color:#14b8a63d}select:focus{outline:0;border-color:#14b8a657;box-shadow:0 0 0 4px #14b8a61f}select option,select optgroup{background:#fff;color:var(--color-text)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:8px;left:8px;z-index:1000;padding:10px 14px;background:var(--color-action);color:#fff;border-radius:var(--radius-pill);transform:translateY(-150%);box-shadow:var(--shadow-pill)}.skip-link:focus{transform:translateY(0)}.app-shell{min-height:100vh;display:grid;grid-template-columns:256px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px;padding:24px 16px 20px;background:#ffffff8f;border-right:1px solid rgba(255,255,255,.38);-webkit-backdrop-filter:blur(22px) saturate(135%);backdrop-filter:blur(22px) saturate(135%);box-shadow:14px 0 28px -26px #2f426d1a}.brand{display:flex;align-items:center;gap:12px;padding:8px 10px;text-decoration:none}.brand-mark,.dialog-brand{width:36px;height:36px;display:grid;place-items:center;flex:none;background:var(--mint-600);color:#fff;border-radius:var(--radius-2xl);box-shadow:0 8px 20px #0d948829;font-weight:800}.brand-copy{display:flex;flex-direction:column;gap:2px}.brand-copy strong{font-size:16px;line-height:1.2}.brand-copy small{color:var(--color-text-tertiary);font-size:12px}.desktop-navigation{display:grid;gap:6px}.sidebar-footer{display:grid;gap:8px;margin-top:auto}.nav-link{min-height:48px;display:flex;align-items:center;gap:12px;padding:0 16px;color:var(--color-text-secondary);border-radius:var(--radius-2xl);text-decoration:none;font-size:14px;font-weight:600;transition:background-color .16s ease,color .16s ease,box-shadow .16s ease}.nav-link:hover{background:#f1f5f9cc;color:var(--color-text)}.nav-link.router-link-exact-active{background:var(--mint-600);color:#fff;box-shadow:0 16px 28px -16px #0d94886b}.service-entry{position:relative;min-height:48px;display:flex;align-items:center;gap:10px;margin-top:auto;padding:0 16px;background:#ffffffdb;border-radius:var(--radius-2xl);box-shadow:var(--shadow-subtle);color:var(--color-text-secondary);text-decoration:none}.service-entry:hover{color:var(--color-text);box-shadow:var(--shadow-float)}.account-button{min-height:48px;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:auto;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-pill);box-shadow:var(--shadow-subtle);cursor:pointer}.account-button:disabled{cursor:wait;opacity:.55}.account-session{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:0;margin-top:0;padding:3px;background:#ffffffdb;border:1px solid rgba(148,163,184,.22);border-radius:var(--radius-pill);box-shadow:var(--shadow-subtle);transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.account-session:hover{background:#f0fdfaeb;border-color:#14b8a647;box-shadow:0 12px 24px -18px #0d94883d}.account-session .account-button{min-width:0;margin-top:0;min-height:40px;padding:0 10px;text-decoration:none;background:transparent;border:0;box-shadow:none;transition:color .16s ease,background-color .16s ease}.account-session:hover .account-button{color:var(--mint-700)}.account-session .account-button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-session>button{width:40px;height:40px;display:grid;place-items:center;border:0;border-left:1px solid rgba(148,163,184,.18);border-radius:calc(var(--radius-pill) - 4px);background:transparent;color:var(--color-text-tertiary);cursor:pointer;transition:color .16s ease,background-color .16s ease,border-color .16s ease}.account-session:hover>button{color:var(--mint-700);border-left-color:#14b8a629}.account-session>button:hover{background:#ffffffb8;color:var(--color-danger)}.account-session>button:disabled{cursor:wait;opacity:.45}.main-workspace{min-width:0;padding:32px clamp(24px,4vw,64px) 72px;background-color:var(--color-canvas);background-image:var(--hero-glow)}.home-view,.standard-page{width:100%;max-width:1280px;margin:0 auto}.search-composer{display:grid;gap:22px;padding:clamp(28px,4vw,44px);text-align:center}.hero-copy{max-width:760px;margin:0 auto}.hero-kicker{margin:0 0 12px;color:var(--mint-700);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.hero-copy h2{margin:0;font-size:clamp(40px,5vw,48px);line-height:1.15;letter-spacing:-.02em}.hero-copy p{max-width:720px;margin:14px auto 0;color:var(--color-text-secondary);font-size:14px;line-height:1.7}.search-row{width:min(100%,672px);min-height:60px;display:flex;align-items:center;gap:12px;margin:0 auto;padding:8px 8px 8px 18px;background:#fff;border-radius:var(--radius-pill);box-shadow:var(--shadow-pill);transition:box-shadow .16s ease}.search-row:focus-within,.search-row:hover{box-shadow:var(--shadow-float)}.search-row svg{color:var(--color-text-tertiary);flex:none}.search-row input{min-width:0;flex:1;height:100%;border:0;outline:0;color:var(--color-text);font-size:14px;background:transparent}.search-row>button{min-width:110px;min-height:44px;padding:0 20px;border:0;border-radius:var(--radius-pill);background:var(--mint-600);color:#fff;cursor:pointer;font-size:14px;font-weight:700}.search-row>button:hover{background:var(--mint-700)}.quick-filters{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.quick-filters button{min-height:32px;display:inline-flex;align-items:center;gap:6px;padding:0 14px;border:0;background:var(--color-surface-subtle);color:var(--color-text-secondary);border-radius:var(--radius-pill);cursor:pointer}.quick-filters button:hover{background:#0f172a;color:#fff}.content-section{margin-top:38px}.inline-empty{padding:22px 24px;background:#fffc;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle);color:var(--color-text-secondary);font-size:14px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:16px}.section-heading h2{margin:0;font-size:20px}.section-heading p{margin:5px 0 0;color:var(--color-text-secondary);font-size:14px}.section-heading>a{display:inline-flex;align-items:center;gap:4px;color:var(--color-focus);text-decoration:none;font-size:13px;font-weight:650}.recent-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.recent-item{min-width:0;display:grid;grid-template-columns:96px minmax(0,1fr) auto;align-items:center;gap:16px;padding:20px;background:#ffffffd6;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.recent-item:hover,.courseware-card:hover{background:#fff;box-shadow:var(--shadow-float)}.mini-cover{width:96px;height:60px;display:grid;place-items:center;overflow:hidden;border-radius:var(--radius-2xl)}.mini-cover img{width:100%;height:100%;display:block;object-fit:cover}.recent-copy{min-width:0;display:flex;flex-direction:column;gap:5px}.recent-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;line-height:1.4}.recent-copy small,.recent-copy span{color:var(--color-text-tertiary);font-size:12px;line-height:1.4}.recent-open{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--color-surface-subtle);color:var(--mint-700);text-decoration:none}.recent-open:hover{background:var(--mint-50)}.courseware-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}.courseware-card{min-width:0;overflow:hidden;background:#fff;border-radius:var(--radius-3xl);text-decoration:none;box-shadow:var(--shadow-subtle);transition:box-shadow .18s ease}.courseware-cover{position:relative;aspect-ratio:16 / 10;display:grid;place-items:center}.courseware-cover img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .24s ease}.courseware-card:hover .courseware-cover img{transform:scale(1.03)}.subject-tag,.access-tag{position:absolute;top:12px;padding:6px 10px;background:#ffffffe6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:var(--radius-pill);font-size:12px;font-weight:700}.subject-tag{left:12px;color:var(--color-text-secondary)}.access-tag{right:12px;background:var(--mint-600);color:#fff}.access-tag-dark{background:#0f172ad1;color:#fff}.courseware-copy{display:grid;gap:8px;padding:16px 4px 2px}.courseware-copy>strong{display:-webkit-box;min-height:44px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:16px;line-height:1.4;color:var(--color-text);padding:0 4px}.courseware-card:hover .courseware-copy>strong{color:var(--mint-600)}.courseware-copy>small{padding:0 4px;color:var(--color-text-secondary);font-size:12px}.courseware-copy>span{display:flex;justify-content:space-between;gap:8px;padding:0 4px 12px;color:var(--color-text-tertiary);font-size:12px}.tone-mint{background:linear-gradient(135deg,#f0fdfa,#ccfbf1);color:var(--mint-700)}.tone-cyan{background:linear-gradient(135deg,#ecfeff,#dbeafe);color:#0f766e}.tone-citrus{background:linear-gradient(135deg,#fefce8,#ecfccb);color:#4d7c0f}.tone-earth{background:linear-gradient(135deg,#f8fafc,#e2e8f0);color:#475569}.standard-page{min-height:calc(100vh - 114px);display:grid;align-content:start;gap:24px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:8px}.page-header h1,.detail-content h1,.status-panel h1,.runtime-placeholder h1,.error-page h1{margin:8px 0 10px;font-size:32px;line-height:1.2;letter-spacing:-.02em}.page-header p,.detail-content>p{max-width:720px;margin:0;color:var(--color-text-secondary);font-size:14px;line-height:1.7}.eyebrow{color:var(--mint-700);font-size:11px;font-weight:750;letter-spacing:.08em}.page-counter,.unlocks-count{flex:none;display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:var(--radius-pill);background:#ffffffdb;box-shadow:var(--shadow-subtle);color:var(--mint-700);font-size:12px;font-weight:700}.catalog-filter{display:grid;gap:18px;padding:24px;background:#ffffff6b;border:1px solid rgba(255,255,255,.56);border-radius:var(--radius-3xl);box-shadow:0 22px 46px -30px #0f172a24,inset 0 1px #fff6;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.catalog-search,.catalog-filter-group{display:grid;gap:10px}.catalog-filter input{width:100%;height:48px;color:var(--color-text)}.catalog-search .filter-input{display:flex;align-items:center;gap:10px;min-height:54px;padding:0 18px;border:1px solid rgba(255,255,255,.3);border-radius:20px;background:#ffffff2e;box-shadow:inset 3px 3px 8px #94a3b814,inset -2px -2px 6px #ffffff2e,0 8px 18px -24px #0f172a14;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.catalog-search .filter-input svg{color:var(--color-text-tertiary)}.catalog-search .filter-input input{border:0;outline:0;padding:0;background:transparent}.catalog-filter-tags{display:flex;flex-wrap:wrap;gap:10px}.catalog-filter-tags button{min-height:36px;padding:0 16px;border:1px solid rgba(255,255,255,.68);border-radius:var(--radius-pill);background:#ffffff8f;color:var(--color-text-secondary);cursor:pointer;font-size:13px;font-weight:600;box-shadow:inset 0 1px #ffffff5c;transition:background-color .16s ease,color .16s ease,box-shadow .16s ease,border-color .16s ease}.catalog-filter-tags button:hover{background:#ffffffd1;border-color:#ffffffe0;color:var(--color-text)}.catalog-filter-tags button.is-active{background:#0f172a;color:#fff;box-shadow:var(--shadow-subtle)}.empty-panel{margin-top:0;padding:56px 28px;text-align:center;background:#ffffffd1;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.empty-panel h2{margin:0 0 10px;font-size:20px}.empty-panel p{max-width:520px;margin:0 auto;color:var(--color-text-secondary);line-height:1.7}.empty-panel>svg{margin-bottom:14px;color:var(--mint-700)}.empty-panel .primary-action{margin-top:20px}.status-panel{margin-top:0;padding:36px 28px;text-align:center;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle);color:var(--color-text-secondary)}.status-panel h1,.status-panel h2{margin:0 0 8px;color:var(--color-text)}.status-panel p{margin:0 0 16px}.status-panel button,.runtime-placeholder button,.runtime-recovery button{min-height:44px;padding:0 16px;border:0;border-radius:var(--radius-xl);background:var(--color-surface-subtle);cursor:pointer;font-weight:600}.status-panel-error{box-shadow:0 0 0 1px #dc26262e,var(--shadow-subtle)}.catalog-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-top:0}.history-page-header{align-items:flex-end;gap:20px}.history-clear{min-height:44px;display:inline-flex;align-items:center;gap:7px;flex:none;padding:0 16px;border:0;border-radius:var(--radius-xl);background:#fff3f3;color:var(--color-danger);cursor:pointer;font-size:13px;font-weight:700;box-shadow:var(--shadow-subtle)}.history-clear:disabled{cursor:wait;opacity:.55}.history-list{display:grid;gap:16px}.history-item{min-width:0;display:grid;grid-template-columns:96px minmax(0,1fr) auto;align-items:center;gap:20px;padding:20px 22px;background:#ffffffd6;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.history-copy{min-width:0;display:flex;flex-direction:column;gap:7px;padding-right:6px}.history-copy a{min-width:0;text-decoration:none}.history-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;line-height:1.4}.history-copy small,.history-copy>span{color:var(--color-text-tertiary);font-size:12px;line-height:1.6}.history-actions{display:flex;align-items:center;gap:8px;padding-left:6px}.history-actions a,.history-actions button{height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:var(--radius-xl);background:#fff;box-shadow:var(--shadow-subtle);cursor:pointer;text-decoration:none;font-size:13px;font-weight:700}.history-actions a{min-width:116px;padding:0 14px;color:var(--mint-700)}.history-actions button{width:44px;padding:0;color:var(--color-text-tertiary)}.history-actions button:hover{color:var(--color-danger);background:#fff3f3}.history-actions button:disabled{cursor:wait;opacity:.5}.confirm-dialog{width:min(420px,calc(100vw - 24px));padding:0;border:0;border-radius:var(--radius-3xl);background:transparent;color:var(--color-text)}.confirm-dialog::backdrop{background:#09130d7a;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.confirm-dialog-card{position:relative;padding:28px;background:#fff;border-radius:var(--radius-3xl);box-shadow:var(--shadow-modal)}.confirm-icon{width:42px;height:42px;display:grid;place-items:center;background:#fff3f3;color:var(--color-danger);border-radius:var(--radius-xl)}.confirm-dialog h2{margin:18px 0 8px;font-size:20px}.confirm-dialog p{margin:0;color:var(--color-text-secondary);line-height:1.7}.confirm-dialog .confirm-error{margin-top:12px;padding:10px 12px;background:#fff3f3;color:var(--color-danger);border-radius:var(--radius-xl);font-size:12px}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.confirm-actions button{min-height:42px;padding:0 14px;border:1px solid var(--color-border-strong);border-radius:var(--radius-xl);background:#fff;cursor:pointer;font-weight:600}.confirm-actions .danger-action{border-color:var(--color-danger);background:var(--color-danger);color:#fff}.confirm-actions button:disabled{cursor:wait;opacity:.55}.detail-page{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(360px,1.1fr);align-items:center;gap:clamp(32px,7vw,96px)}.detail-cover{aspect-ratio:16 / 10;display:grid;place-items:center;overflow:hidden;border-radius:var(--radius-3xl);box-shadow:var(--shadow-float)}.detail-cover img{width:100%;height:100%;display:block;object-fit:cover}.detail-content{max-width:620px}.detail-tags{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.detail-tag{min-height:32px;display:inline-flex;align-items:center;padding:0 12px;border-radius:var(--radius-pill);background:#ffffffdb;box-shadow:var(--shadow-subtle);color:var(--color-text-secondary);font-size:12px;font-weight:700}.detail-tag-strong{background:var(--mint-600);color:#fff}.detail-facts{display:grid;gap:12px;padding:18px 0 0;margin:24px 0;list-style:none;border-top:1px solid rgba(148,163,184,.22)}.detail-facts li{display:flex;align-items:center;gap:8px;color:var(--color-text-secondary);line-height:1.6}.detail-note{padding:18px 20px;background:#ffffffd1;border-radius:var(--radius-2xl);box-shadow:var(--shadow-subtle)}.detail-note strong{display:block;margin-bottom:6px;font-size:14px}.detail-note p{margin:0;color:var(--color-text-secondary);font-size:13px;line-height:1.7}.detail-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.primary-action,.detail-actions button,.detail-actions a{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 16px;border:0;border-radius:var(--radius-xl);background:#fff;box-shadow:var(--shadow-subtle);text-decoration:none;cursor:pointer;font-weight:700}.primary-action{background:var(--mint-600);color:#fff}.primary-action:hover{background:var(--mint-700)}.error-page{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:clamp(24px,5vw,48px);background:#ffffffd1;border-radius:var(--radius-4xl);box-shadow:var(--shadow-subtle)}.error-code{color:var(--mint-600);font-size:72px;font-weight:800;line-height:1}.runtime-view{height:100dvh;min-height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr);background-color:var(--color-canvas);background-image:var(--hero-glow);color:var(--color-text);overflow:hidden}.runtime-toolbar{min-height:56px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:10px 18px;background:transparent;border-bottom:0;-webkit-backdrop-filter:none;backdrop-filter:none}.runtime-toolbar a,.runtime-toolbar button{width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(148,163,184,.18);border-radius:var(--radius-xl);background:#ffffffd1;color:var(--color-text);box-shadow:var(--shadow-subtle);cursor:pointer;transition:background-color .16s ease,transform .16s ease}.runtime-toolbar a:hover,.runtime-toolbar button:hover{background:#fff}.runtime-toolbar-copy{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:0}.runtime-toolbar strong,.runtime-toolbar small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runtime-toolbar strong{font-size:18px;line-height:1.35;color:var(--color-text)}.runtime-actions{display:flex;gap:8px}.runtime-canvas{min-height:0;display:grid;place-items:center;padding:18px 18px 20px;background:transparent;color:var(--color-text);overflow:hidden}.runtime-placeholder{width:min(760px,100%);position:relative;padding:38px 32px 36px;text-align:center;border-radius:var(--radius-4xl);border:1px solid rgba(255,255,255,.58);background:linear-gradient(180deg,#ffffffe6,#ffffffbd),linear-gradient(135deg,#ffffff24,#fff0);-webkit-backdrop-filter:blur(20px) saturate(140%);backdrop-filter:blur(20px) saturate(140%);box-shadow:0 30px 60px -38px #0f172a47}.runtime-placeholder h1{margin:0 0 8px}.runtime-placeholder p{max-width:560px;margin:0 auto;color:var(--color-text-secondary);line-height:1.7}.runtime-placeholder>span{width:48px;height:48px;display:inline-grid;place-items:center;margin-bottom:16px;border-radius:50%;background:var(--mint-50);color:var(--mint-700)}.runtime-recovery{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px}.runtime-recovery a,.runtime-recovery button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 16px;border:0;border-radius:var(--radius-xl);background:#fff;box-shadow:var(--shadow-subtle);text-decoration:none;cursor:pointer;font-weight:700}.runtime-recovery .primary-action{background:var(--mint-600);color:#fff}.runtime-stage{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;background:#fff;border:1px solid rgba(226,232,240,.92);border-radius:28px;box-shadow:0 28px 60px -24px #0f172a2e}.runtime-stage.is-loading{display:grid;place-items:center;background:radial-gradient(circle at 18% 12%,rgba(204,251,241,.55) 0%,transparent 32%),radial-gradient(circle at 82% 10%,rgba(224,242,254,.58) 0%,transparent 34%),#fff}.courseware-frame{width:100%;height:100%;display:block;border:0;background:#fff}.runtime-loading-state{display:grid;justify-items:center;gap:10px;text-align:center;color:var(--color-text)}.runtime-loading-state>span{display:inline-grid;place-items:center;min-width:56px;height:36px;padding:0 14px;background:var(--mint-50);color:var(--mint-700);border-radius:var(--radius-xl);font-weight:750}.runtime-loading-state strong{font-size:18px;line-height:1.4}.runtime-loading-state p{max-width:420px;margin:0;color:var(--color-text-secondary);font-size:14px;line-height:1.7}.runtime-watermark{position:absolute;inset:0;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:space-around;gap:42px 24px;overflow:hidden;padding:28px;pointer-events:none;-webkit-user-select:none;user-select:none}.runtime-watermark span{color:#0d948838;font-size:18px;font-weight:800;letter-spacing:.02em;text-align:center;transform:rotate(-18deg);white-space:nowrap}.runtime-actions button:disabled{cursor:wait;opacity:.45}.mobile-navigation{display:none}.auth-dialog{width:min(1024px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:0;border-radius:var(--radius-3xl);background:transparent;color:var(--color-text)}.auth-dialog::backdrop{background:#02061773;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.auth-dialog-card{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);max-height:calc(100dvh - 32px);overflow:hidden;background:#fff;border-radius:var(--radius-3xl);box-shadow:var(--shadow-modal)}.auth-hero{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:28px;padding:42px 36px;overflow:hidden;background:linear-gradient(140deg,var(--brand-start),var(--brand-mid) 52%,var(--brand-end));color:#fff}.auth-hero-rings{position:absolute;border:1px solid rgba(255,255,255,.12);border-radius:50%;pointer-events:none}.auth-hero-rings-lg{top:-120px;left:-120px;width:420px;height:420px}.auth-hero-rings-sm{top:-70px;left:-70px;width:320px;height:320px;border-color:#ffffff14}.auth-hero-brand,.auth-hero-copy,.auth-hero small{position:relative;z-index:1}.auth-hero-brand{display:grid;gap:22px}.auth-hero-brand .dialog-brand{width:48px;height:48px;background:#ffffff29;border:1px solid rgba(255,255,255,.18);box-shadow:none}.auth-hero-brand strong{display:block;font-size:28px;line-height:1.25}.auth-hero-brand p{margin:8px 0 0;color:#ccfbf1eb;font-size:15px}.auth-hero-copy h3{margin:0 0 18px;font-size:16px}.auth-hero-features{display:grid;gap:14px;padding:0;margin:0;list-style:none}.auth-hero-features li{position:relative;padding-left:34px;line-height:1.6}.auth-hero-features li:before{content:"";position:absolute;top:2px;left:0;width:22px;height:22px;border-radius:50%;background:#ffffff2e;box-shadow:inset 0 0 0 1px #ffffff1f}.auth-hero-features li:after{content:"";position:absolute;top:8px;left:7px;width:8px;height:4px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg)}.auth-hero small{color:#99f6e4e0;font-size:12px}.auth-main{display:flex;flex-direction:column;align-items:center;padding:28px 32px 32px;background:#fff}.auth-main-topbar{width:100%;max-width:420px;display:flex;align-items:center;justify-content:space-between;gap:16px}.auth-mode-switch{display:inline-grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px;background:var(--color-surface-subtle);border-radius:var(--radius-2xl)}.auth-mode-switch button{min-height:40px;padding:0 24px;border:0;border-radius:var(--radius-xl);background:transparent;color:var(--color-text-secondary);cursor:pointer;font-weight:600}.auth-mode-switch button.is-active{background:var(--mint-600);color:#fff;box-shadow:var(--shadow-subtle)}.auth-mode-indicator{color:var(--color-text-secondary);font-size:14px;font-weight:600}.dialog-close{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:50%;background:var(--color-surface-subtle);color:var(--color-text-secondary);cursor:pointer}.dialog-close:hover{background:#e2e8f0;color:var(--color-text)}.auth-dialog-header{width:100%;max-width:420px;margin-top:40px}.auth-dialog-header h2{margin:0;font-size:28px;line-height:1.2}.auth-dialog-header p{margin:8px 0 0;color:var(--color-text-tertiary);font-size:14px;line-height:1.6}.auth-context-card{width:100%;display:grid;gap:8px;max-width:420px;margin-top:20px;padding:16px 18px;border:1px solid rgba(110,231,183,.28);border-radius:var(--radius-2xl);background:linear-gradient(180deg,#f0fdfaeb,#ffffffe0)}.auth-context-badge{display:inline-flex;align-items:center;justify-content:center;width:fit-content;min-height:28px;padding:0 12px;border-radius:999px;background:#d1fae5eb;color:var(--mint-700);font-size:12px;font-weight:700}.auth-context-card strong{font-size:16px;line-height:1.45}.auth-context-card p{margin:0;color:var(--color-text-secondary);font-size:13px;line-height:1.6}.auth-form{width:100%;display:grid;gap:16px;max-width:420px;margin-top:28px}.field{display:grid;gap:8px;font-size:13px;font-weight:600;color:var(--color-text-secondary)}.field>input,.password-field,.verification-field{min-height:48px;border:1px solid rgba(148,163,184,.28);border-radius:var(--radius-xl);background:#fff;font-size:15px}.field>input{width:100%;padding:0 14px}.field>input::placeholder,.password-field input::placeholder,.verification-field input::placeholder{color:var(--color-text-tertiary);font-size:15px}.auth-field-help{color:var(--color-text-tertiary);font-size:12px;font-weight:400;line-height:1.5}.password-field,.verification-field{display:flex;align-items:center;overflow:hidden}.password-field input,.verification-field input{min-width:0;height:46px;flex:1;padding:0 14px;border:0;outline:0;background:transparent;font-size:15px}.password-field button{width:46px;height:46px;display:grid;place-items:center;border:0;background:transparent;cursor:pointer;color:var(--color-text-tertiary)}.verification-field button{min-width:112px;min-height:40px;margin-right:4px;padding:0 14px;border:0;border-radius:10px;background:var(--color-surface-subtle);color:var(--mint-700);cursor:pointer;font-size:14px;font-weight:600}.agreement-field{display:flex;align-items:flex-start;gap:8px;color:var(--color-text-secondary);font-size:12px;line-height:1.6}.agreement-field input{width:16px;height:16px;margin:2px 0 0;accent-color:var(--mint-600)}.auth-inline-field{align-items:center}.auth-inline-field .text-link{margin-left:auto;padding:0;border:0;background:transparent;color:var(--mint-700);cursor:pointer;font-size:12px;font-weight:600}.form-feedback{margin:0;padding:12px 14px;background:var(--color-primary-soft);color:var(--color-focus);border-radius:var(--radius-xl);font-size:12px;line-height:1.5}.form-feedback.is-error{background:#fff3f3;color:var(--color-danger)}.auth-submit{min-height:48px;border:0;border-radius:var(--radius-xl);background:var(--mint-600);color:#fff;cursor:pointer;font-size:15px;font-weight:700}.auth-submit:hover{background:var(--mint-700)}.auth-submit:disabled{cursor:wait;opacity:.55}.auth-dialog-footer{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;max-width:420px;margin-top:20px;color:var(--color-text-tertiary);font-size:12px}.auth-dialog-footer button{min-height:24px;padding:0;border:0;background:transparent;color:var(--mint-700);cursor:pointer;font-size:12px;font-weight:700}.account-overview{width:100%;max-width:1040px;overflow:hidden;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.account-overview>header{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:24px;border-bottom:1px solid rgba(148,163,184,.18)}.account-avatar{width:52px;height:52px;display:grid;place-items:center;background:var(--mint-50);color:var(--mint-700);border-radius:var(--radius-2xl)}.account-overview>header div{min-width:0;display:flex;flex-direction:column;gap:4px}.account-overview>header small{color:var(--color-text-tertiary)}.account-overview>header strong{overflow-wrap:anywhere;font-size:19px}.account-status{display:inline-flex;align-items:center;gap:6px;justify-self:end;color:var(--color-focus);font-size:13px;font-weight:650;white-space:nowrap}.account-overview dl{width:100%;margin:0;padding:4px 24px}.account-overview dl>div{display:grid;grid-template-columns:140px minmax(0,1fr);align-items:center;gap:18px;padding:16px 0;border-bottom:1px solid rgba(148,163,184,.18)}.account-overview dl>div:last-child{border-bottom:0}.account-overview dt{display:flex;align-items:center;gap:8px;color:var(--color-text-secondary)}.account-overview dd{justify-self:end;margin:0;text-align:right;font-weight:600}.account-overview>header button{min-height:44px;display:inline-flex;align-items:center;gap:7px;justify-self:end;padding:0 16px;border:0;border-radius:var(--radius-xl);background:#fff3f3;color:var(--color-danger);cursor:pointer;font-weight:700}.account-overview>header button:disabled{cursor:wait;opacity:.55}.account-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:20px;max-width:1040px}.account-panel{overflow:hidden;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.account-panel-header{padding:24px 24px 18px;border-bottom:1px solid rgba(148,163,184,.16)}.account-panel-header h2{margin:0;font-size:20px}.account-panel-header p{margin:6px 0 0;color:var(--color-text-secondary);font-size:13px;line-height:1.6}.account-link-list{display:grid;padding:10px 14px 14px}.account-link-row{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px 12px;border-radius:var(--radius-2xl);color:inherit;text-decoration:none}.account-link-row:hover{background:#f1f5f9db}.account-link-icon{width:40px;height:40px;display:grid;place-items:center;background:var(--mint-50);color:var(--mint-700);border-radius:var(--radius-xl)}.account-link-copy{min-width:0;display:grid;gap:4px}.account-link-copy strong{font-size:15px;line-height:1.4}.account-link-copy small{color:var(--color-text-secondary);font-size:13px;line-height:1.6}.account-link-row>svg:last-child{color:var(--color-text-tertiary)}.account-guide-list{display:grid;gap:14px;padding:18px 24px 24px}.account-guide-list article{display:grid;gap:6px;padding:18px;background:#f1f5f9b8;border-radius:var(--radius-2xl)}.account-guide-list strong{font-size:15px;line-height:1.5}.account-guide-list p{margin:0;color:var(--color-text-secondary);font-size:13px;line-height:1.7}.nav-link{position:relative}.notification-badge{min-width:18px;height:18px;display:inline-grid;place-items:center;margin-left:auto;padding:0 4px;border-radius:9px;background:var(--color-action);color:#fff;font-size:10px;line-height:1}.notifications-page{max-width:900px}.notifications-header{align-items:flex-end;gap:20px}.notifications-mark-all{min-height:44px;display:inline-flex;align-items:center;gap:7px;flex:none;padding:0 16px;border:0;border-radius:var(--radius-xl);background:#fff;color:var(--mint-700);cursor:pointer;font-size:13px;font-weight:700;box-shadow:var(--shadow-subtle)}.notifications-mark-all:disabled{cursor:default;opacity:.5}.notification-list{display:grid;gap:16px;margin-top:0}.notification-item{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:16px;padding:20px;background:#ffffffd6;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.notification-item.is-unread{box-shadow:inset 4px 0 0 var(--mint-600),var(--shadow-subtle)}.notification-icon{width:44px;height:44px;display:grid;place-items:center;background:var(--mint-50);color:var(--mint-700);border-radius:var(--radius-2xl)}.notification-copy{min-width:0}.notification-copy strong{display:block;font-size:15px}.notification-copy p{margin:6px 0;color:var(--color-text-secondary);line-height:1.6}.notification-copy small{color:var(--color-text-tertiary);font-size:11px}.notification-actions{display:flex;align-items:center;gap:6px}.notification-actions a,.notification-actions button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-xl);background:#fff;color:var(--mint-700);cursor:pointer;text-decoration:none;box-shadow:var(--shadow-subtle)}.notification-actions a{padding:0 14px;font-size:12px;font-weight:700}.notification-actions button{width:40px;padding:0}.notification-actions button:disabled{cursor:wait;opacity:.5}.notifications-empty{margin-top:22px}.security-page{max-width:900px}.security-header{align-items:flex-end;gap:20px}.security-header>a{min-height:44px;display:inline-flex;align-items:center;padding:0 16px;border:0;border-radius:var(--radius-xl);color:var(--mint-700);background:#fff;box-shadow:var(--shadow-subtle);text-decoration:none;font-size:13px;font-weight:700}.security-summary{display:flex;align-items:center;gap:14px;padding:20px;background:#f0fdfadb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.security-summary>span{width:44px;height:44px;display:grid;place-items:center;flex:none;background:#fff;color:var(--mint-700);border-radius:var(--radius-2xl)}.security-summary strong{font-size:15px}.security-summary p{margin:4px 0 0;color:var(--color-text-secondary);font-size:12px;line-height:1.5}.session-list{display:grid;gap:16px;padding:0;margin:0;list-style:none}.session-item{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:18px 20px;background:#ffffffd6;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.session-item.is-current{box-shadow:0 0 0 1px #0d94882e,var(--shadow-subtle)}.session-icon{width:44px;height:44px;display:grid;place-items:center;background:var(--color-surface-subtle);color:var(--color-text-secondary);border-radius:var(--radius-2xl)}.session-copy{min-width:0;display:grid;gap:4px}.session-copy strong{overflow-wrap:anywhere;font-size:14px}.session-copy small{color:var(--color-text-tertiary);font-size:11px}.session-actions{display:flex;align-items:center;gap:8px}.current-session{display:inline-flex;align-items:center;gap:5px;color:var(--mint-700);font-size:12px;font-weight:700;white-space:nowrap}.session-actions button{min-height:40px;display:inline-flex;align-items:center;gap:6px;padding:0 12px;border:0;border-radius:var(--radius-xl);background:#fff3f3;color:var(--color-danger);cursor:pointer;font-size:12px;font-weight:700}.session-actions button:disabled{cursor:wait;opacity:.5}.purchase-panel{margin-top:0;padding:28px;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.purchase-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.purchase-panel>header h2{margin:6px 0;font-size:21px}.purchase-panel>header p{margin:0;color:var(--color-text-secondary)}.purchase-panel>header>svg{color:var(--color-focus)}.purchase-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:20px}.purchase-options article{padding:20px;background:var(--color-surface-subtle);border-radius:var(--radius-2xl)}.purchase-options h3{margin:0 0 7px;font-size:16px}.purchase-options p{margin:0 0 12px;color:var(--color-text-secondary);line-height:1.55}.purchase-options small{color:var(--color-text-tertiary)}.purchase-options img{width:120px;height:120px;display:block;object-fit:contain;background:#fff;border-radius:var(--radius-xl)}.redeem-form{display:grid;grid-template-columns:150px minmax(0,1fr) 150px minmax(0,1fr) auto;align-items:center;gap:10px;padding-top:20px;margin-top:20px;border-top:1px solid rgba(148,163,184,.18)}.redeem-form label{color:var(--color-text-secondary);font-size:13px;font-weight:650}.redeem-form label small{display:block;margin-top:3px;color:var(--color-text-tertiary);font-weight:400}.redeem-form input,.redeem-form select{width:100%;min-height:44px;padding:0 42px 0 12px;background-color:#fff;border:1px solid rgba(148,163,184,.28);border-radius:var(--radius-xl);color:var(--color-text)}.redeem-form button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 16px;border:0;border-radius:var(--radius-xl);background:var(--mint-600);color:#fff;font-weight:700;cursor:pointer}.redeem-form button:disabled{cursor:wait;opacity:.55}.redeem-success,.redeem-error{grid-column:1 / -1;margin:0;font-size:13px}.redeem-success{color:var(--color-focus)}.redeem-error{color:var(--color-danger)}.entitlement-page{max-width:980px}.entitlement-empty,.membership-status{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;padding:24px;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.entitlement-empty>span,.membership-icon{width:52px;height:52px;display:grid;place-items:center;background:var(--color-surface-subtle);color:var(--color-text-secondary);border-radius:var(--radius-2xl)}.entitlement-empty h2,.membership-status h2{margin:2px 0 4px;font-size:20px}.entitlement-empty p,.membership-status p{margin:0;color:var(--color-text-secondary);line-height:1.6}.entitlement-empty button,.membership-status>a{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 16px;border:0;border-radius:var(--radius-xl);background:var(--mint-600);color:#fff;cursor:pointer;text-decoration:none;font-weight:700}.auth-state-panel{position:relative;grid-template-columns:minmax(0,1fr) auto;gap:18px 16px;border:1px solid rgba(255,255,255,.54);background:linear-gradient(180deg,#ffffffe0,#ffffffb8),linear-gradient(135deg,#ffffff24,#fff0);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);box-shadow:0 24px 52px -38px #0f172a47}.auth-state-copy h2{margin:0 0 6px}.auth-state-copy p{margin:0}.membership-status.is-active{box-shadow:0 0 0 1px #0d948833,var(--shadow-subtle)}.membership-status.is-active .membership-icon{background:var(--color-primary-soft);color:var(--color-focus)}.membership-status small{color:var(--color-text-tertiary)}.membership-status p{display:flex;align-items:center;gap:7px}.membership-redeem-panel{padding:24px 28px;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.membership-redeem-form{grid-template-columns:minmax(0,1fr) auto;margin-top:0;padding-top:0;border-top:0}.membership-redeem-form label{display:grid;gap:7px}.membership-redeem-form input{padding-right:12px}.membership-benefits-panel,.membership-guide-section{padding:28px;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.membership-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.membership-section-header h2{margin:0;font-size:20px}.membership-section-header p{margin:6px 0 0;color:var(--color-text-secondary);line-height:1.6}.membership-section-header>svg{color:var(--mint-700)}.membership-benefits-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.membership-benefit-card,.membership-guide-card{display:grid;gap:10px;padding:20px;background:#f1f5f9b8;border-radius:var(--radius-2xl)}.membership-benefit-card{background-image:radial-gradient(circle at 18% 12%,rgba(204,251,241,.58) 0%,transparent 44%),radial-gradient(circle at 82% 10%,rgba(224,242,254,.54) 0%,transparent 46%),linear-gradient(180deg,#fffffff0,#f8fafceb);box-shadow:var(--shadow-subtle)}.membership-benefit-card>span{width:40px;height:40px;display:grid;place-items:center;background:#14b8a61f;color:var(--mint-700);border-radius:var(--radius-xl);box-shadow:none}.membership-benefit-card strong,.membership-guide-card strong{font-size:15px;line-height:1.5}.membership-benefit-card p,.membership-guide-card p{margin:0;color:var(--color-text-secondary);font-size:13px;line-height:1.7}.membership-benefit-card strong{color:var(--color-text)}.membership-guide-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grant-section{margin-top:28px}.grant-section>header{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:14px}.grant-section h2{margin:0;font-size:20px}.grant-section header p{margin:4px 0 0;color:var(--color-text-secondary);font-size:13px}.grant-section header>span{padding:6px 10px;background:#fff;color:var(--mint-700);border-radius:var(--radius-pill);font-size:12px;font-weight:700;box-shadow:var(--shadow-subtle)}.grant-list{padding:0;margin:0;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle);list-style:none}.grant-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:18px 20px;border-bottom:1px solid rgba(148,163,184,.18)}.grant-list li:last-child{border-bottom:0}.grant-list li>svg{color:var(--color-focus)}.grant-list li div{min-width:0;display:grid;gap:3px}.grant-list li small{color:var(--color-text-tertiary);overflow-wrap:anywhere}.grant-list li>span{color:var(--color-text-secondary);font-size:13px}.unlocks-page{max-width:1040px}.unlocks-page-header{align-items:flex-end}.unlocks-count{flex:none;padding:6px 9px;background:var(--color-primary-soft);color:var(--color-focus);border-radius:6px;font-size:12px;font-weight:700}.unlocks-filter-tabs{display:flex;flex-wrap:wrap;gap:10px;margin-top:-6px}.unlocks-filter-tabs button{min-height:36px;padding:0 16px;border:0;border-radius:var(--radius-pill);background:var(--color-surface-subtle);color:var(--color-text-secondary);cursor:pointer;font-size:13px;font-weight:600}.unlocks-filter-tabs button:hover{background:#e2e8f0eb;color:var(--color-text)}.unlocks-filter-tabs button.is-active{background:#0f172a;color:#fff;box-shadow:var(--shadow-subtle)}.unlocks-empty .primary-action{gap:7px}.unlock-list{display:grid;gap:16px;padding:0;margin:0;list-style:none}.unlock-list li{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:20px;background:#ffffffd6;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.unlock-list li.is-unavailable{background:#ffffffad}.unlock-list li.is-membership{box-shadow:0 0 0 1px #0d948829,var(--shadow-subtle)}.unlock-icon{width:44px;height:44px;display:grid;place-items:center;background:var(--mint-50);color:var(--mint-700);border-radius:var(--radius-2xl)}.is-unavailable .unlock-icon{background:var(--color-surface-hover);color:var(--color-text-tertiary)}.unlock-copy{min-width:0}.unlock-copy h2{margin:4px 0;overflow-wrap:anywhere;font-size:17px}.unlock-copy p{margin:0 0 5px;color:var(--color-text-secondary);font-size:13px;line-height:1.55}.unlock-copy small{color:var(--color-text-tertiary);overflow-wrap:anywhere}.unlock-type{color:var(--color-focus);font-size:11px;font-weight:700}.unlock-meta{min-width:170px;display:flex;flex-direction:column;align-items:flex-end;gap:10px;color:var(--color-text-secondary);font-size:12px}.unlock-meta>span:first-child{display:inline-flex;align-items:center;gap:6px}.unlock-meta a{min-height:42px;display:inline-flex;align-items:center;justify-content:center;padding:0 14px;border:0;border-radius:var(--radius-xl);background:var(--mint-600);color:#fff;text-decoration:none;font-size:13px;font-weight:700}.unavailable-label{padding:6px 10px;background:var(--color-surface-subtle);border-radius:var(--radius-pill);color:var(--color-text-secondary);font-weight:700}.direct-links-page{max-width:1040px}.direct-link-create{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px 18px;padding:24px;background:#ffffffdb;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.direct-link-create>span{width:48px;height:48px;display:grid;place-items:center;background:var(--mint-50);border-radius:var(--radius-2xl);color:var(--mint-700)}.direct-link-create h2,.direct-link-list-section h2{margin:1px 0 5px;font-size:20px}.direct-link-create p,.direct-link-list-section header p{margin:0;color:var(--color-text-secondary);font-size:13px;line-height:1.6}.direct-link-create form{grid-column:1 / -1;display:grid;gap:7px}.direct-link-create label{font-size:13px;font-weight:650}.direct-link-create form>div{display:flex;gap:10px}.direct-link-create select{min-width:0;height:44px;flex:1;padding:0 42px 0 12px;border:1px solid rgba(148,163,184,.28);border-radius:var(--radius-xl);background-color:#fff;color:var(--color-text)}.direct-link-create form button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;flex:none;gap:7px;padding:0 16px;border:0;border-radius:var(--radius-xl);background:var(--mint-600);color:#fff;cursor:pointer;font-size:13px;font-weight:700}.direct-link-create form button:disabled{cursor:wait;opacity:.5}.direct-link-create-notes{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}.direct-link-create-notes span{min-height:32px;display:inline-flex;align-items:center;gap:6px;padding:0 12px;background:#f0fdfaeb;border-radius:var(--radius-pill);color:var(--mint-700);font-size:12px;font-weight:700}.direct-link-create small{color:var(--color-text-tertiary);line-height:1.55}.direct-link-create .direct-link-field-error{padding:8px 10px;background:#fff3f3;border-radius:6px;color:var(--color-danger)}.direct-link-list-section{margin-top:30px}.direct-link-list-section>header{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:12px}.direct-link-list-toolbar{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px}.direct-link-filter-group{display:inline-flex;align-items:center;gap:6px;padding:4px;background:#f1f5f9d6;border-radius:var(--radius-pill);box-shadow:inset 0 1px #ffffffb3}.direct-link-filter-group button{min-height:32px;display:inline-flex;align-items:center;justify-content:center;padding:0 14px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--color-text-secondary);cursor:pointer;font-size:13px;font-weight:700}.direct-link-filter-group button.is-active{background:var(--mint-600);color:#fff;box-shadow:0 10px 20px -14px #0d948873}.direct-link-list-section>header>span{flex:none;padding:6px 10px;background:#fff;border-radius:var(--radius-pill);color:var(--mint-700);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;box-shadow:var(--shadow-subtle)}.direct-link-list{display:grid;gap:16px;padding:0;margin:0;list-style:none}.direct-link-list li{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:20px;background:#ffffffd6;border-radius:var(--radius-3xl);box-shadow:var(--shadow-subtle)}.direct-link-list li.is-inactive{background:#ffffffad}.direct-link-icon{width:44px;height:44px;display:grid;place-items:center;flex:none;background:var(--mint-50);border-radius:var(--radius-2xl);color:var(--mint-700)}.is-inactive .direct-link-icon{background:var(--color-surface-hover);color:var(--color-text-tertiary)}.direct-link-copy{min-width:0}.direct-link-copy h3{margin:0 0 5px;overflow-wrap:anywhere;font-size:17px}.direct-link-copy p,.direct-link-copy small{display:block;margin:0;color:var(--color-text-secondary);font-size:13px;line-height:1.55}.direct-link-copy small{color:var(--color-text-tertiary)}.direct-link-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}.direct-link-status{min-height:32px;display:inline-flex;align-items:center;gap:5px;padding:0 10px;border-radius:var(--radius-pill);background:var(--mint-50);color:var(--mint-700);font-size:12px;font-weight:700;white-space:nowrap}.direct-link-status.is-expired,.direct-link-status.is-unavailable,.direct-link-status.is-revoked{background:var(--color-surface-hover);color:var(--color-text-secondary)}.direct-link-actions button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 14px;border:0;border-radius:var(--radius-xl);background:#fff;color:var(--mint-700);cursor:pointer;font-size:13px;font-weight:700;box-shadow:var(--shadow-subtle)}.direct-link-actions button:hover{background:var(--mint-50)}.direct-link-actions .direct-link-revoke{color:var(--color-danger)}.direct-link-actions .direct-link-revoke:hover{border-color:#d8aaaa;background:#fff3f3}.direct-link-actions button:disabled{cursor:wait;opacity:.5}.direct-runtime-view .runtime-toolbar{min-height:56px}.direct-runtime-view .runtime-toolbar>div{gap:0}@media(max-width:1240px){.app-shell{grid-template-columns:88px minmax(0,1fr)}.sidebar{align-items:center;padding-inline:12px}.brand-copy,.nav-link span,.service-entry span,.account-button span{display:none}.brand,.nav-link,.account-button,.service-entry{width:44px;justify-content:center;padding:0}.account-session{grid-template-columns:44px}.account-session>button{display:none}.notification-badge{position:absolute;top:-3px;right:-3px}.courseware-grid,.catalog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:960px){.auth-dialog{width:min(720px,calc(100vw - 24px))}.auth-dialog-card{grid-template-columns:1fr}.auth-hero{display:none}.page-header{flex-direction:column;align-items:flex-start}.page-counter,.unlocks-count{margin-top:4px}.recent-grid{grid-template-columns:1fr}.courseware-grid,.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-page{grid-template-columns:1fr;align-content:start}.account-layout,.purchase-options,.redeem-form,.membership-benefits-grid,.membership-guide-list{grid-template-columns:1fr}}@media(max-width:700px){.app-shell{display:block}.sidebar{display:none}.main-workspace{min-height:100dvh;padding:20px 14px calc(96px + env(safe-area-inset-bottom))}.search-composer{padding:24px 8px 8px}.hero-copy h2{font-size:40px}.search-row{min-height:56px;padding-left:16px}.search-row input{font-size:16px}.section-heading{align-items:center}.courseware-grid,.catalog-grid{grid-template-columns:1fr}.courseware-card{display:grid;grid-template-columns:132px minmax(0,1fr);gap:14px;padding:12px}.courseware-cover{aspect-ratio:16 / 10}.subject-tag,.access-tag{top:10px;font-size:11px}.subject-tag{left:10px}.access-tag{right:10px}.courseware-copy{padding:4px 0 0}.courseware-copy>strong{min-height:auto;padding:0}.courseware-copy>small,.courseware-copy>span{padding:0}.recent-item{grid-template-columns:84px minmax(0,1fr) auto;gap:12px;padding:16px}.mini-cover{width:84px;height:58px}.mobile-navigation{position:fixed;right:0;bottom:0;left:0;z-index:40;min-height:64px;display:grid;grid-template-columns:repeat(4,1fr);padding:6px 8px max(8px,env(safe-area-inset-bottom));background:#ffffffe6;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.mobile-nav-link{min-height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--color-text-tertiary);text-decoration:none;font-size:11px}.mobile-nav-link.router-link-exact-active{color:var(--color-focus);font-weight:650}.history-page-header{flex-direction:column;align-items:flex-start}.history-clear{margin-top:4px}.history-item{grid-template-columns:56px minmax(0,1fr);gap:12px}.history-item .mini-cover{width:56px;height:48px}.history-actions{grid-column:1 / -1;justify-content:flex-end;padding-top:10px;border-top:1px solid var(--color-border)}.history-actions a{flex:1}.auth-dialog{width:min(100vw - 16px,520px);max-height:calc(100dvh - 16px)}.auth-main{align-items:stretch;padding:20px 18px 22px}.auth-main-topbar{max-width:none;align-items:flex-start}.auth-mode-switch{width:100%}.auth-mode-switch button{padding-inline:12px}.auth-dialog-header{max-width:none;margin-top:24px}.auth-dialog-header h2{font-size:24px}.auth-context-card,.auth-form,.auth-dialog-footer{max-width:none}.account-overview>header{grid-template-columns:auto minmax(0,1fr)}.account-status{grid-column:2;justify-self:start}.account-overview>header button{grid-column:1 / -1;justify-self:flex-start}.account-overview dl>div{grid-template-columns:1fr;gap:6px}.account-overview dd{justify-self:start;text-align:left}.account-layout{gap:14px}.account-panel-header{padding:20px 18px 14px}.account-link-list{padding:8px 10px 10px}.account-guide-list{padding:14px 18px 18px}.direct-link-create{grid-template-columns:1fr;padding:20px 18px}.direct-link-create>span{width:44px;height:44px}.direct-link-list-section>header{align-items:flex-start}.direct-link-list-toolbar{width:100%;justify-content:flex-start}.direct-link-list li{grid-template-columns:1fr;align-items:flex-start}.direct-link-actions{justify-content:flex-start}.runtime-toolbar{min-height:64px;padding:10px 12px;gap:10px}.runtime-toolbar a,.runtime-toolbar button{width:40px;height:40px}.runtime-toolbar strong{font-size:15px}.runtime-canvas{padding:8px}.runtime-stage{height:100%;min-height:0;border-radius:22px}.runtime-watermark{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 10px;padding:14px 4px}.runtime-watermark span{font-size:14px}.entitlement-empty,.membership-status{grid-template-columns:auto minmax(0,1fr);padding:18px}.entitlement-empty button,.membership-status>a{grid-column:1 / -1}.auth-state-panel{grid-template-columns:1fr}.auth-state-copy{grid-column:1}.auth-state-panel button{grid-column:1 / -1}.membership-benefits-panel,.membership-guide-section,.membership-redeem-panel{padding:20px 18px}.membership-section-header{flex-direction:column}.grant-list li{grid-template-columns:auto minmax(0,1fr)}.grant-list li>span{grid-column:2}.unlocks-page-header{align-items:flex-start}.unlocks-count{margin-top:4px}.unlock-list li{grid-template-columns:auto minmax(0,1fr);padding:16px}.unlock-meta{min-width:0;grid-column:1 / -1;align-items:stretch;padding-top:12px;border-top:1px solid var(--color-border)}.unlock-meta a{min-height:44px}.unlock-meta>span:first-child{justify-content:flex-start}.unavailable-label{align-self:flex-start}.direct-links-page-header{align-items:flex-start}.direct-link-create{padding:18px}.direct-link-create form>div{flex-direction:column}.direct-link-list li{grid-template-columns:auto minmax(0,1fr);padding:16px}.direct-link-actions{grid-column:1 / -1;justify-content:flex-start;padding-top:12px;border-top:1px solid var(--color-border)}.direct-link-actions button{min-height:44px}.direct-link-revoke{margin-left:auto}.notifications-header{flex-direction:column;align-items:flex-start}.notifications-mark-all{margin-top:4px}.security-header{flex-direction:column;align-items:flex-start}.security-header>a{margin-top:4px}.session-item{grid-template-columns:auto minmax(0,1fr);padding:16px}.session-actions{grid-column:1 / -1;justify-content:flex-end;padding-top:10px;border-top:1px solid var(--color-border)}.session-actions button{min-height:42px}.notification-item{grid-template-columns:auto minmax(0,1fr);padding:16px}.notification-actions{grid-column:1 / -1;justify-content:flex-end;padding-top:10px;border-top:1px solid var(--color-border)}.direct-runtime-view .runtime-canvas{padding:8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
