:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--error:#d32f2f;--dimmed:#c4c0ca;--kb-case:#2a2a2e;--kb-case-border:#3a3a3e;--kb-cap:#e8e4df;--kb-cap-dark:#d8d4cf;--kb-cap-border:#c8c4bf;--kb-cap-legend:#3a3536;--kb-space:#6b6375;--kb-space-dark:#5b5365;--kb-space-border:#4b4355;--kb-space-legend:#d0ccc7;--kb-wall:#b8b4af;--kb-wall-space:#4b4355;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;--serif:Georgia, "Times New Roman", serif;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width<=1024px){:root{font-size:16px}}body{margin:0}#root{max-width:100%;min-height:100svh;margin:0 auto}.quote-display{max-width:700px;font-family:var(--mono);color:var(--text-h);text-align:left;-webkit-user-select:none;user-select:none;touch-action:manipulation;margin:0 auto;font-size:20px;line-height:180%}.quote-display .char{white-space:pre-wrap;position:relative}.quote-display .char.typed{color:var(--dimmed)}.quote-display .char.error{color:var(--error)}.quote-display .char.current:before{content:"";background:var(--text-h);width:2px;animation:1.06s step-end infinite blink;position:absolute;top:2px;bottom:2px;left:0}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@media (prefers-reduced-motion:reduce){.quote-display .char.current:before{animation:none}}.quote-reveal{opacity:0;flex-direction:column;align-items:center;gap:24px;max-width:600px;margin:0 auto;animation:.3s ease-out .2s forwards reveal-in;display:flex}@keyframes reveal-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.quote-reveal{opacity:1;animation:none}}.quote-reveal-text{font-family:var(--serif);color:var(--text-h);text-align:center;font-size:28px;line-height:170%}.quote-reveal-attribution{font-family:var(--serif);color:var(--text);font-size:16px}.quote-reveal-stats{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--dimmed);font-size:13px}.quote-reveal-hint{font-family:var(--mono);color:var(--dimmed);font-size:12px}.quote-reveal-buttons-mobile{display:none}@media (pointer:coarse){.quote-reveal-hint-desktop{display:none}.quote-reveal-buttons-mobile{gap:12px;display:flex}}.quote-reveal-btn{font-family:var(--mono);border:1px solid var(--dimmed);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:6px;min-height:44px;padding:0 24px;font-size:13px}.quote-reveal-btn-primary{color:var(--text-h)}.quote-reveal-btn-secondary{color:var(--dimmed)}.quote-reveal-btn:hover,.quote-reveal-btn:active{border-color:var(--text)}.quote-reveal-btn:focus-visible{outline:2px solid var(--text);outline-offset:2px}@media (width<=1024px){.quote-reveal-text{font-size:22px}}.keyboard{-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 20% 30%, #ffffff05 0%, transparent 50%), var(--kb-case);border:1px solid var(--kb-case-border);border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:16px;display:flex;box-shadow:0 1px 2px #0000004d,0 8px 24px #00000026}.keyboard-row{gap:6px;display:flex}.keyboard-row:nth-child(2){padding-left:22px}.keyboard-row:nth-child(3){padding-left:44px}.key{width:44px;height:44px;font-family:var(--mono);cursor:default;background:linear-gradient(to bottom, var(--kb-cap) 0%, var(--kb-cap-dark) 100%);border:1px solid var(--kb-cap-border);color:var(--kb-cap-legend);box-shadow:0 3px 0 0 var(--kb-wall), 0 3px 0 1px var(--kb-cap-border), 0 5px 8px #00000040, inset 0 1px 0 #fff6;border-radius:6px;justify-content:center;align-items:center;font-size:14px;font-weight:500;transition:transform 80ms,box-shadow 80ms,background 80ms;display:flex}.key.active{background:linear-gradient(to bottom, var(--kb-cap-dark) 0%, color-mix(in srgb, var(--kb-cap-dark) 90%, black) 100%);box-shadow:0 1px 0 0 var(--kb-wall), 0 1px 0 1px var(--kb-cap-border), 0 2px 4px #0003, inset 0 1px 0 #fff3;transform:translateY(2px)}.key.space{background:linear-gradient(to bottom, var(--kb-space) 0%, var(--kb-space-dark) 100%);border-color:var(--kb-space-border);width:220px;color:var(--kb-space-legend);box-shadow:0 3px 0 0 var(--kb-wall-space), 0 3px 0 1px var(--kb-space-border), 0 5px 8px #00000040, inset 0 1px 0 #ffffff26}.key.space.active{background:linear-gradient(to bottom, var(--kb-space-dark) 0%, color-mix(in srgb, var(--kb-space-dark) 90%, black) 100%);box-shadow:0 1px 0 0 var(--kb-wall-space), 0 1px 0 1px var(--kb-space-border), 0 2px 4px #0003, inset 0 1px 0 #ffffff1a}@media (prefers-reduced-motion:reduce){.key{transition:none}}@media (pointer:coarse){.keyboard{display:none}}@media (width<=640px){.keyboard{padding:12px}.key{width:36px;height:36px;box-shadow:0 2px 0 0 var(--kb-wall), 0 2px 0 1px var(--kb-cap-border), 0 3px 6px #00000040, inset 0 1px 0 #fff6;font-size:12px}.key.active{box-shadow:0 0 0 0 var(--kb-wall), 0 0 0 1px var(--kb-cap-border), 0 1px 3px #0003, inset 0 1px 0 #fff3}.key.space{width:170px;box-shadow:0 2px 0 0 var(--kb-wall-space), 0 2px 0 1px var(--kb-space-border), 0 3px 6px #00000040, inset 0 1px 0 #ffffff26}.key.space.active{box-shadow:0 0 0 0 var(--kb-wall-space), 0 0 0 1px var(--kb-space-border), 0 1px 3px #0003, inset 0 1px 0 #ffffff1a}.keyboard-row:nth-child(2){padding-left:16px}.keyboard-row:nth-child(3){padding-left:32px}}.game{box-sizing:border-box;touch-action:manipulation;flex-direction:column;justify-content:center;align-items:center;gap:48px;min-height:100svh;padding:32px 20px;display:flex}.game-input{white-space:nowrap;opacity:0;border:0;width:1px;height:1px;margin:0;padding:0;font-size:16px;position:absolute;top:0;left:-9999px;overflow:hidden}.tap-to-type{z-index:10;cursor:pointer;-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.tap-to-type-label{font-family:var(--mono);color:var(--dimmed);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px 24px;font-size:14px}@media (pointer:fine){.tap-to-type{display:none}}
