:root{--accent:#4b45d6;--accent-dark:#3b35bf;--accent-tint:#f1f0fc;--accent-tint-border:#d6d2f4;--ink:#1a1815;--ink-strong:#12100e;--ink-2:#2d2a26;--ink-3:#3f3b35;--ink-4:#4f4a43;--muted:#6a655c;--muted-2:#6f6a61;--muted-3:#7b746b;--line:#eae7e1;--line-2:#e4e0d9;--line-3:#f2f0ec;--surface:#ffffff;--surface-2:#faf9f7;--canvas:#f6f5f2;--ok-bg:#e9f6ef;--ok-fg:#12805a;--ok-soft:#f2f9f5;--ok-line:#dce6df;--warn-bg:#fdf4e3;--warn-fg:#8a6412;--danger-bg:#f6eceb;--danger-fg:#b23b32;--radius-sm:5px;--radius:8px;--radius-lg:12px;--radius-xl:14px;--font:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",monospace}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--canvas)}body{font-family:var(--font);-webkit-font-smoothing:antialiased;color:var(--ink)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-dark)}button,input,select,textarea{font-family:inherit}input:focus,select:focus,textarea:focus{outline:2px solid rgba(75,69,214,.25);outline-offset:0;border-color:var(--accent)}::placeholder{color:var(--muted-3)}@keyframes shim{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}@keyframes tin{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@keyframes fin{0%{opacity:0}to{opacity:1}}.app{min-height:100dvh;display:flex;background:var(--canvas)}.sidebar{width:236px;flex:0 0 auto;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100dvh;padding:16px 12px 14px}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:4px 6px 22px}.brand-mark{width:26px;height:26px;border-radius:7px;background:var(--accent);flex:0 0 auto}.brand-name{font-size:14px;font-weight:800;letter-spacing:-.01em;line-height:1.1}.brand-sub{font-family:var(--mono);font-size:10px}.brand-sub,.nav-label{color:var(--muted-2);letter-spacing:.08em}.nav-label{font-size:10.5px;font-weight:800;padding:0 8px 8px}.nav{display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:10px;width:100%;height:33px;padding:0 10px;border:none;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;text-align:left;background:transparent;color:var(--ink-4);text-decoration:none}.nav-item:hover{background:var(--line-3);color:var(--ink-2)}.nav-item[data-active=true]{background:var(--accent-tint);color:var(--accent-dark);font-weight:700}.nav-count{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--muted-2)}.sidebar-user{margin-top:auto;border-top:1px solid var(--line);padding-top:12px;display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.sidebar-user-name{font-size:12.5px;font-weight:700}.sidebar-user-email,.sidebar-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-email{font-size:11.5px;color:var(--muted)}.sidebar-foot{margin-top:10px;display:grid;grid-gap:6px;gap:6px}.drawer-user{margin-top:auto;border-top:1px solid var(--line);padding-top:10px;display:flex;align-items:center;gap:10px}.student-app{min-height:100dvh;display:flex;flex-direction:column;background:var(--canvas)}.student-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--line)}.student-topbar-inner{max-width:1040px;margin:0 auto;height:56px;padding:0 20px;display:flex;align-items:center;gap:18px}.student-brand{display:inline-flex;align-items:center;gap:9px;color:inherit;text-decoration:none}.student-brand .brand-name{font-size:15px}@media (max-width:420px){.student-brand .brand-name{display:none}}.student-nav{display:flex;align-items:center;gap:4px}.student-nav .nav-item{width:auto;height:36px;padding:0 12px;font-size:13.5px}.student-topbar-end{margin-left:auto;display:flex;align-items:center;gap:10px}.student-content{width:100%;max-width:1040px;margin:0 auto;padding:28px 20px 72px}.student-crumbs{margin-bottom:14px}.avatar-menu{position:relative}.avatar-menu-trigger{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid transparent;border-radius:10px;background:transparent;cursor:pointer}.avatar-menu-trigger:hover,.avatar-menu-trigger[aria-expanded=true]{border-color:var(--line);background:var(--surface-2)}.menu{position:absolute;right:0;top:calc(100% + 6px);min-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:0 14px 34px rgba(16,18,21,.14);padding:6px;animation:tin .14s ease;z-index:30}.menu-head{padding:8px 10px 10px;border-bottom:1px solid var(--line-3);margin-bottom:4px}.menu-name{font-size:13px;font-weight:800}.menu-email{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.menu-item{display:flex;align-items:center;width:100%;min-height:38px;padding:0 10px;border:none;border-radius:7px;background:transparent;color:var(--ink-2);font-size:13.5px;font-weight:600;text-align:left;text-decoration:none;cursor:pointer}.menu-item:hover{background:var(--line-3);color:var(--ink)}.menu-item:disabled{opacity:.55;cursor:not-allowed}.avatar-menu-trigger:focus-visible,.btn:focus-visible,.crumb:focus-visible,.drawer-toggle:focus-visible,.list-row:focus-visible,.menu-item:focus-visible,.nav-item:focus-visible,.tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.avatar{width:30px;height:30px;border-radius:8px;background:var(--accent-tint);color:var(--accent-dark);font-size:11.5px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}.topbar{height:56px;flex:0 0 auto;gap:12px;padding:0 30px;background:var(--surface);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:20}.crumbs,.topbar{display:flex;align-items:center}.crumbs{gap:8px;font-size:12.5px;min-width:0;flex-wrap:wrap}.crumb-wrap{display:inline-flex;align-items:center;gap:8px}.crumb{color:var(--muted-2);font-weight:600;white-space:nowrap}.crumb[data-current=true]{color:var(--ink);font-weight:700}.crumb-sep{color:#c9ced4}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.content{padding:26px 30px 60px;max-width:1440px;width:100%}.page-title{font-size:22px;font-weight:800;letter-spacing:-.025em;margin:0}.page-sub{font-size:13.5px;color:var(--muted);margin:6px 0 0}.page-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:22px}.page-head .spacer{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.section-label{font-size:10.5px;font-weight:800;letter-spacing:.08em;color:var(--muted-2);margin:26px 0 10px}.mono{font-family:var(--mono)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px}.card-title{font-size:13.5px;font-weight:800;margin:0 0 12px}.grid{display:grid;grid-gap:14px;gap:14px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.grid-dash{grid-template-columns:1.35fr 1fr}.grid-form{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);align-items:start}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:15px 16px}.stat-label{font-size:11.5px;font-weight:700;color:var(--muted-2)}.stat-value{font-size:25px;font-weight:800;letter-spacing:-.03em;margin-top:6px}.stat-meta{font-size:11.5px;color:var(--muted-2);margin-top:4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap}.btn,.btn:hover{color:var(--ink-2)}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}.btn-dark{background:var(--ink-strong);border-color:var(--ink-strong);color:#fff}.btn-dark:hover{background:#26231f;color:#fff}.btn-danger{background:var(--surface);border-color:#f0d9d7;color:var(--danger-fg)}.btn-danger:hover{background:#fdf5f4;color:var(--danger-fg)}.btn-lg{height:44px;width:100%;font-size:14px}.btn-sm{height:30px;padding:0 11px;font-size:12.5px}.badge{display:inline-flex;align-items:center;height:21px;padding:0 8px;border-radius:var(--radius-sm);font-size:11px;font-weight:800;letter-spacing:.01em;white-space:nowrap}.badge-ok{background:var(--ok-bg);color:var(--ok-fg)}.badge-warn{background:var(--warn-bg);color:var(--warn-fg)}.badge-danger{background:var(--danger-bg);color:var(--danger-fg)}.badge-muted{background:var(--line-3);color:#5c574f}.badge-accent{background:var(--accent-tint);color:var(--accent-dark)}.field{display:block;margin-bottom:16px}.label{display:block;font-size:12px;font-weight:700;color:var(--ink-3);margin-bottom:6px}.req{color:#c0564d}.input,.select,.textarea{height:42px;width:100%;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--radius);font-size:14px;background:var(--surface);color:var(--ink)}.textarea{height:auto;padding:10px 12px;line-height:1.55}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:30px}.input:disabled,.select:disabled{background:var(--surface-2);color:var(--muted-2)}.hint{color:var(--muted-2);line-height:1.55}.error-text,.hint{font-size:12px;margin-top:6px}.error-text{color:var(--danger-fg);font-weight:600}.alert{border-radius:var(--radius);padding:11px 13px;font-size:12.5px;line-height:1.6;margin-bottom:16px;font-weight:600}.alert-error{background:#fdf5f4;border:1px solid #f0d9d7;color:var(--danger-fg)}.alert-ok{background:var(--ok-soft);border:1px solid var(--ok-line);color:#155c42}.alert-info{background:var(--surface-2);color:var(--ink-3)}.alert-info,.table{border:1px solid var(--line)}.table{background:var(--surface);border-radius:var(--radius-lg);overflow:hidden}.table-head,.table-row{display:grid;align-items:center;grid-gap:12px;gap:12px;padding:0 16px}.table-head{height:38px;background:var(--surface-2);font-size:10.5px;font-weight:800;letter-spacing:.06em;color:var(--muted-2)}.table-head,.table-row{border-bottom:1px solid var(--line)}.table-row{min-height:52px;font-size:13px;color:var(--ink-3)}.table-row:last-child{border-bottom:none}.table-row:hover{background:#fcfcfd}.table-link{font-weight:700;color:var(--ink);text-align:left;background:none;border:none;padding:0;font-size:13px;cursor:pointer}.table-foot{display:flex;align-items:center;gap:12px;padding:12px 16px;font-size:12px;color:var(--muted-2);background:var(--surface-2)}.list{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.list,.list-row{background:var(--surface)}.list-row{display:flex;align-items:center;gap:14px;padding:13px 16px;text-decoration:none;color:inherit;width:100%;border:none;border-bottom:1px solid var(--line);text-align:left;cursor:pointer}.list-row:last-child{border-bottom:none}.list-row:hover{background:#fcfcfd}.day-chip{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--accent-dark);background:var(--accent-tint);border-radius:var(--radius-sm);padding:4px 8px;white-space:nowrap;flex:0 0 auto}.row-title{font-size:13.5px;font-weight:700;color:var(--ink)}.row-meta{margin-top:2px}.row-meta,.row-right{font-size:12.5px;color:var(--muted)}.row-right{margin-left:auto;white-space:nowrap}.empty{background:var(--surface);border:1px dashed var(--line-2);border-radius:var(--radius-lg);padding:46px 24px;text-align:center}.empty-title{font-size:15px;font-weight:800}.empty-body{font-size:13px;color:var(--muted);margin:8px auto 18px;max-width:420px;line-height:1.6}.skeleton{background:var(--line-3);animation:shim 1.4s ease-in-out infinite}.chip,.skeleton{border-radius:6px}.chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;background:var(--surface-2);border:1px solid var(--line);font-size:12px;font-weight:600;color:var(--ink-3)}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.search-box{display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);min-width:260px;flex:1 1 260px;max-width:420px}.search-box input{border:none;outline:none;flex:1 1;font-size:13px;background:transparent;color:var(--ink)}.search-box input:focus{outline:none}.search-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(75,69,214,.12)}.auth{min-height:100dvh;display:flex;background:var(--surface)}.auth-form{padding:56px 64px;max-width:560px}.auth-form,.auth-panel{flex:1 1;display:flex;flex-direction:column;justify-content:center}.auth-panel{background:var(--ink-strong);padding:56px;color:#f1f2f4}.auth-panel-title{font-size:27px;font-weight:800;letter-spacing:-.03em;line-height:1.35;margin-top:16px}.auth-centre{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;background:var(--surface)}.auth-card{width:100%;max-width:420px}.auth-title{font-size:25px;font-weight:800;letter-spacing:-.02em;margin:0}.auth-sub{font-size:13.5px;color:var(--muted);margin:8px 0 24px;line-height:1.6}.foot-note{font-size:11.5px;color:var(--muted-3);margin-top:34px}.foot-links{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px}.foot-links a{color:var(--muted-3)}.legal{min-height:100dvh;background:var(--canvas);padding:0 16px 56px}.legal-head{padding:22px 0;display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.legal-doc,.legal-head{max-width:760px;margin:0 auto}.legal-doc{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:36px 40px;font-size:14.5px;line-height:1.7;color:var(--ink-3)}.legal-doc h1{font-size:26px;letter-spacing:-.02em;margin:0}.legal-doc h1,.legal-doc h2{font-weight:800;color:var(--ink)}.legal-doc h2{font-size:17px;margin:30px 0 8px}.legal-doc p,.legal-doc ul{margin:0 0 12px}.legal-doc ul{padding-left:20px}.legal-doc li{margin-bottom:6px}.legal-doc a{color:var(--accent)}.legal-meta{margin:6px 0 24px}.legal-foot,.legal-meta{font-size:12.5px;color:var(--muted-3)}.legal-foot{max-width:760px;margin:18px auto 0;display:flex;gap:16px;flex-wrap:wrap}.legal-foot a{color:var(--muted-3)}.legal-form{max-width:420px;margin-top:8px}@media (max-width:600px){.legal-doc{padding:24px 18px;font-size:14px}.legal-doc h1{font-size:22px}}.dark-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:64px 24px;background:var(--ink-strong)}.dark-card{width:100%;max-width:470px;background:#16191d;border:1px solid #23262b;border-radius:var(--radius-xl);padding:36px 34px;color:#f1f2f4}@media (max-width:900px){.sidebar{display:none}.topbar{padding:0 16px}.content{padding:18px 16px 40px}.student-topbar-inner{padding:0 14px;gap:10px}.student-nav{gap:2px}.student-nav .nav-item{height:32px;padding:0 9px;font-size:13px;white-space:nowrap}.student-content{padding:18px 14px 56px}.grid-2,.grid-3,.grid-4,.grid-dash,.grid-form{grid-template-columns:1fr}.auth{flex-direction:column}.auth-panel{display:none}.auth-form{max-width:none;padding:32px 22px 40px}.table-head{display:none}.table-row{grid-template-columns:1fr!important;padding:14px 16px;gap:8px}.table-row>[data-label]:before{content:attr(data-label);display:block;font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--muted-2);margin-bottom:2px}.btn{min-height:40px}.btn-sm{min-height:36px}.nav-item{min-height:40px}.list-row{min-height:56px}.input,.select{height:44px}}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:80;gap:11px;padding:11px 16px 11px 13px;background:var(--ink-strong);color:#fff;border-radius:10px;box-shadow:0 14px 34px rgba(16,18,21,.3);animation:tin .16s ease;max-width:calc(100vw - 32px)}.toast,.toast-dot{display:flex;align-items:center}.toast-dot{width:17px;height:17px;border-radius:50%;background:#5ad1a0;color:var(--ink-strong);font-size:10px;font-weight:800;justify-content:center;flex:0 0 auto}.toast-dot[data-tone=error]{background:#e08b83}.toast-msg{font-size:13px;font-weight:700}.toast-sub{font-size:11px;color:var(--muted-2)}.modal-backdrop{position:fixed;inset:0;z-index:70;background:rgba(16,18,21,.45);display:flex;align-items:center;justify-content:center;padding:24px;animation:fin .12s ease}.modal{width:100%;max-width:440px;background:var(--surface);border-radius:var(--radius-xl);box-shadow:0 24px 60px rgba(16,18,21,.28);animation:tin .16s ease;overflow:hidden}.modal-body{padding:22px 22px 18px}.modal-title{font-size:16px;font-weight:800;letter-spacing:-.02em}.modal-text{font-size:13px;color:var(--muted);margin:9px 0 0;line-height:1.6}.modal-foot{display:flex;gap:9px;justify-content:flex-end;padding:14px 22px;background:var(--surface-2);border-top:1px solid var(--line-3)}.btn-destructive{background:#b23b32;border-color:#b23b32;color:#fff}.btn-destructive:hover{background:#9c332b;border-color:#9c332b;color:#fff}.drawer-toggle{display:none}.drawer-backdrop{position:fixed;inset:0;z-index:40;background:rgba(16,18,21,.4);animation:fin .12s ease}.drawer{width:262px;height:100dvh;background:var(--surface);border-right:1px solid var(--line);padding:14px 12px;animation:tin .14s ease;display:flex;flex-direction:column}.drawer .nav-item{height:38px;font-size:14px;border-radius:8px}@media (max-width:900px){.drawer-toggle{display:inline-flex;flex-direction:column;justify-content:center;gap:3px;width:34px;height:34px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer}.drawer-toggle span{display:block;height:1.5px;background:var(--ink-3);border-radius:2px}}.tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}.tab{height:34px;padding:0 3px;background:transparent;font-size:13.5px;font-weight:600;color:var(--muted-2);cursor:pointer;white-space:nowrap;border:none;border-bottom:2px solid transparent;text-decoration:none;display:inline-flex;align-items:center}.tab[data-active=true]{font-weight:700;color:var(--ink);border-bottom-color:var(--ink)}.preview-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;margin-bottom:20px;border:1px solid #f0e0c2;background:#fdf9f0;border-radius:var(--radius);font-size:13px;color:var(--ink-3)}.preview-banner-text{line-height:1.5}.player{position:relative;width:100%;aspect-ratio:16/9;background:var(--ink-strong);border-radius:var(--radius-lg);overflow:hidden}.player iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.player-notice{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;background:#16191d;color:#f1f2f4}.player-notice-title{font-size:15px;font-weight:800}.player-notice-body{font-size:13.5px;color:#b7bcc4;margin-top:6px;max-width:440px;line-height:1.6}.module-head{display:flex;align-items:baseline;gap:10px;font-size:14px;font-weight:800;letter-spacing:-.01em;margin:22px 0 8px}.module-head:first-child{margin-top:0}.module-count{font-size:12.5px;font-weight:600;color:var(--muted)}.grid-courses{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr))}.select-inline{height:36px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);font-size:13px;font-weight:600;color:var(--ink-3);cursor:pointer;max-width:100%}.khata-total{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-2);padding:20px 22px;margin-bottom:16px}.khata-total-label{font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.khata-total-value{font-size:clamp(34px,7vw,48px);font-weight:800;letter-spacing:-.03em;color:var(--ink-strong);margin-top:6px;line-height:1.05}.khata-total-meta{font-size:12.5px;color:var(--muted);margin-top:6px}.fee-card{border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;background:var(--surface)}.fee-card[data-status=OVERDUE]{border-color:#ecd3d0}.fee-card[data-status=CANCELLED]{background:var(--surface-2);opacity:.75}.fee-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.fee-label{font-size:14.5px;font-weight:800;letter-spacing:-.01em}.fee-amounts{font-size:12.5px;color:var(--muted)}.fee-amounts b{color:var(--ink-2);font-weight:700}.fee-bar{height:7px;border-radius:4px;background:var(--line-3);overflow:hidden;margin:12px 0 10px}.fee-bar[data-status=PAID]{background:var(--ok-bg)}.fee-bar[data-status=PARTIAL]{background:var(--accent-tint)}.fee-bar[data-status=OVERDUE]{background:var(--danger-bg)}.fee-bar-fill{height:100%;border-radius:4px;background:var(--ok-fg);transition:width .25s ease}.fee-bar-fill[data-status=OVERDUE]{background:var(--danger-fg)}.fee-bar-fill[data-status=PARTIAL]{background:var(--accent)}.fee-due{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;font-weight:700;color:var(--ink-2)}.fee-due-meta{font-weight:600}.fee-due-meta,.payment-row{color:var(--muted);font-size:12.5px}.payment-row{display:flex;align-items:center;gap:12px;flex-wrap:nowrap;padding:9px 0;border-top:1px solid var(--line-3)}.payment-detail{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;min-width:0;row-gap:2px}.payment-row[data-voided=true]{color:var(--muted-3)}.payment-row[data-voided=true] .payment-amount{text-decoration:line-through;color:var(--muted-3)}.payment-date{font-size:12px;color:var(--muted-2);min-width:76px}.payment-amount{font-size:13px;font-weight:700;color:var(--ink-2);min-width:84px}.payment-void{margin-left:auto;flex-shrink:0}.method-choice{display:flex;gap:8px;flex-wrap:wrap}.method-choice label{display:inline-flex;align-items:center;height:32px;padding:0 13px;border-radius:7px;border:1px solid var(--line);background:var(--surface);font-size:12.5px;font-weight:700;color:var(--ink-3);cursor:pointer}.method-choice input{position:absolute;opacity:0;pointer-events:none}.method-choice label:has(input:checked){background:var(--accent-tint);border-color:var(--accent-tint-border);color:var(--accent-dark)}.method-choice label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.fee-block{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin:4px 0 20px;background:var(--surface-2)}.fee-block>summary{cursor:pointer;font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);list-style:none}.fee-block>summary::-webkit-details-marker{display:none}.fee-block>summary:before{content:"▸ "}.fee-block[open]>summary:before{content:"▾ "}.fee-block>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.num,.table-head>.num{text-align:right}@media (max-width:900px){.num,.table-head>.num{text-align:left}}.receipt-page{max-width:720px;margin:0 auto;padding:28px 20px 60px}.receipt-actions{display:flex;gap:10px;justify-content:flex-end;margin-bottom:18px}.receipt{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:32px 34px 26px}.receipt[data-voided=true]{opacity:.82}.receipt-void-stamp{border:1px solid #e3b5b0;background:var(--danger-bg);color:var(--danger-fg);font-size:12.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-radius:7px;margin-bottom:22px}.receipt-head{display:flex;align-items:flex-start;gap:20px;padding-bottom:20px;border-bottom:1px solid var(--line);margin-bottom:22px}.receipt-brand{font-size:17px;font-weight:800;letter-spacing:-.02em}.receipt-sub{font-size:12.5px;color:var(--muted);margin-top:3px}.receipt-no{margin-left:auto;text-align:right}.receipt-no-label{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}.receipt-no-value{font-size:14px;font-weight:700;margin-top:3px}.receipt-rows{margin:0 0 22px;display:grid;grid-gap:14px;gap:14px}.receipt-rows>div{display:flex;gap:16px;align-items:baseline}.receipt-rows dt{width:150px;flex:0 0 150px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2)}.receipt-rows dd{margin:0;font-size:13.5px;font-weight:600;color:var(--ink-2)}.receipt-muted{color:var(--muted);font-weight:500}.receipt-amount{display:flex;align-items:baseline;gap:16px;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2)}.receipt-amount strong{margin-left:auto;font-size:26px;font-weight:800;letter-spacing:-.02em;color:var(--ink-strong);text-transform:none}.receipt-foot{margin-top:20px;font-size:11.5px;color:var(--muted);display:grid;grid-gap:4px;gap:4px}@media print{.drawer,.drawer-backdrop,.no-print,.sidebar,.toast,.topbar{display:none!important}body,html{background:#fff}.app,.main{display:block!important;width:100%!important;min-height:0!important}.app,.content,.main{max-width:none!important}.content{padding:0!important}.receipt-page{max-width:none;padding:0;margin:0}.receipt{border:none;border-radius:0;padding:0;opacity:1;page-break-inside:avoid;break-inside:avoid}.receipt-amount strong{font-size:22px}@page{margin:18mm}}:root{--shadow-card:0 1px 2px rgba(26,24,21,0.04),0 4px 14px rgba(26,24,21,0.05);--shadow-card-hover:0 2px 4px rgba(26,24,21,0.05),0 14px 30px -18px rgba(26,24,21,0.45)}.card,.list,.stat,.table{box-shadow:var(--shadow-card)}.pagination{display:flex;align-items:center;gap:12px;flex-wrap:wrap;width:100%;font-size:12.5px;color:var(--muted)}.pagination-summary{white-space:nowrap}.pagination-pages{margin-left:auto;display:flex;align-items:center;gap:4px;flex-wrap:wrap}.pagination-page{min-width:34px;padding:0 8px}.pagination-page[data-active=true]{background:var(--ink-strong);border-color:var(--ink-strong);color:#fff;pointer-events:none}.pagination-gap{padding:0 4px;color:var(--muted-3)}.pagination .btn[aria-disabled=true]{opacity:.45;pointer-events:none}.pagination-bar{margin-top:16px;padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}@media (max-width:600px){.pagination{flex-direction:column;align-items:stretch}.pagination-pages{margin-left:0;justify-content:center}}.hero{margin-bottom:28px}.hero-kicker{font-size:11.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-dark)}.hero-title{font-size:clamp(26px,4vw,32px);font-weight:800;letter-spacing:-.03em;line-height:1.15;margin:6px 0 0;color:var(--ink-strong)}.hero-sub{font-size:14.5px;color:var(--muted);margin:8px 0 0;max-width:560px;line-height:1.6}.dash-top{display:flex;flex-direction:column;gap:14px;margin-bottom:12px}.resume{display:flex;align-items:center;gap:22px;flex-wrap:wrap;padding:16px 20px;border-radius:16px;background:linear-gradient(120deg,#fdf8f0,#fbf3e9 60%,#f7efe6);border:1px solid #f0e4d2;box-shadow:0 1px 2px rgba(26,24,21,.04),0 12px 26px -22px rgba(26,24,21,.5)}.resume-text{min-width:0;flex:1 1 320px}.resume-label{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:#8a5733}.resume-title{margin-top:6px;font-size:16px;font-weight:700;letter-spacing:-.02em;line-height:1.3;text-wrap:pretty}.resume-course{margin-top:4px;font-size:12.5px;color:#77664f}.resume-progress{display:flex;align-items:center;gap:10px;flex:0 1 200px;min-width:150px}.resume-count{font-family:var(--mono);font-size:11px;font-weight:600;color:#6f5c48;white-space:nowrap}.resume-cta{flex:0 0 auto;height:44px;padding:0 22px 0 18px;border-radius:var(--radius-lg);font-size:14.5px;box-shadow:0 0 0 4px rgba(75,69,214,.13),0 10px 20px -8px rgba(75,69,214,.6)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr));grid-gap:12px;gap:12px}.tile{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-card)}.tile-label{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--muted-3)}.tile-value{margin-top:5px;font-size:17px;font-weight:700;letter-spacing:-.02em}.tile-ghost{font-family:var(--mono);font-size:22px;font-weight:600;color:var(--line-2)}.section-head{margin:40px 0 16px;display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}.section-title{margin:0;font-size:20px;font-weight:700;letter-spacing:-.02em}.section-note{font-size:13.5px;color:var(--muted)}.bar{flex:1 1;height:5px;background:var(--line-3);overflow:hidden}.bar,.bar-fill{display:block;border-radius:999px}.bar-fill{height:100%;background:var(--accent)}.bar-fill[data-tone=done]{background:var(--ok-fg)}.cc{display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-card);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.cc:hover{border-color:var(--accent-tint-border);box-shadow:var(--shadow-card-hover);transform:translateY(-1px)}.cc-head{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:16px;min-height:116px;padding:16px 22px 18px;border-bottom:1px solid var(--line)}.cc[data-state=open] .cc-head{background:var(--accent)}.cc[data-state=waiting] .cc-head{background:var(--ink)}.cc-grid{position:absolute;inset:0;background-image:linear-gradient(#ffffff1f 1px,transparent 0),linear-gradient(90deg,#ffffff1f 1px,transparent 0);background-size:22px 22px}.cc[data-state=waiting] .cc-grid{background-image:linear-gradient(#ffffff14 1px,transparent 0),linear-gradient(90deg,#ffffff14 1px,transparent 0)}.cc-head-bottom,.cc-head-top{position:relative;display:flex;gap:14px;justify-content:space-between}.cc-head-top{align-items:center}.cc-head-bottom{align-items:flex-end;gap:16px}.cc-kicker{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#d6d3f7}.cc[data-state=waiting] .cc-kicker{color:#a8a19a}.cc-state{padding:4px 11px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap}.cc-state-idle{background:var(--ok-bg);color:var(--ok-fg)}.cc-state-going{background:#fff;color:var(--accent)}.cc-state-done{background:#fff;color:var(--ok-fg)}.cc-name{margin:0;font-size:clamp(18px,2.2vw,22px);font-weight:700;letter-spacing:-.025em;line-height:1.2;color:#fff}.cc-marks{display:flex;gap:8px;flex-shrink:0}.cc-mark{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;background:#fff;font-family:var(--mono);font-size:11px;font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.18),0 4px 10px -4px rgba(0,0,0,.35)}.cc-body{display:flex;flex-direction:column;flex:1 1;padding:18px 22px 20px}.cc-meta{font-size:13.5px;color:var(--muted-3)}.cc-pills{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:7px}.cc-pill{display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line-3);font-size:12px;font-weight:600;color:var(--ink-4)}.cc-pill-more{color:var(--muted)}.cc-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.cc-latest{margin-top:16px;padding:12px 14px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line-3)}.cc-latest-label{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}.cc-latest-title{margin-top:5px;font-size:13.5px;font-weight:600;line-height:1.4;text-wrap:pretty}.cc-waiting{margin:16px 0 0;padding:12px 14px;border-radius:11px;background:var(--surface-2);border:1px dashed var(--line-2);font-size:13px;color:var(--muted);line-height:1.5}.cc-progress{margin-top:16px;display:flex;align-items:center;gap:12px}.cc-progress-count{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--muted-3);white-space:nowrap}.cc-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line-3);display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.cc-granted{font-size:12.5px;color:var(--muted)}.cc-cta{height:42px;padding:0 20px;border-radius:11px;font-size:14.5px}.cc-cta .cc-play{margin-right:-2px}.cc-cta[aria-disabled=true]{background:var(--surface-2);border-color:var(--line-2);color:var(--muted);cursor:default}.cc-play{width:0;height:0;border-left:9px solid;border-top:5.5px solid transparent;border-bottom:5.5px solid transparent;flex-shrink:0}.recent{display:flex;flex-direction:column;gap:10px}.recent-row{display:grid;grid-template-columns:74px minmax(0,1fr) auto;align-items:center;grid-gap:20px;gap:20px;padding:16px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-card);color:inherit;text-decoration:none;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.recent-row:hover{border-color:var(--accent-tint-border);box-shadow:var(--shadow-card-hover);transform:translateY(-1px);color:inherit}.recent-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.recent-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:8px 0;border-radius:10px;background:var(--surface-2);border:1px solid var(--line-3)}.recent-day-label{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.recent-day-label,.recent-day-number{font-family:var(--mono);font-weight:600}.recent-day-number{font-size:17px;letter-spacing:-.02em;color:var(--ink)}.recent-day-part{font-family:var(--mono);font-size:9px;font-weight:600;color:var(--muted-3)}.recent-text{min-width:0}.recent-title{display:block;font-size:16px;font-weight:700;letter-spacing:-.015em;line-height:1.35;text-wrap:pretty}.recent-meta{margin-top:6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--muted-3)}.recent-subject{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700}.recent-sep{width:3px;height:3px;border-radius:50%;background:var(--line-2)}.recent-right{margin-left:auto}.recent-cta{height:40px;padding:0 18px;border-radius:11px;font-size:14px}@media (max-width:640px){.recent-row{grid-template-columns:56px minmax(0,1fr);gap:14px}.recent-right{grid-column:1/-1;margin-left:0}.recent-cta{width:100%}.resume-progress{flex:1 1 100%}.resume-cta{width:100%}.cc-cta{flex:1 1}}.course-head{margin-bottom:0}.course-head .page-title{font-size:30px;letter-spacing:-.03em;line-height:1.1}.course-head .page-sub{font-size:14px;margin-top:8px}.course-tabs{margin-top:24px;gap:28px}.course-tabs .tab{height:38px;font-size:15px}.tab-count{margin-left:8px;font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--muted-2);background:var(--line-3);padding:2px 6px;border-radius:6px}.tab[data-active=true] .tab-count{color:var(--ink-2);background:#eeebe5}.course-filters-bar{position:-webkit-sticky;position:sticky;top:56px;z-index:10;margin:22px -6px 0;padding:10px 6px;background:var(--canvas)}.course-filters{display:block;margin:0;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 1px 2px rgba(26,24,21,.04),0 10px 24px -18px rgba(26,24,21,.35)}.course-filters-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 18px 0}.course-filters-label{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-3)}.course-filters-row{display:flex;align-items:center;gap:14px 26px;padding:12px 18px;flex-wrap:wrap}.course-filters-fields{flex:1 1 620px;display:flex;align-items:center;gap:10px;min-width:260px;flex-wrap:wrap}.course-filters-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin-left:auto}.course-filters .search-box{position:relative;flex:1 1 240px;min-width:180px;max-width:none;height:44px;padding:0 12px 0 38px;gap:8px;border-radius:11px;border-color:var(--line-2);background:var(--surface-2);transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.course-filters .search-box:focus-within{background:var(--surface)}.course-filters .search-box input{font-size:14.5px}.search-glass{position:absolute;left:14px;top:50%;width:11px;height:11px;margin-top:-7px;border:1.6px solid var(--muted-3);border-radius:50%;pointer-events:none}.search-glass:after{content:"";position:absolute;left:9px;top:10px;width:6px;height:1.6px;background:var(--muted-3);transform:rotate(45deg)}.select-wrap{position:relative;flex:1 1 150px;min-width:136px;max-width:200px}.select-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:44px;padding:0 34px 0 14px;border:1px solid var(--line-2);border-radius:11px;background:var(--surface-2);font-size:14.5px;font-weight:500;color:var(--ink);cursor:pointer;transition:border-color .15s ease,background .15s ease}.select-wrap select:hover{background:var(--surface)}.select-chevron{position:absolute;right:15px;top:18px;width:6px;height:6px;border-right:1.6px solid var(--muted-2);border-bottom:1.6px solid var(--muted-2);transform:rotate(45deg);pointer-events:none}.course-filters-clear{display:inline-flex;align-items:center;height:44px;padding:0 16px;border:1px solid transparent;border-radius:11px;background:transparent;font-size:14.5px;font-weight:600;color:var(--muted);cursor:pointer;white-space:nowrap;text-decoration:none;transition:background .15s ease,color .15s ease}.course-filters-clear:hover{background:var(--line-3);color:var(--ink)}.course-filters-apply{height:44px;padding:0 26px;border:1px solid var(--line-2);border-radius:11px;background:var(--surface-2);font-size:14.5px;font-weight:700;color:var(--muted-2);cursor:pointer;white-space:nowrap;transition:background .15s ease,box-shadow .15s ease,color .15s ease}.course-filters-apply[data-dirty=true]{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 0 0 4px rgba(75,69,214,.14),0 8px 18px -6px rgba(75,69,214,.55)}.course-filters-apply[data-dirty=true]:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.kbd-hint{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--muted-3);border:1px solid var(--line-2);border-radius:4px;padding:1px 5px;flex:0 0 auto}@media (hover:none),(max-width:700px){.kbd-hint{display:none}}.filter-dirty{display:none;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--warn-fg);white-space:nowrap}.filter-dirty[data-shown=true]{display:inline-flex}.filter-dirty-dot{width:6px;height:6px;border-radius:50%;background:#c8860f;flex:0 0 auto}.result-count{margin:22px 2px 12px;font-size:13.5px;color:var(--muted)}.result-count strong{color:var(--ink);font-weight:700}.rec-cards{display:grid;grid-gap:10px;gap:10px}.rec-card{display:grid;grid-template-columns:74px minmax(0,1fr) auto;align-items:center;grid-gap:20px;gap:20px;padding:18px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-card);color:inherit;text-decoration:none;transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}.rec-card:hover{box-shadow:var(--shadow-card-hover);border-color:var(--accent-tint-border);color:inherit;transform:translateY(-1px)}@media (prefers-reduced-motion:reduce){.rec-card{transition:box-shadow .18s ease,border-color .18s ease}.rec-card:hover{transform:none}}.rec-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.rec-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:8px 0;border-radius:10px;background:var(--surface-2);border:1px solid #eeebe5}.rec-day-label{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-3)}.rec-day-label,.rec-day-number{font-family:var(--mono);font-weight:600}.rec-day-number{font-size:17px;letter-spacing:-.02em;color:var(--ink)}.rec-day-part{font-family:var(--mono);font-size:9.5px;font-weight:600;color:var(--muted-2)}.rec-card-body{min-width:0}.rec-card-title{display:block;font-size:16.5px;font-weight:700;letter-spacing:-.015em;line-height:1.35;color:var(--ink);text-wrap:pretty}.rec-card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-top:7px;font-size:13px;color:var(--muted)}.rec-card-topics{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rec-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.rec-pill-subject{color:var(--accent-dark);background:var(--accent-tint)}.rec-pill-watched{color:var(--ok-fg);background:var(--ok-bg);font-weight:700;padding-left:7px}.rec-card-action{display:flex;align-items:center}.rec-cta{display:inline-flex;align-items:center;gap:9px;height:42px;padding:0 20px 0 18px;border:1px solid var(--accent);border-radius:11px;background:var(--accent);color:#fff;font-size:14.5px;font-weight:700;white-space:nowrap;transition:background .15s ease,box-shadow .15s ease,border-color .15s ease}.rec-card:hover .rec-cta{background:var(--accent-dark);border-color:var(--accent-dark);box-shadow:0 8px 18px -6px rgba(75,69,214,.6)}.rec-cta-play{width:0;height:0;border-left:9px solid;border-top:5.5px solid transparent;border-bottom:5.5px solid transparent}.rec-card[data-watched=true]{background:var(--surface-2)}.rec-card[data-watched=true] .rec-card-title{color:var(--ink-3)}.rec-card[data-watched=true] .rec-cta{background:transparent;border-color:var(--line-2);color:var(--ink-3)}.rec-card[data-watched=true]:hover .rec-cta{background:var(--accent);border-color:var(--accent);color:#fff}.rec-status{display:inline-flex;align-items:center;height:42px;padding:0 16px;border-radius:11px;border:1px dashed var(--line-2);background:var(--surface-2);font-size:13.5px;font-weight:700;white-space:nowrap;color:var(--muted-2)}.rec-status[data-status=PENDING]{color:var(--warn-fg);background:var(--warn-bg);border-style:solid;border-color:transparent}@media (max-width:760px){.rec-card{grid-template-columns:56px minmax(0,1fr);gap:8px 14px;padding:14px 15px}.rec-card-title{font-size:15px}.rec-card-topics{white-space:normal}.rec-card-action{grid-column:2}.rec-cta,.rec-status{height:38px;font-size:13.5px}.course-filters-actions{margin-left:0;width:100%}.course-filters-apply{flex:1 1}}.watched-tick{width:10px;height:5.5px;flex:0 0 auto;border-left:2px solid;border-bottom:2px solid;transform:rotate(-45deg) translate(1px,-1px)}.lesson-item .watched-tick{color:var(--ok-fg)}.watched-toggle[data-watched=true]{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-fg)}.watched-toggle[data-watched=true]:hover{background:var(--ok-soft);color:var(--ok-fg)}.watched-toggle[data-watched=false] .watched-tick{color:var(--muted-3)}.lp-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.page-sub-strong{color:var(--ink-2);font-weight:700}.note-cards{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr))}.note-card{display:flex;flex-direction:column;gap:10px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.note-card-head{display:flex;align-items:flex-start;gap:12px}.file-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;font-family:var(--mono);font-size:10.5px;font-weight:800;letter-spacing:.02em}.file-icon[data-type=PDF]{background:var(--danger-bg);color:var(--danger-fg)}.file-icon[data-type=XLSX],.file-icon[data-type=XLS]{background:var(--ok-bg);color:var(--ok-fg)}.note-card-title{font-size:14.5px;font-weight:800;letter-spacing:-.01em;line-height:1.35}.note-card-meta{font-size:12.5px;color:var(--muted);margin-top:3px}.note-card-desc{font-size:13px;color:var(--ink-3);line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.note-card-actions{margin-top:auto;padding-top:4px;display:flex;gap:8px;flex-wrap:wrap}.note-card-kind{margin-top:7px}.note-kind-hint{margin:8px 0 0}.profile-rows{margin:0;display:grid;grid-gap:8px;gap:8px}.profile-rows>div{display:flex;justify-content:space-between;gap:16px;font-size:13px}.profile-rows dt{flex:0 0 auto;color:var(--muted-2);font-weight:600}.profile-rows dd{margin:0;min-width:0;text-align:right;color:var(--ink-2);font-weight:600}.note-downloads{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--line-3)}.note-downloads li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px;padding:8px 0;border-bottom:1px solid var(--line-3);font-size:12.5px}.note-downloads-who{min-width:0;overflow-wrap:anywhere;color:var(--ink-2)}.note-downloads-who span{color:var(--muted)}.note-downloads-when{color:var(--muted);white-space:nowrap}.resources-card{margin-top:18px;padding:16px 18px 6px;background:var(--surface);border:1px solid var(--accent-tint-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.resources-card-head{margin-bottom:4px}.resources-card-title{margin:0;display:flex;align-items:center;font-size:15.5px;font-weight:800;letter-spacing:-.01em;color:var(--ink-strong)}.resources-card-sub{margin:3px 0 0;font-size:12.5px;color:var(--muted)}.resource-list{list-style:none;margin:0;padding:0}.resource-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line-3)}.resource-list>.resource-row:first-child{border-top:none}.resource-row-text{flex:1 1 auto;min-width:0}.resource-row-title{font-size:14px;font-weight:700;line-height:1.35;color:var(--ink-2);overflow-wrap:anywhere}.resource-row-meta{margin-top:2px;font-size:12.5px;color:var(--muted)}.resource-row-actions{flex:0 0 auto;display:flex;gap:8px}.lp-resources-strip{grid-area:res;min-width:0;margin-top:14px}.resources-strip{padding:4px 14px;background:var(--accent-tint);border:1px solid var(--accent-tint-border);border-radius:var(--radius-lg)}.resources-strip-title{margin:8px 0 0;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-dark)}.resources-strip .resource-row{padding:9px 0;border-top-color:var(--accent-tint-border)}.resources-strip .resource-list>.resource-row:first-child{padding-top:6px}.resources-strip .file-icon{width:32px;height:32px;border-radius:8px;font-size:9.5px}.resources-strip .resource-row-title{font-size:13.5px}.lp-resources>.lp-subhead:first-child{margin-top:0}@media (max-width:560px){.resources-card{padding:14px 14px 4px}.resource-row{flex-wrap:wrap;row-gap:10px}.resource-row-text{flex-basis:calc(100% - 52px)}.resource-row-actions{width:100%;padding-left:52px}.resources-strip .resource-row-actions{padding-left:44px}.resource-row-actions .btn{flex:1 1}}.dropzone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px 16px;border:1.5px dashed var(--line-2);border-radius:var(--radius-lg);background:var(--surface-2);text-align:center;cursor:pointer;transition:border-color .15s ease,background .15s ease}.dropzone:hover,.dropzone[data-active=true]{border-color:var(--accent);background:var(--accent-tint)}.dropzone:focus-within{outline:2px solid var(--accent);outline-offset:2px}.dropzone input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.dropzone-title{font-size:13.5px;font-weight:700;color:var(--ink-2)}.dropzone-hint{font-size:12px;color:var(--muted)}.dropzone-file{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--ink)}.progress{height:6px;border-radius:4px;background:var(--line-3);overflow:hidden;margin-top:10px}.progress-fill{height:100%;background:var(--accent);transition:width .2s ease}.toggle{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:600;color:var(--ink-3);cursor:pointer}.toggle input{width:16px;height:16px;accent-color:var(--accent)}.pf{max-width:780px}.pf-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:0 1px 2px rgba(26,24,21,.04),0 10px 24px -18px rgba(26,24,21,.35);overflow:hidden}.pf-card+.pf-card{margin-top:16px}.pf-id{gap:18px;padding:20px 22px;border-bottom:1px solid var(--line-3)}.pf-avatar,.pf-id{display:flex;align-items:center}.pf-avatar{width:56px;height:56px;flex:0 0 56px;border-radius:50%;background:var(--accent-tint);border:1px solid var(--accent-tint-border);color:var(--accent-dark);justify-content:center;font-size:18px;font-weight:800;letter-spacing:.03em}.pf-id-text{min-width:0}.pf-id-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.pf-name{margin:0;font-size:19px;font-weight:800;letter-spacing:-.02em}.pf-email{margin-top:4px;font-size:13.5px;color:var(--muted);overflow-wrap:anywhere}.pf-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;border-radius:999px;font-size:11.5px;font-weight:800;white-space:nowrap}.pf-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 auto}.pf-pill-ok{background:var(--ok-bg);color:var(--ok-fg)}.pf-pill-warn{background:var(--warn-bg);color:var(--warn-fg)}.pf-pill-danger{background:var(--danger-bg);color:var(--danger-fg)}.pf-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:1px;gap:1px;background:var(--line-3)}.pf-stat{background:var(--surface);padding:15px 22px}.pf-stat-label{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--muted-2)}.pf-stat-value{margin-top:6px;font-size:14.5px;font-weight:700;color:var(--ink-2)}.pf-note{padding:13px 22px;background:var(--surface-2);border-top:1px solid var(--line-3);font-size:12.5px;color:var(--muted-2);line-height:1.55}.pf-head{display:flex;align-items:center;gap:16px;padding:18px 22px;flex-wrap:wrap}.pf-head-text{min-width:0;flex:1 1 240px}.pf-head-title{margin:0;font-size:15.5px;font-weight:800;letter-spacing:-.015em}.pf-head-sub{margin:5px 0 0;font-size:12.5px;color:var(--muted-2)}.pf-ghost{background:transparent;border-color:transparent;color:var(--muted)}.pf-ghost:hover{background:var(--line-3);color:var(--ink-2)}.pf-saved{margin:0 22px 18px}.pf-body{padding:18px 22px 22px;border-top:1px solid var(--line-3)}.pf-fields{display:grid;grid-gap:14px;gap:14px;max-width:440px}.pf-fields .field{margin-bottom:0}.pf-input-wrap{position:relative;display:block}.pf-input-wrap .input{padding-right:72px}.pf-reveal{position:absolute;right:6px;top:6px;height:30px;padding:0 10px;border:none;border-radius:var(--radius-sm);background:transparent;font-size:12px;font-weight:800;color:var(--muted-2);cursor:pointer}.pf-reveal:hover{background:var(--line-3);color:var(--ink-2)}.input-warn,.input-warn:focus{border-color:#d99a4e}.pf-meter{margin-top:9px;display:flex;align-items:center;gap:10px}.pf-meter-track{flex:1 1;height:4px;border-radius:999px;background:var(--line);overflow:hidden}.pf-meter-fill{display:block;height:100%;border-radius:999px;transition:width .25s ease,background .25s ease}.pf-meter-label{font-size:11.5px;font-weight:800;white-space:nowrap}.pf-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}@media (max-width:560px){.pf-id{gap:14px;padding:18px 16px}.pf-avatar{width:48px;height:48px;flex-basis:48px;font-size:16px}.pf-head,.pf-note,.pf-stat{padding-left:16px;padding-right:16px}.pf-body{padding:16px}.pf-saved{margin:0 16px 16px}}.student-app:has(.lp) .student-topbar-inner,.student-content:has(>.lp){max-width:1320px}.lp{display:grid;grid-template-columns:minmax(0,7fr) minmax(300px,3fr);grid-template-rows:auto auto auto 1fr;grid-template-areas:"player side" "info side" "res side" "tabs side";grid-column-gap:24px;column-gap:24px;align-items:start}.lp-player{grid-area:player;scroll-margin-top:72px}.lp-player .player{box-shadow:var(--shadow-card)}.lp-info{grid-area:info;display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;padding-top:16px}.lp-info-text{flex:1 1 320px;min-width:0}.lp-title{margin:0;font-size:21px;font-weight:800;letter-spacing:-.02em;line-height:1.3;color:var(--ink-strong)}.lp-meta{margin:6px 0 0;font-size:13px;color:var(--muted)}.lp-steps{display:flex;gap:8px}.lp-side{grid-area:side;position:-webkit-sticky;position:sticky;top:72px;min-width:0}.lp-tabs{grid-area:tabs;min-width:0;margin-top:18px}.lp-tablist{margin-bottom:18px}.lp-panel:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}.lp-section-title{margin:0;font-size:16px;font-weight:800;letter-spacing:-.01em;color:var(--ink-strong)}.lp-muted{margin:0;font-size:13.5px;line-height:1.6;color:var(--muted)}.playlist{display:flex;flex-direction:column;max-height:calc(100dvh - 96px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.playlist-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}.playlist-title{font-size:14px;font-weight:800;letter-spacing:-.01em}.playlist-meta{margin-top:2px;font-size:12px;color:var(--muted)}.playlist-toggle{display:none;margin-left:auto}.playlist-body{position:relative;overflow-y:auto;overscroll-behavior:contain;padding:4px 0 8px}.playlist-module{position:-webkit-sticky;position:sticky;top:0;z-index:1;padding:10px 16px 6px;background:var(--surface);font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}.playlist-list{list-style:none;margin:0;padding:0}.lesson-item{display:block;padding:9px 16px 9px 13px;border-left:3px solid transparent;color:inherit;text-decoration:none}.lesson-item:hover{background:var(--surface-2);color:inherit}.lesson-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.lesson-item[aria-current=true]{background:var(--accent-tint);border-left-color:var(--accent)}.lesson-item-top{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--muted-2)}.lesson-item[aria-current=true] .lesson-item-top{color:var(--accent-dark)}.lesson-item-status{font-family:var(--font);font-size:11px;font-weight:700;color:var(--warn-fg)}.lesson-item-status[data-status=UNAVAILABLE]{color:var(--muted-2)}.lesson-item-current{margin-left:auto;font-family:var(--font);font-size:11px;font-weight:800;color:var(--accent-dark)}.lesson-item-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:3px;font-size:13px;font-weight:600;line-height:1.4;color:var(--ink-2)}.lesson-item[aria-current=true] .lesson-item-title{font-weight:700;color:var(--ink-strong)}.lp-duration{margin:0 0 12px;font-size:13.5px;color:var(--muted)}.lp-duration b{color:var(--ink-2)}.lp-description{max-width:72ch;margin:0;font-size:14px;line-height:1.7;color:var(--ink-3);white-space:pre-line}.lp-subhead{margin:18px 0 8px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}.lp-overview>.lp-subhead:first-child{margin-top:0}.lp-topics{display:grid;grid-gap:5px;gap:5px;margin:0;padding-left:18px;font-size:13.5px;line-height:1.55;color:var(--ink-3)}.lp-links{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));margin-bottom:14px}.resource-link{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);color:inherit;text-decoration:none;transition:box-shadow .15s ease}.resource-link:hover{box-shadow:var(--shadow-card-hover);color:inherit}.resource-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.resource-link-text{min-width:0}.resource-link-label{display:block;font-size:13.5px;font-weight:700;color:var(--ink)}.resource-link-host{display:block;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resource-link-arrow{margin-left:auto;color:var(--muted-2)}.disc{display:grid;grid-gap:14px;gap:14px}.disc-heading{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.disc-sub{font-size:12.5px;color:var(--muted)}.disc-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.disc-search{flex:1 1 240px;min-width:0;max-width:none;padding-right:4px}.disc-search-btn{height:28px;padding:0 10px;border:none;border-radius:6px;background:var(--line-3);color:var(--ink-3);font-size:12.5px;font-weight:700;cursor:pointer}.disc-search-btn:hover{background:var(--line)}.segmented{display:inline-flex;gap:2px;padding:3px;background:var(--line-3);border-radius:var(--radius)}.segmented button{height:30px;padding:0 12px;border:none;border-radius:6px;background:transparent;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(16,18,21,.08)}.disc-action:focus-visible,.disc-lesson-link:focus-visible,.disc-search-btn:focus-visible,.segmented button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.disc-composer{padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.disc-composer:focus-within{border-color:var(--accent)}.disc-composer[data-compact=true]{background:var(--surface-2);box-shadow:none}.disc-composer .textarea{min-height:60px;padding:4px 2px;border:none;background:transparent;resize:vertical}.disc-composer .textarea:focus{outline:none}.disc-composer-foot{display:flex;align-items:center;gap:10px;margin-top:6px}.disc-composer-buttons{display:flex;gap:8px;margin-left:auto}.disc-error{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0}.disc-error .btn{margin-left:auto}.disc-empty{padding:32px 20px}.disc-list{display:grid;grid-gap:10px;gap:10px;transition:opacity .15s ease}.disc-list[aria-busy=true]{opacity:.6}.disc-card{padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.disc-meta{gap:10px}.disc-meta,.disc-who{display:flex;align-items:center}.disc-who{gap:8px;flex-wrap:wrap;min-width:0}.disc-name{font-size:13.5px;font-weight:700;color:var(--ink)}.disc-time{font-size:12px;color:var(--muted-2)}.disc-answered{margin-left:auto}.disc-body{margin:10px 0 0;font-size:14px;line-height:1.65;color:var(--ink-2);white-space:pre-wrap;overflow-wrap:anywhere}.disc-lesson{margin-top:8px;font-size:12.5px;color:var(--muted)}.disc-lesson-link{padding:0;border:none;background:none;font:inherit;font-weight:600;color:var(--accent-dark);text-align:left;cursor:pointer}.disc-lesson-link:hover{text-decoration:underline}.disc-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:10px}.disc-action{padding:4px 0;border:none;background:none;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer}.disc-action:hover{color:var(--ink-2)}.disc-action[data-tone=danger]:hover{color:var(--danger-fg)}.disc-replies{display:grid;grid-gap:14px;gap:14px;margin:12px 0 0 14px;padding-left:14px;border-left:2px solid var(--line-3)}.author-badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.01em;white-space:nowrap;border:1px solid transparent}.author-badge[data-kind=instructor]{background:var(--accent);color:#fff}.author-badge[data-kind=admin]{height:17px;padding:0 6px;font-size:10px;font-weight:700;background:var(--line-3);border-color:var(--line-2);color:var(--ink-4)}.disc-card[data-instructor=true],.disc-reply[data-instructor=true]{background:var(--accent-tint);border-color:var(--accent-tint-border)}.disc-reply[data-instructor=true]{margin-left:-10px;padding:10px;border:1px solid var(--accent-tint-border);border-radius:var(--radius)}.disc-reply[data-pinned=true]{box-shadow:inset 3px 0 0 var(--ok-fg)}.disc-pinned{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:11.5px;font-weight:800;color:var(--ok-fg)}.disc-edited{font-size:11.5px;color:var(--muted-2)}.disc-status{width:auto;flex:0 1 auto;height:34px;min-width:0;max-width:100%}.disc-reply .disc-body{margin-top:6px;font-size:13.5px}.disc-reply .disc-actions{margin-top:4px}.disc-reply .avatar{width:24px;height:24px;border-radius:6px;font-size:10px}.disc-reply-form{margin-top:12px}.disc-pager{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}.disc-pager-controls{display:flex;align-items:center;gap:8px;margin-left:auto}.disc-pager-page{font-weight:600;color:var(--ink-3);white-space:nowrap}.disc-admin-row{align-items:flex-start}.disc-admin-main{flex:1 1;min-width:0}.disc-admin-snippet{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;white-space:normal}.disc-admin-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}@media (max-width:1000px){.lp{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"player" "info" "res" "side" "tabs"}.lp-side{position:static;margin-top:14px}.playlist{max-height:none}.playlist-toggle{display:inline-flex}.playlist-body{max-height:60vh}.playlist[data-open=false] .playlist-body{display:none}.playlist[data-open=false] .playlist-head{border-bottom:none}}@media (max-width:900px){.segmented button{height:36px}.disc-action{min-height:36px}}@media (max-width:600px){.lp-title{font-size:18px}.lp-steps{width:100%}.lp-steps .btn{flex:1 1}.segmented{width:100%}.segmented button{flex:1 1}.disc-pager{flex-direction:column;align-items:stretch}.disc-pager-controls{margin-left:0;justify-content:space-between}.disc-replies{margin-left:2px;padding-left:12px}}@media (max-width:700px){.disc-admin-row{flex-wrap:wrap}.disc-admin-right{flex-direction:row;align-items:center;margin-left:44px}}.lv{display:grid;grid-gap:14px;gap:14px;max-width:760px;margin:0 auto}.lv-head{margin-bottom:2px}.lv-title{margin:4px 0 0;font-size:clamp(24px,6vw,30px);font-weight:800;letter-spacing:-.03em;color:var(--ink-strong)}.lv-flash{margin:0}.lv-hero{position:relative;padding:20px 18px 16px;border-radius:18px;color:#fff;background:radial-gradient(120% 90% at 100% 0,rgba(255,255,255,.14) 0,rgba(255,255,255,0) 55%),linear-gradient(150deg,var(--accent) 0,var(--accent-dark) 100%);box-shadow:0 18px 40px -26px rgba(59,53,191,.9);overflow:hidden}.lv-hero[data-tone=waiting]{background:radial-gradient(120% 90% at 100% 0,rgba(75,69,214,.35) 0,rgba(75,69,214,0) 60%),linear-gradient(150deg,#1d1b2e,#14121f);box-shadow:0 18px 40px -28px rgba(20,18,31,.9)}.lv-hero[data-tone=expired]{background:var(--surface);color:var(--ink);border:1px dashed var(--line-2);box-shadow:none}.lv-hero-top{display:flex;align-items:center;gap:10px;min-height:22px}.lv-hero-kicker{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;opacity:.8}.lv-hero[data-tone=expired] .lv-hero-kicker{color:var(--muted);opacity:1}.lv-live{display:inline-flex;align-items:center;gap:7px;margin-left:auto;padding:4px 10px 4px 8px;border-radius:999px;background:#fff;color:#c0262d;font-size:11px;font-weight:800;letter-spacing:.08em}.lv-live-dot{width:8px;height:8px;border-radius:50%;background:#e5383b;animation:lv-pulse 1.8s ease-out infinite}@keyframes lv-pulse{0%{box-shadow:0 0 0 0 rgba(229,56,59,.55)}70%{box-shadow:0 0 0 9px rgba(229,56,59,0)}to{box-shadow:0 0 0 0 rgba(229,56,59,0)}}.lv-hero[data-tone=live]{animation:lv-glow 3s ease-in-out infinite}@keyframes lv-glow{0%,to{box-shadow:0 18px 40px -26px rgba(59,53,191,.9)}50%{box-shadow:0 18px 46px -18px rgba(75,69,214,.95)}}.lv-hero-title{margin:8px 0 0;font-size:clamp(24px,7vw,32px);font-weight:800;letter-spacing:-.03em;line-height:1.1}.lv-hero-topic{margin:6px 0 0;font-size:14.5px;font-weight:600;opacity:.92}.lv-cancel{margin-top:14px;padding:10px 12px;border-radius:10px;background:#fde8e7;border:1px solid #f3c4c0;color:#9b241d;font-size:13px;line-height:1.5}.lv-when{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px 14px;gap:10px 14px;margin:16px 0 14px}.lv-when>div{min-width:0}.lv-when dt{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;opacity:.7}.lv-when dd{margin:3px 0 0;font-size:16px;font-weight:700;letter-spacing:-.01em}.lv-when-count{grid-column:1/-1}.lv-when dd.lv-count{font-family:var(--mono);font-size:30px;font-weight:600;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lv-moved{display:inline-block;padding:1px 7px;border-radius:6px;background:#ffd772;color:#3b2a00}.lv-moved,.lv-was{white-space:nowrap}.lv-was{display:block;margin-top:4px;font-size:12px;font-weight:500;opacity:.7}.lv-moved-note{margin:-4px 0 12px;font-size:12.5px;opacity:.85}.lv-join{width:100%;height:52px;font-size:16px;font-weight:800;border-radius:12px}.lv-hero .btn-primary.lv-join{background:#fff;border-color:#fff;color:var(--accent-dark)}.lv-hero .btn-primary.lv-join:hover{background:var(--accent-tint);color:var(--accent-dark)}.lv-hero[data-tone=live] .btn-primary.lv-join{background:#e5383b;border-color:#e5383b;color:#fff}.lv-hero[data-tone=live] .btn-primary.lv-join:hover{background:#cc2f32}.lv-hero button.lv-join:disabled{opacity:1;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.78)}.lv-hero[data-tone=expired] .btn-primary.lv-join{background:var(--accent);border-color:var(--accent);color:#fff}.lv-hero-hint{margin:8px 0 0;font-size:12px;text-align:center;opacity:.75}.lv-hero-meta{margin:14px 0 0;padding-top:12px;border-top:1px solid rgba(255,255,255,.14);font-size:12px;opacity:.7}.lv-hero[data-tone=expired] .lv-hero-meta{border-top-color:var(--line-3);color:var(--muted);opacity:1}.lv-expired{margin-top:12px}.lv-expired-title{font-size:15px;font-weight:800;color:var(--warn-fg)}.lv-expired-text{margin:6px 0 14px;font-size:13.5px;color:var(--ink-3);line-height:1.55}.lv-card{padding:16px;border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line)}.lv-card-label{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--muted-2)}.lv-grid{display:grid;grid-gap:14px;gap:14px}.lv-week{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:6px;gap:6px}.lv-day{display:grid;justify-items:center;grid-gap:3px;gap:3px;padding:8px 0 9px;border-radius:12px;background:var(--surface-2);border:1px solid transparent}.lv-day-name{font-size:10.5px;font-weight:700;color:var(--muted-2);text-transform:uppercase;letter-spacing:.04em}.lv-day-num{font-size:16px;font-weight:800;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lv-day-mark{width:6px;height:6px;border-radius:50%;background:transparent}.lv-day[data-state=class]{background:var(--accent-tint)}.lv-day[data-state=class] .lv-day-mark{background:var(--accent)}.lv-day[data-state=cancelled] .lv-day-mark{background:#e5383b}.lv-day[data-state=cancelled] .lv-day-num{color:var(--muted-3);text-decoration:line-through;-webkit-text-decoration-color:#e5383b;text-decoration-color:#e5383b;text-decoration-thickness:2px}.lv-day[data-past]{opacity:.55}.lv-day[data-today]{border-color:var(--accent);background:var(--accent);opacity:1}.lv-day[data-today] .lv-day-name,.lv-day[data-today] .lv-day-num{color:#fff}.lv-day[data-today] .lv-day-mark{background:#fff}.lv-day[data-today][data-state=cancelled] .lv-day-mark{background:#ffb4b0}.lv-week-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;font-size:11.5px;color:var(--muted-2)}.lv-week-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.lv-week-legend i[data-k=class]{background:var(--accent)}.lv-week-legend i[data-k=cancelled]{background:#e5383b}.lv-week-legend i[data-k=today]{width:6px;height:6px;border:2px solid var(--accent)}.lv-last-title{margin-top:8px;font-size:15px;font-weight:800;letter-spacing:-.01em;color:var(--ink-strong)}.lv-last-meta{margin-top:3px;font-size:12.5px;color:var(--muted)}.lv-last-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.lv-joined{display:flex;align-items:baseline;gap:8px;margin:8px 0 10px}.lv-joined-num{font-size:30px;font-weight:800;letter-spacing:-.03em;color:var(--ink-strong)}.lv-joined-of{font-size:13px;color:var(--muted)}.lv-streak{margin-top:10px;font-size:12.5px;color:var(--ink-3)}.lv-streak b{color:var(--accent-dark)}.lv-others{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-gap:8px;gap:8px}.lv-others li{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px}.lv-others-title{font-weight:700}.lv-others-when{color:var(--muted)}.lv-help{display:grid;grid-gap:10px;gap:10px;padding:14px 16px;border-radius:var(--radius-xl);background:var(--surface-2);border:1px solid var(--line)}.lv-help-text{font-size:13px;color:var(--ink-3);line-height:1.5}.lv-help-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:8px;gap:8px}.lv-help-btn{height:40px;justify-content:center}.lv-empty{display:grid;justify-items:center;grid-gap:6px;gap:6px;padding:36px 20px 30px;text-align:center;border-radius:18px;background:var(--surface);border:1px dashed var(--line-2)}.lv-empty-mark{width:48px;height:48px;margin-bottom:6px;border-radius:14px;background:radial-gradient(circle at 50% 50%,var(--accent) 0 5px,transparent 6px),var(--accent-tint)}.lv-empty-title{margin:0;font-size:17px;font-weight:800;letter-spacing:-.02em;color:var(--ink-strong)}.lv-empty-text{margin:0 0 12px;font-size:13.5px;color:var(--muted)}@media (min-width:720px){.lv{gap:16px}.lv-hero{padding:26px 28px 20px}.lv-when{grid-template-columns:auto auto 1fr;gap:10px 28px}.lv-when-count{grid-column:auto;justify-self:end;text-align:right}.lv-join{width:auto;min-width:260px}.lv-hero-hint{text-align:left}.lv-grid{grid-template-columns:1.3fr 1fr}.lv-help{grid-template-columns:1fr auto;align-items:center}.lv-help-actions{grid-template-columns:repeat(2,auto)}}@media (prefers-reduced-motion:reduce){.lv-hero[data-tone=live],.lv-live-dot{animation:none}}.cutoff-list{display:grid;grid-gap:12px;gap:12px;margin-bottom:20px}.cutoff-card{padding:18px 20px;border-radius:var(--radius-xl);background:var(--warn-bg);border:1px dashed #e6d4ac}.cutoff-kicker{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--warn-fg)}.cutoff-title{margin:6px 0 0;font-size:17px;font-weight:800;letter-spacing:-.02em;color:var(--ink-strong)}.cutoff-text{margin:6px 0 14px;font-size:13.5px;color:var(--ink-3);line-height:1.55;max-width:560px}.rem{display:grid;grid-gap:14px;gap:14px}.rem-global{margin:0;font-size:12.5px}.rem-row{display:flex;align-items:center;gap:14px;justify-content:space-between}.rem-label{font-size:13.5px;font-weight:800;color:var(--ink-strong)}.rem-help{font-size:12px;color:var(--muted-2);line-height:1.5}.rem-switch{position:relative;flex:0 0 auto;display:inline-flex;align-items:center;width:64px;height:30px;padding:0 8px 0 34px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface-2);color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.06em;cursor:pointer;transition:background .15s ease}.rem-switch-knob{position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform .15s ease}.rem-switch[data-on]{background:var(--accent);border-color:var(--accent);color:#fff;padding:0 34px 0 10px}.rem-switch[data-on] .rem-switch-knob{transform:translateX(34px)}.rem-switch:disabled{opacity:.6;cursor:not-allowed}.rem-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.rem-facts{margin:0;display:grid;grid-gap:8px;gap:8px;padding:12px;border-radius:var(--radius-lg);background:var(--surface-2)}.rem-facts>div{display:grid;grid-template-columns:96px 1fr;grid-gap:10px;gap:10px;font-size:12.5px}.rem-facts dt{color:var(--muted-2)}.rem-facts dd{margin:0;color:var(--ink-2)}.rem-failed{color:var(--danger-fg);font-weight:700}.pf-body .rem-row+.rem-row{margin-top:14px;padding-top:14px;border-top:1px solid var(--line-3)}.rem-manual{margin-left:6px}.rem-now{display:flex;align-items:center;gap:10px;flex-wrap:wrap}@media (prefers-reduced-motion:reduce){.rem-switch,.rem-switch-knob{transition:none}}.lco-row{flex-wrap:wrap;row-gap:10px}.lco-row>span:first-child{flex:1 1 150px}.lco-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}:root{--apt-series-1:#4b45d6;--apt-series-2:#eb6834;--apt-series-3:#1baf7a;--apt-series-4:#eda100;--apt-series-5:#e87ba4;--apt-series-6:#008300}[data-series="0"]{--apt-color:var(--apt-series-1)}[data-series="1"]{--apt-color:var(--apt-series-2)}[data-series="2"]{--apt-color:var(--apt-series-3)}[data-series="3"]{--apt-color:var(--apt-series-4)}[data-series="4"]{--apt-color:var(--apt-series-5)}[data-series="5"]{--apt-color:var(--apt-series-6)}.apt-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.apt-progress{margin-bottom:30px}.apt-progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.apt-progress-title{margin:0;font-size:16px;font-weight:800;letter-spacing:-.02em}.apt-progress-sub{margin:3px 0 0;font-size:12.5px;color:var(--muted)}.apt-progress-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.apt-metric{padding:13px 14px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-2);min-width:0}.apt-metric-label{font-size:11.5px;font-weight:700;color:var(--muted-2)}.apt-metric-value{margin-top:6px;font-size:25px;font-weight:800;letter-spacing:-.03em;color:var(--ink-strong)}.apt-metric-meta{margin-top:6px;font-size:12.5px;color:var(--muted);line-height:1.5}.apt-metric-list{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-gap:6px;gap:6px;font-size:13px}.apt-metric-list li{display:flex;justify-content:space-between;gap:10px;min-width:0}.apt-metric-list a{color:var(--ink-2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.apt-metric-list a:hover{color:var(--accent)}.apt-metric-num{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink-3);flex-shrink:0}.apt-cat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px;margin-bottom:30px}.apt-cat-card,.apt-mock-teaser{display:flex;flex-direction:column;gap:6px;padding:18px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-card);color:inherit;transition:box-shadow .15s ease,border-color .15s ease}.apt-cat-card:hover,.apt-mock-teaser:hover{box-shadow:var(--shadow-card-hover);border-color:var(--line-2);color:inherit}.apt-cat-card:focus-visible,.apt-mock-teaser:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.apt-cat-title{display:block;font-size:16px;font-weight:800;letter-spacing:-.02em;color:var(--ink-strong)}.apt-cat-desc{display:block;font-size:13.5px;color:var(--muted);line-height:1.55}.apt-cat-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px;font-size:12.5px;color:var(--muted-3)}.apt-cat-count{font-weight:700;color:var(--accent-dark)}.apt-mock-teaser{flex-direction:row;align-items:center;justify-content:space-between;gap:16px}.apt-mock-teaser>span:first-child{display:grid;grid-gap:6px;gap:6px}.apt-topic-row{gap:14px}.apt-topic-row[aria-disabled=true]{cursor:default;opacity:.7}.apt-topic-row[aria-disabled=true]:hover{background:var(--surface)}.apt-topic-text{display:grid;grid-gap:2px;gap:2px;min-width:0;flex:1 1}.apt-topic-progress{display:flex;align-items:center;gap:10px;width:170px;flex-shrink:0}.apt-topic-progress .bar{flex:1 1}.apt-topic-count{font-family:var(--mono);font-size:12px;color:var(--muted);min-width:38px;text-align:right}.apt-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;margin-bottom:14px}.apt-summary-stats{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.apt-summary-stats strong{color:var(--ink-strong);font-weight:800}.apt-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.apt-toggle[aria-pressed=true]{background:var(--accent-tint);border-color:var(--accent-tint-border);color:var(--accent-dark)}.apt-practice{display:grid;grid-template-columns:minmax(0,1fr) 248px;grid-gap:16px;gap:16px;align-items:start}.apt-q-card{padding:20px 22px}.apt-q-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.apt-q-number{font-size:12.5px;font-weight:800;letter-spacing:.02em;color:var(--muted-2)}.apt-q-section{font-size:12.5px;color:var(--muted)}.apt-diff-easy{background:var(--ok-bg);color:var(--ok-fg);text-transform:capitalize}.apt-diff-medium{background:var(--warn-bg);color:var(--warn-fg);text-transform:capitalize}.apt-diff-hard{background:var(--danger-bg);color:var(--danger-fg);text-transform:capitalize}.apt-bookmark{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink-3);font-size:12.5px;font-weight:700;cursor:pointer}.apt-bookmark[aria-pressed=true]{background:var(--warn-bg);border-color:#f1ddb0;color:var(--warn-fg)}.apt-bookmark:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.apt-prompt{margin:0 0 16px;font-size:15px;line-height:1.65;color:var(--ink);white-space:pre-line}.apt-code{margin:-4px 0 16px;padding:12px 14px;overflow-x:auto;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-lg);font-family:var(--mono);font-size:13px;line-height:1.6;color:var(--ink-2);white-space:pre;-moz-tab-size:4;tab-size:4}.apt-options{display:grid;grid-gap:8px;gap:8px}.apt-option{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:46px;padding:11px 14px;border:1px solid var(--line-2);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink-2);font-size:14px;line-height:1.5;text-align:left;cursor:pointer}.apt-option:hover:not(:disabled){background:var(--surface-2);border-color:var(--line-2)}.apt-option:disabled{cursor:default}.apt-option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.apt-option-letter{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;border-radius:6px;background:var(--line-3);font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink-3)}.apt-option-text{flex:1 1;padding-top:1px;white-space:pre-line}.apt-option-tag{flex-shrink:0;font-size:11px;font-weight:800;padding-top:4px}.apt-option[data-state=selected]{border-color:var(--accent);background:var(--accent-tint);color:var(--ink)}.apt-option[data-state=selected] .apt-option-letter{background:var(--accent);color:#fff}.apt-option[data-state=correct]{border-color:#9fd3bb;background:var(--ok-soft);color:var(--ink)}.apt-option[data-state=correct] .apt-option-letter{background:var(--ok-fg);color:#fff}.apt-option[data-state=correct] .apt-option-tag{color:var(--ok-fg)}.apt-option[data-state=wrong]{border-color:#e6bdb9;background:#fdf5f4;color:var(--ink)}.apt-option[data-state=wrong] .apt-option-letter{background:var(--danger-fg);color:#fff}.apt-option[data-state=wrong] .apt-option-tag{color:var(--danger-fg)}.apt-earlier{margin:14px 0 0;font-size:12.5px;color:var(--muted)}.apt-feedback{margin-top:16px;padding:14px 16px;border-radius:var(--radius-lg);border:1px solid var(--ok-line);background:var(--ok-soft)}.apt-feedback[data-correct=false]{border-color:#f0d9d7;background:#fdf8f7}.apt-feedback-title{font-size:13px;font-weight:800;color:var(--ok-fg);margin-bottom:6px}.apt-feedback[data-correct=false] .apt-feedback-title{color:var(--danger-fg)}.apt-explanation{font-size:13.5px;line-height:1.7;color:var(--ink-2);white-space:pre-line}.apt-q-actions{display:flex;gap:8px;justify-content:space-between;margin-top:18px;flex-wrap:wrap}.apt-q-actions .btn{min-width:96px}.apt-palette{position:-webkit-sticky;position:sticky;top:72px;padding:14px}.apt-palette-group+.apt-palette-group{margin-top:14px}.apt-palette-title{display:flex;justify-content:space-between;margin-bottom:10px;font-size:12px;font-weight:800;color:var(--ink-3)}.apt-palette-count{color:var(--muted-3);font-weight:700}.apt-palette-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));grid-gap:6px;gap:6px}.apt-palette-item{position:relative;height:36px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink-3);cursor:pointer}.apt-palette-item:hover{background:var(--surface-2)}.apt-palette-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.apt-palette-item[data-state=correct]{background:var(--ok-bg);border-color:#b9dfcb;color:var(--ok-fg)}.apt-palette-item[data-state=wrong]{background:var(--danger-bg);border-color:#efcdc9;color:var(--danger-fg)}.apt-palette-item[data-state=answered]{background:var(--accent-tint);border-color:var(--accent-tint-border);color:var(--accent-dark)}.apt-palette-item[data-current]{box-shadow:0 0 0 2px var(--ink-strong)}.apt-key[data-bookmarked]:after,.apt-palette-item[data-bookmarked]:after{content:"";position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--warn-fg)}.apt-palette-key{list-style:none;display:flex;gap:12px;flex-wrap:wrap;margin:14px 0 0;padding:0;font-size:11.5px;color:var(--muted)}.apt-palette-key li{display:inline-flex;align-items:center;gap:6px}.apt-key{position:relative;display:inline-block;width:14px;height:14px;border-radius:4px;border:1px solid var(--line-2);background:var(--surface)}.apt-key[data-state=correct]{background:var(--ok-bg);border-color:#b9dfcb}.apt-key[data-state=wrong]{background:var(--danger-bg);border-color:#efcdc9}.apt-key[data-bookmarked]:after{top:3px;right:3px;width:6px;height:6px}.apt-ctx{margin:0 0 16px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-2)}.apt-ctx-title{font-size:13px;font-weight:800;color:var(--ink-2);margin-bottom:10px}.apt-ctx-unit{font-weight:600;color:var(--muted)}.apt-ctx-note{margin:10px 0 0;font-size:12px;color:var(--muted);line-height:1.55}.apt-passage p{margin:0 0 10px;font-size:14px;line-height:1.75;color:var(--ink-2)}.apt-passage p:last-child{margin-bottom:0}.apt-table-wrap{overflow-x:auto}.apt-table{width:100%;border-collapse:collapse;font-size:13px;background:var(--surface)}.apt-table td,.apt-table th{padding:8px 10px;border:1px solid var(--line);text-align:left;white-space:nowrap}.apt-table thead th{background:var(--surface-2);font-size:12px;font-weight:800;color:var(--ink-3)}.apt-table tbody th{font-weight:700;color:var(--ink-2)}.apt-table td[data-numeric]{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.apt-legend{list-style:none;display:flex;gap:14px;flex-wrap:wrap;margin:0 0 6px;padding:0;font-size:12.5px;color:var(--ink-3)}.apt-legend li{display:inline-flex;align-items:center;gap:6px}.apt-swatch{width:12px;height:12px;border-radius:3px;background:var(--apt-color);flex-shrink:0}.apt-chart{display:block;width:100%;height:auto;max-width:640px}.apt-grid{stroke:var(--line);stroke-width:1}.apt-baseline{stroke:var(--line-2);stroke-width:1}.apt-tick{font-size:11px;fill:var(--muted);font-family:var(--font)}.apt-tick-x{font-size:11.5px;fill:var(--ink-3)}.apt-mark{fill:var(--apt-color);stroke:var(--surface);stroke-width:2px;paint-order:stroke}.apt-value{font-size:11px;font-weight:700;fill:var(--ink-2);font-family:var(--font)}.apt-line{fill:none;stroke:var(--apt-color);stroke-width:2px;stroke-linejoin:round}.apt-point{fill:var(--apt-color);stroke:var(--surface);stroke-width:2px}.apt-chart-data{margin-top:10px;font-size:12.5px}.apt-chart-data summary{cursor:pointer;color:var(--accent-dark);font-weight:700}.apt-chart-data .apt-table-wrap{margin-top:8px}.apt-pie{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.apt-pie-svg{width:220px;height:220px;flex-shrink:0}.apt-slice-label{font-size:11px;font-weight:800;fill:#fff;font-family:var(--font)}.apt-pie-legend{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px;font-size:13px;min-width:200px}.apt-pie-legend li{display:flex;align-items:center;gap:8px}.apt-pie-name{color:var(--ink-2);flex:1 1}.apt-pie-value{font-weight:700;color:var(--ink-strong);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.apt-mock-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:14px;gap:14px;margin-bottom:30px}.apt-mock-card{display:flex;flex-direction:column;padding:18px 20px}.apt-mock-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.apt-mock-time{font-size:12.5px;font-weight:700;color:var(--muted-2)}.apt-mock-title{margin:0;font-size:17px;font-weight:800;letter-spacing:-.02em}.apt-mock-desc{margin:6px 0 12px;font-size:13.5px;color:var(--muted);line-height:1.6}.apt-mock-sections{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-gap:6px;gap:6px;font-size:13px}.apt-mock-sections li{display:flex;justify-content:space-between;gap:10px;color:var(--ink-3)}.apt-mock-sections li span:last-child{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.apt-mock-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}.apt-history-score{font-family:var(--mono);font-weight:700;color:var(--ink-2)}.apt-intro .apt-table{margin:4px 0 16px}.apt-rules{margin:0 0 16px;padding-left:18px;display:grid;grid-gap:6px;gap:6px;font-size:13.5px;color:var(--ink-3);line-height:1.6}.apt-runbar{position:-webkit-sticky;position:sticky;top:56px;z-index:10;display:flex;align-items:center;gap:14px;margin-bottom:12px;padding:10px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.apt-runbar-time{font-family:var(--mono);font-size:20px;font-weight:700;color:var(--ink-strong);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.apt-runbar-time[data-low]{color:var(--danger-fg)}.apt-runbar-count{font-size:13px;color:var(--muted)}.apt-runbar .btn{margin-left:auto}.apt-section-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.apt-section-tab{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:13px;font-weight:700;color:var(--ink-3);cursor:pointer}.apt-section-tab[aria-selected=true]{background:var(--ink-strong);border-color:var(--ink-strong);color:#fff}.apt-section-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.apt-section-count{font-family:var(--mono);font-size:11.5px;opacity:.75}.apt-score{margin-bottom:14px}.apt-score-top{display:flex;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:16px}.apt-score-value{font-size:40px;font-weight:800;letter-spacing:-.04em;color:var(--ink-strong);line-height:1.1}.apt-score-value span{font-size:20px;color:var(--muted)}.apt-score-facts{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted);padding-bottom:6px}.apt-score-facts strong{color:var(--ink-strong)}.apt-result-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.apt-review{margin-top:8px}.apt-review-section{margin:22px 0 10px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}.apt-review-card{margin-bottom:12px;padding:16px 18px;page-break-inside:avoid;break-inside:avoid}.apt-print-bar{display:flex;justify-content:space-between;gap:8px;margin-bottom:16px}.apt-print-head{margin-bottom:18px}.apt-print-kicker{font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-dark)}.apt-print-title{margin:6px 0 4px;font-size:24px;font-weight:800;letter-spacing:-.03em}.apt-print-meta{font-size:13px;color:var(--muted);line-height:1.6}.apt-print-q{margin-bottom:14px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);page-break-inside:avoid;break-inside:avoid}.apt-print-q .apt-prompt{margin-bottom:10px}.apt-print-options{list-style:none;margin:0;padding:0;display:grid;grid-gap:6px;gap:6px;font-size:14px;color:var(--ink-2)}.apt-print-options li{display:flex;align-items:flex-start;gap:10px}@media print{.apt-chart-data,.student-crumbs,.student-topbar{display:none!important}.student-app{display:block;min-height:0}.student-content{padding:0;max-width:none}.apt-ctx,.apt-print-q,.apt-review-card,.apt-score{box-shadow:none}.apt-option{page-break-inside:avoid;break-inside:avoid}.apt-option,.apt-option-letter,.badge,[data-series]{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (max-width:900px){.apt-progress-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.apt-practice{grid-template-columns:minmax(0,1fr)}.apt-palette{position:static}.apt-runbar{top:56px}}@media (max-width:600px){.apt-cat-grid,.apt-progress-grid{grid-template-columns:minmax(0,1fr)}.apt-mock-teaser,.apt-progress-head{flex-direction:column}.apt-mock-teaser{align-items:stretch}.apt-q-card{padding:16px}.apt-topic-progress{width:100%}.apt-topic-row{flex-wrap:wrap}.apt-filters .segmented{width:100%}.apt-q-actions .btn{flex:1 1;min-width:0}.apt-runbar{gap:10px}.apt-runbar-count{display:none}.apt-pie{justify-content:center}}.notif-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;color:var(--ink-3)}.notif-bell:hover{background:var(--line-3);color:var(--ink)}.notif-bell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.notif-count{position:absolute;top:4px;right:3px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--danger-fg);color:#fff;font-size:10px;font-weight:800;line-height:17px;text-align:center}.notif-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px}.notif-item{padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}.notif-item[data-unread=true]{border-color:var(--accent-tint-border);background:var(--accent-tint)}.notif-new{float:right;margin-left:8px;font-size:11px;font-weight:800;color:var(--accent-dark)}.notif-title{font-size:14px;font-weight:700;color:var(--ink);overflow-wrap:anywhere}.notif-title a{color:inherit}.notif-body{margin:6px 0 0;font-size:13px;line-height:1.55;color:var(--ink-3);overflow-wrap:anywhere}.notif-time{display:block;margin-top:6px;font-size:12px;color:var(--muted-2)}