@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/c7f47671e39f7787-s.3wn_q526zaolu.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/f06bf9da926bae75-s.p.3uuun_-7zsf1g.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Fallback;src:local(Arial);ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.0%;size-adjust:102.74%}.NfIg2q_className{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.NfIg2q_variable{--font-instrument:"Instrument Sans", "Instrument Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.3zhtymus0wdqb.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.3nkuoiize4urq.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.1da667lu-u79a.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1i05ju5aeyhye.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.1dgcou5jor5q_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.31-2bzhq1gx_9.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.3xauquyg2sixn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.2taws-qdxmzlf.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.0htwiiqufp3l9.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.28xcb7557rbh2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6ff74e33ebd7bca3-s.2ontrj8z1-o25.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1a69062cfe6f77f8-s.33iiebxkijmxa.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9a4838fcda0d1bca-s.2nzetymcmw3t7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2e95a7d252b9825a-s.0_f09-l1omku8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/23b7a97ae3b5c134-s.p.0fcfx2a-jndc5.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}._4M7gaG_className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}._4M7gaG_variable{--font-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--sans:-apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:"SFMono-Regular", "JetBrains Mono", "Fira Code", ui-monospace, Menlo, Consolas, monospace;--r-xs:6px;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-xl:18px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--bg:#070b09;--bg-2:#0d1511;--surface:#111b16;--surface-2:#16231c;--surface-3:#1d2b23;--overlay:#050806bd;--border:#c6ffd61f;--border-2:#c6ffd638;--text:#eef7f0;--text-2:#cbd9cf;--muted:#91a699;--faint:#7d9386;--accent:#b8ff5c;--accent-2:#76e7a3;--accent-soft:#b8ff5c1f;--accent-ink:#071008;--success:#76e7a3;--warning:#ffc46b;--danger:#ff7a7a;--info:#7cd8ff;--shadow-1:0 1px 2px #00000080;--shadow-2:0 24px 60px -12px #000000a6, 0 2px 8px #0006;--term-bg:#060a08;--term-fg:#e8f4ea;--term-2:#b6c9bb;--term-3:#7d9386;--term-border:#c6ffd614;--term-chrome:#c6ffd60a;--term-prompt:#b8ff5c;--term-err:#ff9c9c;--term-cmd:#fff;--term-key-bg:#c6ffd60f;--ph-user:#76e7a3;--ph-path:#eef7f0;--ph-sym:#b8ff5c;--term-glow:#b8ff5c7a}[data-theme=light]{--bg:#f5f7f1;--bg-2:#eef2e8;--surface:#fff;--surface-2:#f1f4ec;--surface-3:#e3e9dd;--overlay:#121c1447;--border:#15211a1f;--border-2:#15211a38;--text:#15211a;--text-2:#2b3a30;--muted:#5b6b5f;--faint:#5f6f63;--accent:#1f7a3b;--accent-2:#1f7a3b;--accent-soft:#1f7a3b1c;--accent-ink:#fff;--success:#1f7a3b;--warning:#8a5f06;--danger:#b3261e;--info:#1d5fb8;--shadow-1:0 1px 2px #15211a1a;--shadow-2:0 24px 60px -18px #15211a38, 0 2px 8px #15211a14;--term-bg:#fbfcf8;--term-fg:#162019;--term-2:#3c4a40;--term-3:#657468;--term-border:#15211a29;--term-chrome:#eef2e8;--term-prompt:#1f7a3b;--term-err:#b3261e;--term-cmd:#15211a;--term-key-bg:#e3e9dd;--ph-user:#2f8f51;--ph-path:#15211a;--ph-sym:#1f7a3b;--term-glow:#1f7a3b47}[data-theme=light] body{background:radial-gradient(ellipse 55% 40% at 50% 0%, #76e7a324, transparent 70%), var(--bg)}[data-theme=light] .terminal-wrap{border-color:var(--term-border)}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:radial-gradient(ellipse 55% 40% at 50% 0%, #b8ff5c0d, transparent 70%), var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:15px;line-height:1.6;overflow-x:hidden}.hidden{display:none!important}::selection{background:var(--accent-soft)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--faint) 45%, transparent);background-clip:content-box;border:3px solid #0000;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--faint) 70%, transparent);background-clip:content-box}#app{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.mobile-tabs{display:none}.topbar{align-items:center;gap:var(--s6);background:var(--bg-2);border-bottom:1px solid var(--border);flex:none;min-height:74px;padding:12px 22px 10px;display:flex}.brand{align-items:center;gap:12px;min-width:260px;display:flex}.logo{place-items:center;width:36px;height:36px;display:grid}.logo svg{width:36px;height:36px;display:block}.brand-title{letter-spacing:-.01em;font-size:16px;font-weight:650}.brand-sub{color:var(--faint);letter-spacing:.01em;font-size:12.5px}.stats{flex:1;align-items:center;gap:0;min-width:0;display:flex}.stat{border-right:1px solid var(--border);flex-direction:column;gap:1px;padding:0 20px;display:flex}.stat:first-child{padding-left:2px}.stat-label{letter-spacing:.09em;text-transform:uppercase;color:var(--faint);font-size:11px}.stat-value{font-family:var(--mono);color:var(--text);font-variant-numeric:tabular-nums;font-size:15px;font-weight:500}.stat-value.accent{color:var(--accent-2)}.stats.mono-readout{font-family:var(--mono);letter-spacing:.02em;white-space:nowrap;font-size:12.5px;overflow:hidden}.mstat{color:var(--faint);font-variant-numeric:tabular-nums}.mstat b{color:var(--text);font-variant-numeric:tabular-nums;margin-left:4px;font-weight:600}.mstat b.tick{color:var(--success);transition:color .15s}.msep{color:var(--faint);opacity:.45;margin:0 10px;font-weight:400}.xpbar{background:var(--surface-3);border-radius:99px;flex:none;width:120px;height:5px;margin-left:20px;overflow:hidden}.xpbar-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:99px;width:0%;height:100%;transition:width .5s cubic-bezier(.22,1,.36,1)}.actions{align-items:center;gap:8px;display:flex}.actions #btn-restart{color:var(--warning)}.actions #btn-restart:hover{color:var(--danger);background:#ff6b6b14}.btn{border-radius:var(--r-sm);height:34px;font-family:var(--sans);letter-spacing:.005em;color:var(--text);background:var(--surface-2);border:1px solid var(--border-2);cursor:pointer;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s,color .15s,transform 60ms;display:inline-flex}.btn:hover{background:var(--surface-3)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2);color:var(--text)}.btn.icon{width:34px;padding:0}.btn.icon svg{width:17px;height:17px;display:block}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:#0000}.btn.primary:hover{background:var(--accent-2)}.layout{flex:1;min-height:0;display:flex}.sidebar{background:var(--bg-2);border-right:1px solid var(--border);flex-direction:column;flex:0 0 232px;width:232px;min-height:0;display:flex}.sidebar-head{border-bottom:1px solid var(--border);padding:16px 16px 14px}.search{border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);width:100%;height:36px;color:var(--text);font-family:var(--sans);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23939eb1' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.2-3.2'/%3E%3C/svg%3E");background-position:11px;background-repeat:no-repeat;background-size:14px;padding:0 12px 0 34px;font-size:14px;transition:border-color .15s,background-color .15s}.search:focus{border-color:var(--accent);background-color:var(--surface);outline:none}.overall{margin-top:14px}.overall-label{letter-spacing:.09em;text-transform:uppercase;color:var(--faint);font-size:11px}.overall-track{background:var(--surface-3);border-radius:99px;height:5px;margin:8px 0 6px;overflow:hidden}.overall-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:99px;width:0%;height:100%;transition:width .5s cubic-bezier(.22,1,.36,1)}.overall-text{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px}.modules{flex:1;padding:10px 8px;overflow-y:auto}.act{margin-bottom:10px}.act-head{align-items:center;gap:8px;padding:8px 8px 6px;display:flex}.act-check{text-align:center;width:16px;color:var(--faint);flex:0 0 16px;font-size:13px}.act-done .act-check{color:var(--success)}.act-info{flex:1;min-width:0}.act-title{letter-spacing:.035em;text-transform:uppercase;color:var(--text);font-size:11px;font-weight:700;line-height:1.35}.act-payoff{color:var(--faint);-webkit-line-clamp:2;white-space:normal;-webkit-box-orient:vertical;margin-top:1px;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.act-current .act-title{color:var(--accent-2)}.act.drill .act-title{color:var(--accent)}.act.drill .act-modules{border-left-color:var(--accent)}.act-modules{border-left:0;margin-left:0;padding-left:0}.crumb-act{color:var(--faint);font-weight:400}.module{border-radius:var(--r-lg);border:1px solid #0000;margin-bottom:3px}.module.active{background:var(--surface);border-color:var(--border)}.module-head{cursor:pointer;border-radius:var(--r-lg);align-items:center;gap:7px;padding:8px;transition:background .15s;display:flex}.module-head:hover{background:var(--surface-2)}.module.active .module-head:hover{background:0 0}.module-icon{width:27px;height:27px;font-family:var(--mono);letter-spacing:.03em;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);font-variant-numeric:tabular-nums;border-radius:8px;flex:0 0 27px;place-items:center;font-size:11.5px;font-weight:700;line-height:1;display:grid}.module.active .module-icon{background:var(--accent-soft);color:var(--accent-2);border-color:#0000}.module-info{flex:1;min-width:0}.module-title{letter-spacing:-.01em;-webkit-line-clamp:2;white-space:normal;-webkit-box-orient:vertical;font-size:12.5px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.module-meta{color:var(--faint);font-variant-numeric:tabular-nums;margin-top:1px;font-size:11px}.ring{flex:0 0 23px;width:23px;height:23px}.ring circle{fill:none;stroke-width:2.5px}.ring .bg{stroke:var(--surface-3)}.ring .fg{stroke:var(--accent);stroke-linecap:round;transform-origin:50%;transition:stroke-dashoffset .5s cubic-bezier(.22,1,.36,1);transform:rotate(-90deg)}.ring text{fill:var(--muted);font-family:var(--mono);font-size:9px}.lessons{padding:3px 4px 5px;display:none}.module.active .lessons{display:block}.lesson-item{border-radius:var(--r-sm);color:var(--muted);cursor:pointer;align-items:flex-start;gap:6px;padding:6px 7px;font-size:12px;line-height:1.35;transition:background .12s,color .12s;display:flex;position:relative}.lesson-item>span:nth-child(2){white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:1;min-width:0;display:-webkit-box;overflow:hidden}.lesson-item:hover{background:var(--surface-2);color:var(--text)}.lesson-item.current{background:var(--accent-soft);color:var(--text);font-weight:500}.lesson-check{text-align:center;width:14px;color:var(--faint);flex:0 0 14px;margin-top:1px;font-size:12px}.lesson-item.done .lesson-check{color:var(--success)}.lesson-hours{color:var(--faint);margin-left:auto;font-size:11px}body.nav-mode .sidebar{box-shadow:inset 0 0 0 2px var(--accent)}.lesson-item.nav-cursor{box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)!important;color:var(--text)!important}.lesson-item.nav-cursor:before{content:"▸";color:var(--accent);margin-right:2px}.module.nav-cursor{box-shadow:inset 0 0 0 1px var(--accent)}.nav-legend{color:var(--accent-2);font-size:12px;font-family:var(--mono);border-top:1px dashed var(--border-2);padding:6px 10px}.terminal-wrap{background:var(--term-bg);border:1px solid var(--border);border-radius:var(--r-xl);min-width:0;box-shadow:var(--shadow-2);flex-direction:column;flex:1;margin:14px;transition:border-color .15s,box-shadow .15s;display:flex;position:relative;overflow:hidden}.terminal-wrap:focus-within{border-color:var(--term-glow);box-shadow:0 0 0 1px var(--term-glow), var(--shadow-2)}body.nav-mode .terminal-wrap:focus-within{border-color:var(--border);box-shadow:var(--shadow-2)}.terminal-wrap:before{content:"";z-index:5;pointer-events:none;opacity:.9;background:repeating-linear-gradient(#ffffff08 0 1px,#0000 1px 3px);position:absolute;inset:0}.terminal-wrap:after{content:"";z-index:5;pointer-events:none;background:radial-gradient(120% 90% at 50% 40%,#0000 62%,#00000024 100%);position:absolute;inset:0}[data-theme=light] .terminal-wrap:before{background:repeating-linear-gradient(#15211a07 0 1px,#0000 1px 3px)}[data-theme=light] .terminal-wrap:after{background:radial-gradient(120% 90% at 50% 40%,#0000 66%,#15211a0e 100%)}.term-titlebar{background:var(--term-chrome);border-bottom:1px solid var(--term-border);z-index:6;align-items:center;gap:8px;padding:11px 16px;display:flex;position:relative}.dot{border-radius:50%;width:11px;height:11px}.dot.red{background:#ff5f57}.dot.yellow{background:#febc2e}.dot.green{background:#28c840}.term-title{font-family:var(--mono);color:var(--term-2);margin-left:10px;font-size:13px}.term-badge{letter-spacing:.14em;text-transform:uppercase;color:var(--term-3);border:1px solid var(--term-border);border-radius:99px;margin-left:auto;padding:3px 9px;font-size:10px}.terminal{background:var(--term-bg);color:var(--term-fg);font-family:var(--mono);cursor:text;z-index:1;flex:1;padding:22px 24px;font-size:14.5px;line-height:1.68;position:relative;overflow-y:auto}.output{white-space:pre-wrap;word-break:break-word;color:var(--term-2)}.output .line{white-space:pre-wrap;color:var(--term-2)}.output .err{color:var(--term-err)}.output .ok{color:var(--term-prompt)}.output .sys{color:var(--term-2)}.output .cmdline{color:var(--term-cmd);font-weight:500}.output .taskok{color:var(--term-prompt);font-weight:700}.output .timing{color:var(--term-3);opacity:.75;font-variant-numeric:tabular-nums;font-size:11.5px}.promptline{align-items:center;display:flex;position:relative}.prompt{white-space:pre;font-weight:500}.prompt .p-user{color:var(--ph-user)}.prompt .p-path{color:var(--ph-path)}.prompt .p-sym{color:var(--ph-sym)}.cmd-wrap{flex:1;align-items:center;min-width:0;display:flex;position:relative}.cmd{min-width:0;color:var(--term-cmd);font-family:var(--mono);caret-color:#0000;background:0 0;border:none;outline:none;flex:1;font-size:14.5px;font-weight:500}#block-cursor{color:var(--ph-sym);font-family:var(--mono);pointer-events:none;text-shadow:0 0 8px var(--term-glow);font-size:14.5px;line-height:1;animation:1.06s step-end infinite block-blink;position:absolute;top:50%;transform:translateY(-52%)}#block-cursor.cursor-hidden{display:none}@keyframes block-blink{50%{opacity:0}}.term-hint{background:var(--term-chrome);border-top:1px solid var(--term-border);color:var(--term-3);flex-wrap:wrap;flex:none;align-items:center;gap:6px 4px;padding:9px 16px;font-size:12px;display:flex}.lesson-panel{background:var(--bg-2);border-left:1px solid var(--border);flex:0 0 392px;width:392px;padding:22px 22px 32px;overflow-y:auto}.lesson-content{max-width:100%}.lesson-empty{max-width:340px;margin:40px auto 0}.lesson-empty h2{letter-spacing:-.02em;margin:0 0 10px;font-size:24px;font-weight:650}.lesson-empty p{color:var(--text-2);font-size:15px;line-height:1.7}.lesson-empty ul{color:var(--muted);padding-left:18px;font-size:14px;line-height:1.9}.crumb{letter-spacing:.1em;text-transform:uppercase;color:var(--faint);white-space:nowrap;text-overflow:ellipsis;font-size:9.5px;overflow:hidden}.lesson-title{letter-spacing:-.022em;margin:6px 0 8px;font-size:21px;font-weight:650;line-height:1.22}.objective{color:var(--text-2);border-bottom:1px solid var(--border);gap:8px;padding-bottom:12px;font-size:13.5px;line-height:1.5;display:flex}.objective:before{content:"";background:var(--accent);border-radius:99px;flex:0 0 3px}.theory{color:var(--text-2);white-space:pre-wrap;margin-top:10px;font-size:13.5px;line-height:1.65}.theory strong{color:var(--text);font-weight:600}.theory code{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-xs);font-family:var(--mono);color:var(--success);padding:1.5px 6px;font-size:13px}.section-label{letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin:16px 0 8px;font-size:10px}.examples{flex-direction:column;gap:5px;display:flex}.example{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border);cursor:pointer;flex-direction:column;gap:3px;padding:8px 10px;transition:border-color .15s,transform .1s,background .15s;display:flex}.example:hover{border-color:var(--accent);transform:translateY(-1px)}.example code{font-family:var(--mono);color:var(--success);font-size:12.5px}.example span{color:var(--faint);font-size:11px}.task{border-radius:var(--r-lg);background:linear-gradient(155deg, color-mix(in srgb, var(--accent) 12%, transparent), transparent 70%), var(--surface);border:1px solid color-mix(in srgb, var(--accent) 45%, var(--border));box-shadow:0 14px 34px -24px color-mix(in srgb, var(--accent) 70%, transparent);margin-top:14px;padding:15px;position:relative;overflow:visible}.task.completed{border-color:color-mix(in srgb, var(--success) 45%, var(--border))}.task-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.task-badge{letter-spacing:.13em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent);border-radius:99px;padding:3px 8px;font-size:9px;font-weight:800}.task-led{border-radius:50%;flex:0 0 9px;width:9px;height:9px}.task-led[data-state=todo]{border:1.5px solid var(--faint);opacity:.7;background:0 0}.task-led[data-state=tried]{background:var(--warning);border:1.5px solid var(--warning);box-shadow:0 0 8px var(--warning);animation:1.2s ease-in-out infinite led-pulse}.task-led[data-state=done]{background:var(--success);border:1.5px solid var(--success);box-shadow:0 0 8px color-mix(in srgb, var(--success) 70%, transparent)}@keyframes led-pulse{50%{opacity:.4}}.xp-floater{z-index:3;font-family:var(--mono);color:var(--success);pointer-events:none;font-size:13px;font-weight:700;animation:.6s ease-out forwards xp-float;position:absolute;top:10px;right:14px}@keyframes xp-float{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}.task-status{color:var(--faint);margin-left:auto;font-size:13px}.task-status.ok{color:var(--success);font-weight:600}.task-prompt{color:var(--text);font-size:14px;line-height:1.55}.task-feedback{margin-top:8px;font-size:12.5px}.task-feedback.ok{color:var(--success)}.task-feedback.bad{color:var(--warning)}.task-actions{gap:6px;margin-top:10px;display:flex}.task-actions .btn{flex:1;height:32px;font-size:12px}.solution-box{border-radius:var(--r-md);background:var(--bg);border:1px dashed var(--border-2);font-family:var(--mono);color:var(--success);white-space:pre-wrap;margin-top:12px;padding:11px 12px;font-size:13px;line-height:1.6}.next-row{margin-top:10px}.next-row .btn{width:100%;height:36px}.lesson-ref{margin-top:14px}.lesson-ref summary{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--border-2);background:var(--surface-2);color:var(--muted);border-radius:10px;align-items:center;gap:8px;padding:9px 11px;list-style:none;transition:border-color .15s,background .15s,color .15s;display:flex}.lesson-ref summary::-webkit-details-marker{display:none}.lesson-ref summary:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--accent-soft);color:var(--text)}.lesson-ref summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ref-icon{background:var(--accent-soft);width:18px;height:18px;color:var(--accent-2);font-family:var(--mono);border-radius:5px;flex:0 0 18px;place-items:center;font-size:13px;font-weight:700;line-height:1;display:grid}.ref-icon:before{content:"+"}.lesson-ref[open] .ref-icon:before{content:"−"}.ref-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-2);font-size:9.5px}.ref-sub{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--faint);font-size:10.5px;font-family:var(--mono);flex:1;overflow:hidden}.ref-action{border:1px solid color-mix(in srgb, var(--accent) 40%, var(--border));color:var(--accent-2);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;border-radius:99px;flex:none;padding:2px 7px;font-size:8.5px}.ref-hide,.lesson-ref[open] .ref-show{display:none}.lesson-ref[open] .ref-hide{display:inline}.lesson-ref[open] summary{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--accent-soft);color:var(--text);border-bottom-right-radius:0;border-bottom-left-radius:0}.ref-chevron{color:var(--faint);flex:none;font-size:10px;transition:transform .15s}.lesson-ref[open] .ref-chevron{transform:rotate(180deg)}.lesson-ref .theory{padding:12px 2px 0}.lesson-ref .section-label{margin-top:12px}.lesson-ref .examples{padding-bottom:4px}.statusbar{background:var(--bg-2);border-top:1px solid var(--border);height:38px;color:var(--muted);flex:none;align-items:center;gap:16px;padding:0 18px;font-size:12.5px;display:flex}.mode-badge{font-family:var(--mono);letter-spacing:.12em;background:var(--accent-soft);color:var(--accent-2);border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);border-radius:99px;padding:3px 10px;font-size:10.5px}body.nav-mode .mode-badge{background:var(--accent);color:var(--accent-ink);border-color:#0000}.status-hint{flex:1}.status-right{color:var(--faint);white-space:nowrap}.status-built{color:var(--muted)}.status-dot{margin:0 2px}.key{min-width:20px;height:19px;font-family:var(--mono);color:var(--muted);background:var(--surface-2);border:1px solid var(--border-2);border-radius:var(--r-xs);white-space:nowrap;justify-content:center;align-items:center;padding:0 6px;font-size:11px;display:inline-flex}.term-hint .key{background:var(--term-key-bg);border-color:var(--term-border);color:var(--term-2)}.statusbar .key{height:18px}.lesson-empty .key,.term-hint .key,.statusbar .key{margin:0 1px}.overlay{z-index:100;background:var(--overlay);-webkit-backdrop-filter:blur(10px)saturate(140%);justify-content:center;align-items:flex-start;padding-top:13vh;animation:.16s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}to{opacity:1}}.overlay-card{width:min(680px,92vw);animation:.2s cubic-bezier(.22,1,.36,1) rise}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.palette,.help{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--r-xl);box-shadow:var(--shadow-2);overflow:hidden}.palette-head{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:15px 18px;display:flex}.palette-icon{background:var(--accent-soft);width:26px;height:26px;color:var(--accent-2);border-radius:8px;place-items:center;display:grid}.palette-icon svg{width:15px;height:15px}.palette-input{color:var(--text);font-family:var(--sans);background:0 0;border:none;outline:none;flex:1;font-size:16px}.palette-input::placeholder{color:var(--faint)}.palette-hint{color:var(--faint);font-size:12px;font-family:var(--mono);white-space:nowrap}.palette-list{max-height:54vh;padding:8px;overflow-y:auto}.palette-item{border-radius:var(--r-md);cursor:pointer;align-items:center;gap:11px;padding:10px 12px;display:flex}.palette-item .pi-icon{text-align:center;width:22px;font-size:16px}.palette-item .pi-title{color:var(--text);font-size:14.5px}.palette-item .pi-sub{color:var(--faint);margin-left:auto;font-size:12.5px}.palette-item .pi-kind{letter-spacing:.1em;text-transform:uppercase;color:var(--faint);border:1px solid var(--border);border-radius:99px;padding:2px 8px;font-size:10px}.palette-item.active{background:var(--accent-soft)}.palette-item.active .pi-title{font-weight:550}.palette-item.is-default .pi-kind{color:var(--accent-2);border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.palette-item.is-default .pi-kind:after{content:" ⏎"}.palette-empty{text-align:center;color:var(--faint);padding:28px;font-size:14px}.help{padding:26px 28px}.help h2{letter-spacing:-.02em;margin:0 0 18px;font-size:19px;font-weight:650}.help-grid{color:var(--text-2);grid-template-columns:auto 1fr;align-items:center;gap:12px 22px;font-size:14.5px;display:grid}.help-grid>div:nth-child(odd){text-align:right}.help-foot{border-top:1px solid var(--border);color:var(--faint);margin-top:22px;padding-top:16px;font-size:13px}.toast{border-radius:var(--r-md);background:var(--surface);color:var(--text);border:1px solid var(--border-2);box-shadow:var(--shadow-2);align-items:center;gap:9px;padding:11px 16px;font-size:14px;animation:.22s cubic-bezier(.22,1,.36,1) toast-in;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.toast:before{content:"";background:var(--success);border-radius:50%;width:7px;height:7px}.toast.hidden{display:none}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (max-width:1360px){.lesson-panel{flex-basis:360px;width:360px;padding:24px}}@media (max-width:1180px){.sidebar{flex-basis:210px;width:210px}.lesson-panel{flex-basis:324px;width:324px}.xpbar{display:none}}@media (max-width:1000px){.stat:nth-child(3),.stat:nth-child(4),.mono-readout .mstat:nth-of-type(5),.mono-readout .mstat:nth-of-type(7),.mono-readout .msep:nth-of-type(6),.mono-readout .msep:nth-of-type(8),.brand-sub{display:none}}@media (max-width:1024px){.topbar{gap:16px;padding:10px 16px 8px}.brand{min-width:0}.lesson-panel{flex-basis:300px;width:300px;padding:22px 20px 32px}.terminal{padding:18px}}@media (max-width:860px){.topbar{flex-wrap:wrap;gap:8px 12px;min-height:0;padding:10px 12px}.brand{gap:9px;min-width:0}.logo,.logo svg{width:30px;height:30px}.brand-title{font-size:15px}.brand-sub{display:none}.stats.mono-readout{flex:100%;order:3;min-width:0;padding-bottom:2px;font-size:11.5px;overflow-x:auto}.msep{margin:0 7px}.xpbar{display:none}.actions{max-width:100%;margin-left:auto;padding-bottom:2px;overflow-x:auto}.actions .btn{flex:none;height:32px;font-size:12px}.mobile-tabs{background:var(--bg-2);border-bottom:1px solid var(--border);flex:none;gap:6px;padding:8px 12px;display:flex}.mobile-tab{border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);height:38px;color:var(--muted);font-family:var(--sans);cursor:pointer;flex:1;padding:0 8px;font-size:13px;font-weight:600}.mobile-tab.active{background:var(--accent-soft);color:var(--text);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.layout{flex-direction:column;overflow:hidden}.sidebar,.terminal-wrap,.lesson-panel{width:auto;min-height:0;box-shadow:none;border:0;border-radius:0;flex:auto;margin:0}body[data-mview=modules] .terminal-wrap,body[data-mview=modules] .lesson-panel,body[data-mview=terminal] .sidebar,body[data-mview=terminal] .lesson-panel,body[data-mview=guide] .sidebar,body[data-mview=guide] .terminal-wrap{display:none}.terminal-wrap:focus-within{box-shadow:none;border-color:#0000}.lesson-panel{padding:20px 18px 44px}.term-hint{display:none}.terminal{padding:14px;font-size:14px}.promptline,.prompt,.cmd,#block-cursor,.search,.palette-input{font-size:16px}.statusbar{gap:10px;height:34px;padding:0 12px;font-size:11.5px}.status-hint{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.status-hint .key,.status-right{display:none}.overlay{padding:8vh 12px 0}.help{padding:20px}.help-grid{gap:10px 12px;font-size:13px}.palette-hint{display:none}.toast{text-align:center;max-width:92vw;bottom:84px}}@media (max-width:480px){.topbar{padding:8px 10px}.stats.mono-readout{font-size:10.5px}.msep{margin:0 5px}#btn-tips{gap:0;padding:0 9px;font-size:0}.lesson-title{font-size:22px}.lesson-panel{padding:18px 14px 40px}.terminal{padding:12px}.term-title{white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.term-badge{display:none}.login-card{padding:28px 22px 26px}}.btn svg{width:16px;height:16px;display:block}#btn-tips{gap:8px}.tips-card{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--r-xl);width:min(1000px,94vw);box-shadow:var(--shadow-2);overflow:hidden}.tips-head{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:16px 18px;display:flex}.tips-badge{font-family:var(--mono);letter-spacing:.16em;color:var(--accent-2);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);white-space:nowrap;border-radius:99px;padding:4px 10px;font-size:10px}.tips-cats{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;padding:12px 16px;display:flex}.tips-cat{font:inherit;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:99px;padding:5px 11px;font-size:12px;transition:color .15s,border-color .15s,background .15s}.tips-cat:hover{color:var(--text);border-color:var(--border-2)}.tips-cat.active{background:var(--accent-soft);color:var(--accent-2);border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.tips-cat b{color:var(--faint);margin-left:3px;font-weight:600}.tips-body{grid-template-columns:380px 1fr;min-height:400px;max-height:62vh;display:grid}.tips-list{border-right:1px solid var(--border);padding:8px;overflow-y:auto}.tips-item{text-align:left;width:100%;font:inherit;cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:10px 11px;display:flex}.tips-item:hover{background:var(--surface-2);color:var(--text)}.tips-item.active{background:var(--accent-soft);color:var(--text)}.ti-icon{text-align:center;flex:0 0 20px;font-size:14px}.ti-title{flex:1;font-size:13px}.ti-cat{color:var(--faint);text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;font-size:9.5px}.tips-detail{background:var(--surface);padding:26px 28px;overflow-y:auto}.td-cat{text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-size:11px}.td-title{letter-spacing:-.02em;color:var(--text);margin:8px 0 16px;font-size:21px;font-weight:650}.td-cmd{background:var(--term-bg);border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:13px 15px;overflow-x:auto}.td-cmd code{font-family:var(--mono);color:var(--term-prompt);white-space:pre;font-size:13.5px}.td-why{color:var(--text);font-size:14px;line-height:1.72}.td-actions{gap:8px;margin-top:20px;display:flex}.tips-empty{text-align:center;color:var(--faint);padding:34px}@media (max-width:820px){.tips-body{grid-template-columns:1fr}.tips-list{border-right:0;border-bottom:1px solid var(--border);max-height:220px}}.tip-teaser{border-top:1px solid var(--border);cursor:pointer;padding:14px 16px}.tip-teaser:hover{background:var(--surface)}.tip-teaser-head{text-transform:uppercase;letter-spacing:.1em;color:var(--faint);align-items:center;gap:7px;font-size:10px;display:flex}.tip-teaser-dot{background:var(--accent);width:6px;height:6px;box-shadow:0 0 8px var(--accent);border-radius:50%}.tip-teaser-title{color:var(--text);margin:8px 0 7px;font-size:13px;font-weight:600;line-height:1.4}.tip-teaser-cmd{font-family:var(--mono);color:var(--success);background:var(--surface-2);border:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;padding:6px 9px;font-size:11.5px;display:block;overflow:hidden}.tip-teaser-foot{color:var(--faint);margin-top:9px;font-size:11px}.login-wrap{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--r-xl);width:min(380px,94vw);box-shadow:var(--shadow-2);flex-direction:column;padding:34px 30px 30px;display:flex}.login-logo{width:44px;height:44px;margin-bottom:14px}.login-logo svg{width:44px;height:44px;display:block}.login-card .brand-title{font-size:20px}.login-card .brand-sub{margin:2px 0 22px}.login-label{letter-spacing:.09em;text-transform:uppercase;color:var(--faint);margin:12px 0 6px;font-size:11px}.login-label:first-of-type{margin-top:0}.login-input{border-radius:var(--r-md);border:1px solid var(--border-2);background:var(--surface-2);height:40px;color:var(--text);font-family:var(--sans);padding:0 13px;font-size:15px}.login-input:focus{border-color:var(--accent);background:var(--surface);outline:none}.login-error{border-radius:var(--r-md);color:#ffc9c9;background:#ff6b6b24;border:1px solid #ff6b6b8c;margin-top:14px;padding:10px 12px;font-size:13.5px;font-weight:500}[data-theme=light] .login-error{color:#7a1f1a;background:#b3261e1a;border-color:#b3261e73}.login-btn{height:42px;margin-top:20px;font-size:14.5px}.void{color:#b8ff5c;-webkit-user-select:none;user-select:none;background:#020304;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100dvh;display:flex;position:relative;overflow:hidden}.void-art{font-family:var(--mono);color:#76e7a3;text-shadow:0 0 14px #3eb95073;opacity:.9;margin:0 0 8px;font-size:clamp(9px,1.7vh,13px);line-height:1.25}.void-line{font-family:var(--mono);color:#b8ff5c;font-size:14px}.void-line .dim{color:#2b6a38}.void-line .caret{color:#b8ff5c;animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.void-credit{text-align:center;font-family:var(--mono);letter-spacing:.04em;color:#2e4250;font-size:11px;position:absolute;bottom:14px;left:0;right:0}#omen{font-family:var(--mono);color:#1c2530;font-size:11px;text-decoration:none;transition:color .3s;position:absolute;bottom:14px;right:18px}#omen:hover,#omen:focus-visible{color:#b8ff5c}.login-wrap{background:radial-gradient(800px 380px at 50% -60px,#3eb9501a,#0000 65%),#020304}.login-card{box-shadow:0 0 70px #3eb95017, var(--shadow-2);background:#05080a;border:1px solid #3eb95052}.login-card .brand-title{color:#e6f4ea}.login-card .brand-sub{color:#76e7a3}.login-label{color:#2b6a38}.login-input{color:#b8ff5c;caret-color:#b8ff5c;background:#020604;border:1px solid #1d3a26}.login-input:focus{background:#020604;border-color:#76e7a3;box-shadow:0 0 0 1px #76e7a3,0 0 18px #3eb95040}.login-card .btn.primary{color:#04120a;background:#76e7a3;border-color:#0000;font-weight:700}.login-card .btn.primary:hover{background:#b8ff5c}.login-card .btn.primary:disabled{opacity:.55}.palette-item .pi-icon{font-family:var(--mono);text-align:center;width:30px;color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 30px;font-size:12px;font-weight:700}.crumb-glyph{font-family:var(--mono);color:var(--accent-2);border:1px solid var(--border);letter-spacing:.04em;font-variant-numeric:tabular-nums;border-radius:6px;margin-right:8px;padding:1px 7px;font-size:11px;font-weight:700}.output .boot-ok{color:var(--term-prompt);font-weight:700}.output .boot-msg{color:var(--term-2)}.output .boot-login{color:var(--term-3)}.output .milestone{color:var(--term-prompt);font-weight:700}.output .milestone-quote{color:var(--term-cmd);font-style:italic}.output .milestone-sub{color:var(--term-3);font-size:12.5px}.topbar-streak{height:30px;color:var(--warning);font-family:var(--mono);white-space:nowrap;background:#ffc46b12;border:1px solid #ffc46b3d;border-radius:99px;align-items:center;gap:4px;padding:0 9px;font-size:12px;display:inline-flex}.topbar-streak b{color:var(--warning);font-weight:600}.topbar-plan{height:22px;font-family:var(--mono);letter-spacing:.08em;border-radius:4px;align-items:center;padding:0 7px;font-size:9px;font-weight:700;display:inline-flex}.topbar-plan.free{background:var(--surface-3);color:var(--muted)}.topbar-plan.pro{background:var(--success);color:#06130b}.pro-tag{font-family:var(--mono);letter-spacing:.08em;color:var(--warning);background:#f5c45114;border:1px solid #f5c4514d;border-radius:3px;margin-left:4px;padding:1px 4px;font-size:8px}.module.locked .module-title{color:var(--faint)}.module.locked .module-icon{opacity:.55}.module.locked .ring{opacity:.5}.lesson-item.locked{color:var(--faint)}.lesson-item.locked .lesson-check{color:var(--warning);opacity:.8}.lesson-item.locked:hover{background:#f5c4510f}.locked-panel{border:1px solid var(--border-2);border-radius:var(--r-lg);background:radial-gradient(ellipse 70% 60% at 50% 0%, #b8ff5c1a, transparent 70%), var(--surface);text-align:left;padding:34px 26px}.locked-glyph{background:#f5c4511a;border:1px solid #f5c45140;border-radius:14px;place-items:center;width:52px;height:52px;margin-bottom:18px;font-size:22px;display:grid}.locked-kicker{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--warning);font-size:9.5px}.locked-panel h2{letter-spacing:-.02em;margin:8px 0 10px;font-size:24px;line-height:1.15}.locked-panel p{color:var(--muted);margin:0 0 16px;font-size:14px;line-height:1.65}.locked-list{flex-direction:column;gap:8px;margin:0 0 20px;padding:0;list-style:none;display:flex}.locked-list li{color:var(--text-2);font-size:13px}.locked-price{letter-spacing:-.04em;margin-bottom:18px;font-size:30px;font-weight:700}.locked-price span{color:var(--faint);letter-spacing:0;font-size:12px;font-weight:400}.locked-price em{font-style:normal;font-family:var(--mono);color:var(--success);vertical-align:middle;background:#76e7a314;border:1px solid #76e7a340;border-radius:4px;margin-left:8px;padding:2px 6px;font-size:10px;display:inline-block}.locked-cta{margin-bottom:8px;margin-right:8px}.upgrade-overlay{z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#04060ac7;place-items:center;padding:20px;animation:.18s fade-in;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.upgrade-card{border:1px solid var(--border-2);background:radial-gradient(ellipse 80% 50% at 50% 0%, #b8ff5c24, transparent 70%), var(--surface);width:min(480px,100%);box-shadow:var(--shadow-2);border-radius:18px;padding:32px;animation:.22s cubic-bezier(.22,1,.36,1) upgrade-in;position:relative}@keyframes upgrade-in{0%{opacity:0;transform:translateY(12px)scale(.985)}to{opacity:1;transform:none}}.upgrade-close{width:30px;height:30px;color:var(--faint);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;font-size:20px;line-height:1;position:absolute;top:12px;right:12px}.upgrade-close:hover{background:var(--surface-3);color:var(--text)}.upgrade-eyebrow{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2);font-size:9.5px}.upgrade-module{font-family:var(--mono);color:var(--warning);background:#f5c45112;border:1px solid #f5c45147;border-radius:4px;margin-top:12px;padding:3px 7px;font-size:10px;display:inline-block}.upgrade-card h2{letter-spacing:-.03em;margin:12px 0 10px;font-size:25px;line-height:1.12}.upgrade-card>p{color:var(--muted);margin:0 0 18px;font-size:13.5px;line-height:1.65}.upgrade-list{flex-direction:column;gap:8px;margin:0 0 20px;padding:0;list-style:none;display:flex}.upgrade-list li{color:var(--text-2);font-size:12.5px}.upgrade-price{letter-spacing:-.04em;text-align:center;margin-bottom:16px;font-size:30px;font-weight:750}.upgrade-price span{color:var(--faint);letter-spacing:0;font-size:12px;font-weight:400}.upgrade-price em{font-style:normal;font-family:var(--mono);color:var(--success);vertical-align:middle;margin-left:8px;font-size:10px}.upgrade-cta{width:100%;margin-bottom:8px}.upgrade-card .btn.ghost{width:100%}.upgrade-overlay.hard .upgrade-close,.upgrade-overlay.hard #upgrade-dismiss{display:none}.upgrade-overlay.hard .upgrade-fine{color:var(--muted)!important}.upgrade-fine{text-align:center;font-family:var(--mono);color:var(--faint)!important;margin:12px 0 0!important;font-size:9.5px!important}body.upgrade-open{overflow:hidden}@media (max-width:1280px){.topbar{gap:14px}.brand{min-width:210px}.msep{margin:0 7px}.actions #btn-reset-machine,.actions #btn-reset-progress{display:none}.actions #btn-upgrade,.actions #btn-dashboard{display:inline-flex}}@media (max-width:900px){.topbar-streak,.topbar-plan{display:none}}.topbar{gap:18px}.brand{min-width:220px}.stats.mono-readout{font-size:12px}.msep{margin:0 8px}.xpbar{width:76px;margin-left:12px}.actions{flex-shrink:0;gap:6px}@media (max-width:1360px){.brand-sub{display:none}.brand{min-width:190px}.mstat-time,#btn-manual{display:none}}@media (max-width:1120px){.mstat-cmd,.xpbar{display:none}.brand{min-width:170px}#btn-manual{display:none}}.lesson-item.prereq{color:var(--faint)}.lesson-item.prereq .lesson-check{color:var(--faint);opacity:.75}.lesson-item.prereq:hover{background:#b8ff5c14}.next-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.next-lock-note{font-family:var(--mono);color:var(--faint);font-size:10px}.task-led.gate-pulse{animation:.8s gate-pulse}@keyframes gate-pulse{0%,to{box-shadow:0 0 #f5c45100}40%{box-shadow:0 0 0 5px #f5c4514d}}.prereq-panel{border:1px solid var(--border-2);border-radius:var(--r-lg);background:radial-gradient(ellipse 70% 60% at 50% 0%, #b8ff5c1a, transparent 70%), var(--surface);padding:34px 26px}.prereq-glyph{width:52px;height:52px;color:var(--accent-2);background:#b8ff5c1a;border:1px solid #b8ff5c47;border-radius:14px;place-items:center;margin-bottom:18px;font-size:24px;display:grid}.prereq-panel h2{letter-spacing:-.02em;margin:8px 0 10px;font-size:24px;line-height:1.15}.prereq-panel p{color:var(--muted);margin:0 0 16px;font-size:14px;line-height:1.65}.prereq-note{font-family:var(--mono);color:var(--warning);background:#f5c4510f;border:1px solid #f5c45142;border-radius:6px;margin-bottom:18px;padding:8px 10px;font-size:10px}.milestone-toast{z-index:300;border:1px solid var(--border-2);background:var(--surface);width:min(360px,100vw - 32px);color:var(--text);box-shadow:var(--shadow-2);opacity:0;pointer-events:none;border-radius:14px;padding:14px 16px 13px;transition:opacity .2s,transform .2s;position:fixed;bottom:54px;right:18px;transform:translateY(10px)}.milestone-toast.show{opacity:1;pointer-events:auto;transform:none}.milestone-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.milestone-badge{color:var(--accent-2);font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;font-size:9px}.milestone-head button{color:var(--faint);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:18px;line-height:1}.milestone-head button:hover{color:var(--text)}.milestone-title{color:var(--text-2);margin-top:7px;font-size:13px}.milestone-title b{color:var(--accent);font-family:var(--mono);font-size:18px}.milestone-toast blockquote{color:var(--text);margin:9px 0 5px;font-size:13px;line-height:1.55}.milestone-author{font-family:var(--mono);color:var(--faint);font-size:9.5px}.milestone-author:before{content:"— "}.milestone-foot{justify-content:space-between;align-items:center;gap:12px;margin-top:11px;display:flex}.milestone-foot>span:first-child{font-family:var(--mono);color:var(--faint);font-size:9px}.milestone-timer{background:var(--surface-3);border-radius:99px;flex:1;max-width:110px;height:3px;overflow:hidden}.milestone-timer i{background:var(--accent);transform-origin:0;width:100%;height:100%;animation:6s linear forwards milestone-drain;display:block}.milestone-toast.paused .milestone-timer i{animation-play-state:paused}@keyframes milestone-drain{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (max-width:600px){.milestone-toast{width:auto;bottom:50px;left:12px;right:12px}}.task-stake{border:1px solid var(--border);border-radius:var(--r-sm);font-family:var(--mono);color:var(--faint);background:#ffffff05;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:10px 0 12px;padding:8px 10px;font-size:9.5px;display:flex}.task-stake span{white-space:nowrap}.task-stake .stake-bonus{color:var(--success)}.task-stake .stake-penalty{color:var(--warning)}.task-stake.done{background:#76e7a30f;border-color:#76e7a342}.task-stake.done .stake-mode{color:var(--success);font-weight:700}.task-stake.done span:last-child{color:var(--success);margin-left:auto}.manual{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--r-xl);box-shadow:var(--shadow-2);overflow:hidden}.manual-head{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:13px 16px;display:flex}.manual-badge{font-family:var(--mono);letter-spacing:.12em;color:var(--accent-2);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:4px;padding:3px 6px;font-size:9px}.manual-search{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);height:32px;color:var(--text);font-family:var(--sans);outline:none;flex:1;padding:0 10px;font-size:14px}.manual-search:focus{border-color:var(--accent)}.manual-search::placeholder{color:var(--faint)}.manual-hint{font-family:var(--mono);color:var(--faint);white-space:nowrap;font-size:10px}.manual-body{grid-template-columns:210px 1fr;min-height:360px;max-height:58vh;display:grid}.manual-list{border-right:1px solid var(--border);padding:7px;overflow-y:auto}.manual-item{border-radius:var(--r-xs);cursor:pointer;color:var(--text-2);font-family:var(--mono);justify-content:space-between;align-items:center;gap:8px;padding:7px 9px;font-size:12px;display:flex}.manual-item:hover,.manual-item.active{background:var(--accent-soft);color:var(--text)}.manual-item small{color:var(--faint);font-size:9px;font-family:var(--sans)}.manual-detail{padding:20px 22px;overflow-y:auto}.manual-detail h3{font-family:var(--mono);letter-spacing:-.01em;color:var(--text);margin:0 0 4px;font-size:16px}.manual-detail .man-summary{color:var(--muted);margin:0 0 16px;font-size:13px}.manual-detail h4{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin:16px 0 6px;font-size:9px}.manual-detail pre{border-radius:var(--r-sm);background:var(--term-bg);border:1px solid var(--border);color:var(--term-fg);font-family:var(--mono);white-space:pre-wrap;margin:0;padding:10px 12px;font-size:11.5px;line-height:1.55}.manual-flag{color:var(--text-2);gap:8px;margin:4px 0;font-size:12px;display:flex}.manual-flag code{font-family:var(--mono);color:var(--accent-2);min-width:78px}.manual-example{text-align:left;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface-2);width:100%;color:var(--text-2);font-family:var(--mono);cursor:pointer;margin:4px 0;padding:7px 9px;font-size:11px;display:block}.manual-example:hover{border-color:var(--accent);color:var(--text)}.manual-empty{color:var(--faint);font-size:13px}.manual-see{color:var(--faint);font-family:var(--mono);font-size:10px}@media (max-width:640px){.manual-body{grid-template-columns:1fr;max-height:64vh}.manual-list{border-right:0;border-bottom:1px solid var(--border);max-height:150px}}body.lab-tour-open{overflow:hidden}.lab-tour{z-index:2000;position:fixed;inset:0}.lab-tour-block{z-index:1;background:0 0;position:fixed;inset:0}.lab-tour-dim{z-index:0;background:#04060abd;position:fixed;inset:0}.lab-tour-hole{z-index:0;pointer-events:none;outline:2px solid var(--accent);outline-offset:2px;border-radius:12px;transition:top .2s,left .2s,width .2s,height .2s;position:fixed;box-shadow:0 0 0 9999px #04060abd}.lab-tour-card{z-index:2;border:1px solid var(--border-2);background:var(--surface);max-height:calc(100vh - 32px);color:var(--text);border-radius:18px;outline:none;padding:22px 24px 20px;position:fixed;overflow-y:auto;box-shadow:0 30px 80px -18px #000c,0 4px 16px #00000059}.lab-tour-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lab-tour-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.lab-tour-kicker{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2);font-size:9.5px}.lab-tour-skip{color:var(--faint);font:inherit;cursor:pointer;background:0 0;border:0;padding:4px 2px;font-size:12px}.lab-tour-skip:hover{color:var(--text)}.lab-tour-card h2{letter-spacing:-.03em;margin:10px 0 8px;font-size:20px;font-weight:680;line-height:1.2}.lab-tour-card p{color:var(--text-2);margin:0;font-size:13.5px;line-height:1.68}.lab-tour-card strong{color:var(--text);font-weight:650}.lab-tour-card code{font-family:var(--mono);color:var(--accent-2);font-size:12px}.lab-tour-card .key{background:var(--surface-2);border-color:var(--border-2);min-width:20px;height:20px;font-size:10px}.lab-tour-dots{gap:6px;margin:18px 0 16px;display:flex}.lab-tour-dots span{background:var(--border-2);border-radius:50%;width:7px;height:7px;transition:background .15s,transform .15s}.lab-tour-dots span.past{background:var(--accent-2);opacity:.55}.lab-tour-dots span.on{background:var(--accent);transform:scale(1.25)}.lab-tour-actions{align-items:center;gap:10px;display:flex}.lab-tour-actions .button{flex:none}.lab-tour-card .button-acid{background:var(--accent);color:var(--accent-ink);box-shadow:0 10px 28px -14px color-mix(in srgb, var(--accent) 70%, transparent);border-color:#0000}.lab-tour-card .button-acid:hover{background:var(--accent-2);color:var(--accent-ink);border-color:#0000}.lab-tour-card .button-ghost{border-color:var(--border-2);color:var(--text);background:0 0}.lab-tour-card .button-ghost:hover{background:var(--surface-2);border-color:var(--border-2);color:var(--text)}.lab-tour-keys{color:var(--faint);font-family:var(--mono);align-items:center;gap:4px;margin:0 auto 0 4px;font-size:9px;display:flex}.lab-tour-key-label{white-space:nowrap;margin-left:3px}.lab-tour-actions .button:disabled{opacity:.35;cursor:default}@media (max-width:600px){.lab-tour-card{padding:18px 18px 16px}.lab-tour-card h2{font-size:18px}.lab-tour-card p{font-size:13px}.lab-tour-keys{display:none}}.free-meter{border-top:1px dashed var(--border);margin-top:12px;padding-top:11px}.free-meter-top{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint);justify-content:space-between;align-items:center;gap:8px;font-size:9px;display:flex}.free-meter-top b{color:var(--text);font-weight:600}.free-meter-track{background:#ffffff0f;border-radius:99px;height:5px;margin:7px 0 8px;overflow:hidden}.free-meter-track span{background:linear-gradient(90deg, var(--accent-2), var(--accent));border-radius:99px;width:0;height:100%;transition:width .45s cubic-bezier(.22,1,.36,1);display:block}.free-meter-upgrade{cursor:pointer;border:1px solid color-mix(in srgb, var(--accent) 38%, var(--border));background:var(--accent-soft);width:100%;height:29px;color:var(--accent-2);font-family:var(--mono);letter-spacing:.01em;border-radius:7px;font-size:9.5px;transition:background .15s,color .15s,border-color .15s}.free-meter-upgrade:hover{background:var(--accent);color:var(--accent-ink);border-color:#0000}.upgrade-progress{border:1px solid var(--border);background:#ffffff06;border-radius:10px;margin:0 0 18px;padding:10px 12px}.upgrade-progress-top{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint);justify-content:space-between;align-items:center;gap:8px;font-size:9px;display:flex}.upgrade-progress-top b{color:var(--accent-2);font-weight:600}.upgrade-progress-track{background:var(--surface-3);border-radius:99px;height:6px;margin:8px 0 7px;overflow:hidden}.upgrade-progress-track span{background:linear-gradient(90deg, var(--accent-2), var(--accent));border-radius:99px;width:0;height:100%;transition:width .45s cubic-bezier(.22,1,.36,1);display:block}.upgrade-progress p{color:var(--muted);margin:0;font-size:10.5px;line-height:1.5}.pro-moment{border:1px solid color-mix(in srgb, var(--accent) 46%, var(--border));background:linear-gradient(150deg, var(--accent-soft), transparent 75%), var(--surface);border-radius:13px;margin-top:12px;padding:13px 14px}.pro-moment.soft{border-color:var(--border-2);background:#ffffff05}.pro-moment-kicker{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--accent-2);font-size:8.5px}.pro-moment h3{letter-spacing:-.02em;margin:5px 0 4px;font-size:15px;line-height:1.25}.pro-moment p{color:var(--muted);margin:0 0 10px;font-size:11.5px;line-height:1.55}.pro-moment-actions .btn{width:100%;height:32px;font-size:11.5px}.topbar-streak.at-risk{border-color:#ffc46b80;animation:2.4s ease-in-out infinite streak-risk;box-shadow:0 0 0 1px #ffc46b2e}@keyframes streak-risk{50%{box-shadow:none;border-color:#ffc46b47}}[data-theme=light] .task-stake{background:#f7f9f5}[data-theme=light] .free-meter-track{background:#15211a1a}[data-theme=light] .upgrade-progress,[data-theme=light] .pro-moment.soft{background:#f7f9f5}[data-theme=light] .toast{background:#fff}[data-theme=light] .manual-item:hover,[data-theme=light] .manual-item.active,[data-theme=light] .tips-item:hover,[data-theme=light] .tips-item.active{color:var(--text)}[data-theme=light] .topbar-plan.pro{color:#fff}.theme-toggle{border:1px solid var(--line);width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border-radius:9px;flex:0 0 34px;place-items:center;padding:0;transition:color .15s,border-color .15s,background .15s;display:inline-grid}.theme-toggle:hover{color:var(--text);border-color:var(--line-strong);background:var(--surface-2)}.theme-toggle svg{width:15px;height:15px;display:block}.theme-toggle .icon-moon,[data-theme=light] .theme-toggle .icon-sun{display:none}[data-theme=light] .theme-toggle .icon-moon{display:block}.auth-theme{z-index:30;position:fixed;top:20px;right:20px}@media (max-width:560px){.auth-theme{top:14px;right:14px}}
