:root{--bg:#0e0b14;--bg-2:#120e1a;--panel:#171320;--elevated:#1f1a2e;--border:#2a2440;--border-strong:#3a3355;--text:#f2eef7;--muted:#a79fb8;--faint:#6f6786;--magenta:#e11d74;--violet:#7c3aed;--success:#34d399;--danger:#fb7185;--warn:#f5b544;--grad:linear-gradient(135deg,var(--magenta) 0%,var(--violet) 100%);--grad-soft:linear-gradient(135deg,color-mix(in srgb,var(--magenta) 16%,transparent),color-mix(in srgb,var(--violet) 16%,transparent));--font-display:"Bricolage Grotesque Fallback",ui-sans-serif,system-ui,sans-serif;--font-sans:"Inter Fallback",ui-sans-serif,system-ui,-apple-system,sans-serif;--r-sm:8px;--r:12px;--r-lg:18px;--r-xl:26px;--shadow:0 1px 2px rgba(0,0,0,0.3),0 8px 24px -12px rgba(0,0,0,0.6);--shadow-lg:0 24px 60px -24px color-mix(in srgb,var(--violet) 45%,transparent),0 8px 24px -12px rgba(0,0,0,0.7);--ring:0 0 0 3px color-mix(in srgb,var(--violet) 45%,transparent);--aura:radial-gradient(900px 480px at 78% -8%,color-mix(in srgb,var(--violet) 22%,transparent),transparent 60%),radial-gradient(760px 420px at 12% 0%,color-mix(in srgb,var(--magenta) 16%,transparent),transparent 55%);--badge-accent-text:color-mix(in srgb,var(--magenta) 45%,#ffffff);--badge-warn-text:var(--warn);--badge-done-text:var(--success);--badge-danger-text:var(--danger);--badge-processing-text:color-mix(in srgb,var(--violet) 45%,#ffffff);color-scheme:dark;--step:8px;--maxw:1080px}@media (prefers-color-scheme:light){:root:not([data-theme]){--bg:#faf7fc;--bg-2:#f1ebf7;--panel:#ffffff;--elevated:#f4eff9;--border:#e7dff0;--border-strong:#d5c9e6;--text:#1c1626;--muted:#6b6280;--faint:#857b9c;--success:#0f9d6b;--danger:#e11d48;--warn:#b45309;--shadow:0 1px 2px rgba(20,12,36,0.05),0 8px 24px -12px rgba(20,12,36,0.14);--shadow-lg:0 24px 60px -24px color-mix(in srgb,var(--violet) 22%,transparent),0 10px 24px -14px rgba(20,12,36,0.16);--aura:radial-gradient(900px 480px at 78% -8%,color-mix(in srgb,var(--violet) 10%,transparent),transparent 60%),radial-gradient(760px 420px at 12% 0%,color-mix(in srgb,var(--magenta) 7%,transparent),transparent 55%);--badge-accent-text:color-mix(in srgb,var(--magenta) 80%,#000000);--badge-warn-text:color-mix(in srgb,var(--warn) 88%,#000000);--badge-done-text:color-mix(in srgb,var(--success) 78%,#000000);--badge-danger-text:color-mix(in srgb,var(--danger) 82%,#000000);--badge-processing-text:var(--violet);color-scheme:light}}:root[data-theme=light]{--bg:#faf7fc;--bg-2:#f1ebf7;--panel:#ffffff;--elevated:#f4eff9;--border:#e7dff0;--border-strong:#d5c9e6;--text:#1c1626;--muted:#6b6280;--faint:#857b9c;--success:#0f9d6b;--danger:#e11d48;--warn:#b45309;--shadow:0 1px 2px rgba(20,12,36,0.05),0 8px 24px -12px rgba(20,12,36,0.14);--shadow-lg:0 24px 60px -24px color-mix(in srgb,var(--violet) 22%,transparent),0 10px 24px -14px rgba(20,12,36,0.16);--aura:radial-gradient(900px 480px at 78% -8%,color-mix(in srgb,var(--violet) 10%,transparent),transparent 60%),radial-gradient(760px 420px at 12% 0%,color-mix(in srgb,var(--magenta) 7%,transparent),transparent 55%);--badge-accent-text:color-mix(in srgb,var(--magenta) 80%,#000000);--badge-warn-text:color-mix(in srgb,var(--warn) 88%,#000000);--badge-done-text:color-mix(in srgb,var(--success) 78%,#000000);--badge-danger-text:color-mix(in srgb,var(--danger) 82%,#000000);--badge-processing-text:var(--violet);color-scheme:light}:root{--font-display:var(--font-bricolage),"Bricolage Grotesque Fallback",ui-sans-serif,system-ui,sans-serif;--font-sans:var(--font-inter),ui-sans-serif,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-image:var(--aura);background-attachment:fixed;min-height:100vh}a{color:inherit;text-decoration:none}h1,h2,h3{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;line-height:1.08;margin:0}h1{font-size:clamp(28px,4vw,40px)}h2{font-size:clamp(22px,3vw,28px)}h3{font-size:18px;letter-spacing:-.01em}.muted{color:var(--muted)}.faint{color:var(--faint)}.eyebrow{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--magenta)}.container{max-width:var(--maxw);margin:0 auto;padding:40px 24px 80px}.container-wide{--maxw:1400px}.stack>*+*{margin-top:16px}.page-head{width:100%;max-width:1030px;margin-bottom:28px}.admin-section .page-head{max-width:none}.admin-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.admin-section-heading>.admin-section-action{align-self:flex-end}@media (min-width:1241px){.admin-section-heading:has(>.admin-section-action){min-height:96px}}.admin-section-description{margin-top:8px;max-width:78ch}@media (max-width:700px){.admin-section-heading{flex-direction:column;align-items:stretch;gap:14px}.admin-section-heading>.admin-section-action{align-self:flex-start}}.admin-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin:-8px 0 24px}.admin-tab{display:inline-flex;align-items:center;padding:10px 14px;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--muted);font-size:14px;font-weight:600;text-decoration:none}.admin-tab:focus-visible,.admin-tab:hover{color:var(--text)}.admin-tab.active{color:var(--text);border-bottom-color:var(--magenta)}.app-shell{display:grid;grid-template-columns:76px minmax(0,1fr);min-height:100vh}.app-content{position:relative;min-width:0}.app-bar{position:absolute;top:0;right:0;z-index:45;display:flex;align-items:center;gap:10px;padding:20px 24px;background:none;border:0}.app-bar .input{margin:0}@media (max-width:1240px){.app-content>.container{padding-top:76px}}.rail{display:flex;flex-direction:column;align-items:center;gap:22px;padding:18px 0 20px;border-right:1px solid var(--border);background:var(--panel)}.rail-mark{width:26px;height:26px;border-radius:8px;background:var(--grad);box-shadow:0 4px 14px -4px color-mix(in srgb,var(--magenta) 70%,transparent);flex-shrink:0;overflow:hidden}.rail-mark img{width:100%;height:100%;object-fit:contain;padding:3px;display:block}.brand-tile{--tile:40px;width:var(--tile);height:var(--tile);flex-shrink:0;display:grid;place-items:center;overflow:hidden;border-radius:calc(var(--tile) * .3);background:var(--grad);box-shadow:0 10px 26px -12px color-mix(in srgb,var(--violet) 70%,transparent)}.brand-tile img{width:100%;height:100%;object-fit:contain;padding:12%;display:block}.brand-tile-lg{--tile:88px}.auth-brand-tile{--tile:48px;margin-bottom:14px}.brand-tile-initial{color:#fff;font-family:var(--font-display);font-weight:700;font-size:calc(var(--tile) * .4)}.settings-head{display:grid;grid-gap:6px;gap:6px;max-width:980px}.settings{max-width:980px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg)}.settings-row{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);grid-gap:32px;gap:32px;padding:28px}.settings-row+.settings-row{border-top:1px solid var(--border)}.settings-info{display:grid;grid-gap:6px;gap:6px;align-content:start}.settings-info h2{font-size:18px}.settings-info p{color:var(--muted)}.settings-info .settings-applies{font-size:12px;color:var(--faint)}.settings-body{display:grid;grid-gap:18px;gap:18px;min-width:0;align-content:start}.settings-pair{display:grid;grid-template-columns:180px minmax(0,1fr);grid-gap:12px;gap:12px}.settings-pair .input{margin:0}.settings-savebar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:flex-end;padding-top:14px;border-top:1px dashed var(--border)}.settings-savebar>span{margin-right:auto;color:var(--muted);font-size:13px}.settings-example{display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:var(--r);background:color-mix(in srgb,var(--violet) 8%,var(--panel));border:1px solid color-mix(in srgb,var(--violet) 22%,var(--border))}.settings-example svg{color:var(--violet);flex-shrink:0}.segmented{display:inline-flex;flex-wrap:wrap;padding:4px;gap:4px;border-radius:999px;background:var(--elevated);border:1px solid var(--border)}.segmented button{border:0;background:none;padding:7px 14px;border-radius:999px;cursor:pointer;font:inherit;font-weight:500;color:var(--muted)}.segmented button[aria-pressed=true]{background:var(--panel);color:var(--text);box-shadow:var(--shadow)}.segmented button:disabled{cursor:default}.logo-main{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.logo-meta{display:grid;grid-gap:10px;gap:10px;min-width:0;flex:1 1}.logo-state{font-weight:600}.logo-state span{font-weight:400;color:var(--muted)}.logo-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.logo-actions label.btn{cursor:pointer}.logo-actions input[type=file]:focus-visible+label.btn{box-shadow:var(--ring)}.btn.quiet{border-color:transparent;background:none;color:var(--muted)}.btn.quiet:hover{color:var(--text);background:var(--elevated)}.logo-where{display:grid;grid-gap:8px;gap:8px}.logo-where-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.logo-spot{border:1px solid var(--border);border-radius:var(--r);background:var(--bg-2);padding:12px;display:grid;grid-gap:10px;gap:10px;min-width:0}.logo-spot b{font-size:12px;font-weight:600;color:var(--muted)}.logo-spot-stage{height:86px;border-radius:10px;background:var(--bg);border:1px solid var(--border);position:relative;overflow:hidden}.spot-tile-xs{--tile:16px;box-shadow:none}.spot-tile-sm{--tile:18px;box-shadow:none}.spot-tile-md{--tile:30px;box-shadow:none}.spot-rail{position:absolute;inset:0 auto 0 0;width:34px;border-right:1px solid var(--border);display:grid;justify-items:center;align-content:start;grid-gap:8px;gap:8px;padding-top:10px}.spot-rail i{width:12px;height:12px;border-radius:4px;background:var(--elevated);display:block}.spot-login{position:absolute;inset:10px 14px;border-radius:8px;background:var(--panel);border:1px solid var(--border);display:grid;align-content:center;justify-items:start;grid-gap:3px;gap:3px;padding:0 12px;min-width:0}.spot-login small{font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--magenta);font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spot-login span{font-family:var(--font-display);font-weight:700;font-size:12px}.spot-welcome{position:absolute;inset:0;display:grid;place-items:center}.spot-welcome svg{position:absolute;width:56px;height:56px;transform:rotate(-90deg)}.spot-welcome .track{fill:none;stroke:color-mix(in srgb,var(--violet) 18%,transparent);stroke-width:9}.spot-welcome .bar{fill:none;stroke:var(--violet);stroke-width:9;stroke-linecap:round;stroke-dasharray:326.7;stroke-dashoffset:217.8}.settings-switch-row{display:flex;gap:14px;align-items:center}.settings-switch{width:44px;height:26px;border-radius:999px;border:0;background:var(--border-strong);position:relative;cursor:pointer;flex-shrink:0;transition:background .2s}.settings-switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 2px rgba(0,0,0,.25)}.settings-switch[aria-checked=true]{background:var(--grad)}.settings-switch[aria-checked=true]:after{transform:translateX(18px)}.settings-switch:disabled{cursor:not-allowed;opacity:.55}.settings-provider{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px 14px;border-radius:var(--r);border:1px solid var(--border);background:var(--elevated)}.settings-provider small{margin-left:auto;color:var(--faint);font-size:12px}.settings-dot{width:8px;height:8px;border-radius:50%;background:var(--faint)}.settings-dot.ok{background:var(--success)}@media (max-width:860px){.settings-row{gap:16px;padding:22px 18px}.logo-where-grid,.settings-pair,.settings-row{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.settings-switch,.settings-switch:after{transition:none}}.rail-items{width:100%}.rail-item,.rail-items{display:flex;flex-direction:column;align-items:center;gap:4px}.rail-item{width:60px;padding:9px 2px 7px;border-radius:var(--r);color:var(--muted);text-decoration:none;transition:background .15s ease,color .15s ease}.rail-item:hover{background:var(--elevated);color:var(--text)}.rail-item.active{background:var(--grad-soft);color:var(--text)}.rail-item.active .rail-ico{color:var(--magenta)}.rail-ico{display:inline-flex}.rail-label{font-size:10px;font-weight:600;letter-spacing:.01em;text-align:center}.rail-item.soon{opacity:.45;cursor:default}.rail-item.soon:hover{background:none;color:var(--muted)}.rail-item.soon .rail-ico{position:relative}.rail-item.soon .rail-ico:after{content:"";position:absolute;top:-1px;right:-3px;width:5px;height:5px;border-radius:50%;background:var(--warn)}.profile-wrap{position:relative;display:inline-flex}.profile-btn{border:0;cursor:pointer;padding:0}.profile-menu{position:absolute;top:calc(100% + 10px);right:0;width:190px;padding:6px;display:flex;flex-direction:column;gap:2px;z-index:50;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-lg)}.profile-menu form{display:contents}.menu-row{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:var(--r-sm);background:none;color:var(--text);font:inherit;font-size:13.5px;text-align:left;cursor:pointer;text-decoration:none}.menu-row:hover{background:var(--elevated)}.menu-ico{display:inline-flex;color:var(--muted)}@media (max-width:760px){.app-shell{grid-template-columns:1fr}.rail{position:fixed;left:0;right:0;bottom:0;z-index:60;flex-direction:row;align-items:center;gap:0;padding:6px 8px;border-right:0;border-top:1px solid var(--border)}.rail-mark{display:none}.rail-items{flex-direction:row;justify-content:space-around;gap:2px}.app-content{padding-bottom:78px}.app-bar{position:static;justify-content:flex-end;padding:12px 16px}.app-content>.container{padding-top:8px}}.dash{display:flex;flex-direction:column;gap:22px}.dash-split{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-gap:22px;gap:22px;align-items:start}.resume{display:grid;grid-template-columns:280px minmax(0,1fr);background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);text-decoration:none;color:inherit}.resume:hover{border-color:var(--border-strong);box-shadow:var(--shadow-lg)}.resume-media{position:relative;background:var(--grad-soft);display:grid;place-items:center;border-right:1px solid var(--border);min-height:168px}.resume-play{width:54px;height:54px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;box-shadow:0 10px 26px -10px color-mix(in srgb,var(--magenta) 80%,transparent)}.resume-body{padding:20px 22px;display:flex;flex-direction:column;gap:8px}.row-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--panel);text-decoration:none;color:inherit}.row-item:hover{border-color:var(--border-strong)}.row-ico{display:inline-flex;color:var(--muted);flex-shrink:0}.row-main{flex:1 1;min-width:0}.row-title{font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-sub{font-size:12px;color:var(--muted)}.dash-list{display:flex;flex-direction:column;gap:8px}.dash-empty{padding:18px 4px;text-align:center;color:var(--muted);font-size:13.5px}.uptodate{display:grid;justify-items:center;text-align:center;grid-gap:8px;gap:8px;padding:4px 2px 2px}.uptodate strong{font-family:var(--font-display);font-size:17px;font-weight:600}.uptodate p{margin:0;color:var(--muted);font-size:14px;max-width:32ch}.uptodate-ill{width:168px;height:132px;max-width:100%}.uptodate-float{animation:uptodate-float 4.5s ease-in-out infinite}.uptodate-float,.uptodate-twinkle{transform-box:fill-box;transform-origin:center}.uptodate-twinkle{animation:uptodate-twinkle 2.6s ease-in-out infinite}.uptodate-twinkle.d2{animation-delay:.9s}.uptodate-twinkle.d3{animation-delay:1.7s}@keyframes uptodate-float{50%{transform:translateY(-5px)}}@keyframes uptodate-twinkle{0%,to{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}@media (prefers-reduced-motion:reduce){.uptodate-float,.uptodate-twinkle{animation:none}}.nextup{display:flex;align-items:center;gap:12px;width:100%;margin-top:6px;padding:11px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--elevated);color:inherit;text-decoration:none;text-align:left}.nextup:hover{border-color:var(--border-strong)}.nextup-when{flex:none;width:46px;padding:4px 0;text-align:center;border:1px solid var(--border);border-radius:10px;background:var(--panel)}.nextup-when span{display:block;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--badge-accent-text)}.nextup-when b{display:block;font-family:var(--font-display);font-size:18px;line-height:1.1}.nextup-txt{display:grid;min-width:0}.nextup-title{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nextup-txt small{font-size:12.5px;color:var(--muted)}.course-wide{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}.course-wide-top{display:grid;grid-template-columns:220px minmax(0,1fr)}.course-wide-cover{position:relative;display:grid;place-items:center;min-height:170px;padding:22px;background:var(--grad-soft);border-right:1px solid var(--border)}.course-wide-cover .badge{position:absolute;top:12px;left:12px}.course-wide-ring{width:112px;height:112px}.course-wide-ring .track{fill:none;stroke:var(--border);stroke-width:10}.course-wide-ring .fill{fill:none;stroke:url(#course-wide-grad);stroke-width:10;stroke-linecap:round}.course-wide-ring .pct{font-family:var(--font-display);font-weight:700;font-size:20px;fill:var(--text)}.course-wide-ring .sub{font-size:9px;font-weight:500;letter-spacing:.08em;fill:var(--muted)}.course-wide-body{padding:20px 22px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0}.course-wide-body h3{font-size:22px;margin:0}.course-wide-body p{margin:0;color:var(--muted)}.course-wide-body .btn{margin-top:4px}.month-strip{border-top:1px solid var(--border);padding:16px 22px 20px;display:grid;grid-gap:10px;gap:10px}.month-strip-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.month-days{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(26px,1fr));grid-gap:5px;gap:5px}.month-day{position:relative;aspect-ratio:1;max-width:100%;display:grid;place-items:center;border-radius:7px;font-size:11px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;border:1px solid var(--border);background:var(--bg-2);color:var(--faint)}.month-day.done{background:var(--grad);border-color:transparent;color:#fff}.month-day.open{background:var(--panel);border-color:var(--border-strong);color:var(--text)}.month-day.next{background:var(--panel);border:1.5px dashed var(--violet);color:var(--violet)}.month-day.exam:not(.done){border-style:dashed}.month-day.locked{background:color-mix(in srgb,var(--warn) 12%,var(--panel));border:1.5px solid color-mix(in srgb,var(--warn) 60%,transparent);color:var(--badge-warn-text)}.month-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--muted)}.month-legend span{display:inline-flex;align-items:center;gap:6px}.month-legend .month-day{width:11px;height:11px;border-radius:3px;aspect-ratio:auto}@media (max-width:620px){.course-wide-top{grid-template-columns:1fr}.course-wide-cover{border-right:0;border-bottom:1px solid var(--border);min-height:140px}}@media (max-width:1100px){.dash-split{grid-template-columns:1fr}}@media (max-width:620px){.resume{grid-template-columns:1fr}.resume-media{border-right:0;border-bottom:1px solid var(--border);min-height:130px}}.header{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;justify-content:space-between;gap:16px;padding:14px 24px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand,.header{align-items:center}.brand{font-family:var(--font-display);font-weight:800;font-size:19px;letter-spacing:-.02em;display:inline-flex;gap:9px}.brand .mark{width:26px;height:26px;border-radius:8px;background:var(--grad);box-shadow:0 4px 14px -4px color-mix(in srgb,var(--magenta) 70%,transparent);display:inline-block}.brand span{color:var(--muted);font-weight:500}.nav-right{display:flex;align-items:center;gap:12px}.nav-link{color:var(--muted);font-weight:500;font-size:14px;transition:color .15s}.nav-link:hover{color:var(--text)}.avatar{display:grid;place-items:center;font-size:13px;color:white;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn{--btn-pad:11px 18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:var(--btn-pad);border:1px solid transparent;border-radius:var(--r);background:var(--grad);color:white;font:inherit;font-weight:600;font-size:14px;cursor:pointer;transition:transform .12s ease,box-shadow .2s ease,opacity .15s;box-shadow:0 6px 18px -8px color-mix(in srgb,var(--magenta) 70%,transparent)}.btn:hover{transform:translateY(-1px);box-shadow:0 12px 26px -10px color-mix(in srgb,var(--magenta) 75%,transparent)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.btn.ghost{background:var(--elevated);border-color:var(--border);color:var(--text);box-shadow:none}.btn.ghost:hover{border-color:var(--border-strong);background:color-mix(in srgb,var(--elevated) 70%,var(--violet) 12%)}.btn.sm{padding:6px 12px;font-size:13px;border-radius:var(--r-sm)}.btn.block{width:100%}.field{display:block;margin-bottom:14px}.label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:6px}.input,select.input,textarea.input{width:100%;padding:11px 13px;margin-bottom:12px;border-radius:var(--r);border:1px solid var(--border);background:var(--bg-2);color:var(--text);font:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.field .input{margin-bottom:0}.input::placeholder{color:var(--faint)}.input:focus,select.input:focus{outline:none;border-color:var(--violet);box-shadow:var(--ring)}.password-input{position:relative}.password-input .input{padding-right:48px}.password-toggle{position:absolute;top:6px;right:6px;display:grid;width:34px;height:34px;place-items:center;padding:0;border:0;border-radius:var(--r-sm);background:transparent;color:var(--muted);cursor:pointer}.password-toggle:hover{color:var(--text)}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));grid-gap:20px;gap:20px}.card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;transition:transform .16s ease,border-color .16s ease,box-shadow .2s ease}.card:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow-lg)}.card-media{aspect-ratio:16/9;background:var(--grad-soft);position:relative;display:grid;place-items:center;border-bottom:1px solid var(--border)}.card-media .glyph{font-family:var(--font-display);font-weight:800;font-size:46px;color:color-mix(in srgb,var(--text) 22%,transparent);letter-spacing:-.03em}.card-media .chip{position:absolute;top:12px;left:12px}.card-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1 1}.card-body h3{font-size:17px}.card-body p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.5}.card-foot{margin-top:auto;padding-top:12px}.progress{height:7px;border-radius:999px;background:var(--elevated);overflow:hidden}.progress>i{display:block;height:100%;border-radius:999px;background:var(--grad);transition:width .4s ease}.progress-label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:6px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;letter-spacing:.01em;padding:3px 9px;border-radius:999px;border:1px solid var(--border-strong);color:var(--muted);background:color-mix(in srgb,var(--panel) 60%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);text-transform:none}.badge.done{color:var(--badge-done-text);border-color:color-mix(in srgb,var(--success) 45%,transparent)}.badge.processing{color:var(--badge-processing-text);border-color:color-mix(in srgb,var(--violet) 45%,transparent)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.badge.accent{color:var(--badge-accent-text);border-color:color-mix(in srgb,var(--magenta) 55%,transparent);background:color-mix(in srgb,var(--magenta) 12%,transparent)}.choice-group{border:0;padding:0;margin:14px 0 0}.choice-row{display:flex;gap:10px;flex-wrap:wrap}.choice-card{flex:1 1 180px;display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg-2);cursor:pointer}.choice-card.on{border-color:var(--violet);background:color-mix(in srgb,var(--violet) 12%,transparent)}.choice-card input{margin-top:3px;accent-color:var(--violet)}.choice-card>span{display:flex;flex-direction:column;gap:2px;font-size:14px}.choice-card .muted{font-size:12.5px;line-height:1.45}.module{margin-top:26px}.module-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.module-head h3{font-size:16px}select.input{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a79fb8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6l6 -6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding-right:38px;cursor:pointer}.search-field{position:relative}.search-field>svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.search-field .input{padding-left:38px;width:100%;margin-bottom:0}.btn{column-gap:7px}.btn svg,.link-btn svg,.module-toggle svg{flex-shrink:0;vertical-align:middle}.module-toggle .chev{display:inline-flex;align-items:center}.empty .emoji{color:var(--muted)}.course-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px;padding:10px 12px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg)}.toolbar-spacer{flex:1 1}.input.sm{width:auto;padding:6px 12px;font-size:13px;margin-bottom:0;border-radius:var(--r-sm)}select.input.sm{padding-right:32px}.module-card{margin-top:22px;padding:16px 18px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);scroll-margin-top:88px}.module-card .module-head{align-items:center;margin-bottom:8px}.module-editor{flex:1 1;min-width:0}.module-card .module-head:has(.module-editor>form){flex-wrap:wrap;align-items:flex-start}.module-card .module-head:has(.module-editor>form) .module-editor{order:2;flex-basis:100%}.module-toggle{display:inline-flex;align-items:center;gap:8px;background:none;border:0;color:var(--text);cursor:pointer;padding:4px 6px;border-radius:var(--r-sm);font:inherit}.module-toggle .chev{display:inline-block;transition:transform .15s ease;transform:rotate(-90deg);color:var(--muted)}.module-toggle .chev.open{transform:rotate(0deg)}.module-n{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.lesson-card{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-top:8px;background:var(--elevated,rgba(255,255,255,.03));border:1px solid var(--border);border-radius:var(--r)}.lesson-card.dragging{opacity:.5;border-style:dashed}.lesson-row-main{display:flex;align-items:center;gap:10px;flex:1 1;min-width:0;flex-wrap:wrap}.drag-handle{cursor:-webkit-grab;cursor:grab;color:var(--muted);-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:15px;line-height:1;padding:4px 2px}.drag-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.lesson-type-icon{font-size:14px;opacity:.85}.btn.danger{border-color:rgba(248,113,113,.4);color:#f87171}.btn.danger:hover{border-color:rgba(248,113,113,.7);background:rgba(248,113,113,.08)}.btn.danger-fill{background:#dc2626;border-color:#dc2626;color:#fff}.btn.danger-fill:hover{background:#b91c1c;border-color:#b91c1c}.btn.ghost.quiz{border-color:color-mix(in srgb,var(--violet) 45%,transparent);color:var(--violet);background:color-mix(in srgb,var(--violet) 8%,transparent)}.btn.ghost.quiz:hover{border-color:var(--violet);background:color-mix(in srgb,var(--violet) 14%,transparent)}.modal-overlay{position:fixed;inset:0;z-index:120;background:rgba(10,6,16,.72);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:100%;max-width:460px;padding:22px 24px;text-align:left;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}.modal.wide{max-width:560px;max-height:calc(100vh - 40px);overflow-y:auto}.role-change-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.role-change-modal-head h3{margin:0;font-size:22px}.icon-btn{display:inline-grid;place-items:center;flex:0 0 auto;width:32px;height:32px;border:1px solid var(--border);border-radius:var(--r-sm);background:none;color:var(--muted);cursor:pointer}.icon-btn:hover{color:var(--text);background:var(--elevated)}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.role-change-person{display:flex;align-items:center;gap:10px;margin:18px 0}.role-change-person>span:last-child{display:flex;flex-direction:column;gap:2px}.role-change-current{display:flex;align-items:center;gap:9px;margin-bottom:18px}.role-change-summary{display:flex;align-items:center;gap:10px;margin:4px 0 16px;padding:12px;background:var(--elevated);border:1px solid var(--border);border-radius:var(--r-sm)}.role-change-summary>span{display:flex;flex-direction:column;gap:5px;flex:1 1;min-width:0}.role-change-summary .badge{align-self:flex-start}.role-change-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.role-change-repair{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.role-change-repair p{margin:0}.role-cell-stack{display:inline-flex;flex-direction:column;align-items:flex-start;gap:5px}.role-grants-note{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);white-space:nowrap}.role-grants-note svg{color:var(--faint)}.program-names{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.program-more{font-size:11.5px;font-weight:600;color:var(--muted);cursor:default;padding:1px 7px;border:1px solid var(--border-strong);border-radius:999px}.row-menu,.user-row-actions{position:relative;display:inline-flex;justify-content:flex-end}.row-menu-trigger,.user-row-actions-trigger{display:inline-grid;place-items:center;width:32px;height:32px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--muted);cursor:pointer}.row-menu-trigger:focus-visible,.row-menu-trigger:hover,.user-row-actions-trigger:focus-visible,.user-row-actions-trigger:hover{color:var(--text);background:var(--elevated);border-color:var(--border-strong)}.row-menu-trigger:focus-visible,.user-row-actions-trigger:focus-visible{outline:2px solid var(--violet);outline-offset:2px}.row-menu-panel,.user-row-actions-menu{position:fixed;z-index:130;min-width:230px;padding:5px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-lg)}.row-menu-panel .menu-row,.user-row-actions-menu .menu-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:9px 10px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}.row-menu-panel .menu-row:focus-visible,.row-menu-panel .menu-row:hover:not(:disabled),.user-row-actions-menu .menu-row:focus-visible,.user-row-actions-menu .menu-row:hover:not(:disabled){background:var(--elevated)}.row-menu-panel .menu-row:focus-visible,.user-row-actions-menu .menu-row:focus-visible{outline:2px solid var(--violet);outline-offset:-2px}.row-menu-panel .menu-danger,.user-row-actions-menu .menu-danger{color:var(--danger)}.user-row-actions-menu .menu-row:disabled{color:var(--muted);cursor:not-allowed}.row-menu-panel{z-index:110}.menu-form{display:contents}.menu-separator{display:block;height:1px;margin:5px 4px;background:color-mix(in srgb,var(--border-strong) 65%,var(--muted) 35%)}.user-row-actions-menu .menu-row-stacked{flex-direction:column;align-items:flex-start;gap:2px}.menu-item-note{color:var(--muted);font-size:11.5px;line-height:1.35;text-align:left}.user-actions-cell{width:52px;padding-left:8px;padding-right:8px;text-align:right}.program-access-description,.program-access-empty{margin:0 0 16px;font-size:13.5px}.program-access-list{list-style:none;margin:0 0 18px;padding:0;display:grid;grid-gap:8px;gap:8px}.program-access-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-sm)}.program-access-add-row{display:flex;gap:8px;align-items:center}.program-access-add-row .input{margin-bottom:0}.scoped-access-group{margin-bottom:14px}.scoped-access-group-title{margin:0 0 8px;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.scoped-access-group .program-access-list{margin-bottom:0}.scoped-access-tier-hint{margin:-4px 0 14px;font-size:12.5px}.suspend-consequences{display:grid;grid-gap:8px;gap:8px;margin:18px 0;padding-left:20px;color:var(--text)}.suspend-consequences li::marker{color:var(--muted)}.success-note,.warn-note{padding:11px 13px;border-radius:var(--r-sm);font-size:13.5px}.warn-note{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent)}.success-note{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;color:var(--success);background:color-mix(in srgb,var(--success) 12%,transparent);border:1px solid color-mix(in srgb,var(--success) 35%,transparent)}.toast-region{position:fixed;right:20px;bottom:20px;z-index:140;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast-note{margin:0;max-width:min(360px,calc(100vw - 40px));padding:12px 14px;border-radius:var(--r-sm);font-size:13.5px;line-height:1.45;color:var(--success);background:color-mix(in srgb,var(--success) 14%,var(--panel));border:1px solid color-mix(in srgb,var(--success) 45%,transparent);box-shadow:var(--shadow-lg);animation:toast-in .16s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.toast-note{animation:none}}@media (max-width:760px){.toast-region{left:12px;right:12px;bottom:94px}.toast-note{max-width:none}}.access-filters,.offer-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:24px 0}.access-filters .access-search-input{flex:1 1 260px;min-width:min(100%,260px)}.access-filters select.input{width:auto}.access-filters .input{margin:0}.access-filter-note{margin-top:20px}.package-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(265px,1fr));grid-gap:16px;gap:16px}.package-card{display:flex;flex-direction:column;min-height:190px;padding:18px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow)}.package-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.package-card-head h2{margin:5px 0 0;font-size:20px}.package-stats{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:auto;padding-top:20px;color:var(--muted);font-size:13px}.package-stats span{display:inline-flex;align-items:center;gap:4px}.access-detail-actions,.access-dialog-actions,.package-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.package-card-actions{margin-top:16px}.access-detail-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;max-width:none}.access-detail-head h1{margin-bottom:0}.access-detail-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.9fr);grid-gap:18px;gap:18px;margin-top:26px;align-items:start}.access-side-panels{gap:18px}.access-holders-panel h2,.access-side-panels h2{display:flex;align-items:center;gap:8px;margin:0;font-size:17px}.section-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px;flex-wrap:wrap}.access-search-wrap{position:relative;margin-bottom:16px}.access-search-wrap>svg{position:absolute;top:12px;left:12px;color:var(--muted)}.access-search-wrap .input{margin:0;padding-left:36px}.access-candidate-list,.holder-list,.simple-access-list{display:grid;grid-gap:8px;gap:8px;list-style:none;margin:0;padding:0}.access-candidate,.access-course-row,.holder-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.access-course-row:last-child,.holder-row:last-child{border-bottom:0}.access-name-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}@media (max-width:600px){.access-name-row{grid-template-columns:1fr}}.access-candidate-info,.holder-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1}.holder-purchase-note{max-width:160px;color:var(--muted);font-size:12px;text-align:right}.source-badge{display:inline-flex;align-items:center;padding:3px 8px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-size:11px;white-space:nowrap}.source-badge.manual{color:var(--violet);border-color:color-mix(in srgb,var(--violet) 38%,var(--border))}.source-badge.group{color:var(--magenta);border-color:color-mix(in srgb,var(--magenta) 38%,var(--border))}.source-badge.offer{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 38%,var(--border))}.simple-access-list li{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-bottom:1px solid var(--border)}.simple-access-list li:last-child{border-bottom:0}.access-pagination{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:16px}.access-pagination .btn+.btn{margin-left:6px}.group-preview{margin-top:14px;padding:12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--elevated)}.group-preview ul{max-height:180px;overflow-y:auto;margin:8px 0 0;padding-left:18px}.access-course-picker,.access-fieldset{margin:18px 0 0;padding:0;border:0}.access-check-row{display:flex;align-items:flex-start;gap:9px;padding:8px 0}.access-check-row span{display:flex;flex-direction:column;gap:2px}.offer-toolbar{justify-content:space-between}.offer-table td>div,.offer-table td>span{display:flex;flex-direction:column;gap:3px}.offer-table td{vertical-align:top}.offer-table .badge{align-self:flex-start;margin-top:4px}.offer-package-list span,.offer-ref-list span{color:var(--muted);font-size:13px}.offer-actions{white-space:nowrap}.offer-edit-row,.offer-link-row{display:grid;grid-template-columns:110px 1fr 34px;grid-gap:8px;gap:8px;align-items:center;margin:8px 0}.offer-link-row{grid-template-columns:minmax(120px,1fr) 150px 90px 34px}.offer-edit-row .input,.offer-link-row .input{margin:0}.days-input{min-width:0}@media (max-width:800px){.access-detail-head{align-items:flex-start;flex-direction:column}.access-detail-grid{grid-template-columns:1fr}.offer-table{min-width:760px}}.role-updated-row td{background:var(--elevated)}.add-lesson.bare{background:none;border:none;padding:0}.add-lesson-toggle{display:block;width:100%;margin-top:12px;padding:10px;background:none;border:1px dashed var(--border);border-radius:var(--r);color:var(--muted);cursor:pointer;font:inherit;font-size:13.5px;transition:border-color .15s ease,color .15s ease}.add-lesson-toggle:hover{border-color:var(--muted);color:var(--text)}.course-rail{display:flex;flex-direction:column;gap:14px;margin-top:22px;max-height:calc(100vh - 108px)}.course-rail .outline{display:flex;flex-direction:column;min-height:0}.rail-list{flex:1 1;min-height:0;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:2px}.mrail-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:var(--r-sm);background:none;color:var(--muted);font:inherit;font-size:13.5px;text-align:left;cursor:pointer;transition:background .12s ease,color .12s ease}.mrail-item.active,.mrail-item:hover{background:var(--elevated);color:var(--text)}.mrail-item.active{font-weight:600}.rail-n{display:inline-grid;place-items:center;width:22px;height:22px;flex-shrink:0;border-radius:6px;background:var(--elevated);border:1px solid var(--border);font-size:11px;font-weight:700;color:var(--muted)}.mrail-item.active .rail-n{background:var(--grad);border-color:transparent;color:#fff}.rail-title{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail-date{font-size:11.5px;color:var(--faint);white-space:nowrap}.rail-foot{padding:10px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--faint)}.rail-new{flex-shrink:0;padding:16px 18px}.rail-new>.eyebrow{display:block;margin-bottom:12px}@media (max-width:980px){.course-rail{max-height:none}.rail-list{max-height:320px}}.rt{border:1px solid var(--border);border-radius:var(--r);background:var(--bg-2);margin-bottom:12px;overflow:hidden}.rt:focus-within{border-color:var(--violet);box-shadow:var(--ring)}.rt-toolbar{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:6px 8px;border-bottom:1px solid var(--border);background:var(--panel)}.rt-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:1px solid transparent;border-radius:var(--r-sm);background:none;color:var(--muted);cursor:pointer;transition:background .12s ease,color .12s ease}.rt-btn:hover:not(:disabled){background:var(--elevated);color:var(--text)}.rt-btn.on{background:var(--grad-soft);color:var(--text);border-color:color-mix(in srgb,var(--violet) 40%,transparent)}.rt-btn:disabled{opacity:.4;cursor:default}.rt-sep{width:1px;height:18px;margin:0 4px;background:var(--border)}.rt-spacer{flex:1 1}.rt-linkbar{display:flex;gap:8px;align-items:center;padding:8px;border-bottom:1px solid var(--border);background:var(--panel)}.rt-linkbar .input{margin-bottom:0}.rt-body{position:relative;padding:12px 14px;display:flex;flex-direction:column;cursor:text}.rt-body>div{flex:1 1;display:flex;flex-direction:column}.rt-body[hidden]{display:none}.rt-placeholder{position:absolute;top:12px;left:14px;pointer-events:none;color:var(--faint);font-size:14px}.rt-content{outline:none;font-size:14px;line-height:1.6;flex:1 1}.rt-content:focus-visible{box-shadow:none}.rt-content>:first-child{margin-top:0}.rt-content>:last-child{margin-bottom:0}.rt-content h2{font-size:19px;margin:18px 0 8px}.rt-content h3{font-size:16px;margin:16px 0 6px}.rt-content p{margin:0 0 10px}.rt-content ol,.rt-content ul{margin:0 0 10px;padding-left:22px}.rt-content li{margin-bottom:4px}.rt-content blockquote{margin:0 0 10px;padding-left:12px;border-left:3px solid var(--border-strong);color:var(--muted)}.rt-content a{color:var(--magenta);text-decoration:underline}.rt-content code{background:var(--elevated);padding:1px 5px;border-radius:5px;font-size:.92em}.rt-content pre{background:var(--elevated);padding:10px 12px;border-radius:var(--r-sm);overflow-x:auto}.rt-content pre code{background:none;padding:0}.rt-content hr{border:0;border-top:1px solid var(--border);margin:14px 0}.rt-source{margin-bottom:0;border:0;border-radius:0;background:var(--bg-2);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;resize:vertical}.rt-source:focus{box-shadow:none}.lesson-item{display:flex;align-items:center;gap:14px;padding:13px 16px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:9px;background:var(--panel);transition:border-color .15s,background .15s,transform .12s}a.lesson-item:hover{border-color:var(--border-strong);background:var(--elevated);transform:translateX(2px)}.lesson-item.active{border-color:var(--violet);background:var(--grad-soft)}.lesson-status{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;border:1.5px solid var(--border-strong);color:var(--faint)}.lesson-status.done{background:color-mix(in srgb,var(--success) 20%,transparent);border-color:var(--success);color:var(--success)}.lesson-title{flex:1 1;font-weight:500;font-size:14.5px}.lesson-meta{font-size:12px;color:var(--faint)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px 24px}.panel>h3{margin-bottom:14px}.head-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.lang-tabs{display:inline-flex;gap:2px;background:var(--elevated);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px;margin-bottom:10px}.lang-tabs button{background:none;border:none;color:var(--muted);font:inherit;font-size:12px;font-weight:700;letter-spacing:.03em;padding:4px 14px;border-radius:6px;cursor:pointer;transition:color .12s}.lang-tabs button.active{background:var(--grad);color:#fff}.add-lesson{padding:18px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--grad-soft)}.add-lesson,.add-lesson .label{margin-top:12px}.add-lesson .eyebrow{margin-bottom:12px}.table-wrap{border:1px solid var(--border);border-radius:var(--r-lg);overflow-x:auto;background:var(--panel)}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:left;padding:13px 18px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--bg-2);border-bottom:1px solid var(--border)}table.data td{padding:14px 18px;border-top:1px solid var(--border)}table.data tr:first-child td{border-top:none}table.data tbody tr:hover{background:var(--elevated)}.empty{border:1px dashed var(--border-strong);border-radius:var(--r-lg);padding:44px 28px;text-align:center;background:color-mix(in srgb,var(--panel) 50%,transparent)}.empty .emoji{font-size:30px}.empty h3{margin:10px 0 6px}.empty p{color:var(--muted);margin:0 auto;max-width:380px}.auth{position:relative;min-height:100vh;display:grid;place-items:center;padding:24px;overflow:hidden}.auth:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(58% 48% at 50% -4%,color-mix(in srgb,var(--magenta) 12%,transparent),transparent 70%),radial-gradient(48% 48% at 82% 104%,color-mix(in srgb,var(--violet) 12%,transparent),transparent 70%)}.auth-card{position:relative;z-index:1;width:100%;max-width:400px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-xl);padding:34px 32px;box-shadow:var(--shadow-lg)}.auth-divider{display:flex;align-items:center;gap:12px;margin:18px 0 2px;color:var(--faint);font-size:11.5px;text-transform:uppercase;letter-spacing:.08em}.auth-divider:after,.auth-divider:before{content:"";flex:1 1;height:1px;background:var(--border)}.auth-card.split{max-width:1000px;padding:0;display:grid;grid-template-columns:55% 45%;justify-content:space-between;overflow:hidden}.auth-photo{position:relative;overflow:hidden;background:var(--elevated);display:flex;align-items:flex-end;justify-content:center;padding-top:12px}.auth-photo:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(46% 40% at 68% 0,color-mix(in srgb,var(--violet) 20%,transparent),transparent 72%)}.auth-photo img{position:relative;width:100%;height:auto;display:block;object-fit:cover;object-position:bottom center;filter:drop-shadow(0 -20px 40px rgba(0,0,0,.25))}.auth-form-col{padding:40px;display:flex;flex-direction:column;justify-content:center}@media (max-width:760px){.auth-card.split{grid-template-columns:1fr;max-width:440px}.auth-photo{min-height:200px}.auth-form-col{padding:32px}}.comments{border-top:1px solid var(--border);padding-top:26px}.comments>h3{margin-bottom:16px}.comment-form{display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:12px 14px;gap:12px 14px;margin-bottom:24px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--panel);transition:border-color .15s,box-shadow .15s}.comment-form:focus-within{border-color:color-mix(in srgb,var(--violet) 55%,var(--border));box-shadow:var(--ring)}.comment-form textarea{width:100%;min-height:96px;max-height:320px;resize:none;field-sizing:content;border:0;outline:none;background:transparent;color:var(--text);font:inherit;line-height:1.55;padding:6px 0 0}.comment-form textarea:focus,.comment-form textarea:focus-visible{box-shadow:none;outline:none}.comment-form-foot{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--border);padding-top:12px}.comment-count{font-size:12.5px;color:var(--faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:18px}.comment{display:flex;gap:12px}.avatar.sm{width:30px;height:30px;font-size:11px;flex:none}.comment-main{flex:1 1;min-width:0}.comment-head{display:flex;align-items:center;gap:10px}.comment-author{font-weight:600;font-size:14px}.comment-body{margin:3px 0 0;max-width:72ch;font-size:14.5px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.link-btn{display:inline-flex;align-items:center;background:none;border:none;color:var(--muted);font:inherit;font-size:12.5px;line-height:16px;cursor:pointer;padding:4px 6px;min-width:24px;min-height:24px;border-radius:6px;transition:color .15s}.link-btn:hover{color:var(--text)}.link-btn.danger:hover{color:var(--danger)}summary.link-btn{display:list-item}.lesson-body{color:var(--text);font-size:15.5px;line-height:1.7}.lesson-body>:first-child{margin-top:0}.lesson-body h1,.lesson-body h2,.lesson-body h3{font-family:var(--font-display);margin:1.5em 0 .5em;line-height:1.2}.lesson-body h1{font-size:24px}.lesson-body h2{font-size:20px}.lesson-body h3{font-size:17px}.lesson-body p{margin:0 0 1em}.lesson-body ol,.lesson-body ul{margin:0 0 1em;padding-left:1.4em}.lesson-body li{margin:.3em 0}.lesson-body a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.lesson-body strong{font-weight:700}.lesson-body code{background:var(--elevated);padding:1px 6px;border-radius:6px;font-size:.9em}.lesson-body pre{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r);padding:14px;overflow-x:auto}.lesson-body pre code{background:none;padding:0}.lesson-body blockquote{margin:1em 0;padding-left:14px;border-left:3px solid var(--accent-2);color:var(--muted)}.lesson-body img{max-width:100%;border-radius:var(--r)}.lesson-body hr{border:none;border-top:1px solid var(--border);margin:1.5em 0}.ebook-card{display:flex;align-items:center;gap:14px;padding:20px 22px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--grad-soft);font-weight:600;transition:border-color .15s,transform .12s}.ebook-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.ebook-icon{font-size:28px}.quiz-score{font-family:var(--font-display);font-weight:700;font-size:20px;padding:12px 16px;border-radius:var(--r);background:var(--elevated);border:1px solid var(--border);margin-bottom:18px}.quiz-score.pass{color:var(--success);border-color:color-mix(in srgb,var(--success) 45%,transparent)}.quiz-score.fail{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,transparent)}.quiz-verdict{display:block;font-size:14px;font-weight:600;margin-top:4px;font-family:var(--font-inter)}.quiz-q{border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;margin-bottom:16px;background:var(--panel)}.quiz-prompt{font-weight:600;font-size:15.5px;margin:0 0 14px}.quiz-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px;cursor:pointer;transition:border-color .15s,background .15s}.quiz-option:hover{border-color:var(--border-strong)}.quiz-option.chosen{border-color:var(--violet);background:var(--grad-soft)}.quiz-option.correct{border-color:var(--success);background:color-mix(in srgb,var(--success) 14%,transparent)}.quiz-option.wrong{border-color:var(--danger);background:rgba(251,113,133,.12)}.quiz-option input{accent-color:var(--accent)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.submission-upload{margin-top:14px}.submission-upload .req{color:var(--warn);font-weight:600}.upload-zone{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:26px 20px;border:1.5px dashed var(--border-strong);border-radius:var(--r-lg);background:var(--bg-2)}.upload-zone.over{border-color:var(--violet);background:color-mix(in srgb,var(--violet) 10%,var(--bg-2))}.file-chip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--elevated)}.file-chip.column{flex-direction:column;align-items:stretch;gap:10px}.file-chip-row{display:flex;align-items:center;gap:12px}.file-ico{width:38px;height:38px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:color-mix(in srgb,var(--violet) 18%,transparent);color:var(--badge-processing-text)}.file-meta{display:flex;flex-direction:column;gap:2px;flex:1 1 200px;min-width:min(200px,100%)}.file-actions{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}.review-row{align-items:flex-start}.review-who{font-weight:600;flex:0 0 200px;min-width:0;overflow-wrap:anywhere}.review-body{flex:1 1;min-width:0}@media (max-width:760px){.review-row{flex-direction:column;gap:10px}.review-who{flex-basis:auto}.review-body{width:100%}}.file-meta strong{overflow-wrap:anywhere}.file-meta .muted{font-size:13px}.file-meta .badge{align-self:flex-start;max-width:100%;white-space:normal;margin-top:4px;border-radius:8px;line-height:1.35}.file-thumb{width:132px;height:96px;object-fit:cover;border-radius:9px;background:var(--border);flex-shrink:0}.assignment-review-filters{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 14px}.upload-bar{height:6px;border-radius:99px;background:var(--border);overflow:hidden}.upload-bar>i{display:block;height:100%;background:var(--grad);transition:width .2s ease}.upload-error{display:flex;gap:10px;align-items:flex-start;margin-top:10px;padding:12px 14px;border-radius:var(--r);border:1px solid color-mix(in srgb,var(--danger) 45%,transparent);background:color-mix(in srgb,var(--danger) 8%,transparent);color:var(--text)}.upload-error svg{color:var(--danger);flex-shrink:0}.submitted-band{display:flex;gap:12px;align-items:flex-start;padding:16px 18px;border-radius:var(--r-lg);border:1px solid color-mix(in srgb,var(--success) 45%,transparent);background:color-mix(in srgb,var(--success) 8%,transparent)}.submitted-band svg{color:var(--success);flex-shrink:0}.submitted-band>div{display:flex;flex-direction:column;gap:3px}.assignment-question{margin-bottom:16px}.assignment-answer+.assignment-answer{border-top:1px solid var(--border);margin-top:18px;padding-top:18px}.assignment-answer h2{color:var(--muted);font-size:15px;margin:0 0 6px}.assignment-file-section{margin-top:14px}.assignment-file-section h2{margin-bottom:6px}.assignment-answer-text{margin:0;line-height:1.7;white-space:pre-line}.assignment-feedback{margin-top:12px;padding:10px 14px}.assignment-feedback p{margin:6px 0 0;white-space:pre-wrap}.assignment-actions,.quiz-submit-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.character-count{color:var(--faint);font-size:12px;margin:5px 0 0;text-align:right}@media (prefers-reduced-motion:reduce){.upload-bar>i{transition:none}}video{width:100%;border-radius:var(--r-lg);background:black;display:block;box-shadow:var(--shadow)}.error{color:var(--danger);font-size:13.5px;background:rgba(251,113,133,.1);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:var(--r-sm);padding:9px 12px;margin-bottom:14px}.player-grid{display:grid;grid-template-columns:1fr 340px;grid-gap:28px;gap:28px;align-items:start}.lesson-video{display:block;width:100%;aspect-ratio:16/9}.lesson-video,.lv-player{background:#000;border-radius:var(--r-lg);box-shadow:var(--shadow)}.lv-player{display:grid;overflow:hidden}.lv-player .lesson-video{border-radius:0;box-shadow:none;cursor:pointer}.lv-controls{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--panel);border-top:1px solid var(--border)}.lv-ctl{display:inline-grid;place-items:center;width:36px;height:36px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--text);cursor:pointer}.lv-ctl:hover{background:var(--grad-soft)}.lv-ctl[aria-pressed=true]{color:var(--magenta)}.lv-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);white-space:nowrap}.lv-bar{flex:1 1;height:6px;border-radius:999px;background:var(--border);overflow:hidden;pointer-events:none}.lv-bar>i{display:block;height:100%;background:var(--grad)}.lv-player:-webkit-full-screen{grid-template-rows:1fr auto;border-radius:0}.lv-player:fullscreen{grid-template-rows:1fr auto;border-radius:0}.lv-player:-webkit-full-screen .lesson-video{aspect-ratio:auto;height:100%;min-height:0;object-fit:contain}.lv-player:fullscreen .lesson-video{aspect-ratio:auto;height:100%;min-height:0;object-fit:contain}@media (max-width:560px){.lv-time{font-size:12px}.lv-controls{gap:6px;padding:6px}}.outline{position:-webkit-sticky;position:sticky;top:88px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--panel);overflow:hidden}.outline-head{padding:16px 18px;border-bottom:1px solid var(--border)}.outline-body{max-height:62vh;overflow-y:auto;padding:12px}.outline .lesson-item{margin-bottom:6px;padding:10px 12px}.outline-module{margin:14px 4px 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.outline-body>div:first-child .outline-module{margin-top:2px}.instructor-card{padding:16px 18px;border-top:1px solid var(--border)}.instructor-row{display:flex;align-items:center;gap:12px}.instructor-avatar,.instructor-row img{width:48px;height:48px;border-radius:50%;object-fit:cover;flex-shrink:0}.instructor-avatar{display:inline-flex;align-items:center;justify-content:center;background:var(--grad);color:#fff;font-weight:700;font-size:18px;font-family:var(--font-display)}.instructor-bio{color:var(--muted);font-size:13.5px;margin:10px 0 0}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-bottom:26px}.stats-grid.one{grid-template-columns:minmax(0,max-content)}.stat-card{display:flex;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow)}.stat-card p{margin:0}.stat-icon{width:42px;height:42px;border-radius:var(--r);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-size:18px;background:linear-gradient(135deg,color-mix(in srgb,var(--magenta) 22%,transparent),color-mix(in srgb,var(--violet) 22%,transparent));border:1px solid var(--border)}.stat-label{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.stat-value{font-family:var(--font-display);font-size:28px;font-weight:700;line-height:1.2}.stat-sub{font-size:12.5px;color:var(--muted)}.admin-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.admin-toolbar .input{margin-bottom:0}.avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:var(--grad);color:#fff;font-weight:700;font-size:14px;font-family:var(--font-display)}@media (max-width:760px){.stats-grid{grid-template-columns:1fr}}.admin-split{display:grid;grid-template-columns:1fr 380px;grid-gap:28px;gap:28px;align-items:start}.admin-split>*{min-width:0}.admin-split .table-wrap{overflow-x:auto}.admin-side{position:-webkit-sticky;position:sticky;top:88px}.course-row{display:flex;gap:18px;align-items:flex-start;margin-top:14px}.course-row-title{font-weight:600;font-size:16px;color:var(--text);text-decoration:none}.course-row-title:hover{text-decoration:underline}.course-row-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;max-width:46%}@media (max-width:980px){.admin-split{grid-template-columns:1fr}.admin-side{position:static}.course-row{flex-direction:column}.course-row-actions{justify-content:flex-start;max-width:none}}.crumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:13.5px}.crumbs .crumb-current{color:var(--text)}@media (max-width:880px){.player-grid{grid-template-columns:1fr}.outline{position:static}}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}.btn:hover,.card:hover,a.lesson-item:hover{transform:none}}.cv-layout{display:grid;grid-template-columns:1fr 320px;grid-gap:40px;gap:40px;align-items:start;margin-top:8px}.cv-head h1{margin-top:10px}.cv-desc{color:var(--muted);max-width:60ch;margin:14px 0 0}.cv-facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.cv-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:1px solid var(--border);border-radius:999px;background:var(--panel);font-size:13px;color:var(--muted)}.cv-chip b{color:var(--text);font-weight:600}.cv-chip .dot{width:6px;height:6px;border-radius:50%;background:var(--violet)}.cv-modules{margin-top:38px;display:grid;grid-gap:30px;gap:30px}.cv-module-head{display:flex;align-items:baseline;gap:12px;margin-bottom:6px}.cv-mnum{font-family:var(--font-display);font-weight:700;font-size:13px;color:var(--faint)}.cv-module-head h3{flex:1 1;font-size:17px}.cv-count{font-size:12.5px;color:var(--faint);white-space:nowrap}.cv-locked,.cv-module-closed .cv-module-head h3{color:var(--muted)}.cv-locked{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:12.5px;padding:4px 10px;border-radius:999px;border:1px dashed var(--border-strong)}.cv-lessons{list-style:none;margin:0;padding:0;position:relative}.cv-lessons:before{content:"";position:absolute;left:15px;top:22px;bottom:22px;width:2px;background:var(--border);border-radius:2px}.cv-lesson{position:relative;display:grid;grid-template-columns:32px 1fr auto;align-items:center;grid-gap:14px;gap:14px;padding:11px 12px 11px 0;border-radius:var(--r);transition:background .16s ease}a.cv-lesson:hover{background:var(--panel)}a.cv-lesson:hover .cv-ltitle{color:var(--text)}.cv-node{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;z-index:1;font-size:13px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;background:var(--bg);border:2px solid var(--border-strong);color:var(--faint)}.cv-lesson.done .cv-node{background:var(--grad);border-color:transparent;color:#fff;box-shadow:0 4px 12px -4px color-mix(in srgb,var(--violet) 60%,transparent)}.cv-lesson.current .cv-node{border-color:var(--magenta);color:var(--text);box-shadow:0 0 0 4px color-mix(in srgb,var(--magenta) 15%,transparent)}.cv-ltitle{font-weight:500;color:var(--muted)}.cv-lesson.done .cv-ltitle{color:var(--text)}.cv-lesson.current .cv-ltitle{color:var(--text);font-weight:600}.cv-lsub{display:block;font-size:12px;color:var(--faint);font-weight:500;margin-top:1px}.cv-lmeta{font-size:12.5px;color:var(--faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.cv-pill{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--magenta);border:1px solid color-mix(in srgb,var(--magenta) 40%,transparent);border-radius:999px;padding:2px 8px;margin-left:8px;vertical-align:middle}.cv-aside{position:-webkit-sticky;position:sticky;top:92px;display:grid;grid-gap:16px;gap:16px}.cv-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:22px}.cv-ring-row{display:flex;align-items:center;gap:18px}.cv-ring-wrap{position:relative;width:84px;height:84px;flex:none}.cv-ring{position:absolute;inset:0;width:84px;height:84px;transform:rotate(-90deg)}.cv-ring .track{fill:none;stroke:var(--border);stroke-width:9}.cv-ring .fill{fill:none;stroke:url(#cv-grad);stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.cv-ring-center{position:absolute;inset:0;display:grid;place-items:center}.cv-ring-pct{font-family:var(--font-display);font-size:20px;font-weight:700;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cv-ring-pct span{font-size:12px;font-weight:600;color:var(--muted);margin-left:1px}.cv-ring-done{width:46px;height:46px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;box-shadow:0 4px 14px -4px color-mix(in srgb,var(--violet) 60%,transparent)}.cv-ringlabel{font-size:13px;color:var(--muted)}.cv-btnsub{font-size:12.5px;color:var(--faint);margin:10px 0 0;text-align:center}.cv-btnsub b{color:var(--muted);font-weight:600}.cv-cardtitle{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin:0 0 14px}.cv-metalist{list-style:none;margin:0;padding:0;display:grid;grid-gap:11px;gap:11px}.cv-metalist li{display:flex;align-items:center;justify-content:space-between;font-size:13.5px}.cv-metalist .k{color:var(--muted)}.cv-metalist .v{color:var(--text);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:900px){.cv-layout{grid-template-columns:1fr;gap:26px}.cv-aside{position:static;order:-1}}.lesson-head h1{font-size:30px;margin-top:8px}.lv-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.lv-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:1px solid var(--border);border-radius:999px;background:var(--panel);font-size:13px;color:var(--muted)}.lv-chip b{color:var(--text);font-weight:600}.lv-chip .dot{width:6px;height:6px;border-radius:50%;background:var(--violet)}.lv-chip.done{color:var(--success);border-color:color-mix(in srgb,var(--success) 45%,var(--border));background:color-mix(in srgb,var(--success) 10%,transparent);font-weight:600}.lv-chip.hint{color:var(--faint);border-style:dashed}.lesson-figure{margin:0;border:1px solid var(--border);border-radius:var(--r);background:var(--panel);overflow:hidden}.lesson-figure img{display:block;width:100%;height:auto;background:var(--bg-2)}.lesson-figure figcaption{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;font-size:13.5px;color:var(--muted)}.lesson-figure figcaption a{font-weight:600;white-space:nowrap}.lesson-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:22px;padding-top:20px;border-top:1px solid var(--border)}.lv-pager{flex:1 1 100%;display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--panel);overflow:hidden}.lv-pg{display:flex;align-items:center;gap:14px;min-width:0;padding:14px 18px;color:inherit;text-decoration:none;transition:background .15s}.lv-pg+.lv-pg{border-left:1px solid var(--border)}.lv-pg:hover{background:var(--elevated)}.lv-pg:focus-visible{outline:none;box-shadow:inset var(--ring)}.lv-pg.next{justify-content:flex-end;text-align:right;background:var(--grad-soft)}.lv-pg.next:hover{background:color-mix(in srgb,var(--violet) 14%,var(--panel))}.lv-pg-ico{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--border);color:var(--muted)}.lv-pg.next .lv-pg-ico{background:var(--grad);border:0;color:#fff}.lv-pg-txt{display:grid;grid-gap:2px;gap:2px;min-width:0}.lv-pglabel{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint)}.lv-pg.next .lv-pglabel{color:var(--badge-accent-text);font-weight:600}.lv-pgtitle{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width:560px){.lv-pager{grid-template-columns:1fr}.lv-pg+.lv-pg{border-left:0;border-top:1px solid var(--border)}.lv-pg.next{order:-1}}.lv-mark-btn{padding:6px 12px;border-radius:999px;font-size:13px;gap:7px}.lv-mark-error{flex-basis:100%;color:var(--danger);font-size:13px}.lv-rowhead{display:flex;align-items:center;gap:14px}.lv-ring{width:52px;height:52px;flex:none}.lv-ring .track{fill:none;stroke:var(--border);stroke-width:5}.lv-ring .fill{fill:none;stroke:url(#lv-grad);stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.lv-ring text{font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:-.3px;fill:var(--text)}.lv-headcnt{font-size:14.5px;font-weight:600;margin-top:2px}.lv-li{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--r-sm);position:relative;margin-bottom:4px;border:1px solid transparent;text-decoration:none}a.lv-li:hover{background:var(--elevated)}.lv-li.active{background:var(--grad-soft);border-color:var(--violet)}.lv-li.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--grad)}.lv-node{width:22px;height:22px;border-radius:50%;flex-shrink:0;border:1.5px solid var(--border-strong);display:grid;place-items:center;font-size:11px;color:var(--faint)}.lv-li.done .lv-node{background:color-mix(in srgb,var(--success) 20%,transparent);border-color:var(--success);color:var(--success)}.lv-li.active .lv-node{border-color:var(--violet);color:var(--violet)}.lv-li.done.active .lv-node{background:color-mix(in srgb,var(--success) 20%,transparent);border-color:var(--success);color:var(--success)}.lv-ltitle{flex:1 1;font-size:13.5px;font-weight:500;line-height:1.35;color:var(--muted)}.lv-li.active .lv-ltitle,.lv-li.done .lv-ltitle{color:var(--text)}.lv-lmeta{font-size:11.5px;color:var(--faint);flex-shrink:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:880px){.lv-pgtitle{max-width:130px}}.admin-shell{position:relative}.admin-nav{position:fixed;top:0;left:76px;bottom:0;width:212px;z-index:40;display:flex;flex-direction:column;gap:3px;padding:22px 14px;overflow-y:auto;border-right:1px solid var(--border);background:var(--panel)}.admin-nav-eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);margin:0 0 12px;padding:0 10px}.admin-nav-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--r);color:var(--muted);font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.admin-nav-item:hover{background:var(--elevated);color:var(--text)}.admin-nav-item.active{background:var(--grad-soft);color:var(--text);font-weight:600}.admin-nav-item svg{flex-shrink:0}.admin-nav-group{display:flex;flex-direction:column;gap:3px;margin-top:16px}.admin-nav>.admin-nav-group:first-of-type{margin-top:0}.admin-nav-heading{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 6px;padding:0 10px}.admin-body{padding-left:212px}.admin-body>.container{margin:0 auto}table.data .badge{white-space:nowrap}@media (max-width:900px){.admin-nav{position:static;width:auto;inset:auto;flex-direction:row;flex-wrap:wrap;gap:6px;padding:12px 24px;border-right:none;border-bottom:1px solid var(--border)}.admin-nav-eyebrow{flex-basis:100%;margin-bottom:4px}.admin-nav-item{padding:8px 12px}.admin-nav-group{display:contents}.admin-nav-heading{display:none}.admin-body{padding-left:0}}.admin-greet-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:26px}.admin-greet-row h1{margin-top:8px}.stats-grid.four{grid-template-columns:repeat(4,1fr)}@media (max-width:900px){.stats-grid.four{grid-template-columns:repeat(2,1fr)}}.prog-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:24px}.prog-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;font-weight:600;font-size:14px;color:var(--muted);background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}.prog-tab.on,.prog-tab:hover{color:var(--text)}.prog-tab.on{border-bottom-color:var(--magenta)}.pt-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.pt-dot.all{background:linear-gradient(135deg,#e11d74,#4d7cfe,#e6b450)}.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin:6px 0 16px}.sec-head h2{margin:0}.prog-cards{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:18px;gap:18px;margin-bottom:34px}@media (max-width:1000px){.prog-cards{grid-template-columns:1fr}}.pcard{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;--c:var(--violet)}.pcard-accent{height:3px;background:var(--c)}.pcard-body{padding:20px;display:flex;flex-direction:column;gap:14px;flex:1 1}.pcard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.pcard-icon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 15%,transparent)}.pcard-title{margin:0;font-size:18px}.pcard-metrics{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;background:var(--bg-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px}.pcard-metrics .k{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);display:block}.pcard-metrics .v{font-family:var(--font-display);font-weight:700;font-size:19px;display:block;margin-top:3px}.pcard-cohorts .cohort-label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin:0 0 10px}.cohort{margin-bottom:12px}.cohort:last-child{margin-bottom:0}.cohort-row{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}.cbar{height:6px;background:var(--elevated);overflow:hidden}.cbar,.cbar i{display:block;border-radius:20px}.cbar i{height:100%;background:var(--c)}.pcard-foot{display:flex;align-items:center;justify-content:flex-end;gap:5px;border-top:1px solid var(--border);padding:14px 20px;margin-top:auto;font-size:13px;font-weight:600;color:var(--text)}.pcard-foot:hover{background:var(--elevated)}.feed{display:flex;flex-direction:column}.feed-item{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:12px}.feed-item:hover{background:var(--elevated)}.feed-tx{flex:1 1;font-size:13.5px}.feed-when{font-size:12px;color:var(--faint)}.feed-when,.ptag{white-space:nowrap}.ptag{font-size:10.5px;font-weight:700;border-radius:20px;padding:3px 9px;display:inline-flex;align-items:center;gap:5px;color:var(--muted);border:1px solid var(--border-strong)}.att{display:flex;flex-direction:column}.att-item{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:12px}.att-item:hover{background:var(--elevated)}.att-ring{width:38px;height:38px;flex:none;place-items:center;font-size:10.5px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;background:conic-gradient(var(--magenta) calc(var(--p) * 1%),var(--elevated) 0)}.att-ring,.att-ring span{border-radius:50%;display:grid}.att-ring span{width:30px;height:30px;background:var(--panel);place-items:center}.att-info{flex:1 1;min-width:0}.att-info b{display:flex;align-items:center;gap:7px;font-size:13.5px}.att-info>span{display:block;font-size:12px;color:var(--faint);margin-top:2px}.program-card{border:1px solid var(--border);border-radius:var(--r);background:var(--panel);overflow:hidden;--c:var(--muted)}.program-head{display:flex;align-items:center;gap:14px;padding:16px 18px}.program-mono{width:34px;height:34px;border-radius:10px;flex:none;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);border:1px solid color-mix(in srgb,var(--c) 34%,transparent)}.program-count{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.program-count svg{color:var(--faint)}.program-roster{border-top:1px solid var(--border);padding:14px 18px 16px}.program-sub-note{display:flex;align-items:flex-start;gap:9px;margin:0 0 12px;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--border);border-left:3px solid var(--c);background:color-mix(in srgb,var(--c) 8%,transparent);font-size:12.5px;color:var(--muted)}.program-sub-note svg{color:var(--c);flex:none;margin-top:1px}.program-mlist{max-height:300px;overflow-y:auto}.program-roster-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.program-roster-bar .search-field{flex:1 1;min-width:0}.program-roster-add{margin-left:auto}.add-member-dialog{display:flex;flex-direction:column;gap:14px;text-align:left}.add-member-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:360px;overflow-y:auto}.add-member-list li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--panel)}.add-member-who{display:flex;flex-direction:column;min-width:0;flex:1 1;font-size:13.5px}.add-member-who .muted{font-size:12.5px;overflow:hidden;text-overflow:ellipsis}.add-member-empty{margin:0;font-size:13.5px}.add-member-foot{display:flex;justify-content:flex-end}.program-action-danger{margin-left:4px;padding-left:12px;border-left:1px solid var(--border)}.program-adder{position:relative}.program-typeahead{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);overflow:hidden}.program-th-opt{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;font:inherit;font-size:13px;text-align:left;background:none;border:none;color:var(--text);cursor:pointer}.program-th-opt:focus-visible,.program-th-opt:hover{background:color-mix(in srgb,var(--violet) 16%,transparent);outline:none}.filter-chip{display:inline-flex;align-items:center;gap:12px;margin-bottom:18px;padding:8px 8px 8px 14px;border-radius:999px;font-size:13px;color:var(--muted)}.filter-chip,.group-card{border:1px solid var(--border);background:var(--panel)}.group-card{border-radius:var(--r);padding:16px 18px;margin-top:14px}.group-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:4px 0 0;font-size:13px;color:var(--muted)}.group-meta svg{color:var(--faint)}.group-report{display:flex;align-items:center;gap:14px}.group-report .progress{flex:1 1}.group-report-nums{display:flex;align-items:baseline;gap:8px;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.group-report-nums b{font-size:14px}.group-report-nums .faint{font-size:12px}.group-manage{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.btn.sm.icon-only{padding:6px 9px}.badge.warn{color:var(--badge-warn-text);border-color:color-mix(in srgb,var(--warn) 45%,transparent);background:color-mix(in srgb,var(--warn) 12%,transparent)}.badge.danger{color:var(--badge-danger-text);border-color:color-mix(in srgb,var(--danger) 45%,transparent);background:color-mix(in srgb,var(--danger) 10%,transparent)}.new-team-bar{display:flex;flex-direction:column;align-items:flex-end;margin-bottom:4px}.new-team-bar .panel{width:100%;align-self:stretch}.team-card{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--panel);box-shadow:var(--shadow);padding:18px 20px}.team-card-head{gap:18px;flex-wrap:wrap;margin-bottom:14px}.team-card-head,.team-summary{display:flex;align-items:center}.team-summary{gap:9px}.team-manage-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px dashed var(--border)}.program-edit .lang-tabs{margin-bottom:8px}@media (prefers-color-scheme:light){:root:not([data-theme]) select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b6280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6l6 -6'/%3E%3C/svg%3E")}}:root[data-theme=light] select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b6280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6l6 -6'/%3E%3C/svg%3E")}.cert-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:40px 20px}.cert-card{width:100%;max-width:720px;padding:56px 48px;text-align:center;background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);position:relative;overflow:hidden}.cert-card:before{content:"";position:absolute;top:0;left:0;right:0;height:6px;background:var(--grad)}.cert-lead{color:var(--muted);font-size:15px;margin:4px 0}.cert-name{font-weight:700;font-size:38px;margin:10px 0 18px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.cert-course,.cert-name{font-family:var(--font-display)}.cert-course{font-weight:600;font-size:22px;margin:4px 0 18px}.cert-date{color:var(--muted);font-size:14px;margin:0}.cert-foot{margin-top:32px;padding-top:20px;border-top:1px dashed var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.cert-code{font-size:11.5px;color:var(--faint);font-family:monospace}@media print{.app-bar,.cert-print,.rail{display:none!important}.cert-page{min-height:auto;padding:0}.cert-card{box-shadow:none;border:1px solid #ccc}}.live-head{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap;justify-content:space-between}.live-head .page-head{flex:1 1;min-width:280px}.live-head>.btn,.live-head>form{align-self:flex-end;margin-bottom:4px}.eyebrow.quiet{color:var(--muted)}.live-section{display:flex;align-items:center;gap:11px;margin:30px 0 14px}.live-section:first-of-type{margin-top:24px}.live-count{font-size:11.5px;font-weight:600;color:var(--muted);background:var(--elevated);border:1px solid var(--border);border-radius:999px;padding:1px 9px}.live-rule{flex:1 1;height:1px;background:var(--border)}.live-card{display:flex;gap:15px;padding:16px 18px;margin-bottom:12px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow)}.live-card.dim{box-shadow:none;background:color-mix(in srgb,var(--panel) 62%,var(--bg))}.live-tile{width:42px;height:42px;flex-shrink:0;border-radius:var(--r);display:grid;place-items:center;background:var(--grad-soft);color:color-mix(in srgb,var(--violet) 40%,var(--text))}.live-card.dim .live-tile{background:var(--elevated);color:var(--muted)}.live-body{flex:1 1;min-width:0}.live-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.live-title{margin:0;font-family:var(--font-sans);font-size:15.5px;font-weight:600;letter-spacing:0}.live-card.dim .live-title{color:var(--muted);font-weight:500}.live-when{font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#fff;background:var(--grad);border-radius:999px;padding:3px 10px}.live-meta{margin:6px 0 0;display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}.live-dot{width:3px;height:3px;border-radius:50%;background:var(--faint);flex-shrink:0}.live-error{margin-top:10px}.live-error-msg{margin:0;font-size:13px;color:var(--danger)}.live-error-more{margin-top:6px}.live-error-more summary{cursor:pointer;width:-moz-fit-content;width:fit-content;font-size:12.5px;color:var(--muted)}.live-error-more summary:hover{color:var(--text)}.live-error-detail{margin:6px 0 0;overflow-wrap:anywhere;font-size:12.5px;color:var(--muted)}.live-hint{margin:8px 0 0;font-size:13px;color:var(--muted)}.live-side{display:flex;align-items:center;gap:10px;flex-shrink:0}.live-regs{display:inline-flex;align-items:center;gap:5px}.live-date{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.live-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.live-inline-badge{margin-left:8px}.live-older{margin:12px 0 0;font-size:13px}.live-time-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.live-field-help{margin:-6px 0 14px;font-size:12.5px}.live-note{display:flex;align-items:flex-start;gap:10px;margin:0 0 18px;padding:12px 14px;border-radius:var(--r);font-size:13px;background:var(--grad-soft);border:1px solid color-mix(in srgb,var(--violet) 30%,transparent)}.live-note svg{flex-shrink:0;margin-top:2px;color:color-mix(in srgb,var(--violet) 40%,var(--text))}@media (max-width:760px){.live-head>.btn,.live-head>form{align-self:stretch}.live-head>.btn{justify-content:center}.live-time-grid{grid-template-columns:1fr}.live-card{flex-wrap:wrap}.live-side{width:100%;margin:12px 0 0 57px}}.live-back{display:inline-flex;align-items:center;gap:6px;margin-bottom:10px;font-size:13px;font-weight:600;color:var(--muted)}.live-back:hover{color:var(--text)}.live-notice{display:flex;align-items:center;gap:9px;margin:0 0 22px;padding:11px 14px;border-radius:var(--r);font-size:13.5px;color:var(--badge-warn-text);background:color-mix(in srgb,var(--warn) 10%,transparent);border:1px solid color-mix(in srgb,var(--warn) 32%,transparent)}.live-notice svg{flex-shrink:0}.live-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px;margin-bottom:24px}.live-tile-stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 18px;box-shadow:var(--shadow)}.live-tile-stat p{margin:0}.live-tile-stat .stat-value{font-size:26px}.live-person-email{display:block;font-size:12.5px;margin-top:2px}.live-num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.live-unresolved{margin-top:30px}.live-unresolved h2{font-size:18px}.live-unresolved>p{margin:8px 0 14px;font-size:13.5px;max-width:70ch}.live-unresolved ul{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--panel)}.live-unresolved li{padding:12px 18px;border-top:1px solid var(--border);font-size:13.5px}.live-unresolved li:first-child{border-top:none}@media (max-width:900px){.live-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}.sync-form{margin:-8px 0 22px}.sync-button{display:flex;margin-left:auto}.sync-error{margin:14px 0 0;padding:12px 14px;border-radius:var(--r);font-size:13.5px;color:var(--danger);background:color-mix(in srgb,var(--danger) 9%,transparent);border:1px solid color-mix(in srgb,var(--danger) 32%,transparent)}.sync-error-msg{margin:0}.sync-error .live-error-more summary{color:color-mix(in srgb,var(--danger) 75%,var(--text))}.sync-error .live-error-detail{color:var(--muted)}.access-search{display:flex;align-items:center;gap:9px;margin:18px 0 14px}.access-search svg{flex-shrink:0;color:var(--muted)}.access-search .input{margin:0}.access-arrive-label{margin:18px 0 10px}.access-package-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.access-package-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--panel)}.access-package-row:hover{border-color:var(--border-strong);background:var(--elevated)}.access-package-row:focus-visible{outline:2px solid var(--violet);outline-offset:2px}.access-package-row>svg:last-child{color:var(--muted);flex-shrink:0}.access-package-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1}.access-package-main .muted{font-size:12.5px}.access-manage-note{margin:14px 0 0;font-size:12.5px;max-width:62ch}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.live-dialog-sub{margin:4px 0 0;font-size:13px}.live-audience{margin-top:4px}.live-prefill{display:flex;align-items:center;gap:10px;margin:14px 0;padding:4px 4px 4px 12px;border-radius:var(--r);font-size:13px;background:var(--elevated);border:1px solid var(--border);color:var(--muted)}.live-prefill>span{flex:1 1;padding:6px 0}.live-prefill>svg{flex-shrink:0}.live-prefill .icon-btn{border-color:transparent;width:36px;height:36px}.aud{margin:8px 0 18px;padding:16px 0 0;border:0;border-top:1px solid var(--border);min-width:0}.aud>legend{padding:0 10px 0 0}.aud-mode{display:flex;align-items:center;gap:12px;min-height:40px;cursor:pointer;font-size:14px}.aud-mode input{width:18px;height:18px;margin:0;accent-color:var(--violet)}.aud-body{display:flex;flex-direction:column;gap:12px;margin:6px 0 0 30px}.aud-help{margin:0;font-size:12.5px}.aud-search{position:relative}.aud-search>svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.aud-search .input{margin-bottom:0;padding-left:38px}.aud-children,.aud-chips,.aud-matches,.aud-tree{list-style:none;margin:0;padding:0}.aud-matches,.aud-tree{padding:4px;border-radius:var(--r);background:var(--bg-2);border:1px solid var(--border)}.aud-tree{max-height:280px;overflow-y:auto}.aud-none{padding:12px;font-size:13px}.aud-row{display:flex;align-items:center;border-radius:var(--r-sm)}.aud-row.on{background:color-mix(in srgb,var(--violet) 12%,transparent)}.aud-chevron{width:36px;height:40px;flex-shrink:0;display:inline-grid;place-items:center;border:0;border-radius:var(--r-sm);background:none;color:var(--muted);cursor:pointer}.aud-chevron:disabled{cursor:default}.aud-chevron svg{transition:transform .15s}.aud-chevron svg.open{transform:rotate(90deg)}.aud-check,.aud-match{flex:1 1;min-width:0;display:flex;align-items:center;gap:12px;min-height:40px;padding:0 12px 0 0;border:0;border-radius:var(--r-sm);background:none;color:var(--text);font:inherit;font-size:14px;text-align:left;cursor:pointer}.aud-match{width:100%;padding:0 12px}.aud-check:hover .aud-name,.aud-match:hover{color:color-mix(in srgb,var(--violet) 35%,var(--text))}.aud-box{width:18px;height:18px;flex-shrink:0;display:inline-grid;place-items:center;border-radius:5px;border:1.5px solid var(--faint);color:#fff}.aud-box.all,.aud-box.some{background:var(--violet);border-color:color-mix(in srgb,var(--violet) 60%,#fff)}.aud-name{flex:1 1;min-width:0;overflow-wrap:anywhere}.aud-row .aud-name{font-weight:500}.aud-level{font-size:12px}.aud-level,.aud-people{flex-shrink:0;color:var(--muted)}.aud-people{min-width:88px;text-align:right;font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.aud-add{flex-shrink:0;font-size:13px;font-weight:600;color:color-mix(in srgb,var(--violet) 45%,var(--text))}.aud-people-block{display:flex;flex-direction:column;gap:8px}.aud-people-block .label{margin-bottom:0}.aud-chips{display:flex;flex-wrap:wrap;gap:8px}.aud-chip{display:inline-flex;align-items:center;gap:2px;padding-left:12px;min-height:36px;border-radius:999px;border:1px solid var(--border-strong);background:var(--elevated);font-size:13px}.aud-chip button{width:36px;height:36px;display:inline-grid;place-items:center;border:0;border-radius:999px;background:none;color:var(--muted);cursor:pointer}.aud-chip button:hover{color:var(--text)}.aud-warn-text{margin:0;font-size:13px;color:var(--badge-warn-text)}.aud-summary{display:flex;align-items:flex-start;gap:10px;margin:14px 0 0;padding:12px 14px;border-radius:var(--r);font-size:14px;line-height:1.45;background:var(--elevated);border:1px solid var(--border)}.aud-summary>svg{flex-shrink:0;margin-top:1px;color:var(--muted)}.aud-summary strong{font-weight:600}.aud-summary.ok{border-color:color-mix(in srgb,var(--success) 40%,transparent);background:color-mix(in srgb,var(--success) 7%,transparent)}.aud-summary.ok>svg{color:var(--badge-done-text)}.aud-summary.warn{border-color:color-mix(in srgb,var(--warn) 50%,transparent);background:color-mix(in srgb,var(--warn) 8%,transparent)}.aud-summary.warn>svg{color:var(--badge-warn-text)}.refresh-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px;margin:18px 0 14px}.refresh-tiles>div{display:flex;flex-direction:column-reverse;gap:4px;padding:14px;border-radius:var(--r);background:var(--elevated);border:1px solid var(--border)}.refresh-tiles dt{font-size:13px;color:var(--muted)}.refresh-tiles dd{margin:0;font-family:var(--font-display);font-size:28px;font-weight:700;line-height:1}.refresh-tiles .in{border-color:color-mix(in srgb,var(--success) 40%,transparent);background:color-mix(in srgb,var(--success) 7%,transparent)}.refresh-tiles .in dd{color:var(--badge-done-text)}.refresh-tiles .out{border-color:color-mix(in srgb,var(--warn) 50%,transparent);background:color-mix(in srgb,var(--warn) 8%,transparent)}.refresh-note{margin:0;font-size:13px;line-height:1.5}.row-menu-panel .menu-row-stacked{flex-direction:column;align-items:stretch;gap:2px}.menu-row-line{display:flex;align-items:center;justify-content:space-between;gap:12px}.menu-row-hint{font-size:12px;color:var(--muted)}@media (max-width:560px){.aud-body{margin-left:0}.aud-level{display:none}}.team-drawer{position:fixed;top:0;right:0;bottom:0;z-index:100;width:min(480px,100vw);padding:22px 24px 32px;overflow-y:auto;background:var(--panel);border-left:1px solid var(--border);box-shadow:var(--shadow-lg)}.team-drawer-sec{display:flex;flex-direction:column;gap:8px;padding:16px 0;border-top:1px solid var(--border)}.team-drawer-head,.team-li{display:flex;align-items:center;justify-content:space-between;gap:10px}.team-li{padding:8px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--elevated)}.team-li>span:first-child{min-width:0;overflow-wrap:anywhere}.tree-pick{flex-direction:column;gap:2px;max-height:320px;overflow-y:auto;padding:6px;border:1px solid var(--border);background:var(--elevated)}.tree-pick,.tree-pick label{display:flex;border-radius:var(--r-sm)}.tree-pick label{align-items:center;gap:8px;padding:8px 10px;cursor:pointer}.tree-pick label:hover:not(.off){background:color-mix(in srgb,var(--violet) 14%,transparent)}.tree-pick label.off{opacity:.55;cursor:not-allowed}.team-tree-name{display:inline-flex;align-items:center;gap:6px}@media (max-width:1240px){.admin-split{grid-template-columns:1fr}.admin-side{position:static}.course-rail{max-height:none}}.module-card .module-head{flex-wrap:wrap}.module-card .module-editor{flex:1 1 220px}.lesson-row-main .lesson-title{flex:1 1 180px;min-width:140px}.head-row{flex-wrap:wrap}.panel .head-row>h3{flex:1 1 240px;min-width:0}.head-row .badge{white-space:nowrap}.section-picker{display:none}@media (max-width:760px){.admin-nav{display:none}.admin-shell{position:static}.section-picker{display:block;position:absolute;top:12px;left:16px;z-index:46;max-width:calc(100vw - 210px)}.section-picker-btn{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:44px;padding:0 12px 0 8px;border:1px solid var(--border);border-radius:var(--r);background:var(--panel);color:var(--text);font:inherit;font-size:15px;font-weight:600;cursor:pointer}.section-picker-ico{display:inline-flex;width:28px;height:28px;flex-shrink:0;align-items:center;justify-content:center;border-radius:8px;background:var(--grad-soft);color:var(--violet)}.section-picker-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-bar>*,.section-picker-btn svg{flex-shrink:0}.modal-overlay:has(>.section-sheet){align-items:flex-end;padding:0}.modal.section-sheet{width:100%;max-width:none;max-height:85vh;overflow-y:auto;margin:0;border-radius:var(--r-xl) var(--r-xl) 0 0;padding:12px 16px 24px}.section-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 6px 8px}.section-sheet-head h2{font-size:17px;margin:0}.section-sheet-group{margin-top:10px}.section-sheet .admin-nav-item{min-height:44px}.section-sheet-check{margin-left:auto;color:var(--violet)}}.welcome{position:fixed;inset:0;z-index:150;display:grid;place-items:center;overflow:hidden;padding:calc(env(safe-area-inset-top, 0px) + 16px) 16px calc(env(safe-area-inset-bottom, 0px) + 16px);background:var(--bg);animation:welcome-in .36s ease both}.welcome:after,.welcome:before{content:"";position:absolute;width:70vmax;height:70vmax;border-radius:50%;pointer-events:none;will-change:transform}.welcome:before{top:-30vmax;left:-20vmax;background:radial-gradient(closest-side,color-mix(in srgb,var(--magenta) 26%,transparent),transparent);animation:welcome-drift-a 18s ease-in-out infinite alternate}.welcome:after{bottom:-34vmax;right:-24vmax;background:radial-gradient(closest-side,color-mix(in srgb,var(--violet) 30%,transparent),transparent);animation:welcome-drift-b 22s ease-in-out infinite alternate}@keyframes welcome-in{0%{opacity:0}}@keyframes welcome-drift-a{to{transform:translate(8vmax,6vmax)}}@keyframes welcome-drift-b{to{transform:translate(-7vmax,-5vmax)}}@keyframes welcome-rise{0%{opacity:0;transform:translateY(14px)}}.welcome-skip{position:absolute;top:calc(env(safe-area-inset-top, 0px) + 18px);right:20px;z-index:2;background:none;border:0;color:var(--muted);font:inherit;font-size:14px;font-weight:500;padding:8px 12px;border-radius:999px;cursor:pointer}.welcome-skip:hover{color:var(--text);background:var(--elevated)}.welcome-stage{z-index:1;width:min(520px,100%);justify-items:center;text-align:center;grid-gap:28px;gap:28px}.welcome-ring,.welcome-stage{position:relative;display:grid}.welcome-ring{width:132px;height:132px;place-items:center}.welcome-ring>svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);overflow:visible}.welcome-ring .track{fill:none;stroke:color-mix(in srgb,var(--violet) 18%,transparent);stroke-width:7}.welcome-ring .bar{fill:none;stroke:url(#welcome-grad);stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset 1.1s cubic-bezier(.65,0,.35,1)}.welcome-mark{--tile:64px;position:relative}.welcome-initial{color:#fff;font-family:var(--font-display);font-weight:700;font-size:30px}.welcome-check{width:34px;height:34px}.welcome-check path{fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:30;stroke-dashoffset:30;animation:welcome-draw .45s ease .65s forwards}@keyframes welcome-draw{to{stroke-dashoffset:0}}.welcome-scene{display:grid;grid-gap:14px;gap:14px;justify-items:center;width:100%}.welcome-scene>*{animation:welcome-rise .64s cubic-bezier(.2,.7,.2,1) both}.welcome-scene>:nth-child(2){animation-delay:90ms}.welcome-scene>:nth-child(3){animation-delay:.18s}.welcome-scene>:nth-child(4){animation-delay:.27s}.welcome-scene h2{font-size:clamp(34px,7vw,52px);line-height:1.05;letter-spacing:-.02em;text-wrap:balance}.welcome-scene h2:focus{outline:none}.welcome-scene h2 em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.welcome-lead{color:var(--muted);font-size:17px;max-width:42ch}.welcome-steps{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-gap:10px;gap:10px;width:100%;text-align:left}.welcome-steps li{display:grid;grid-template-columns:44px 1fr;grid-gap:14px;gap:14px;align-items:center;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px;animation:welcome-rise .6s cubic-bezier(.2,.7,.2,1) both}.welcome-steps li:nth-child(2){animation-delay:.24s}.welcome-steps li:nth-child(3){animation-delay:.38s}.welcome-steps li>div{min-width:0}.welcome-steps b{display:block;font-weight:600}.welcome-steps span{color:var(--muted);font-size:14px}.welcome-ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--violet) 14%,var(--panel));color:var(--violet)}.welcome-actions{display:grid;grid-gap:10px;gap:10px;justify-items:center;margin-top:6px}.welcome-btn{border-radius:999px;padding:14px 28px;font-size:16px}.welcome-link{background:none;border:0;color:var(--muted);font:inherit;font-weight:500;cursor:pointer;padding:6px 10px;border-radius:8px}.welcome-link:hover{color:var(--text)}.welcome-dots{display:flex;gap:8px;justify-content:center}.welcome-dots i{width:8px;height:8px;border-radius:999px;background:color-mix(in srgb,var(--violet) 18%,transparent);transition:width .3s ease,background .3s ease}.welcome-dots i.on{width:26px;background:var(--grad)}@media (max-width:760px){.welcome-ring{width:112px;height:112px}.welcome-stage{gap:22px}.welcome-lead{font-size:16px}}@media (prefers-reduced-motion:reduce){.welcome,.welcome-scene>*,.welcome-steps li,.welcome:after,.welcome:before{animation:none}.welcome-ring .bar{transition:none}.welcome-check path{animation:none;stroke-dashoffset:0}}