:root{--pos:#22c55e;--pos-bg:#22c55e24;--warn:#f5b40a;--warn-bg:#f5b40a24;--neg:#ef4444;--neg-bg:#ef444424;--off:#8a8f98;--off-bg:#8a8f9824;--ink:#f5f6f8;--ink-2:#f5f6f8b8;--ink-3:#f5f6f880;--ink-4:#f5f6f852;--ease:cubic-bezier(.215,.61,.355,1);--ease-back:cubic-bezier(.175,.885,.32,1.275);--t-in:1.4s;--t-swap:.7s;--t-hover:.8s;--t-tab:.35s;--t-press:.55s;--accent:#78a8ff;--on-accent:#061226;--bg:#08090c;--r:12px;--r-sm:8px;--r-btn:12px;--pad:22px;--gap:16px;--row:48px;--ctl:44px;--head:"Montserrat",system-ui,sans-serif;--head-w:700;--text:"Montserrat",system-ui,sans-serif;--mono:"JetBrains Mono",ui-monospace,monospace;--card:#ffffff0a;--card-hover:#ffffff12;--card-edge:transparent;--sub:#ffffff0f;--sub-hover:#ffffff1a;--edge:#ffffff1a;--code-bg:#0c0e12}[data-accent=mistlix]{--accent:#78a8ff;--on-accent:#061226}[data-accent=sky]{--accent:#4ba6dc;--on-accent:#fff}[data-accent=arqion]{--accent:#2f6bff;--on-accent:#fff}[data-accent=cyan]{--accent:#00a3ff;--on-accent:#fff}[data-accent=violet]{--accent:#933eff;--on-accent:#fff}[data-accent=fire]{--accent:#ff5a1f;--on-accent:#fff}[data-accent=orange]{--accent:#ff9f0a;--on-accent:#241300}[data-accent=lime]{--accent:#a3ff12;--on-accent:#142000}:root{--accent-soft:color-mix(in srgb,var(--accent) 14%,transparent);--accent-line:color-mix(in srgb,var(--accent) 55%,transparent)}[data-bg=ink]{--bg:#08090c;--code-bg:#0c0e12}[data-bg=slate]{--bg:#0e1116;--code-bg:#0a0c10}[data-bg=navy]{--bg:#0b1020;--code-bg:#080c18}[data-card=fill]{--card:#ffffff0a;--card-hover:#ffffff12;--card-edge:transparent}[data-card=fill-edge]{--card:#ffffff0a;--card-hover:#ffffff12;--card-edge:#ffffff14}[data-card=edge]{--card:transparent;--card-hover:#ffffff08;--card-edge:#ffffff1f}[data-card=solid]{--card:#111318;--card-hover:#171a21;--card-edge:transparent}[data-radius="8"]{--r:8px;--r-sm:6px;--r-btn:8px}[data-radius="12"]{--r:12px;--r-sm:8px;--r-btn:12px}[data-radius="16"]{--r:16px;--r-sm:10px;--r-btn:14px}[data-btn=pill]{--r-btn:999px}[data-font=montserrat]{--head:"Montserrat",system-ui,sans-serif;--head-w:700;--text:"Montserrat",system-ui,sans-serif}[data-font=alternates]{--head:"Montserrat Alternates",system-ui,sans-serif;--head-w:700;--text:"Onest",system-ui,sans-serif}[data-font=unbounded]{--head:"Unbounded",system-ui,sans-serif;--head-w:500;--text:"Onest",system-ui,sans-serif}@media (prefers-reduced-motion:reduce){:root{--t-in:10ms;--t-swap:10ms;--t-hover:10ms;--t-press:10ms;--t-tab:10ms}*{animation-duration:10ms!important}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font:400 15px/1.6 var(--text);-webkit-font-smoothing:antialiased;transition:background-color var(--t-swap) var(--ease);min-height:100vh}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit;color:inherit;background:0 0;border:0}button{cursor:pointer}ul{list-style:none}h1,h2,h3,h4{font-family:var(--head);font-weight:var(--head-w);letter-spacing:-.02em;line-height:1.25}.num{font-variant-numeric:tabular-nums}.muted{color:var(--ink-3)}svg.i{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px}:focus-visible{outline-offset:2px;outline:2px solid var(--accent)!important}.btn{height:var(--ctl);border-radius:var(--r-btn);white-space:nowrap;outline-offset:-2px;transition:transform var(--t-hover) var(--ease),background-color var(--t-hover) var(--ease),color var(--t-hover) var(--ease),outline-color .4s ease,opacity .5s ease;outline:1.5px dashed #0000;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.btn:hover{transform:scale(.97)}.btn:active{transition-duration:var(--t-press);outline-color:currentColor;transform:scale(.92);background:0 0!important}.btn-accent{background:var(--accent);color:var(--on-accent)}.btn-accent:active{color:var(--accent)}.btn-white{color:#000;background:#fff}.btn-white:active{color:#fff}.btn-soft{background:var(--accent-soft);color:var(--accent)}.btn-dark{color:var(--ink);background:#ffffff12}.btn-dark:hover{background:#ffffff1a}.btn-link{color:var(--accent);transition:gap var(--t-hover) var(--ease),opacity .4s;align-items:center;gap:6px;font-weight:500;display:inline-flex}.btn-link:hover{gap:10px}.btn-link:active{opacity:.6}.btn-sm{height:calc(var(--ctl) - 8px);padding:0 14px;font-size:14px}.icon-btn{border-radius:var(--r-sm);width:36px;height:36px;color:var(--ink-3);outline-offset:-2px;transition:color .5s,background-color .5s,transform var(--t-hover) var(--ease),outline-color .4s;outline:1.5px dashed #0000;place-items:center;display:grid}.icon-btn:hover{color:var(--ink);background:var(--sub);transform:scale(.94)}.icon-btn:active{transition-duration:var(--t-press);background:0 0;outline-color:currentColor;transform:scale(.88)}.btn[disabled]{opacity:.4;cursor:not-allowed;outline-color:#0000!important;transform:none!important}.btn .lbl{transition:opacity .3s ease,transform .4s var(--ease);align-items:center;gap:8px;display:inline-flex}.btn.swap .lbl{opacity:0;transform:translateY(4px)}.dots{gap:3px;display:inline-flex}.dots i{background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.2s ease-in-out infinite dots}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes dots{0%,80%,to{opacity:.3;transform:none}40%{opacity:1;transform:translateY(-3px)}}.btn.ok{background:var(--pos)!important;color:#04210f!important}.btn.shake{animation:shake .45s var(--ease)}@keyframes shake{0%,to{transform:none}20%{transform:translate(-5px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.card{background:var(--card);border:1px solid var(--card-edge);border-radius:var(--r);padding:var(--pad);transition:background-color var(--t-hover) var(--ease),border-color var(--t-hover) var(--ease),transform var(--t-hover) var(--ease)}.card.hov{cursor:pointer}.card.hov:hover{background:var(--card-hover);transform:scale(.98)}.card.hov:active{transition-duration:var(--t-press);transform:scale(.96)}.seg{border-radius:calc(var(--r-btn) + 2px);background:var(--sub);gap:2px;padding:4px;display:inline-flex;position:relative}.seg button{z-index:1;height:calc(var(--ctl) - 10px);border-radius:var(--r-btn);color:var(--ink-3);transition:color var(--t-tab) var(--ease),transform var(--t-hover) var(--ease);align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex;position:relative}.seg button:hover{transform:scale(.97)}.seg button:active{transition-duration:var(--t-press);transform:scale(.92)}.seg button.on{color:var(--ink)}.seg .pill{border-radius:var(--r-btn);transition:left var(--t-tab) var(--ease),width var(--t-tab) var(--ease);background:#ffffff1a;position:absolute;top:4px;bottom:4px;left:4px}.badge{background:var(--sub);min-width:20px;height:20px;color:var(--ink-2);border-radius:99px;place-items:center;padding:0 6px;font-size:12px;font-weight:600;display:inline-grid}.badge.pos{background:var(--pos-bg);color:var(--pos)}.badge.neg{background:var(--neg-bg);color:var(--neg)}.st-pill{white-space:nowrap;border-radius:99px;align-items:center;gap:6px;height:26px;padding:0 10px;font-size:13px;font-weight:500;display:inline-flex}.st-pill i{background:currentColor;border-radius:50%;width:7px;height:7px}.is-pos{color:var(--pos)}.st-pill.is-pos{background:var(--pos-bg)}.is-warn{color:var(--warn)}.st-pill.is-warn{background:var(--warn-bg)}.is-warn i{animation:1.4s ease-in-out infinite blink}.is-neg{color:var(--neg)}.st-pill.is-neg{background:var(--neg-bg)}.is-off{color:var(--off)}.st-pill.is-off{background:var(--off-bg)}.is-acc{color:var(--accent)}.st-pill.is-acc{background:var(--accent-soft)}@keyframes blink{50%{opacity:.3}}.reveal{transition:grid-template-rows var(--t-swap) var(--ease);grid-template-rows:0fr;display:grid}.reveal>*{opacity:0;min-height:0;transition:opacity .5s;overflow:hidden}.reveal.open{grid-template-rows:1fr}.reveal.open>*{opacity:1;transition:opacity .7s .12s}.rise{opacity:0;transition:opacity var(--t-in) var(--ease),transform var(--t-in) var(--ease);transform:translateY(14px)}.rise.in{opacity:1;transform:none}.top{z-index:30;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid #ffffff0f;align-items:center;gap:24px;height:64px;padding:0 24px;display:flex;position:sticky;top:0}.logo{font-family:var(--head);font-weight:var(--head-w);letter-spacing:-.02em;align-items:center;gap:10px;font-size:18px;display:flex}.logo b{border-radius:var(--r-sm);background:var(--accent);width:32px;height:32px;color:var(--on-accent);place-items:center;font-size:13px;display:grid}.nav{gap:4px;display:flex;position:relative}.nav a{z-index:1;border-radius:var(--r-btn);height:38px;color:var(--ink-3);outline-offset:-2px;transition:color var(--t-tab) var(--ease),transform var(--t-hover) var(--ease),outline-color .4s;outline:1.5px dashed #0000;align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex;position:relative}.nav a:hover{color:var(--ink);transform:scale(.97)}.nav a:active{transition-duration:var(--t-press);outline-color:currentColor;transform:scale(.92)}.nav a.on{color:var(--accent)}.nav .pill{border-radius:var(--r-btn);background:var(--accent-soft);height:38px;transition:left var(--t-tab) var(--ease),width var(--t-tab) var(--ease);position:absolute;top:0}.top .sp{flex:1}.streak{color:var(--ink-2);align-items:center;gap:6px;font-size:14px;display:inline-flex}.ava{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:50%;place-items:center;font-size:14px;font-weight:600;display:grid}.progress-top{background:var(--accent);z-index:60;opacity:0;width:0;height:2px;position:fixed;top:0;left:0}.view{display:none}.view.on{animation:viewIn .55s var(--ease) both;display:block}.view.leaving{animation:viewOut .32s var(--ease) both}@keyframes viewIn{0%{opacity:0;transform:scale(.96)}}@keyframes viewOut{to{opacity:0;transform:scale(.96)}}.lesson-grid{grid-template-columns:260px minmax(0,1fr) 220px;gap:40px;max-width:1440px;margin:0 auto;padding:28px 24px 80px;display:grid}.tree{align-self:start;max-height:calc(100vh - 110px);padding-right:4px;position:sticky;top:92px;overflow:auto}.tree-mod{margin-bottom:6px}.tree-mod>button{border-radius:var(--r-sm);width:100%;height:40px;color:var(--ink-2);transition:background-color .5s,color .5s,transform var(--t-hover) var(--ease);align-items:center;gap:10px;padding:0 10px;font-size:14px;font-weight:600;display:flex}.tree-mod>button:hover{background:var(--sub);color:var(--ink)}.tree-mod>button:active{transition-duration:var(--t-press);transform:scale(.97)}.tree-mod>button .chev{transition:transform var(--t-swap) var(--ease);margin-left:auto}.tree-mod.open>button .chev{transform:rotate(90deg)}.tree-mod .mnum{color:var(--ink-4);width:18px;font-size:12px}.tree ul{padding:2px 0 8px 18px}.tree li a{border-radius:var(--r-sm);min-height:36px;color:var(--ink-3);align-items:center;gap:10px;padding:6px 10px 6px 14px;font-size:14px;transition:color .5s,background-color .5s;display:flex;position:relative}.tree li a:hover{color:var(--ink);background:#ffffff08}.tree li a:before{content:"";background:0 0;border-radius:2px;width:2px;transition:background-color .5s;position:absolute;top:8px;bottom:8px;left:0}.tree li a.on{color:var(--ink);background:var(--accent-soft)}.tree li a.on:before{background:var(--accent)}.tree li a span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dot{border:1.5px solid var(--ink-4);border-radius:50%;flex:none;place-items:center;width:16px;height:16px;display:grid}.dot.done{background:var(--pos);border-color:var(--pos)}.dot.done svg{stroke:#04210f;stroke-width:3px;width:10px;height:10px}.dot.cur{border-color:var(--accent)}.dot.cur:after{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px}.dot.lock{border:0}.tree .mprog{color:var(--ink-3);align-items:center;gap:10px;padding:4px 10px 14px;font-size:12px;display:flex}.bar{background:var(--sub);border-radius:4px;flex:1;height:4px;overflow:hidden}.bar i{background:var(--accent);width:0;height:100%;transition:width 1.6s var(--ease);border-radius:4px;display:block}.article{width:100%;min-width:0;max-width:780px;margin:0 auto}.crumbs{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;font-size:13px;display:flex}.crumbs a:hover{color:var(--ink)}.article h1{align-items:center;gap:14px;margin-bottom:10px;font-size:34px;display:flex}.meta{color:var(--ink-3);flex-wrap:wrap;gap:16px;margin-bottom:32px;font-size:13px;display:flex}.meta span{align-items:center;gap:6px;display:inline-flex}.article h2{margin:44px 0 12px;scroll-margin-top:90px;font-size:22px}.article p{color:var(--ink-2);margin-bottom:14px}.article p code,.article li code{font-family:var(--mono);background:var(--sub);color:var(--ink);border-radius:6px;padding:2px 6px;font-size:13px}.article ul.list{gap:8px;margin:0 0 16px;display:grid}.article ul.list li{color:var(--ink-2);padding-left:20px;position:relative}.article ul.list li:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:10px;left:4px}.note{border-radius:var(--r);color:var(--ink-2);gap:12px;margin:18px 0;padding:14px 16px;font-size:14px;display:flex}.note b{color:var(--ink);margin-bottom:2px;display:block}.note.tip{background:var(--accent-soft)}.note.tip svg{color:var(--accent)}.note.warn{background:var(--warn-bg)}.note.warn svg{color:var(--warn)}.code{border-radius:var(--r);background:var(--code-bg);border:1px solid #ffffff0f;margin:18px 0;overflow:hidden}.code-head{height:44px;color:var(--ink-3);border-bottom:1px solid #ffffff0f;align-items:center;gap:10px;padding:0 8px 0 16px;font-size:13px;display:flex}.code-head .sp{flex:1}.code-head .file{font-family:var(--mono);font-size:12px}pre{font:400 13.5px/1.7 var(--mono);tab-size:4;color:#d6dae2;margin:0;padding:16px 18px;overflow:auto}.k{color:#c792ea}.s{color:#a5d6a7}.n{color:#f78c6c}.c{color:#5c6370;font-style:italic}.f{color:var(--accent)}.t{color:#7fdbca}.out{border-top:1px solid #ffffff0f}.out-body{font:400 13px/1.7 var(--mono);padding:12px 18px 14px}.out-line{opacity:0;animation:lineIn .6s var(--ease) forwards;transform:translateY(6px)}@keyframes lineIn{to{opacity:1;transform:none}}.out-meta{font-family:var(--text);color:var(--ink-3);gap:14px;margin-top:8px;font-size:12px;display:flex}.task{margin-top:28px;padding:0;overflow:hidden}.task-head{padding:var(--pad);align-items:flex-start;gap:16px;display:flex}.task-ico{border-radius:var(--r);background:var(--accent-soft);flex:none;place-items:center;width:48px;height:48px;font-size:22px;display:grid}.task-head h3{margin-bottom:4px;font-size:18px}.task-head p{margin:0;font-size:14px}.task-head .sp{flex:1}.task-cond{padding:0 var(--pad) 18px;color:var(--ink-2);font-size:14px}.task-cond .ex{border-radius:var(--r-sm);background:var(--sub);font:13px/1.6 var(--mono);grid-template-columns:auto 1fr;gap:4px 14px;margin-top:12px;padding:12px 14px;display:grid}.task-cond .ex span:nth-child(odd){color:var(--ink-3);font-family:var(--text)}.editor{background:var(--code-bg);border-top:1px solid #ffffff0f;border-bottom:1px solid #ffffff0f;position:relative}.ed-bar{height:42px;color:var(--ink-3);border-bottom:1px solid #ffffff0d;align-items:center;gap:6px;padding:0 8px 0 16px;font-size:12px;display:flex}.ed-bar .file{font-family:var(--mono);align-items:center;gap:8px;display:inline-flex}.ed-bar .unsaved{background:var(--warn);opacity:0;border-radius:50%;width:7px;height:7px;transition:opacity .6s}.ed-bar .unsaved.on{opacity:1}.ed-bar .sp{flex:1}.ed-wrap{grid-template-columns:44px 1fr;max-height:420px;display:grid;position:relative;overflow:auto}.gutter{text-align:right;font:400 13.5px/1.7 var(--mono);color:var(--ink-4);-webkit-user-select:none;user-select:none;border-right:1px solid #ffffff0a;padding:14px 12px 14px 0}.ed-area{position:relative}.ed-area pre,.ed-area textarea{font:400 13.5px/1.7 var(--mono);white-space:pre;tab-size:4;min-height:100%;margin:0;padding:14px 16px}.ed-area textarea{resize:none;color:#0000;width:100%;height:100%;caret-color:var(--accent);outline:none;position:absolute;inset:0;overflow:hidden}.ed-area textarea::selection{background:color-mix(in srgb,var(--accent) 30%,transparent)}.ed-area pre{pointer-events:none}.actions{padding:14px var(--pad);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.actions .sp{flex:1}.kbd{font-family:var(--mono);background:var(--sub);color:var(--ink-3);border-radius:5px;padding:2px 6px;font-size:11px}.run-panel .rp-head{padding:0 var(--pad) 12px;flex-wrap:wrap;align-items:center;gap:12px;display:flex}.run-panel .rp-head .sp{flex:1}.stages{color:var(--ink-4);align-items:center;gap:6px;font-size:12px;display:flex}.stage{align-items:center;gap:6px;transition:color .6s;display:inline-flex}.stage i{background:currentColor;border-radius:50%;width:6px;height:6px}.stage.act{color:var(--warn)}.stage.act i{animation:1.4s infinite blink}.stage.ok{color:var(--pos)}.stage-sep{background:var(--ink-4);width:14px;height:1px}.console{margin:0 var(--pad) var(--pad);border-radius:var(--r-sm);background:var(--code-bg);font:400 13px/1.7 var(--mono);border:1px solid #ffffff0f;min-height:120px;max-height:300px;padding:12px 0;overflow:auto}.console .ln{opacity:0;animation:lineIn .6s var(--ease) forwards;grid-template-columns:78px 1fr;gap:10px;padding:1px 14px;display:grid;transform:translateY(6px)}.console .ln .tm{color:var(--ink-4)}.console .ln.sys .tx{color:var(--accent)}.console .ln.err{background:#ef444412}.console .ln.err .tx{color:#f6a3a3}.console .ln.warn{background:#f5b40a12}.console .ln.warn .tx{color:#f3cf74}.console .empty{color:var(--ink-4);font-family:var(--text);text-align:center;padding:24px 14px;font-size:14px}.tests{margin:0 var(--pad) var(--pad);gap:6px;display:grid}.test{border-radius:var(--r-sm);background:var(--sub);opacity:0;animation:testIn .8s var(--ease) forwards;grid-template-columns:24px minmax(0,1fr) auto;align-items:start;gap:12px;padding:12px 14px;display:grid;transform:scale(.97)}@keyframes testIn{to{opacity:1;transform:none}}.test .ti{border-radius:50%;place-items:center;width:22px;height:22px;margin-top:1px;display:grid}.test.pass .ti{background:var(--pos-bg);color:var(--pos)}.test.fail .ti{background:var(--neg-bg);color:var(--neg)}.test .ti svg{stroke-width:2.6px;width:13px;height:13px}.test .nm{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;overflow:hidden}.test .msg{font:12.5px/1.6 var(--mono);color:#f6a3a3;white-space:pre-wrap;margin-top:4px}.test .tm{color:var(--ink-3);font-size:12px}.verdict{margin:0 var(--pad) var(--pad);border-radius:var(--r);border:1px solid;align-items:center;gap:14px;padding:16px 18px;display:flex}.verdict.good{border-color:color-mix(in srgb,var(--pos) 45%,transparent);background:color-mix(in srgb,var(--pos) 9%,transparent)}.verdict.bad{border-color:color-mix(in srgb,var(--neg) 40%,transparent);background:color-mix(in srgb,var(--neg) 7%,transparent)}.verdict .em{font-size:26px}.verdict b{display:block}.verdict .sp{flex:1}.verdict p{color:var(--ink-2);margin:0;font-size:14px}.hints{padding:0 var(--pad) var(--pad);gap:8px;display:grid}.hint{border-radius:var(--r-sm);background:var(--sub)}.hint>button{width:100%;height:46px;color:var(--ink-2);transition:color .5s,transform var(--t-hover) var(--ease);align-items:center;gap:10px;padding:0 14px;font-size:14px;font-weight:500;display:flex}.hint>button:hover{color:var(--ink)}.hint>button:active{transition-duration:var(--t-press);transform:scale(.98)}.hint>button .pl{transition:transform var(--t-swap) var(--ease);margin-left:auto}.hint.open>button .pl{transform:rotate(45deg)}.hint .body{color:var(--ink-2);padding:0 14px 14px 42px;font-size:14px}.hint.locked>button{color:var(--ink-4);cursor:not-allowed}.toc{align-self:start;position:sticky;top:92px}.toc h4{color:var(--ink-3);font-size:13px;font-family:var(--text);margin-bottom:10px;font-weight:500}.toc a{color:var(--ink-3);padding:6px 0 6px 14px;font-size:13px;transition:color .5s;display:block;position:relative}.toc a:before{content:"";background:var(--edge);border-radius:2px;width:2px;transition:background-color .5s;position:absolute;top:6px;bottom:6px;left:0}.toc a:hover,.toc a.on{color:var(--ink)}.toc a.on:before{background:var(--accent)}.side-card{margin-top:24px;padding:16px}.side-card .big{font-family:var(--head);font-weight:var(--head-w);font-size:26px}.side-card small{color:var(--ink-3);margin-bottom:10px;font-size:12px;display:block}.pager{grid-template-columns:1fr 1fr;gap:12px;margin-top:40px;display:grid}.pager .card{padding:16px 18px}.pager small{color:var(--ink-3);font-size:12px;display:block}.pager b{font-weight:600}.pager .next{text-align:right}.helpful{color:var(--ink-3);justify-content:center;align-items:center;gap:12px;margin-top:32px;font-size:14px;display:flex}.helpful button{font-size:18px}.map{max-width:1200px;margin:0 auto;padding:40px 24px 80px}.page-title{align-items:center;gap:14px;margin-bottom:6px;font-size:30px;display:flex}.map-sub{color:var(--ink-3);margin-bottom:28px}.kpis{gap:var(--gap);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:36px;display:grid}.kpi small{color:var(--ink-3);align-items:center;gap:8px;margin-bottom:8px;font-size:13px;display:flex}.kpi .big{font-family:var(--head);font-weight:var(--head-w);font-size:30px}.kpi .d{color:var(--pos);font-size:12px}.mods{gap:var(--gap);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.mod{flex-direction:column;gap:12px;min-height:200px;display:flex}.mod .mh{align-items:center;gap:12px;display:flex}.mod .me{border-radius:var(--r-sm);background:var(--accent-soft);flex:none;place-items:center;width:44px;height:44px;font-size:20px;display:grid}.mod .mn{color:var(--ink-3);font-size:12px}.mod h3{font-size:17px}.mod p{color:var(--ink-3);flex:1;font-size:14px}.mod .mf{color:var(--ink-3);align-items:center;gap:12px;font-size:13px;display:flex}.mod.locked{opacity:.55}.scrim{z-index:80;opacity:0;transition:opacity .5s var(--ease);background:#0009;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.scrim.on{opacity:1}.modal{border-radius:calc(var(--r) + 4px);opacity:0;width:640px;max-width:100%;max-height:calc(100vh - 32px);transition:transform .6s var(--ease),opacity .5s ease;background:#121419;padding:26px;overflow:auto;transform:translateY(16px)scale(.96)}.scrim.on .modal{opacity:1;transform:none}.modal h3{margin-bottom:4px;font-size:20px}.modal .mrow{margin-top:20px}.modal .mrow>small{color:var(--ink-3);margin-bottom:8px;font-size:12px;display:block}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips button{border-radius:var(--r-sm);border:1px solid var(--edge);height:38px;color:var(--ink-2);outline-offset:-2px;transition:border-color var(--t-tab) var(--ease),color var(--t-tab) var(--ease),background-color var(--t-tab) var(--ease),transform var(--t-hover) var(--ease),outline-color .4s;outline:1.5px dashed #0000;align-items:center;gap:8px;padding:0 14px;font-size:14px;display:inline-flex}.chips button:hover{color:var(--ink);transform:scale(.97)}.chips button:active{transition-duration:var(--t-press);outline-color:currentColor;transform:scale(.92)}.chips button.on{border-color:var(--accent);color:var(--ink);background:var(--accent-soft)}.sw{border-radius:50%;width:14px;height:14px}.modal .foot{justify-content:flex-end;gap:10px;margin-top:26px;display:flex}.toasts{z-index:90;pointer-events:none;justify-items:center;gap:8px;display:grid;position:fixed;top:16px;left:50%;transform:translate(-50%)}.toast{border-radius:var(--r);opacity:0;transition:transform .7s var(--ease),opacity .6s ease;background:#1a1d24;align-items:center;gap:10px;padding:12px 18px;font-size:14px;display:flex;transform:translateY(-24px);box-shadow:0 10px 30px #00000059}.toast.on{opacity:1;transform:none}.toast svg{color:var(--pos)}@media (width<=1200px){.lesson-grid{grid-template-columns:240px minmax(0,1fr)}.toc{display:none}.mods{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.lesson-grid{grid-template-columns:minmax(0,1fr);padding:20px 16px 60px}.tree,.nav{display:none}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.mods{grid-template-columns:minmax(0,1fr)}.map{padding:28px 16px 60px}.streak{display:none}}@media (width<=560px){.top{gap:12px;padding:0 16px}.article h1{font-size:26px}.pager{grid-template-columns:1fr}.task-head{flex-wrap:wrap}.kbd-hint{display:none}.console .ln{grid-template-columns:1fr}.console .ln .tm{display:none}}.cm-host{min-width:0}.cm-host .cm-editor{max-width:100%}.prose>:last-child{margin-bottom:0}.prose h2:first-child{margin-top:8px}.prose ol.list{color:var(--ink-2);gap:8px;margin:0 0 16px 20px;display:grid}.prose a{color:var(--accent)}.note p{color:var(--ink-2);margin:0}.note>div>span{display:block}.hint .body p{margin:0}.hint .body pre{white-space:pre;overflow:auto}.task-cond p{margin:0}.task-cond code{font-family:var(--mono);background:var(--sub);color:var(--ink);border-radius:6px;padding:2px 6px;font-size:13px}.task-head p{font-size:13px}.console-wrap{position:relative}.new-lines{left:50%;bottom:calc(var(--pad) + 10px);opacity:0;pointer-events:none;height:32px;color:var(--ink);outline-offset:-2px;transition:opacity .6s var(--ease), transform .6s var(--ease), outline-color .4s;background:#1a1d24;border-radius:99px;outline:1.5px dashed #0000;padding:0 14px;font-size:13px;font-weight:500;position:absolute;transform:translate(-50%,8px)scale(.97);box-shadow:0 6px 20px #00000059}.new-lines.on{opacity:1;pointer-events:auto;transform:translate(-50%)}.new-lines:active{transition-duration:var(--t-press);outline-color:currentColor;transform:translate(-50%)scale(.92)}.console{white-space:pre-wrap;word-break:break-word}.skel{border-radius:var(--r-sm);background:linear-gradient(100deg, var(--sub) 30%, #ffffff17 50%, var(--sub) 70%);background-size:300% 100%;animation:1.8s ease-in-out infinite skel}@keyframes skel{0%{background-position:100% 0}to{background-position:0 0}}.load-error{text-align:center;justify-items:center;gap:8px;padding:60px 20px;display:grid}.load-error>span{font-size:36px}.load-error p{margin:0 0 8px}.map-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:28px;display:flex}.map-head .map-sub{margin-bottom:0}.mods>.rise{display:flex}.mods>.rise>.mod{flex:1;min-width:0}.mod-lessons{color:var(--ink-3);gap:4px;font-size:13px;display:grid}.mod-lessons li{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.mod-lessons li.done{color:var(--ink-2)}.mod-lessons li.done svg{color:var(--pos);stroke-width:2.6px}.ldot{background:var(--ink-4);border-radius:50%;flex:none;width:6px;height:6px;margin:0 4px}.sandbox{max-width:980px;margin:0 auto;padding:40px 24px 80px}.sandbox .map-sub{margin-bottom:24px}.nf{text-align:center;justify-items:center;gap:22px;max-width:560px;margin:0 auto;padding:90px 24px;display:grid}.nf-digits{gap:10px;display:flex}.nf-digits span{width:76px;height:92px;font-family:var(--head);font-weight:var(--head-w);place-items:center;padding:0;font-size:44px;display:grid}.nf h1{margin-bottom:6px;font-size:26px}.nf-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.tree,.modal{scrollbar-width:thin}.verdict{flex-wrap:wrap}@media (width<=560px){.sandbox,.map{padding-left:16px;padding-right:16px}.nf-digits span{width:60px;height:74px;font-size:34px}}@media (width<=900px){.top .nav{display:flex}.top .nav a{padding:0 11px}.top .nav-t{display:none}.top .btn-sm{padding:0 11px}.top .btn-sm .lbl{gap:0}}.prose .tbl{border-radius:var(--r);border:1px solid var(--edge);margin:16px 0 20px;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:14px}.prose th{text-align:left;color:var(--ink-3);border-bottom:1px solid var(--edge);white-space:nowrap;background:#ffffff08;padding:10px 14px;font-size:13px;font-weight:500}.prose td{color:var(--ink-2);vertical-align:top;border-bottom:1px solid #ffffff0d;padding:10px 14px}.prose tr:last-child td{border-bottom:0}.prose td code{white-space:nowrap}.prose strong{color:var(--ink);font-weight:600}.prose h3{margin:28px 0 10px;font-size:17px}.note.danger{background:var(--neg-bg)}.note.danger svg{color:var(--neg)}.note code{font-family:var(--mono);background:var(--sub);color:var(--ink);border-radius:6px;padding:2px 6px;font-size:13px}.task-cond .code{margin:12px 0 0}.task-cond .code pre{padding:12px 16px}.task-cond p+p{margin-top:8px}.hint .body code{font-family:var(--mono);color:var(--ink);background:#ffffff14;border-radius:6px;padding:2px 6px;font-size:13px}.field{gap:6px;min-width:0;display:grid}.field>span{color:var(--ink-3);font-size:13px}.inp{width:100%;height:var(--ctl);border-radius:var(--r-btn);background:var(--sub);outline-offset:-1.5px;transition:background-color .5s var(--ease), outline-color .4s ease;outline:1.5px solid #0000;padding:0 14px;font-size:15px}.inp:hover,.inp:focus{background:var(--sub-hover)}.inp::placeholder{color:var(--ink-4)}.code-inp{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase}.field-note{margin:0;font-size:13px}.form-err{color:#f6a3a3;margin:0;padding:2px 0 4px;font-size:14px}.gate{text-align:center;justify-items:center;gap:12px;padding:40px 24px;display:grid}.gate p,.gate h3{margin:0}.gate-ico{font-size:40px}.auth{max-width:460px;margin:0 auto;padding:56px 20px 80px}.auth-card{gap:18px;display:grid}.auth-card .seg{justify-self:start}.auth-card .page-title{margin:0}.auth-sub{margin:-8px 0 0;font-size:14px}a.ava{transition:transform var(--t-hover) var(--ease), background-color .5s}a.ava:hover{background:color-mix(in srgb, var(--accent) 24%, transparent);transform:scale(.92)}a.ava:active{transition-duration:var(--t-press);transform:scale(.86)}.ava.lg{flex:none;width:60px;height:60px;font-size:24px}.profile{gap:22px;display:grid}.prof-head{align-items:center;gap:16px;display:flex}.prof-head p{margin:2px 0 0;font-size:14px}.prof-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.prof-stats>div{border-radius:var(--r-sm);background:var(--sub);gap:2px;padding:14px;display:grid}.prof-stats b{font-family:var(--head);font-weight:var(--head-w);font-size:26px}.prof-stats span{font-size:12px}.prof-act{flex-wrap:wrap;gap:10px;display:flex}.leagues,.league{max-width:860px;margin:0 auto;padding:40px 24px 80px}.lg-new{gap:20px;display:grid}.lg-new .seg{justify-self:start}.lg-form{gap:18px;max-width:560px;display:grid}.mods-pick{padding-top:10px}.lg-h{margin:36px 0 14px;font-size:20px}.lg-h .muted{font-size:14px;font-weight:400;font-family:var(--text);letter-spacing:0}.lg-list{gap:12px;display:grid}.lg-card{gap:10px;display:grid}.lg-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.lg-top h3{font-size:18px}.lg-meta{flex-wrap:wrap;gap:4px 18px;font-size:14px;display:flex}.lg-code{font-family:var(--mono);letter-spacing:.1em;margin-left:auto}.lg-empty{font-size:14px}.lg-head{margin-bottom:20px}.lg-head .map-sub{flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.lg-time{color:var(--ink-3);font-size:14px}.lg-note{margin-top:12px;font-size:13px}.lg-foot{flex-wrap:wrap;align-items:center;gap:10px;margin-top:28px;display:flex}.lg-foot .sp{flex:1}.invite{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.invite small{font-size:12px}.invite-code{font-family:var(--mono);letter-spacing:.18em;color:var(--accent);font-size:30px;font-weight:600}.invite-act{flex-wrap:wrap;gap:8px;display:flex}.board{gap:8px;display:grid}.brow{grid-template-columns:36px minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:14px 18px;display:grid}.brow.me{background:var(--accent-soft)}.place{font-family:var(--head);font-weight:var(--head-w);color:var(--ink-3);text-align:center;font-size:18px}.top1 .place{color:#f5c542}.top2 .place{color:#c7ccd6}.top3 .place{color:#d59a6a}.who{min-width:0}.who b{text-overflow:ellipsis;white-space:nowrap;margin-bottom:8px;display:block;overflow:hidden}.you{color:var(--accent);font-style:normal;font-weight:500}.cells{flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:200px;display:flex}.cell{background:var(--sub-hover);width:12px;height:12px;transition:background-color .8s var(--ease);border-radius:4px}.cell.on{background:var(--accent)}.score{font-family:var(--head);font-weight:var(--head-w);text-align:right;min-width:60px;font-size:22px}.score small{color:var(--ink-3);font-size:13px;font-weight:400}.tabbar{display:none}@media (width<=700px){.top .nav{display:none}.tabbar{z-index:40;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid #ffffff12;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar a{border-radius:var(--r-sm);color:var(--ink-3);outline-offset:-2px;transition:color var(--t-tab) var(--ease), background-color var(--t-tab) var(--ease), transform var(--t-hover) var(--ease), outline-color .4s;outline:1.5px dashed #0000;justify-items:center;gap:2px;padding:7px 0 6px;font-size:11px;font-weight:500;display:grid}.tabbar a.on{color:var(--accent);background:var(--accent-soft)}.tabbar a:active{transition-duration:var(--t-press);outline-color:currentColor;transform:scale(.92)}body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}}@media (width<=560px){.leagues,.league,.auth{padding:28px 16px 40px}.brow{grid-template-columns:26px minmax(0,1fr) auto;gap:10px;padding:12px 14px}.cells{display:none}.score{min-width:48px;font-size:20px}.lg-code{margin-left:0}.invite-code{font-size:24px}.prof-stats>div{padding:12px 10px}.prof-stats b{font-size:22px}.lg-foot .btn,.invite-act .btn{flex:1}.inp{font-size:16px}}.seg button{white-space:nowrap}
