@font-face{font-display:swap;font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-weight:200 800;src:url(/static/media/atkinson-hyperlegible-next-latin-ext-wght-normal.0ef2fa98e78f4bf88172.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-display:swap;font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-weight:200 800;src:url(/static/media/atkinson-hyperlegible-next-latin-wght-normal.fbe029baee1041af1329.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-weight:200 800;src:url(/static/media/atkinson-hyperlegible-mono-latin-ext-wght-normal.54e74fb5fa4dc9891430.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-display:swap;font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-weight:200 800;src:url(/static/media/atkinson-hyperlegible-mono-latin-wght-normal.532c46446426051e0324.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--n-0:#fff;--n-50:#f5f7fb;--n-100:#eaeef5;--n-200:#d5dbe7;--n-250:#c5cddc;--n-300:#bcc5d6;--n-350:#a7b1c6;--n-400:#909cb3;--n-500:#525d75;--n-600:#4b566e;--n-700:#353e55;--n-750:#2a3350;--n-800:#20273a;--n-850:#1a2036;--n-900:#141a2e;--n-950:#0d1120;--n-975:#080b16;--n-1000:#05070f;--case:var(--n-200);--plate:var(--n-250);--surface:var(--n-50);--raised:var(--n-0);--edge:var(--n-300);--skirt:var(--n-350);--rule:var(--n-250);--ink:var(--n-900);--ink-2:var(--n-600);--ink-3:var(--n-500);--cobalt:#2438c9;--cobalt-hover:#1d2fb0;--cobalt-skirt:#152184;--cobalt-text:#2438c9;--cobalt-wash:#dfe4fb;--on-cobalt:#fff;--accent:#ffc629;--accent-hover:#ffd04d;--accent-skirt:#c08e06;--on-accent:var(--n-950);--danger:#c9342a;--danger-skirt:#8f1f18;--danger-text:#b42a21;--danger-wash:#fbe4e1;--success:#137a52;--success-text:#0f6b47;--success-wash:#dcf3e8;--d-beginner:#1877b0;--d-intermediate:#2f5fdb;--d-advanced:#5a3fd0;--d-expert:#8b2bb8;--on-difficulty:#fff;--tip-done:var(--success);--on-tip-done:#fff;--screen:var(--n-950);--screen-edge:var(--n-1000);--screen-ink:var(--n-100);--screen-dim:var(--n-400);--screen-ok:#5fd9a5;--screen-err:#ff8f85;--screen-select:#ffc62959;--screen-rule:#ffffff17;--key-alpha-hover:var(--n-50);--key-disabled:var(--n-100);--shadow-key:#0d112033;--shadow-panel:0 1px 2px #0d112014,0 8px 24px -12px #0d112040;--key-shine:#ffffffb3;--focus:#2438c9;--font-ui:"Atkinson Hyperlegible Next Variable",system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"Atkinson Hyperlegible Mono Variable",ui-monospace,"SF Mono",Menlo,Consolas,monospace;--text-xs:0.75rem;--text-sm:0.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:72px;--u:44px;--travel:3px;--r-key:7px;--r-panel:12px;--page:1120px;--gutter:24px;--ease-out:cubic-bezier(0.16,1,0.3,1);color-scheme:light}[data-theme=dark]{--case:var(--n-950);--plate:var(--n-975);--surface:var(--n-850);--raised:var(--n-800);--edge:var(--n-700);--skirt:var(--n-1000);--rule:var(--n-750);--ink:var(--n-100);--ink-2:var(--n-350);--ink-3:var(--n-400);--cobalt:#3d51e0;--cobalt-hover:#4c60ee;--cobalt-skirt:#1a2590;--cobalt-text:#9aa6ff;--cobalt-wash:#1c2452;--danger:#d8463b;--danger-skirt:#8f1f18;--danger-text:#ff8f85;--danger-wash:#3a1a1c;--success:#17885c;--success-text:#5fd9a5;--success-wash:#12302a;--d-beginner:#3aa0dc;--d-intermediate:#5b82f0;--d-advanced:#8168ee;--d-expert:#b455e0;--on-difficulty:var(--n-950);--tip-done:var(--success-text);--on-tip-done:var(--n-950);--screen:var(--n-975);--screen-edge:var(--n-700);--key-alpha-hover:var(--n-750);--key-disabled:var(--surface);--shadow-key:#00000080;--shadow-panel:0 1px 2px #0006,0 12px 28px -14px #000000b3;--key-shine:#ffffff0f;--focus:#9aa6ff;color-scheme:dark}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#d5dbe7;background:var(--case);color:#141a2e;color:var(--ink);font-family:Atkinson Hyperlegible Next Variable,system-ui,-apple-system,Segoe UI,sans-serif;font-family:var(--font-ui);font-size:1rem;font-size:var(--text-md);line-height:1.55;margin:0;text-rendering:optimizeLegibility}::selection{background:#ffc629;background:var(--accent);color:#0d1120;color:var(--on-accent)}dd,dl,figure,h1,h2,h3,h4,ol,p,ul{margin:0}h1,h2,h3,h4{text-wrap:balance;font-weight:700;letter-spacing:-.015em;line-height:1.15}p{text-wrap:pretty}ol,ul{list-style:none;padding:0}a{color:#2438c9;color:var(--cobalt-text);text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{text-decoration-thickness:2px}button,input,select,textarea{color:inherit;font:inherit}button{cursor:pointer}code,kbd,pre,samp{font-family:Atkinson Hyperlegible Mono Variable,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-family:var(--font-mono);font-size:.9375em}code{background:#eaeef5;background:var(--n-100);border-radius:4px;color:#141a2e;color:var(--ink);padding:.1em .35em}[data-theme=dark] code{background:#fff;background:var(--raised)}:focus{outline:none}:focus-visible{outline:2px solid #2438c9;outline:2px solid var(--focus);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.skip-link{background:#ffc629;background:var(--accent);border-radius:7px;border-radius:var(--r-key);color:#0d1120;color:var(--on-accent);font-weight:700;left:16px;left:var(--s-4);padding:8px 16px;padding:var(--s-2) var(--s-4);position:absolute;text-decoration:none;top:-100px;z-index:100}.skip-link:focus{top:12px;top:var(--s-3)}.mono{font-family:Atkinson Hyperlegible Mono Variable,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-family:var(--font-mono)}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.app__main{flex:1 1}.page{margin:0 auto;max-width:1168px;max-width:calc(var(--page) + var(--gutter)*2);padding:32px 24px 72px;padding:var(--s-6) var(--gutter) var(--s-8);width:100%}.page-title{font-size:2.25rem;font-size:var(--text-3xl);letter-spacing:-.025em}.page-lede{color:#4b566e;color:var(--ink-2);font-size:1.125rem;font-size:var(--text-lg);margin-top:12px;margin-top:var(--s-3);max-width:62ch}.section{margin-top:72px;margin-top:var(--s-8)}.section__title{font-size:1.375rem;font-size:var(--text-xl)}.section__lede{color:#4b566e;color:var(--ink-2);margin-top:8px;margin-top:var(--s-2);max-width:62ch}.panel{background:#f5f7fb;background:var(--surface);border:1px solid #bcc5d6;border:1px solid var(--edge);border-radius:12px;border-radius:var(--r-panel);box-shadow:0 1px 2px #0d112014,0 8px 24px -12px #0d112040;box-shadow:var(--shadow-panel)}.crumbs{align-items:center;color:#4b566e;color:var(--ink-2);display:flex;flex-wrap:wrap;font-size:.875rem;font-size:var(--text-sm);gap:8px;gap:var(--s-2)}.crumbs+.page-title{margin-top:16px;margin-top:var(--s-4)}.crumbs a{color:#4b566e;color:var(--ink-2)}.crumbs [aria-current],.crumbs a:hover{color:#141a2e;color:var(--ink)}.crumbs [aria-current],.key{font-weight:600}.key{--key-top:var(--raised);--key-top-hover:var(--key-alpha-hover);--key-ink:var(--ink);--key-edge:var(--edge);--key-skirt:var(--skirt);-webkit-tap-highlight-color:transparent;align-items:center;background:var(--key-top);border:1px solid var(--key-edge);border-radius:7px;border-radius:var(--r-key);box-shadow:inset 0 1px 0 #ffffffb3,0 3px 0 var(--key-skirt),0 5px 5px #0d112033;box-shadow:inset 0 1px 0 var(--key-shine),0 var(--travel) 0 var(--key-skirt),0 calc(var(--travel) + 2px) 5px var(--shadow-key);color:var(--key-ink);display:inline-flex;font-family:Atkinson Hyperlegible Next Variable,system-ui,-apple-system,Segoe UI,sans-serif;font-family:var(--font-ui);font-size:1rem;font-size:var(--text-md);gap:8px;gap:var(--s-2);justify-content:center;line-height:1.1;margin-bottom:3px;margin-bottom:var(--travel);min-height:44px;min-height:var(--u);padding:0 16px;padding:0 var(--s-4);position:relative;text-align:center;transition:transform 80ms cubic-bezier(.16,1,.3,1),box-shadow 80ms cubic-bezier(.16,1,.3,1),background-color .14s ease;transition:transform 80ms var(--ease-out),box-shadow 80ms var(--ease-out),background-color .14s ease;-webkit-user-select:none;user-select:none;white-space:nowrap}.key,.key:hover{text-decoration:none}.key:hover{background:var(--key-top-hover)}.key.is-down,.key:active{box-shadow:inset 0 1px 0 #ffffffb3,0 0 0 var(--key-skirt),0 1px 2px #0d112033;box-shadow:inset 0 1px 0 var(--key-shine),0 0 0 var(--key-skirt),0 1px 2px var(--shadow-key);transform:translateY(3px);transform:translateY(var(--travel))}.key:disabled,.key[aria-disabled=true]{--key-ink:var(--ink-3);--key-top:var(--key-disabled);--key-top-hover:var(--key-disabled);--key-edge:var(--edge);--key-skirt:var(--skirt);box-shadow:0 1px 0 var(--key-skirt);cursor:not-allowed;transform:translateY(2px);transform:translateY(calc(var(--travel) - 1px))}.key--mod{--key-top:var(--cobalt);--key-top-hover:var(--cobalt-hover);--key-ink:var(--on-cobalt);--key-edge:var(--cobalt-skirt);--key-skirt:var(--cobalt-skirt);--key-shine:#ffffff38}.key--accent{--key-top:var(--accent);--key-top-hover:var(--accent-hover);--key-ink:var(--on-accent);--key-edge:var(--accent-skirt);--key-skirt:var(--accent-skirt);--key-shine:#ffffff80}.key--danger{--key-top:var(--danger);--key-top-hover:var(--danger-skirt);--key-ink:#fff;--key-edge:var(--danger-skirt);--key-skirt:var(--danger-skirt);--key-shine:#fff3}.key--lg{font-size:1.125rem;font-size:var(--text-lg);min-height:56px;padding:0 24px;padding:0 var(--s-5)}.key--sm{font-size:.875rem;font-size:var(--text-sm);min-height:36px;padding:0 12px;padding:0 var(--s-3)}.key--square{padding:0;width:44px;width:var(--u)}.key--block{width:100%}.key__legend{align-items:center;display:inline-flex;font-family:Atkinson Hyperlegible Mono Variable,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-family:var(--font-mono);font-size:.75rem;font-size:var(--text-xs);font-weight:500;gap:2px;margin-left:4px;margin-left:var(--s-1);opacity:.72}.key .icon{flex:none}.link-button{background:none;border:0;color:#2438c9;color:var(--cobalt-text);font-weight:600;padding:0;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}.link-button:hover{text-decoration-thickness:2px}.legend-key{background:#2438c9;background:var(--cobalt);border:1px solid #152184;border:1px solid var(--cobalt-skirt);border-radius:7px;border-radius:var(--r-key);box-shadow:inset 0 1px 0 #ffffff38,0 3px 0 #152184,0 5px 5px #0d112033;box-shadow:inset 0 1px 0 #ffffff38,0 var(--travel) 0 var(--cobalt-skirt),0 calc(var(--travel) + 2px) 5px var(--shadow-key);color:#fff;color:var(--on-cobalt);display:inline-grid;flex:none;font-family:Atkinson Hyperlegible Mono Variable,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-family:var(--font-mono);font-size:.9375rem;font-weight:700;height:44px;height:var(--u);letter-spacing:-.02em;margin-bottom:3px;margin-bottom:var(--travel);place-items:center;width:44px;width:var(--u)}.legend-key--plain{background:#fff;background:var(--raised);border-color:#bcc5d6;border-color:var(--edge);box-shadow:inset 0 1px 0 #ffffffb3,0 3px 0 #a7b1c6,0 5px 5px #0d112033;box-shadow:inset 0 1px 0 var(--key-shine),0 var(--travel) 0 var(--skirt),0 calc(var(--travel) + 2px) 5px var(--shadow-key);color:#141a2e;color:var(--ink)}.lkeys{--lu:30px;--lgap:5px;grid-gap:calc(var(--lgap) + 2px) var(--lgap);display:grid;gap:calc(var(--lgap) + 2px) var(--lgap);grid-template-columns:repeat(auto-fill,var(--lu))}.lkey{--lkey-top:var(--raised);--lkey-skirt:var(--skirt);--lkey-ink:var(--ink-3);background:var(--lkey-top);border:1px solid #bcc5d6;border:1px solid var(--edge);border-radius:5px;box-shadow:0 2px 0 var(--lkey-skirt);color:var(--lkey-ink);display:grid;font-family:Atkinson Hyperlegible Mono Variable,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-family:var(--font-mono);font-size:.6875rem;font-weight:600;height:var(--lu);line-height:1;padding:0;place-items:center;text-decoration:none;transition:transform 80ms cubic-bezier(.16,1,.3,1),box-shadow 80ms cubic-bezier(.16,1,.3,1);transition:transform 80ms var(--ease-out),box-shadow 80ms var(--ease-out);width:var(--lu)}.lkey[data-difficulty=beginner]{--d:var(--d-beginner)}.lkey[data-difficulty=intermediate]{--d:var(--d-intermediate)}.lkey[data-difficulty=advanced]{--d:var(--d-advanced)}.lkey[data-difficulty=expert]{--d:var(--d-expert)}.lkey[data-state=done]{--lkey-top:var(--d);--lkey-ink:var(--on-difficulty);--lkey-skirt:color-mix(in srgb,var(--d) 62%,#000);border-color:#0000}.lkey[data-tone=plain][data-state=done]{--d:var(--tip-done);--lkey-ink:var(--on-tip-done)}.lkey[data-state=next]{--lkey-top:var(--accent);--lkey-ink:var(--on-accent);--lkey-skirt:var(--accent-skirt);border-color:#c08e06;border-color:var(--accent-skirt)}.lkey[data-state=upnext]{--lkey-ink:var(--ink);border-color:#4b566e;border-color:var(--ink-2);font-weight:800}a.lkey:hover{box-shadow:0 3px 0 var(--lkey-skirt);transform:translateY(-1px)}.lkey[aria-current=true],a.lkey:active{box-shadow:0 0 0 var(--lkey-skirt);transform:translateY(2px)}.lkey[aria-current=true]{outline:2px solid #141a2e;outline:2px solid var(--ink);outline-offset:2px}.lkey[aria-current=true]:focus-visible{outline-color:#2438c9;outline-color:var(--focus)}.lkey[data-inked=true]{animation:key-ink .62s cubic-bezier(.16,1,.3,1) both;animation:key-ink .62s var(--ease-out) both}@keyframes key-ink{0%{background:#ffc629;background:var(--accent);box-shadow:0 2px 0 #c08e06;box-shadow:0 2px 0 var(--accent-skirt);color:#0d1120;color:var(--on-accent);transform:translateY(0)}28%,52%{background:#ffc629;background:var(--accent);box-shadow:0 0 0 #c08e06;box-shadow:0 0 0 var(--accent-skirt);color:#0d1120;color:var(--on-accent);transform:translateY(2px)}72%{box-shadow:0 0 0 var(--lkey-skirt);transform:translateY(2px)}}.lkeys--row{--lgap:5px;grid-template-columns:repeat(30,minmax(0,1fr))}.lkeys--row .lkey{aspect-ratio:1;height:auto;width:auto}.lkeys--row[data-cols="15"]{grid-template-columns:repeat(15,minmax(0,1fr))}@media (max-width:1000px){.lkeys--row{grid-template-columns:repeat(15,minmax(0,1fr))}}@media (max-width:560px){.lkeys--row,.lkeys--row[data-cols="15"]{grid-template-columns:repeat(10,minmax(0,1fr))}}.chip{align-items:center;background:#f5f7fb;background:var(--surface);border:1px solid #bcc5d6;border:1px solid var(--edge);border-radius:999px;color:#4b566e;color:var(--ink-2);display:inline-flex;font-size:.75rem;font-size:var(--text-xs);font-weight:600;gap:6px;line-height:1.5;padding:2px 10px;white-space:nowrap}.chip:before{background:none;background:var(--chip-dot,none);border-radius:2px;content:"";display:none;display:var(--chip-dot-display,none);height:8px;width:8px}.chip[data-difficulty]{--chip-dot-display:block;text-transform:capitalize}.chip[data-difficulty=beginner]{--chip-dot:var(--d-beginner)}.chip[data-difficulty=intermediate]{--chip-dot:var(--d-intermediate)}.chip[data-difficulty=advanced]{--chip-dot:var(--d-advanced)}.chip[data-difficulty=expert]{--chip-dot:var(--d-expert)}.chip[data-kind]{--chip-dot-display:block}.chip[data-kind=trick]:before{background:#4b566e;background:var(--ink-2)}.chip[data-kind=practice]:before{background:none;box-shadow:inset 0 0 0 2px #4b566e;box-shadow:inset 0 0 0 2px var(--ink-2)}.chip--done{background:#dcf3e8;background:var(--success-wash);border-color:#0000;color:#0f6b47;color:var(--success-text)}.meter{background:#c5cddc;background:var(--plate);border-radius:999px;height:8px;overflow:hidden}.meter__fill{background:#2438c9;background:var(--cobalt);height:100%;transform:scaleX(0);transform:scaleX(var(--fill,0));transform-origin:left center;transition:transform .4s cubic-bezier(.16,1,.3,1);transition:transform .4s var(--ease-out)}.difficulty-legend{color:#4b566e;color:var(--ink-2);display:flex;flex-wrap:wrap;font-size:.75rem;font-size:var(--text-xs);gap:8px 16px;gap:var(--s-2) var(--s-4)}.difficulty-legend li{align-items:center;display:inline-flex;gap:6px;text-transform:capitalize}.difficulty-legend i{background:var(--swatch);border-radius:2px;height:10px;width:10px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media (max-width:640px){:root{--gutter:16px;--text-3xl:1.875rem;--text-2xl:1.5rem}.page{padding-bottom:48px;padding-bottom:var(--s-7);padding-top:24px;padding-top:var(--s-5)}.section{margin-top:48px;margin-top:var(--s-7)}}.app-header{background:var(--case);border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:20}.app-header__inner{align-items:center;display:flex;gap:var(--s-5);margin:0 auto;max-width:calc(var(--page) + var(--gutter)*2);min-height:60px;padding:0 var(--gutter)}.brand{align-items:center;color:var(--ink);display:inline-flex;font-size:var(--text-lg);gap:10px;letter-spacing:-.02em;text-decoration:none}.brand b{font-weight:800}.brand__key{background:var(--accent);border:1px solid var(--accent-skirt);border-radius:6px;box-shadow:inset 0 1px 0 #ffffff80,0 3px 0 var(--accent-skirt);color:var(--on-accent);display:grid;height:28px;margin-bottom:3px;place-items:center;transition:transform 80ms var(--ease-out),box-shadow 80ms var(--ease-out);width:30px}.brand:active .brand__key{box-shadow:inset 0 1px 0 #ffffff80,0 0 0 var(--accent-skirt);transform:translateY(3px)}.app-nav{display:flex;gap:var(--s-1);margin-right:auto}.app-nav__link{align-items:center;border-radius:var(--r-key);color:var(--ink-2);display:inline-flex;font-size:.9375rem;font-weight:600;gap:var(--s-2);min-height:36px;padding:0 var(--s-3);text-decoration:none;white-space:nowrap}.app-nav__link:hover{background:color-mix(in srgb,var(--ink) 7%,#0000);color:var(--ink)}.app-nav__link.active{background:color-mix(in srgb,var(--ink) 10%,#0000);color:var(--ink)}.app-nav__count{color:var(--ink-2);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500}.app-header__meta{align-items:center;display:flex;gap:var(--s-3)}.streak{align-items:center;color:var(--ink);display:inline-flex;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:700;gap:4px;min-height:36px;padding:0 var(--s-2);text-decoration:none}.streak .icon{color:var(--ink-2)}.theme-toggle{width:36px}.app-footer{border-top:1px solid var(--rule);color:var(--ink-2);font-size:var(--text-sm)}.app-footer__inner{align-items:center;justify-content:space-between;margin:0 auto;max-width:calc(var(--page) + var(--gutter)*2);padding:var(--s-5) var(--gutter)}.app-footer nav,.app-footer__inner{display:flex;flex-wrap:wrap;gap:var(--s-3) var(--s-5)}.app-footer a{color:var(--ink-2)}.app-footer a:hover{color:var(--ink)}.toast-region{bottom:var(--s-4);pointer-events:none;position:fixed;right:var(--s-4);width:min(360px,calc(100vw - var(--s-4)*2));z-index:40}.toast{align-items:center;animation:toast-in .32s var(--ease-out);background:var(--raised);border:1px solid var(--edge);border-radius:var(--r-panel);box-shadow:var(--shadow-panel);display:flex;gap:var(--s-3);padding:var(--s-3) var(--s-3) var(--s-3) var(--s-4);pointer-events:auto}.toast__legend{font-size:var(--text-xs)}.toast__body{flex:1 1;min-width:0}.toast__title{font-size:var(--text-sm);font-weight:700}.toast__text{color:var(--ink-2);font-size:var(--text-sm)}.toast__close{background:none;border:0;border-radius:var(--r-key);color:var(--ink-2);display:grid;flex:none;height:32px;place-items:center;width:32px}.toast__close:hover{background:color-mix(in srgb,var(--ink) 8%,#0000);color:var(--ink)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}@media (max-width:520px){.app-header__inner{gap:var(--s-2)}.app-nav__count,.brand__name{display:none}.app-nav__link{padding:0 var(--s-2)}}@media (max-width:400px){.app-nav{gap:0}.app-nav__link{font-size:.875rem;padding:0 var(--s-1)}}.terminal{background:var(--screen);border:1px solid var(--screen-edge);border-radius:var(--r-panel);box-shadow:var(--shadow-panel),inset 0 1px 0 #ffffff0f;color:var(--screen-ink);color-scheme:dark;font-family:var(--font-mono);overflow:hidden}.terminal__bar{align-items:center;border-bottom:1px solid var(--screen-rule);color:var(--screen-dim);display:flex;font-size:var(--text-xs);gap:var(--s-4);justify-content:space-between;padding:var(--s-2) var(--s-4)}.terminal__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.terminal__status{flex:none}.terminal__screen{cursor:text;padding:var(--s-4)}.terminal__log{font-size:.9375rem;line-height:1.55;max-height:260px;overflow-y:auto;scrollbar-color:#ffffff40 #0000;scrollbar-width:thin}.terminal__entry{overflow-wrap:anywhere;white-space:pre-wrap}.terminal__entry+.terminal__entry--command{margin-top:var(--s-2)}.terminal__entry--note,.terminal__entry--output,.terminal__return{color:var(--screen-dim)}.terminal__return{-webkit-user-select:none;user-select:none}.terminal__entry--note:before{content:"# "}.terminal__entry--ok{color:var(--screen-ok)}.terminal__entry--error{color:var(--screen-err)}.terminal__entry:last-child{margin-bottom:var(--s-3)}.terminal__sigil{color:var(--accent);font-weight:700;-webkit-user-select:none;user-select:none}.terminal__line{align-items:baseline;display:flex;gap:var(--s-3)}.terminal__input,.terminal__line .terminal__sigil{font-size:var(--text-lg)}.terminal__input{background:#0000;border:0;border-radius:0;caret-color:var(--accent);color:var(--screen-ink);flex:1 1;font-family:var(--font-mono);line-height:1.5;min-width:0;padding:var(--s-1) 0}.terminal__input::placeholder{color:var(--n-400);opacity:1}.terminal__input::selection{background:var(--screen-select);color:var(--screen-ink)}.terminal__input:focus-visible{outline:none}.terminal:focus-within{outline:2px solid var(--focus);outline-offset:2px}.terminal__input[readonly]{caret-color:#0000}.topic-rows{grid-gap:var(--s-5);background:var(--plate);border-radius:var(--r-panel);box-shadow:inset 0 1px 2px var(--shadow-key);display:grid;gap:var(--s-5);padding:var(--s-5)}.topic-row{grid-gap:var(--s-3) var(--s-5);align-items:end;display:grid;gap:var(--s-3) var(--s-5);grid-template-areas:"head caption count" "keys keys keys";grid-template-columns:minmax(0,auto) minmax(0,1fr) auto}.topic-row__head{align-items:center;border-radius:var(--r-key);color:var(--ink);display:flex;gap:var(--s-4);grid-area:head;min-width:0;text-decoration:none}.topic-row__head .legend-key{transition:transform 80ms var(--ease-out),box-shadow 80ms var(--ease-out)}.topic-row__head:hover .legend-key{box-shadow:inset 0 1px 0 #ffffff38,0 2px 0 var(--cobalt-skirt),0 3px 4px var(--shadow-key);transform:translateY(1px)}.topic-row__head:active .legend-key{box-shadow:inset 0 1px 0 #ffffff38,0 0 0 var(--cobalt-skirt);transform:translateY(var(--travel))}.topic-row__head:hover .topic-row__name{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.2em}.topic-row__text{grid-gap:2px;display:grid;gap:2px;min-width:0}.topic-row__name{font-size:var(--text-lg);font-weight:700;letter-spacing:-.01em}.topic-row__summary{color:var(--ink-2);font-size:var(--text-sm);line-height:1.4}.topic-row__caption{grid-area:caption;overflow:hidden;padding-bottom:5px;text-overflow:ellipsis;white-space:nowrap}.topic-row__caption,.topic-row__count{color:var(--ink-2);font-size:var(--text-sm);text-align:right}.topic-row__count{font-family:var(--font-mono);grid-area:count;padding-bottom:3px}.topic-row__count b{color:var(--ink);font-size:var(--text-lg);font-weight:700}.topic-row__keys{grid-area:keys;min-width:0;padding-bottom:2px}@media (max-width:760px){.topic-rows{padding:var(--s-4) var(--s-3)}.topic-row{align-items:center;grid-template-areas:"head count" "keys keys" "caption caption";grid-template-columns:minmax(0,1fr) auto}.topic-row__caption{padding-bottom:0;text-align:left}.topic-row__summary{display:none}}.mode-picker{grid-gap:var(--s-3);display:grid;gap:var(--s-3)}.mode-option{grid-gap:var(--s-2) var(--s-4);-webkit-tap-highlight-color:transparent;align-items:center;background:none;border:0;color:var(--ink);cursor:pointer;display:grid;font:inherit;gap:var(--s-2) var(--s-4);grid-template-columns:21rem minmax(0,1fr);padding:0;text-align:left}.mode-option__key{align-items:center;background:var(--raised);border:1px solid var(--edge);border-radius:var(--r-key);box-shadow:inset 0 1px 0 var(--key-shine),0 var(--travel) 0 var(--skirt),0 calc(var(--travel) + 2px) 5px var(--shadow-key);display:flex;font-weight:700;gap:var(--s-3);justify-content:space-between;line-height:1.15;margin-bottom:var(--travel);min-height:var(--u);padding:var(--s-2) var(--s-3) var(--s-2) var(--s-4);transition:transform 80ms var(--ease-out),box-shadow 80ms var(--ease-out),background-color .14s ease}.mode-option:hover .mode-option__key{background:var(--key-alpha-hover)}.mode-option.is-chosen .mode-option__key,.mode-option:active .mode-option__key{box-shadow:inset 0 1px 0 var(--key-shine),0 0 0 var(--skirt),0 1px 2px var(--shadow-key);transform:translateY(var(--travel))}.mode-option.is-chosen .mode-option__key{background:var(--cobalt);border-color:var(--cobalt-skirt);box-shadow:inset 0 1px 0 #ffffff38,0 0 0 var(--cobalt-skirt);color:var(--on-cobalt)}.mode-option:focus-visible,.mode-option:focus-within{outline:none}.mode-option:focus-visible .mode-option__key,.mode-option:has(input:focus-visible) .mode-option__key{outline:2px solid var(--focus);outline-offset:2px}.mode-option__summary{color:var(--ink-2);font-size:var(--text-sm);line-height:1.45}.mode-picker--stacked .mode-option{grid-template-columns:minmax(0,1fr)}@media (max-width:720px){.mode-option{grid-template-columns:minmax(0,1fr)}}.pro-tips-teaser__list{gap:var(--s-1) var(--s-5);grid-template-columns:repeat(3,minmax(0,1fr))}.pro-tips-teaser .legend-key{font-size:var(--text-xs)}@media (max-width:860px){.pro-tips-teaser__list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.pro-tips-teaser__list{grid-template-columns:1fr}}.hero{grid-gap:var(--s-6) var(--s-7);align-items:start;display:grid;gap:var(--s-6) var(--s-7);grid-template-areas:"copy try" "start try";grid-template-columns:minmax(0,5fr) minmax(0,6fr);grid-template-rows:auto 1fr;padding:var(--s-6) 0 var(--s-2)}.hero__copy{grid-area:copy}.hero__try{grid-area:try}.hero__start{grid-area:start}.hero__title{font-size:clamp(2.25rem,1.4rem + 3.2vw,3.75rem);font-weight:800;letter-spacing:-.035em;line-height:1.02}.hero__lede{color:var(--ink-2);font-size:var(--text-lg);margin-top:var(--s-4);max-width:46ch}.hero__lede a{color:inherit;font-weight:600}.hero__task{font-size:var(--text-lg);font-weight:700;line-height:1.35;margin-bottom:var(--s-3)}.hero__actions{align-items:center;display:flex;gap:var(--s-4);justify-content:space-between;margin-top:var(--s-4);min-height:calc(var(--u) + var(--travel))}.hero__result{color:var(--ink-2)}.hero__row{background:var(--plate);border-radius:var(--r-panel);box-shadow:inset 0 1px 2px var(--shadow-key);margin-top:var(--s-4);padding:var(--s-3) var(--s-4) var(--s-4)}.hero__row-label{color:var(--ink-2);display:flex;font-size:var(--text-sm);gap:var(--s-4);justify-content:space-between;margin-bottom:var(--s-3)}.hero__start-title{font-size:var(--text-xl)}.hero__start-lede{color:var(--ink-2);margin:var(--s-2) 0 var(--s-4);max-width:46ch}.resume{grid-gap:var(--s-6);align-items:end;display:grid;gap:var(--s-6);grid-template-columns:minmax(0,1fr) auto;padding:var(--s-6) 0 var(--s-2)}.resume__action{grid-gap:var(--s-2);display:grid;gap:var(--s-2);justify-items:start}.resume__next{color:var(--ink-2);font-size:var(--text-sm)}.home__keyboard-head{align-items:flex-end;display:flex;flex-wrap:wrap;gap:var(--s-4) var(--s-6);justify-content:space-between}.home__keyboard{margin-top:var(--s-5)}.home__extras{grid-gap:var(--s-7);display:grid;gap:var(--s-7);grid-template-columns:repeat(2,minmax(0,1fr))}.extra-list{grid-gap:var(--s-1);display:grid;gap:var(--s-1);margin:var(--s-4) calc(var(--s-3)*-1) 0}.extra-link{align-items:center;border-radius:var(--r-panel);color:var(--ink);display:flex;gap:var(--s-4);padding:var(--s-2) var(--s-3);text-decoration:none;transition:background-color .14s ease}.extra-link:hover{background:var(--surface)}.extra-link .legend-key{font-size:var(--text-sm);transition:transform 80ms var(--ease-out),box-shadow 80ms var(--ease-out)}.extra-link:active .legend-key{box-shadow:inset 0 1px 0 var(--key-shine),0 0 0 var(--skirt);transform:translateY(var(--travel))}.extra-link__text{display:grid;min-width:0}.extra-link__name{font-weight:700}.extra-link__meta{color:var(--ink-2);font-size:var(--text-sm)}@media (max-width:900px){.hero{grid-template-areas:"copy" "try" "start";grid-template-columns:minmax(0,1fr);grid-template-rows:none;padding-top:var(--s-4)}.hero,.resume{gap:var(--s-5)}.resume{align-items:start}.home__extras,.resume{grid-template-columns:1fr}}@media (max-width:520px){.hero__actions{align-items:flex-start}}.scenario-list{grid-gap:var(--s-1);display:grid;gap:var(--s-1);margin:var(--s-4) calc(var(--s-4)*-1) 0}.scenario-link{grid-gap:var(--s-3) var(--s-5);align-items:center;border:1px solid #0000;border-radius:var(--r-panel);color:var(--ink);display:grid;gap:var(--s-3) var(--s-5);grid-template-columns:var(--u) minmax(0,1fr) auto;padding:var(--s-3) var(--s-4);text-decoration:none;transition:background-color .14s ease,border-color .14s ease}.scenario-link:hover{background:var(--surface);border-color:var(--edge)}.scenario-link__key{font-size:var(--text-sm);transition:transform 80ms var(--ease-out),box-shadow 80ms var(--ease-out)}.scenario-link:active .scenario-link__key{box-shadow:inset 0 1px 0 var(--key-shine),0 0 0 var(--skirt);transform:translateY(var(--travel))}.scenario-link__text{grid-gap:2px;display:grid;gap:2px;min-width:0}.scenario-link__title{font-size:var(--text-lg);font-weight:700;letter-spacing:-.01em}.scenario-link__story{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--ink-2);display:-webkit-box;font-size:var(--text-sm);line-height:1.45;overflow:hidden}.scenario-link__meta{display:flex;flex-wrap:wrap;gap:var(--s-2);justify-content:flex-end;max-width:380px}@media (max-width:760px){.scenario-link{grid-template-columns:var(--u) minmax(0,1fr)}.scenario-link__key{align-self:start}.scenario-link__meta{grid-column:2;justify-content:flex-start;max-width:none}}@media (max-width:520px){.scenario-list{margin-left:calc(var(--s-2)*-1);margin-right:calc(var(--s-2)*-1)}.scenario-link{padding:var(--s-3) var(--s-2)}}.topics__lessons{margin-top:var(--s-7)}.topics__group{margin-top:var(--s-5)}.topics__group-title{color:var(--ink-2);font-size:var(--text-md);font-weight:700;letter-spacing:0}.topics__group .scenario-list{margin-top:var(--s-2)}.topics__simulators{gap:var(--s-3);grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width:860px){.topics__simulators{grid-template-columns:1fr}}.lesson__layout{grid-gap:var(--s-7);align-items:start;display:grid;gap:var(--s-7);grid-template-columns:minmax(0,1fr) 360px;margin-top:var(--s-5)}.lesson__title{font-size:var(--text-3xl);letter-spacing:-.025em}.lesson__meta{align-items:center;color:var(--ink-2);display:flex;flex-wrap:wrap;font-size:var(--text-sm);gap:var(--s-2) var(--s-3);margin-top:var(--s-3)}.lesson__description{color:var(--ink-2);font-size:var(--text-lg);margin-top:var(--s-4);max-width:68ch}.lesson__task{font-size:var(--text-xl);font-weight:700;letter-spacing:-.01em;line-height:1.3;margin:var(--s-6) 0 var(--s-3);max-width:62ch}.lesson__actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-4)}.lesson__primary{margin-left:auto;min-width:132px}.lesson__result{animation:result-in .36s var(--ease-out);background:var(--success-wash);border:1px solid #0000;border-radius:var(--r-panel);margin-top:var(--s-5);padding:var(--s-4) var(--s-5)}.lesson__result-title{color:var(--success-text);font-size:var(--text-md);letter-spacing:0}.lesson__result p{margin-top:var(--s-1);max-width:68ch}.lesson__result-note{color:var(--ink-2);font-size:var(--text-sm)}@keyframes result-in{0%{opacity:0;transform:translateY(-6px)}}.lesson__failed{grid-gap:var(--s-4);display:grid;gap:var(--s-4);justify-items:start;margin-top:var(--s-5);max-width:52ch}.lesson__rail{grid-gap:var(--s-6);display:grid;gap:var(--s-6);max-height:calc(100vh - 100px);overflow-y:auto;padding:2px 4px var(--s-4) 2px;position:sticky;scrollbar-color:var(--n-400) #0000;scrollbar-width:thin;top:84px}.rail-head{align-items:center;display:flex;gap:var(--s-3);justify-content:space-between;min-height:32px}.rail-title{align-items:baseline;display:flex;font-size:var(--text-md);gap:var(--s-2);letter-spacing:0}.rail-title__count{color:var(--ink-2);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500}.rail-toggle{align-items:baseline;display:inline-flex;font-size:var(--text-sm);gap:var(--s-1);min-height:32px}.lesson-map .lkeys{margin-top:var(--s-3)}.lesson-map__step{display:flex;gap:var(--s-1)}.step-link{border-radius:var(--r-key);color:var(--ink);display:grid;height:32px;place-items:center;width:32px}a.step-link:hover{background:color-mix(in srgb,var(--ink) 9%,#0000)}.step-link.is-off{color:var(--n-400)}.lesson-map__caption{font-size:var(--text-sm);font-weight:600;margin-top:var(--s-3);min-height:1.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-map .difficulty-legend{margin-top:var(--s-2)}.pace{align-items:center;color:var(--ink-2);display:flex;font-weight:600;gap:var(--s-3);margin-top:var(--s-4)}.pace,.pace select{font-size:var(--text-sm)}.pace select{background:var(--raised);border:1px solid var(--edge);border-radius:var(--r-key);color:var(--ink);flex:1 1;font-weight:500;min-height:36px;min-width:0;padding:0 var(--s-2)}.reference{border-top:1px solid var(--rule);padding-top:var(--s-5)}.reference__body{font-size:var(--text-sm);margin-top:var(--s-2)}.reference__command code{background:none;font-size:var(--text-lg);font-weight:700;padding:0}.reference__description{color:var(--ink-2);margin-top:var(--s-1)}.reference__syntax{background:var(--surface);border:1px solid var(--edge);border-radius:var(--r-key);margin:var(--s-3) 0 0;overflow-wrap:anywhere;overflow-x:auto;padding:var(--s-2) var(--s-3);white-space:pre-wrap}.reference__syntax code{background:none;padding:0}.reference__heading{font-size:var(--text-sm);letter-spacing:0;margin-top:var(--s-5)}.reference__options{grid-gap:var(--s-2);display:grid;gap:var(--s-2);margin-top:var(--s-2)}.reference__options dt{font-weight:600}.reference__examples span,.reference__options dd{color:var(--ink-2)}.reference__examples{grid-gap:var(--s-3);display:grid;gap:var(--s-3);margin-top:var(--s-2)}.reference__examples li{grid-gap:2px;display:grid;gap:2px}.reference__examples code{justify-self:start;overflow-wrap:anywhere}.reference__tips{grid-gap:var(--s-2);color:var(--ink-2);display:grid;gap:var(--s-2);list-style:disc;margin-top:var(--s-2);padding-left:1.1em}.reference__closed{color:var(--ink-2);font-size:var(--text-sm);margin-top:var(--s-1)}.lesson-complete__keys{margin-top:var(--s-6)}.lesson-complete__keys .lkeys{--lu:31px;--lgap:6px}.lesson-complete__actions{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-6)}@media (max-width:980px){.lesson__layout{gap:var(--s-6);grid-template-columns:1fr}.lesson__rail{border-top:1px solid var(--rule);max-height:none;overflow:visible;padding:var(--s-5) 0 0;position:static}}@media (max-width:520px){.lesson__task{font-size:var(--text-lg);margin-top:var(--s-5)}.lesson__actions .key{flex:1 1}.lesson__actions .key__legend{display:none}.lesson__actions .lesson__primary{flex:1 0 100%;min-height:52px;order:-1}.lesson-complete__actions .key{white-space:normal;width:100%}}
/*# sourceMappingURL=main.3861cda9.css.map*/