@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/atkinson-hyperlegible-latin-ext-400-normal.21ab7a48.woff2) format("woff2"),url(/_next/static/media/atkinson-hyperlegible-latin-ext-400-normal.c170345e.woff) format("woff");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:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/atkinson-hyperlegible-latin-400-normal.651dd038.woff2) format("woff2"),url(/_next/static/media/atkinson-hyperlegible-latin-400-normal.02a9b850.woff) format("woff");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:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/atkinson-hyperlegible-latin-ext-700-normal.1020617f.woff2) format("woff2"),url(/_next/static/media/atkinson-hyperlegible-latin-ext-700-normal.91bdd02d.woff) format("woff");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:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/atkinson-hyperlegible-latin-700-normal.9126b48c.woff2) format("woff2"),url(/_next/static/media/atkinson-hyperlegible-latin-700-normal.29248c00.woff) format("woff");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:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/plus-jakarta-sans-cyrillic-ext-700-normal.0be560bf.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-cyrillic-ext-700-normal.ebec912a.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/plus-jakarta-sans-vietnamese-700-normal.74c6a6ab.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-vietnamese-700-normal.b2776741.woff) format("woff");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:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/plus-jakarta-sans-latin-ext-700-normal.bfbe2057.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-latin-ext-700-normal.327511cd.woff) format("woff");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:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/plus-jakarta-sans-latin-700-normal.d84247b5.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-latin-700-normal.2eba9731.woff) format("woff");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:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:800;src:url(/_next/static/media/plus-jakarta-sans-cyrillic-ext-800-normal.3f8c4cc8.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-cyrillic-ext-800-normal.9d373146.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:800;src:url(/_next/static/media/plus-jakarta-sans-vietnamese-800-normal.4ae5f23e.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-vietnamese-800-normal.52e261a0.woff) format("woff");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:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:800;src:url(/_next/static/media/plus-jakarta-sans-latin-ext-800-normal.5d96cfcc.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-latin-ext-800-normal.a47034e6.woff) format("woff");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:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:800;src:url(/_next/static/media/plus-jakarta-sans-latin-800-normal.f5722262.woff2) format("woff2"),url(/_next/static/media/plus-jakarta-sans-latin-800-normal.23a2d533.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/lexend-vietnamese-400-normal.97499c1f.woff2) format("woff2"),url(/_next/static/media/lexend-vietnamese-400-normal.9e1ef9e8.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/lexend-latin-ext-400-normal.a9be3e67.woff2) format("woff2"),url(/_next/static/media/lexend-latin-ext-400-normal.134af61b.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/lexend-latin-400-normal.603038b7.woff2) format("woff2"),url(/_next/static/media/lexend-latin-400-normal.5ef9748f.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/lexend-vietnamese-600-normal.7800a448.woff2) format("woff2"),url(/_next/static/media/lexend-vietnamese-600-normal.9212a0df.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/lexend-latin-ext-600-normal.3a952f96.woff2) format("woff2"),url(/_next/static/media/lexend-latin-ext-600-normal.c6875818.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/lexend-latin-600-normal.22219584.woff2) format("woff2"),url(/_next/static/media/lexend-latin-600-normal.1e142f1f.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/lexend-vietnamese-700-normal.69a562a5.woff2) format("woff2"),url(/_next/static/media/lexend-vietnamese-700-normal.659ede68.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/lexend-latin-ext-700-normal.2559814a.woff2) format("woff2"),url(/_next/static/media/lexend-latin-ext-700-normal.6670a7bf.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/lexend-latin-700-normal.264e90a5.woff2) format("woff2"),url(/_next/static/media/lexend-latin-700-normal.ef771d1d.woff) format("woff");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-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-cyrillic-ext-400-normal.17d05b18.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-ext-400-normal.7daf4077.woff) format("woff");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-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-cyrillic-400-normal.17524150.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-400-normal.29859c59.woff) format("woff");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-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-greek-400-normal.77d339c7.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-greek-400-normal.4a5b0cb1.woff) format("woff");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-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-vietnamese-400-normal.553f85d1.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-vietnamese-400-normal.fd17702b.woff) format("woff");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-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-latin-ext-400-normal.4d63b447.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-ext-400-normal.ef62d646.woff) format("woff");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-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-latin-400-normal.db9d659a.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-400-normal.b0c7be19.woff) format("woff");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-display:swap;font-weight:600;src:url(/_next/static/media/jetbrains-mono-cyrillic-ext-600-normal.3a831a4d.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-ext-600-normal.ec1a271e.woff) format("woff");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-display:swap;font-weight:600;src:url(/_next/static/media/jetbrains-mono-cyrillic-600-normal.40b4fdec.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-600-normal.6ee2be4b.woff) format("woff");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-display:swap;font-weight:600;src:url(/_next/static/media/jetbrains-mono-greek-600-normal.642314e1.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-greek-600-normal.41929c71.woff) format("woff");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-display:swap;font-weight:600;src:url(/_next/static/media/jetbrains-mono-vietnamese-600-normal.ec0f0d2d.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-vietnamese-600-normal.31cb43a1.woff) format("woff");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-display:swap;font-weight:600;src:url(/_next/static/media/jetbrains-mono-latin-ext-600-normal.c6da524e.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-ext-600-normal.d62c3bc3.woff) format("woff");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-display:swap;font-weight:600;src:url(/_next/static/media/jetbrains-mono-latin-600-normal.ebeb24f1.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-600-normal.1a59e979.woff) format("woff");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}:root,[data-theme=light]{--bg:#f6f8fb;--ink:#16202c;--muted:#4c5868;--card:#ffffff;--line:#d3dbe5;--card-border:1px solid #d3dbe5;--band:#eaf0f6;--accent:#0a7f86;--accent-ink:#ffffff;--accent-link:#0a7376;--kw:#b0306f;--run-bg:#0a7f86;--run-ink:#ffffff;--paper-border:none;--page-a:#fbf9f2;--page-b:#cfc8b6;--book-outline:none;--book-1:#0a8a8f;--book-1-ink:#ffffff;--book-2:#b13a7d;--book-2-ink:#ffffff;--book-3:#f5b625;--book-3-ink:#1c2530;--book-4:#2f62d6;--book-4-ink:#ffffff;--focus:#e08a00;color-scheme:light}[data-theme=soft]{--bg:#fcfcfb;--ink:#20232a;--muted:#555c69;--card:#ffffff;--line:#e1e3e7;--card-border:1px solid #e1e3e7;--band:#f3f4f6;--accent:#2f5aa8;--accent-ink:#ffffff;--accent-link:#2f5aa8;--kw:#2f5aa8;--run-bg:#2f5aa8;--run-ink:#ffffff;--page-a:#fdfcf7;--page-b:#d9d4c6;--book-1:#8fe0cc;--book-1-ink:#1c2530;--book-2:#ffb59a;--book-2-ink:#1c2530;--book-3:#c2b8ff;--book-3-ink:#1c2530;--book-4:#ffe07a;--book-4-ink:#1c2530;color-scheme:light}[data-theme=dark]{--bg:#10161f;--ink:#eef2f7;--muted:#aab4c2;--card:#1a2230;--line:#2b3544;--card-border:1px solid #2b3544;--band:#151c27;--accent:#4fe0b0;--accent-ink:#062018;--accent-link:#4fe0b0;--kw:#9b3fc8;--run-bg:#0d7a5a;--run-ink:#ffffff;--page-a:#ece7da;--page-b:#9d968a;--book-1:#25c7b8;--book-1-ink:#062220;--book-2:#d374e6;--book-2-ink:#26062d;--book-3:#ffbf3c;--book-3-ink:#2a1c00;--book-4:#6a95ff;--book-4-ink:#06143a;--focus:#ffbf3c;color-scheme:dark}[data-theme=contrast]{--bg:#000000;--ink:#ffffff;--muted:#ffffff;--card:#000000;--line:#ffffff;--card-border:2px solid #ffffff;--band:#000000;--accent:#ffe600;--accent-ink:#000000;--accent-link:#ffe600;--kw:#0030c8;--run-bg:#000000;--run-ink:#ffffff;--paper-border:3px solid #ffffff;--page-a:#ffffff;--page-b:#000000;--book-outline:2px solid #ffffff;--book-1:#00e5d4;--book-1-ink:#000000;--book-2:#ff8fe0;--book-2-ink:#000000;--book-3:#ffe600;--book-3-ink:#000000;--book-4:#8fb8ff;--book-4-ink:#000000;--focus:#ffe600;color-scheme:dark}:root{--font-body:"Atkinson Hyperlegible",system-ui,sans-serif;--font-display:"Plus Jakarta Sans",system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,Consolas,monospace;--lh:1.6;--ls:normal;--ws:normal;font-size:17px}[data-size="1"]{font-size:19.5px}[data-size="2"]{font-size:22.5px}[data-font=easy]{--font-body:"Lexend",system-ui,sans-serif;--font-display:"Lexend",system-ui,sans-serif}[data-spacing=wide]{--lh:1.9;--ls:0.03em;--ws:0.12em}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);line-height:var(--lh);letter-spacing:var(--ls);word-spacing:var(--ws)}a{color:inherit}button{font:inherit;cursor:pointer}img{max-width:100%}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0}p{margin:0}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:16px;top:-60px;z-index:50;background:var(--accent);color:var(--accent-ink);padding:10px 16px;border-radius:8px;font-weight:700}.skip-link:focus{top:12px}.wrap{max-width:1180px;margin:0 auto;padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}.eyebrow{font-family:var(--font-mono);font-size:.82rem;font-weight:600;letter-spacing:.05em;color:var(--accent-link);text-transform:uppercase}.lede{font-size:1.18rem;max-width:32em}.lede,.muted{color:var(--muted)}.section-title{font-weight:800;font-size:clamp(1.8rem,4vw,2.5rem);letter-spacing:-.02em;line-height:1.12}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;padding:12px 22px;border-radius:12px;text-decoration:none;border:1.5px solid var(--line);background:transparent;color:var(--ink);min-height:44px}.btn:hover{border-color:var(--muted)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--primary:hover{filter:brightness(1.06);border-color:var(--accent)}.btn--lg{font-size:1.06rem;padding:14px 24px}.btn--sm{padding:9px 16px;border-radius:10px}.site-header{border-bottom:1px solid var(--line);background:var(--bg);position:-webkit-sticky;position:sticky;top:0;z-index:20}.site-header__inner{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px;padding-block:14px}.logo{font-family:var(--font-mono);font-weight:600;font-size:1.18rem;text-decoration:none}.logo span{color:var(--accent-link)}.nav{display:flex;flex-wrap:wrap;gap:6px 24px;margin-left:auto;font-weight:700;font-size:.94rem}.nav a{text-decoration:none;color:var(--muted)}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.header-actions{display:flex;align-items:center;gap:10px}.menu-toggle{display:none}@media (max-width:860px){.nav{display:none;order:10;width:100%;flex-direction:column;gap:0;margin-left:0}.nav.is-open{display:flex}.nav a{padding:12px 0;border-top:1px solid var(--line)}.header-actions{margin-left:auto}.menu-toggle{display:inline-flex;order:5}.header-actions .login{display:none}.site-header__inner{gap:12px}}@media (max-width:440px){.header-actions .btn--primary{display:none}}.display-btn{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 12px;border-radius:10px;border:1.5px solid var(--line);background:transparent;color:var(--ink);font-weight:700;font-size:.88rem}.display-btn[aria-expanded=true]{background:var(--band)}.display-panel{position:absolute;z-index:30;top:calc(100% + 6px);right:max(20px,env(safe-area-inset-right,0px));width:340px;max-width:calc(100vw - 40px);padding:20px;border-radius:14px;background:var(--card);color:var(--ink);border:var(--card-border);box-shadow:0 20px 40px -12px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:16px;font-size:.9rem}.display-panel__head{display:flex;justify-content:space-between;align-items:center}.display-panel__close{border:none;background:none;color:var(--muted);font-size:1.4rem;line-height:1;padding:6px 10px}.display-panel__label{font-weight:700;color:var(--muted);margin-bottom:8px;display:block}.choice-grid{display:grid;grid-gap:6px;gap:6px}.choice-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.choice{padding:9px 10px;min-height:44px;border-radius:10px;border:1.5px solid var(--line);background:transparent;color:var(--ink);font-weight:700}.choice[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.hero{display:flex;flex-wrap:wrap;gap:52px;align-items:center;padding-block:72px 64px}.hero__text{flex:1 1 460px;min-width:0}.hero h1{margin-top:16px;font-weight:800;font-size:clamp(2.6rem,6.5vw,4rem);line-height:1.04;letter-spacing:-.03em}.hero .lede{margin-top:22px}.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.hero__note{margin-top:26px;font-size:.88rem;color:var(--muted)}.hero__code{flex:1 1 420px;min-width:0}@media (max-width:600px){.hero{padding-block:40px 48px;gap:36px}}.eyebrow,.logo,.paper,.steps,code,pre,textarea{font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0,none}.paper{background:#fffef9;color:#1c2530;border-radius:6px;border:var(--paper-border);box-shadow:0 2px 0 #e7e3d6,0 24px 48px -20px rgba(10,20,35,.45);overflow:hidden;letter-spacing:0;word-spacing:0}.paper__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:14px 18px 12px 58px;font-family:var(--font-mono);font-size:.78rem;color:#5b6470}.paper__task{padding:0 18px 12px 58px;font-size:.9rem;color:#36404d}.paper__task code{font-family:var(--font-mono);background:#eef2f7;padding:1px 5px;border-radius:4px}.badge{padding:3px 10px;border-radius:999px;background:#eef1f5;color:#4c5868;font-weight:600}.badge--pass{background:#dff5e8;color:#126b40}.badge--fail{background:#fde4e2;color:#a32418}.paper__lines{--row:1.95em;background-image:linear-gradient(90deg,transparent 42px,#f08f88 42px,#f08f88 44px,transparent 44px),repeating-linear-gradient(transparent 0 calc(var(--row) - 1px),#d6e2f0 calc(var(--row) - 1px) var(--row));background-attachment:local}.paper__editor{display:block;width:100%;min-height:calc(1.95em * 8);resize:vertical;border:0;margin:0;padding:0 18px 0 58px;background:transparent;color:#1c2530;font-family:var(--font-mono);font-size:.88rem;line-height:1.95em;-moz-tab-size:4;tab-size:4;white-space:pre;overflow:auto}.paper__editor:focus{outline:none;box-shadow:inset 0 0 0 2px var(--focus)}.paper__out{margin:0;padding:12px 18px 12px 58px;min-height:3.9em;max-height:14em;overflow:auto;border-top:1px dashed #d8d2c2;font-family:var(--font-mono);font-size:.85rem;line-height:1.95em;white-space:pre-wrap;word-break:break-word;color:#1a4fa0}.paper__out .err{color:#a32418}.paper__out .ok{color:#126b40;font-weight:600}.paper__out .hint{color:#7a828d}.paper__tests{display:flex;flex-wrap:wrap;gap:6px;padding:0 18px 12px 58px;font-family:var(--font-mono);font-size:.75rem}.paper__tests span{padding:3px 9px;border-radius:6px;background:#eef1f5;color:#4c5868}.paper__tests .pass{background:#dff5e8;color:#126b40}.paper__tests .fail{background:#fde4e2;color:#a32418}.paper__foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:14px 18px 16px 58px;border-top:1px solid #ece8dc}.paper__level{font-family:var(--font-mono);font-size:.78rem;color:#5b6470}.squares{display:flex;flex-wrap:wrap;gap:5px}.square{width:16px;height:16px;border-radius:4px;border:1.5px solid #c9d3df;background:#ffffff}.square.is-done{background:var(--run-bg);border-color:var(--run-bg)}[data-theme=contrast] .square{border-color:#000}[data-theme=contrast] .square.is-done{background:#000}.run-btn{margin-left:auto;font-family:var(--font-mono);font-weight:600;font-size:.85rem;min-height:44px;padding:8px 18px;border-radius:8px;border:2px solid var(--run-bg);background:var(--run-bg);color:var(--run-ink)}.run-btn:disabled{opacity:.6;cursor:progress}.books{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:34px 30px;gap:34px 30px;margin-top:34px}.book{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:26px;min-height:300px;margin:0 12px 12px 0;padding:24px 22px 20px 38px;border-radius:3px 12px 12px 3px;text-decoration:none;color:var(--book-ink);background-color:var(--book-bg);border:var(--book-outline);background-image:linear-gradient(90deg,rgba(0,0,0,.32),rgba(0,0,0,.12) 9px,rgba(255,255,255,.28) 11px,rgba(0,0,0,.18) 13px,rgba(0,0,0,.04) 20px,transparent 26px),radial-gradient(ellipse at 75% 0,rgba(255,255,255,.22),transparent 60%),linear-gradient(180deg,rgba(255,255,255,.08),rgba(0,0,0,.12));box-shadow:3px 3px 0 var(--page-a),4px 4px 0 var(--page-b),6px 6px 0 var(--page-a),7px 7px 0 var(--page-b),9px 9px 0 var(--page-a),10px 10px 0 var(--page-b),12px 22px 28px -10px rgba(0,0,0,.45);transition:transform .2s ease}.book:hover{transform:translate(-2px,-3px) rotate(-.6deg)}.book--1{--book-bg:var(--book-1);--book-ink:var(--book-1-ink)}.book--2{--book-bg:var(--book-2);--book-ink:var(--book-2-ink)}.book--3{--book-bg:var(--book-3);--book-ink:var(--book-3-ink)}.book--4{--book-bg:var(--book-4);--book-ink:var(--book-4-ink)}.book__top{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:.78rem;font-weight:600;letter-spacing:.08em}.book__label{display:flex;flex-direction:column;gap:2px;background:#ffffff;color:#1c2530;border:1px solid #1c2530;border-radius:6px;padding:14px 16px;font-size:.84rem;line-height:1.45;box-shadow:0 1px 0 rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.12)}.book__label small{color:#5b6470;font-size:1em}.book__label b{font-family:var(--font-display);font-size:1.45em;border-bottom:1px solid #c7d4e4;padding-bottom:4px}.book__label span{padding-top:4px}.book__progress{display:flex;flex-direction:column;gap:8px}.book__squares{display:flex;flex-wrap:wrap;gap:5px}.book__squares i{width:15px;height:15px;border-radius:3px;background:currentColor;opacity:.28}.book__squares i.is-done{opacity:1}.book__count{font-family:var(--font-mono);font-size:.72rem;font-weight:600}@media (prefers-reduced-motion:reduce){.book{transition:none}.book:hover{transform:none}}.band{background:var(--band);border-block:1px solid var(--line)}.section{padding-block:64px 72px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:20px;gap:20px;margin-top:28px}.card{flex-direction:column;padding:28px;border-radius:12px;text-decoration:none;background:var(--card);color:var(--ink);border:var(--card-border)}.card,.card__tag{display:flex;gap:10px}.card__tag{align-items:center;font-family:var(--font-mono);font-size:.78rem;font-weight:600;letter-spacing:.06em;color:var(--muted)}.card__tag i{width:14px;height:18px;border-radius:2px 4px 4px 2px}.card__title{font-family:var(--font-display);font-weight:800;font-size:1.6rem;line-height:1.2}.card__link{font-weight:700;color:var(--accent-link);margin-top:auto}.price-strip{display:flex;flex-wrap:wrap;gap:32px;align-items:center}.price-strip>div:first-child{flex:1 1 340px;min-width:0}.price-tiles{flex:2 1 560px;min-width:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:14px;gap:14px}.price-tile{padding:20px;border-radius:12px;background:var(--card);border:var(--card-border)}.price-tile strong{display:block;font-family:var(--font-display);font-weight:800;font-size:1.9rem;line-height:1.2}.switch{display:flex;flex-wrap:wrap;width:max-content;max-width:100%;margin:0 auto 36px;padding:5px;gap:4px;border:var(--card-border);border-radius:999px;background:var(--card)}.switch button{border:0;background:none;color:var(--muted);padding:10px 20px;min-height:44px;border-radius:999px;font-weight:700}.switch button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px}.plan{position:relative;display:flex;flex-direction:column;padding:28px 24px;border-radius:16px;background:var(--card);border:var(--card-border)}.plan--pop{border:2px solid var(--accent)}.plan__flag{position:absolute;top:-12px;left:24px;font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:.1em;background:var(--accent);color:var(--accent-ink);padding:4px 10px;border-radius:999px}.plan h3{font-size:1.1rem}.plan__price{font-family:var(--font-display);font-weight:800;font-size:2.6rem;line-height:1;margin-top:14px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.plan__price small{font-family:var(--font-body);font-weight:400;font-size:.9rem;color:var(--muted)}.plan ul{list-style:none;padding:0;margin:20px 0 24px;display:grid;grid-gap:8px;gap:8px;font-size:.92rem;flex:1 1}.plan li{display:flex;gap:10px}.plan li:before{content:"✓";color:var(--accent-link);font-weight:700}.site-footer{border-top:1px solid var(--line)}.site-footer .wrap{display:flex;flex-wrap:wrap;gap:12px 28px;padding-block:30px;font-size:.88rem;color:var(--muted)}.site-footer nav{margin-left:auto;display:flex;flex-wrap:wrap;gap:20px}.page-head{padding-block:56px 24px}.page-head h1{font-weight:800;font-size:clamp(2.2rem,5vw,3.2rem);letter-spacing:-.03em;line-height:1.08;margin-top:12px}.page-head .lede{margin-top:16px}.lab-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));grid-gap:32px;gap:32px;padding-block:24px 72px}.unit-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));grid-gap:14px;gap:14px}.unit-card{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border-radius:12px;background:var(--card);border:var(--card-border)}.unit-card__code{display:flex;justify-content:space-between;gap:8px;font-family:var(--font-mono);font-size:.78rem;font-weight:600;letter-spacing:.05em;color:var(--accent-link);text-transform:uppercase}.unit-card__code span{color:var(--muted)}.unit-card b{font-family:var(--font-display);font-size:1.08rem;line-height:1.3}.unit-card small{color:var(--muted);font-size:.86rem}.unit-filter{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 18px}.unit-filter button{min-height:44px;padding:8px 16px;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--ink);font-weight:700;font-size:.9rem}.unit-filter button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.topic-list{list-style:none;padding:0;margin:0;display:grid;grid-gap:8px;gap:8px}.topic-row{display:flex;align-items:center;gap:16px;padding:12px 16px;border-radius:12px;background:var(--card);border:var(--card-border);text-decoration:none;color:var(--ink)}.topic-row:hover{border-color:var(--muted)}.topic-row__num{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:6px;background:var(--book-bg);color:var(--book-ink);font-family:var(--font-mono);font-weight:600;font-size:.9rem}.topic-row__text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1}.topic-row__text b{font-weight:700;line-height:1.3}.topic-row__text small{color:var(--muted);font-size:.82rem;font-family:var(--font-mono)}.topic-row__go{color:var(--accent-link);font-weight:700}.crumbs{padding-top:32px;font-size:.9rem;color:var(--muted)}.crumbs a{color:var(--accent-link);font-weight:700}.topic-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));grid-gap:28px;gap:28px;align-items:start;margin-top:8px}.spec-sheet{background:#fffef9;color:#1c2530;border-radius:6px;border:var(--paper-border);border-top:10px solid var(--book-bg);box-shadow:0 2px 0 #e7e3d6,0 20px 40px -22px rgba(10,20,35,.45);padding:18px 20px 22px 58px;line-height:1.95em;background-image:linear-gradient(90deg,transparent 43px,#ef9a9a 0,#ef9a9a 45px,transparent 0),repeating-linear-gradient(180deg,transparent 0,transparent calc(1.95em - 1px),#dbe6f2 calc(1.95em - 1px),#dbe6f2 1.95em)}.spec-sheet h2{font-size:1.1rem;line-height:1.95em}.spec-sheet h3{font-size:.82rem;font-family:var(--font-mono);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#5b6470;margin-top:1.95em;line-height:1.95em}.spec-sheet h3 span{text-transform:none;letter-spacing:0;font-family:var(--font-body);font-weight:400;margin-left:8px}.spec-sheet ul{margin:0;padding-left:1.1em}.spec-sheet li{line-height:1.95em}.study-cards{display:grid;grid-gap:14px;gap:14px}.study-card{display:flex;flex-direction:column;gap:6px;padding:20px 22px;border-radius:12px;background:var(--card);border:var(--card-border)}.study-card__title{font-family:var(--font-display);font-weight:800;font-size:1.3rem}.study-card__soon{align-self:flex-start;margin-top:4px;font-family:var(--font-mono);font-size:.74rem;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--band);color:var(--muted);border:1px solid var(--line)}.topic-nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:40px}.topic-row__ready{flex:none;font-family:var(--font-mono);font-size:.72rem;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--accent);color:var(--accent-ink)}.study-card--ready{text-decoration:none;color:var(--ink)}.study-card--ready:hover{border-color:var(--muted)}.study-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--line);margin-bottom:28px}.study-tabs a{padding:12px 18px;min-height:44px;font-weight:700;text-decoration:none;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px}.study-tabs a:hover{color:var(--ink)}.study-tabs a[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}.notes-layout{display:grid;grid-template-columns:240px minmax(0,1fr);grid-gap:40px;gap:40px;align-items:start}.notes-toc{position:-webkit-sticky;position:sticky;top:96px;font-size:.9rem;display:grid;grid-gap:18px;gap:18px}.notes-toc__unit{font-family:var(--font-mono);font-size:.76rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}.notes-toc ol{list-style:none;padding:0;margin:0;display:grid;grid-gap:6px;gap:6px}.notes-toc a{color:var(--ink);text-decoration:none}.notes-toc a:hover{color:var(--accent-link);text-decoration:underline}@media (max-width:860px){.notes-layout{grid-template-columns:minmax(0,1fr)}.notes-toc{position:static;padding:18px 20px;border-radius:12px;background:var(--card);border:var(--card-border)}}.notes{max-width:46em}.notes__unit+.notes__unit{margin-top:48px}.notes__unit-label{font-family:var(--font-mono);font-size:.82rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-link);padding-bottom:8px;border-bottom:2px solid var(--line)}.notes__section{padding-top:28px;scroll-margin-top:90px}.notes__section h2{font-size:1.45rem;font-weight:800;letter-spacing:-.01em;margin-bottom:10px}.prose>*+*{margin-top:.9em}.prose ol,.prose ul{padding-left:1.3em}.prose li+li{margin-top:.3em}.prose table{border-collapse:collapse;display:block;max-width:100%;overflow-x:auto;font-size:.95rem}.prose td,.prose th{border:1px solid var(--line);padding:7px 12px;text-align:left}.prose th{background:var(--band);font-weight:700}.prose td{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.prose pre{max-width:100%;overflow-x:auto}.prose code{font-family:var(--font-mono);font-size:.9em;background:var(--band);padding:1px 5px;border-radius:4px}.notes__next{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:48px;padding:20px 22px;border-radius:12px;background:var(--card);border:var(--card-border)}.notes__next .muted{margin-right:auto;font-weight:700}.flash,.quiz{max-width:640px}.flash__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.flash__toggle{display:inline-flex;align-items:center;gap:8px;font-weight:700;min-height:44px}.flash__toggle input{width:20px;height:20px;accent-color:var(--accent)}.flash__known{font-weight:700;margin-bottom:8px}.flash__count{margin-top:24px;font-family:var(--font-mono);font-size:.82rem;color:var(--muted)}.flashcard{display:block;width:100%;margin-top:10px;padding:0;border:0;background:none;color:inherit;text-align:center;perspective:1400px;cursor:pointer}.flashcard__inner{position:relative;display:grid;min-height:280px;transition:transform .45s ease;transform-style:preserve-3d}.flashcard.is-flipped .flashcard__inner{transform:rotateY(180deg)}.flashcard__face{grid-area:1/1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:44px 28px 28px;border-radius:8px;backface-visibility:hidden;-webkit-backface-visibility:hidden;color:#1c2530;border:var(--paper-border);background:#ffffff;background-image:linear-gradient(180deg,transparent 30px,#ef9a9a 0,#ef9a9a 32px,transparent 0),repeating-linear-gradient(180deg,transparent 0,transparent 31px,#dbe6f2 0,#dbe6f2 32px);box-shadow:0 2px 0 #e7e3d6,0 20px 40px -22px rgba(10,20,35,.45)}.flashcard__face small{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:#5b6470}.flashcard__front b{font-family:var(--font-display);font-size:clamp(1.6rem,5vw,2.2rem);line-height:1.2}.flashcard__back{transform:rotateY(180deg);font-size:1.15rem;line-height:1.55}.flashcard:focus-visible{outline:3px solid var(--focus);outline-offset:4px;border-radius:8px}@media (prefers-reduced-motion:reduce){.flashcard__inner{transition:none}}.flash__hint{text-align:center;margin-top:14px;font-size:.92rem}.flash__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}.flash .flash__actions{justify-content:center}.flash__actions .btn:disabled{opacity:.45;cursor:not-allowed}.flash__done,.quiz__start{margin-top:24px;padding:28px;border-radius:12px;background:var(--card);border:var(--card-border);display:grid;grid-gap:14px;gap:14px;justify-items:start}.flash__done h2,.quiz__start h2{font-size:1.6rem;font-weight:800}.flash .flash__done .flash__actions{justify-content:flex-start;margin-top:4px}.square.is-wrong{background:#fde4e2;border-color:#d9534f}.quiz__best{font-weight:700;color:var(--accent-link)}.quiz__progress{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;font-family:var(--font-mono);font-size:.82rem;color:var(--muted);margin-bottom:14px}.quiz__card{padding:28px;border-radius:12px;background:var(--card);border:var(--card-border);display:grid;grid-gap:18px;gap:18px}.quiz__prompt{font-size:1.25rem;font-weight:700;line-height:1.45}.quiz__prompt:focus{outline:none}.quiz__options{border:0;padding:0;margin:0;display:grid;grid-gap:8px;gap:8px}.quiz__option{display:flex;align-items:center;gap:12px;padding:12px 16px;min-height:48px;border-radius:10px;border:1.5px solid var(--line);cursor:pointer}.quiz__option input{width:20px;height:20px;flex:none;accent-color:var(--accent)}.quiz__option.is-chosen{border-color:var(--accent)}.quiz__option.is-right{border-color:#1f9d5c;background:rgba(31,157,92,.12)}.quiz__option.is-wrong{border-color:#d9534f;background:rgba(217,83,79,.12)}.quiz__typed input{width:100%;max-width:320px;min-height:48px;padding:10px 14px;border-radius:10px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);font-family:var(--font-mono);font-size:1.1rem}.quiz__typed input.is-right{border-color:#1f9d5c}.quiz__typed input.is-wrong{border-color:#d9534f}.quiz__feedback{padding:14px 16px;border-radius:10px;line-height:1.55;border-left:5px solid}.quiz__feedback:focus{outline:none}.quiz__feedback.is-right{border-color:#1f9d5c;background:rgba(31,157,92,.12)}.quiz__feedback.is-wrong{border-color:#d9534f;background:rgba(217,83,79,.12)}.quiz__actions .btn:disabled{opacity:.45;cursor:not-allowed}:root,[data-theme=light]{--as:#1d5fc4;--as-bg:#e8f0ff;--a2:#9b2c78;--a2-bg:#fbeaf5}[data-theme=soft]{--as:#2f5aa8;--as-bg:#edf1f9;--a2:#8e3d84;--a2-bg:#f7edf5}[data-theme=dark]{--as:#82b2ff;--as-bg:rgba(130,178,255,0.13);--a2:#f08ad6;--a2-bg:rgba(240,138,214,0.13)}[data-theme=contrast]{--as:#8fb8ff;--as-bg:#000000;--a2:#ff8fe0;--a2-bg:#000000}.lvl--as{--lvl:var(--as);--lvl-bg:var(--as-bg)}.lvl--a2{--lvl:var(--a2);--lvl-bg:var(--a2-bg)}.lvl-chip{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:1px 9px;border-radius:999px;font-family:var(--font-mono);font-size:.74rem;font-weight:700;letter-spacing:.04em;color:var(--lvl,var(--muted));background:var(--lvl-bg,var(--band));border:1.5px solid var(--lvl,var(--line));vertical-align:middle}.notes__unit-label .lvl-chip,.topic-row__text .lvl-chip{margin-left:0;margin-right:8px}.notes__unit-label .lvl-chip{--lvl:inherit}.unit-tag{margin-right:8px}.topic-row__text small{gap:4px 0}.notes-filter__bar,.topic-row__text small{display:flex;flex-wrap:wrap;align-items:center}.notes-filter__bar{gap:10px 14px;margin-bottom:26px}.notes-filter__label{font-weight:700}.notes-filter[data-show=A2] [data-key=AS],.notes-filter[data-show=AS] [data-key=A2]{display:none}.notes__unit.lvl--a2,.notes__unit.lvl--as{border-left:6px solid var(--lvl);padding-left:22px}.notes__unit.lvl--a2 .notes__unit-label,.notes__unit.lvl--as .notes__unit-label{color:var(--lvl);background:var(--lvl-bg);border-bottom:0;padding:10px 14px;border-radius:8px;margin-left:-6px}.notes__unit.lvl--as .notes__unit-label .lvl-chip{color:var(--as-bg);background:var(--as);border-color:var(--as)}.notes__unit.lvl--a2 .notes__unit-label .lvl-chip{color:var(--a2-bg);background:var(--a2);border-color:var(--a2)}[data-theme=contrast] .notes__unit-label .lvl-chip{color:#000!important}.notes-toc__group.lvl--a2,.notes-toc__group.lvl--as{border-left:4px solid var(--lvl);padding-left:12px}.notes-toc__group.lvl--a2 .notes-toc__unit,.notes-toc__group.lvl--as .notes-toc__unit{color:var(--lvl)}.notes__unit.lvl--a2 h2{color:var(--ink)}.unit-filter .lvl-btn--as[aria-pressed=true]{background:var(--as);border-color:var(--as);color:#fff}.unit-filter .lvl-btn--a2[aria-pressed=true]{background:var(--a2);border-color:var(--a2);color:#fff}[data-theme=contrast] .unit-filter .lvl-btn[aria-pressed=true],[data-theme=dark] .unit-filter .lvl-btn[aria-pressed=true]{color:#000}.flashcard.lvl--a2 .flashcard__face,.flashcard.lvl--as .flashcard__face{box-shadow:inset 0 6px 0 var(--lvl),0 2px 0 #e7e3d6,0 20px 40px -22px rgba(10,20,35,.45)}.quiz__card.lvl--a2,.quiz__card.lvl--as{border-top:6px solid var(--lvl)}.spec-sheet__part.lvl--a2 h3,.spec-sheet__part.lvl--as h3{color:var(--lvl)}.spec-sheet .lvl--as{--lvl:#1d5fc4}.spec-sheet .lvl--a2{--lvl:#9b2c78}.unit-card.lvl--a2,.unit-card.lvl--as{border-top:5px solid var(--lvl)}.unit-card.lvl--a2 .unit-card__code,.unit-card.lvl--as .unit-card__code{color:var(--lvl)}.flash__modes{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:18px}.seg{display:inline-flex;padding:4px;gap:2px;border-radius:12px;background:var(--band);border:1px solid var(--line)}.seg button{min-height:40px;padding:6px 14px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-weight:700;font-size:.9rem}.seg button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}[data-theme=contrast] .seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.flash__status{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px}.due-btn{min-height:44px;padding:10px 16px;border-radius:12px;border:2px solid var(--accent);background:transparent;color:var(--ink);font-weight:700}.due-btn b{color:var(--accent-link);font-size:1.1em}.due-btn:hover{background:var(--band)}.flashcard__def{font-size:1rem;line-height:1.5;color:#36404d}.flashcard[aria-disabled=true]{cursor:default}.flash__type{display:grid;grid-gap:12px;gap:12px;margin-top:18px;justify-items:start}.flash__type input{width:100%;max-width:380px;min-height:48px;padding:10px 14px;border-radius:10px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);font-size:1.1rem}.flash__type input.is-right{border-color:#1f9d5c}.flash__type input.is-wrong{border-color:#d9534f}.streak{display:inline-flex;align-items:center;gap:6px;padding:3px 12px;border-radius:999px;background:var(--band);border:1px solid var(--line);font-family:var(--font-mono);font-size:.82rem;color:var(--ink)}.streak b{font-size:1.05rem}.streak.is-hot{background:#fff1d6;border-color:#e08a00;color:#6b3d00}.streak.is-hot:before{content:"★";color:#e08a00}[data-theme=dark] .streak.is-hot{background:rgba(255,191,60,.15);color:#ffd27a}[data-theme=contrast] .streak.is-hot{background:#000;color:#ffe600;border-color:#ffe600}.quiz__why{font-weight:700}.quiz__mastered{padding:10px 14px;border-radius:10px;background:rgba(31,157,92,.12);border-left:5px solid #1f9d5c;font-weight:700}.practice{max-width:680px}.practice__intro{margin-bottom:16px}.practice__skill{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:16px 0 14px;font-weight:700}.practice__skill select{min-height:44px;padding:8px 12px;border-radius:10px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:600;max-width:100%}.practice__stats{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin-bottom:14px;font-size:.92rem;color:var(--muted)}.practice__stats b{color:var(--ink)}.practice__skillname{font-family:var(--font-mono);font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.practice__fields{display:flex;flex-wrap:wrap;gap:14px 18px}.practice__field{display:grid;grid-gap:6px;gap:6px;font-weight:700;font-size:.9rem}.practice__field input{width:220px;max-width:100%;min-height:48px;padding:10px 14px;border-radius:10px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);font-family:var(--font-mono);font-size:1.1rem;letter-spacing:.04em}.practice__field input.is-right{border-color:#1f9d5c}.practice__field input.is-wrong{border-color:#d9534f}.practice__miss{display:inline}code.bits{font-family:var(--font-mono);font-size:.95em;letter-spacing:.05em;background:var(--band);padding:1px 6px;border-radius:5px;white-space:nowrap}.quiz__prompt code.bits{font-size:.92em}.linkish{border:0;background:none;padding:0;color:var(--accent-link);font-weight:700;text-decoration:underline;min-height:32px}.steps{margin:8px 0 0;padding:14px 16px 14px 36px;border-radius:10px;background:var(--band);font-family:var(--font-mono);font-size:.88rem;line-height:1.8}.topic-row__num.is-mastered{box-shadow:0 0 0 3px var(--card),0 0 0 5px #1f9d5c}.topic-row__ready--done{background:#1f9d5c;color:#fff}[data-theme=contrast] .topic-row__ready--done{background:#fff;color:#000}.focus-pick{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 16px}.focus-pick__opt{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);font-weight:700;font-size:.92rem;cursor:pointer}.focus-pick__opt input{position:absolute;opacity:0;width:1px;height:1px}.focus-pick__opt b{font-family:var(--font-mono);font-size:.8rem;min-width:1.8em;text-align:center;padding:1px 7px;border-radius:999px;background:var(--band);color:var(--muted)}.focus-pick__opt.is-on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.focus-pick__opt.is-on b{background:var(--accent);color:var(--accent-ink)}.focus-pick__opt.is-due:not(.is-on) b{background:#fff1d6;color:#6b3d00}.focus-pick__opt.is-empty{opacity:.5;cursor:not-allowed}.focus-pick__opt:focus-within{outline:3px solid var(--focus);outline-offset:2px}.quiz__start .focus-pick{margin:0}.squares--nav{gap:6px}.squares--nav .square{padding:0;cursor:pointer;width:20px;height:20px}.squares--nav .square:hover{transform:scale(1.15)}.squares--nav .square:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.square.is-current{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--ink)}.square.is-learning{background:#fff1d6;border-color:#e08a00}@media (prefers-reduced-motion:reduce){.squares--nav .square:hover{transform:none}}.flash__status{display:grid;grid-gap:8px;gap:8px}.bank{margin-top:10px;padding-top:18px;border-top:1px solid var(--line);display:grid;grid-gap:10px;gap:10px;width:100%}.bank__title{font-weight:700}.bank__key{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.85rem;color:var(--muted)}.bank__key span{display:inline-flex;align-items:center;gap:6px}.bank__key .square{display:inline-block;width:14px;height:14px}.listing{margin:0;padding:14px 18px;border-radius:10px;background:var(--band);border:1px solid var(--line);font-size:.95rem;line-height:1.7;overflow-x:auto;-moz-tab-size:8;tab-size:8}.free-chip,.listing{font-family:var(--font-mono)}.free-chip{display:inline-flex;align-items:center;margin-left:8px;padding:1px 9px;border-radius:999px;font-size:.74rem;font-weight:700;letter-spacing:.04em;color:var(--accent-ink);background:var(--accent);vertical-align:middle}h1 .free-chip{font-size:.9rem;padding:3px 12px;margin-left:14px;position:relative;top:-.2em}.lock-icon{flex:none;vertical-align:-.12em}.access-chip{align-self:flex-start;align-items:center;gap:6px;margin-top:4px;font-family:var(--font-mono);font-size:.74rem;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--band);border:1px solid var(--line)}.access-chip,.study-tabs__lock{display:inline-flex;color:var(--muted)}.study-tabs__lock{margin-left:6px}.locked{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:22px;gap:22px}.locked__preview pre{overflow-x:auto}.locked__banner{display:flex;gap:16px;align-items:flex-start;padding:20px 22px;border-radius:12px;background:var(--card);border:var(--card-border)}.locked__banner h2{font-size:1.25rem;margin:0 0 6px}.locked__banner p{margin:0}.locked__icon{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--band);color:var(--ink);border:1px solid var(--line)}.locked__preview{position:relative;padding:4px 0 0}.locked__label{font-family:var(--font-mono);font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}.locked__preview .locked__label+*{margin-top:0}.locked__list{margin:0 0 8px;padding-left:1.2em;display:grid;grid-gap:6px;gap:6px}.locked__cards{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.locked__card{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border-radius:10px;background:var(--card);border:var(--card-border)}.locked__question{padding:18px 20px;border-radius:12px;background:var(--card);border:var(--card-border)}.locked__prompt{font-weight:700;margin:0 0 10px}.locked__options{margin:0;padding-left:1.6em;display:grid;grid-gap:6px;gap:6px}.locked__actions{display:flex;flex-wrap:wrap;gap:10px}