@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/36966cca54120369-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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/36966cca54120369-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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/36966cca54120369-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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/36966cca54120369-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:Space Grotesk Fallback;src:local("Arial");ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.00%;size-adjust:109.69%}.__className_49a339{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.__variable_49a339{--font-space-grotesk:"Space Grotesk","Space Grotesk Fallback"}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-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:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-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:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-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:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-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:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-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:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-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:Instrument Sans Fallback;src:local("Arial");ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.00%;size-adjust:102.74%}.__className_e986a4{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.__variable_e986a4{--font-instrument-sans:"Instrument Sans","Instrument Sans Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-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:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_6d24ac{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_6d24ac{--font-jetbrains-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{--bg:#ffffff;--surface:#f6f6f5;--border:#e4e4e1;--hair:#efefed;--fg:#0a0a09;--muted:#6c6c67;--accent:#0a0a09;--accent-ink:#ffffff;--band:#0a0a09;--band-fg:#fafaf9;--band-muted:#96958e;--band-hair:#242422;--dot:rgba(10,10,9,0.09);color-scheme:light}:root[data-theme=dark]{--bg:#0a0a09;--surface:#111110;--border:#26261f;--hair:#1b1b18;--fg:#fafaf9;--muted:#96958e;--accent-ink:#0a0a09;--band:#111110;--band-fg:#fafaf9;--band-muted:#96958e;--band-hair:#2a2a25;--dot:rgba(250,250,249,0.07);color-scheme:dark}:root{--signal:#12a150;--signal-fg:#0b6e30;--signal-wash:rgba(18,161,80,0.1);--readout-bg:#0a0a09;--readout-border:#2a2a24;--readout-fg:#eef2ee;--readout-muted:#8f8f88;--readout-signal:#35e07f}:root[data-theme=dark]{--signal:#22d46a;--signal-fg:#4bd487;--signal-wash:rgba(34,212,106,0.14);--readout-bg:#131312;--readout-border:#2f2f28;--readout-fg:#eef2ee;--readout-muted:#8f8f88;--readout-signal:#35e07f}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-instrument-sans),system-ui,sans-serif;min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}::selection{background:var(--fg);color:var(--bg)}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.u-hover-fg-border,.u-hover-muted,.u-hover-opacity,.u-hover-surface,.u-icon-link{transition:color .15s ease,background .15s ease,border-color .15s ease,opacity .15s ease}.u-hover-surface:hover{color:var(--fg);background:var(--surface)}.u-hover-fg-border:hover{border-color:var(--fg)}.u-hover-opacity:hover{opacity:.86}.u-hover-muted:hover{color:var(--muted)}.u-icon-link{opacity:.62}.u-icon-link:hover{opacity:1;background:var(--surface)}.u-card{transition:border-color .15s ease}.u-card:hover{border-color:var(--fg)}.u-textarea{transition:border-color .15s ease}.u-textarea:focus{outline:none;border-color:var(--fg)}a:focus-visible,button:focus-visible,textarea:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.rail-list-inner{display:flex;flex-direction:column;padding-top:18px}.rail-back-drawer,.rail-toggle{display:none}@media (max-width:900px){.lesson-rail{position:static!important;flex-basis:100%!important;top:auto!important}:has(>.lesson-rail){gap:16px!important}.rail-head{display:none}.rail-toggle{display:flex}.rail-back-top{display:none}.rail-back-drawer{display:block;margin-bottom:12px}.rail-list{display:grid;grid-template-rows:0fr;transition:grid-template-rows .32s ease}.rail-list-inner{overflow:hidden;opacity:0;padding-top:0;transition:opacity .26s ease,padding-top .32s ease}.lesson-rail.is-open .rail-list{grid-template-rows:1fr}.lesson-rail.is-open .rail-list-inner{opacity:1;padding-top:14px}}@media (prefers-reduced-motion:reduce){.rail-list,.rail-list-inner{transition:none}}@media (max-width:640px){header nav{padding-left:16px!important;padding-right:16px!important}.nav-progress{display:none!important}}@media (max-width:560px){.hero-cta{flex-direction:column;align-items:stretch}.hero-cta>*{text-align:center}}:root{--tok-word:#2f7d6b;--tok-sub:#b06f1a;--tok-num:#2b6cb0;--tok-punct:#8250b5;--tok-space:#9a9a93;--tok-byte:#c0504f}:root[data-theme=dark]{--tok-word:#5ecab0;--tok-sub:#e0a94a;--tok-num:#6ba7e6;--tok-punct:#bd93e6;--tok-space:#6f6f68;--tok-byte:#ec8a86}.x-hoverink{transition:color .14s ease,border-color .14s ease}.x-hoverink:hover{color:#16161a}.x-underline{border-bottom:1px solid #cfcfc9;padding-bottom:3px;transition:border-color .14s ease,color .14s ease}.x-underline:hover{border-color:#16161a;color:#16161a}.x-sec{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:16px;gap:16px;padding:clamp(40px,6vw,56px) 0;border-bottom:1px solid #e8e8e4}@media (min-width:720px){.x-sec{grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:24px clamp(24px,5vw,64px)}.x-sec-sticky{position:-webkit-sticky;position:sticky;top:20px;align-self:start}}.x-row{transition:padding-left .16s ease,background-color .16s ease}.x-row:hover{padding-left:10px;background-color:#fafaf8}.x-row-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:8px;gap:8px}@media (min-width:720px){.x-row-grid{grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:8px clamp(24px,5vw,64px)}}.x-card{transition:border-color .16s ease,background-color .16s ease}.x-card:hover{border-color:#16161a;background-color:#fafaf8}@media (prefers-reduced-motion:reduce){.x-card,.x-hoverink,.x-row,.x-underline{transition:none}}@keyframes tok-spin{to{transform:rotate(1turn)}}.tok-spin{animation:tok-spin .8s linear infinite}@keyframes tok-bob{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.tok-bob{animation:tok-bob 1.4s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.tok-bob,.tok-spin{animation:none!important}}.oo-code .hljs{color:var(--readout-fg);background:transparent}.oo-code .hljs-comment,.oo-code .hljs-quote{color:var(--readout-muted);font-style:italic}.oo-code .hljs-keyword,.oo-code .hljs-meta,.oo-code .hljs-meta .hljs-keyword,.oo-code .hljs-selector-tag{color:#c9a9ff}.oo-code .hljs-regexp,.oo-code .hljs-string{color:#7fdca4}.oo-code .hljs-literal,.oo-code .hljs-number{color:#e5b567}.oo-code .hljs-built_in,.oo-code .hljs-class .hljs-title,.oo-code .hljs-type{color:#7fd0e0}.oo-code .hljs-attr,.oo-code .hljs-attribute,.oo-code .hljs-property,.oo-code .hljs-section,.oo-code .hljs-title,.oo-code .hljs-title.function_{color:#7fb3ff}.oo-code .hljs-symbol,.oo-code .hljs-template-variable,.oo-code .hljs-variable{color:#e59a86}.oo-code .hljs-params{color:var(--readout-fg)}.oo-code .hljs-operator,.oo-code .hljs-punctuation{color:#a9a9a2}.oo-code pre::-webkit-scrollbar{height:8px}.oo-code pre::-webkit-scrollbar-thumb{background:var(--readout-border);border-radius:8px}