@font-face{font-family:Sofia Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/c60bf3388410fe0f-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/860045e55157a73d-s.p.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/377915621367f354-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/94cb896b59173475-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/825394e9faec38fd-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/c60bf3388410fe0f-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/860045e55157a73d-s.p.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/377915621367f354-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/94cb896b59173475-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/825394e9faec38fd-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/c60bf3388410fe0f-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/860045e55157a73d-s.p.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/377915621367f354-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/94cb896b59173475-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Sofia Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/825394e9faec38fd-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Sofia Sans Fallback;src:local("Arial");ascent-override:93.31%;descent-override:31.10%;line-gap-override:0.00%;size-adjust:96.46%}.__className_2d5b88{font-family:Sofia Sans,Sofia Sans Fallback;font-style:normal}.__variable_2d5b88{--font-sans:"Sofia Sans","Sofia Sans Fallback"}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,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(/_next/static/media/011e180705008d6f-s.p.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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(/_next/static/media/ef4d5661765d0e49-s.woff2) format("woff2");unicode-range:u+0460-052f,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(/_next/static/media/d29838c109ef09b4-s.p.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/98e207f02528a563-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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.00%;size-adjust:134.59%}.__className_5dc9b9{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_5dc9b9{--font-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}:root{color-scheme:light;--bg:#eef0f2;--surface:#ffffff;--ink:#1b1f26;--ink2:#5e6570;--haze:#8a9099;--line:#d9dce1;--mark:#f2c230;--go:#1e8e5a;--stop:#c8372d;--caution:#d97a16;--asphalt:#1b1f26;--onasphalt:#eef0f2;--go-bg:#e1f2e8;--stop-bg:#f9e3e1;--caut-bg:#fbead7;--mark-bg:#fbf0cc;--sel:#e4e7ec}html[data-theme=dark]{color-scheme:dark;--bg:#14171c;--surface:#1b1f26;--ink:#eef0f2;--ink2:#a6acb5;--haze:#6e757f;--line:#2c323b;--go:#3bb273;--stop:#e05a50;--caution:#e8933a;--asphalt:#0e1114;--onasphalt:#eef0f2;--go-bg:#173626;--stop-bg:#3b1e1b;--caut-bg:#3a2915;--mark-bg:#3a3218;--sel:#252b34}*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}body,html{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans),system-ui,sans-serif;font-size:16px;line-height:1.35}body{min-height:100dvh;overscroll-behavior-y:contain}.ptr-spinner{animation:ptr-spin .8s linear infinite}@keyframes ptr-spin{to{transform:rotate(1turn)}}a,button{touch-action:manipulation}a,button{color:inherit}button{font-family:inherit}img{max-width:100%}.mono{font-family:var(--font-mono),monospace}.muted{color:var(--ink2)}.btn-cta{height:56px;padding:0 28px;background:var(--mark);color:#1b1f26;font-size:18px}.btn-action,.btn-cta{border:0;border-radius:10px;font-weight:800;cursor:pointer}.btn-action{height:48px;padding:0 20px;background:var(--ink);color:var(--bg);font-size:16px}.btn-ghost{height:44px;padding:0 8px;border:0;background:transparent;color:var(--ink2);font-size:15px;cursor:pointer}.btn-action:focus-visible,.btn-cta:focus-visible,.btn-ghost:focus-visible,.option:focus-visible,.pill:focus-visible,a.card:focus-visible,button.card:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.btn-action,.btn-cta,.option,.pill{transition:transform .12s ease-out}.btn-action:active,.btn-cta:active,.option:active:not(:disabled),.pill:active{transform:scale(.98)}.card{border:1px solid var(--line);border-radius:14px}.card,.option{background:var(--surface)}.option{display:flex;align-items:center;gap:12px;width:100%;text-align:left;min-height:48px;padding:10px 12px;border-radius:10px;cursor:pointer;font-size:16px;line-height:1.3;border:1.5px solid var(--line)}@media (hover:hover){.option:hover:not(:disabled){background:var(--sel)}}.option:disabled{cursor:default}.option--selected{border-color:var(--ink);background:var(--sel);animation:confirm-pulse 1.4s ease-in-out infinite}@keyframes confirm-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in oklch,var(--ink) 22%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in oklch,var(--ink) 8%,transparent)}}.option--correct{border-color:var(--go);background:var(--go-bg)}.option--wrong{border-color:var(--stop);background:var(--stop-bg)}.option--faded{opacity:.5}.option .key{flex:none;width:26px;height:26px;display:grid;place-items:center;font-family:var(--font-mono),monospace;font-size:13px;font-weight:500;color:var(--ink2);background:var(--bg);border-radius:6px}.option--correct .key{background:var(--go);color:#fff;border-radius:4px}.option--wrong .key{background:var(--stop);color:#fff;border-radius:50%}.option--selected .key{background:var(--ink);color:var(--bg)}.pill{min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--line);background:var(--surface);font-size:15px;display:inline-flex;align-items:center;gap:8px;cursor:pointer}.shape{width:10px;height:10px;background:var(--ink);display:inline-block}.shape--square{border-radius:2px}.shape--triangle{-webkit-clip-path:polygon(50% 0,100% 100%,0 100%);clip-path:polygon(50% 0,100% 100%,0 100%)}.shape--circle{border-radius:50%}.segments{display:flex;gap:3px;height:6px}.segments>span{flex:1 1;border-radius:2px;background:var(--line)}.segments>.seg--ok{background:var(--go)}.segments>.seg--fail{background:var(--stop)}.segments>.seg--current{background:var(--mark)}.segments>.seg--done{background:var(--haze)}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.feedback{animation:reveal .3s ease-out;border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px}.feedback--ok{background:var(--go-bg)}.feedback--fail{background:var(--stop-bg)}.chip{font-size:13px;padding:4px 8px;border-radius:6px;background:var(--surface);border:1px solid var(--line)}.tbar{width:100%;height:4px;background:var(--line);overflow:hidden}.tbar,.tbar>i{display:block;border-radius:2px}.tbar>i{height:100%}.tile-warn{position:absolute;top:6px;right:6px;width:10px;height:10px;background:var(--caution);-webkit-clip-path:polygon(50% 0,100% 100%,0 100%);clip-path:polygon(50% 0,100% 100%,0 100%)}.path-node{width:64px;height:64px;display:flex;align-items:center;justify-content:center;border:3px solid var(--line);background:var(--surface);color:var(--haze);box-sizing:border-box;cursor:pointer;padding:0;font:inherit}.path-node--lesson{border-radius:50%}.path-node--quiz{border-radius:10px;transform:rotate(45deg);width:48px;height:48px}.path-node--quiz>*{transform:rotate(-45deg)}.path-node--progress{border-color:var(--ink2);color:var(--ink2)}.path-node--golden{background:var(--go);border-color:color-mix(in oklch,var(--go) 70%,black);color:var(--onasphalt)}.path-node--current,.path-node--golden{box-shadow:inset 0 0 0 3px var(--surface)}.path-node--current{background:var(--mark);border-color:color-mix(in oklch,var(--mark) 75%,black);color:#1b1f26;animation:path-pulse 1.6s ease-in-out infinite}.path-node--cracked{border-style:dashed;border-color:var(--caution);color:var(--caution)}@keyframes path-pulse{0%,to{box-shadow:inset 0 0 0 3px var(--surface),0 0 0 0 color-mix(in oklch,var(--mark) 55%,transparent)}50%{box-shadow:inset 0 0 0 3px var(--surface),0 0 0 14px transparent}}.path-label{position:absolute;left:50%;top:-40px;transform:translateX(-50%);font-size:12px;font-weight:800;padding:5px 10px;border-radius:999px;white-space:nowrap;background:var(--mark);color:#1b1f26;pointer-events:none;z-index:4}.path-label--review{background:var(--caut-bg);color:var(--ink)}.path-fog{position:absolute;left:0;right:0;top:0;pointer-events:none;z-index:3;background:linear-gradient(to bottom,color-mix(in oklch,var(--bg) 97%,transparent) 0,color-mix(in oklch,var(--bg) 90%,transparent) 45%,color-mix(in oklch,var(--bg) 60%,transparent) 80%,transparent 100%);backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px)}.path-bar{position:fixed;top:8px;left:16px;right:16px;max-width:608px;margin:0 auto;z-index:20;animation:path-bar-in .2s ease-out;display:flex;align-items:center;gap:12px;padding:8px 8px 8px 12px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 24px rgb(27 31 38/.14)}@keyframes path-bar-in{0%{transform:translateY(-12px);opacity:0}to{transform:none;opacity:1}}.path-car{transition:left .6s ease,top .6s ease,transform .6s ease}.path-node--pop{animation:path-pop .45s ease-out .1s both}@keyframes path-pop{0%{transform:scale(1)}50%{transform:scale(1.14)}to{transform:scale(1)}}.path-node--quiz.path-node--pop{animation-name:path-pop-quiz}@keyframes path-pop-quiz{0%{transform:rotate(45deg) scale(1)}50%{transform:rotate(45deg) scale(1.14)}to{transform:rotate(45deg) scale(1)}}.path-jump{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom, 0px));transform:translateX(-50%);z-index:30}.streak{display:flex;gap:3px}.streak>span{width:14px;height:4px;border-radius:1px;background:var(--line)}.streak>.on{background:var(--ink)}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:40;max-width:640px;margin:0 auto;border-radius:16px 16px 0 0;padding:14px 16px calc(12px + env(safe-area-inset-bottom, 0px));display:flex;flex-direction:column;gap:10px;max-height:52dvh;background:var(--surface);border:1px solid var(--line);border-bottom:0;box-shadow:0 -12px 40px rgb(0 0 0/.3);animation:sheet-up .22s ease-out}.sheet--ok{background:var(--go-bg);border-color:color-mix(in oklch,var(--go) 40%,var(--line))}.sheet--fail{background:var(--stop-bg);border-color:color-mix(in oklch,var(--stop) 40%,var(--line))}.sheet__scroll{overflow-y:auto;min-height:0;font-size:15px;line-height:1.45;text-wrap:pretty}.sheet:focus{outline:none}.sheet{transition:transform .18s ease-out}::view-transition-new(root),::view-transition-old(root){animation-duration:.18s}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;max-width:640px;margin:0 auto;border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:4px 4px calc(6px + env(safe-area-inset-bottom, 0px))}.nav-item{flex:1 1;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600;color:var(--haze);text-decoration:none;border-radius:10px;position:relative}.nav-item svg{width:24px;height:24px}.nav-item--active{color:var(--ink);font-weight:800}.nav-item--active:before{content:"";position:absolute;top:-5px;width:22px;height:3px;border-radius:2px;background:var(--mark)}.nav-spacer{height:calc(84px + env(safe-area-inset-bottom, 0px))}.nav-home{display:none}@media (min-width:1024px){.path-bar{top:68px}.bottom-nav{top:0;bottom:auto;max-width:none;border-top:0;border-bottom:1px solid var(--line);justify-content:center;gap:4px;padding:0 16px}.nav-item{flex:0 0 auto;flex-direction:row;gap:8px;min-height:56px;padding:0 16px;font-size:14px}.nav-item svg{width:20px;height:20px}.nav-item--active:before{top:auto;bottom:0;left:12px;right:12px;width:auto;border-radius:2px 2px 0 0}.nav-home{display:flex;position:absolute;left:20px;top:0;bottom:0;align-items:center;gap:10px;font-weight:800;font-size:15px;text-decoration:none;color:var(--ink)}body:has(.bottom-nav){padding-top:60px}body:has(.bottom-nav) .site-header{display:none!important}.nav-spacer{height:24px}.wide-main{max-width:880px!important}.grid-2col-lg{display:grid!important;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.focus-main{margin-left:calc(50% - 492px)!important;margin-right:0!important}.focus-main .sheet{left:calc(50% + 172px);right:auto;top:88px;bottom:auto;width:320px;border:1px solid var(--line);border-radius:16px;max-height:calc(100vh - 112px);box-shadow:0 12px 40px rgb(0 0 0/.18);animation:reveal .3s ease-out}.sheet--ok.sheet--ok{border-color:color-mix(in oklch,var(--go) 40%,var(--line))}.sheet--fail.sheet--fail{border-color:color-mix(in oklch,var(--stop) 40%,var(--line))}}@media (hover:hover){a.card:hover,button.card:not(:disabled):hover{border-color:var(--haze)}.nav-item:hover{color:var(--ink);background:var(--sel)}.btn-cta:hover{filter:brightness(1.04)}.btn-action:hover{opacity:.92}.btn-ghost:hover:not(:disabled){color:var(--ink)}.pill:hover:not(:disabled){background:var(--sel)}}.skeleton{background:var(--sel);animation:skeleton-pulse 1.2s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:.55}50%{opacity:1}}@keyframes sim-shake{0%,to{transform:none}20%,60%{transform:translateX(-4px)}40%,80%{transform:translateX(4px)}}.sim-shake{animation:sim-shake .5s ease}@keyframes sim-blame{0%,to{opacity:0}25%,75%{opacity:1}}.sim-blame{animation:sim-blame .9s ease}@keyframes sim-beacon{0%{opacity:1}50%{opacity:.35}to{opacity:1}}.sim-beacon{animation:sim-beacon 1s infinite}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.path-node--current,.path-node--pop{animation:none}.path-car{transition:none}}