.tm{max-width:1160px;margin:auto;padding:12px 0 48px}.tm [hidden]{display:none!important}.tm button,.tm select{border:1px solid #34363f;background:#17191f;color:#f5f5f2;border-radius:7px;padding:11px 17px;font:inherit;cursor:pointer}.tm button:hover{border-color:#ff564c}.tm .primary{background:#ff3b30;border-color:#ff3b30;color:white;font-weight:700}.tm-nav,.section-label,.start-row,.game-actions,.workspace-top,.result-actions{display:flex;align-items:center;justify-content:space-between;gap:18px}.tm-nav{font-size:12px;color:#a8adb9;margin-bottom:46px}.tm-nav>span,.eyebrow,.section-label>span{font:11px 'IBM Plex Mono',monospace;letter-spacing:1.5px}.tm-hero{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:50px;padding:24px 0 50px}.eyebrow{color:#ff665d;margin-bottom:24px}.tm h1{font-size:clamp(40px,4.3vw,64px);letter-spacing:-3px;line-height:1.07}.tm h1 em{color:#ff5147;font-style:normal}.intro{font-size:16px;max-width:390px;color:#a8adb9;margin:24px 0}.records{display:flex;gap:44px;font:10px 'IBM Plex Mono',monospace;color:#a8adb9;letter-spacing:1px}.records b{display:block;font:30px 'Space Grotesk',sans-serif;color:white;margin-top:7px}.records small{font-size:12px}.keyboard-art{border-bottom:1px solid #ff3b3060;padding:20px 4px 30px;perspective:700px;background:radial-gradient(ellipse at bottom,#ff3b3018,transparent 70%)}.speed-art{text-align:center;color:#a8adb9;font:10px 'IBM Plex Mono',monospace;letter-spacing:3px}.speed-art strong{display:block;font:88px 'Space Grotesk',sans-serif;color:#eee;letter-spacing:-6px}.speed-art strong span{color:#ff3b30;animation:blink 1.3s steps(2) infinite}.speed-art small{font-size:9px}#keyboard{transform:rotateX(28deg) rotateZ(-8deg);margin-top:30px}.key-row{display:flex;justify-content:center;gap:6px;margin:6px}.key-row i{font:12px 'IBM Plex Mono',monospace;font-style:normal;text-align:center;min-width:29px;padding:9px 5px;background:#191b21;border:1px solid #55515a;border-bottom:3px solid #6d2527;border-radius:5px;box-shadow:0 3px 12px #ff3b3010}.key-row i:nth-child(4n){border-color:#ff5147;color:#ff827a;animation:keylight 3s infinite alternate}.setup{border-top:1px solid #292d36;padding:28px 0}.section-label{margin-bottom:22px}.tm h2{font-size:25px}.section-label>span{color:#8c93a1;font-size:9px}.modes{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.modes button{text-align:left;padding:22px 18px;min-height:140px}.modes button[aria-pressed=true]{background:#ff3b300c;border-color:#ff5147;box-shadow:inset 0 3px #ff5147}.modes small{font:9px 'IBM Plex Mono',monospace;color:#a8adb9;letter-spacing:.6px}.modes strong{display:block;font:20px 'Space Grotesk',sans-serif;margin:14px 0 7px}.modes span{font-size:12px;color:#a8adb9}.start-row{margin-top:24px;justify-content:flex-start;flex-wrap:wrap}.start-row label{font-size:12px;color:#a8adb9}.start-row select{margin-left:12px}.start-row .primary{margin-left:auto;padding:13px 32px}.history{border-top:1px solid #292d36;margin-top:12px;padding-top:32px;display:grid;grid-template-columns:1fr 1fr;gap:50px}.history .eyebrow{font-size:9px;margin-bottom:12px}.history h2{font-size:23px}.history p,.history li{font-size:12px;color:#a8adb9;margin-top:12px}.history h3{font-size:14px}.history ol{padding-left:18px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #34363f;border-radius:10px;margin:32px 0}.metrics>div{padding:22px;border-right:1px solid #34363f}.metrics>div:last-child{border:0}.metrics small{display:block;color:#a8adb9;font:10px 'IBM Plex Mono',monospace}.metrics strong{font:42px 'Space Grotesk',sans-serif}.metrics>div:first-child strong{color:#ff665d}.workspace{background:#111318;border:1px solid #292d36;border-radius:12px;padding:28px}.workspace-top{font-size:11px;color:#a8adb9;flex-wrap:wrap}#passage{font:25px/1.9 'IBM Plex Mono',monospace;color:#a0a6b3;margin:28px 0;max-height:230px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}.tm .right{color:#83e8b4}.tm .wrong{color:#ff817b;background:#ff3b3025}.tm .cursor{border-left:2px solid #ff5147;box-shadow:-3px 0 9px #ff3b3050}.workspace label{display:block;font-size:12px;color:#a8adb9;margin-bottom:8px}.workspace textarea{display:block;width:100%;resize:vertical;background:#090a0d;border:1px solid #40434f;border-radius:8px;padding:16px;color:white;font:17px/1.6 'IBM Plex Mono',monospace}.workspace textarea:disabled{opacity:.5}#progress{width:100%;height:4px;accent-color:#ff5147;margin:24px 0}.game-actions{flex-wrap:wrap}.game-actions>span{font-size:11px;color:#a8adb9;margin-right:auto}#results{padding:36px 0}#results h2{font-size:42px}#rating{margin:20px 0;color:#ff817b}.result-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#34363f;border:1px solid #34363f;border-radius:8px;overflow:hidden;margin:24px 0}.result-grid div{background:#111318;padding:20px}.result-grid small{display:block;color:#a8adb9;font-size:11px}.result-grid strong{font:32px 'Space Grotesk',sans-serif}.result-actions{justify-content:flex-start;flex-wrap:wrap}#save-status,#daily-status{font-size:12px;color:#a8adb9;margin:12px 0}.tm dialog{background:#17191f;color:#f5f5f2;border:1px solid #40434f;border-radius:12px;max-width:600px;width:90%;margin:auto;padding:32px}.tm dialog::backdrop{background:#000b;backdrop-filter:blur(5px)}.tm dialog p{margin:18px 0;color:#bec1cc;font-size:14px}@keyframes blink{50%{opacity:.1}}@keyframes keylight{to{box-shadow:0 1px 14px #ff3b3038}}@media(max-width:760px){.tm{padding:8px}.tm-nav>span,.section-label>span{display:none}.tm-nav{margin-bottom:15px}.tm-hero{gap:15px;grid-template-columns:1fr;padding-top:14px}.tm h1{letter-spacing:-1.5px}.keyboard-art{display:none}.modes{grid-template-columns:1fr 1fr}.modes button{padding:15px;min-height:130px}.start-row{gap:10px}.start-row .primary{width:100%;margin:0}.history{grid-template-columns:1fr;gap:25px}.metrics>div{padding:12px 8px}.metrics strong{font-size:28px}.metrics small{font-size:8px}.workspace{padding:16px}#passage{font-size:20px;max-height:200px}.result-grid{grid-template-columns:1fr 1fr}.game-actions{gap:8px}.game-actions>span{width:100%}}@media(prefers-reduced-motion:reduce){.tm *{animation:none!important;scroll-behavior:auto!important}}

/* Keystroke and session feedback */
#flow-feedback{color:#83e8b4;font:11px 'IBM Plex Mono',monospace;min-height:18px}.workspace.mistake-flash{animation:mistakeFeedback .28s ease-out}.workspace textarea.typing-glow{animation:typingFeedback .22s ease-out}.streak-pop{animation:streakPop .4s ease-out}.results-arrive{animation:resultsArrive .45s ease-out}.tm .time-warning{color:#ff665d;animation:timerPulse 1s ease-in-out infinite}.key-row i.key-hit{animation:keyHit .3s ease-out!important}.tm button{transition:transform .16s ease,background .16s ease,border-color .16s ease}.tm button:active{transform:translateY(2px)}
@keyframes typingFeedback{from{border-color:#83e8b4;box-shadow:0 0 18px #83e8b426}to{border-color:#40434f;box-shadow:none}}
@keyframes mistakeFeedback{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px);border-color:#ff5147}75%{transform:translateX(3px)}}
@keyframes streakPop{from{transform:translateY(5px);opacity:.3}to{transform:translateY(0);opacity:1}}
@keyframes resultsArrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes timerPulse{50%{opacity:.55}}
@keyframes keyHit{0%{background:#ff5147;color:#fff;transform:translateY(3px);box-shadow:0 0 25px #ff514780}100%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.tm *, .tm .key-row i.key-hit{animation:none!important;transition:none!important}}
