@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.12tyk43_3sh9u.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.0jzbimsg8vl84.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.0-wfv7uh4i7h9.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.p.0nx0ww8fni_q3.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_fe37722e-module__2r-lLq__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_fe37722e-module__2r-lLq__variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/4fa387ec64143e14-s.0wkzw~je483f-.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/797e433ab948586e-s.p.08e28id.o-okb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/4fa387ec64143e14-s.0wkzw~je483f-.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/797e433ab948586e-s.p.08e28id.o-okb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_120a843d-module__JH6PvW__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_120a843d-module__JH6PvW__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--bg:#fff;--bg-soft:#f4f5f7;--bg-secondary:#e9ebee;--card:#fff;--hover:#f1f3f4;--field:#f5f5f6;--border:#e1e4ea;--border-soft:#eceef1;--fg:#0f172a;--muted:#64748b;--faint:#94a3b8;--brand:#0050e6;--brand-deep:#0a3ca1;--brand-navy:#0a2a6e;--accent:#0068ff;--accent-soft:#e6efff;--brand-ink:#fff;--chip-on:#eff6ff;--chip-on-ink:#2563eb;--success:#00b894;--success-ink:#00805f;--success-soft:#e6f8f3;--danger:#ff6b6b;--danger-ink:#d63b3b;--danger-soft:#ffeded;--warning:#ffa502;--warning-ink:#b86e00;--warning-soft:#fff4e0;--queued:#fdcb6e;--info-soft:#dcebff;--chat-bg:#ebecf0;--bubble-me:#e4effb;--bubble-other:#fff;--shadow-pop:0 10px 32px #0f172a29;--shadow-bubble:0 0 1px #15274740, 0 1px 1px #15274740;--font:"Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono:"Geist Mono", ui-monospace, "SFMono-Regular", Consolas, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d121c;--bg-soft:#0a0f17;--bg-secondary:#1b2333;--card:#121a27;--hover:#182132;--field:#1a2231;--border:#243044;--border-soft:#1e283a;--fg:#e6ebf3;--muted:#9aa6ba;--faint:#6b778c;--brand:#3d7bff;--brand-deep:#2a5fd6;--brand-navy:#0b1f4d;--accent:#5b93ff;--accent-soft:#15284f;--brand-ink:#fff;--chip-on:#142650;--chip-on-ink:#8db4ff;--success:#1fd1a5;--success-ink:#3fe0b6;--success-soft:#0e2f28;--danger:#ff7b7b;--danger-ink:#ff9090;--danger-soft:#3a1a1c;--warning:#ffb02e;--warning-ink:#ffc35c;--warning-soft:#352710;--queued:#f5c35b;--info-soft:#14284d;--chat-bg:#0c111b;--bubble-me:#1a3157;--bubble-other:#182031;--shadow-pop:0 10px 32px #0009;--shadow-bubble:0 0 0 1px #ffffff0a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0d121c;--bg-soft:#0a0f17;--bg-secondary:#1b2333;--card:#121a27;--hover:#182132;--field:#1a2231;--border:#243044;--border-soft:#1e283a;--fg:#e6ebf3;--muted:#9aa6ba;--faint:#6b778c;--brand:#3d7bff;--brand-deep:#2a5fd6;--brand-navy:#0b1f4d;--accent:#5b93ff;--accent-soft:#15284f;--brand-ink:#fff;--chip-on:#142650;--chip-on-ink:#8db4ff;--success:#1fd1a5;--success-ink:#3fe0b6;--success-soft:#0e2f28;--danger:#ff7b7b;--danger-ink:#ff9090;--danger-soft:#3a1a1c;--warning:#ffb02e;--warning-ink:#ffc35c;--warning-soft:#352710;--queued:#f5c35b;--info-soft:#14284d;--chat-bg:#0c111b;--bubble-me:#1a3157;--bubble-other:#182031;--shadow-pop:0 10px 32px #0009;--shadow-bubble:0 0 0 1px #ffffff0a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg-soft);color:var(--fg);font-family:var(--font);-webkit-font-smoothing:antialiased;padding-block:12px;padding-inline:16px;font-size:14px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}h1,h2,h3{text-wrap:balance;color:var(--fg);margin:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}svg{flex:none}.app{background:var(--bg);border:1px solid var(--border);border-radius:12px;grid-template-rows:64px minmax(0,1fr);height:100%;display:grid;position:relative;overflow:hidden}.topbar{border-bottom:1px solid var(--border);background:var(--card);z-index:6;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:0 16px;display:grid}.brand{align-items:center;gap:12px;min-width:0;display:flex}.ham{width:36px;height:36px;color:var(--brand);background:0 0;border:0;border-radius:4px;place-items:center;transition:background .2s;display:grid}.ham:hover{background:var(--hover)}.ham svg{width:22px;height:22px}.logo{letter-spacing:-.02em;color:var(--fg);white-space:nowrap;align-items:center;gap:9px;font-size:19px;font-weight:800;display:flex}.logo i{color:#fff;background:#0050e6;border-radius:9px;place-items:center;width:34px;height:34px;font-size:15px;font-style:normal;display:grid}.logo span{color:var(--brand);font-weight:600}.logo i svg{width:21px;height:21px}.search{background:var(--field);border-radius:4px;justify-self:center;align-items:center;gap:8px;width:min(420px,100%);height:40px;padding:0 12px;display:flex}.search input{background:0 0;border:0;outline:none;width:100%;font-style:italic}.search svg{width:20px;height:20px;color:var(--fg)}.top-icons{align-items:center;gap:4px;display:flex}.ticon{width:40px;height:40px;color:var(--fg);background:0 0;border:0;border-radius:4px;place-items:center;transition:background .2s;display:grid;position:relative}.ticon:hover{background:var(--hover)}.ticon svg{width:22px;height:22px}.dot{color:#fff;min-width:16px;height:16px;box-shadow:0 0 0 2px var(--card);background:#ff3b30;border-radius:99px;place-items:center;padding:0 4px;font-size:10px;font-weight:700;display:grid;position:absolute;top:5px;right:5px}.me{border:1px solid var(--border-soft);background:var(--card);border-radius:6px;align-items:center;gap:10px;margin-left:6px;padding:4px 8px 4px 4px;display:flex;position:relative}.me:hover{background:var(--hover)}.me .av{width:40px;height:40px;font-size:14px}.me-text{text-align:left;line-height:1.2;display:grid}.me-text b{font-size:14px}.me-text small{color:var(--muted);font-size:12px}.me svg.chev{width:16px;height:16px;color:var(--muted)}.menu{background:var(--card);border:1px solid var(--border);width:250px;box-shadow:var(--shadow-pop);z-index:20;text-align:left;border-radius:6px;padding:6px;animation:.2s fadeIn;position:absolute;top:calc(100% + 6px);right:0}.menu .lbl{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:8px 10px 4px;font-size:11px;font-weight:700}.menu button{text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:10px;width:100%;padding:9px 10px;font-size:13.5px;display:flex}.menu button:hover{background:var(--hover)}.menu button svg{width:18px;height:18px;color:var(--muted)}.menu button.on{background:var(--chip-on);color:var(--chip-on-ink);font-weight:700}.menu button.on svg{color:var(--chip-on-ink)}.menu hr{border:0;border-top:1px solid var(--border);margin:6px 0}.body{grid-template-columns:264px minmax(0,1fr);min-height:0;display:grid}.app.collapsed .body{grid-template-columns:72px minmax(0,1fr)}.side{color:#fff;background:#0050e6;flex-direction:column;gap:4px;min-height:0;padding:14px 12px;display:flex;overflow-y:auto}.side-item{color:#fff;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:6px;align-items:center;gap:14px;padding:11px 14px;font-size:15px;font-weight:500;transition:background .2s;display:flex;position:relative}.side-item:hover{background:#ffffff1a}.side-item[aria-current=page]{background:#0a2a6e}.side-item svg{width:22px;height:22px}.side-item .dot{top:3px;left:26px;right:auto;box-shadow:0 0 0 2px #0050e6}.side-item[aria-current=page] .dot{box-shadow:0 0 0 2px #0a2a6e}.side-foot{margin-top:auto}.side-foot .side-item{background:#ffffff14;border:1px solid #ffffff1f;width:100%}.side-foot .side-item .arr{width:18px;height:18px;margin-left:auto}.app.collapsed .side{align-items:center;padding:14px 10px}.app.collapsed .side-item{justify-content:center;width:48px;height:44px;padding:0}.app.collapsed .side-item span,.app.collapsed .side-item .arr{display:none}.app.collapsed .side-item .dot{left:24px}.main{background:var(--bg);min-width:0;min-height:0;position:relative;overflow-y:auto}.page{align-content:start;gap:20px;max-width:1260px;margin-inline:auto;padding:26px 32px 48px;animation:.2s fadeIn;display:grid}.scrim{z-index:8;background:#00000073;animation:.2s fadeIn;position:absolute;inset:64px 0 0}.btn{background:var(--field);color:var(--fg);white-space:nowrap;border:0;border-radius:4px;justify-content:center;align-items:center;gap:8px;padding:9px 16px;font-size:14px;font-weight:600;transition:all .2s;display:inline-flex}.btn:hover{background:var(--bg-secondary)}.btn:active{transform:scale(.95)}.btn.primary{background:var(--brand);color:var(--brand-ink)}.btn.primary:hover{background:var(--brand-deep)}.btn.outline{color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand);background:0 0}.btn.outline:hover{background:var(--accent-soft)}.btn.success{background:var(--success);color:#fff}.btn.sm{padding:6px 12px;font-size:13px}.btn:disabled{background:var(--field);color:var(--faint);box-shadow:none;cursor:not-allowed;transform:none}.btn svg{width:18px;height:18px}.link{color:var(--brand);background:0 0;border:0;padding:0;font-size:13px;font-weight:600}.av{color:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:12px;font-weight:700;display:grid}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.title-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.title-row h1{letter-spacing:-.01em;align-items:center;gap:14px;font-size:30px;font-weight:700;display:flex}.title-row h1 svg{width:30px;height:30px;color:var(--muted)}.title-row .right{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex;position:relative}.demo-chip{background:var(--warning-soft);color:var(--warning-ink);border-radius:4px;padding:3px 8px;font-size:11px;font-weight:700}.widget{border:1px solid var(--border-soft);background:var(--card);border-radius:4px;align-content:start;gap:16px;min-width:0;padding:22px 24px;display:grid}.widget-head{align-items:center;gap:8px;display:flex}.widget-head h2{align-items:center;gap:6px;font-size:17px;font-weight:700;display:inline-flex}.widget-head h2 button{font:inherit;color:inherit;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:inline-flex}.widget-head h2 svg{width:18px;height:18px}.widget-head .right{margin-left:auto}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:20px;display:grid}.pill{background:var(--field);border-radius:4px;align-items:center;height:36px;padding:0 10px;font-size:13px;display:flex;position:relative;overflow:hidden}.pill i{background:var(--accent-soft);position:absolute;inset:0 auto 0 0}.pill.done i{background:var(--success-soft)}.pill span{font-variant-numeric:tabular-nums;font-weight:600;position:relative}.pill.done span{color:var(--success-ink)}.pill-btn{background:var(--field);border:0;border-radius:4px;justify-content:center;align-items:center;gap:8px;width:100%;height:36px;font-weight:600;transition:background .2s;display:flex}.pill-btn:hover{background:var(--bg-secondary)}.pill-btn .go{background:var(--brand);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.pill-btn .go svg{width:13px;height:13px}.dots{justify-content:center;gap:10px;display:flex}.dots button{background:var(--bg-secondary);border:0;border-radius:50%;width:12px;height:12px;padding:0}.dots button[aria-current=true]{background:var(--brand)}.tabs{border-bottom:1px solid var(--border);gap:6px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;margin-bottom:-1px;padding:12px 14px 10px;font-weight:600}.tab:hover{color:var(--fg)}.tab[aria-selected=true]{color:var(--fg);border-bottom-color:var(--brand);font-weight:700}.toast{color:#fff;z-index:40;box-shadow:var(--shadow-pop);background:#0f172a;border-radius:6px;max-width:calc(100% - 32px);padding:10px 16px;font-size:13px;animation:.2s slideUp;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.empty{color:var(--muted);text-align:center;justify-items:center;gap:8px;padding:30px 10px;display:grid}.empty svg{width:44px;height:44px;color:var(--brand)}.empty b{color:var(--fg);font-size:15px}.ccard{border:1px solid var(--border);background:var(--card);text-align:left;border-radius:4px;grid-template-rows:auto 1fr;min-width:0;padding:0;transition:border-color .2s,box-shadow .2s;display:grid;overflow:hidden}.ccard:hover{border-color:#bfdbfe;box-shadow:0 6px 18px #0f172a0f}.ccard .img{aspect-ratio:16/10.5;max-width:100%;position:relative}.ccard .img svg.ill{width:100%;height:100%;position:absolute;inset:0}.ccard .badge-ico{color:#fff;width:38px;height:38px;box-shadow:0 0 0 3px var(--card);border:0;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:-18px;right:12px}.ccard .badge-ico svg{width:20px;height:20px}.ccard .cbody{align-content:start;gap:4px;padding:18px 14px 14px;display:grid}.ccard h3{font-size:16px;font-weight:700;line-height:1.3}.ccard .code{color:var(--muted);font-size:13px}.ccard .meta{color:var(--muted);flex-wrap:wrap;gap:10px;margin-top:2px;font-size:12px;display:flex}.ccard .foot{margin-top:12px}.ccard .tag{border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.tag-req{background:var(--accent-soft);color:var(--brand)}.tag-opt{background:var(--field);color:var(--muted)}.tag-late{background:var(--danger-soft);color:var(--danger-ink)}.carousel{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:0 3%;display:grid}.course-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:20px;display:grid}.ov{display:grid}.ov-row{grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 0;font-size:14px;display:grid}.ov-row svg{width:20px;height:20px;color:var(--fg)}.ov-row b{font-variant-numeric:tabular-nums;font-size:17px}.today-date{color:var(--muted);margin-top:-10px;font-size:13px}.event{background:var(--bg-soft);border-radius:4px;grid-template-columns:4px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.event i{border-radius:2px;align-self:stretch}.event b{font-size:14px;display:block}.event small{color:var(--muted);font-size:12px}.event .when{font-family:var(--mono);color:var(--muted);font-size:12px}.lb-row{border-radius:4px;grid-template-columns:24px 34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 6px;font-size:14px;display:grid}.lb-row.me-row{background:var(--chip-on);color:var(--chip-on-ink);font-weight:700}.lb-rank{text-align:center;color:var(--muted);font-weight:800}.lb-rank.r1{color:#e0a100}.lb-rank.r2{color:#94a3b8}.lb-rank.r3{color:#c26a2c}.lb-val{font-family:var(--mono);color:var(--muted);font-size:13px}.level-box{grid-template-columns:64px minmax(0,1fr);align-items:center;gap:16px;display:grid}.level-ring{width:64px;height:64px;position:relative}.level-ring svg{width:64px;height:64px}.level-ring b{place-items:center;font-size:20px;font-weight:800;display:grid;position:absolute;inset:0}.level-box p{color:var(--muted);margin:2px 0 0;font-size:13px}.bar{background:var(--bg-secondary);border-radius:99px;height:8px;overflow:hidden}.bar>i{background:var(--brand);border-radius:99px;height:100%;transition:width .3s;display:block}.badges{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:12px;display:grid}.badge{text-align:center;color:var(--muted);justify-items:center;gap:6px;font-size:12px;font-weight:600;line-height:1.3;display:grid}.badge svg{width:52px;height:58px}.badge.off svg{filter:grayscale();opacity:.3}.dontmiss{gap:8px;display:grid}.dm{border:1px solid var(--border-soft);border-radius:4px;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.dm .ico{border-radius:50%;place-items:center;width:34px;height:34px;display:grid}.dm .ico svg{width:18px;height:18px}.dm b{font-size:14px;display:block}.dm small{color:var(--muted);font-size:12px}.custom-menu{z-index:10;background:var(--card);border:1px solid var(--border);width:260px;box-shadow:var(--shadow-pop);border-radius:4px;gap:2px;padding:8px;animation:.2s fadeIn;display:grid;position:absolute;top:calc(100% + 6px);right:0}.custom-menu label{cursor:pointer;border-radius:4px;align-items:center;gap:10px;padding:8px;font-size:13.5px;display:flex}.custom-menu label:hover{background:var(--hover)}.custom-menu input{accent-color:var(--brand);width:16px;height:16px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.field{background:var(--field);border-radius:4px;align-items:center;gap:8px;min-width:240px;height:40px;padding:0 12px;display:flex}.field input{background:0 0;border:0;outline:none;width:100%;font-style:italic}.field svg{width:18px;height:18px}.seg{background:var(--field);border-radius:4px;padding:3px;display:inline-flex}.seg button{color:var(--muted);background:0 0;border:0;border-radius:3px;place-items:center;padding:6px 10px;display:grid}.seg button[aria-pressed=true]{background:var(--card);color:var(--brand);box-shadow:0 1px 2px #0f172a1a}.seg svg{width:18px;height:18px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{color:#1e293b;background:#f1f5f9;border:0;border-radius:4px;padding:7px 12px;font-size:13px;font-weight:600;transition:background .2s}.chip:hover{background:#e2e8f0}.chip[aria-pressed=true]{background:var(--chip-on);color:var(--chip-on-ink);font-weight:800}:root[data-theme=dark] .chip{background:var(--field);color:var(--fg)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .chip{background:var(--field);color:var(--fg)}}.sort{color:var(--muted);align-items:center;gap:8px;margin-left:auto;font-size:13px;display:flex}.sort select{background:var(--field);height:40px;color:var(--fg);border:0;border-radius:4px;padding:0 12px}.list{border:1px solid var(--border);border-radius:4px;overflow:hidden}.lrow{border-top:1px solid var(--border);text-align:left;background:var(--card);border-bottom:0;border-left:0;border-right:0;grid-template-columns:120px minmax(0,1fr) 200px 130px;align-items:center;gap:18px;width:100%;padding:12px 16px;display:grid}.lrow:first-child{border-top:0}.lrow:hover{background:var(--hover)}.lrow .img{aspect-ratio:16/10;border-radius:4px;position:relative;overflow:hidden}.lrow .img svg{width:100%;height:100%;position:absolute;inset:0}.lrow h3{font-size:15px;font-weight:700}.lrow small{color:var(--muted);font-size:12.5px}.catalog{grid-template-columns:250px minmax(0,1fr);align-items:start;gap:32px;display:grid}.cats h2{margin-bottom:12px;font-size:18px;font-weight:700}.cat{cursor:pointer;align-items:center;gap:12px;padding:8px 0;font-size:14px;display:flex}.cat input{width:18px;height:18px;accent-color:var(--brand)}.banner{background:var(--info-soft);border-radius:4px;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 18px;font-size:14px;display:flex}.banner svg{width:20px;height:20px;color:var(--brand)}.banner .btn{margin-left:auto}.chero{background:var(--brand-navy);color:#fff;grid-template-columns:minmax(0,1fr) 340px;align-items:center;gap:28px;padding:36px 40px;display:grid;position:relative;overflow:hidden}.chero .cat-name{color:#ffffffbf;font-size:15px;font-style:italic}.chero h1{color:#fff;margin-top:6px;font-size:32px;font-weight:700}.chero .code{color:#ffffffbf;margin-top:6px}.chero .img{aspect-ratio:16/10;border-radius:6px;position:relative;overflow:hidden;box-shadow:0 10px 30px #0000004d}.chero .img svg{width:100%;height:100%;position:absolute;inset:0}.cbody-wrap{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:32px;max-width:1100px;margin-inline:auto;padding:24px 40px 48px;display:grid}.cinfo{gap:16px;display:grid}.start-date{background:var(--field);border-radius:4px;justify-self:start;padding:8px 12px;font-size:14px}.cinfo p.desc{color:var(--fg);max-width:70ch;margin:0;font-size:16px;line-height:1.6}.units{display:grid}.sec-name{padding:18px 0 8px;font-size:15px;font-weight:700}.urow{text-align:left;background:0 0;border:0;border-radius:4px;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:14px;width:100%;padding:12px 6px;font-size:15px;transition:background .2s;display:grid}.urow:hover:not(:disabled){background:var(--hover)}.urow:disabled{cursor:not-allowed;color:var(--faint)}.urow svg{width:20px;height:20px}.urow .st{color:var(--muted);white-space:nowrap;font-size:12px}.urow .st.ok{color:var(--success-ink);font-weight:700}.side-card{border:1px solid var(--border-soft);border-radius:4px;gap:12px;padding:18px;display:grid}.side-card h3{font-size:15px;font-weight:700}.kv{justify-content:space-between;gap:10px;font-size:13.5px;display:flex}.kv span:first-child{color:var(--muted)}.files{gap:8px;padding-top:12px;display:grid}.file{border:1px solid var(--border-soft);border-radius:4px;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.file .ico{color:#fff;border-radius:4px;place-items:center;width:36px;height:36px;font-size:10px;font-weight:800;display:grid}.file small{color:var(--muted)}.player{background:var(--bg);z-index:12;grid-template-columns:400px minmax(0,1fr);animation:.2s fadeIn;display:grid;position:absolute;inset:0}.app.outline-off .player{grid-template-columns:0 minmax(0,1fr)}aside.outline{border-right:1px solid var(--border);background:var(--bg-soft);grid-template-rows:auto auto minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.o-head{background:var(--brand-navy);align-items:center;height:64px;padding:0 12px;display:flex}.o-head .ham{color:#fff;background:#ffffff1a}.o-head .ham:hover{background:#fff3}.o-info{background:var(--card);border-bottom:1px solid var(--border);gap:10px;padding:12px 16px 14px;display:grid}.o-info .link{justify-self:start;font-size:14px;font-weight:500}.o-info h2{font-size:19px;font-weight:700}.o-prog{grid-template-columns:minmax(0,1fr) 40px;gap:10px;display:grid}.o-prog .ticon{border:1px solid var(--border);width:40px;height:36px}.o-list{padding:4px 0 20px;overflow-y:auto}.o-sec{padding:16px 20px 8px 52px;font-size:14px;font-weight:700}.o-unit{text-align:left;width:100%;color:var(--fg);background:0 0;border:0;border-left:4px solid #0000;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:14px;padding:13px 16px 13px 18px;font-size:14px;transition:background .2s;display:grid}.o-unit:hover:not(:disabled){background:var(--hover)}.o-unit:disabled{color:var(--faint);cursor:not-allowed}.o-unit[aria-current=true]{background:var(--card);border-left-color:var(--brand-navy);font-weight:600}.o-unit svg{width:18px;height:18px}.o-unit .ok{color:var(--success)}.stage-wrap{grid-template-rows:64px minmax(0,1fr);min-width:0;min-height:0;display:grid}.stage-top{border-bottom:1px solid var(--border);background:var(--card);align-items:center;gap:10px;padding:0 20px;display:flex}.stage-top .ham{display:none}.stage-top .right{align-items:center;gap:8px;margin-left:auto;display:flex;position:relative}.next-wrap{position:relative}.tip{background:var(--card);border:1px solid var(--fg);white-space:nowrap;z-index:3;border-radius:4px;padding:6px 10px;font-size:12.5px;position:absolute;top:calc(100% + 10px);right:0}.tip:before{content:"";background:var(--card);border-left:1px solid var(--fg);border-top:1px solid var(--fg);width:10px;height:10px;position:absolute;top:-6px;right:30px;transform:rotate(45deg)}.next-wrap:not(:hover) .tip.hover-only{display:none}.req{background:var(--field);border-radius:4px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:600;display:inline-flex}.req svg{width:18px;height:18px}.stage{min-height:0;overflow-y:auto}.stage-inner{align-content:start;gap:22px;max-width:1040px;margin-inline:auto;padding:28px 40px 56px;animation:.2s fadeIn;display:grid}.stage-inner h1{letter-spacing:-.01em;font-size:30px;font-weight:700}.video{color:#fff;background:#0b1220;border-radius:4px;overflow:hidden}.screen{aspect-ratio:16/9;place-items:center;max-width:100%;display:grid;position:relative;overflow:hidden}.screen svg.ill{width:100%;height:100%;position:absolute;inset:0}.screen .shade{background:linear-gradient(#0408108c,#04081000 30% 65%,#04081099);position:absolute;inset:0}.screen .person{aspect-ratio:3/4;width:25%;position:absolute;bottom:0;left:7%}.v-title{align-items:center;gap:10px;display:flex;position:absolute;top:14px;left:18px}.v-title i{background:#0050e6;border-radius:50%;place-items:center;width:34px;height:34px;font-size:12px;font-style:normal;font-weight:800;display:grid}.v-title b{font-size:clamp(13px,1.6vw,17px);display:block}.v-title small{color:#fffc;font-size:12px}.slide{gap:10px;width:48%;display:grid;position:absolute;top:24%;right:6%}.slide .k{font-family:var(--mono);color:#9cc0ff;letter-spacing:.06em;font-size:clamp(10px,1.1vw,12px)}.slide h3{color:#fff;font-size:clamp(16px,2.5vw,28px);font-weight:800;line-height:1.15}.slide p{color:#ffffffe6;margin:0;font-size:clamp(11px,1.4vw,15px)}.bigplay{color:#0050e6;background:#fffffff2;border:0;border-radius:50%;place-items:center;width:70px;height:70px;transition:transform .2s;display:grid;position:relative;box-shadow:0 10px 34px #00000073}.bigplay:hover{transform:scale(1.06)}.bigplay svg{width:28px;height:28px;margin-left:4px}.vbar{grid-template-columns:auto auto minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:10px 16px 12px;display:grid}.ctrl{color:#fff;background:0 0;border:0;border-radius:4px;place-items:center;padding:4px;display:grid}.ctrl:hover{background:#ffffff1a}.ctrl svg{width:22px;height:22px}.track{cursor:pointer;background:#ffffff40;border-radius:2px;height:4px;position:relative}.track:hover{height:6px}.track .watched{background:#ffffff73;border-radius:2px;position:absolute;inset:0 auto 0 0}.track .pos{background:#ff3b30;border-radius:2px;position:absolute;inset:0 auto 0 0}.track .knob{background:#ff3b30;border-radius:50%;width:13px;height:13px;position:absolute;top:50%;transform:translate(-50%,-50%)}.track .mark{background:#0b1220;width:3px;position:absolute;top:0;bottom:0}.time{font-family:var(--mono);white-space:nowrap;background:#ffffff1f;border-radius:99px;padding:2px 9px;font-size:12px}.speed{color:#111;white-space:nowrap;background:#fdcb6e;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:700}.vmsg{color:#fdcb6e;min-height:16px;padding:0 16px 10px;font-size:12px}.qcard{border:1px solid var(--border);border-radius:4px;gap:14px;padding:22px 26px;display:grid}.qhead{align-items:flex-start;gap:12px;font-size:15.5px;font-weight:500;display:flex}.qhead svg{width:22px;height:22px;color:var(--muted);margin-top:1px}.radio{cursor:pointer;border-radius:4px;align-items:center;gap:14px;padding:8px 4px;font-size:15px;display:flex}.radio input{width:20px;height:20px;accent-color:var(--brand);margin:0}.radio.right{color:var(--success-ink);font-weight:700}.radio.wrong{color:var(--danger-ink);font-weight:700;text-decoration:line-through}.qfoot{justify-content:center;display:flex}.qfb{border-radius:4px;padding:10px 14px;font-size:14px}.qfb.ok{background:var(--success-soft);color:var(--success-ink)}.qfb.no{background:var(--danger-soft);color:var(--danger-ink)}.points{gap:10px;display:grid}.kp{grid-template-columns:26px minmax(0,1fr);align-items:start;gap:12px;font-size:15px;line-height:1.55;display:grid}.kp b{background:var(--chip-on);width:26px;height:26px;color:var(--chip-on-ink);border-radius:4px;place-items:center;font-size:13px;display:grid}.notes textarea{resize:vertical;border:1px solid var(--border);background:var(--card);border-radius:8px;width:100%;min-height:120px;padding:10px 14px;line-height:1.55}.notes textarea:focus{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);outline:none}.chapters{gap:2px;display:grid}.chapter{text-align:left;background:0 0;border:0;border-radius:4px;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:9px 10px;font-size:14px;display:grid}.chapter:hover:not(:disabled){background:var(--hover)}.chapter:disabled{opacity:.45;cursor:not-allowed}.chapter .num{color:var(--brand);font-size:12px}.chapter small{color:var(--muted);font-family:var(--mono);font-size:11px}.chapter.now{background:var(--chip-on);color:var(--chip-on-ink);font-weight:700}.article{gap:16px;max-width:760px;display:grid}.article .lead{color:var(--muted);margin:0;font-size:17px;line-height:1.6}.article h3{margin-top:8px;font-size:18px;font-weight:700}.article p{margin:0;font-size:15.5px;line-height:1.7}.article ul{gap:8px;margin:0;padding-left:22px;font-size:15.5px;line-height:1.6;display:grid}.callout{background:var(--info-soft);border-radius:4px;grid-template-columns:20px minmax(0,1fr);gap:10px;padding:12px 14px;font-size:14.5px;display:grid}.callout svg{width:20px;height:20px;color:var(--brand)}.callout.warn{background:var(--warning-soft)}.callout.warn svg{color:var(--warning-ink)}.mask{font-family:var(--mono);background:var(--field);border-radius:4px;padding:1px 6px}.table-wrap{border:1px solid var(--border);border-radius:4px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;background:var(--bg-soft);padding:11px 14px;font-size:12.5px;font-weight:600}td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 14px}tr:last-child td{border-bottom:0}.test-cover{border:1px solid var(--border);border-radius:4px;justify-items:start;gap:16px;padding:28px;display:grid}.test-cover .facts{flex-wrap:wrap;gap:28px;display:flex}.test-cover .facts div{display:grid}.test-cover .facts small{color:var(--muted);font-size:12px}.test-cover .facts b{font-size:18px}.qnav{align-items:center;gap:12px;display:flex}.qnav .bar{flex:1}.result{border:1px solid var(--border);border-radius:4px;grid-template-columns:120px minmax(0,1fr);align-items:center;gap:24px;padding:28px;display:grid}.result .ring{width:120px;height:120px;position:relative}.result .ring svg{width:120px;height:120px}.result .ring b{place-items:center;font-size:28px;font-weight:800;display:grid;position:absolute;inset:0}.result h2{font-size:22px;font-weight:700}.result p{color:var(--muted);margin:4px 0 0}.review{gap:8px;display:grid}.review-row{border:1px solid var(--border-soft);border-radius:4px;grid-template-columns:24px minmax(0,1fr);gap:10px;padding:12px 14px;font-size:14px;display:grid}.review-row .d{color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:grid}.review-row small{color:var(--muted);margin-top:3px;display:block}.ai-grid{grid-template-columns:minmax(0,1fr) 290px;align-items:start;gap:18px;display:grid}.chatbox{border:1px solid var(--border);border-radius:4px;grid-template-rows:auto minmax(0,1fr) auto;height:min(600px,68vh);display:grid;overflow:hidden}.chat-head{background:var(--card);border-bottom:1px solid #e2e8f0;align-items:center;gap:12px;padding:12px 16px;display:flex}.chat-head strong{color:var(--fg);display:block}.chat-head small{color:var(--muted);font-size:12px}.chat-head .right{align-items:center;gap:8px;margin-left:auto;display:flex}.online{background:var(--success);width:10px;height:10px;box-shadow:0 0 0 2px var(--card);border-radius:50%;position:absolute;bottom:0;right:0}.mode{background:var(--field);color:var(--muted);white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.mode.ai{background:var(--success-soft);color:var(--success-ink)}.mode.mock{background:var(--warning-soft);color:var(--warning-ink)}.msgs{background:var(--chat-bg);flex-direction:column;gap:6px;padding:16px;display:flex;overflow-y:auto}.sys{color:#fff;text-align:center;background:#0003;border-radius:10px;align-self:center;max-width:90%;padding:2px 10px 3px;font-size:12px}.sys.good{background:var(--success-soft);color:var(--success-ink);border-radius:4px;padding:6px 12px;font-weight:600}.sys.warn{background:var(--warning-soft);color:var(--warning-ink);border-radius:4px;padding:6px 12px}.row{align-items:flex-end;gap:8px;max-width:78%;display:flex}.row.me-msg{flex-direction:row-reverse;align-self:flex-end}.row .av{width:28px;height:28px;font-size:10px}.row.me-msg .av{display:none}.bubble{background:var(--bubble-other);box-shadow:var(--shadow-bubble);white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;color:var(--fg);border-radius:8px;padding:9px 12px;font-size:15px}.row.me-msg .bubble{background:var(--bubble-me)}.typing-dots{gap:4px;padding:4px 2px;display:inline-flex}.typing-dots i{background:var(--faint);border-radius:50%;width:6px;height:6px;animation:1.2s infinite blink}.typing-dots i:nth-child(2){animation-delay:.2s}.typing-dots i:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.3}30%{opacity:1}}.composer{border-top:1px solid var(--border);background:var(--card);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;padding:10px 12px;display:grid}.composer textarea{resize:none;border:1px solid var(--border);background:var(--card);border-radius:8px;width:100%;min-height:42px;max-height:120px;padding:10px 14px}.composer textarea:focus{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);outline:none}.send{background:var(--brand);color:#fff;border:0;border-radius:4px;place-items:center;width:42px;height:42px;display:grid}.send:disabled{background:var(--field);color:var(--faint);cursor:not-allowed}.send svg{width:20px;height:20px}.mission{border:1px solid var(--border);border-radius:4px;gap:12px;padding:16px;display:grid}.mission h3{font-size:15px;font-weight:700}.mission p{color:var(--muted);margin:0;font-size:13px}.check{color:var(--muted);grid-template-columns:22px minmax(0,1fr);align-items:center;gap:10px;font-size:13.5px;display:grid}.check i{width:22px;height:22px;box-shadow:inset 0 0 0 2px var(--border);color:#fff;border-radius:50%;place-items:center;display:grid}.check i svg{opacity:0;width:13px;height:13px}.check.on{color:var(--fg);font-weight:600}.check.on i{background:var(--success);box-shadow:none}.check.on i svg{opacity:1}.grade{border:1px solid var(--border);border-radius:4px;gap:14px;padding:22px;display:grid}.crit{border-top:1px solid var(--border);gap:8px;padding-top:12px;display:grid}.crit-top{grid-template-columns:150px minmax(0,1fr) 40px;align-items:center;gap:12px;display:grid}.quote{background:var(--bg-soft);border-left:3px solid var(--border);border-radius:4px;padding:8px 12px;font-size:13.5px}.chk{white-space:nowrap;margin-left:8px;font-size:11px;font-weight:700}.chk.ok{color:var(--success-ink)}.chk.miss{color:var(--warning-ink)}.crit p{color:var(--muted);margin:0;font-size:13px}.loading{color:var(--muted);text-align:center;border:1px solid var(--border);border-radius:4px;justify-items:center;gap:12px;padding:30px;display:grid}.spinner{border:3px solid var(--bg-secondary);border-top-color:var(--brand);border-radius:50%;width:34px;height:34px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.modal-scrim{z-index:30;background:#00000073;place-items:center;padding:16px;animation:.2s fadeIn;display:grid;position:absolute;inset:0}.modal{background:var(--card);width:min(460px,100%);box-shadow:var(--shadow-pop);text-align:center;border-radius:6px;justify-items:center;gap:14px;padding:26px;animation:.25s slideUp;display:grid}.modal h2{font-size:20px;font-weight:700}.modal p{color:var(--muted);margin:0}.modal svg.big{width:96px;height:96px}canvas.confetti{pointer-events:none;z-index:50;width:100%;height:100%;position:fixed;inset:0}.skill{border:1px solid var(--border-soft);border-radius:4px;gap:12px;padding:18px;display:grid}.skill-top{align-items:center;gap:12px;display:flex}.skill-top .ico{border-radius:50%;place-items:center;width:42px;height:42px;display:grid}.skill-top .ico svg{width:22px;height:22px}.skill-top b{font-size:16px;display:block}.skill-top small{color:var(--muted);font-size:12.5px}.lvl{border-radius:4px;margin-left:auto;padding:3px 8px;font-size:11px;font-weight:700}.steps3{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.steps3 i{background:var(--bg-secondary);border-radius:2px;height:8px}.steps3 i.on{background:var(--brand)}.skill .rec{color:var(--muted);font-size:13px}.cal{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:24px;display:grid}.month{border:1px solid var(--border);border-radius:4px;overflow:hidden}.month-head{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:12px 16px;display:flex}.month-head b{font-size:16px}.mgrid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.mgrid .dow{color:var(--muted);text-align:center;border-bottom:1px solid var(--border);background:var(--bg-soft);padding:8px;font-size:12px;font-weight:600}.mday{border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);align-content:start;gap:4px;min-height:92px;padding:6px;display:grid}.mday:nth-child(7n){border-right:0}.mday .d{color:var(--muted);border-radius:50%;place-items:center;width:24px;height:24px;font-size:12px;font-weight:600;display:grid}.mday.out .d{color:var(--faint);opacity:.5}.mday.today .d{background:var(--brand);color:#fff}.ev{color:#fff;text-overflow:ellipsis;white-space:nowrap;border-radius:3px;padding:2px 6px;font-size:11px;font-weight:600;overflow:hidden}.kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;display:grid}.kpi{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 12px;display:grid}.kpi .k{color:var(--muted);font-size:14px;font-weight:600}.kpi .v{font-variant-numeric:tabular-nums;font-size:36px;font-weight:700;line-height:1}.kpi .s{color:var(--muted);grid-column:1/-1;font-size:12px}.kpi .ico{border-radius:50%;grid-area:1/2/span 2;place-items:center;width:52px;height:52px;display:grid}.kpi .ico svg{width:26px;height:26px}.qa{gap:4px;display:grid}.qa button{text-align:left;background:0 0;border:0;border-radius:4px;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 6px;font-size:14px;display:grid}.qa button:hover{background:var(--hover)}.qa svg{width:20px;height:20px}.qa .arr{width:16px;height:16px;color:var(--muted)}.legend{color:var(--muted);flex-wrap:wrap;gap:12px;margin-left:auto;font-size:12px;display:flex}.legend span{align-items:center;gap:5px;display:inline-flex}.legend i{border-radius:3px;width:12px;height:12px;display:inline-block}.heat-wrap{overflow-x:auto}.heat{grid-template-columns:190px repeat(16,minmax(30px,1fr)) 110px;align-items:center;gap:4px;min-width:900px;display:grid}.heat .hd{color:var(--muted);text-align:center;font-size:10px;font-family:var(--mono);padding-bottom:4px}.heat .unit-hd{color:var(--muted);border-bottom:3px solid var(--c);text-transform:uppercase;padding:6px 0 2px;font-size:11px;font-weight:700}.heat .who{border-radius:4px;align-items:center;gap:10px;padding:4px 6px;font-size:13px;display:flex}.heat .who small{color:var(--muted);font-size:11px;display:block}.heat .who .av{width:30px;height:30px;font-size:11px}.cell{background:var(--bg-secondary);border-radius:3px;height:28px}.cell.d1{background:#9ee6d3}.cell.d2{background:#3ccfaa}.cell.d3{background:#00b894}.cell.cur{background:var(--brand)}.cell.late{background:var(--danger-soft);box-shadow:inset 0 0 0 2px var(--danger)}.heat .me-line{background:var(--chip-on)}.state{text-align:right;font-size:11.5px;font-weight:700}.state.ok{color:var(--success-ink)}.state.late{color:var(--danger-ink)}.state.stuck{color:var(--warning-ink)}.risk-row,.miss-row,.gh-row{border-top:1px solid var(--border-soft);gap:10px;padding:12px 0;display:grid}.risk-row:first-child,.miss-row:first-child,.gh-row:first-child{border-top:0}.risk-row{grid-template-columns:40px minmax(0,1fr) auto;align-items:center}.risk-row .av{width:40px;height:40px}.risk-row small,.miss-row small,.gh-row small{color:var(--muted);font-size:12.5px;display:block}.miss-row .wb{grid-template-columns:minmax(0,1fr) 46px;align-items:center;gap:10px;display:grid}.miss-row .bar>i{background:var(--danger)}.gh-row{grid-template-columns:40px minmax(0,1fr) auto auto;align-items:center}.gh-row .av{width:40px;height:40px}.score-chip{font-variant-numeric:tabular-nums;border-radius:4px;padding:4px 10px;font-size:15px;font-weight:800}@media (max-width:1100px){.grid-3,.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.cbody-wrap,.cal,.ai-grid,.catalog{grid-template-columns:1fr}.cats{display:none}.player{grid-template-columns:340px minmax(0,1fr)}}@media (max-width:767px){body{padding-block:8px}.topbar{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:0 8px}.search{display:none}.logo{font-size:16px}.logo span,.me-text,.me svg.chev,.ticon.hide-xs{display:none}.me{border:0;margin-left:0;padding:2px}.me .av{width:34px;height:34px}.body,.app.collapsed .body{grid-template-columns:1fr}.side{z-index:9;width:264px;animation:.25s ease-out slideIn;display:none;position:absolute;top:64px;bottom:0;left:0}.app.nav-open .side{display:flex}.app.collapsed .side{align-items:stretch}.app.collapsed .side-item{justify-content:flex-start;width:auto;height:auto;padding:11px 14px}.app.collapsed .side-item span,.app.collapsed .side-item .arr{display:initial}.page{gap:16px;padding:18px 16px 36px}.title-row h1{font-size:23px}.grid-2,.grid-3{grid-template-columns:1fr}.carousel{grid-template-columns:1fr;padding:0}.carousel .ccard:nth-child(n+2){display:none}.widget{padding:18px 16px}.lrow{grid-template-columns:88px minmax(0,1fr)}.lrow>:nth-child(3),.lrow>:nth-child(4){grid-column:2}.field{flex:1;min-width:0}.sort{margin-left:0}.chero{grid-template-columns:1fr;padding:24px 18px}.chero .img{display:none}.chero h1{font-size:24px}.cbody-wrap{padding:18px 16px 36px}.player,.app.outline-off .player{grid-template-columns:1fr}aside.outline{z-index:4;width:min(340px,88%);box-shadow:var(--shadow-pop);display:none;position:absolute;inset:0 auto 0 0}.app.outline-open aside.outline{display:grid}.stage-top{padding:0 10px}.stage-top .ham{display:grid}.stage-inner{padding:18px 16px 40px}.stage-inner h1{font-size:22px}.vbar{grid-template-columns:auto minmax(0,1fr) auto;gap:10px;padding:8px 10px}.vbar .speed,.vbar .skipb{display:none}.screen .person{width:30%}.slide{width:54%;top:28%;right:4%}.qcard,.test-cover,.result{padding:18px 16px}.result{text-align:center;grid-template-columns:1fr;justify-items:center}.crit-top{grid-template-columns:minmax(0,1fr) 40px}.crit-top .bar{grid-area:2/1/auto/-1}.kpi .v{font-size:30px}.kpi .ico{display:none}.row{max-width:88%}.mday{min-height:58px;padding:3px}.ev{height:6px;padding:0;font-size:0}.gh-row{grid-template-columns:40px minmax(0,1fr)}.gh-row>:nth-child(3),.gh-row>:nth-child(4){grid-column:2;justify-self:start}.tip{display:none}}.ed-tools{align-items:center;gap:8px;display:flex}.ed-tools .ticon{border:1px solid var(--border);width:40px;height:40px}.ed-tools .ticon svg{width:20px;height:20px}.addwrap{position:relative}.addmenu{z-index:20;align-items:flex-start;gap:6px;animation:.2s fadeIn;display:flex;position:absolute;top:calc(100% + 6px);left:0}.addcol{background:var(--card);border:1px solid var(--border);width:300px;box-shadow:var(--shadow-pop);border-radius:6px;padding:6px;display:grid}.addcol.sub{width:240px;margin-top:var(--subtop,0)}.additem{text-align:left;background:0 0;border:0;border-radius:4px;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:10px;display:grid}.additem:hover,.additem[aria-expanded=true]{background:var(--hover)}.additem svg{width:20px;height:20px}.additem b{font-size:14px;display:block}.additem small{color:var(--muted);font-size:12px}.additem .arr{width:16px;height:16px;color:var(--muted)}.addcol.sub .additem{grid-template-columns:24px minmax(0,1fr)}.ed-unit{text-align:left;width:100%;color:var(--fg);background:0 0;border:0;border-left:4px solid #0000;grid-template-columns:16px 20px minmax(0,1fr) auto 30px;align-items:center;gap:10px;padding:11px 10px 11px 12px;font-size:14px;display:grid;position:relative}.ed-unit:hover{background:var(--hover)}.ed-unit[aria-current=true]{background:var(--card);border-left-color:var(--brand-navy);font-weight:600}.ed-unit .grip{color:var(--faint);cursor:grab;place-items:center;display:grid}.ed-unit .grip svg,.ed-unit>svg{width:18px;height:18px}.ed-unit.drag-over{box-shadow:inset 0 3px 0 var(--brand)}.ed-unit.dragging{opacity:.4}.kebab{width:30px;height:30px;color:var(--muted);background:0 0;border:0;border-radius:4px;place-items:center;display:grid}.kebab:hover{background:var(--bg-secondary);color:var(--fg)}.kebab svg{width:18px;height:18px}.ctx{z-index:15;background:var(--card);border:1px solid var(--border);width:190px;box-shadow:var(--shadow-pop);border-radius:6px;padding:4px;animation:.15s fadeIn;display:grid;position:absolute;top:calc(100% - 4px);right:8px}.ctx button{text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.ctx button:hover{background:var(--hover)}.ctx button svg{width:16px;height:16px;color:var(--muted)}.ctx button.danger,.ctx button.danger svg{color:var(--danger-ink)}.chip-draft{background:var(--danger-soft);color:var(--danger-ink);white-space:nowrap;border-radius:4px;padding:2px 7px;font-size:11px;font-weight:700}.chip-pub{background:var(--success-soft);color:var(--success-ink);white-space:nowrap;border-radius:4px;padding:2px 7px;font-size:11px;font-weight:700}.o-empty{color:var(--muted);text-align:center;padding:26px 20px;font-size:13.5px}.ed-head{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.ed-head h1{font-size:26px}.ed-head .right{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.form{gap:18px;max-width:820px;display:grid}.fld{gap:6px;display:grid}.fld>span{color:var(--fg);font-size:13.5px;font-weight:600}.fld>small,.hint{color:var(--muted);font-size:12.5px}.in,.ta,.sel{border:1px solid var(--border);background:var(--card);width:100%;color:var(--fg);border-radius:8px;padding:10px 14px;transition:border-color .2s,box-shadow .2s}.in:focus,.ta:focus,.sel:focus{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);outline:none}.ta{resize:vertical;min-height:110px;line-height:1.55}.row2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.row3{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.tg{appearance:none;cursor:pointer;background:#cbd5e1;border-radius:99px;flex:none;width:40px;height:22px;margin:0;transition:background .2s;position:relative}.tg:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0003}.tg:checked{background:var(--brand)}.tg:checked:after{transform:translate(18px)}.tgrow{border-top:1px solid var(--border-soft);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 0;display:grid}.tgrow:first-child{border-top:0;padding-top:4px}.tgrow b{align-items:center;gap:8px;font-size:14.5px;display:flex}.tgrow b svg{width:18px;height:18px;color:var(--muted)}.tgrow small{color:var(--muted);margin-top:2px;font-size:12.5px;display:block}.tgrow .in,.tgrow .sel{width:130px}.swatches{flex-wrap:wrap;gap:10px;display:flex}.sw{background:0 0;border:2px solid #0000;border-radius:4px;width:86px;height:54px;padding:0;position:relative;overflow:hidden}.sw svg{width:100%;height:100%;position:absolute;inset:0}.sw[aria-pressed=true]{border-color:var(--brand);box-shadow:0 0 0 2px var(--accent-soft)}.uploader{border:2px dashed var(--border);text-align:center;color:var(--muted);border-radius:8px;justify-items:center;gap:8px;padding:22px;transition:border-color .2s;display:grid;position:relative}.uploader:hover{border-color:var(--brand)}.uploader svg{width:34px;height:34px;color:var(--brand)}.uploader input{opacity:0;cursor:pointer;position:absolute;inset:0}.uploader b{color:var(--fg)}.fileline{border:1px solid var(--border);border-radius:8px;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.fileline .ico{color:#fff;border-radius:4px;place-items:center;width:40px;height:40px;font-size:10px;font-weight:800;display:grid}.vprev{background:#000;border-radius:4px;width:100%;max-height:360px}.chap-row{grid-template-columns:90px minmax(0,1fr) 34px;align-items:center;gap:8px;display:grid}.ans-row{grid-template-columns:24px minmax(0,1fr) 34px;align-items:center;gap:10px;display:grid}.ans-row input[type=checkbox],.ans-row input[type=radio]{width:18px;height:18px;accent-color:var(--brand);margin:0}.qtypes{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:760px;display:grid}.qtype{aspect-ratio:1.45;border:1px solid var(--border);background:var(--card);text-align:center;border-radius:4px;align-content:center;place-items:center;gap:10px;max-width:100%;padding:10px;font-size:14px;font-weight:700;transition:border-color .2s,background .2s;display:grid}.qtype:hover{border-color:var(--brand);background:var(--accent-soft)}.qtype svg{width:26px;height:26px}.qtype.ai{border-color:#ff6b6b}.qtype small{color:var(--muted);font-size:11.5px;font-weight:500}.qlist{border:1px solid var(--border);border-radius:4px}.qrow{border-top:1px solid var(--border-soft);grid-template-columns:16px 28px minmax(0,1fr) auto 30px;align-items:center;gap:10px;padding:12px 10px 12px 12px;display:grid;position:relative}.qrow:first-child{border-top:0}.qrow .n{font-family:var(--mono);color:var(--muted);font-size:12px}.qrow .t{font-size:14px}.qrow .t small{color:var(--muted);margin-top:2px;font-size:12px;display:block}.qchip{background:var(--field);color:var(--muted);white-space:nowrap;border-radius:4px;padding:2px 7px;font-size:11px;font-weight:700}.drawer-scrim{z-index:25;background:#00000073;animation:.2s fadeIn;position:absolute;inset:0}.drawer{background:var(--card);z-index:26;width:min(600px,100%);box-shadow:var(--shadow-pop);grid-template-rows:auto auto minmax(0,1fr) auto;animation:.25s ease-out drawerIn;display:grid;position:absolute;top:0;bottom:0;right:0}@keyframes drawerIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}.drawer-head{align-items:center;gap:10px;padding:20px 24px 6px;display:flex}.drawer-head h2{font-size:22px;font-weight:700}.drawer-head .ticon{margin-left:auto}.drawer .tabs{padding:0 24px}.drawer-body{align-content:start;gap:16px;padding:18px 24px 24px;display:grid;overflow-y:auto}.drawer-foot{border-top:1px solid var(--border);gap:10px;padding:14px 24px;display:flex}.gen-item{border:1px solid var(--border);cursor:pointer;border-radius:6px;grid-template-columns:22px minmax(0,1fr);gap:10px;padding:12px;font-size:14px;display:grid}.gen-item input{width:18px;height:18px;accent-color:var(--brand);margin:2px 0 0}.gen-item ol{color:var(--muted);margin:6px 0 0;padding-left:18px;font-size:13px}.gen-item ol li.ok{color:var(--success-ink);font-weight:700}.set-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;display:grid}.order-row{border-top:1px solid var(--border-soft);grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 0;font-size:14px;display:grid}.order-row:first-child{border-top:0}.order-row .n{background:var(--chip-on);width:26px;height:26px;color:var(--chip-on-ink);border-radius:4px;place-items:center;font-size:12px;font-weight:800;display:grid}.mini-btns{gap:4px;display:flex}.mini-btns button{border:1px solid var(--border);background:var(--card);border-radius:4px;place-items:center;width:30px;height:30px;display:grid}.mini-btns button:disabled{opacity:.35;cursor:not-allowed}.mini-btns svg{width:14px;height:14px}.course-chips{flex-wrap:wrap;gap:6px;display:flex}.course-chips span{background:var(--field);border-radius:4px;padding:2px 8px;font-size:11.5px;font-weight:600}.check-line{border-top:1px solid var(--border-soft);cursor:pointer;align-items:center;gap:12px;padding:10px 0;font-size:14px;display:flex}.check-line:first-child{border-top:0}.check-line input{width:18px;height:18px;accent-color:var(--brand)}.check-line small{color:var(--muted);margin-left:auto;font-size:12px}.timer{font-family:var(--mono);background:var(--warning-soft);color:var(--warning-ink);border-radius:4px;padding:4px 10px;font-weight:700}.docbox{border:1px solid var(--border);border-radius:6px;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:16px;padding:18px;display:grid}.docbox .ico{color:#fff;border-radius:4px;place-items:center;width:64px;height:76px;font-weight:800;display:grid}@media (max-width:1100px){.set-grid{grid-template-columns:1fr}}@media (max-width:767px){.row2,.row3{grid-template-columns:1fr}.qtypes{grid-template-columns:repeat(2,minmax(0,1fr))}.addmenu{flex-direction:column}.addcol,.addcol.sub{width:min(300px,100vw - 60px);margin-top:0}.ed-head h1{font-size:21px}.docbox{grid-template-columns:48px minmax(0,1fr)}.docbox .btn{grid-column:1/-1}.player.editor aside.outline{width:100%;box-shadow:none;display:grid;position:static}.player.editor.has-unit aside.outline,.player.editor:not(.has-unit) .stage-wrap{display:none}.stage-inner>.chero:first-child{margin:-18px -16px 0!important}.stage-top .right .btn{padding:7px 10px;font-size:12.5px}}
:root{--font:var(--font-geist-sans), "Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono:var(--font-geist-mono), "Geist Mono", ui-monospace, "SFMono-Regular", Consolas, monospace}body{margin:0;padding:0}.app{border:0;border-radius:0}a.side-item,a.ticon,.menu a,.qa a,a.btn{color:inherit;text-decoration:none}.menu a{border-radius:4px;align-items:center;gap:10px;width:100%;padding:9px 10px;font-size:13.5px;display:flex}.menu a:hover{background:var(--hover)}.menu a svg{width:18px;height:18px;color:var(--muted)}.menu a.on{background:var(--chip-on);color:var(--chip-on-ink);font-weight:700}.menu a.on svg{color:var(--chip-on-ink)}.qa a{border-radius:4px;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 6px;font-size:14px;display:grid}.qa a:hover{background:var(--hover)}a.btn.primary{color:var(--brand-ink)}.widget-head h2 a{color:inherit;align-items:center;gap:6px;text-decoration:none;display:inline-flex}a.link{text-decoration:none}.empty span{font-size:13px}.notice-screen{place-items:center;height:100%;padding:16px;display:grid}.notice-screen .widget{text-align:center;justify-items:center;width:min(460px,100%);padding:32px 28px}.notice-screen .logo{justify-content:center}.notice-screen h1{font-size:20px;font-weight:700}.notice-screen p{color:var(--muted);margin:0}.notice-screen .request-id{font-family:var(--mono);color:var(--faint);font-size:11px}.coming-soon{max-width:52ch}.coming-soon p{margin:0}.kpi .v.kpi-empty{color:var(--muted);font-size:18px;font-weight:600;line-height:36px}
