:root{--ink:#14171f;--ink-2:#414958;--muted:#6b7280;--faint:#9aa1ac;--line:#e3e6ec;--line-strong:#cbd0d9;--bg:#f7f8fa;--surface:#ffffff;--surface-2:#fbfcfd;--hover:#f2f4f7;--accent:#1d4ed8;--accent-soft:#eef2ff;--pos:#0f7b4f;--pos-soft:#e8f5ef;--neg:#b3261e;--neg-soft:#fdecea;--warn:#8a5a00;--warn-soft:#fdf4e3;--radius:4px;--radius-lg:6px;--sans:"Inter",system-ui,-apple-system,"Segoe UI","Noto Sans TC","Microsoft JhengHei",sans-serif;--mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:var(--sans);font-size:13px;line-height:1.45;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}.kpi-value,.num,.tabular,td.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.shell{display:grid;grid-template-columns:216px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:8px;padding:14px 14px 12px;border-bottom:1px solid var(--line);font-weight:650;font-size:14px;letter-spacing:-.01em;color:var(--ink)}.brand:hover{text-decoration:none;opacity:.82}.brand img{display:block;width:100%;max-width:160px;height:auto}.brand-mark{width:20px;height:20px;border-radius:3px;background:var(--ink);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}.nav{padding:8px;flex:1 1}.nav-group{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-weight:600;padding:12px 8px 5px}.nav .nav-item,.nav a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 8px;border-radius:var(--radius);color:var(--ink-2);font-size:13px}.nav a:hover{background:var(--hover);text-decoration:none}.nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav .pending{color:var(--faint);cursor:default}.nav .pending:hover{background:none}.topbar{height:46px;border-bottom:1px solid var(--line);background:var(--surface);gap:14px;padding:0 18px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.global-search,.topbar{display:flex;align-items:center}.global-search{flex:1 1;max-width:420px;gap:6px;border:1px solid var(--line);border-radius:var(--radius);padding:4px 9px;background:var(--surface-2)}.global-search input{border:0;background:none;outline:none;width:100%;font-size:13px;font-family:inherit;color:var(--ink)}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}.whoami{font-size:12px;color:var(--muted);text-align:right;line-height:1.3}.whoami strong{display:block;color:var(--ink);font-size:13px;font-weight:600}.main{padding:18px 22px 48px;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.page-head h1{margin:0 0 2px;font-size:19px;font-weight:650;letter-spacing:-.015em}.page-head p{margin:0;color:var(--muted);font-size:12.5px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:18px}.kpi{background:var(--surface);padding:12px 14px}.kpi-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.kpi-row{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;margin-top:5px}.kpi-value{font-size:22px;font-weight:650;letter-spacing:-.02em;line-height:1.1}.kpi-delta{font-size:11.5px;font-weight:600;white-space:nowrap}.kpi-delta.up{color:var(--pos)}.kpi-delta.down{color:var(--neg)}.kpi-delta.flat{color:var(--muted)}.kpi-foot{font-size:11px;color:var(--faint);margin-top:3px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}.panel+.panel{margin-top:16px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line)}.panel-head h2{margin:0;font-size:13.5px;font-weight:650;letter-spacing:-.01em}.panel-head .sub{font-size:11.5px;color:var(--muted);font-weight:400}.panel-body{padding:14px}.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 14px;border-bottom:1px solid var(--line)}.toolbar .spacer{flex:1 1}.table-scroll{overflow:auto;max-height:calc(100vh - 230px)}table.data{width:100%;border-collapse:collapse;font-size:12.5px}table.data thead th{position:-webkit-sticky;position:sticky;top:0;z-index:5;background:var(--surface-2);text-align:left;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:7px 12px;border-bottom:1px solid var(--line-strong);white-space:nowrap}table.data thead th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}table.data thead th.sortable:hover{color:var(--ink)}table.data thead th .sort-mark{margin-left:4px;color:var(--accent)}table.data td{padding:7px 12px;border-bottom:1px solid var(--line);vertical-align:middle}table.data tbody tr:hover{background:var(--hover)}table.data tbody tr.selected{background:var(--accent-soft)}table.data tbody tr:last-child td{border-bottom:0}table.data td.num,table.data th.num{text-align:right}table.data .cell-strong{font-weight:600}table.data .cell-sub{color:var(--muted);font-size:11.5px}tr.expansion>td{background:var(--surface-2);padding:12px 16px}.btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:12.5px;font-family:inherit;font-weight:500;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--hover)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff;width:auto}.btn.primary:hover:not(:disabled){background:#000}.btn.danger{color:var(--neg);border-color:#e8c4c1}.btn.danger:hover:not(:disabled){background:var(--neg-soft)}.btn.sm{padding:3px 7px;font-size:11.5px}.btn[data-forbidden=true]{opacity:.4;cursor:not-allowed}.input,select.input{padding:5px 8px;border:1px solid var(--line-strong);border-radius:var(--radius);font-size:12.5px;font-family:inherit;background:var(--surface);color:var(--ink);min-width:0}.field{display:flex;flex-direction:column;gap:4px}.field>label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.chip,.field>label{font-size:11px;font-weight:600}.chip{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border-radius:3px;letter-spacing:.01em;border:1px solid transparent;white-space:nowrap}.chip.neutral{background:#eef0f3;color:var(--ink-2)}.chip.good{background:var(--pos-soft);color:var(--pos)}.chip.bad{background:var(--neg-soft);color:var(--neg)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.bulkbar,.chip.info{background:var(--accent-soft);color:var(--accent)}.bulkbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 14px;border-bottom:1px solid var(--line);font-size:12.5px;font-weight:600}.bulkbar .spacer{flex:1 1 auto}.bulkbar .btn{flex:0 0 auto}.pagination{display:flex;align-items:center;gap:10px;padding:9px 14px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.pagination .spacer{flex:1 1}.bar-row{display:grid;grid-template-columns:minmax(90px,160px) 1fr 64px;grid-gap:10px;gap:10px;align-items:center;padding:5px 0;font-size:12.5px}.bar-label{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{height:8px;background:var(--hover);border-radius:4px;overflow:hidden}.bar-fill{height:100%;background:var(--accent);border-radius:4px}.bar-fill.good{background:var(--pos)}.bar-fill.bad{background:var(--neg)}.bar-fill.warn{background:var(--warn)}.bar-value{text-align:right;color:var(--ink);font-weight:600}.empty{padding:40px 20px;text-align:center;color:var(--muted)}.empty h3{margin:0 0 4px;font-size:13.5px;color:var(--ink);font-weight:600}.empty p{margin:0;font-size:12.5px}.drawer-scrim{position:fixed;inset:0;background:rgba(20,23,31,.28);z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,92vw);background:var(--surface);border-left:1px solid var(--line);z-index:41;display:flex;flex-direction:column;box-shadow:-1px 0 0 rgba(0,0,0,.02)}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:14px;font-weight:650}.drawer-body{padding:16px;overflow-y:auto;flex:1 1}.dl{display:grid;grid-template-columns:140px 1fr;grid-gap:7px 14px;gap:7px 14px;font-size:12.5px}.dl dt{color:var(--muted)}.dl dd{margin:0}.dialog-scrim{position:fixed;inset:0;background:rgba(20,23,31,.35);z-index:50;display:grid;place-items:center;padding:20px}.dialog{background:var(--surface);border-radius:var(--radius-lg);width:min(440px,100%);border:1px solid var(--line)}.dialog.wide{width:min(560px,100%)}.dialog h2{margin:0 0 6px;font-size:15px;font-weight:650}.dialog p{margin:0 0 14px;font-size:12.5px;color:var(--ink-2)}.dialog-body{padding:18px}.dialog-desc,.dialog-desc p{margin:0 0 14px;font-size:12.5px;color:var(--ink-2)}.dialog-form{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}.link-result{display:flex;flex-direction:column;gap:6px}.link-box{display:flex;align-items:center;gap:6px;padding:7px 9px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-2);font-family:var(--mono);font-size:11.5px;overflow-x:auto;white-space:nowrap}.link-box code{flex:1 1;overflow-x:auto}.seg{display:inline-flex;gap:2px;padding:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius)}.seg a,.seg button{padding:4px 10px;border:0;border-radius:3px;background:transparent;color:var(--ink-2);font-size:12px;font-family:inherit;font-weight:500;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-block}.seg a:hover,.seg button:hover{color:var(--ink)}.seg a[aria-current=true],.seg button[aria-current=true]{background:var(--surface);color:var(--ink);font-weight:650;box-shadow:0 1px 2px rgba(20,23,31,.08)}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:100%;max-width:372px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:28px}.auth-card h1{margin:0 0 6px;font-size:19px;font-weight:650}.auth-card p.sub{margin:0 0 20px;color:var(--muted);font-size:13px}.auth-card label{display:block;font-size:12px;font-weight:600;margin-bottom:5px}.auth-card input[type=email],.auth-card input[type=password],.auth-card input[type=text]{width:100%;padding:9px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);font-size:14px;margin-bottom:14px;background:#fff;font-family:inherit}button.primary{width:100%;padding:10px;border:0;border-radius:var(--radius);cursor:pointer;background:var(--ink);color:#fff;font-size:14px;font-weight:600;font-family:inherit}button.primary:hover{background:#000}.error{background:var(--neg-soft);color:var(--neg);padding:9px 11px;margin-bottom:14px}.error,.notice{border-radius:var(--radius);font-size:13px}.notice{background:var(--warn-soft);color:var(--warn);padding:11px 13px}@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.main{padding:14px}}@media print{.no-print,.sidebar,.topbar{display:none!important}.shell{display:block}.main{padding:0}body{background:#fff}.receipt{border:0}.receipt .panel-body{padding:0}}.receipt-head{display:flex;align-items:center;gap:10px;padding-bottom:14px;border-bottom:2px solid var(--ink)}.receipt-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}.receipt-table td,.receipt-table th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}.receipt-table td:not(:first-child),.receipt-table th:not(:first-child){text-align:right}.receipt-table tfoot td{border-bottom:0;padding-top:8px}.aurora-auth-screen{--aurora-ink:#10234f;--aurora-muted:#68738d;--aurora-cyan:#05b9b6;--aurora-violet:#7d5cff;--aurora-line:#dbe5f5;position:relative;min-height:100vh;color:var(--aurora-ink);font-family:Inter,Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif;font-size:15px;background:radial-gradient(circle at 12% 88%,rgba(34,218,216,.22),transparent 30rem),radial-gradient(circle at 88% 12%,rgba(122,102,255,.2),transparent 32rem),linear-gradient(145deg,#faffff,#f3f7ff 55%,#fbf8ff)}.aurora-auth-screen:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.34) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.34) 1px,transparent 0);background-size:44px 44px;-webkit-mask-image:linear-gradient(180deg,transparent,#000 35%,#000 70%,transparent);mask-image:linear-gradient(180deg,transparent,#000 35%,#000 70%,transparent)}.aurora-auth-home{position:relative;z-index:1;display:inline-flex;align-items:center;margin:1.5rem clamp(1rem,4vw,4rem)}.aurora-auth-home img{display:block;width:178px;max-width:min(46vw,178px);height:auto;object-fit:contain}.aurora-auth-shell{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,470px);grid-gap:clamp(2rem,7vw,7rem);gap:clamp(2rem,7vw,7rem);align-items:center;width:min(1180px,calc(100% - 2rem));min-height:calc(100vh - 8rem);margin:0 auto 3rem}.aurora-auth-intro{padding:clamp(1rem,4vw,3rem)}.aurora-auth-kicker{margin:0;color:#168da7;font-weight:800;letter-spacing:.14em;font-size:.8rem}.aurora-auth-intro h1{margin:.5rem 0 1rem;font-size:clamp(2.45rem,5vw,5.4rem);line-height:1.08;letter-spacing:-.05em}.aurora-auth-intro>p:not(.aurora-auth-kicker){max-width:36rem;color:var(--aurora-muted);font-size:1.08rem;line-height:1.8}.aurora-auth-intro ul{display:grid;grid-gap:.75rem;gap:.75rem;margin:1.4rem 0 0;padding:0;list-style:none}.aurora-auth-intro li{display:flex;align-items:center}.aurora-auth-intro li:before{content:"✓";display:inline-grid;width:1.6rem;height:1.6rem;margin-right:.65rem;place-items:center;color:#fff;border-radius:50%;background:linear-gradient(135deg,var(--aurora-violet),var(--aurora-cyan));font-size:.9rem}.aurora-auth-card{overflow:hidden;border:1px solid rgba(207,221,243,.9);border-radius:24px;background:rgba(255,255,255,.86);box-shadow:0 28px 80px rgba(45,70,130,.16);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}.aurora-auth-cardbody{padding:clamp(1.6rem,5vw,2.6rem)}.aurora-auth-card h2{margin:0 0 .35rem;font-size:1.8rem}.aurora-auth-card p.sub{margin:0 0 1.4rem;color:var(--aurora-muted);font-size:1rem;line-height:1.55}.aurora-login-form{display:grid;grid-gap:.3rem;gap:.3rem}.aurora-login-form label{margin-top:.7rem;font-size:.9rem;font-weight:700}.aurora-login-form input{width:100%;min-height:3rem;margin-top:.1rem;padding:0 .9rem;color:var(--aurora-ink);border:1px solid #cad7ed;border-radius:10px;background:#fff;font:inherit}.aurora-login-form input:focus{outline:3px solid rgba(32,186,193,.2);border-color:var(--aurora-cyan)}.aurora-primary-button{width:100%;min-height:3rem;margin-top:1.3rem;color:#fff;border:0;border-radius:999px;background:linear-gradient(110deg,#087faa,var(--aurora-cyan));font:inherit;font-weight:800;font-size:1rem;cursor:pointer;box-shadow:0 12px 25px rgba(5,185,182,.24)}.aurora-primary-button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.aurora-auth-card .error{margin:0 0 1rem;padding:.8rem 1rem;border-radius:12px;font-weight:650;color:#9d2434;background:#fff0f3}.aurora-auth-card .notice{margin:1rem 0 0;padding:.85rem 1rem;border-radius:12px;color:#8a5a00;background:#fdf4e3;line-height:1.6;font-size:.95rem}.aurora-login-form select.register-select{width:100%;min-height:3rem;margin-top:.1rem;padding:0 .9rem;color:var(--aurora-ink);border:1px solid #cad7ed;border-radius:10px;background:#fff;font:inherit}.aurora-login-form .field-hint{margin:.25rem 0 0;font-size:.78rem;color:#6b7a90;line-height:1.45}.register-fieldset{margin-top:1rem;padding:.8rem .9rem;border:1px solid #cad7ed;border-radius:12px}.register-fieldset legend{padding:0 .4rem;font-size:.85rem;font-weight:700;color:var(--aurora-ink)}.register-checkgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));grid-gap:.35rem .6rem;gap:.35rem .6rem}.register-check{display:flex;align-items:center;gap:.4rem;margin:0;font-size:.9rem;font-weight:500}.aurora-login-form .register-check input[type=checkbox]{width:auto;min-height:0;margin:0;padding:0}.register-linkbutton{padding:0;border:0;background:none;color:#087faa;font:inherit;font-weight:700;cursor:pointer}.register-linkbutton:hover{text-decoration:underline}@media (max-width:820px){.aurora-auth-shell{grid-template-columns:1fr;width:min(540px,calc(100% - 2rem));min-height:auto;margin-top:1rem}.aurora-auth-intro{padding:1rem .25rem 0}.aurora-auth-intro h1{font-size:clamp(2.25rem,10vw,3.5rem)}.aurora-auth-intro ul{display:none}}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:12px;gap:12px}.course-card{display:flex;flex-direction:column;gap:8px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);color:inherit;text-decoration:none;transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}.course-card:hover{text-decoration:none;border-color:var(--accent);box-shadow:0 6px 18px rgba(29,78,216,.1);transform:translateY(-1px)}.course-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.course-card-subject{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.course-card h3{margin:0;font-size:14.5px;font-weight:650;letter-spacing:-.01em;line-height:1.3}.course-card p{margin:0;font-size:12px;color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-card-foot{margin-top:auto;padding-top:8px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--muted)}.course-card-cta{color:var(--accent);font-weight:600}[data-role=student]{--accent:#7c5cf5;--accent-soft:#f2eeff}[data-role=student] .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}[data-role=student] .btn.primary:hover:not(:disabled){background:#6a45e0;border-color:#6a45e0}[data-role=student] .course-card:hover{box-shadow:0 6px 18px rgba(124,92,245,.14)}.series-gap{color:var(--neg)}.series-complete,.series-gap{font-size:11.5px;font-weight:700}.series-complete{color:var(--pos)}.period-card{display:flex;flex-direction:column;gap:6px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);color:inherit;text-decoration:none;transition:border-color .12s ease,box-shadow .12s ease}.period-card:hover{text-decoration:none;border-color:var(--accent)}.period-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.period-card-venue{margin:0;font-size:12px;color:var(--muted)}.period-card-stats{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-2)}.period-card-rewatch{font-weight:650;color:var(--ink)}.period-card-note{margin:0;font-size:11.5px;color:var(--muted)}.gap-panel{margin-top:16px;padding:14px 16px;border:1px solid var(--neg);border-radius:var(--radius-lg);background:var(--neg-soft)}.gap-panel-title{margin:0 0 10px;font-size:14px;color:var(--neg)}.gap-list{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.gap-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:var(--radius);background:var(--surface);font-size:13px}.gap-row-lessons{color:var(--muted);font-size:12px}.gap-row-tag{font-size:11.5px;color:var(--neg);font-weight:650}.gap-panel-note{margin:8px 0 0;font-size:11.5px;color:var(--ink-2)}.lesson-player{display:grid;grid-gap:10px;gap:10px}.lesson-player-stage{max-width:720px}.lesson-player-frame{position:relative}.lesson-player-frame video,.lesson-player-stage iframe{width:100%;aspect-ratio:16/9;border:0;border-radius:var(--radius-lg);background:#000;display:block}.lesson-player-watermark{position:absolute;top:10px;right:12px;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:11.5px;color:rgba(255,255,255,.5);text-shadow:0 1px 2px rgba(0,0,0,.6)}.lesson-player-watermark-strip{padding:4px 8px;font-size:11.5px;color:var(--muted);border:1px solid var(--line);border-bottom:0;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--surface-2)}.lesson-player-watermark-strip+iframe{border-radius:0 0 var(--radius-lg) var(--radius-lg)}.lesson-player-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px}.lesson-player-speed{display:inline-flex;gap:4px;align-items:center;color:var(--muted)}.lesson-player-speed .btn[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.lesson-chapters h3{margin:0 0 6px;font-size:12.5px;color:var(--muted);font-weight:650}.lesson-chapters ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:2px;gap:2px;max-width:720px}.lesson-chapters button{display:grid;grid-template-columns:56px 1fr auto;grid-gap:10px;gap:10px;align-items:center;width:100%;padding:6px 8px;border:0;border-radius:var(--radius);background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.lesson-chapters button:hover{background:var(--hover)}.lesson-chapters li[aria-current=true] button{background:var(--accent-soft);font-weight:650}.lesson-chapter-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px}.lesson-chapter-state{font-size:11.5px;color:var(--muted)}.lesson-player-confirm{display:grid;grid-gap:6px;gap:6px;justify-items:start;max-width:720px}.lesson-player-confirm p{margin:0;font-size:11.5px;color:var(--muted);line-height:1.6}.lesson-player-done{margin:0;font-size:12.5px;color:var(--pos);font-weight:650}.lesson-player-note{margin:0;font-size:11.5px;color:var(--muted)}.watch-info{display:flex;gap:20px;flex-wrap:wrap;font-size:13px}.watch-info b{font-weight:650}.schedule-days{display:grid;grid-gap:14px;gap:14px}.schedule-day h3{margin:0 0 6px;font-size:12px;color:var(--muted);font-weight:650;letter-spacing:.04em}.schedule-cell{display:grid;grid-gap:6px;gap:6px;padding:12px 14px;margin-bottom:8px;border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--surface)}.schedule-cell.is-in-person{border-left-color:var(--accent)}.schedule-cell.is-live-online{border-left-color:var(--pos)}.schedule-cell-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.schedule-time{margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted);font-size:12.5px}.schedule-venue{margin:0;font-size:12.5px;color:var(--ink-2)}.schedule-cancelled{margin:0;font-size:12.5px;color:var(--neg);font-weight:650}.schedule-actions{display:flex;gap:6px;flex-wrap:wrap}.schedule-actions [aria-disabled=true]{opacity:.55}.anytime-list{display:grid;grid-gap:6px;gap:6px}.anytime-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:inherit;text-decoration:none;font-size:13px}.anytime-row:hover{text-decoration:none;border-color:var(--accent)}.anytime-progress{font-size:12px;color:var(--muted);white-space:nowrap}.progress-rows{display:grid;grid-gap:16px;gap:16px}.progress-row{display:grid;grid-gap:6px;gap:6px}.progress-row-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.venue{display:grid;grid-gap:6px;gap:6px;justify-items:start}.venue p{margin:0;font-size:13px}.venue-room{font-size:14px}.venue-directions{color:var(--muted)}.checkin{display:grid;grid-gap:12px;gap:12px;justify-items:start;max-width:460px}.checkin-closed{margin:0;font-size:12.5px;color:var(--muted)}.checkin-camera{display:grid;grid-gap:8px;gap:8px;justify-items:start;width:100%}.checkin-camera video{width:100%;max-width:340px;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-lg);background:#000}.checkin-manual{display:grid;grid-gap:4px;gap:4px;width:100%}.checkin-manual label{font-size:11.5px;color:var(--muted)}.checkin-manual-row{display:flex;gap:6px}.checkin-manual-row .input{flex:1 1}.checkin-done{display:grid;grid-gap:2px;gap:2px;font-size:13.5px}.checkin-done strong{color:var(--pos)}.checkin-fallback{font-size:12.5px}.checkin-fallback summary{cursor:pointer;color:var(--accent)}.checkin-fallback textarea{margin:6px 0;width:100%;max-width:420px}.checkin-fallback-sent{margin:0;font-size:12.5px;color:var(--pos)}.attendance-strip{display:grid;grid-gap:4px;gap:4px}.attendance-pip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;border-radius:var(--radius);background:var(--surface-2);font-size:12.5px}.attendance-pip.is-current{background:var(--accent-soft);font-weight:650}.attendance-pip-label{color:var(--ink-2)}.attendance-pip-state.is-present{color:var(--pos)}.attendance-pip-state.is-late{color:var(--warn)}.attendance-pip-state.is-absent{color:var(--neg)}.attendance-pip-state.is-excused,.attendance-pip-state.is-future,.attendance-pip-state.is-unmarked{color:var(--muted)}.transfer-current{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px}.transfer-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:12px;gap:12px}.transfer-card{display:grid;grid-gap:6px;gap:6px;align-content:start;padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}.transfer-card.is-blocked{opacity:.68;background:var(--surface-2)}.transfer-card-kind{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.transfer-card-mode{font-size:12px;color:var(--muted)}.transfer-card-facts{margin:4px 0;padding-left:16px;font-size:12px;color:var(--ink-2)}.transfer-card-clash{margin:0;padding:6px 8px;border-radius:var(--radius);background:var(--warn-soft);color:var(--warn);font-size:12px;line-height:1.6}.transfer-notice{margin:0;padding-left:18px;font-size:12.5px;line-height:1.9}.transfer-done{display:grid;grid-gap:4px;gap:4px}.transfer-done strong{color:var(--pos);font-size:14px}.transfer-done p{margin:0;font-size:12.5px;color:var(--muted)}.period-card-wrap{display:grid;grid-gap:6px;gap:6px;justify-items:start}.period-card-wrap .period-card{width:100%}.studentid-upload{display:grid;grid-gap:12px;gap:12px;justify-items:start;max-width:460px}.studentid-countdown{margin:0;display:flex;gap:12px;align-items:baseline;font-size:13px}.studentid-countdown strong{font-size:16px}.studentid-countdown span{color:var(--muted);font-size:12px}.studentid-drop{display:grid;grid-gap:6px;gap:6px;justify-items:center;width:100%;padding:20px;border:1px dashed var(--line-strong);border-radius:var(--radius-lg);background:var(--surface-2);text-align:center}.studentid-drop.is-over{border-color:var(--accent);background:var(--accent-soft)}.studentid-drop p{margin:0;font-size:12.5px;color:var(--muted)}.studentid-drop label{cursor:pointer}.studentid-hint{font-size:11.5px}.shipment-list{display:grid;grid-gap:14px;gap:14px}.shipment-card{display:grid;grid-gap:8px;gap:8px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg)}.shipment-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.shipment-fee{margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink-2)}.shipment-tracking{margin:0;font-size:12.5px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.shipment-timeline{list-style:none;margin:0;padding:0;display:grid;grid-gap:4px;gap:4px}.shipment-timeline li{display:grid;grid-template-columns:18px 1fr auto;grid-gap:8px;gap:8px;align-items:center;font-size:12.5px}.shipment-timeline li.is-done{color:var(--pos)}.shipment-timeline li.is-current{color:var(--accent);font-weight:650}.shipment-step-at,.shipment-timeline li.is-todo{color:var(--muted)}.shipment-step-at{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:11.5px}.delivery-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px}.delivery-option{display:grid;grid-gap:3px;gap:3px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-lg)}.delivery-fee{font-weight:650}.notes-rules{margin:0;padding-left:18px;font-size:12.5px;line-height:1.9}.inbox-toolbar{display:flex;gap:8px;justify-content:space-between;flex-wrap:wrap;margin-bottom:10px}.inbox-filters{display:flex;gap:6px;flex-wrap:wrap}.inbox-filters .btn[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.inbox-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:4px;gap:4px}.inbox-link{display:grid;grid-gap:3px;gap:3px;width:100%;padding:10px 12px;border:0;border-radius:var(--radius);background:var(--surface-2);font:inherit;color:inherit;text-align:left;cursor:pointer}.inbox-link:hover{text-decoration:none;background:var(--hover)}.inbox-row.is-unread .inbox-link{border-left:3px solid var(--accent);background:var(--accent-soft)}.inbox-meta{display:flex;align-items:center;gap:8px}.inbox-when{font-size:11.5px;color:var(--muted)}.inbox-body{font-size:12.5px;color:var(--ink-2)}.profile-card{display:grid;grid-gap:4px;gap:4px}.profile-name{margin:0;font-size:20px;letter-spacing:-.01em}.profile-sub{margin:0 0 10px;font-size:12.5px;color:var(--muted)}.profile-fields{margin:0}