@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-ui:"Space Grotesk Variable", "Space Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--r-xs:6px;--r-sm:10px;--r-md:14px;--r-lg:20px;--r-xl:28px;--r-full:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:72px;--container:1180px;--header-h:64px;--typing-size:28px;--ease:cubic-bezier(.22, 1, .36, 1);--t-fast:.12s;--t-med:.24s;--f-lp:#ff6b6b;--f-lr:#ffa94d;--f-lm:#f5c518;--f-li:#51cf66;--f-ri:#20c997;--f-rm:#4dabf7;--f-rr:#9775fa;--f-rp:#f06595;--f-th:#a0a7b4;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root,[data-theme=midnight]{--bg:#0d0e13;--bg-elev:#12141b;--surface:#171922;--surface-2:#1f2230;--surface-3:#282c3c;--border:#2a2e3d;--border-strong:#3a3f53;--text:#ecedf3;--text-muted:#9095a9;--text-faint:#85899a;--accent:#ff6b4a;--accent-2:#8b7cff;--accent-contrast:#160c08;--success:#3ddc97;--danger:#ff5470;--warning:#ffb020;--typing-untyped:#858999;--typing-correct:#ecedf3;--shadow:0 10px 30px #00000059;--glow-1:#ff6b4a29;--glow-2:#8b7cff24;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=paper]{--bg:#f7f4ee;--bg-elev:#fbf9f5;--surface:#fff;--surface-2:#f1ede5;--surface-3:#e8e2d6;--border:#e4ddd1;--border-strong:#cfc6b6;--text:#1b1c22;--text-muted:#63626b;--text-faint:#6d6b69;--accent:#c13d24;--accent-2:#6a5ae0;--accent-contrast:#fff;--success:#157b55;--danger:#c7314a;--warning:#93610a;--typing-untyped:#6d6a68;--typing-correct:#1b1c22;--shadow:0 10px 30px #3c2d1414;--glow-1:#e0472a1a;--glow-2:#6a5ae014;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=ocean]{--bg:#08131f;--bg-elev:#0c1a2a;--surface:#102236;--surface-2:#152b43;--surface-3:#1c3653;--border:#1f3a57;--border-strong:#2c4f74;--text:#e6f3ff;--text-muted:#8eaac6;--text-faint:#7b93ab;--accent:#3ec5ff;--accent-2:#7af0c6;--accent-contrast:#04121d;--success:#6cf0b0;--danger:#ff6b8b;--warning:#ffc857;--typing-untyped:#7b93a9;--typing-correct:#e6f3ff;--shadow:0 10px 30px #0006;--glow-1:#3ec5ff29;--glow-2:#7af0c61f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=forest]{--bg:#0d1411;--bg-elev:#111b16;--surface:#16231c;--surface-2:#1c2c23;--surface-3:#24382d;--border:#263a2f;--border-strong:#355040;--text:#e9f3ec;--text-muted:#93ab9c;--text-faint:#7d9487;--accent:#7bd389;--accent-2:#e0c36b;--accent-contrast:#0b140e;--success:#7bd389;--danger:#ff6f61;--warning:#e0c36b;--typing-untyped:#7e9487;--typing-correct:#e9f3ec;--shadow:0 10px 30px #0006;--glow-1:#7bd38924;--glow-2:#e0c36b1a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=sand]{--bg:#f2e9d8;--bg-elev:#f7f0e3;--surface:#fbf6ec;--surface-2:#ece1cc;--surface-3:#e2d4ba;--border:#ddcdb0;--border-strong:#c7b391;--text:#2a2118;--text-muted:#6f604e;--text-faint:#6f6250;--accent:#a34b1b;--accent-2:#3f7d6e;--accent-contrast:#fffaf2;--success:#3c7046;--danger:#b8323f;--warning:#885c0e;--typing-untyped:#706351;--typing-correct:#2a2118;--shadow:0 10px 30px #5037141a;--glow-1:#b9551f1a;--glow-2:#3f7d6e14;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=mono]{--bg:#0f0f10;--bg-elev:#151516;--surface:#1a1a1c;--surface-2:#222224;--surface-3:#2c2c2f;--border:#2e2e31;--border-strong:#444448;--text:#f2f2f2;--text-muted:#9a9a9e;--text-faint:#8a8a8c;--accent:#f2f2f2;--accent-2:#9a9a9e;--accent-contrast:#0f0f10;--success:#d9d9d9;--danger:#ff6b6b;--warning:#cfcfcf;--typing-untyped:#89898b;--typing-correct:#f2f2f2;--shadow:0 10px 30px #00000073;--glow-1:#ffffff0d;--glow-2:#ffffff08;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=sunset]{--bg:#170d1c;--bg-elev:#1d1124;--surface:#24152d;--surface-2:#2d1a38;--surface-3:#3a2147;--border:#3a2348;--border-strong:#52305f;--text:#fbeef4;--text-muted:#bd9cb6;--text-faint:#998298;--accent:#ff8a3d;--accent-2:#ff4f8b;--accent-contrast:#1e0b04;--success:#6ee7b7;--danger:#ff4f6d;--warning:#ffc04d;--typing-untyped:#998299;--typing-correct:#fbeef4;--shadow:0 10px 30px #00000073;--glow-1:#ff8a3d33;--glow-2:#ff4f8b29;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=neon]{--bg:#06060b;--bg-elev:#0b0b13;--surface:#10101b;--surface-2:#161626;--surface-3:#1f1f33;--border:#22223a;--border-strong:#34345a;--text:#f1f1ff;--text-muted:#9a9ac4;--text-faint:#7d7d9f;--accent:#39ff88;--accent-2:#ff2fd5;--accent-contrast:#031408;--success:#39ff88;--danger:#ff3b6b;--warning:#fff03b;--typing-untyped:#7e7e9e;--typing-correct:#f1f1ff;--shadow:0 10px 30px #0009;--glow-1:#39ff8824;--glow-2:#ff2fd524;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=sakura]{--bg:#fbf0f2;--bg-elev:#fdf6f7;--surface:#fff;--surface-2:#f6e4e8;--surface-3:#efd3da;--border:#f0d6dc;--border-strong:#dfb4bf;--text:#2d1b22;--text-muted:#7c5d68;--text-faint:#7e616a;--accent:#b63b5e;--accent-2:#7a5cf0;--accent-contrast:#fff;--success:#2e7556;--danger:#c62a44;--warning:#8f5e09;--typing-untyped:#7d616a;--typing-correct:#2d1b22;--shadow:0 10px 30px #78284614;--glow-1:#d6456f1f;--glow-2:#7a5cf014;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;transition:background-color var(--t-med) var(--ease), color var(--t-med) var(--ease);margin:0;font-size:16px;line-height:1.55}h1,h2,h3,h4{margin:0 0 var(--space-3);letter-spacing:-.02em;font-weight:650;line-height:1.15}h1{font-size:clamp(1.9rem,1.4rem + 2vw,2.8rem)}h2{font-size:clamp(1.35rem,1.15rem + .9vw,1.8rem)}h3{font-size:1.12rem}p{margin:0 0 var(--space-3)}a{color:inherit;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 60%, transparent);text-underline-offset:3px}a:hover{color:var(--accent)}img,svg{max-width:100%;display:block}.icon{flex:none;display:inline-block}button,input,select,textarea{font:inherit;color:inherit}[tabindex="-1"]:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}::selection{background:color-mix(in srgb, var(--accent) 35%, transparent)}code,kbd,.mono{font-family:var(--font-mono)}kbd{border:1px solid var(--border-strong);border-radius:var(--r-xs);color:var(--text-muted);background:var(--surface-2);border-bottom-width:2px;padding:1px 6px;font-size:.8em;display:inline-block}table{border-collapse:collapse;width:100%}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{left:var(--space-4);z-index:100;padding:var(--space-2) var(--space-4);background:var(--accent);color:var(--accent-contrast);border-radius:var(--r-sm);transition:top var(--t-fast);font-weight:600;position:absolute;top:-48px}.skip-link:focus{top:var(--space-3);color:var(--accent-contrast)}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.accent-text{color:var(--accent)}.success-text{color:var(--success)}.danger-text{color:var(--danger)}.nowrap{white-space:nowrap}.center{text-align:center}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:42px;padding:0 var(--space-5);border-radius:var(--r-full);background:var(--accent);color:var(--accent-contrast);cursor:pointer;transition:transform var(--t-fast) var(--ease), box-shadow var(--t-med) var(--ease), background var(--t-med);box-shadow:0 6px 20px -8px color-mix(in srgb, var(--accent) 70%, transparent);white-space:nowrap;border:1px solid #0000;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{color:var(--accent-contrast);box-shadow:0 10px 26px -8px color-mix(in srgb, var(--accent) 80%, transparent);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}.btn-sm{min-height:34px;padding:0 var(--space-4);font-size:.9rem}.btn-lg{min-height:52px;padding:0 var(--space-6);font-size:1.05rem}.btn-ghost{color:var(--text);border-color:var(--border-strong);box-shadow:none;background:0 0}.btn-ghost:hover{color:var(--text);background:var(--surface-2);box-shadow:none}.btn-soft{background:var(--surface-2);color:var(--text);box-shadow:none}.btn-soft:hover{color:var(--text);background:var(--surface-3);box-shadow:none}.btn-danger{background:var(--danger);color:#fff;box-shadow:none}.btn-danger:hover{color:#fff}.btn-block{width:100%}.icon-btn{border-radius:var(--r-full);width:38px;height:38px;color:var(--text-muted);cursor:pointer;transition:background var(--t-fast), color var(--t-fast);background:0 0;border:1px solid #0000;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.lang-btn{letter-spacing:.04em;font-size:.78rem;font-weight:700}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--space-5)}.card-tight{padding:var(--space-4)}.card h2,.card h3{margin-bottom:var(--space-3)}.card-title{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.card-title h2,.card-title h3{margin:0}.card-link{transition:transform var(--t-med) var(--ease), border-color var(--t-med);text-decoration:none;display:block}.card-link:hover{border-color:var(--border-strong);color:inherit;transform:translateY(-3px)}.badge{border-radius:var(--r-full);background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);align-items:center;gap:4px;padding:2px 10px;font-size:.78rem;font-weight:600;display:inline-flex}.badge-accent{background:color-mix(in srgb, var(--accent) 16%, transparent);color:color-mix(in srgb, var(--accent) 78%, var(--text));border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.badge-success{background:color-mix(in srgb, var(--success) 16%, transparent);color:color-mix(in srgb, var(--success) 75%, var(--text));border-color:#0000}.badge-danger{background:color-mix(in srgb, var(--danger) 16%, transparent);color:color-mix(in srgb, var(--danger) 75%, var(--text));border-color:#0000}.badge-warning{background:color-mix(in srgb, var(--warning) 16%, transparent);color:color-mix(in srgb, var(--warning) 75%, var(--text));border-color:#0000}.field{margin-bottom:var(--space-4);flex-direction:column;gap:6px;display:flex}.field label{font-size:.92rem;font-weight:600}.hint{color:var(--text-muted);margin:0;font-size:.85rem}.input,.field input:not([type=checkbox]):not([type=color]):not([type=range]),.field select,.field textarea{border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--bg-elev);width:100%;min-height:44px;color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast);padding:10px 14px}.field textarea{resize:vertical;min-height:110px;font-family:var(--font-mono);font-size:.92rem}.input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);outline:none}.field-error{color:var(--danger);margin:0;font-size:.85rem}[aria-invalid=true]{border-color:var(--danger)!important}.form-row{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.form-actions{gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.toggle{align-items:center;gap:var(--space-3);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.toggle input{opacity:0;width:1px;height:1px;position:absolute}.toggle-track{border-radius:var(--r-full);background:var(--surface-3);border:1px solid var(--border-strong);width:42px;height:24px;transition:background var(--t-fast);flex:none;position:relative}.toggle-track:after{content:"";background:var(--text-muted);width:18px;height:18px;transition:transform var(--t-med) var(--ease), background var(--t-fast);border-radius:50%;position:absolute;top:2px;left:2px}.toggle input:checked+.toggle-track{background:color-mix(in srgb, var(--accent) 35%, var(--surface-3));border-color:var(--accent)}.toggle input:checked+.toggle-track:after{background:var(--accent);transform:translate(18px)}.toggle input:focus-visible+.toggle-track{outline:2px solid var(--accent);outline-offset:2px}.segmented{border-radius:var(--r-full);background:var(--surface-2);border:1px solid var(--border);flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.segment{color:var(--text-muted);border-radius:var(--r-full);cursor:pointer;transition:background var(--t-fast), color var(--t-fast);background:0 0;border:0;padding:6px 14px;font-size:.9rem;font-weight:550}.segment:hover{color:var(--text)}.segment[aria-checked=true]{background:var(--surface);color:var(--accent);box-shadow:0 1px 4px #0000002e}.table-wrap{border:1px solid var(--border);border-radius:var(--r-md);overflow-x:auto}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px}.table th{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);background:var(--surface-2);font-size:.78rem;font-weight:600}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:color-mix(in srgb, var(--surface-2) 60%, transparent)}.table .num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.table tr.is-me{background:color-mix(in srgb, var(--accent) 10%, transparent)}.stat-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.stat-tile{padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;gap:2px;display:flex}.stat-tile.accent{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 10%, var(--surface)), var(--surface))}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem}.stat-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:1.55rem;font-weight:700}.stat-tile.accent .stat-value{color:var(--accent)}.progress{border-radius:var(--r-full);background:var(--surface-3);height:8px;overflow:hidden}.progress>span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%;transition:width var(--t-med) var(--ease);display:block}.stars{gap:2px;display:inline-flex}.star{color:var(--surface-3)}.star.on{color:var(--warning)}.star.on svg{fill:currentColor}.spinner-wrap{padding:var(--space-7) 0;place-items:center;display:grid}.spinner{border:3px solid var(--surface-3);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty{align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);text-align:center;color:var(--text-muted);flex-direction:column;display:flex}.empty svg{color:var(--accent-2)}.empty-error svg{color:var(--danger)}.empty p{max-width:46ch;margin:0}.notice{gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--r-md);background:color-mix(in srgb, var(--accent-2) 10%, var(--surface));border:1px solid color-mix(in srgb, var(--accent-2) 30%, var(--border));color:var(--text);align-items:center;font-size:.93rem;display:flex}.notice[hidden]{display:none}.notice svg{color:var(--accent-2)}.notice-warning{background:color-mix(in srgb, var(--warning) 10%, var(--surface));border-color:color-mix(in srgb, var(--warning) 35%, var(--border))}.notice-warning svg{color:var(--warning)}.notice-danger{background:color-mix(in srgb, var(--danger) 10%, var(--surface));border-color:color-mix(in srgb, var(--danger) 35%, var(--border))}.notice-danger svg{color:var(--danger)}.toasts{right:var(--space-4);bottom:var(--space-4);z-index:90;gap:var(--space-2);flex-direction:column;max-width:min(380px,100vw - 32px);display:flex;position:fixed}.toast{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border-strong);box-shadow:var(--shadow);opacity:0;transition:opacity var(--t-med) var(--ease), transform var(--t-med) var(--ease);display:flex;transform:translateY(8px)}.toast.show{opacity:1;transform:none}.toast-success svg{color:var(--success)}.toast-error svg{color:var(--danger)}.toast-info svg{color:var(--accent-2)}.modal-overlay{z-index:80;padding:var(--space-4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity var(--t-med);background:#05060a99;place-items:center;display:grid;position:fixed;inset:0}.modal-overlay.show{opacity:1}.modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-lg);width:min(520px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow);transition:transform var(--t-med) var(--ease);overflow:auto;transform:translateY(10px)scale(.98)}.modal-wide{width:min(760px,100%)}.modal-overlay.show .modal{transform:none}.modal-header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);display:flex}.modal-header h2{margin:0;font-size:1.2rem}.modal-body{padding:var(--space-5)}.modal-actions{justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border);display:flex}.avatar{border-radius:14px;flex:none}.logo-base{fill:var(--surface-2)}.logo-cap{fill:var(--surface-3)}.logo-m{stroke:var(--text)}.logo-caret{fill:var(--accent);animation:1.1s step-end infinite caret-blink}.tabs{gap:var(--space-1);border-bottom:1px solid var(--border);margin-bottom:var(--space-5);scrollbar-width:none;display:flex;overflow-x:auto}.tab{align-items:center;gap:var(--space-2);color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 16px;font-weight:600;display:inline-flex}.tab:hover{color:var(--text)}.tab[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}@media (max-width:640px){.tabs{gap:0}.tab{gap:5px;padding:10px 9px;font-size:.9rem}}.chart{width:100%;height:auto;overflow:visible}.chart .grid-line{stroke:var(--border);stroke-dasharray:3 4}.chart .axis-label{fill:var(--text-faint);font-size:11px;font-family:var(--font-mono)}.chart .series-line{fill:none;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.chart .series-area{opacity:.07}.chart .dot{stroke:var(--surface);stroke-width:2px}.chart .error-mark{fill:var(--danger)}.chart-legend{gap:var(--space-4);color:var(--text-muted);margin-top:var(--space-2);flex-wrap:wrap;font-size:.85rem;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.chart-legend i{border-radius:2px;width:12px;height:3px;display:inline-block}.chart-tooltip{pointer-events:none;z-index:5;border-radius:var(--r-sm);background:var(--surface-3);border:1px solid var(--border-strong);white-space:nowrap;box-shadow:var(--shadow);padding:6px 10px;font-size:.82rem;position:absolute;transform:translate(-50%,-120%)}.chart-wrap{position:relative}.app-shell{isolation:isolate;flex-direction:column;min-height:100vh;display:flex;position:relative}.app-shell:before{content:"";z-index:-1;background:radial-gradient(800px 420px at 12% -10%, var(--glow-1), transparent 70%), radial-gradient(700px 400px at 95% 5%, var(--glow-2), transparent 70%);pointer-events:none;position:fixed;inset:0}.container{width:min(var(--container), 100% - 32px);margin-inline:auto}.narrow{width:min(720px,100% - 32px);margin-inline:auto}.main{padding:var(--space-6) 0 var(--space-8);outline:none;flex:1}.center-page{text-align:center;align-items:center;gap:var(--space-3);padding-top:var(--space-8);flex-direction:column;display:flex}.big-icon{background:var(--surface-2);width:88px;height:88px;color:var(--accent);border-radius:28px;place-items:center;display:grid}.announcement{text-align:center;background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 22%, var(--surface)), color-mix(in srgb, var(--accent-2) 22%, var(--surface)));border-bottom:1px solid var(--border);padding:8px 16px;font-size:.9rem}.site-header{z-index:50;background:color-mix(in srgb, var(--bg) 78%, transparent);-webkit-backdrop-filter:saturate(140%)blur(14px);backdrop-filter:saturate(140%)blur(14px);border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);position:sticky;top:0}.header-inner{width:min(1440px,100% - 32px);height:var(--header-h);align-items:center;gap:var(--space-4);margin-inline:auto;display:flex}.brand{letter-spacing:-.03em;flex:none;align-items:center;gap:10px;font-size:1.15rem;font-weight:700;text-decoration:none;display:inline-flex}.brand:hover{color:var(--text)}.brand-name b{color:var(--accent);font-weight:700}.main-nav{flex:auto;min-width:0}.nav-list{justify-content:center;gap:2px;margin:0;padding:0;list-style:none;display:flex}.nav-link{border-radius:var(--r-full);color:var(--text-muted);transition:color var(--t-fast), background var(--t-fast);white-space:nowrap;align-items:center;gap:7px;padding:8px 11px;font-size:.93rem;font-weight:550;text-decoration:none;display:inline-flex}.nav-link:hover,.nav-link[aria-current=page]{color:var(--text);background:var(--surface-2)}.nav-link[aria-current=page] svg{color:var(--accent)}.header-actions{align-items:center;gap:var(--space-2);flex:none;margin-left:auto;display:flex}.menu-btn{display:none}.account{position:relative}.account-trigger{cursor:pointer;border-radius:var(--r-full);background:0 0;border:0;align-items:center;gap:6px;padding:2px;display:inline-flex}.streak-chip{color:var(--warning);align-items:center;gap:2px;font-size:.8rem;font-weight:700;display:inline-flex}.account-menu{min-width:230px;padding:var(--space-2);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);box-shadow:var(--shadow);flex-direction:column;display:flex;position:absolute;top:calc(100% + 10px);right:0}.account-menu[hidden]{display:none}.account-head{padding:var(--space-2) var(--space-3) var(--space-3);border-bottom:1px solid var(--border);margin-bottom:var(--space-2);flex-direction:column;display:flex}.account-head span{color:var(--text-muted);font-size:.85rem}.account-menu a,.account-menu button{align-items:center;gap:var(--space-3);padding:9px var(--space-3);border-radius:var(--r-sm);text-align:left;cursor:pointer;color:var(--text);background:0 0;border:0;text-decoration:none;display:flex}.account-menu a:hover,.account-menu button:hover{background:var(--surface-2);color:var(--text)}.mobile-nav{display:none}.focus-mode.is-typing .site-header,.focus-mode.is-typing .announcement{opacity:.15;transition:opacity .4s var(--ease)}.focus-mode.is-typing .site-header:hover{opacity:1}.focus-mode .site-footer{display:none}.focus-mode .main{padding-bottom:var(--space-5)}.site-footer{border-top:1px solid var(--border);padding:var(--space-6) 0;margin-top:auto}.footer-inner{width:min(var(--container), 100% - 32px);gap:var(--space-5);grid-template-columns:1.4fr 1fr;align-items:start;margin-inline:auto;display:grid}.footer-brand p{color:var(--text-muted);max-width:46ch;margin-top:var(--space-3);font-size:.92rem}.footer-links{gap:var(--space-2) var(--space-5);flex-wrap:wrap;justify-content:flex-end;display:flex}.footer-links a{color:var(--text-muted);font-size:.92rem;text-decoration:none}.footer-links a:hover{color:var(--accent)}.footer-note{color:var(--text-faint);grid-column:1/-1;margin:0;font-size:.82rem}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.page-header h1{margin-bottom:var(--space-2)}.lead{color:var(--text-muted);max-width:62ch;margin:0;font-size:1.05rem}.page-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.section{margin-top:var(--space-7)}.section-title{justify-content:space-between;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.section-title h2{margin:0}.grid-2{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.grid-3{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.grid-auto{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.stack{gap:var(--space-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.row-between{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}@media (max-width:1420px){.nav-link span{display:none}.nav-link{padding:9px}.nav-link[aria-current=page]{padding:8px 12px}.nav-link[aria-current=page] span{display:inline}}@media (max-width:760px){:root{--header-h:58px}.main-nav{display:none}.menu-btn{display:inline-grid}.hide-sm{display:none!important}.mobile-nav{max-height:0;transition:max-height var(--t-med) var(--ease);border-top:1px solid #0000;display:block;overflow:hidden}.mobile-nav.open{border-top-color:var(--border);max-height:520px}.mobile-nav ul{padding:var(--space-2) var(--space-4) var(--space-4);gap:var(--space-1);grid-template-columns:1fr 1fr;margin:0;list-style:none;display:grid}.mobile-nav .nav-link{width:100%;padding:12px}.grid-2,.grid-3,.footer-inner{grid-template-columns:1fr}.footer-links{justify-content:flex-start}.main{padding-top:var(--space-5)}.page-header{margin-bottom:var(--space-5)}}.typing{gap:var(--space-4);flex-direction:column;display:flex;position:relative}.typing-hud{align-items:baseline;gap:var(--space-5);min-height:2.2rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums;display:flex}.hud-main{color:var(--accent);letter-spacing:-.03em;font-size:1.9rem;font-weight:700}.hud-item{color:var(--text-muted);font-size:.95rem}.hud-item b{color:var(--text);font-weight:600}.typing:not(.is-running) .hud-live{opacity:0}.hud-live{transition:opacity var(--t-med);gap:var(--space-5);display:flex}.typing-box{cursor:text;font-family:var(--font-mono);font-size:min(var(--typing-size), 7vw);letter-spacing:.01em;-webkit-user-select:none;user-select:none;line-height:1.7;position:relative}.typing-viewport{height:calc(1.7em * var(--lines,3));position:relative;overflow:hidden}.typing-text{color:var(--typing-untyped);transition:transform .16s var(--ease);word-break:keep-all;overflow-wrap:normal;position:relative}.typing-box.blurred .typing-text{filter:blur(3px);opacity:.5;transition:filter var(--t-med), opacity var(--t-med)}.w{white-space:pre;display:inline-block}.ch{transition:color 60ms linear;position:relative}.ch.c{color:var(--typing-correct)}.ch.x{color:var(--danger)}.ch.x.sp{background:color-mix(in srgb, var(--danger) 35%, transparent);border-radius:3px}.ch.f{color:var(--typing-correct);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--warning) 70%, transparent);text-decoration-color:color-mix(in srgb, var(--warning) 70%, transparent);text-underline-offset:5px;text-decoration-thickness:2px}.ch.shake{color:var(--danger);animation:.16s shake}@keyframes shake{0%,to{transform:none}30%{transform:translate(-2px)}70%{transform:translate(2px)}}.caret{background:var(--accent);width:2.5px;height:1.25em;box-shadow:0 0 12px color-mix(in srgb, var(--accent) 70%, transparent);will-change:transform;pointer-events:none;border-radius:2px;margin-top:.22em;transition:transform 85ms linear;position:absolute;top:0;left:0}.typing[data-caret=block] .caret{opacity:.38;width:.62em}.typing[data-caret=underline] .caret{width:.62em;height:3px;margin-top:1.38em}.typing:not(.is-running) .caret{animation:1.05s step-end infinite caret-blink}@keyframes caret-blink{50%{opacity:0}}.typing-input{opacity:0;resize:none;color:#0000;caret-color:#0000;z-index:2;cursor:text;background:0 0;border:0;width:100%;height:100%;margin:0;padding:0;font-size:16px;position:absolute;inset:0}.typing-overlay{z-index:3;font-family:var(--font-ui);color:var(--text);pointer-events:none;place-items:center;font-size:1rem;font-weight:600;display:none;position:absolute;inset:0}.typing-overlay span{align-items:center;gap:var(--space-2);border-radius:var(--r-full);background:var(--surface-2);border:1px solid var(--border-strong);box-shadow:var(--shadow);padding:10px 18px;display:inline-flex}.typing-box.blurred .typing-overlay,.typing-box.paused .typing-overlay{display:grid}.typing-foot{justify-content:space-between;align-items:center;gap:var(--space-3);color:var(--text-faint);flex-wrap:wrap;font-size:.85rem;display:flex}.typing-foot .caps{color:var(--warning);font-weight:600}.typing-progress{background:var(--surface-3);border-radius:2px;height:3px;overflow:hidden}.typing-progress>span{background:var(--accent);width:0;height:100%;transition:width .12s linear;display:block}.kb{-webkit-user-select:none;user-select:none;flex-direction:column;gap:5px;width:100%;max-width:860px;margin-inline:auto;display:flex}.kb-row{gap:5px;display:flex}.kb-row.space-row{justify-content:center}.key{--finger:var(--f-th);flex:var(--w,1) 1 0;background:color-mix(in srgb, var(--finger) 14%, var(--surface));border:1px solid color-mix(in srgb, var(--finger) 28%, var(--border));min-width:0;height:42px;font-family:var(--font-mono);color:var(--text-muted);border-bottom-width:3px;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;font-size:.82rem;transition:transform 80ms,background .12s,box-shadow .12s;display:flex;position:relative}.key .k-shift{opacity:.7;font-size:.62rem;line-height:1}.key .k-base{line-height:1.2}.key.mod{font-family:var(--font-ui);color:var(--text-faint);background:var(--surface-2);border-color:var(--border);font-size:.68rem}.key.homing:after{content:"";opacity:.6;background:currentColor;border-radius:1px;width:10px;height:2px;position:absolute;bottom:6px}.key.next{background:var(--finger);color:#111;border-color:var(--finger);box-shadow:0 0 0 3px color-mix(in srgb, var(--finger) 35%, transparent);transform:translateY(-1px)}.key.pressed{border-bottom-width:1px;transform:translateY(2px)}.key.heat{background:color-mix(in srgb, var(--danger) var(--heat,0%), var(--surface));border-color:color-mix(in srgb, var(--danger) var(--heat,0%), var(--border));color:var(--text)}.f-lp{--finger:var(--f-lp)}.f-lr{--finger:var(--f-lr)}.f-lm{--finger:var(--f-lm)}.f-li{--finger:var(--f-li)}.f-ri{--finger:var(--f-ri)}.f-rm{--finger:var(--f-rm)}.f-rr{--finger:var(--f-rr)}.f-rp{--finger:var(--f-rp)}.f-th{--finger:var(--f-th)}.kb-hint{text-align:center;color:var(--text-muted);min-height:1.3em;font-size:.85rem}.finger-legend{gap:var(--space-2) var(--space-4);color:var(--text-muted);flex-wrap:wrap;justify-content:center;font-size:.8rem;display:flex}.finger-legend span{align-items:center;gap:6px;display:inline-flex}.finger-legend i{background:var(--finger);border-radius:3px;width:10px;height:10px;display:inline-block}@media (max-width:760px){.kb{display:none}.typing-hud{gap:var(--space-4)}.hud-main{font-size:1.5rem}}@media (max-height:800px) and (min-width:761px){:is(.lesson-keyboard,.keyboard-slot) :is(.kb,.kb-row){gap:4px}:is(.lesson-keyboard,.keyboard-slot) .key{border-bottom-width:2px;height:34px}}@media (max-height:680px) and (min-width:761px){:is(.lesson-keyboard,.keyboard-slot) .key{border-radius:6px;height:28px;font-size:.74rem}:is(.lesson-keyboard,.keyboard-slot) .key .k-shift{font-size:.55rem}:is(.lesson-keyboard,.keyboard-slot) .key.homing:after{bottom:3px}}.small{font-size:.85rem}.strong{font-weight:700}.divider{border:0;border-top:1px solid var(--border);margin:var(--space-5) 0}.input-compact{border-radius:var(--r-full);border:1px solid var(--border);background:var(--surface-2);width:auto;min-height:36px;color:var(--text);padding:6px 12px}.label{font-size:.92rem;font-weight:600}.eyebrow{letter-spacing:.05em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-3);align-items:center;gap:6px;font-size:.82rem;font-weight:600;display:inline-flex}.gradient-text{background:linear-gradient(100deg, var(--accent) 10%, var(--accent-2) 90%);color:#0000;-webkit-background-clip:text;background-clip:text}.breadcrumb{margin-bottom:var(--space-4)}.breadcrumb a{color:var(--text-muted);align-items:center;gap:6px;font-size:.92rem;text-decoration:none;display:inline-flex}.breadcrumb a:hover{color:var(--accent)}.filters{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.filters .input{width:auto;min-width:180px}.field>.segmented,.field>.toggle{align-self:flex-start}.feature-icon{background:color-mix(in srgb, var(--accent) 14%, var(--surface-2));width:44px;height:44px;color:var(--accent);margin-bottom:var(--space-3);border-radius:14px;place-items:center;display:inline-grid}.guest-hint{color:var(--text-faint);margin-top:var(--space-5);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;font-size:.88rem;display:flex}.keyboard-slot{margin-top:var(--space-6)}.hero{gap:var(--space-7);padding-top:var(--space-6);grid-template-columns:1.05fr 1fr;align-items:center;display:grid}.hero-title{letter-spacing:-.04em;margin-bottom:var(--space-4);font-size:clamp(2.4rem,1.6rem + 3.6vw,4.2rem);line-height:1.02}.hero-cta{margin-top:var(--space-5)}.hero-play{padding:var(--space-5);box-shadow:var(--shadow);--typing-size:24px;position:relative;overflow:hidden}.hero-play:before{content:"";border-radius:inherit;background:linear-gradient(140deg, color-mix(in srgb, var(--accent) 60%, transparent), transparent 40%, color-mix(in srgb, var(--accent-2) 60%, transparent));-webkit-mask-composite:xor;pointer-events:none;padding:1px;position:absolute;inset:-1px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.hero-play .typing-hud{min-height:1.6rem}.hero-play .hud-main{font-size:1.3rem}.mini-result{gap:var(--space-7);margin:var(--space-4) 0 var(--space-5);display:flex}.mini-result div{flex-direction:column;display:flex}.mini-result strong{color:var(--accent);font-variant-numeric:tabular-nums;font-size:3rem;font-weight:700;line-height:1}.mini-result span{color:var(--text-muted)}.strip{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);grid-template-columns:repeat(4,1fr);display:grid;overflow:hidden}.strip-item{padding:var(--space-5);border-right:1px solid var(--border);flex-direction:column;gap:2px;display:flex}.strip-item:last-child{border-right:0}.strip-item strong{letter-spacing:-.03em;font-size:2rem;font-weight:700}.strip-item span{color:var(--text-muted);font-size:.9rem}.features .feature p{margin:0}.home-split{align-items:start}.academy-card .kb{margin:var(--space-4) 0 var(--space-3)}.academy-card .key{height:30px;font-size:.66rem}.academy-card .btn{margin-top:var(--space-4)}.podium-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.podium-list li{align-items:center;gap:var(--space-3);border-radius:var(--r-sm);background:var(--surface-2);padding:10px 12px;display:flex}.podium-list.compact li{padding:6px 10px;font-size:.9rem}.podium-rank{background:var(--surface-3);min-width:28px;height:28px;font-weight:700;font-family:var(--font-mono);border-radius:9px;place-items:center;font-size:.85rem;display:inline-grid}.podium-list li:first-child .podium-rank,.medal-1{color:#2a2000;background:#f5c518}.podium-list li:nth-child(2) .podium-rank,.medal-2{color:#1c1f26;background:#c7ccd6}.podium-list li:nth-child(3) .podium-rank,.medal-3{color:#241205;background:#d08a4f}.podium-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin-left:auto}.medal{border-radius:8px;place-items:center;width:26px;height:26px;font-weight:700;display:inline-grid}.user-cell{align-items:center;gap:6px;display:inline-flex}.cta-band{justify-content:space-between;align-items:center;gap:var(--space-5);padding:var(--space-6);border-radius:var(--r-xl);border:1px solid var(--border);background:radial-gradient(600px 200px at 0% 0%, var(--glow-1), transparent), radial-gradient(500px 200px at 100% 100%, var(--glow-2), transparent), var(--surface);flex-wrap:wrap;display:flex}.cta-band h2{margin-bottom:var(--space-2)}.cta-band p{margin:0}.test-page{max-width:1040px}.test-config{justify-content:center;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);transition:opacity .4s var(--ease);flex-wrap:wrap;display:flex}.is-typing .test-config,.is-typing .practice-bar,.is-typing .guest-hint{opacity:.12}.is-typing .test-config:hover{opacity:1}.test-stage{min-height:260px}.practice-options{gap:var(--space-3);margin-bottom:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(190px,1fr));display:grid}.option-card{text-align:left;padding:var(--space-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);cursor:pointer;transition:border-color var(--t-fast), transform var(--t-fast);flex-direction:column;align-items:flex-start;gap:4px;display:flex}.option-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.option-card[aria-checked=true]{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent)}.option-card .feature-icon{width:36px;height:36px;margin-bottom:var(--space-2)}.option-card .muted{font-size:.85rem}.practice-settings{gap:var(--space-4);flex-direction:column;align-items:flex-start;display:flex}.practice-settings .field{width:100%;margin:0}.practice-bar{margin-bottom:var(--space-4)}.result{gap:var(--space-5);animation:rise .36s var(--ease);flex-direction:column;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.result-badges{gap:var(--space-2)}.result-hero{gap:var(--space-5);grid-template-columns:240px 1fr;align-items:stretch;display:grid}.result-primary{padding:var(--space-5);border-radius:var(--r-lg);background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 18%, var(--surface)), var(--surface));border:1px solid color-mix(in srgb, var(--accent) 40%, var(--border));flex-direction:column;justify-content:center;display:flex}.result-wpm{letter-spacing:-.05em;color:var(--accent);font-variant-numeric:tabular-nums;font-size:5rem;font-weight:700;line-height:1}.result-sub{color:var(--text-muted);margin-top:var(--space-2)}.result-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.result-grid .stat-value{font-size:1.3rem}.result-actions{justify-content:center}.formula{color:var(--text-muted);font-size:.9rem}.formula summary{cursor:pointer}.rewards{gap:var(--space-3);flex-direction:column;display:flex}.achievement-unlocks{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.achievement-unlocks h3{grid-column:1/-1;margin:0}.unlock{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--r-md);background:var(--surface-2);animation:pop .42s var(--ease);display:flex}.unlock p{margin:0;font-size:.85rem}.unlock-icon{background:color-mix(in srgb, var(--warning) 18%, var(--surface-3));width:42px;height:42px;color:var(--warning);border-radius:12px;place-items:center;display:inline-grid}@keyframes pop{0%{opacity:0;transform:scale(.9)}60%{transform:scale(1.03)}to{opacity:1;transform:none}}.course-head{gap:var(--space-5);grid-template-columns:1.4fr 1fr;align-items:center;display:grid}.course-head p{margin:0}.course-progress{gap:var(--space-3);flex-direction:column;display:flex}.tier-dot{vertical-align:middle;border-radius:50%;width:12px;height:12px;margin-right:10px;display:inline-block}.tier-beginner{--tier:var(--f-li)}.tier-basic{--tier:var(--f-ri)}.tier-intermediate{--tier:var(--f-rm)}.tier-advanced{--tier:var(--f-rr)}.tier-expert{--tier:var(--f-lp)}.tier-dot{background:var(--tier)}.tier-badge{background:color-mix(in srgb, var(--tier) 18%, transparent);color:color-mix(in srgb, var(--tier) 45%, var(--text));border-color:#0000}.lesson-list{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));margin:0;padding:0;list-style:none;display:grid}.lesson-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);transition:border-color var(--t-fast), transform var(--t-fast);text-decoration:none;display:flex}.lesson-item:hover{border-color:var(--border-strong);color:inherit;transform:translate(3px)}.lesson-item.done{border-color:color-mix(in srgb, var(--success) 35%, var(--border))}.lesson-index{background:var(--surface-2);width:34px;height:34px;font-family:var(--font-mono);border-radius:10px;flex:none;place-items:center;font-size:.85rem;font-weight:700;display:inline-grid}.lesson-item.done .lesson-index{background:color-mix(in srgb, var(--success) 20%, var(--surface-2));color:var(--success)}.lesson-info{flex-direction:column;flex:1;min-width:0;display:flex}.lesson-info strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.lesson-info .muted{font-size:.82rem}.lesson-head{margin-bottom:var(--space-4)}.lesson-head h1{margin-top:var(--space-2);font-size:clamp(1.6rem,2.6vw,2.1rem)}.lesson-meta .lesson-target{font-size:.85rem}.lesson-info-toggle{border:1px solid var(--border);border-radius:var(--r-full);background:var(--surface);color:var(--text-muted);font:inherit;cursor:pointer;transition:color var(--t-fast), border-color var(--t-fast);align-items:center;gap:6px;margin-left:auto;padding:4px 12px;font-size:.85rem;display:inline-flex}.lesson-info-toggle:hover{color:var(--text);border-color:var(--border-strong)}.lesson-info-toggle svg:last-child{transition:transform var(--t-fast);transform:rotate(90deg)}.lesson-info-toggle[aria-expanded=true] svg:last-child{transform:rotate(-90deg)}.lesson-info-grid[hidden]{display:none}.lesson-info-grid:not([hidden]){margin-bottom:var(--space-2)}.lesson-practice.section{margin-top:var(--space-5)}.lesson-practice{scroll-margin-top:calc(var(--header-h) + var(--space-3))}.lesson-info-grid h2{align-items:center;gap:var(--space-2);font-size:1.1rem;display:flex}.key-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.key-chip{border-radius:var(--r-full);background:color-mix(in srgb, var(--finger) 15%, var(--surface-2));align-items:center;gap:8px;padding:4px 10px 4px 4px;font-size:.85rem;display:inline-flex}.key-chip kbd{background:var(--finger);color:#111;text-align:center;border-color:#0000;min-width:26px;font-size:.9rem}.stepper{gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.step{border:1px solid var(--border-strong);background:var(--surface);width:38px;height:38px;color:var(--text-muted);cursor:pointer;border-radius:12px;place-items:center;font-weight:700;display:inline-grid}.step.done{background:color-mix(in srgb, var(--success) 18%, var(--surface));color:var(--success);border-color:#0000}.step.active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent)}.lesson-keyboard{margin-top:var(--space-6);gap:var(--space-3);flex-direction:column;display:flex}.lesson-keyboard[hidden]{display:none}@media (max-height:800px) and (min-width:761px){.lesson-keyboard{margin-top:var(--space-4);gap:var(--space-2)}}@media (max-height:680px) and (min-width:761px){.lesson-keyboard{margin-top:var(--space-3)}}.lesson-page .breadcrumb,.lesson-info-grid{max-height:60rem;transition:max-height .38s var(--ease), opacity .24s var(--ease), margin .38s var(--ease);overflow:hidden}.lesson-head{transition:margin .38s var(--ease)}.lesson-page.is-practicing .breadcrumb,.is-practicing .lesson-info-grid{opacity:0;max-height:0;margin-bottom:0}.is-practicing .lesson-head{margin-bottom:var(--space-3)}.is-practicing .lesson-head .row{display:none}.is-practicing .lesson-head h1{transition:font-size .38s var(--ease);margin-top:0;font-size:1.25rem}.is-practicing .lesson-practice.section{margin-top:var(--space-4)}@media (prefers-reduced-motion:reduce){.lesson-page .breadcrumb,.lesson-info-grid,.lesson-head,.is-practicing .lesson-head h1{transition:none}}.evaluation.passed{border-color:color-mix(in srgb, var(--success) 40%, var(--border))}.evaluation.failed{border-color:color-mix(in srgb, var(--danger) 40%, var(--border))}.evaluation h2{margin:0}.games-grid .game-tile{gap:var(--space-2);flex-direction:column;display:flex}.game-tile p{flex:1}.game-art{border-radius:var(--r-md);height:140px;margin-bottom:var(--space-3);background:radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--accent) 30%, transparent), transparent 60%), radial-gradient(circle at 70% 70%, color-mix(in srgb, var(--accent-2) 30%, transparent), transparent 60%), var(--surface-2);color:var(--text);place-items:center;display:grid}.game-art.big{width:100%;height:180px}.game-layout{gap:var(--space-5);grid-template-columns:minmax(0,1fr) 300px;align-items:start;display:grid}.game-stage{min-height:460px}.game-start{align-items:center;gap:var(--space-4);text-align:center;flex-direction:column;display:flex}.game-start p{max-width:54ch}.game{gap:var(--space-3);flex-direction:column;display:flex;position:relative}.game-hud{gap:var(--space-5);font-family:var(--font-mono);color:var(--text-muted);flex-wrap:wrap;display:flex}.game-hud span{align-items:baseline;gap:8px;display:inline-flex}.game-hud b{color:var(--text);font-size:1.25rem}.hearts{letter-spacing:2px;color:var(--danger)!important}.game-canvas-wrap{border-radius:var(--r-lg);border:1px solid var(--border);background:var(--bg-elev);height:min(62vh,520px);position:relative;overflow:hidden}.game-canvas{width:100%;height:100%;display:block}.game-over{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;display:flex}.game-highlight{padding:var(--space-3) var(--space-5);border-radius:var(--r-md);background:var(--surface-2);flex-direction:column;align-items:center;gap:4px;display:flex}.game-highlight strong{font-size:1.35rem}.game-highlight span{color:var(--text-muted);font-size:.92rem}.game-highlight.tone-gold svg{color:#f5c518}.game-highlight.tone-silver svg{color:#aeb5c2}.game-highlight.tone-bronze svg{color:#d08a4f}.game-highlight.tone-muted svg{color:var(--text-faint)}.game-board h2{align-items:center;gap:var(--space-2);font-size:1.1rem;display:flex}.challenge-card{gap:var(--space-2);flex-direction:column;display:flex}.challenge-card h3{margin:var(--space-2) 0 0}.challenge-card p{flex-wrap:wrap;align-items:center;gap:4px;margin:0;display:inline-flex}.room-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.room{align-items:center;gap:var(--space-3);border-radius:var(--r-sm);background:var(--surface-2);flex-wrap:wrap;padding:10px 12px;display:flex}.room .btn{margin-left:auto}.race-controls{margin-bottom:var(--space-5)}.race-preview{text-align:center;max-width:60ch;color:var(--text-faint);filter:blur(2px);font-family:var(--font-mono)}.race-result{align-items:center;gap:var(--space-4);display:flex}.stats-page .filters strong{align-items:center;display:inline-flex}.recs{margin:var(--space-4) 0;gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.rec{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--r-md);background:var(--surface-2);flex-wrap:wrap;display:flex}.rec p{flex:12rem;min-width:0;margin:0}.rec .btn{margin-left:auto}.rec-icon{background:color-mix(in srgb, var(--accent-2) 18%, var(--surface-3));width:36px;height:36px;color:var(--accent-2);border-radius:10px;flex:none;place-items:center;display:inline-grid}.weak-lists h3{margin-bottom:var(--space-2);font-size:.95rem}.weak-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.weak-list li{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.achievements-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.achievement{padding:var(--space-4);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border);opacity:.7;flex-direction:column;gap:6px;display:flex}.achievement.unlocked{opacity:1;border-color:color-mix(in srgb, var(--warning) 35%, var(--border))}.achievement-icon{background:var(--surface-3);width:40px;height:40px;color:var(--text-faint);border-radius:12px;place-items:center;display:inline-grid}.achievement.unlocked .achievement-icon{background:color-mix(in srgb, var(--warning) 20%, var(--surface-3));color:var(--warning)}.level-card h2{margin:0}.level-card .progress{margin:var(--space-3) 0 var(--space-2)}.profile-hero{gap:var(--space-5);flex-wrap:wrap;align-items:flex-start;display:flex}.profile-hero .avatar{border-radius:26px}.profile-id{gap:var(--space-2);flex-direction:column;flex:1;min-width:240px;display:flex}.profile-id h1,.profile-id p{margin:0}.narrow-wide{width:min(880px,100% - 32px);margin-inline:auto}.settings-section h2{align-items:center;gap:var(--space-2);font-size:1.2rem;display:flex}.settings-section h3{margin-top:var(--space-4);font-size:1rem}.theme-grid{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(130px,1fr));display:grid}.theme-option{padding:var(--space-3);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:6px;display:flex}.theme-option[aria-checked=true]{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent)}.theme-option.locked{cursor:not-allowed;opacity:.55}.theme-option .small{align-items:center;gap:4px;display:inline-flex}.theme-swatch{border:1px solid #7f7f7f40;border-radius:10px;justify-content:flex-end;align-items:flex-end;gap:6px;width:100%;height:46px;padding:6px;display:flex}.theme-swatch i{border-radius:50%;width:14px;height:14px;display:inline-block}.avatar-picker,.color-picker{gap:var(--space-2);flex-wrap:wrap;display:flex}.avatar-option{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:16px;padding:3px}.avatar-option[aria-checked=true]{border-color:var(--accent)}.color-option{border:3px solid var(--surface);width:32px;height:32px;box-shadow:0 0 0 1px var(--border-strong);cursor:pointer;border-radius:50%}.color-option[aria-checked=true]{box-shadow:0 0 0 3px var(--accent)}input[type=color]{border:1px solid var(--border-strong);border-radius:var(--r-sm);cursor:pointer;background:0 0;width:48px;height:36px;padding:0}input[type=range]{accent-color:var(--accent);width:220px}.danger-zone{margin-top:var(--space-6);padding:var(--space-4);border-radius:var(--r-md);border:1px solid color-mix(in srgb, var(--danger) 40%, var(--border));background:color-mix(in srgb, var(--danger) 6%, transparent)}.danger-zone h3{color:var(--danger);margin-top:0}.auth-page{padding:var(--space-6) var(--space-4);place-items:center;display:grid}.auth-card{width:min(440px,100%);padding:var(--space-6);box-shadow:var(--shadow)}.auth-card h1{font-size:1.7rem}.auth-logo{margin-bottom:var(--space-4)}.auth-form{margin-top:var(--space-5)}.auth-switch{text-align:center;margin:var(--space-5) 0 0;color:var(--text-muted)}.strength{margin:-8px 0 var(--space-3);font-size:.85rem;font-weight:600;display:block}.strength[data-level=weak]{color:var(--danger)}.strength[data-level=fair]{color:var(--warning)}.strength[data-level=strong]{color:var(--success)}.cert-eligible,.cert-list,.requirements{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cert-eligible li,.cert-list li{align-items:center;gap:var(--space-3);border-radius:var(--r-sm);background:var(--surface-2);flex-wrap:wrap;padding:10px 12px;display:flex}.cert-eligible .btn,.cert-list .btn{margin-left:auto}.cert-list li.revoked{opacity:.6}.verify-form{gap:var(--space-3);flex-wrap:wrap;align-items:flex-end;display:flex}.verify-form .field{flex:1;margin:0}.certificate{padding:var(--space-7) var(--space-6);border-radius:var(--r-xl);text-align:center;background:radial-gradient(500px 220px at 50% 0%, var(--glow-1), transparent), var(--surface);border:2px solid color-mix(in srgb, var(--accent) 40%, var(--border));margin-bottom:var(--space-4);position:relative}.certificate.revoked{border-color:var(--danger);filter:grayscale(.6)}.cert-top{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;display:flex}.cert-kicker{text-transform:uppercase;letter-spacing:.18em;color:var(--accent);font-weight:700}.cert-name{margin:var(--space-2) 0 var(--space-4);font-size:clamp(1.8rem,1.4rem + 2vw,2.6rem)}.cert-speed{font-size:1.4rem}.cert-speed strong{color:var(--accent);letter-spacing:-.04em;font-size:3.4rem}.cert-meta{justify-content:center;gap:var(--space-7);margin:var(--space-6) 0 var(--space-4);flex-wrap:wrap;display:flex}.cert-meta div{flex-direction:column;display:flex}.cert-disclaimer{max-width:56ch;margin:var(--space-4) auto 0}.admin-toolbar{margin-bottom:var(--space-4)}.admin-toolbar .input{width:auto;min-width:200px}.admin-page .table td{text-overflow:ellipsis;max-width:320px;overflow:hidden}.pager{margin-top:var(--space-3)}@media (max-width:960px){.hero{gap:var(--space-5);grid-template-columns:1fr}.game-layout,.result-hero,.course-head{grid-template-columns:1fr}}@media (max-width:760px){.strip{grid-template-columns:repeat(2,1fr)}.strip-item:nth-child(2){border-right:0}.strip-item:nth-child(-n+2){border-bottom:1px solid var(--border)}.result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.result-wpm{font-size:4rem}.lesson-list{grid-template-columns:1fr}.cta-band{padding:var(--space-5)}.certificate{padding:var(--space-5) var(--space-4)}}@media print{.site-header,.site-footer,.announcement,.no-print,.toasts,.skip-link{display:none!important}.app-shell:before{display:none}body{color:#111;background:#fff}.main{padding:0}.certificate{background:#fff;border-color:#333}}.rt{--rt-grass:color-mix(in srgb, #4fae4f 80%, var(--bg));--rt-grass-dark:color-mix(in srgb, #2f7d34 82%, var(--bg));--rt-asphalt:#3b3f47;--rt-asphalt-2:#2f3239;--rt-line:#ffffff8c;--rt-car-width:92px;--rt-lane-height:68px;border-radius:var(--r-lg);border:1px solid var(--border);background:var(--rt-grass);box-shadow:var(--shadow);-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.rt [hidden]{display:none!important}.rt-stands{background:radial-gradient(circle at 5px 7px,#ffd43b 2.4px,#0000 2.9px) 0 3px/19px 12px,radial-gradient(circle at 13px 8px,#74c0fc 2.4px,#0000 2.9px) 0 3px/23px 12px,radial-gradient(circle at 9px 5px,#ff8787 2.4px,#0000 2.9px) 0 3px/29px 12px,radial-gradient(circle at 15px 6px,#f8f9fa 2.2px,#0000 2.7px) 0 3px/17px 12px,linear-gradient(#545c6f,#3c4250 70%,#2f3440);height:36px;position:relative}.rt-bunting{z-index:1;gap:6px;padding-left:4px;display:flex;position:absolute;bottom:-10px;left:0;right:0;overflow:hidden}.rt-bunting:before{content:"";background:#fff9;height:1px;position:absolute;inset:0 0 auto}.rt-bunting i{border-inline:7px solid #0000;border-top:10px solid #ff6b6b;flex:none;width:0;height:0}.rt-bunting i:nth-child(4n+2){border-top-color:#ffd43b}.rt-bunting i:nth-child(4n+3){border-top-color:#4dabf7}.rt-bunting i:nth-child(4n+4){border-top-color:#69db7c}.rt-road{background:linear-gradient(180deg, var(--rt-asphalt), var(--rt-asphalt-2));border-block:6px solid #0000;border-image:repeating-linear-gradient(90deg,#e03131 0 18px,#f8f9fa 18px 36px) 6;margin-top:16px;position:relative}.rt-start,.rt-finish{pointer-events:none;position:absolute;top:0;bottom:0}.rt-start{left:var(--rt-start,120px);opacity:.8;background:repeating-conic-gradient(#f8f9fa 0 25%, #1f2125 0 50%) 0 0 / 8px 8px;width:8px}.rt-finish{right:var(--rt-finish,36px);background:repeating-conic-gradient(#f8f9fa 0 25%, #1f2125 0 50%) 0 0 / 14px 14px;width:14px}.rt-verge{background:radial-gradient(circle at 14px 15px, var(--rt-grass-dark) 9px, transparent 9.5px) 0 0 / 74px 22px, radial-gradient(circle at 46px 17px, var(--rt-grass-dark) 7px, transparent 7.5px) 0 0 / 74px 22px;height:22px}.rt-lane{height:var(--rt-lane-height);position:relative}.rt-lane+.rt-lane:before{content:"";background:linear-gradient(90deg, var(--rt-line) 0 55%, transparent 55%) 0 0 / 36px 2px repeat-x;height:2px;position:absolute;inset:-1px 0 auto}.rt-lane.is-me{background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 26%, transparent), transparent 75%)}.rt-lane-num{font:700 .85rem var(--font-mono);color:#ffffff73;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:9px}.rt-lane.is-out .rt-runner{opacity:.45;filter:grayscale()}.rt-runner{z-index:1;will-change:transform;flex-direction:column;align-items:flex-start;display:flex;position:absolute;bottom:3px;left:0}.rt-label{white-space:nowrap;align-items:center;gap:6px;margin:0 0 1px 4px;display:flex}.rt-tag{text-overflow:ellipsis;border-radius:var(--r-full);max-width:170px;font:600 .72rem var(--font-ui);color:#fff;background:#00000080;align-items:baseline;gap:5px;padding:1px 8px;display:inline-flex;overflow:hidden}.rt-tag small{opacity:.8;font-size:.62rem;font-weight:500}.rt-lane.is-me .rt-tag{background:var(--accent);color:var(--accent-contrast)}.rt-stat{font:600 .68rem var(--font-mono);color:#ffffffd9;text-shadow:0 1px 2px #0009}.rt-place{width:24px;height:24px;font:700 .8rem var(--font-mono);color:#343a40;animation:pop .42s var(--ease);background:#f1f3f5;border-radius:50%;place-items:center;margin-block:auto;display:grid;position:absolute;top:0;bottom:0;right:6px;box-shadow:0 2px 6px #0006}.car{width:var(--rt-car-width);height:auto;display:block;overflow:visible}.car-body{fill:var(--car,var(--accent))}.car-shade{fill:color-mix(in srgb, var(--car,var(--accent)) 68%, #000)}.car-arch{fill:color-mix(in srgb, var(--car,var(--accent)) 35%, #000)}.car-trim{fill:color-mix(in srgb, var(--car,var(--accent)) 50%, #111)}.car-stripe{fill:#ffffffd9}.car-glass{fill:#a5d8ff}.car-shine{fill:#fff9}.car-helmet{fill:#f8f9fa}.car-visor{fill:#212529}.car-roundel{fill:#fff}.car-number{font:700 9px var(--font-mono);text-anchor:middle;fill:#1f2125}.car-light{fill:#ffe066}.car-tail{fill:#ff6b6b}.car-tire{fill:#1d1f24}.car-rim{fill:#ced4da}.car-spokes{fill:none;stroke:#868e96;stroke-width:1.6px}.car-hub{fill:#495057}.car-shadow{fill:#00000052}.rt-runner.is-moving .car-chassis{animation:.24s ease-in-out infinite alternate car-bounce}@keyframes car-bounce{to{transform:translateY(-1.3px)}}.rt-puffs{position:absolute;bottom:14px;left:2px}.rt-puffs i{opacity:0;background:#fff9;border-radius:50%;width:8px;height:8px;position:absolute}.rt-runner.is-moving .rt-puffs i{animation:.7s ease-out infinite car-puff}.rt-runner.is-moving .rt-puffs i:nth-child(2){animation-delay:.23s}.rt-runner.is-moving .rt-puffs i:nth-child(3){animation-delay:.46s}@keyframes car-puff{0%{opacity:.7;transform:translate(0)scale(.4)}to{opacity:0;transform:translate(-28px,-8px)scale(1.7)}}.rt-runner.is-fast:before{content:"";background:repeating-linear-gradient(#fff6 0 2px,#0000 2px 5px);width:64px;height:16px;position:absolute;bottom:14px;right:calc(100% - 8px);-webkit-mask-image:linear-gradient(90deg,#0000,#000);mask-image:linear-gradient(90deg,#0000,#000)}.rt-lights{z-index:5;background:#1b1d22;border:2px solid #3a3f48;border-radius:18px;align-items:center;gap:10px;padding:10px 16px;display:flex;position:absolute;top:50%;left:50%;translate:-50% -42%;box-shadow:0 14px 34px #00000080}.rt-lights i{background:#3b1f22;border-radius:50%;width:26px;height:26px;transition:background .12s,box-shadow .12s;box-shadow:inset 0 2px 5px #000000b3}.rt-lights strong{min-width:2.4ch;font:800 1.6rem var(--font-mono);color:#fff;text-align:center}.rt-lights[data-step="1"] i:nth-child(-n+1),.rt-lights[data-step="2"] i:nth-child(-n+2),.rt-lights[data-step="3"] i:nth-child(-n+3){background:#ff3b3b;box-shadow:0 0 16px #ff3b3b,inset 0 -2px 4px #0000004d}.rt-lights[data-step="4"] i{background:#2ee66b;box-shadow:0 0 18px #2ee66b}.rt-lights[data-step="4"] strong{color:#2ee66b}.game-setup{align-items:center;gap:var(--space-3);flex-direction:column;width:100%;max-width:640px;display:flex}.rally-levels{grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;width:100%;display:grid}.rally-level{--hue:calc(140 - var(--tier) * 15);border-radius:var(--r-sm);border:1px solid hsl(var(--hue) 60% 45% / .45);background:hsl(var(--hue) 70% 50% / .12);color:var(--text);cursor:pointer;transition:transform .12s var(--ease), background .12s, box-shadow .12s;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;display:flex}.rally-level strong{font:700 1.05rem var(--font-mono)}.rally-level small{font:500 .62rem var(--font-mono);color:var(--text-muted);white-space:nowrap}.rally-level:hover{transform:translateY(-2px)}.rally-level[aria-checked=true]{background:hsl(var(--hue) 62% 28%);color:#fff;box-shadow:0 6px 16px hsl(var(--hue) 60% 40% / .4);border-color:#0000;transform:translateY(-2px)}.rally-level[aria-checked=true] small{color:#fff}.rally-level-info{text-align:center;color:var(--text-muted);margin:0}.rally-level-info strong{color:var(--text)}.rally-stage{min-height:150px}.race-page .rt,.race-page .race-stage:not(:empty){margin-bottom:var(--space-5)}.race-controls>*+*{margin-top:var(--space-3)}.podium-list li.is-me{outline:2px solid var(--accent)}@media (max-width:640px){.rally-levels{grid-template-columns:repeat(5,minmax(0,1fr))}.rt{--rt-car-width:64px;--rt-lane-height:54px}.rt-tag{max-width:110px;font-size:.66rem}.rt-stat{display:none}.rt-lights i{width:20px;height:20px}}@media (prefers-reduced-motion:reduce){.rt-runner.is-moving .car-chassis,.rt-runner.is-moving .rt-puffs i,.rt-place{animation:none}.rt-runner.is-fast:before{display:none}}.kt-sky{border-radius:var(--r-lg);border:1px solid var(--border);background:linear-gradient(180deg, color-mix(in srgb, #5cb8ff 82%, var(--bg)) 0%, color-mix(in srgb, #a9dcff 82%, var(--bg)) 62%, color-mix(in srgb, #e3f4ff 82%, var(--bg)) 100%);height:min(62vh,520px);min-height:380px;box-shadow:var(--shadow);-webkit-user-select:none;user-select:none;cursor:text;position:relative;overflow:hidden}.kt-sun{background:radial-gradient(circle at 40% 40%,#fff7c2,#ffd43b 55%,#fab005);border-radius:50%;width:74px;height:74px;position:absolute;top:26px;right:34px;box-shadow:0 0 40px 12px #ffd43b73}.kt-cloud{--y:60px;--scale:1;--dur:70s;--delay:0s;top:var(--y);width:130px;height:38px;scale:var(--scale);animation:kt-drift var(--dur) linear var(--delay) infinite;background:#ffffffe6;border-radius:40px;position:absolute;left:-180px}.kt-cloud:before,.kt-cloud:after{content:"";background:inherit;border-radius:50%;position:absolute}.kt-cloud:before{width:56px;height:56px;top:-28px;left:18px}.kt-cloud:after{width:42px;height:42px;top:-18px;left:62px}.kt-cloud-0{--y:70px;--dur:64s;--delay:-10s}.kt-cloud-1{--y:160px;--scale:.7;--dur:82s;--delay:-50s}.kt-cloud-2{--y:250px;--scale:1.2;--dur:96s;--delay:-30s;opacity:.8}.kt-cloud-3{--y:40px;--scale:.55;--dur:58s;--delay:-40s;opacity:.85}@keyframes kt-drift{to{translate:calc(100cqw + 360px)}}.kt-sky{container-type:inline-size}.kt-hills{background:radial-gradient(60% 120% at 20% 100%, color-mix(in srgb, #51cf66 85%, var(--bg)) 60%, transparent 61%), radial-gradient(55% 110% at 75% 100%, color-mix(in srgb, #40c057 85%, var(--bg)) 60%, transparent 61%), radial-gradient(40% 90% at 50% 100%, color-mix(in srgb, #69db7c 85%, var(--bg)) 60%, transparent 61%);height:70px;position:absolute;bottom:-1px;left:-10%;right:-10%}.kt-kite{z-index:1;will-change:transform;transform-origin:50% 30%;position:absolute;top:0;left:0}.kt-shape{filter:drop-shadow(0 6px 8px #00000029);width:100%;height:auto;display:block;overflow:visible}.kt-dark{fill:var(--kite)}.kt-light{fill:color-mix(in srgb, var(--kite) 55%, #fff)}.kt-edge{fill:none;stroke:color-mix(in srgb, var(--kite) 60%, #000);stroke-width:1.6px;stroke-linejoin:round}.kt-spar{fill:none;stroke:#8a6a3d;stroke-width:2px;stroke-linecap:round}.kt-heart{fill:#ff6b6b;stroke:#fff;stroke-width:1.5px}.kt-string{fill:none;stroke:color-mix(in srgb, var(--text-faint) 70%, #fff);stroke-width:1.6px}.kt-bow-a{fill:var(--kite)}.kt-bow-b{fill:color-mix(in srgb, var(--kite) 55%, #fff)}.kt-tail{transform-origin:50px 122px;animation:1.6s ease-in-out infinite alternate kt-tail}@keyframes kt-tail{0%{rotate:-9deg}to{rotate:9deg}}.kt-word{font:700 19px var(--font-mono);color:#fff;letter-spacing:.02em;text-shadow:0 1px 2px #00000059;white-space:nowrap;background:#0000005c;border-radius:9px;padding:3px 8px;display:flex;position:absolute;top:27%;left:50%;translate:-50% -50%}.kt-word span.done{color:#1d1f24;text-shadow:none;background:#fff;border-radius:3px}.kt-word.wiggle{animation:.3s ease-in-out kt-wiggle}@keyframes kt-wiggle{30%{rotate:-4deg}70%{rotate:4deg}}.kt-kite.is-target{z-index:2}.kt-kite.is-target .kt-shape{filter:drop-shadow(0 0 10px #fffffff2)drop-shadow(0 6px 8px #0003)}.kt-kite.is-target .kt-word{background:#00000080;outline:2px solid #fff}.kt-kite.is-caught{animation:.62s ease-in-out forwards kt-catch}@keyframes kt-catch{to{opacity:0;translate:0 -30px;rotate:200deg;scale:.35}}.kt-sparkles{z-index:3;pointer-events:none;width:0;height:0;position:absolute}.kt-sparkles i{text-shadow:0 0 6px #ffffffe6;font-size:15px;font-style:normal;animation:1s ease-out forwards kt-sparkle;position:absolute;top:-10px;left:-7px}@keyframes kt-sparkle{0%{opacity:0;transform:translate(0)scale(.4)}30%{opacity:1}to{transform:translate(var(--dx), var(--dy)) scale(1);opacity:0}}.kt-points{font:800 1.3rem var(--font-mono);color:#fff;white-space:nowrap;text-shadow:0 2px 6px #00000073;animation:1s ease-out forwards kt-float;position:absolute;top:0;left:0;translate:-50% -50%}@keyframes kt-float{0%{opacity:0;transform:translateY(0)scale(.85)}20%{opacity:1;transform:translateY(-8px)}to{opacity:0;transform:translateY(-46px)}}.kt-banner{z-index:4;border-radius:var(--r-lg);color:#1d1f24;text-align:center;opacity:0;pointer-events:none;background:#ffffffe0;flex-direction:column;align-items:center;gap:4px;padding:14px 26px;transition:opacity .25s;display:flex;position:absolute;top:42%;left:50%;translate:-50% -50%;box-shadow:0 12px 30px #0000002e}.kt-banner.show{animation:pop .42s var(--ease);opacity:1}.kt-banner strong{font-size:1.6rem}.kt-banner span{color:#495057;max-width:34ch;font-size:.95rem}.game-kites .kt-combo b{transition:color .15s}.game-kites .kt-combo.is-on b{color:var(--accent)}.game-kites .hearts{color:#ff4d6d;letter-spacing:2px}@media (max-width:640px){.kt-sky{height:56vh;min-height:340px}.kt-word{font-size:16px}.kt-sun{width:52px;height:52px}}@media (prefers-reduced-motion:reduce){.kt-cloud{animation:none;left:10%}.kt-tail{animation:none}.kt-sparkles i,.kt-points,.kt-kite.is-caught,.kt-word.wiggle{animation-duration:1ms}}.ic-scene{border-radius:var(--r-lg);border:1px solid var(--border);height:min(64vh,540px);min-height:440px;box-shadow:var(--shadow);background:linear-gradient(180deg, color-mix(in srgb, #8fd3ff 85%, var(--bg)), color-mix(in srgb, #d6f0ff 85%, var(--bg)) 22%);-webkit-user-select:none;user-select:none;cursor:text;position:relative;overflow:hidden;container-type:inline-size}.ic-sky{height:16%;position:absolute;inset:0 0 auto}.ic-sun{background:radial-gradient(circle at 40% 40%,#fff7c2,#ffd43b 60%,#fab005);border-radius:50%;width:46px;height:46px;position:absolute;top:10px;right:7%;box-shadow:0 0 28px 8px #ffd43b73}.ic-cloud{background:#ffffffeb;border-radius:30px;width:92px;height:26px;animation:64s linear infinite ic-drift;position:absolute;left:-130px}.ic-cloud:before{content:"";background:inherit;border-radius:50%;width:38px;height:38px;position:absolute;top:-18px;left:18px}.ic-cloud-0{animation-delay:-18s;top:26px}.ic-cloud-1{animation-duration:86s;animation-delay:-60s;top:44px;scale:.7}@keyframes ic-drift{to{translate:calc(100cqw + 260px)}}.ic-shop{position:absolute;inset:14% 0 34%}.ic-shop:before{content:"";background:repeating-linear-gradient(90deg, transparent 0 62px, #00000009 62px 64px), color-mix(in srgb, #fff4e6 90%, var(--bg));position:absolute;inset:58px 0 0}.ic-awning{z-index:1;background:repeating-linear-gradient(90deg,#ff8fab 0 36px,#fff 36px 72px);height:58px;position:absolute;inset:0 0 auto;box-shadow:0 6px 10px #0000001f}.ic-awning:after{content:"";background:radial-gradient(18px 14px at 18px 0,#ff8fab 96%,#0000 100%) 0 0/72px 14px repeat-x,radial-gradient(18px 14px at 54px 0,#fff 96%,#0000 100%) 0 0/72px 14px repeat-x;height:14px;position:absolute;bottom:-14px;left:0;right:0}.ic-sign{z-index:2;color:#e64980;font:800 1.05rem var(--font-ui);letter-spacing:.08em;text-transform:uppercase;background:#fff;border-radius:12px;padding:5px 20px;position:absolute;top:9px;left:50%;translate:-50%;box-shadow:0 3px #f783ac,0 8px 14px #00000024}.ic-window{background:linear-gradient(#e7f5ff,#d0ebff);border:6px solid #ffd8a8;border-radius:14px;position:absolute;inset:84px 9% 12px;overflow:hidden}.ic-window:after{content:"";background:linear-gradient(115deg,#0000 30%,#ffffff80 31% 37%,#0000 38%);position:absolute;inset:0}.ic-vendor{--body:#ffe8cc;--shirt:#ff8fab;width:96px;height:115px;position:absolute;bottom:24px;left:50%;translate:-50%}.ic-vendor.is-serving .ic-person-svg{animation:ic-hop .42s var(--ease)}.ic-hat{fill:#fff;stroke:#dee2e6;stroke-width:1px}.ic-counter{background:linear-gradient(#ffe8cc 0 6px,#ffc078 6px,#f4a35b);height:40px;position:absolute;bottom:0;left:0;right:0}.ic-tubs{justify-content:space-between;gap:6px;display:flex;position:absolute;top:-14px;left:4%;right:4%}.ic-tub{background:linear-gradient(180deg, var(--flavor) 0 55%, #ced4da 55%);border-radius:6px 6px 10px 10px;flex:1;max-width:56px;height:28px;position:relative}.ic-tub:before{content:"";background:var(--flavor);border-radius:50% 50% 30% 30%;height:15px;position:absolute;top:-9px;left:8%;right:8%}.ic-sidewalk{background:linear-gradient(180deg, color-mix(in srgb, #ced4da 88%, var(--bg)) 0 8px, transparent 8px), repeating-linear-gradient(90deg, transparent 0 78px, #0000000f 78px 80px), color-mix(in srgb, #edf0f2 88%, var(--bg));height:34%;position:absolute;bottom:0;left:0;right:0}.ic-queue{z-index:2;pointer-events:none;position:absolute;inset:0}.ic-customer{transition:left .4s var(--ease);flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:5%;translate:-50%}.ic-customer.is-arriving{animation:ic-arrive .48s var(--ease)}@keyframes ic-arrive{0%{opacity:0;transform:translate(-60px)}}.ic-customer.is-leaving{opacity:0;transition:transform .9s ease-in, opacity .9s ease-in, left .4s var(--ease)}.ic-customer.is-leaving.is-happy{transform:translate(110px)}.ic-customer.is-leaving.is-sad{transform:translate(-70px)}.ic-person{width:100px;height:120px;position:relative}.ic-person-svg{transform-origin:50% 100%;width:100%;height:100%;animation:1.8s ease-in-out infinite ic-bob;display:block;overflow:visible}@keyframes ic-bob{50%{transform:translateY(-2px)}}.mood-waiting .ic-person-svg{animation:1.1s ease-in-out infinite ic-sway}@keyframes ic-sway{50%{transform:rotate(-2.5deg)}}.is-served .ic-person-svg{animation:ic-hop .48s var(--ease)}@keyframes ic-hop{40%{transform:translateY(-16px)scale(1.04,.97)}}.ic-body{fill:var(--body)}.ic-shirt{fill:var(--shirt)}.ic-foot{fill:color-mix(in srgb, var(--shirt) 60%, #000)}.ic-shadow{fill:#00000026}.ic-cheek{fill:#ff878773}.ic-eye{fill:#fff}.ic-pupil{fill:#1d1f24}.ic-acc{fill:var(--shirt)}.ic-acc-dark{fill:color-mix(in srgb, var(--shirt) 60%, #000)}.ic-acc-light{fill:#fff}.ic-glass{fill:#ffffff40;stroke:#343a40;stroke-width:2px}.ic-mouth{fill:none;stroke:#1d1f24;stroke-width:2.2px;stroke-linecap:round;display:none}.mood-happy .ic-mouth-happy,.mood-neutral .ic-mouth-neutral,.mood-waiting .ic-mouth-waiting{display:inline}.is-served .ic-mouth{display:none}.is-served .ic-mouth-happy{display:inline}.ic-bubble{color:#1d1f24;white-space:nowrap;background:#fff;border-radius:14px;flex-direction:column;gap:4px;padding:7px 11px;display:flex;position:relative;box-shadow:0 6px 14px #00000024}.ic-bubble:after{content:"";border:7px solid #0000;border-top-color:#fff;border-bottom:0;position:absolute;bottom:-7px;left:50%;translate:-50%}.ic-item{font:700 16px var(--font-mono);opacity:.5;align-items:center;gap:7px;display:flex}.ic-item.is-current{opacity:1;font-size:20px}.ic-item.is-done{opacity:.4;text-decoration:line-through}.ic-dot{background:var(--flavor);border-radius:50%;flex:none;width:14px;height:14px;box-shadow:inset 0 -3px #0000001f}.ic-word span.done{color:#e64980}.is-target .ic-bubble{outline-offset:2px;outline:3px solid #ffd43b}.ic-bubble.wiggle{animation:.26s ic-wiggle}@keyframes ic-wiggle{25%{rotate:-3deg}75%{rotate:3deg}}.ic-cone{flex-direction:column;align-items:center;display:none;position:absolute;bottom:32px;right:-14px}.ic-cone:has(.ic-scoop){display:flex}.ic-scoops{flex-direction:column-reverse;align-items:center;margin-bottom:-5px;display:flex}.ic-scoop{background:var(--flavor);width:25px;height:22px;animation:ic-plop .32s var(--ease);border-radius:50% 50% 45% 45%;margin-top:-8px;box-shadow:inset 0 -3px #0000001a}@keyframes ic-plop{0%{opacity:0;transform:translateY(-26px)scale(.6)}}.ic-cone-base{border-inline:11px solid #0000;border-top:26px solid #e0a458;width:0;height:0}.ic-patience{border-radius:var(--r-full);background:#0000001f;width:74px;height:7px;overflow:hidden}.ic-patience span{border-radius:inherit;width:100%;height:100%;display:block}.ic-float{z-index:3;border-radius:var(--r-full);color:#2b8a3e;font:800 .95rem var(--font-mono);white-space:nowrap;pointer-events:none;background:#ffffffeb;padding:2px 9px;animation:1.1s ease-out forwards ic-float;position:absolute;bottom:calc(5% + 176px);translate:-50%;box-shadow:0 4px 10px #0000001f}.ic-float.gold{color:#e67700}.ic-float.star{color:#f59f00;bottom:calc(5% + 212px)}.ic-float.soft{color:#868e96}@keyframes ic-float{0%{opacity:0;transform:translateY(8px)}20%{opacity:1;transform:translateY(-4px)}to{opacity:0;transform:translateY(-40px)}}.ic-banner{z-index:4;border-radius:var(--r-lg);color:#1d1f24;text-align:center;opacity:0;pointer-events:none;background:#fffffff0;flex-direction:column;align-items:center;gap:4px;padding:14px 26px;transition:opacity .25s;display:flex;position:absolute;top:40%;left:50%;translate:-50% -50%;box-shadow:0 12px 30px #00000029}.ic-banner.show{animation:pop .42s var(--ease);opacity:1}.ic-banner strong{color:#e64980;font-size:1.55rem}.ic-banner span{color:#495057;max-width:34ch;font-size:.95rem}.game-icecream .ic-stars{color:#fab005;letter-spacing:2px}.game-icecream .ic-combo b{transition:color .15s}.game-icecream .ic-combo.is-on b{color:var(--accent)}@media (max-width:640px){.ic-scene{height:60vh;min-height:400px}.ic-person{width:76px;height:91px}.ic-vendor{width:72px;height:86px}.ic-item{font-size:13px}.ic-item.is-current{font-size:15px}.ic-sign{font-size:.9rem}}@media (prefers-reduced-motion:reduce){.ic-cloud,.ic-person-svg,.mood-waiting .ic-person-svg{animation:none}.ic-float,.ic-scoop,.is-served .ic-person-svg{animation-duration:1ms}}
