:root{--color-card-hover-overlay:#ffffff0a;--color-background:#f6f6f3;--color-surface:#fff;--color-border:#e7e7e3;--color-border-strong:#d9d9d4;--color-text:#0d0e10;--color-text-secondary:#5c5e64;--color-text-muted:#9a9ba0;--color-surface-hover:#f2f2ef;--color-list-hover:#ffffff0a;--color-ink:#111215;--color-primary:#c8f43c;--color-primary-strong:#8fc410;--color-success:#169a48;--color-success-soft:#e9f7ee;--color-danger:#d92d20;--color-danger-soft:#fdeeec;--color-warning:#c46a00;--color-education:#3c62ee;--color-education-soft:#edf1fe;--color-scenario:#ec6a1c;--color-scenario-soft:#fdf0e7;--color-lab:#0f9a86;--color-lab-soft:#e6f6f2;--color-warmup:#d63b6f;--color-warmup-soft:#fdedf2;--header-height:60px;--space-card-gap:24px;--space-card-padding:24px;--radius-card:16px;--font-sans:"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, monospace;--ease:cubic-bezier(.2, .7, .2, 1);--spring:cubic-bezier(.34, 1.4, .5, 1);--color-heatmap-0:#efefeb;--color-heatmap-1:#e8f7b7;--color-heatmap-2:#d4f26c;--color-heatmap-3:#b3e025;--color-heatmap-4:#7fae0b;--color-white:#fff;--color-mask:#000;--color-surface-raised:#fff;--color-surface-inset:#f2f2ef;--color-chip:#0000000d;--color-primary-hover:#bde82f;--color-button-dark-hover:#26282d;--color-progress-track:#e6e6e1;--color-header:#f6f6f3b8;--color-avatar-start:#dfe7ff;--color-avatar-end:#ffe6d4;--color-aurora-primary:#e4fb93;--color-aurora-secondary:#c9d6ff;--color-aurora-tertiary:#ffe0cc;--color-spot-border:#8fc410d9;--color-spot-glow:#c8f43c17;--color-countdown-muted:#c5c6c2;--color-countdown-highlight:#c8f43cd9;--color-stage-footer:#ffffffbf;--color-spark-outline:#ecece8;--color-shadow-dialog:#0006;--color-shadow-subtle:#00000014;--color-shadow-tab:#0000000a;--color-shadow-paper:#0000001f;--color-shadow-reward:#8fc410b3;--color-overlay:#0d0e1052;--color-mobile-overlay:#0d0e104d;--color-image-overlay:#000b;--color-drawer-overlay:#0007;--color-cover-fallback:#192638;--color-danger-text:#8b1c13;--color-success-text:#11532b;--color-notice-neutral:#ededea;--color-completion-flash:#f1fbd6;--color-focus-ring:#c8f43c80;--color-code-inline:#0000000f;--color-delivery-glow:#c8f43c38;--color-on-dark-secondary:#ffffff80;--color-on-dark-muted:#ffffff73;--color-document-canvas:#e9e9e6;--color-document-text:#16171a;--color-document-muted:#8a8b90;--color-document-secondary:#45464c;--color-document-code:#f1f1ee;--color-completion-track:#eef9e0;--color-confetti-gold:#ffd166;--radius-icon:11px;--radius-control:6px}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-background:#172336;--color-surface:#1e2e47;--color-surface-raised:#293e5a;--color-surface-inset:#152235;--color-border:#2c405a;--color-border-strong:#405672;--color-text:#ebebed;--color-text-secondary:#c2c5cc;--color-text-muted:#939bab;--color-surface-hover:#263958;--color-list-hover:#ffffff0a;--color-primary:#7aff4c;--color-primary-strong:#62db29;--color-success:var(--color-primary);--color-success-soft:#7aff4c1f;--color-danger:#ff8a83;--color-danger-soft:#ff8a831f;--color-warning:#ffc46b;--color-education:#a4bdff;--color-education-soft:#8cabff24;--color-scenario:#ffb078;--color-scenario-soft:#ffb0781f;--color-lab:#66dfcf;--color-lab-soft:#66dfcf1f;--color-warmup:#ffa0c0;--color-warmup-soft:#ffa0c01f;--color-heatmap-0:#293e5a;--color-heatmap-1:#2d4c3d;--color-heatmap-2:#426e39;--color-heatmap-3:#61b338;--color-heatmap-4:#7aff4c;--radius-card:6px;--radius-icon:6px;--color-chip:#263958;--color-primary-hover:#9bff65;--color-completion-flash:#7aff4c1f;--color-focus-ring:#7aff4c26;--color-overlay:#09111db8}*{box-sizing:border-box}html,body{margin:0}body{background:var(--color-background);color:var(--color-text);font:15px/1.55 var(--font-sans);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1;overflow-x:hidden}body:after{content:"";pointer-events:none;z-index:100;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}button,input{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}svg{flex:none;display:block}h1,h2,h3,p{margin:0}::view-transition-old(root){animation-duration:.32s}::view-transition-new(root){animation-duration:.32s}::view-transition-group(task-title){animation-duration:.55s;animation-timing-function:cubic-bezier(.3,.8,.2,1)}::view-transition-group(task-icon){animation-duration:.55s;animation-timing-function:cubic-bezier(.3,.8,.2,1)}.w{vertical-align:top;margin-bottom:-.06em;padding-bottom:.06em;display:inline-block;overflow:hidden}.w>span{display:inline-block}.loading-late{animation:.2s 1.5s both loading-late}.loading-bar{z-index:100;background:var(--color-primary);width:0;height:2px;box-shadow:0 0 8px var(--color-primary);opacity:0;pointer-events:none;position:fixed;top:0;left:0}.loading-bar.run{opacity:1;width:85%;transition:width 4s cubic-bezier(.1,.7,.2,1)}.loading-bar.done{opacity:0;width:100%;transition:width .2s,opacity .25s .2s}@keyframes loading-late{0%{opacity:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.aurora{z-index:-1;pointer-events:none;height:720px;-webkit-mask-image:linear-gradient(var(--color-mask) 40%, transparent);-webkit-mask-image:linear-gradient(var(--color-mask) 40%, transparent);mask-image:linear-gradient(var(--color-mask) 40%, transparent);position:absolute;inset:-120px 0 auto;overflow:hidden}.aurora i{filter:blur(70px);opacity:.55;border-radius:50%;animation:18s ease-in-out infinite alternate drift;position:absolute}.aurora i:first-child{background:var(--color-aurora-primary);width:520px;height:420px;top:40px;left:52%}.aurora i:nth-child(2){background:var(--color-aurora-secondary);width:460px;height:380px;animation-duration:22s;animation-delay:-6s;top:160px;left:72%}.aurora i:nth-child(3){background:var(--color-aurora-tertiary);opacity:.4;width:380px;height:320px;animation-duration:26s;animation-delay:-12s;top:220px;left:30%}@keyframes drift{0%{transform:translate(0)scale(1)}50%{transform:translate(-80px,40px)scale(1.12)}to{transform:translate(40px,-30px)scale(.94)}}#hdr{z-index:30;background:var(--color-header);-webkit-backdrop-filter:blur(16px)saturate(1.6);border-bottom:1px solid #0000;transition:border-color .2s,background-color .2s;position:sticky;top:0}#hdr.scrolled{border-bottom-color:var(--color-border)}.bar{grid-template-columns:minmax(max-content,1fr) auto minmax(max-content,1fr);align-items:center;gap:16px;height:60px;padding:0 28px;display:grid}.bar>.logo{justify-self:start}.logo{letter-spacing:-.015em;white-space:nowrap;align-items:center;gap:10px;height:100%;padding-right:16px;font-size:14px;font-weight:600;display:flex}.brand-logo{color:#fff;--brand-red:#e30613;flex:none;width:auto;height:26px;display:block}.primary-tabs{background:var(--color-surface);border:1px solid var(--color-card-hover-overlay);border-radius:12px;align-items:center;gap:2px;height:40px;padding:4px;display:flex;position:relative}.primary-tabs a{white-space:nowrap;z-index:1;height:30px;color:var(--color-text-secondary);border-radius:8px;flex:none;align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:500;transition:color .15s,background-color .15s;display:flex;position:relative}.primary-tabs a>svg{width:16px;height:16px}.primary-tabs a:hover{color:var(--color-text);background-color:var(--color-card-hover-overlay)}.primary-tabs a.on,.primary-tabs a.on:hover{color:var(--color-primary);background-color:#0000}.primary-tabs .pillbg{background:var(--color-surface-raised);pointer-events:none;z-index:0;height:30px;transition:left .35s var(--spring), width .35s var(--spring);border-radius:8px;position:absolute;top:4px;box-shadow:inset 0 1px #ffffff14,0 1px 3px #0000004d}.right{justify-self:end;align-items:center;gap:10px;display:flex}.pts-pill{border-left:1px solid var(--color-border);height:36px;color:var(--color-text);font:500 14px/1 var(--font-mono);align-items:center;gap:8px;padding:0 8px 0 16px;display:flex}.pts-pill.bump{animation:bump .5s var(--spring)}@keyframes bump{40%{transform:scale(1.14)}}.cmdk{width:36px;height:36px;color:var(--color-text-secondary);border-radius:6px;place-items:center;transition:color .15s,background .15s;display:grid}.cmdk:hover{color:var(--color-text);background:var(--color-surface-hover)}.avatar{background:linear-gradient(135deg, var(--color-avatar-start), var(--color-avatar-end));width:34px;height:34px;color:var(--color-text);border-radius:50%;flex:none;place-items:center;font-size:12.5px;font-weight:600;display:grid}main{max-width:1160px;margin:0 auto;padding:40px 28px 140px;position:relative}.logo{flex:none}.primary-tabs a{align-items:center;gap:8px;padding:0 16px;display:flex}.primary-tabs a>svg{opacity:1;width:16px;height:16px}.admin-link{height:36px;color:var(--color-text-secondary);border-radius:6px;align-items:center;gap:7px;padding:0 12px;font-size:13.5px;font-weight:500;transition:color .15s,background .15s;display:flex}.admin-link:hover,.admin-link.on{color:var(--color-text);background:var(--color-surface-hover)}.admin-link.on svg{color:var(--color-primary-strong)}.primary-tabs.none .pillbg{opacity:0}.app-root{display:contents}.points{vertical-align:baseline;white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.points-icon{background:var(--color-primary);border-radius:5px;flex:none;width:16px;height:16px;display:inline-block;transform:rotate(45deg)scale(.7)}.points-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:0;font-weight:500}.content-list{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);margin:0;padding:0;list-style:none;overflow:hidden}.content-list>li+li{border-top:1px solid var(--color-border)}.content-row{gap:14px;padding:16px 18px;display:flex}.list-marker{background:var(--color-surface-hover);width:26px;height:26px;color:var(--color-text-secondary);font:500 12px/1 var(--font-sans);border-radius:6px;flex:none;place-items:center;transition:background .2s,color .2s;display:grid}.list-marker.is-complete{background:var(--color-success-soft);color:var(--color-success)}.list-marker svg{width:15px;height:15px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);position:relative}.spot:before{content:"";border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%), var(--color-spot-border), transparent 60%);-webkit-mask:linear-gradient(var(--color-mask) 0 0) content-box, linear-gradient(var(--color-mask) 0 0);-webkit-mask-composite:xor;-webkit-mask:linear-gradient(var(--color-mask) 0 0) content-box exclude, linear-gradient(var(--color-mask) 0 0);mask:linear-gradient(var(--color-mask) 0 0) content-box exclude, linear-gradient(var(--color-mask) 0 0);padding:1px;transition:opacity .3s;position:absolute;inset:-1px}.spot:after{content:"";border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%), var(--color-spot-glow), transparent 45%);transition:opacity .3s;position:absolute;inset:0}.spot:hover:before,.spot:hover:after{opacity:1}.pill{white-space:nowrap;border-radius:5px;align-items:center;gap:6px;padding:4px 10px;font-size:12.5px;font-weight:500;display:inline-flex}.pill i{background:currentColor;border-radius:50%;width:6px;height:6px}.pill.edu{background:var(--color-education-soft);color:var(--color-education)}.pill.sce{background:var(--color-scenario-soft);color:var(--color-scenario)}.pill.lab{background:var(--color-lab-soft);color:var(--color-lab)}.pill.isn{background:var(--color-warmup-soft);color:var(--color-warmup)}.pill.st-task{background:var(--color-ink);color:var(--color-white)}.pill.st-hot{background:var(--color-danger-soft);color:var(--color-danger)}.pill.st-ok{background:var(--color-success-soft);color:var(--color-success)}.pill svg{width:13px;height:13px}.pill.plain{background:var(--color-chip);color:var(--color-text-secondary)}.btn{border:1px solid var(--color-border-strong);background:var(--color-white);white-space:nowrap;height:44px;transition:transform .25s var(--spring), background .15s;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:14.5px;font-weight:500;display:inline-flex}.btn:hover{background:var(--color-surface-hover)}.btn:active{transform:scale(.96)}.btn.dark{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-white)}.btn.dark:hover{background:var(--color-button-dark-hover)}.btn.lime{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-ink)}.btn.lime:hover{background:var(--color-primary-hover)}.btn.big{border-radius:16px;height:56px;padding:0 28px;font-size:16px}.btn.sm{border-radius:11px;height:38px;padding:0 15px;font-size:13.5px}.btn:disabled{opacity:.4;pointer-events:none}.btn svg.go{transition:transform .25s var(--ease)}.btn:hover svg.go{transform:translate(3px)}.late{color:var(--color-danger)}.soonish{color:var(--color-warning)}.muted{color:var(--color-text-secondary)}.faint{color:var(--color-text-muted)}.segs{gap:3px;display:flex}.segs span{background:var(--color-progress-track);border-radius:3px;flex:1;height:6px;transition:background .4s}.segs span.on{background:var(--color-ink)}.label{color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:500;display:flex}.sec-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin:72px 0 20px;display:flex}.sec-head h2{letter-spacing:-.03em;font-size:24px;font-weight:600}.sec-head p{color:var(--color-text-muted);margin-top:2px;font-size:14px}.odo{vertical-align:bottom;height:1em;line-height:1em;display:inline-flex;overflow:hidden}.dg{height:1em;display:inline-block;overflow:hidden}.col{flex-direction:column;transition:transform .75s cubic-bezier(.2,.9,.25,1);display:flex}.col span{text-align:center;height:1em;line-height:1em}.sep{display:inline-block}.card-progress{--progress-fill:var(--color-ink);width:110px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:8px;margin-left:auto;font-size:12px;display:flex}.card-progress>span{text-align:right;min-width:32px}.card-progress progress{appearance:none;background:var(--color-border-strong);border:0;border-radius:3px;flex:1;width:100%;min-width:0;height:5px;display:block;overflow:hidden}.card-progress progress::-webkit-progress-bar{background:var(--color-border-strong)}.card-progress progress::-webkit-progress-value{background:var(--progress-fill);border-radius:3px}.card-progress progress::-moz-progress-bar{background:var(--progress-fill);border-radius:3px}.rich-text>*+*{margin-top:10px}.rich-text :is(ul,ol){color:var(--color-text-secondary);padding-left:22px}.rich-text li+li{margin-top:4px}.rich-text strong{color:var(--color-text);font-weight:600}.rich-text a{color:var(--color-primary);text-underline-offset:3px;text-decoration:underline}.rich-text code{background:var(--color-surface-inset);font:.92em var(--font-mono);border-radius:5px;padding:1px 5px}.md-note-blue{color:var(--color-education)}.md-note-green{color:var(--color-primary)}.md-note-red{color:var(--color-danger)}.md-note-yellow,.md-note-orange{color:var(--color-warning)}.md-note-purple{color:#c9a7ff}.tip-host{border-radius:6px;display:inline-flex;position:relative}.tip-host:focus-visible{outline:2px solid var(--color-primary-strong);outline-offset:2px}.tip{z-index:20;background:var(--color-surface-raised);color:var(--color-text);white-space:nowrap;opacity:0;pointer-events:none;border-radius:8px;padding:6px 10px;font-size:12.5px;font-weight:500;line-height:1.3;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px);box-shadow:0 8px 24px #0006}.tip:after{content:"";border:5px solid #0000;border-top-color:var(--color-surface-raised);margin-left:-5px;position:absolute;top:100%;left:50%}.tip-host:hover .tip,.tip-host:focus-visible .tip{opacity:1;transform:translate(-50%)}.stage{padding:20px 0 8px;position:relative}.eyebrow{color:var(--color-text-secondary);flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;display:flex}.eyebrow .live{background:var(--color-success);width:7px;height:7px;box-shadow:0 0 0 4px var(--color-success-soft);border-radius:50%}.headline{letter-spacing:-.045em;margin-top:22px;font-size:clamp(30px,4.4vw,52px);font-weight:600;line-height:1.05}.headline .soft{color:var(--color-text-muted)}.mega{font:500 clamp(68px, 13.5vw, 184px)/1 var(--font-mono);letter-spacing:0;flex-wrap:wrap;align-items:flex-end;gap:0 .18em;margin:18px 0 0 -.04em;display:flex}.mega .dg+.dg{margin-left:-.07em}.mega .g{align-items:flex-end;display:flex}.mega small{font:500 clamp(14px, 1.6vw, 20px)/1 var(--font-sans);letter-spacing:0;color:var(--color-text-muted);margin:0 0 .5em .5em}.mega .g.s{color:var(--color-countdown-muted)}.mega .g.s .odo{background:linear-gradient(transparent 62%, var(--color-countdown-highlight) 62%, var(--color-countdown-highlight) 92%, transparent 92%)}.stage-foot{background:var(--color-stage-footer);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);align-items:center;gap:24px;margin-top:34px;padding:20px 22px;display:flex}.chip-task{flex:1;align-items:center;gap:18px;min-width:0;display:flex}.chip-task .meta{flex:1;min-width:0}.chip-task .t{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;font-size:18px;font-weight:600;overflow:hidden}.chip-task .s{color:var(--color-text-muted);margin-top:1px;font-size:13.5px}.chip-task .segs-wrap{flex:none;width:180px}.chip-task .segs{width:100%}.continue-task{flex:none}.chip-task .sl{color:var(--color-text-muted);text-align:right;margin-top:6px;font-size:12.5px}.ico{border-radius:13px;flex:none;place-items:center;width:46px;height:46px;display:grid}.ico.edu{background:var(--color-education-soft);color:var(--color-education)}.ico.sce{background:var(--color-scenario-soft);color:var(--color-scenario)}.ico.lab{background:var(--color-lab-soft);color:var(--color-lab)}.ico.isn{background:var(--color-warmup-soft);color:var(--color-warmup)}.magnetic{transition:transform .35s var(--spring), background .15s}.bento{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"ring pts streak";gap:14px;margin-top:14px;display:grid}.tile{flex-direction:column;padding:20px 22px;display:flex;overflow:hidden}.tile .big{letter-spacing:-.04em;font-size:40px;font-weight:600;line-height:1;font-family:var(--font-mono);margin-top:14px}.tile .sub{color:var(--color-text-muted);margin-top:8px;font-size:13.5px}.tile .sub b{color:var(--color-success);font-weight:500}.t-ring{grid-area:ring}.t-pts{grid-area:pts}.t-streak{grid-area:streak}.tile-of{color:var(--color-text-muted);letter-spacing:-.02em;margin-left:8px;font-size:22px}.tile-bar{background:var(--color-surface-hover);border-radius:3px;height:6px;margin-top:16px;overflow:hidden}.tile-bar>i{border-radius:inherit;background:var(--color-primary);height:100%;transition:width 1.4s var(--ease);display:block}.spark{margin-top:auto;padding-top:14px}.spark path.line{fill:none;stroke:var(--color-ink);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0}.anim .spark path.line{animation:draw 1.6s .3s var(--ease) both}@keyframes draw{0%{stroke-dashoffset:1px}}.spark circle{fill:var(--color-primary);stroke:var(--color-ink);stroke-width:2px}.week7{grid-template-columns:repeat(7,1fr);gap:5px;margin-top:auto;padding-top:16px;display:grid}.week7 div{text-align:center;color:var(--color-text-muted);font-size:11px}.week7 div i{aspect-ratio:1;background:var(--color-heatmap-0);border-radius:7px;margin-bottom:5px;display:block}.week7 div.on i{background:var(--color-primary)}.week7 div.today{color:var(--color-text)}.week7 div.today i{outline:2px solid var(--color-ink);outline-offset:1px}.filters{background:var(--color-chip);border-radius:11px;gap:2px;padding:3px;display:flex;position:relative}.filters button{z-index:1;height:32px;color:var(--color-text-secondary);border-radius:8px;padding:0 14px;font-size:13.5px;font-weight:500;transition:color .2s;position:relative}.filters button.on{color:var(--color-text)}.filters .pillbg{background:var(--color-white);box-shadow:0 1px 3px var(--color-shadow-subtle);transition:left .35s var(--spring), width .35s var(--spring);border-radius:8px;position:absolute;top:3px;bottom:3px}.dashboard-task.content-row{grid-template-columns:26px minmax(0,1fr) auto 16px;align-items:center;transition:background .15s;display:grid}.dashboard-task:hover{background:var(--color-list-hover)}.dashboard-task-copy{min-width:0}.dashboard-task-title{overflow-wrap:anywhere;font-weight:500}.dashboard-task-meta,.dashboard-task-status{color:var(--color-text-muted);font-size:13px}.dashboard-task-meta{margin-top:4px}.dashboard-task-status{text-align:right;gap:4px;display:grid}.dashboard-task-status small{font-size:12px}.dashboard-task-status .task-complete{color:var(--color-success)}.dashboard-task-status .task-missed{color:var(--color-danger)}.dashboard-task-arrow{color:var(--color-text-muted)}.dashboard-task-arrow svg{width:16px;height:16px}.task-list-empty{text-align:center;color:var(--color-text-muted);padding:40px 18px}.dashboard-assignment-head.content-row:hover{background:0 0}.dashboard-assignment-items.content-list{border:0;border-top:1px solid var(--color-border);background:0 0;border-radius:0}.dashboard-assignment-items .dashboard-task.content-row{padding-left:58px}.back{color:var(--color-text-secondary);transition:color .15s, gap .2s var(--spring);align-items:center;gap:6px;margin-bottom:30px;font-size:14px;font-weight:500;display:inline-flex}.back:hover{color:var(--color-text);gap:10px}.d-head{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:40px;padding:32px;display:grid}.detail-tags{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:18px;display:flex}.d-head h1{letter-spacing:-.045em;width:-moz-fit-content;width:fit-content;max-width:760px;margin:0 0 14px;font-size:clamp(30px,4.6vw,54px);font-weight:600;line-height:1.05}.d-head p{color:var(--color-text-secondary);max-width:620px;font-size:17px}.d-facts{flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none;display:flex}.d-facts svg{width:14px;height:14px;color:var(--color-text-muted)}.d-fact-icon svg{width:18px;height:18px}.big-ring{width:128px;height:128px;position:relative}.big-ring svg{transform:rotate(-90deg)}.big-ring circle{fill:none;stroke-width:9px}.big-ring .bg{stroke:var(--color-progress-track)}.big-ring .fg{stroke:var(--color-ink);stroke-linecap:round;transition:stroke-dashoffset 1s var(--ease)}.big-ring.done .fg{stroke:var(--color-success)}.big-ring div{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.big-ring b{font:600 26px/1 var(--font-mono);letter-spacing:-.04em}.big-ring small{color:var(--color-text-muted);margin-top:4px;font-size:12px}.d-grid{gap:var(--space-card-gap);margin-top:var(--space-card-gap);grid-template-columns:minmax(0,1fr) 360px;align-items:start;display:grid}.content-card{padding:var(--space-card-padding);margin-bottom:var(--space-card-gap)}.content-card>h2{margin:0 0 20px}.content-card>:last-child{margin-bottom:0}.content-card-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:14px;display:flex}.content-card-heading h2{margin:0}.content-card-heading>span{color:var(--color-text-muted);font-size:14px}.content-card .content-list{background:0 0;border:0;border-radius:0}.content-card .content-list>li>.content-row,.content-card .content-list>.content-row{padding-left:0;padding-right:0}.content-card h2,.course-section-heading h2,.course-about h2{letter-spacing:-.02em;justify-content:space-between;align-items:baseline;margin-bottom:14px;font-size:19px;font-weight:600;display:flex}.prose p{color:var(--color-text-secondary);font-size:15.5px}.prose p+p{margin-top:10px}.notice{border-radius:12px;align-items:flex-start;gap:10px;max-width:720px;margin-top:22px;padding:14px 16px;font-size:14px;display:flex}.notice svg{margin-top:2px}.notice.red{background:var(--color-danger-soft);color:var(--color-danger-text)}.notice.gray{background:var(--color-notice-neutral);color:var(--color-text-secondary)}.notice.green{background:var(--color-success-soft);color:var(--color-success-text)}.step{align-items:flex-start;transition:background .3s}.step.just .step-node{animation:popn .6s var(--spring)}.step.just{animation:1.4s ease-out flash}@keyframes popn{0%{transform:scale(.3)}to{transform:scale(1)}}@keyframes flash{0%{background:var(--color-completion-flash)}to{background:0 0}}.step .body{flex:1;min-width:0;padding-top:2px}.step .line{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.step .q{font-size:15px;font-weight:500}.step.done .q{color:var(--color-text-secondary)}.steps{--node:26px;--pad-y:16px}.steps>.step{gap:16px;position:relative}.steps>li+li{border-top:0}.steps>.step:not(:last-child):after{content:"";left:calc(var(--node) / 2 - 1px);top:calc(var(--pad-y) + var(--node) + 5px);bottom:calc(5px - var(--pad-y));border-left:2px solid var(--color-border-strong);position:absolute}.steps>.step.is-linked:after{border-left-color:var(--color-primary)}.steps>.step:has(+.step.locked):after{border-left-style:dashed}.step-node{width:var(--node);height:var(--node);background:var(--color-surface);border:1.5px solid var(--color-border-strong);color:var(--color-text-muted);border-radius:50%;flex:none;place-items:center;transition:border-color .2s;display:grid}.step-node svg{width:14px;height:14px}.step.is-next .step-node,.step.done .step-node{border:2px solid var(--color-primary)}.step.done .step-node:before{content:"";background:var(--color-primary);border-radius:50%;width:8px;height:8px}.steps .step .body{padding-top:3px}@media (max-width:640px){.steps{--pad-y:14px}}.skel.step-skel-q,.skel.step-skel-answer{animation:none}.step-skel-q{width:min(280px,60%);height:14px;margin-top:4px}.step-skel-answer{border-radius:12px;height:44px;margin-top:14px}.ptsb{font:500 13px/1 var(--font-mono);color:var(--color-text-muted);white-space:nowrap;padding-top:3px}.answer{gap:8px;margin-top:14px;display:flex}.answer input{border:1px solid var(--color-border-strong);background:var(--color-white);min-width:0;height:44px;font-family:var(--font-mono);border-radius:12px;outline:0;flex:1;padding:0 15px;font-size:14px;transition:border-color .15s,box-shadow .2s}.answer input::placeholder{font-family:var(--font-sans);color:var(--color-text-muted)}.answer input:focus{border-color:var(--color-text-muted);box-shadow:none}.answer .btn{border-radius:12px;flex:none;height:44px;padding:0 20px}.answer.wrong input{border-color:var(--color-danger);box-shadow:0 0 0 4px var(--color-danger-soft);animation:.4s shake}.err{color:var(--color-danger);margin-top:7px;font-size:13px;display:none}.answer.wrong+.err{display:block}@keyframes shake{20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.side{top:calc(var(--header-height) + 36px);flex-direction:column;gap:14px;display:flex;position:sticky}.cp{padding:var(--space-card-padding)}.cp-title{letter-spacing:-.02em;align-items:center;gap:10px;margin:0 0 14px;font-size:19px;font-weight:600;display:flex}.cp-title svg{color:var(--color-text-secondary)}.cp-files{margin:0;padding:0;list-style:none}.cp-files li{border-top:1px solid var(--color-border);align-items:center;gap:10px;padding:12px 0;display:flex}.cp-files li:first-child{border-top:0}.cp-password{color:var(--color-text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;justify-self:start;padding:0;font-size:12px}.cp-password code{font-family:var(--font-mono);color:var(--color-text)}.content-writeup>.btn{margin-top:12px}.cp-file-type{border-radius:var(--radius-card);background:var(--color-chip);width:32px;height:32px;font-family:var(--font-mono);color:var(--color-primary);flex:none;place-items:center;font-size:9.5px;font-weight:600;display:grid}.cp-machine-info{flex:1;gap:3px;min-width:0;display:grid}.cp-machine-info b{overflow-wrap:anywhere;font-size:13.5px;font-weight:500}.cp-machine-info small{color:var(--color-text-muted);font-size:12px}.cp-files .btn{flex:none}.spinner{border:2px solid var(--color-border-strong);border-top-color:var(--color-primary);vertical-align:middle;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}.btn.lime .spinner{border-color:color-mix(in srgb, var(--color-ink) 20%, transparent);border-top-color:var(--color-ink)}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.env-heading{margin:0}.env-time{font-family:var(--font-mono)}.env-machines{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent;max-height:268px;margin:0;padding:0;list-style:none;overflow:hidden auto}.env-machines:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.env-machines li{align-items:center;gap:12px;min-height:52px;padding:10px 0;font-size:14px;display:flex}.env-machines li+li{border-top:1px solid var(--color-border)}.env-machines li.is-on .env-os{color:var(--color-primary)}.env-address{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--font-mono);flex:1;font-size:13.5px;font-weight:500;overflow:hidden}.env-skeleton{background:var(--color-surface-hover);border-radius:4px;flex:1;max-width:140px;height:8px}.env-skeleton-action{border-radius:var(--radius-control);width:28px;height:28px;display:block}.env-skeleton.is-loading{background:linear-gradient(90deg, transparent 38%, var(--color-border-strong) 50%, transparent 62%) var(--color-surface-hover);background-repeat:no-repeat;background-size:400% 100%;animation:1.6s ease-in-out infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:0 0}}@media (prefers-reduced-motion:reduce){.env-skeleton.is-loading{animation:none}}.env-state{color:var(--color-text-muted);font-size:12px}.env-actions{flex:none;gap:6px;margin-left:auto;display:flex}.env-icon-btn{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);width:28px;height:28px;color:var(--color-text-secondary);flex:none;place-items:center;display:grid}.env-icon-btn:hover{color:var(--color-text);background:var(--color-list-hover)}.env-copy-icon{display:grid}.env-icon-btn.is-copied{color:var(--color-success);border-color:var(--color-success);background:var(--color-success-soft)}.env-icon-btn.is-copied .env-copy-icon{animation:copy-pop .32s var(--spring)}@keyframes copy-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.env-icon-btn.is-copied .env-copy-icon{animation:none}}.env-icon-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.env-controls{gap:8px;display:flex}.env-controls [data-env=stop]{flex:1}.env-icon-only{justify-content:center;width:46px;padding:0}.pdf{align-items:flex-start;gap:14px;padding:20px;display:flex}.pdf-ic{background:var(--color-warmup-soft);width:40px;height:48px;color:var(--color-warmup);font:700 10.5px/1 var(--font-mono);border-radius:7px 14px 7px 7px;flex:none;place-items:center;display:grid}.pdf b{font-weight:600;display:block}.pdf p{color:var(--color-text-muted);margin:2px 0 12px;font-size:13.5px}.doc{background:var(--color-surface);border:1px solid var(--color-border);width:min(600px,100%);box-shadow:0 30px 90px -12px var(--color-shadow-dialog);transition:transform .4s var(--spring);border-radius:20px;margin-top:2vh;overflow:hidden;transform:scale(.95)}.overlay.open .doc{transform:none}.doc-h{border-bottom:1px solid var(--color-border);align-items:center;gap:12px;padding:14px 16px;display:flex}.doc-h .pdf-ic{width:30px;height:36px;font-size:8.5px}.doc-h b{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14.5px;font-weight:600;overflow:hidden}.doc-body{background:var(--color-document-canvas);max-height:62vh;padding:18px;overflow:auto}.doc-page{background:var(--color-white);color:var(--color-document-text);box-shadow:0 1px 4px var(--color-shadow-paper);border-radius:4px;padding:34px 36px;font-size:13.5px;line-height:1.65}.doc-page small{color:var(--color-document-muted);letter-spacing:.04em;text-transform:uppercase;font-size:11.5px}.doc-page h4{letter-spacing:-.02em;margin:6px 0;font-size:20px}.doc-page h5{margin:22px 0 4px;font-size:14px}.doc-page p{color:var(--color-document-secondary);margin:0 0 6px}.doc-page code{font-family:var(--font-mono);background:var(--color-document-code);color:var(--color-document-text);border-radius:4px;padding:2px 6px}.step-choice{justify-items:start;gap:10px;margin-top:14px;display:grid}.step-choice .exam-options{justify-self:stretch}.step-choice.wrong .exam-options label:has(:checked){border-color:var(--color-danger);animation:.4s shake}.step-choice.wrong+.err{display:block}.step-error{color:var(--color-danger);margin-top:10px;font-size:13px}.step-hints{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.step-hint{background:var(--color-surface-hover);color:var(--color-text-secondary);border-radius:12px;flex-basis:100%;align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;display:flex}.step-hint-open{border-radius:var(--radius-control);height:30px;color:var(--color-text-secondary);font:500 13px/1 var(--font-sans);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 10px 0 8px;transition:background .15s,color .15s;display:inline-flex}.step-hints>.step-hint-open:first-child{margin-left:-8px}.step-hint-open:hover{background:var(--color-surface-hover);color:var(--color-text)}.step-hint-open:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.step-hint-open>svg{color:var(--color-warning)}.step-hint-cost{color:var(--color-text-muted);font:500 12px/1 var(--font-mono)}.step-hint>svg{flex:none;margin-top:2px}.step-hint-confirm{flex-direction:column}.step-hint-confirm>div{gap:8px;display:flex}.lsearch{border:1px solid var(--color-border);background:var(--color-surface);height:40px;color:var(--color-text-muted);border-radius:11px;align-items:center;gap:8px;width:280px;padding:0 12px;display:flex}.lsearch input{width:100%;color:var(--color-text);background:0 0;border:0;outline:0;font-size:14px}.lsearch:focus-within{border-color:var(--color-border-strong)}.lgrid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;display:grid}.lcard{flex-direction:column;min-height:232px;padding:20px;display:flex}.lc-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.lcard .kind{color:var(--color-text-muted);margin-top:16px;font-size:13px}.lcard h3{letter-spacing:-.02em;width:-moz-fit-content;width:fit-content;margin-top:3px;font-size:17px;font-weight:600;line-height:1.3}.lcard p{color:var(--color-text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:6px;font-size:13.5px;display:-webkit-box;overflow:hidden}.lc-f{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;padding-top:16px;font-size:13px;display:flex}.sec-head .btn{height:38px;font-size:13.5px}.catalog-empty{text-align:center;color:var(--color-text-muted);padding:48px 24px}.catalog-empty .btn{margin-top:16px}.library-layout,.library-content{min-width:0}.catalog-tools{z-index:5;margin-bottom:var(--space-card-gap);padding:12px}.library-toolbar{align-items:stretch;gap:8px;display:flex}.library-toolbar .lsearch{border-radius:var(--radius-control);background:0 0;border:0;flex:220px;width:auto;min-width:160px;height:auto;padding:0 12px}.library-toolbar .lsearch:focus-within{outline:1px solid var(--color-border-strong)}.library-toolbar .lsearch input{min-width:0;height:44px}.library-toolbar .lsearch input::placeholder{color:var(--color-text-muted)}.catalog-filters{display:contents}.catalog-filter{border-radius:var(--radius-control);background:var(--color-surface-inset);border:1px solid #0000;flex-direction:column;flex:0 174px;justify-content:center;min-width:0;padding:9px 10px;transition:border-color .15s;display:flex}.catalog-filter.is-active,.catalog-filter:hover,.catalog-filter:focus-within{border-color:var(--color-border-strong)}.custom-filter{position:relative}.custom-filter>button{width:100%;height:24px;color:var(--color-text);font:500 13px var(--font-sans);text-align:left;justify-content:space-between;align-items:center;gap:8px;display:flex}.custom-filter>button:after{content:"";border-radius:inherit;position:absolute;inset:0}.custom-filter>button:focus-visible{outline:none}.custom-filter:has(>button:focus-visible){outline:2px solid var(--color-primary-strong);outline-offset:2px}.custom-filter>button>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filter-chevron{color:var(--color-text-muted);flex:none;transition:transform .15s;transform:rotate(90deg)}.filter-chevron.is-open{transform:rotate(-90deg)}.filter-chevron svg{width:12px;height:12px}.filter-options{z-index:10;overscroll-behavior:contain;border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:max-content;min-width:100%;max-width:min(280px,100vw - 48px);max-height:min(320px,45dvh);box-shadow:0 12px 32px var(--color-shadow-dialog);padding:6px;position:absolute;top:calc(100% + 8px);left:0;overflow-y:auto}.filter-options.align-end{left:auto;right:0}.filter-options [role=option]{border-radius:var(--radius-control);min-height:40px;color:var(--color-text-secondary);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:9px 10px;font-size:13px;display:flex}.filter-options [data-highlighted=true]{background:var(--color-surface-hover);color:var(--color-text)}.filter-options [aria-selected=true]{color:var(--color-text);font-weight:500}.filter-options [role=option] svg{width:15px;height:15px;color:var(--color-primary-strong)}.catalog-filter.library-sort{flex-basis:144px}.library-result-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.library-result-heading h2{letter-spacing:-.02em;font-size:17px;font-weight:600}.library-result-heading>span{color:var(--color-text-muted);white-space:nowrap;font-size:12.5px}.library-content .lgrid{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width:980px){.library-content .lgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.library-content .lgrid{grid-template-columns:minmax(0,1fr)}}.library-content .lcard .kind{font-size:11.5px;line-height:1.45}.library-chips{border-top:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0 0;padding:12px 4px 0;display:flex}.library-chips button{background:var(--color-surface-hover);color:var(--color-text-secondary);border-radius:6px;align-items:center;gap:8px;padding:4px 8px;font-size:12px;display:flex}.library-chips button>span{color:var(--color-text-muted);font-size:16px;line-height:1}.library-chips .clear-all{color:var(--color-text-muted);text-underline-offset:3px;background:0 0;text-decoration:underline}.catalog-empty>svg{color:var(--color-text-muted);margin:0 auto 16px}.catalog-empty h3{color:var(--color-text);margin-bottom:6px;font-size:18px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:900px){.library-toolbar{flex-wrap:wrap}.library-toolbar .lsearch{flex-basis:100%}.catalog-filter,.catalog-filter.library-sort{flex:140px}}@media (max-width:420px){.catalog-filter,.catalog-filter.library-sort{flex-basis:calc(50% - 4px)}}.lc-cover{margin:-20px -20px 0;position:relative}.lc-cover img{aspect-ratio:2;object-fit:contain;border-radius:calc(var(--radius-card) - 1px) calc(var(--radius-card) - 1px) 0 0;background:var(--color-cover-fallback);width:100%;height:auto;display:block}.lc-cover>.pill{position:absolute;top:12px;right:12px}.course-preview-head{grid-template-columns:minmax(0,1fr) 360px}.course-preview-cover{border-radius:var(--radius-card);width:100%;height:auto}.course-about>.btn{margin-top:20px}@media (max-width:760px){.course-preview-head{grid-template-columns:1fr}.course-preview-cover{max-width:480px}}.cover-card{min-height:0}.cover-card .card-facts{margin-top:12px}.cover-card>p{margin-top:6px}.cover-card .lc-f{flex-wrap:nowrap;gap:16px}.cover-card-chips{justify-content:space-between;align-items:flex-start;gap:8px;display:flex;position:absolute;inset:12px 12px auto}.cover-card-chips .pill{background:var(--color-chip);color:var(--color-text);border-radius:var(--radius-control);padding:4px 8px;font-size:11px;font-weight:600}.cover-card-chips .cover-card-points{margin-left:auto}.cover-card .cover-card-chips .pill.is-complete{background:var(--color-success-soft);color:var(--color-success)}.lcard .cover-card-title{letter-spacing:-.01em;margin:18px 0 0;font-size:17px;font-weight:600}.cover-card .lc-cover-placeholder{padding-top:48px}.cover-card .card-progress{flex:1;width:auto;min-width:0;margin-left:auto}.lc-cover-placeholder{aspect-ratio:2;border-radius:calc(var(--radius-card) - 1px) calc(var(--radius-card) - 1px) 0 0;background:var(--color-cover-fallback);color:var(--color-white);flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;padding:20px;display:flex}.lc-cover-placeholder>svg{color:var(--color-primary)}.lc-cover-placeholder h3{margin:0;font-size:20px}.catalog-pages{color:var(--color-text-muted);justify-content:center;align-items:center;gap:14px;margin-top:20px;font-size:13px;display:flex}.catalog-skeleton .card,.catalog-skeleton .content-row{pointer-events:none}.skel{background:var(--color-surface-hover);border-radius:6px;animation:1.4s ease-in-out infinite skeleton-pulse;display:block}.skel-cover{aspect-ratio:2;border-radius:calc(var(--radius-card) - 1px) calc(var(--radius-card) - 1px) 0 0}.skel-line{height:14px}.skel-line.sm{height:10px}.skel-art{border-radius:var(--radius-card);width:64px;height:64px}.skel-row{align-items:center}.skel-mark{border-radius:8px;flex:none;width:32px;height:32px}.skel-copy{flex-direction:column;flex:1;gap:8px;display:flex}@keyframes skeleton-pulse{50%{opacity:.5}}.skel-mark.round{border-radius:50%;width:40px;height:40px}.overlay{z-index:70;background:var(--color-overlay);-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;justify-content:center;align-items:flex-start;padding:14vh 16px 16px;transition:opacity .18s;display:flex;position:fixed;inset:0}.overlay.open{opacity:1;pointer-events:auto}.palette{background:var(--color-white);width:min(600px,100%);box-shadow:0 30px 90px -12px var(--color-shadow-dialog);transition:transform .3s var(--spring);border-radius:18px;overflow:hidden;transform:scale(.96)translateY(-6px)}.overlay.open .palette{transform:none}.palette input{border:0;border-bottom:1px solid var(--color-border);outline:0;width:100%;height:62px;padding:0 22px;font-size:17px}.pl{max-height:380px;padding:8px;overflow-y:auto}.pl h4{color:var(--color-text-muted);margin:8px 12px 6px;font-size:12px;font-weight:500}.pi{cursor:pointer;border-radius:11px;align-items:center;gap:12px;padding:10px 12px;font-size:14.5px;display:flex}.pi .ico{border-radius:9px;width:32px;height:32px}.pi .ico svg{width:16px;height:16px}.pi .meta{color:var(--color-text-muted);white-space:nowrap;margin-left:auto;font-size:13px}.pi.sel{background:var(--color-surface-hover)}.pl .none{text-align:center;color:var(--color-text-muted);padding:28px}.pfoot{border-top:1px solid var(--color-border);color:var(--color-text-muted);gap:16px;padding:10px 18px;font-size:12px;display:flex}.pfoot kbd{font:500 11px/1 var(--font-mono);background:var(--color-surface-hover);color:var(--color-text-secondary);border-radius:4px;margin-right:4px;padding:3px 5px}.win{background:var(--color-white);text-align:center;width:min(440px,100%);box-shadow:0 30px 90px -12px var(--color-shadow-dialog);transition:transform .45s var(--spring);border-radius:26px;margin-top:4vh;padding:44px 32px 28px;position:relative;overflow:hidden;transform:scale(.9)}.overlay.open .win{transform:none}.win svg.burst{margin:0 auto 20px}.burst circle.prog{stroke:var(--color-success);stroke-dasharray:252;stroke-dashoffset:252px;animation:dash .9s .15s var(--ease) forwards}.burst path{stroke-dasharray:40;stroke-dashoffset:40px;animation:dash .4s .85s var(--ease) forwards}@keyframes dash{to{stroke-dashoffset:0}}.win h3{letter-spacing:-.035em;font-size:28px;font-weight:600}.win p{color:var(--color-text-secondary);margin-top:6px}.win .gain{font:600 16px/1 var(--font-mono);color:var(--color-text);background:var(--color-chip);border-radius:var(--radius-control);margin-top:20px;padding:10px 16px;display:inline-block}.win .acts{gap:8px;margin-top:28px;display:flex}.win .acts .btn{flex:1}#confetti{pointer-events:none;z-index:80;position:fixed;inset:0}.fly{z-index:90;font:600 15px/1 var(--font-mono);background:var(--color-primary);color:var(--color-ink);pointer-events:none;box-shadow:0 8px 24px -6px var(--color-shadow-reward);border-radius:99px;padding:8px 12px;position:fixed;top:0;left:0}.console-overlay{align-items:center;padding:24px}.console-dialog{background:var(--color-surface);width:min(1180px,100%);height:min(820px,100dvh - 48px);box-shadow:0 30px 90px -12px var(--color-shadow-dialog);border-radius:18px;grid-template-rows:auto 1fr auto;gap:10px;padding:14px 16px;display:grid}.console-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.console-bar strong{margin-right:auto;font-weight:600}.console-tabs{gap:6px;display:flex}.console-state{color:var(--color-text-secondary);font-size:12.5px}.console-screen,.console-terminal{background:#000;border-radius:10px;min-height:0;overflow:hidden}.console-terminal{padding:8px}.console-hint{margin:0}@media (max-width:640px){.console-overlay{padding:0}.console-dialog{border-radius:0;height:100%}}.data-table{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);font-size:13px;overflow:clip}:root[data-theme=dark] .data-table{border-color:#0000}.data-scroll{overflow:visible}.data-table table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:100%}.data-table th,.data-table td{text-align:left;vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--color-border);height:40px;padding:0 12px;overflow:hidden}.data-table th{top:var(--header-height);z-index:2;background:var(--color-surface);height:36px;color:var(--color-text-muted);font-size:12px;font-weight:500;position:sticky}.data-table th.end,.data-table td.end{text-align:right;font-variant-numeric:tabular-nums}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover td{background:var(--color-list-hover)}.data-table tbody tr.is-selected td{background:var(--color-success-soft)}.data-table tbody tr.is-disabled td{color:var(--color-text-muted)}.data-table td a{color:var(--color-text);font-weight:500}.data-table td a:hover{text-underline-offset:3px;text-decoration:underline}.data-table .mono{font-family:var(--font-mono);font-size:12.5px}.data-check{width:44px;text-align:center!important}.data-check input{width:15px;height:15px;accent-color:var(--color-primary-strong);vertical-align:middle}.data-sort{color:inherit;font:inherit;align-items:center;gap:4px;display:inline-flex}.data-sort svg{opacity:0;width:12px;height:12px}.data-sort:hover,.data-sort.on{color:var(--color-text)}.data-sort:hover svg{opacity:.4}.data-sort.on svg{opacity:1}.end .data-sort{flex-direction:row-reverse}.data-empty{color:var(--color-text-muted);text-align:center!important;height:96px!important}.data-bulk{border-bottom:1px solid var(--color-border);background:var(--color-surface-raised);flex-wrap:wrap;align-items:center;gap:14px;min-height:48px;padding:6px 12px;display:flex}.data-bulk strong{font-weight:600}.data-link{color:var(--color-primary-strong);font-size:13px;font-weight:500}.data-bulk-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.data-foot{border-top:1px solid var(--color-border);min-height:44px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums;align-items:center;gap:18px;padding:0 12px;display:flex}.data-size{align-items:center;gap:8px;display:flex}.data-size select{border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface-inset);height:28px;color:var(--color-text);font:inherit;padding:0 6px}.data-pager{align-items:center;gap:4px;margin-left:auto;display:flex}.data-pager span{padding:0 8px}.data-pager button{border-radius:var(--radius-control);width:28px;height:28px;color:var(--color-text);place-items:center;font-size:16px;display:grid}.data-pager button:hover:not(:disabled){background:var(--color-surface-hover)}.data-pager button:disabled{opacity:.3}@media (max-width:980px){.data-scroll{overflow-x:auto}.data-table table{min-width:1100px}.data-table th{position:static}.data-foot{flex-wrap:wrap;gap:10px 18px;padding:8px 12px}}.data-select{border-radius:var(--radius-control);border:1px solid var(--color-border-strong);background:var(--color-surface-inset);height:34px;color:var(--color-text);font:inherit;padding:0 8px;font-size:13px}.data-rate{font-variant-numeric:tabular-nums;text-align:right;grid-template-columns:1fr 40px;align-items:center;gap:10px;display:grid}.data-table .admin-done{vertical-align:middle}.data-table th.data-check,.data-table td.data-check{text-overflow:clip;padding:0}:root[data-theme=dark] body:after,:root[data-theme=dark] .aurora,:root[data-theme=dark] .spot:before,:root[data-theme=dark] .spot:after{display:none}:root[data-theme=dark] #hdr{background:var(--color-background)}:root[data-theme=dark] #hdr.scrolled{background:color-mix(in srgb, var(--color-background) 72%, transparent)}:root[data-theme=dark] .card,:root[data-theme=dark] .content-list{border-color:#0000}:root[data-theme=dark] .filters{background:var(--color-surface);border-radius:var(--radius-card)}:root[data-theme=dark] .filters button{border-radius:var(--radius-card)}:root[data-theme=dark] .pillbg{border-radius:var(--radius-card);background:var(--color-surface-raised)!important;box-shadow:none!important}:root[data-theme=dark] .primary-tabs .pillbg{border-radius:8px;background:var(--color-surface-raised)!important;box-shadow:inset 0 1px #ffffff14,0 1px 3px #0000004d!important}:root[data-theme=dark] .pfoot kbd{background:var(--color-surface-raised)}:root[data-theme=dark] .avatar{background:var(--color-surface-raised);color:var(--color-text)}:root[data-theme=dark] .btn{background:var(--color-surface-inset);border-color:var(--color-border-strong);border-radius:var(--radius-card)}:root[data-theme=dark] .btn:hover{background:var(--color-surface-raised)}:root[data-theme=dark] .btn.dark,:root[data-theme=dark] .btn.lime{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-surface-inset)}:root[data-theme=dark] .btn.dark:hover,:root[data-theme=dark] .btn.lime:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}:root[data-theme=dark] .doc-body,:root[data-theme=dark] .answer input{background:var(--color-surface-inset)}:root[data-theme=dark] .answer input,:root[data-theme=dark] .answer .btn,:root[data-theme=dark] .lsearch,:root[data-theme=dark] .lesson-code{border-radius:var(--radius-card)}:root[data-theme=dark] .segs span{background:var(--color-border-strong)}:root[data-theme=dark] .segs span.on{background:var(--color-primary)}:root[data-theme=dark] .mega .g.s{color:var(--color-primary)}:root[data-theme=dark] .mega .g.s .odo{background:0 0}:root[data-theme=dark] .stage-foot{background:var(--color-surface)}:root[data-theme=dark] .big-ring .bg{stroke:var(--color-surface-inset)}:root[data-theme=dark] .big-ring .fg{stroke:var(--color-primary)}:root[data-theme=dark] .big-ring.done .fg{stroke:var(--color-success)}:root[data-theme=dark] .week7 div.today i{outline-color:var(--color-text)}:root[data-theme=dark] .week7 div i{background:var(--color-heatmap-0)}:root[data-theme=dark] .spark path.line{stroke:var(--color-primary)}:root[data-theme=dark] .spark circle{stroke:var(--color-surface)}:root[data-theme=dark] .notice.gray{background:var(--color-surface)}:root[data-theme=dark] .notice.red{color:var(--color-danger)}:root[data-theme=dark] .notice.green{color:var(--color-success)}:root[data-theme=dark] .step.just{animation-name:flashd}@keyframes flashd{0%{background:var(--color-completion-flash)}to{background:0 0}}:root[data-theme=dark] .answer input:focus{border-color:var(--color-text-muted);box-shadow:none}:root[data-theme=dark] .overlay{background:var(--color-overlay)}:root[data-theme=dark] .palette,:root[data-theme=dark] .win{background:var(--color-surface);border:1px solid var(--color-border)}:root[data-theme=dark] .palette input{background:0 0}:root[data-theme=dark] .burst circle:first-child{stroke:var(--color-surface-raised)}:root[data-theme=dark] .card-progress{--progress-fill:var(--color-primary)}:root[data-theme=dark] .reader-bar{background:var(--color-surface)}:root[data-theme=dark] :is(.pill,.ico,.list-marker,.library-chips button,.palette,.win,.notice,.reader-course-icon,.exam-resource,.lesson-pagination a){border-radius:var(--radius-card)}:root[data-theme=dark] .pill{background:var(--color-chip);color:var(--color-text)}@media (max-width:980px){.d-grid{grid-template-columns:minmax(0,1fr);gap:0}.side{margin-bottom:var(--space-card-gap);order:-1;position:static}.chip-task .segs-wrap{display:none}}@media (min-width:641px) and (max-width:720px){.logo{padding-right:16px}}@media (max-width:640px){.bar{gap:10px;height:60px;padding:0 16px}.logo{border-right:0;gap:0;margin-right:0;padding-right:0;font-size:0}.pts-pill small{display:none}.right{gap:8px}.avatar.hdr{display:none}main{padding:20px 16px 100px}.stage-foot{flex-direction:column;align-items:stretch;gap:16px;padding:16px}.btn.big{width:100%}.bento{grid-template-columns:1fr 1fr;grid-template-areas:"ring pts""streak streak";gap:10px}.tile{padding:16px}.tile .big{font-size:32px}.sec-head{margin-top:56px}.dashboard-task.content-row{grid-template-columns:26px minmax(0,1fr) 16px;row-gap:8px}.dashboard-task-status{text-align:left;grid-area:2/2}.dashboard-task-arrow{grid-area:1/3/span 2}.d-head{grid-template-columns:1fr;gap:24px;padding:20px}.big-ring{display:none}.content-row{gap:12px;padding:14px}.answer{flex-direction:column}.answer input{flex:none}.pts-pill{display:none}.filters{scrollbar-width:none;max-width:100%;overflow-x:auto}.filters button{flex:none;padding:0 11px}.lsearch{width:100%}.bar{gap:10px}.primary-tabs a{gap:6px;padding:0 9px;font-size:13.5px}}@media (max-width:420px){.primary-tabs a>svg{display:none}.primary-tabs a{padding:0 8px;font-size:13px}.right{gap:6px}}@media (max-width:1240px){:root{--header-height:112px}.bar{grid-template-rows:60px 52px;grid-template-columns:minmax(0,1fr) auto;gap:0;height:auto;padding:0 16px;display:grid}.bar .logo{border:0;grid-area:1/1;min-width:0;height:60px;margin:0;padding:0 12px 0 0}.bar .brand-logo{flex:0 auto;width:104px;min-width:0;height:auto}.bar .right{grid-area:1/2}.bar .primary-tabs{scrollbar-width:none;grid-area:2/1/auto/-1;place-self:start center;min-width:0;max-width:100%;margin:0;overflow-x:auto}.primary-tabs a{padding:0 12px}}:root:is([data-nav=dock],[data-nav=switcher]){--header-height:60px}:root:is([data-nav=dock],[data-nav=switcher]) .bar{grid-template-rows:60px;grid-template-columns:max-content minmax(0,1fr) max-content}:root:is([data-nav=dock],[data-nav=switcher]) .bar>.logo{grid-area:1/1}:root:is([data-nav=dock],[data-nav=switcher]) .bar>.right{grid-area:1/3}:root:is([data-nav=dock],[data-nav=switcher]) .bar .admin-link,:root[data-nav=dock] .bar>.primary-tabs{display:none}.sidebar{z-index:31;background:var(--color-surface-inset);border-right:1px solid var(--color-border);flex-direction:column;width:240px;padding:14px 12px 20px;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.sidebar-logo{align-items:center;height:46px;margin-bottom:6px;padding:0 10px;display:flex}.sidebar nav{gap:2px;display:grid}.sidebar-label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);margin:16px 12px 6px;font-size:11px;font-weight:600}.sidebar-link{height:40px;color:var(--color-text-secondary);border-radius:10px;align-items:center;gap:12px;padding:0 12px;font-size:14px;font-weight:500;transition:background-color .15s,color .15s;display:flex;position:relative}.sidebar-link svg{flex:none;width:18px;height:18px}.sidebar-link:hover{background:var(--color-card-hover-overlay);color:var(--color-text)}.sidebar-link.on{background:var(--color-surface-raised);color:var(--color-text)}.sidebar-link.on svg{color:var(--color-primary)}.sidebar-link.on:before{content:"";background:var(--color-primary);width:3px;box-shadow:0 0 10px var(--color-primary);border-radius:0 3px 3px 0;position:absolute;top:10px;bottom:10px;left:-12px}@media (min-width:1000px){:root[data-nav=sidebar]{--header-height:60px}:root[data-nav=sidebar] body{padding-left:240px}:root[data-nav=sidebar] .bar{grid-template-rows:60px;grid-template-columns:minmax(0,1fr) max-content}:root[data-nav=sidebar] .bar>.right{grid-area:1/2}:root[data-nav=sidebar] .bar>.logo,:root[data-nav=sidebar] .bar>.primary-tabs,:root[data-nav=sidebar] .bar .admin-link{display:none}}@media (max-width:999px){.sidebar{display:none}}.switcher{justify-self:start;align-items:center;min-width:0;display:flex;position:relative}.switcher:before{content:"/";color:var(--color-text-muted);margin-right:6px;font-size:22px;font-weight:300}.switcher-button{height:38px;color:var(--color-text);border-radius:10px;align-items:center;gap:10px;padding:0 12px;font-size:15px;font-weight:600;transition:background-color .15s;display:flex}.switcher-button:hover,.switcher-button.open{background:var(--color-surface)}.switcher-button>svg:first-child{width:18px;height:18px;color:var(--color-primary)}.switcher-button>svg:last-child{width:14px;height:14px;color:var(--color-text-muted);transition:transform .2s}.switcher-button.open>svg:last-child{transform:rotate(180deg)}.switcher-panel{z-index:40;background:var(--color-surface);border:1px solid var(--color-border);border-radius:16px;gap:12px;width:min(1040px,100vw - 32px);padding:14px;animation:.18s ease-out switcher-in;display:grid;position:fixed;top:64px;left:50%;transform:translate(-50%);box-shadow:0 24px 60px #00000080}@keyframes switcher-in{0%{opacity:0;transform:translate(-50%)translateY(-6px)}}.switcher-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.switcher-tools{border-top:1px solid var(--color-border);padding-top:12px}.switcher-tile{border:1px solid #0000;border-radius:12px;align-items:flex-start;gap:14px;padding:14px;transition:background-color .15s,border-color .15s;display:flex}.switcher-tile:hover{background:var(--color-surface-raised)}.switcher-tile.on{background:var(--color-surface-raised);border-color:color-mix(in srgb, var(--color-primary) 45%, transparent)}.switcher-icon{background:var(--color-surface-inset);width:40px;height:40px;color:var(--color-primary);border-radius:10px;flex:none;place-items:center;display:grid}.switcher-icon svg{width:20px;height:20px}.switcher-copy b{color:var(--color-text);font-size:14.5px;font-weight:600;display:block}.switcher-copy small{color:var(--color-text-muted);margin-top:3px;font-size:12.5px;line-height:1.4;display:block}@media (max-width:760px){.switcher-grid{grid-template-columns:minmax(0,1fr)}}.dock{z-index:35;background:color-mix(in srgb, var(--color-surface) 82%, transparent);-webkit-backdrop-filter:blur(16px)saturate(1.4);border:1px solid var(--color-border);border-radius:20px;align-items:center;gap:6px;padding:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 18px 50px #0009,inset 0 1px #ffffff12}.dock-link{width:48px;height:48px;color:var(--color-text-secondary);transform-origin:bottom;transition:transform .25s var(--spring), background-color .15s, color .15s;border-radius:14px;place-items:center;display:grid;position:relative}.dock-link svg{width:22px;height:22px}.dock-link:hover{background:var(--color-surface-raised);color:var(--color-text);transform:translateY(-6px)scale(1.15)}.dock-link.on{background:var(--color-surface-raised);color:var(--color-primary)}.dock-link.on:after{content:"";background:var(--color-primary);width:4px;height:4px;box-shadow:0 0 8px var(--color-primary);border-radius:50%;position:absolute;bottom:-6px}.dock-label{background:var(--color-surface-raised);color:var(--color-text);white-space:nowrap;opacity:0;pointer-events:none;border-radius:8px;padding:5px 10px;font-size:12.5px;font-weight:500;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 6px 20px #0006}.dock-link:hover .dock-label,.dock-link:focus-visible .dock-label{opacity:1;transform:translate(-50%)translateY(0)}.dock-divider{background:var(--color-border);width:1px;height:28px;margin:0 4px}.course-detail-grid{gap:var(--space-card-gap);margin-top:var(--space-card-gap)}.course-detail-grid>.side{margin-bottom:0}.course-detail-content{min-width:0}.course-resume{padding:var(--space-card-padding);flex-direction:column;gap:18px;display:flex}.course-resume h2{letter-spacing:-.02em;font-size:19px;font-weight:600}.course-cover{border-radius:var(--radius-card);width:100%;height:auto;display:block}.course-resume-head{text-align:center;justify-items:center;gap:18px;display:grid}.course-resume-head>div:last-child{gap:6px;min-width:0;display:grid}.course-next-label{color:var(--color-text-muted);letter-spacing:.06em;text-transform:uppercase;font-size:12.5px;font-weight:600}.course-resume .big-ring{width:136px;height:136px;display:block}.course-resume .big-ring b{font-size:28px}.course-resume .btn{white-space:nowrap}.course-availability{color:var(--color-text-secondary);max-width:280px;font-size:13px}.course-kicker{font:500 12px/1.5 var(--font-sans);color:var(--color-text-secondary);flex-wrap:wrap;gap:10px;display:flex}.course-progress{margin-top:18px}.course-progress>div{color:var(--color-text-secondary);justify-content:space-between;gap:12px;margin-bottom:10px;font-size:12px;display:flex}.course-progress strong{font:500 12px var(--font-sans);color:var(--color-text)}.course-progress progress{appearance:none;background:var(--color-border);border:0;border-radius:3px;width:100%;height:5px;display:block;overflow:hidden}.course-progress progress::-webkit-progress-bar{background:var(--color-border)}.course-progress progress::-webkit-progress-value{background:var(--color-primary-strong);transition:width .3s var(--ease);border-radius:3px}.course-progress progress::-moz-progress-bar{background:var(--color-primary-strong);border-radius:3px}:root[data-theme=dark] .course-progress progress::-webkit-progress-value{background:var(--color-primary)}:root[data-theme=dark] .course-progress progress::-moz-progress-bar{background:var(--color-primary)}.course-curriculum{padding:var(--space-card-padding)}.course-curriculum .course-sections{background:0 0;border:0;border-radius:0}.course-curriculum .course-section-link{padding:16px 0}.course-section-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:14px;display:flex}.course-section-heading h2{margin:0}.course-section-heading>span{color:var(--color-text-muted);font-size:14px}.course-section-link{align-items:center;transition:background .2s}.course-section-link:hover{background:var(--color-list-hover)}.course-section-link:focus-visible{outline-offset:-3px}.course-section-name{flex:1;min-width:0;font-size:15px;font-weight:500}.course-section-link.is-complete .course-section-name{color:var(--color-text-secondary)}.course-about h2{margin:0 0 20px}.course-about{margin-bottom:var(--space-card-gap)}.course-about.card{padding:var(--space-card-padding)}.course-about-body{max-width:70ch}.course-about-body>:last-child{margin-bottom:0}.course-read-more{color:var(--color-text);text-underline-offset:4px;margin-top:14px;font-size:14px;font-weight:500;text-decoration:underline;display:inline-flex}.course-read-more:hover{color:var(--color-text-secondary)}.course-about p{color:var(--color-text-secondary);margin:0 0 16px;font-size:15.5px;line-height:1.65}.course-about ul{margin:24px 0;padding:0;list-style:none}.course-about li{align-items:flex-start;gap:10px;margin-top:14px;font-size:14px;display:flex}.course-about li svg{color:var(--color-success);width:16px;height:16px;margin-top:3px}.course-about h3{margin-bottom:12px;font-size:14px;font-weight:600}.lesson-index{width:18px;font:11px/1.9 var(--font-sans);color:var(--color-text-muted);flex:none}.lesson-index svg{width:16px;height:16px;margin-top:3px}.lesson-index.is-complete{color:var(--color-success)}.lesson-heading{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;position:static}.lesson-heading h1{letter-spacing:-.04em;margin:16px 0 22px;font-size:clamp(28px,3.2vw,40px);font-weight:600;line-height:1.15}.lesson-article p{color:var(--color-text-secondary);margin-bottom:18px;font-size:16px;line-height:1.85}.lesson-article .lesson-lead{color:var(--color-text);border-bottom:1px solid var(--color-border);padding-bottom:26px;font-size:17px;line-height:1.8}.lesson-article h2{letter-spacing:-.025em;margin:30px 0 16px;font-size:21px;font-weight:600}.lesson-code{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;margin:26px 0;overflow:hidden}.lesson-code>div{border-bottom:1px solid var(--color-border);font:11px var(--font-sans);color:var(--color-text-secondary);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.lesson-code button{font:12px var(--font-sans);padding:3px 0}.lesson-code button:hover{color:var(--color-text)}.lesson-code button.is-copied{color:var(--color-success)}.lesson-code pre{font:13px/1.9 var(--font-mono);tab-size:4;margin:0;padding:20px;overflow-x:auto}.lesson-note{border-left:3px solid var(--color-primary-strong);background:var(--color-surface-hover);border-radius:0 10px 10px 0;align-items:flex-start;gap:14px;margin:28px 0;padding:20px;display:flex}.lesson-note>svg{width:18px;height:18px;color:var(--color-text-secondary);margin-top:3px}.lesson-note strong{font-size:14px;font-weight:600}.lesson-note p{margin:6px 0 0;font-size:14px}.lesson-completion{margin-top:32px;padding:24px}.lesson-completion strong{font-size:15px;font-weight:600}.lesson-completion p{color:var(--color-text-secondary);margin-top:6px;font-size:13px}.lesson-finish,.lesson-success{justify-content:space-between;align-items:center;gap:20px;display:flex}.lesson-success{justify-content:flex-start}.lesson-success>svg{color:var(--color-success)}.lesson-finish .btn{flex:none}.lesson-completion label{margin:14px 0;font-size:16px;font-weight:500;display:block}.lesson-answer{gap:10px;display:flex}.lesson-answer input{background:var(--color-background);width:100%;min-width:0;color:var(--color-text);border:1px solid var(--color-border-strong);font-family:var(--font-sans);border-radius:8px;padding:10px 12px}.lesson-answer input[aria-invalid=true]{border-color:var(--color-danger)}.lesson-completion .lesson-error{color:var(--color-danger)}.lesson-pagination{border-top:1px solid var(--color-border);justify-content:space-between;gap:32px;margin-top:30px;padding-top:24px;display:flex}.lesson-pagination a{align-items:center;gap:12px;max-width:48%;font-size:13px;display:flex}.lesson-pagination a:last-child{text-align:right;margin-left:auto}.lesson-pagination small{color:var(--color-text-secondary);margin-bottom:4px;font-size:11px;display:block}.lesson-pagination svg{width:16px;height:16px}.lesson-missing h1{margin-bottom:24px}@media (max-width:1000px){.lesson-finish{flex-direction:column;align-items:flex-start}}@media (max-width:760px){.lesson-completion{padding:18px}.lesson-answer{flex-direction:column}.lesson-finish .btn{width:100%}.lesson-pagination{gap:16px}}.training-markdown{overflow-wrap:anywhere}.training-markdown h2,.training-markdown h3,.training-markdown h4{scroll-margin-top:calc(var(--header-height) + 80px)}.training-markdown h3{margin:28px 0 14px;font-size:18px}.training-markdown h4{margin:24px 0 12px;font-size:16px}.training-markdown ul,.training-markdown ol{color:var(--color-text-secondary);margin:18px 0 24px;padding-left:24px;line-height:1.85}.training-markdown li+li{margin-top:8px}.training-markdown strong{color:var(--color-text);font-weight:600}.training-markdown a{text-underline-offset:3px;text-decoration:underline}.training-markdown :not(pre)>code{font:.87em var(--font-mono);background:var(--color-surface-hover);border-radius:4px;padding:2px 5px}.training-markdown blockquote{border-left:2px solid var(--color-border-strong);margin:24px 0;padding-left:20px}.markdown-table{border:1px solid var(--color-border);border-radius:8px;max-width:100%;margin:24px 0;overflow:auto}.markdown-table table{border-collapse:collapse;width:100%;font-size:13px;line-height:1.65}.markdown-table th,.markdown-table td{border-bottom:1px solid var(--color-border);text-align:left;min-width:100px;padding:12px 16px}.markdown-table th{background:var(--color-surface-hover);color:var(--color-text);font-weight:500}.markdown-table td{color:var(--color-text-secondary)}.lesson-image{margin:24px 0;display:block}.lesson-image-open{cursor:zoom-in;border:1px solid var(--color-border);background:var(--color-white);border-radius:10px;width:100%;padding:16px;display:block;overflow:hidden}.lesson-image-open img{width:auto;max-width:100%;height:auto;max-height:500px;margin:auto;display:block}.image-dialog{background:var(--color-surface);max-width:94vw;max-height:94dvh;color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-card);margin:auto;padding:20px}.image-dialog::backdrop{background:var(--color-image-overlay)}.image-dialog .btn{margin:0 0 16px auto;display:block}.image-dialog img{object-fit:contain;background:var(--color-white);max-width:100%;max-height:76dvh;display:block}.image-unavailable{border:1px solid var(--color-border);color:var(--color-text-secondary);padding:16px;font-size:13px;display:block}.exam-resources{margin:24px 0 36px}.exam-resource{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;justify-content:space-between;align-items:center;gap:18px;margin-top:10px;padding:16px 18px;display:flex}.exam-resource>div{min-width:0}.exam-resource small{color:var(--color-text-secondary);margin-bottom:4px;font-size:11px;display:block}.exam-resource strong{font:500 13px var(--font-sans);overflow-wrap:anywhere}.exam-resource p{margin:5px 0 0;font-size:12px;line-height:1.5}.exam-resource .btn{white-space:nowrap;flex:none;font-size:12px}.resource-unavailable{color:var(--color-text-secondary);font-size:12px}.exam-question{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);min-width:0;margin:0 0 12px;padding:20px 22px 22px}.exam-question legend{float:left;gap:12px;width:100%;max-width:100%;margin-bottom:16px;padding:0;font-size:16px;font-weight:500;line-height:1.5;display:flex}.exam-question legend span{min-width:18px;color:var(--color-text-muted);font:500 15px/1.6 var(--font-mono);flex:none}.exam-question legend+*{clear:both}.exam-options{gap:8px;display:grid}.exam-question>:not(legend){margin-left:30px}.exam-options label{border:1px solid var(--color-border);cursor:pointer;border-radius:8px;align-items:baseline;gap:12px;padding:13px 16px;font-size:14px;line-height:1.6;display:flex}@media (hover:hover){.exam-options label:hover{background:var(--color-list-hover)}}.exam-options label{transition:background-color .15s,border-color .15s}.exam-options label:has(:checked){background:var(--color-surface-hover);border-color:var(--color-text-muted)}.exam-options input{accent-color:var(--color-primary-strong);flex:none}.exam-written{color:var(--color-text-secondary);gap:8px;font-size:12px;display:grid}.exam-written input{border:1px solid var(--color-border-strong);background:var(--color-surface-inset);width:100%;min-width:0;color:var(--color-text);font:14px var(--font-sans);border-radius:8px;padding:14px 16px}.question-resources{margin-bottom:18px}.exam-submit{justify-content:space-between;align-items:center;gap:20px;margin:20px 0;padding:24px;display:flex}.exam-submit p{margin:4px 0 0;font-size:13px}.exam-submit .btn:disabled{opacity:.45;cursor:not-allowed}.lesson-article .exam-correct{color:var(--color-success);margin-top:12px;font-size:13px}.lesson-article .exam-incorrect{color:var(--color-danger);margin-top:12px;font-size:13px}@media (max-width:760px){.exam-question{padding:16px}.exam-question>:not(legend){margin-left:0}.exam-resource,.exam-submit{flex-direction:column;align-items:flex-start}.exam-resource .btn,.exam-submit .btn{width:100%}.lesson-image-open{padding:8px}}#app.reader-shell{max-width:none;padding:0}.reader-bar{top:var(--header-height);z-index:30;background:var(--color-background);border-bottom:1px solid var(--color-border);align-items:stretch;height:52px;display:flex;position:sticky}.reader-back{border-right:1px solid var(--color-border);width:60px;color:var(--color-text-secondary);flex:none;place-items:center;display:grid}.reader-back:hover{background:var(--color-surface-hover);color:var(--color-text)}.reader-course{border-right:1px solid var(--color-border);align-items:center;gap:12px;min-width:0;padding:10px 24px;display:flex}.reader-course-icon{border:1px solid var(--color-border);background:var(--color-surface-hover);width:34px;height:34px;color:var(--color-text-secondary);border-radius:8px;flex:none;place-items:center;display:grid}.reader-course-info{min-width:0}.reader-course-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;display:block;overflow:hidden}.reader-progress{flex:none;align-items:center;gap:12px;margin-left:auto;padding:0 24px;display:flex}.reader-progress progress{appearance:none;background:var(--color-border);border:0;border-radius:2px;width:120px;max-width:100%;height:4px;display:block;overflow:hidden}.reader-progress progress::-webkit-progress-bar{background:var(--color-border)}.reader-progress progress::-webkit-progress-value{background:var(--color-primary-strong)}.reader-progress progress::-moz-progress-bar{background:var(--color-primary-strong)}:root[data-theme=dark] .reader-progress progress::-webkit-progress-value{background:var(--color-primary)}:root[data-theme=dark] .reader-progress progress::-moz-progress-bar{background:var(--color-primary)}.reader-percent{min-width:32px;color:var(--color-text-secondary);flex:none;font-size:13px;font-weight:500}.reader-toggle{border-left:1px solid var(--color-border);color:var(--color-text-secondary);flex:none;align-items:center;gap:12px;padding:0 24px;font-size:13px;display:flex}.reader-toggle:hover{background:var(--color-surface-hover);color:var(--color-text)}.reader-toggle svg{width:16px;height:16px}.reader-column{max-width:768px;margin:auto;padding:52px 24px 120px}.focus-reader .lesson-heading{margin-bottom:28px}.focus-reader .lesson-heading h1{border-bottom:1px solid var(--color-border);margin-bottom:28px;padding-bottom:28px;font-size:clamp(28px,3.2vw,36px);line-height:1.25}.focus-reader .lesson-lead{color:var(--color-text-secondary);border:0;margin-bottom:24px;padding:0;font-size:16px}.focus-reader .lesson-completion{border:0;border-top:1px solid var(--color-border);box-shadow:none;background:0 0;border-radius:0;padding:24px 0}.focus-reader .lesson-pagination{margin-top:16px}.reader-drawer{border:0;border-left:1px solid var(--color-border);background:var(--color-background);width:min(390px,100vw);max-width:100vw;height:100dvh;max-height:none;color:var(--color-text);margin:0;padding:0;position:fixed;inset:0 0 0 auto}.reader-drawer::backdrop{background:var(--color-drawer-overlay)}.reader-drawer-inner{padding:24px}.reader-drawer-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.reader-drawer-heading h2{font-size:16px;font-weight:600}.reader-drawer-heading .btn{padding:8px 12px;font-size:12px}.reader-drawer .course-progress{margin:16px 0 28px}.reader-drawer ol{margin:0;padding:0;list-style:none}.reader-drawer nav a{color:var(--color-text-secondary);border:1px solid #0000;border-radius:8px;align-items:flex-start;gap:12px;padding:12px;font-size:13px;line-height:1.6;display:flex}.reader-drawer nav a:hover{color:var(--color-text);background:var(--color-surface-hover)}.reader-drawer nav a.is-active{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}.reader-drawer .reader-subheadings{border-left:1px solid var(--color-border);margin:10px 0 18px 20px;padding-left:16px}.reader-subheadings button{text-align:left;color:var(--color-text-secondary);padding:7px 0;font-size:12px;line-height:1.5;display:block}.reader-subheadings .is-nested{padding-left:12px}.reader-subheadings button:hover{color:var(--color-text)}.reader-shell .lesson-missing{max-width:768px;margin:auto;padding:60px 24px}@media (max-width:600px){.reader-bar{height:52px}.reader-back{width:40px}.reader-course{border-right:0;flex:1;padding:10px 12px}.reader-course-icon{display:none}.reader-course-info{width:100%}.reader-course-info strong{font-size:12px}.reader-progress{gap:8px;padding:0 10px}.reader-progress progress{width:48px}.reader-percent{min-width:28px;font-size:12px}.reader-toggle{gap:6px;padding:0 12px;font-size:12px}.reader-toggle svg{display:none}.reader-column{padding:34px 20px 80px}.reader-drawer-inner{padding:20px}}.reader-loading{max-width:768px;color:var(--color-text-secondary);margin:auto;padding:64px 24px}@media (max-width:600px){.course-resume{gap:20px}.course-resume .btn{width:100%}.course-section-heading{flex-wrap:wrap;gap:6px 16px}}.warmup-stages{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}.warmup-stage{text-align:left;cursor:pointer;min-height:116px;color:var(--color-text);border:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:16px;padding:20px;display:flex}.card.warmup-stage.selected{background:var(--color-chip);box-shadow:none;border-color:#0000}.warmup-stage:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}.warmup-stage-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.warmup-stage-title b{font-size:18px}.warmup-stage-count{color:var(--color-text-secondary);margin:16px 0 0;font-size:13px;display:block}.warmup-stage-copy{min-width:0}.warmup-stage-ring{flex:none;width:72px;height:72px;position:relative}.warmup-stage-ring svg{transform:rotate(-90deg)}.warmup-stage-ring circle{fill:none;stroke-width:5px}.warmup-stage-ring .bg{stroke:var(--color-background)}.warmup-stage-ring .fg{stroke:var(--color-primary);stroke-linecap:round}.warmup-stage-ring>span{place-items:center;font-size:16px;font-weight:600;display:grid;position:absolute;inset:0}.warmup-stage-lock{color:var(--color-text-secondary);flex:none;margin:0 20px}.warmup-stage-notice{align-items:center;max-width:none;margin:0 0 16px}.warmup-locked-detail{padding:32px}.warmup-locked-detail h1{margin:20px 0}.warmup-locked-detail p{color:var(--color-text-secondary);margin:16px 0}.warmup-stage-lock svg{width:30px;height:30px}.exercise-list{--node:40px;--chain-x:calc(22px + var(--node) / 2);padding:8px 0}.exercise-list>li{position:relative}.exercise-list>li+li{border-top:0}.exercise-chain>li:not(:last-child):after{content:"";top:calc(50% + var(--node) / 2 + 5px);height:calc(100% - var(--node) - 10px);left:calc(var(--chain-x) - 1px);background:var(--color-border-strong);border-radius:2px;width:2px;position:absolute}.exercise-chain>li.is-linked:after{background:var(--color-primary)}.exercise-chain>li.is-locked:not(:last-child):after{background:repeating-linear-gradient(var(--color-border-strong) 0 4px, transparent 4px 9px)}.exercise-row{grid-template-columns:var(--node) minmax(0, 1fr) auto 16px;color:var(--color-text);align-items:center;gap:18px;padding:16px 22px;display:grid}.exercise-mark{width:var(--node);height:var(--node);background:var(--color-surface);border:1.5px solid var(--color-border-strong);color:var(--color-text-secondary);font:500 12px/1 var(--font-sans);border-radius:50%;place-items:center;transition:background .2s,border-color .2s,color .2s;display:grid}.exercise-mark svg{width:20px;height:20px}.exercise-row.is-done .exercise-mark{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-background)}.exercise-row.is-next .exercise-mark{background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));border:2px solid var(--color-primary);color:var(--color-primary);box-shadow:0 0 16px color-mix(in srgb, var(--color-primary) 40%, transparent);position:relative}.exercise-row.is-next .exercise-mark:after{content:"";border-radius:inherit;border:2px solid var(--color-primary);animation:2.4s ease-out infinite chain-pulse;position:absolute;inset:-2px}@keyframes chain-pulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.55)}}@media (hover:hover){a.exercise-row:hover{background-color:#0000}a.exercise-row:not(.is-done,.is-next):hover .exercise-mark{background:var(--color-surface-raised);border-color:var(--color-text-muted);color:var(--color-text)}a.exercise-row:hover .exercise-arrow{color:var(--color-text)}}.exercise-title,.exercise-arrow{transition:color .15s}.exercise-row.is-locked>:not(.exercise-mark),.exercise-row.is-locked .exercise-mark>*{opacity:.5}.exercise-summary{-webkit-line-clamp:2;line-clamp:2;max-width:760px;color:var(--color-text-muted);-webkit-box-orient:vertical;font-size:13.5px;line-height:1.5;display:-webkit-box;overflow:hidden}.exercise-list>li+li:before{content:"";top:0;left:calc(var(--chain-x) + var(--node) / 2 + 18px);background:var(--color-border);height:1px;position:absolute;right:22px}.exercise-copy{gap:4px;min-width:0;display:grid}.exercise-title{letter-spacing:-.01em;font-size:15px;font-weight:600}.exercise-badges{color:var(--color-text-muted);align-items:center;gap:12px;font-size:13px;display:flex}.exercise-badges small{font-size:12.5px}.exercise-status{border-radius:999px;padding:3px 9px;font-size:12px;font-weight:500}.exercise-status.is-done{background:color-mix(in srgb, var(--color-success) 16%, transparent);color:var(--color-success)}.exercise-status.is-progress{background:color-mix(in srgb, var(--color-warning) 16%, transparent);color:var(--color-warning)}.exercise-status.is-next{background:color-mix(in srgb, var(--color-primary) 16%, transparent);color:var(--color-primary)}.exercise-arrow{color:var(--color-text-muted);display:flex}.exercise-arrow svg{width:16px;height:16px}@media (max-width:600px){.exercise-list{--chain-x:calc(16px + var(--node) / 2)}.exercise-row{grid-template-columns:var(--node) minmax(0, 1fr) 16px;gap:6px 14px;padding:14px 16px}.exercise-mark{grid-row:1/span 2}.exercise-badges{grid-area:2/2;gap:10px}.exercise-arrow{grid-area:1/3/span 2}.warmup-stages{grid-template-columns:1fr;gap:8px}.warmup-stage{padding:16px}.warmup-stage-count{margin-top:8px}}.content-locked{align-items:center;gap:18px;margin-top:16px;padding:24px;display:flex}.content-locked>div{flex:1}.content-locked h2{font-size:17px;font-weight:600}.content-locked p{color:var(--color-text-secondary);margin-top:4px}.content-locked-icon{background:var(--color-surface-raised);width:48px;height:48px;color:var(--color-text-muted);border-radius:12px;place-items:center;display:grid}.content-locked-icon svg{width:24px;height:24px}@media (max-width:600px){.content-locked{flex-wrap:wrap}}.warmup-stage-ring-skel{border-radius:50%;flex:none;width:72px;height:72px}.card.warmup-stage.selected .skel{background:var(--color-border-strong)}.lab-topic-list{gap:16px;display:grid}.lab-topic{overflow:hidden}.lab-topic>summary{cursor:pointer;align-items:center;gap:16px;padding:20px 24px;list-style:none;display:flex}.lab-topic>summary::-webkit-details-marker{display:none}.lab-topic>summary:focus-visible{outline:2px solid var(--color-primary);outline-offset:-3px}.lab-topic-chevron{color:var(--color-text-secondary);display:flex}.lab-topic[open] .lab-topic-chevron{transform:rotate(90deg)}.lab-topic-copy{gap:4px;display:grid}.lab-topic-copy small{color:var(--color-text-secondary);font-size:12px}.lab-topic-name{font-size:17px;font-weight:600}.lab-topic-progress{white-space:nowrap;color:var(--color-text-secondary);margin-left:auto;font-size:13px}.lab-topic-rows.content-list{border:0;border-top:1px solid var(--color-border-strong);background:var(--color-surface-inset);border-radius:0}.lab-topic-rows.content-list>li+li{border-top-color:var(--color-border)}.lab-list-row{color:var(--color-text);grid-template-columns:26px minmax(0,1fr) auto 16px;align-items:center;display:grid}.lab-list-title{overflow-wrap:anywhere;font-weight:500}.lab-list-badges{text-align:right;color:var(--color-text-muted);gap:4px;font-size:13px;display:grid}.lab-list-badges small{font-size:12px}.lab-complete{color:var(--color-success)}.lab-list-arrow{color:var(--color-text-muted);display:flex}.lab-list-arrow svg{width:16px;height:16px}@media (max-width:600px){.lab-topic>summary{flex-wrap:wrap;gap:10px;padding:16px}.lab-topic-progress{font-size:11px}.lab-list-row{grid-template-columns:26px minmax(0,1fr) 16px;row-gap:8px}.lab-list-badges{text-align:left;grid-area:2/2}.lab-list-arrow{grid-area:1/3/span 2}}.lab-category-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.lab-category{color:var(--color-text);border:1px solid var(--color-border);flex-direction:column;gap:6px;padding:20px;display:flex}.lab-category:hover{border-color:var(--color-border-strong)}.lab-category:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}.lab-category-top{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.lab-category h2{margin:0;font-size:18px;font-weight:600;line-height:1.3}.lab-category-count{color:var(--color-text-secondary);font-size:13px}.lab-category-art{border-radius:var(--radius-card);background:var(--color-background);color:var(--color-primary);flex:none;place-items:center;display:grid;overflow:hidden}.lab-category-art.is-lg{width:64px;height:64px;padding:10px}.lab-category-art.is-md{width:44px;height:44px;padding:7px}.lab-category-art img{object-fit:contain;width:100%;height:100%}.lab-category-header{align-items:center;gap:14px;margin-bottom:20px;display:flex}.lab-category-header h2{margin:0;font-size:26px;font-weight:600}@media (max-width:900px){.lab-category-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.lab-category-list{grid-template-columns:minmax(0,1fr);gap:8px}.lab-category{flex-direction:row;align-items:center;gap:14px;padding:14px 16px}.lab-category-top{display:contents}.lab-category-art.is-lg{width:48px;height:48px;padding:7px}.lab-category-top .warmup-stage-ring{order:3;margin-left:auto}.lab-category h2{font-size:15px}.lab-category-count{display:none}.lab-category-header h2{font-size:21px}}.admin-nav{scrollbar-width:none;width:max-content;max-width:100%;margin-bottom:28px;display:flex;overflow-x:auto}.admin-nav a,.admin-nav .soon{z-index:1;white-space:nowrap;height:32px;color:var(--color-text-secondary);border-radius:8px;align-items:center;padding:0 14px;font-size:13.5px;font-weight:500;transition:color .2s;display:flex;position:relative}.admin-nav a.on{color:var(--color-text)}.admin-nav .soon{color:var(--color-text-muted);opacity:.6;cursor:default}.admin-head{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px;display:flex}.admin-head h1{letter-spacing:-.02em;margin:0 0 6px;font-size:28px;font-weight:600}.admin-head p{max-width:640px;margin:0}.admin-badge{border-radius:var(--radius-control);margin-top:8px;padding:4px 10px;font-size:13px;font-weight:500;display:inline-block}.admin-badge.warn{color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 14%, transparent);border:1px solid color-mix(in srgb, var(--color-warning) 35%, transparent)}.admin-head-pills{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.admin-head-actions{flex:none;gap:8px;display:flex}.admin-targets{color:var(--color-text-secondary);align-items:center;gap:8px;font-size:13.5px;display:flex;margin-top:12px!important}.admin-back{color:var(--color-text-secondary);align-items:center;gap:6px;margin-bottom:18px;font-size:13.5px;font-weight:500;display:inline-flex}.admin-back:hover{color:var(--color-text)}.admin-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.admin-toolbar-right{align-items:center;gap:10px;display:flex}.admin-section-title{margin:32px 0 12px;font-size:16px;font-weight:600}.admin-toolbar .admin-section-title{margin:0}.admin-toolbar+.content-list{margin-top:0}*+.admin-toolbar:has(.admin-section-title){margin-top:32px}.admin-assignment-copy{min-width:0}.admin-assignment-title{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:500;overflow:hidden}.admin-assignment-meta{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:13px;overflow:hidden}.admin-bar{background:var(--color-progress-track);border-radius:2px;height:4px;overflow:hidden}.admin-bar>span{border-radius:inherit;background:var(--color-primary-strong);height:100%;transition:width .4s var(--ease);display:block}:root[data-theme=dark] .admin-bar{background:var(--color-surface-raised)}.admin .filters button{white-space:nowrap}.admin-status{white-space:nowrap;color:var(--color-text-muted);font-size:13px;font-weight:500}.admin-status.in_progress{color:var(--color-text)}.admin-status.completed{color:var(--color-success)}.admin-status.completed_late{color:var(--color-warning)}.admin-status.overdue{color:var(--color-danger)}.admin-stats{grid-template-columns:1.4fr repeat(4,1fr);gap:12px;display:grid}.admin-stat{align-content:start;gap:6px;padding:18px 20px;display:grid}.admin-stat span{color:var(--color-text-secondary);font-size:13px}.admin-stat strong{font:500 28px/1.1 var(--font-mono);letter-spacing:-.02em}.admin-stat.ok strong{color:var(--color-success)}.admin-stat.hot strong{color:var(--color-danger)}.admin-rate .admin-bar{margin-top:6px}.admin-item.content-row{grid-template-columns:26px minmax(0,1fr) 200px;align-items:center;display:grid}.avatar.sm{width:28px;height:28px;font-size:11px}.admin-done{background:var(--color-success-soft);width:22px;height:22px;color:var(--color-success);border-radius:6px;place-items:center;display:inline-grid}.admin-done svg{width:13px;height:13px}.admin-form{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:20px;display:grid}.admin-form-main{gap:16px;display:grid}.admin-form-card{gap:14px;padding:22px 24px;display:grid}.admin-form-card h2,.admin-summary h2{margin:0;font-size:15px;font-weight:600}.admin-form-card>p.small{margin:-8px 0 0;font-size:13px}.admin-field{color:var(--color-text-secondary);align-content:start;gap:7px;font-size:13px;font-weight:500;display:grid}.admin-field small{font-weight:400}.admin-field input,.admin-field textarea{border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface-inset);width:100%;color:var(--color-text);font:inherit;resize:vertical;color-scheme:inherit;padding:10px 12px;font-size:14px;font-weight:400}.admin-field input:focus,.admin-field textarea:focus{border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-focus-ring);outline:0}.admin-field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.admin-check{color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;font-size:13.5px;display:flex}.admin-check input{width:16px;height:16px;accent-color:var(--color-primary-strong)}.admin-picker{position:relative}.admin-content-picker{align-items:center;gap:8px;display:flex}.admin-content-picker .admin-picker{flex:1}.admin-picker .lsearch{width:100%}.admin-picker-list{z-index:10;border-radius:var(--radius-card);border:1px solid var(--color-border-strong);background:var(--color-surface-raised);box-shadow:0 12px 32px var(--color-shadow-dialog);margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0}.admin-picker-list button{border-radius:var(--radius-control);text-align:left;align-items:center;gap:10px;width:100%;padding:9px 10px;display:flex}.admin-picker-list button:hover,.admin-picker-list button:focus-visible{background:var(--color-surface-hover);outline:0}.admin-picker-title{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.admin-picker-list small{white-space:nowrap;margin-left:auto}.admin-picker-empty{padding:8px 2px 0;font-size:13px}.admin-selected .admin-item.content-row,.admin-form-card .admin-item.content-row{grid-template-columns:26px minmax(0,1fr) auto auto;gap:14px}.admin-row-actions{gap:2px;display:flex}.admin-row-actions button{border-radius:var(--radius-control);width:30px;height:30px;color:var(--color-text-muted);place-items:center;display:grid}.admin-row-actions button:hover:not(:disabled){color:var(--color-text);background:var(--color-surface-hover)}.admin-row-actions button:disabled{opacity:.35}.admin-placeholder{border:1px dashed var(--color-border-strong);border-radius:var(--radius-card);text-align:center;padding:22px;font-size:13.5px}.admin-chips{flex-wrap:wrap;gap:8px;display:flex}.admin-chip{border-radius:var(--radius-control);border:1px solid var(--color-border-strong);background:var(--color-surface-inset);height:34px;color:var(--color-text-secondary);align-items:center;gap:7px;padding:0 12px;font-size:13.5px;font-weight:500;display:inline-flex}.admin-chip small{font-family:var(--font-mono);color:var(--color-text-muted)}.admin-chip svg{width:13px;height:13px}.admin-chip.on{border-color:var(--color-primary-strong);color:var(--color-text);background:var(--color-success-soft)}.admin-chip.on>svg{color:var(--color-primary-strong)}.admin-chip.person{padding-right:4px}.admin-chip.person button{width:24px;height:24px;color:var(--color-text-muted);border-radius:4px;place-items:center;display:grid}.admin-chip.person button:hover{color:var(--color-text);background:var(--color-surface-hover)}.admin-summary{top:calc(var(--header-height) + 20px);gap:16px;padding:22px 24px;display:grid;position:sticky}.admin-summary dl{gap:12px;margin:0;display:grid}.admin-summary dl>div{justify-content:space-between;gap:12px;font-size:13.5px;display:flex}.admin-summary dt{color:var(--color-text-secondary)}.admin-summary dd{text-align:right;margin:0;font-weight:500}.admin-summary .btn{width:100%}.admin-errors{border-radius:var(--radius-control);background:var(--color-danger-soft);color:var(--color-danger);gap:4px;margin:0;padding:12px 14px 12px 30px;font-size:13px;display:grid}@media (max-width:980px){.admin-stats{grid-template-columns:repeat(2,1fr)}.admin-rate{grid-column:1/-1}.admin-form{grid-template-columns:1fr}.admin-summary{position:static}}@media (max-width:640px){.admin-head{flex-direction:column}.admin-item.content-row,.admin-selected .admin-item.content-row,.admin-form-card .admin-item.content-row{grid-template-columns:26px minmax(0,1fr)}.admin-selected .admin-check,.admin-selected .admin-row-actions{grid-column:2}.admin-field-row{grid-template-columns:1fr}.admin-toolbar-right{flex-wrap:wrap}.admin-toolbar .lsearch{width:100%}}.admin-user-head{align-items:center;gap:18px;display:flex}.avatar.lg{width:64px;height:64px;font-size:20px}.admin-stats.four{grid-template-columns:repeat(4,1fr)}.admin-stats.three{grid-template-columns:repeat(3,1fr)}.admin-columns{grid-template-columns:1.2fr 1fr;align-items:start;gap:20px;display:grid}.admin-events .content-row{align-items:flex-start;font-size:13.5px}.admin-events strong{font-weight:500}.admin-dot{flex:none;place-items:center;width:22px;height:22px;display:grid}.admin-dot:before{content:"";background:var(--color-text-muted);border-radius:50%;width:8px;height:8px}.admin-events .admin-done{flex:none}.admin-member-picker{width:320px}.admin-inline-form{margin-bottom:20px}.admin-form.narrow{grid-template-columns:minmax(0,760px)}.admin-radios{border:0;gap:10px;margin:0;padding:0}.admin-radios legend{margin-bottom:8px;padding:0}.admin-radios .admin-check{white-space:normal}.admin-form-actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.admin-form-card .admin-form-actions{margin-top:4px}.admin-import-source{flex-wrap:wrap;align-items:center;gap:12px;font-size:13.5px;display:flex}.admin-file{cursor:pointer;position:relative}.admin-file input{opacity:0;cursor:pointer;position:absolute;inset:0}.admin-link-button{color:var(--color-primary-strong);margin-left:auto;font-size:13.5px;font-weight:500}.admin-csv{font-family:var(--font-mono)!important;font-size:13px!important}.admin-import-limit{margin-top:14px}@media (max-width:980px){.admin-stats.four,.admin-stats.three{grid-template-columns:repeat(2,1fr)}.admin-columns{grid-template-columns:1fr}}@media (max-width:640px){.admin-head-actions{flex-wrap:wrap}.admin-member-picker{width:100%}.admin-user-head{align-items:flex-start}}.admin-import-counts{align-items:center;gap:16px;display:flex}.admin-toolbar-right .catalog-filter{flex-shrink:0}.admin-stat.warn strong{color:var(--color-warning)}.catalog-auto{margin-right:8px}.catalog-notice{border-radius:var(--radius-card);background:var(--color-surface-raised);justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding:14px 18px;font-size:13.5px;display:flex}.catalog-notice strong{font-weight:600}.catalog-jobs{gap:14px;margin-top:16px;padding:16px 18px;display:grid}.catalog-job{gap:8px;display:grid}.catalog-job-head{justify-content:space-between;gap:16px;font-size:13.5px;display:flex}.catalog-job-head strong{font-weight:500}.catalog-toolbar{margin-top:28px}.catalog-row-action{align-items:center;gap:12px;display:inline-flex}.catalog-unused{margin-top:14px;font-size:13px}.admin-field select{border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface-inset);width:100%;color:var(--color-text);font:inherit;color-scheme:inherit;padding:10px 12px;font-size:14px;font-weight:400}.admin-field select:focus{border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-focus-ring);outline:0}.admin-stat .muted{font-size:12.5px}.system-license{gap:14px;padding:20px 24px;display:grid}.system-license dl{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0;display:grid}.system-license dt{color:var(--color-text-secondary);margin-bottom:4px;font-size:13px}.system-license dd{margin:0;font-size:14.5px;font-weight:500}.system-license p{margin:0;font-size:13px}.system-region{gap:2px;min-width:0;display:grid}.system-region strong{font-weight:500}.system-region .muted{font-size:12.5px}.system-message{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.system-actions{justify-content:flex-end;gap:12px;display:flex}.system-servers-head{justify-content:space-between;align-items:center;gap:16px;margin:32px 0 12px;display:flex}.system-servers-head .admin-section-title{margin:0}.system-usage{gap:5px;font-size:12.5px;display:grid}.system-types{border-collapse:collapse;width:100%;font-size:13.5px}.system-types th,.system-types td{text-align:left;color:var(--color-text-secondary);padding:6px 8px 6px 0;font-weight:500}.system-types thead th{font-size:12.5px}.system-types tbody th{color:var(--color-text)}.system-types td.muted{font-weight:400}.system-types input{border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface-inset);width:100%;max-width:140px;color:var(--color-text);font:inherit;color-scheme:inherit;padding:8px 10px;font-weight:400}.system-types input:focus{border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-focus-ring);outline:0}.system-saved{align-self:center;margin-right:auto;font-size:13px}@media (max-width:760px){.system-license dl{grid-template-columns:repeat(2,minmax(0,1fr))}}.admin .btn:disabled{opacity:.45;cursor:default;pointer-events:none}.studio-notice{margin:-8px 0 16px;font-size:13.5px}.studio-errors{margin:0 0 16px}.studio-editor{grid-template-columns:minmax(0,300px) minmax(0,1fr);align-items:start;gap:16px;margin-top:16px;display:grid}.studio-tree{gap:14px;padding:18px;display:grid}.studio-network{gap:2px;display:grid}.studio-node{text-align:left;width:100%;min-width:0;color:var(--color-text);border-radius:8px;align-items:center;gap:8px;padding:7px 10px;font-size:13.5px;display:flex}.studio-node:hover{background:var(--color-surface-hover)}.studio-node.on{background:var(--color-surface-raised);box-shadow:inset 0 0 0 1px var(--color-border-strong)}.studio-node.net{justify-content:space-between;font-weight:600}.studio-node:not(.net){padding-left:18px}.studio-node svg{color:var(--color-text-muted);flex:none}.studio-node .muted{text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:12px;overflow:hidden}.studio-tag{background:var(--color-surface-inset);color:var(--color-text-secondary);border-radius:6px;flex:none;padding:2px 7px;font-size:11.5px;font-weight:500}.studio-tree-actions{gap:8px;display:flex}.studio-resources{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.studio-rules{overflow-x:auto}.studio-rules table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:640px;font-size:13.5px}.studio-rules th{text-align:left;color:var(--color-text-secondary);padding:10px 6px;font-size:12.5px;font-weight:500}.studio-rules td{border-top:1px solid var(--color-border);padding:6px}.studio-rules .num{width:34px}.studio-rules .proto{width:110px}.studio-rules .action{width:100px}.studio-rules .tools{text-align:right;white-space:nowrap;width:108px}.studio-rules select,.studio-rules input{border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface-inset);width:100%;color:var(--color-text);font:inherit;color-scheme:inherit;padding:7px 9px;font-size:13px}.studio-rules input:disabled{opacity:.5}.studio-rules select.allow{color:var(--color-success)}.studio-rules select.drop{color:var(--color-danger)}.studio-rules-empty{margin:10px 4px;font-size:13.5px}.icon-btn{width:30px;height:30px;color:var(--color-text-secondary);border-radius:7px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--color-surface-hover);color:var(--color-text)}.icon-btn:disabled{opacity:.35;pointer-events:none}@media (max-width:860px){.studio-editor{grid-template-columns:minmax(0,1fr)}}.studio-lang{background:var(--color-surface-inset);border-radius:9px;margin-right:6px;padding:3px;display:inline-flex}.studio-lang button{height:28px;color:var(--color-text-secondary);border-radius:7px;padding:0 12px;font-size:13px;font-weight:500}.studio-lang button.on{background:var(--color-surface-raised);color:var(--color-text);box-shadow:inset 0 0 0 1px var(--color-border-strong)}.studio-lang-tag{background:var(--color-surface-inset);color:var(--color-text-muted);letter-spacing:.04em;border-radius:4px;margin-left:4px;padding:1px 5px;font-size:10.5px;font-weight:600}.studio-tree-title{color:var(--color-text-muted);margin:4px 0 4px 10px;font-size:12px;font-weight:600}.studio-node-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.studio-node.child{color:var(--color-text-secondary);padding-left:26px;font-size:13px}.studio-node.missing:after{content:"";background:var(--color-warning);border-radius:50%;flex:none;width:7px;height:7px;margin-left:6px}.studio-option{grid-template-columns:18px minmax(0,1fr) 30px;align-items:center;gap:10px;display:grid}.studio-option input[type=radio]{width:16px;height:16px;accent-color:var(--color-primary-strong)}.studio-hint{grid-template-columns:minmax(0,1fr) 90px 30px;align-items:end;gap:10px;display:grid}.studio-hint .icon-btn{margin-bottom:6px}.studio-inline-add{justify-self:start}.studio-new{margin:-8px 0 20px}.studio-new-types{flex-wrap:wrap;gap:8px;display:flex}.studio-detail textarea.mono{font-family:var(--font-mono);font-size:13px;line-height:1.55}.studio-node-label+.muted{flex:none}.studio-upload{margin-bottom:20px}.studio-upload input[type=file]{padding:8px 10px;font-size:13px}.studio-publish-form{margin-top:16px}.studio-node.grandchild{padding-left:40px;font-size:13px}.studio-publish{margin-bottom:20px}.studio-rules-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.studio-rules-head h2,.studio-env-intro{margin:0}.studio-releases{border-collapse:collapse;width:100%;font-size:13.5px}.studio-releases th,.studio-releases td{text-align:left;border-bottom:1px solid var(--color-border);padding:8px 8px 8px 0}.studio-releases th{color:var(--color-text-secondary);font-size:12.5px;font-weight:500}.account{gap:16px;display:grid}.account .admin-head{margin-bottom:8px}.account-head{align-items:center;gap:18px;padding:22px 24px;display:flex}.account-head>div{flex:1;min-width:0}.account-head h1{letter-spacing:-.02em;margin:0 0 4px;font-size:24px;font-weight:600}.account-head p{margin:0;font-size:13.5px}.account-groups{margin-top:6px!important}.account-stats{margin:0}.account .admin-section-title{margin:16px 0 0}.account-list{padding:6px 20px;display:grid}.account-list.plain{padding:0}.account-row{justify-content:space-between;align-items:center;gap:16px;padding:11px 0;font-size:13.5px;display:flex}.account-row+.account-row{border-top:1px solid var(--color-border)}.account-row>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.account-row .muted{flex:none;font-size:13px}.account-row-end{flex:none;align-items:center;gap:12px;display:flex}.account-list>p{margin:10px 0;font-size:13.5px}.account-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}@media (max-width:860px){.account-grid{grid-template-columns:minmax(0,1fr)}.account-head{flex-wrap:wrap}}.account-menu{position:relative}.account-menu>button{border-radius:50%}.account-menu>button:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.account-menu-panel{z-index:40;border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:240px;box-shadow:0 12px 32px var(--color-shadow-dialog);padding:6px;position:absolute;top:calc(100% + 10px);right:0}.account-menu-who{border-bottom:1px solid var(--color-border);gap:2px;margin-bottom:4px;padding:8px 10px 10px;font-size:13.5px;display:grid}.account-menu-who strong{font-weight:600}.account-menu-who span{color:var(--color-text-muted);text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.account-menu-panel [role=menuitem]{border-radius:var(--radius-control);width:100%;min-height:38px;color:var(--color-text-secondary);text-align:left;align-items:center;padding:8px 10px;font-size:13.5px;display:flex}.account-menu-panel [role=menuitem]:hover,.account-menu-panel [role=menuitem]:focus-visible{background:var(--color-surface-hover);color:var(--color-text);outline:0}.auth{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.auth-card{gap:12px;width:min(400px,100%);padding:28px;display:grid}.auth-brand{align-items:center;gap:10px;margin-bottom:8px;font-size:14px;font-weight:600;display:flex}.auth-card h1{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600}.auth-card>p{margin:0;font-size:13.5px}.auth-form{gap:14px;margin-top:6px;display:grid}.auth-form .btn{justify-content:center}.auth-link{color:var(--color-text-secondary);justify-self:center;font-size:13px}.auth-link:hover{color:var(--color-text)}:is(a.card,button.card){transition:background-color .15s}:is(a.card,button.card).spot:before,:is(a.card,button.card).spot:after{display:none}:is(a.content-row,.lab-topic>summary){transition:background-color .15s}@media (hover:hover){:is(a.content-row,.lab-topic>summary):hover{background-color:var(--color-list-hover)}}:is(a.card,button.card):focus-visible{outline:2px solid var(--color-primary-strong);outline-offset:3px}@media (prefers-reduced-motion:reduce){:is(a.card,button.card,a.content-row,.lab-topic>summary){transition:none}}:is(a.card,button.card){isolation:isolate}:root :is(a.card,button.card):not(:disabled):after{content:"";z-index:1;border-radius:inherit;background:var(--color-card-hover-overlay);pointer-events:none;opacity:0;transition:opacity .15s;display:block;position:absolute;inset:0}@media (hover:hover){:root :is(a.card,button.card):not(:disabled):hover:after{opacity:1}}@media (prefers-reduced-motion:reduce){:root :is(a.card,button.card):not(:disabled):after{transition:none}}
