:root{--paper:#f3f1e9;--paper-soft:#f9f7f0;--panel:#fffdf9;--ink:#1c1b18;--ink-soft:#6b6457;--line:#e3ddcc;--line-strong:rgba(28,27,24,0.22);--accent:#2b6e63;--accent-dark:#1c4d44;--accent-soft:rgba(43,110,99,0.1);--good:#2f7a4f;--good-bg:#e6f3ea;--bad:#c1392b;--bad-bg:#fbeae7;--shadow-ink:rgba(28,27,24,0.16)}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{position:relative;color:var(--ink);background:var(--paper);font-family:var(--font-mono),ui-monospace,"SFMono-Regular",Menlo,monospace;font-size:15px}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.035;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");background-size:180px 180px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}main{padding:2rem 0 4rem}.topbar,main{position:relative;width:min(1180px,calc(100% - 2rem));margin:0 auto}.topbar{padding:1.25rem 0 1rem;display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line)}.topbar,.wordmark{align-items:center}.wordmark{display:inline-flex;gap:.5rem;font-family:var(--font-display),Georgia,serif;font-size:1.05rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.wordmark:before{content:"";width:.55em;height:.55em;border-radius:50%;background:var(--accent);flex:none}.attempt-box,.keyboard,.lesson-text,.panel,.stat-card{border:1px solid var(--line);background:var(--panel);box-shadow:0 1px 2px rgba(28,27,24,.05);border-radius:12px}.hero,.typing-board{border:1.5px solid var(--ink);background:var(--panel);box-shadow:4px 4px 0 var(--accent-soft);border-radius:14px}.attempt-box,.hero,.keyboard,.panel,.typing-board{padding:1.6rem}.hero{display:grid;grid-gap:1rem;gap:1rem;margin-top:1.5rem}.hero-grid{display:grid;grid-template-columns:1.3fr 1fr;grid-gap:2rem;gap:2rem;align-items:center}.hero-art{display:flex;justify-content:center;align-items:center;color:var(--ink)}.hero-art img,.hero-art svg{width:100%;max-width:300px;height:auto}.eyebrow{display:inline-block;color:var(--accent);text-transform:uppercase;letter-spacing:.14em;font-size:.78rem;font-weight:700}.eyebrow:before{content:"— "}.headline{font-family:var(--font-display),Georgia,serif;font-size:clamp(1.9rem,4.6vw,3.5rem);line-height:1.08;margin:0;max-width:14ch;letter-spacing:-.01em}.caret{display:inline-block;width:.5em;height:.95em;background:var(--accent);margin-left:.1em;vertical-align:text-bottom;animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.subhead{max-width:64ch;color:var(--ink-soft);font-size:.98rem;line-height:1.75}.grid{display:grid;grid-gap:1rem;gap:1rem}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.actions,.inline{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.button,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border-radius:8px;padding:.75rem 1.1rem;border:1.5px solid var(--ink);font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;background:var(--panel);color:var(--ink);box-shadow:2px 2px 0 var(--shadow-ink);transition:transform .1s ease,box-shadow .1s ease}.button-link:hover,.button:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--shadow-ink)}.button-link:active,.button:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow-ink)}.button-link.primary,.button.primary{background:var(--accent);border-color:var(--accent-dark);color:#f9f7f0;box-shadow:2px 2px 0 var(--accent-dark)}.button-link.primary:hover,.button.primary:hover{box-shadow:3px 3px 0 var(--accent-dark)}.button-link.primary:active,.button.primary:active{box-shadow:1px 1px 0 var(--accent-dark)}.button-link.secondary,.button.secondary{background:transparent;border-color:var(--line-strong);box-shadow:none}.button-link.secondary:hover,.button.secondary:hover{box-shadow:none;background:var(--paper-soft)}.button-link.small,.button.small{padding:.5rem .85rem;font-size:.72rem}.button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.fields{display:grid;grid-gap:1rem;gap:1rem}.field{display:grid;grid-gap:.4rem;gap:.4rem}.field>span{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line-strong);border-radius:8px;padding:.75rem .85rem;background:var(--paper-soft)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.muted{color:var(--ink-soft)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:.8rem .65rem;border-bottom:1px solid var(--line);vertical-align:top}th{letter-spacing:.05em;font-size:.75rem;color:var(--ink-soft)}.status,th{text-transform:uppercase}.status{display:inline-flex;border:1px solid var(--line);border-radius:6px;padding:.28rem .6rem;font-size:.74rem;font-weight:700;letter-spacing:.03em;background:var(--paper-soft)}.status.good{background:var(--good-bg);color:var(--good);border-color:var(--good)}.status.bad{background:var(--bad-bg);color:var(--bad);border-color:var(--bad)}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:1rem;gap:1rem}.stat-card{padding:1rem}.stat-label{font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.stat-value{margin-top:.45rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:1.8rem;color:var(--accent-dark)}.lesson-text{padding:1.25rem;font-size:1.15rem;line-height:1.9;letter-spacing:.01em;white-space:pre-wrap}.char{border-radius:3px}.char.correct{background:rgba(47,122,79,.16)}.char.incorrect{background:rgba(193,57,43,.18)}.char.current{outline:2px solid var(--accent);background:var(--accent-soft)}.char.pending{color:rgba(28,27,24,.45)}.keyboard-grid{display:grid;grid-gap:.5rem;gap:.5rem}.keyboard-row{display:flex;gap:.45rem;flex-wrap:wrap}.key{min-width:2.7rem;padding:.55rem .7rem;border-radius:6px;background:var(--paper-soft);border:1.5px solid var(--line-strong);text-align:center;font-weight:700;font-size:.82rem;box-shadow:0 2px 0 var(--line-strong)}.key.active{background:var(--accent);color:#f9f7f0;border-color:var(--accent-dark);box-shadow:0 2px 0 var(--accent-dark);transform:translateY(1px)}.attempt-input{width:100%;min-height:170px;border:1px solid var(--line-strong);border-radius:10px;padding:1rem;background:var(--paper-soft);font-size:1.05rem;line-height:1.7}.section-title{margin:0 0 .75rem;font-family:var(--font-display),Georgia,serif;font-size:1.2rem}.stack{display:grid;grid-gap:1rem;gap:1rem}@media (max-width:920px){.grid.three,.grid.two,.hero-grid,.stats{grid-template-columns:1fr}.hero-art{order:-1;max-width:180px;margin:0 auto}.headline{max-width:none}}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_898c26{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_898c26{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}@font-face{font-family:Special Elite;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/0c310187b552b27d-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Special Elite;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e210f091ebfac73b-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Special Elite Fallback;src:local("Arial");ascent-override:60.00%;descent-override:25.33%;line-gap-override:0.00%;size-adjust:117.20%}.__className_91eb3e{font-family:Special Elite,Special Elite Fallback;font-weight:400;font-style:normal}.__variable_91eb3e{--font-display:"Special Elite","Special Elite Fallback"}