@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-opsz-normal-D9N6E8K1.woff2) format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-opsz-normal-IcJDqblK.woff2) format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-opsz-normal-Cre6nC2_.woff2) format("woff2-variations");unicode-range:U+0000-00FF,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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(./ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(./ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(./ibm-plex-sans-greek-400-normal-D9ESIMu3.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(./ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(./ibm-plex-sans-latin-ext-400-normal-RBey6euL.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(./ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff");unicode-range:U+0000-00FF,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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(./ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(./ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(./ibm-plex-sans-greek-500-normal-CuWXN6rf.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(./ibm-plex-sans-vietnamese-500-normal-BEb3_waV.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(./ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(./ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(./ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(./ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(./ibm-plex-sans-greek-600-normal-D-CqTdkO.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(./ibm-plex-sans-vietnamese-600-normal-DgdngZtN.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(./ibm-plex-sans-latin-ext-600-normal-DIrixKbi.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(./ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff");unicode-range:U+0000-00FF,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-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");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-display:swap;font-weight:400;src:url(./ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(./ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(./ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(./ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,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-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");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-display:swap;font-weight:500;src:url(./ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(./ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(./ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(./ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,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{--bg:#eaeef2;--panel:#ffffff;--ink:#15202b;--muted:#5a6877;--line:#d3dae2;--accent:#0d6b72;--accent-soft:#d9eef0;--query:#c8700a;--query-soft:#fbead3;--warn:#b4432f;--good:#2f8a55;--grid:#eef2f5;--code-bg:#f6f8fa;--code-hl:#fff1dc;--code-done:#eef7f7;--k:#8a3ab9;--s:#2f7a3b;--c:#7b8794;--n:#b35a00;--f:#1f5fbf;--display:"Bricolage Grotesque Variable","Bricolage Grotesque","Segoe UI",system-ui,sans-serif;--body:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#0e1318;--panel:#161d25;--ink:#e4eaf0;--muted:#93a2b1;--line:#29333e;--accent:#45b8b1;--accent-soft:#16363a;--query:#f0a23a;--query-soft:#3a2a12;--warn:#ef7a63;--good:#5cc489;--grid:#1b232c;--code-bg:#11171e;--code-hl:#3a2a12;--code-done:#132a2c;--k:#d19af2;--s:#8fd19e;--c:#7d8a97;--n:#f2b66b;--f:#7fb2ff;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e1318;--panel:#161d25;--ink:#e4eaf0;--muted:#93a2b1;--line:#29333e;--accent:#45b8b1;--accent-soft:#16363a;--query:#f0a23a;--query-soft:#3a2a12;--warn:#ef7a63;--good:#5cc489;--grid:#1b232c;--code-bg:#11171e;--code-hl:#3a2a12;--code-done:#132a2c;--k:#d19af2;--s:#8fd19e;--c:#7d8a97;--n:#f2b66b;--f:#7fb2ff;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--body)}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance;letter-spacing:-.01em}a{color:var(--accent)}.top{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--panel)}.brand{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.brand h1{font-size:19px}.brand .tag{color:var(--muted);font-size:13px}.phase{font:500 11px var(--mono);border:1px solid var(--line);border-radius:99px;padding:1px 8px;color:var(--muted)}.top .right{margin-left:auto;display:flex;gap:12px;align-items:center}.crumb{color:var(--muted);font-size:13px}.crumb b{color:var(--ink)}.lang{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}.lang button{border:0;background:none;padding:4px 10px;font-size:13px;cursor:pointer;color:var(--muted)}.lang button[aria-pressed=true]{background:var(--accent);color:var(--panel);font-weight:600}main.grid{display:grid;grid-template-columns:240px minmax(0,1fr) 390px;gap:16px;padding:16px;align-items:start}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:0}.card-h{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}.card-h h2{font-size:15px}.card-h .sub{color:var(--muted);font-size:12.5px;margin-left:auto}.card-b{padding:12px 14px}.col{display:grid;gap:16px;min-width:0}.lessons{max-height:calc(100vh - 100px);overflow:auto;position:sticky;top:16px}.lessons .lv{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:12px 14px 4px}.lessons ol{list-style:none;margin:0;padding:2px 8px 6px}.lessons a{display:flex;gap:8px;align-items:flex-start;padding:6px 8px;border-radius:7px;font-size:13px;color:var(--muted);text-decoration:none;line-height:1.35}.lessons a:hover{background:var(--grid)}.lessons a .n{font-family:var(--mono);font-size:11.5px;width:18px;flex:none;padding-top:1px}.lessons a .soon{margin-left:auto;font-size:10.5px;border:1px solid var(--line);border-radius:99px;padding:0 6px;flex:none}.lessons a.built{color:var(--ink)}.lessons a[aria-current=page]{background:var(--accent-soft);color:var(--ink);font-weight:600}.lessons .prog{padding:10px 14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted)}.bar{height:6px;background:var(--grid);border-radius:99px;margin-top:6px;overflow:hidden}.bar i{display:block;height:100%;background:var(--accent)}.stagebar{display:flex;gap:6px;flex-wrap:wrap;padding:10px;align-items:center}.stage{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel);border-radius:99px;padding:5px 12px 5px 5px;cursor:pointer;font-size:13.5px}.stage .num{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font:500 12px var(--mono);background:var(--grid);color:var(--muted)}.stage.done .num{background:var(--accent);color:var(--panel)}.stage.active{border-color:var(--query);background:var(--query-soft)}.stage.active .num{background:var(--query);color:var(--panel)}.stage.focus{outline:2px solid var(--accent);outline-offset:1px}.arrow{color:var(--muted);font-size:13px}.player{display:flex;gap:6px;align-items:center;margin-left:auto;flex-wrap:wrap}.btn{border:1px solid var(--line);background:var(--panel);border-radius:7px;padding:5px 10px;font-size:13px;cursor:pointer}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--panel);font-weight:600}.btn:disabled{opacity:.5;cursor:default}.player select{border:1px solid var(--line);background:var(--panel);border-radius:7px;padding:4px 6px;font-size:13px}.status{font:500 11.5px var(--mono);padding:2px 8px;border-radius:99px;background:var(--grid);color:var(--muted)}.status.running,.status.paused{background:var(--query-soft);color:var(--query)}.status.done{background:var(--accent-soft);color:var(--accent)}.board{position:relative}.board svg{display:block;width:100%;height:auto}.board .gridl{stroke:var(--grid);stroke-width:1}.board .axis{fill:var(--muted);font:11px var(--mono)}.board .dot{stroke:var(--panel);stroke-width:1.5;cursor:pointer}.board .dot.hl{stroke:var(--ink);stroke-width:2.5}.board .ring{fill:none;stroke:var(--query);stroke-width:2}.board .rank{fill:var(--panel);font:600 9.5px var(--mono);pointer-events:none}.board .link{stroke:var(--query);stroke-linecap:round}.board .link.weak{stroke:var(--muted);stroke-dasharray:4 4}.board .score{font:500 11px var(--mono);fill:var(--ink)}.board .scorebg{fill:var(--panel);stroke:var(--line)}.board .star{fill:var(--query);stroke:var(--panel);stroke-width:1.5}.board .qlabel{font:600 12px var(--body);fill:var(--query)}.board .hint{font:13px var(--body);fill:var(--muted)}.pop{animation:pop .45s ease-out both;transform-box:fill-box;transform-origin:center}@keyframes pop{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}.fade{animation:fade .5s ease-out both}@keyframes fade{0%{opacity:0}to{opacity:1}}.tip{position:absolute;pointer-events:none;max-width:290px;background:var(--ink);color:var(--panel);font-size:12.5px;line-height:1.4;padding:8px 10px;border-radius:7px;z-index:5}.tip b{font-family:var(--mono);font-weight:500}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:10px 14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:50%;display:inline-block}.legend .q{width:12px;height:12px;border-radius:0;background:var(--query);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.wtabs{display:flex;gap:2px;padding:0 8px;border-bottom:1px solid var(--line)}.wtab{background:none;border:0;border-bottom:2px solid transparent;padding:10px 12px 8px;font-size:13.5px;color:var(--muted);cursor:pointer}.wtab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.row2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0}.row2>div+div{border-left:1px solid var(--line)}.panel-h{font:600 13px var(--body);padding:10px 14px 0;display:flex;gap:8px}.panel-h .sub{margin-left:auto;color:var(--muted);font-weight:400;font-size:12px}.chunks{max-height:380px;overflow:auto;padding:8px;display:grid;gap:6px}.chunk{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:7px;padding:7px 9px;font-size:12.5px;line-height:1.45}.chunk .meta{display:flex;gap:8px;align-items:center;font:500 11.5px var(--mono);color:var(--muted);margin-bottom:3px;flex-wrap:wrap}.chunk .meta .sc{margin-left:auto}.chunk.ret{background:var(--query-soft);border-color:var(--query);border-left-color:var(--c)}.chunk.hl{outline:2px solid var(--ink)}.badge{font:600 11px var(--mono);background:var(--query);color:var(--panel);border-radius:4px;padding:0 5px}.mixed{color:var(--warn)}.answer{font-size:14.5px;line-height:1.55;padding:12px 14px;border-radius:8px;background:var(--accent-soft);min-height:56px}.answer.none{background:var(--grid);color:var(--muted)}.answer sup{font:600 11px var(--mono);color:var(--query)}.note{font-size:12px;color:var(--muted);margin:8px 0 0}details.prompt{margin-top:12px;border:1px solid var(--line);border-radius:8px}details.prompt summary{cursor:pointer;padding:8px 12px;font-size:13px;font-weight:600;display:flex;gap:8px}details.prompt summary .sub{color:var(--muted);font-weight:400;margin-left:auto;font-family:var(--mono);font-size:12px}details.prompt pre{margin:0;padding:10px 12px;border-top:1px solid var(--line);font:12px/1.5 var(--mono);white-space:pre-wrap;max-height:260px;overflow:auto}.codeview{display:grid;grid-template-columns:minmax(0,1fr) 230px}.codebar{display:flex;gap:6px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap}.seg{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}.seg button{border:0;background:none;padding:4px 10px;font-size:12.5px;cursor:pointer;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--grid);color:var(--ink);font-weight:600}.codebar .sp{margin-left:auto}.code{position:relative;margin:0;max-height:520px;overflow:auto;background:var(--code-bg);font:12.5px/1.6 var(--mono);padding:8px 0;counter-reset:ln}.code .ln{display:block;padding:0 12px 0 0;white-space:pre;transition:background .25s}.code .ln:before{counter-increment:ln;content:counter(ln);display:inline-block;width:38px;padding-right:10px;text-align:right;color:var(--c);-webkit-user-select:none;user-select:none}.code .ln.hl{background:var(--code-hl)}.code .ln.dn{background:var(--code-done)}.code .k{color:var(--k)}.code .s{color:var(--s)}.code .c{color:var(--c);font-style:italic}.code .n{color:var(--n)}.code .f{color:var(--f)}.vars{border-left:1px solid var(--line);padding:10px 12px;font-size:12.5px;max-height:560px;overflow:auto}.vars h3{font:600 12.5px var(--body);margin-bottom:6px}.vars dl{margin:0;display:grid;gap:6px}.vars dt{font:500 11.5px var(--mono);color:var(--muted)}.vars dd{margin:0;font:12px var(--mono);word-break:break-word}.pyout{border-top:1px solid var(--line);padding:10px 12px}.pyout pre{margin:6px 0 0;font:12px/1.5 var(--mono);white-space:pre-wrap;background:var(--code-bg);padding:8px 10px;border-radius:6px;max-height:220px;overflow:auto}.ok{color:var(--good);font-weight:600}.bad{color:var(--warn);font-weight:600}.codenote{font-size:12px;color:var(--muted);padding:8px 12px;border-top:1px solid var(--line)}.tabs{display:flex;border-bottom:1px solid var(--line);padding:0 6px;overflow-x:auto}.tab{background:none;border:0;border-bottom:2px solid transparent;padding:10px 10px 8px;font-size:13.5px;color:var(--muted);cursor:pointer;white-space:nowrap}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.pane{padding:12px 14px;font-size:14px;max-height:440px;overflow:auto}.pane p{margin:0 0 10px}.pane h3{font-size:14.5px;margin:14px 0 6px}.pane h3:first-child{margin-top:0}.pane ul,.pane ol{margin:0 0 10px;padding-left:20px}.pane li{margin-bottom:4px}.scard{border:1px solid var(--line);border-radius:8px;padding:9px 11px;margin-bottom:8px;cursor:pointer}.scard.on{border-color:var(--query);background:var(--query-soft)}.scard h4{margin:0 0 3px;font:600 13.5px var(--body);display:flex;gap:8px;align-items:center}.scard h4 .num{font:500 11px var(--mono);color:var(--muted)}.scard p{margin:0;font-size:13px}.scard .live{margin-top:5px;font:12px var(--mono);color:var(--accent)}.qbtn{display:block;width:100%;text-align:left;background:var(--grid);border:1px solid var(--line);border-radius:7px;padding:7px 10px;margin-bottom:6px;cursor:pointer;font-size:13.5px}.qbtn:hover{border-color:var(--accent)}.exp{border-left:3px solid var(--accent);padding:4px 0 4px 10px;margin-bottom:10px;font-size:13.5px}.exp b{display:block}dl.gloss dt{font-weight:600;font-size:13.5px;margin-top:8px}dl.gloss dd{margin:2px 0 0;font-size:13px;color:var(--muted)}.try .card-b{display:grid;gap:12px}.qrow{display:flex;gap:8px}.qrow input{flex:1;min-width:0;border:1px solid var(--line);background:var(--bg);border-radius:7px;padding:8px 10px}.lbl{font-size:12.5px;color:var(--muted);display:block;margin-bottom:4px}.sliders{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.sl label{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted)}.sl output{font-family:var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}.sl input{width:100%;accent-color:var(--accent)}.docsel{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:7px;padding:6px 8px;font-size:13px}.mon pre{margin:0;padding:10px 12px;height:220px;overflow:auto;font:12px/1.55 var(--mono);background:var(--bg);border-radius:0 0 10px 10px;white-space:pre-wrap}.mon .k{color:var(--accent)}.mon .w{color:var(--warn)}.mon .d{color:var(--muted)}.soonpage{padding:40px 28px;display:grid;gap:12px;max-width:620px}.soonpage h2{font-size:24px}.soonpage p{margin:0;color:var(--muted)}footer{padding:4px 20px 20px;color:var(--muted);font-size:12px}@media (max-width:1240px){main.grid{grid-template-columns:minmax(0,1fr) 360px}.lessons{grid-column:1/-1;position:static;max-height:none}.lessons .levels{display:flex;overflow-x:auto}.lessons .lvwrap{min-width:230px}.codeview{grid-template-columns:minmax(0,1fr)}.vars{border-left:0;border-top:1px solid var(--line);max-height:none}}@media (max-width:900px){main.grid{grid-template-columns:minmax(0,1fr)}.row2{grid-template-columns:minmax(0,1fr)}.row2>div+div{border-left:0;border-top:1px solid var(--line)}.sliders{grid-template-columns:1fr}.player{margin-left:0}}@media (prefers-reduced-motion: reduce){.pop,.fade{animation:none}.code .ln{transition:none}}.btn.linkish{border:0;background:none;color:var(--accent);padding:4px 0;text-decoration:underline;text-underline-offset:3px}.note.bad{color:var(--warn)}.note.busy{color:var(--query)}.sl.wide{grid-column:1/-1}.sl select{margin-top:3px}.done-banner{background:var(--accent-soft);color:var(--accent);font-weight:600;padding:8px 10px;border-radius:7px;margin:0 0 10px}ul.chall{list-style:none;padding:0;margin:0 0 10px}ul.chall li{display:flex;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:13.5px}ul.chall li span:first-child{width:16px;flex:none;color:var(--muted);font-weight:700}ul.chall li.ok span:first-child{color:var(--good)}fieldset.qz{border:1px solid var(--line);border-radius:8px;padding:8px 10px 6px;margin:0 0 10px}fieldset.qz legend{font-weight:600;font-size:13.5px;padding:0 4px}.opt{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;padding:4px 6px;border-radius:6px;cursor:pointer}.opt input{margin-top:4px;accent-color:var(--accent)}.opt.right{background:var(--accent-soft)}.opt.wrong{background:var(--query-soft);text-decoration:line-through}.why{font-size:12.5px;color:var(--muted);margin:4px 6px 2px}.qres{font-size:13.5px;display:grid;gap:8px}.qres .ok{color:var(--good)}.qres .bad{color:var(--warn)}.lessons a .tick{margin-left:auto;color:var(--good);font-weight:700;flex:none}.board .chart .gl{stroke:var(--grid)}.board .chart .ax{stroke:var(--line)}.board .chart text{fill:var(--muted);font:11px var(--mono)}.board .chart .series{fill:none;stroke:var(--accent);stroke-width:2.5}.board .chart .series2{fill:none;stroke:var(--query);stroke-width:2.5}.board .chart .area{fill:var(--accent);opacity:.12}.board .chart .pt{fill:var(--accent);stroke:var(--panel);stroke-width:2}.board .chart .pt.best{fill:var(--query)}.board .chart .lab{fill:var(--ink);font:600 12px var(--body)}.plain{padding:12px 14px}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0;font-family:var(--mono)}.tokens{display:flex;flex-wrap:wrap;gap:3px;font:13px/1.4 var(--mono);padding:12px 14px;max-height:300px;overflow:auto}.tok{padding:1px 3px;border-radius:4px;white-space:pre}.cols{display:grid;gap:12px;padding:12px 14px}.colcard{border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-width:0}.colcard h4{margin:0 0 6px;font:600 13px var(--body);display:flex;gap:8px}.colcard h4 .sub{margin-left:auto;color:var(--muted);font-weight:400;font-family:var(--mono);font-size:12px}.segbar{display:flex;height:18px;border-radius:4px;overflow:hidden;gap:1px;background:var(--line)}.segbar i{display:block;height:100%}.vs{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px 14px}.vs .panel{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.vs .panel h4{margin:0 0 6px;font:600 13.5px var(--body)}.vs .panel.bad{border-color:var(--warn)}.vs .panel.good{border-color:var(--accent)}.mono{font-family:var(--mono)}@media (max-width:900px){.vs{grid-template-columns:1fr}}.gen{padding:14px 16px;font:15px/2 var(--body)}.gen .pw{color:var(--muted)}.gen .gw{padding:2px 4px;border-radius:5px;cursor:pointer;margin:0 1px;background:var(--accent-soft)}.gen .gw.low{background:var(--query-soft)}.gen .gw.seam{outline:2px solid var(--warn);outline-offset:-1px}.gen .gw.sel{box-shadow:0 0 0 2px var(--ink)}.split{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);border-top:1px solid var(--line)}.split>div+div{border-left:1px solid var(--line)}.legend2{display:flex;gap:14px;flex-wrap:wrap;padding:8px 16px;font-size:12px;color:var(--muted);border-top:1px solid var(--line)}.legend2 i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:5px}.tok.c0{background:#d9eef0}.tok.c1{background:#fbead3}.tok.c2{background:#e6e0f6}.tok.c3{background:#dff0e4}.tok.c4{background:#f6dfe6}.tok.c5{background:#e3ecf8}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .tok.c0{background:#16363a}:root:not([data-theme=light]) .tok.c1{background:#3a2a12}:root:not([data-theme=light]) .tok.c2{background:#2b2540}:root:not([data-theme=light]) .tok.c3{background:#1d3326}:root:not([data-theme=light]) .tok.c4{background:#3a2230}:root:not([data-theme=light]) .tok.c5{background:#1f2c3d}}@media (max-width:900px){.split{grid-template-columns:1fr}.split>div+div{border-left:0;border-top:1px solid var(--line)}}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--panel);border-radius:99px;padding:3px 10px;font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.chip i{width:9px;height:9px;border-radius:50%;display:inline-block}.chip[aria-pressed=true]{border-color:var(--ink);background:var(--grid);font-weight:600}input[type=range]{height:28px}input[type=checkbox],input[type=radio]{width:20px;height:20px;accent-color:var(--accent)}.btn{min-height:30px}.lessons a.lv{display:flex;justify-content:space-between;align-items:center;text-decoration:none;color:var(--muted);border-radius:7px;margin:4px 8px 0;padding:8px 8px 4px}.lessons a.lv:hover{background:var(--grid);color:var(--ink)}.lessons a.lv[aria-current=page]{background:var(--accent-soft);color:var(--ink)}.lessons .lvcount{font-family:var(--mono);letter-spacing:0;text-transform:none}.lessons .glink{display:block;margin-bottom:6px;color:var(--accent);font-weight:600;text-decoration:none}.tablewrap{overflow-x:auto}.lvtable{width:100%;border-collapse:collapse;font-size:13.5px}.lvtable th,.lvtable td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:top}.lvtable th{font-size:12px;color:var(--muted);font-weight:600}.glist{margin:0;display:grid;gap:4px}.gitem{padding:8px 10px;border-radius:8px;border:1px solid transparent}.gitem.hl{border-color:var(--accent);background:var(--accent-soft)}.gitem dt{font-weight:600}.gitem dd{margin:2px 0 0;font-size:14px}.gitem dd a{font-size:13px;overflow-wrap:anywhere}a.btn{text-decoration:none;display:inline-flex;align-items:center}.home .hero{font-family:var(--display);font-size:clamp(24px,4vw,34px);line-height:1.15;margin:0}.home .lead{font-size:16px;max-width:62ch;margin:8px 0 0}.promises{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.promises li{border:1px solid var(--line);border-radius:10px;padding:12px;display:grid;gap:4px;font-size:14px}.levelcards{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.levelcards a{display:grid;gap:2px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;text-decoration:none;color:var(--ink);min-height:44px}.levelcards a:hover{border-color:var(--accent);background:var(--accent-soft)}.levelcards .lvn{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.ph3{font-size:15px;margin:6px 0 0}.infosheet{margin:0;display:grid;gap:8px}.infosheet dt{font-weight:600}.infosheet dd{margin:2px 0 0;font-size:14px}.consent{border:1px solid var(--line);border-radius:10px;padding:12px;display:grid;gap:8px}.consent label{display:flex;gap:8px;align-items:flex-start;font-size:14px}.pcode{font-family:var(--mono);font-size:28px;font-weight:600;letter-spacing:.08em;margin:0}.steps3{display:flex;gap:8px;flex-wrap:wrap}.testlist{margin:0;padding-left:22px;display:grid;gap:14px}.testlist fieldset,.likert{border:0;margin:0;padding:0;display:grid;gap:4px}.testlist legend,.likert legend{font-weight:600;margin-bottom:4px;padding:0}.testlist label{display:flex;gap:8px;align-items:flex-start;font-size:14px;padding:3px 0}.testlist label.idk{color:var(--muted)}.lk{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.lk label{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;text-align:center;border:1px solid var(--line);border-radius:8px;padding:6px 2px;min-height:44px;cursor:pointer}.lk label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}footer a{color:inherit}.brand h1 a{display:inline-block;padding:2px 0}
