@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/886030b0b59bc5a7-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:100 800;font-display:swap;src:url(/_next/static/media/0aa834ed78bf6d07-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:100 800;font-display:swap;src:url(/_next/static/media/67957d42bae0796d-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:100 800;font-display:swap;src:url(/_next/static/media/f911b923c6adde36-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:100 800;font-display:swap;src:url(/_next/static/media/939c4f875ee75fbb-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:100 800;font-display:swap;src:url(/_next/static/media/bb3ef058b751a6ad-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_3c557b{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_3c557b{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{--bg:#17110d;--bg-raised:#211913;--text:#ece0cd;--sub:#6d5d4e;--sub-dim:#4a3f35;--accent:#c8935f;--accent-soft:#8a6b4f;--error:#cf6b5d;--error-bg:#3a201c}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-mono),ui-monospace,"SFMono-Regular","Menlo","Consolas",monospace;-webkit-font-smoothing:antialiased;line-height:1.6;overflow-x:hidden}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:.2rem}.app{max-width:1300px;min-height:100vh;margin:0 auto;padding:2rem 2rem 1.5rem;display:flex;flex-direction:column;gap:1.5rem}.header{display:flex;align-items:baseline;gap:.75rem}.logo{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.logo .dot{color:var(--accent)}.tagline{color:var(--sub);font-size:.85rem}.test{gap:1rem}.test,.test-center{flex:1 1 auto;display:flex;flex-direction:column}.test-center{justify-content:center;gap:.75rem;padding-bottom:10vh}.modebar{flex-wrap:wrap;gap:.5rem 1.25rem;background:var(--bg-raised);border-radius:.6rem;padding:.6rem 1rem;font-size:.85rem;color:var(--sub);-webkit-user-select:none;-moz-user-select:none;user-select:none}.modebar,.modebar .group{display:flex;align-items:center}.modebar .group{gap:.9rem}.modebar .divider{width:1px;align-self:stretch;background:var(--sub-dim)}.modebar button{background:none;border:none;color:var(--sub);font-family:inherit;font-size:inherit;cursor:pointer;padding:.35rem .3rem;transition:color .12s ease}.modebar button:hover{color:var(--text)}.modebar button.active{color:var(--accent)}.modebar .uncensored.on{color:var(--error)}.modebar .sound.on{color:var(--accent-soft)}.test-area{position:relative;cursor:text;min-height:9rem}.wordstream{position:relative;height:8.4rem;overflow:hidden;font-size:1.5rem;line-height:2.8rem;transition:filter .2s ease}.wordstream.blurred{filter:blur(4px);opacity:.55}.wordstream-inner{position:relative;display:flex;flex-wrap:wrap;align-content:flex-start;transition:transform .15s ease}.word{margin-right:.65rem;white-space:nowrap;color:var(--sub)}.char{display:inline-block}.char.correct{color:var(--text)}.char.incorrect{color:var(--error)}.char.pending{color:var(--sub)}.char.extra{color:var(--error);background:var(--error-bg)}.caret{position:absolute;top:0;left:0;width:2px;background:var(--accent);border-radius:1px;animation:blink 1s steps(1) infinite;transition:transform 85ms cubic-bezier(.25,1,.5,1);will-change:transform;pointer-events:none}.wordstream.typing .caret{animation:none}.wordstream.blurred .caret{opacity:0}@keyframes blink{50%{opacity:0}}.quote-source{margin-top:.4rem;color:var(--sub);font-size:.85rem;transition:opacity .2s ease}.focus-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--sub);font-size:.95rem;gap:.4rem;pointer-events:none}.hint-touch{display:none}@media (pointer:coarse){.hint-pointer{display:none}.hint-touch{display:inline}}.capture{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;border:none;background:transparent;cursor:text;z-index:2}.retry{display:flex;align-items:center;justify-content:center;gap:.25rem}.retry button{background:none;border:none;color:var(--sub-dim);font-family:inherit;font-size:.9rem;cursor:pointer;padding:.4rem 1rem;transition:color .12s ease}.retry button:hover{color:var(--text)}.retry-hint{color:var(--sub-dim);font-size:.75rem}.retry-hint kbd{color:var(--sub)}.timer{color:var(--accent);font-size:1.5rem;height:2rem}.stats{display:flex;flex-direction:column;gap:1.5rem}.stats-context{color:var(--sub);font-size:.9rem}.new-best{margin-left:1rem;color:var(--accent);display:inline-block;animation:best-pop .45s cubic-bezier(.25,1,.5,1) both}@keyframes best-pop{0%{opacity:0;transform:scale(.85) translateY(2px)}60%{transform:scale(1.04)}to{opacity:1;transform:scale(1)}}.stat.best .value{animation:best-glow .9s ease-out both}@keyframes best-glow{0%{text-shadow:0 0 0 rgba(200,147,95,0)}35%{text-shadow:0 0 24px rgba(200,147,95,.55)}to{text-shadow:0 0 0 rgba(200,147,95,0)}}.stats-main{display:flex;gap:2.5rem;align-items:flex-end;flex-wrap:wrap}.stat .label{color:var(--sub);font-size:.8rem;text-transform:lowercase}.stat .value{color:var(--accent);font-size:3.2rem;line-height:1.1;font-weight:700}.stat.small .value{font-size:1.9rem;color:var(--text)}.stat .unit{color:var(--sub);font-size:1rem;margin-left:.25rem}.stats-sub{display:flex;gap:2rem;color:var(--sub);font-size:.9rem;flex-wrap:wrap}.prev-score{color:var(--sub);font-size:.85rem}.actions{display:flex;gap:1rem;align-items:center}.btn{background:var(--bg-raised);color:var(--text);border:none;border-radius:.5rem;padding:.6rem 1.1rem;font-family:inherit;font-size:.9rem;cursor:pointer;transition:background .12s ease,color .12s ease}.btn:hover{background:var(--accent);color:var(--bg)}.hint-key{color:var(--sub);font-size:.8rem}.hint-key kbd{background:var(--bg-raised);border-radius:.3rem;padding:.05rem .4rem;font-family:inherit;color:var(--text)}.modebar-wrap{position:relative}.confirm{position:absolute;top:calc(100% + .5rem);left:0;z-index:10;background:var(--bg-raised);border:1px solid var(--sub-dim);border-radius:.6rem;padding:1rem 1.2rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;font-size:.9rem;box-shadow:0 8px 24px rgba(0,0,0,.45);animation:confirm-in .15s ease-out both}@keyframes confirm-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.confirm .warn{color:var(--error)}.challenge-bar .challenge-label{color:var(--accent)}.challenge-bar button{background:none;border:none;color:var(--sub);font-family:inherit;font-size:inherit;cursor:pointer;padding:.35rem .3rem;transition:color .12s ease}.challenge-bar button:hover{color:var(--text)}.panel{position:absolute;top:calc(100% + .5rem);left:0;z-index:10;width:min(34rem,100%);background:var(--bg-raised);border:1px solid var(--sub-dim);border-radius:.6rem;padding:1rem 1.2rem;display:flex;flex-direction:column;gap:.7rem;font-size:.9rem;box-shadow:0 8px 24px rgba(0,0,0,.45);animation:confirm-in .15s ease-out both}.panel-title{color:var(--accent)}.panel-blurb{color:var(--sub);font-size:.85rem}.panel-input{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--sub-dim);border-radius:.4rem;padding:.5rem .65rem;font-family:inherit;font-size:.9rem;resize:vertical}.panel-input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.panel-input::placeholder{color:var(--sub-dim)}.panel-kind{display:flex;gap:.9rem}.panel-kind button{background:none;border:none;color:var(--sub);font-family:inherit;font-size:.85rem;cursor:pointer;padding:.2rem .3rem}.panel-kind button.active{color:var(--accent)}.panel-link{background:var(--bg);border-radius:.4rem;padding:.45rem .65rem;font-size:.75rem;color:var(--sub);overflow-wrap:anywhere;max-height:4.2rem;overflow-y:auto}.panel-actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.panel-actions .btn{text-decoration:none;display:inline-block}.btn.quiet{background:none;color:var(--sub)}.btn.quiet:hover{background:none;color:var(--text)}.btn.disabled,.btn:disabled{opacity:.45;cursor:default;pointer-events:none}.panel-fine{color:var(--sub-dim);font-size:.75rem}.pace{max-width:36rem}.pace-head{display:flex;gap:1rem;align-items:baseline;margin-bottom:.25rem}.pace-title{color:var(--sub);font-size:.8rem}.pace-note{color:var(--sub-dim);font-size:.75rem}.pace-wrap{position:relative;border-radius:.4rem}.pace-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pace-svg{display:block;width:100%;height:auto}.pace-grid{stroke:var(--bg-raised);stroke-width:1}.pace-tick{fill:var(--sub);font-size:10px;font-family:inherit}.pace-area{fill:rgba(200,147,95,.08)}.pace-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.pace-x line{stroke:var(--error);stroke-width:2;stroke-linecap:round}.pace-end{fill:var(--accent);stroke:var(--bg);stroke-width:2}.pace-endlabel{fill:var(--text);font-size:11px;font-family:inherit}.pace-cross{stroke:var(--sub-dim);stroke-width:1}.pace-dot{fill:var(--accent);stroke:var(--bg);stroke-width:2}.pace-tip{position:absolute;top:.25rem;background:var(--bg-raised);border:1px solid var(--sub-dim);border-radius:.4rem;padding:.35rem .6rem;display:flex;flex-direction:column;pointer-events:none;white-space:nowrap;z-index:5}.pace-tip-value{color:var(--text);font-size:.9rem}.pace-tip-sub{color:var(--sub);font-size:.75rem}.gloss{max-width:44rem}.gloss-head{display:flex;gap:1rem;align-items:baseline;margin-bottom:.4rem}.gloss-title{color:var(--sub);font-size:.8rem}.gloss-note{color:var(--sub-dim);font-size:.75rem}.gloss-words{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem .5rem;max-height:9.5rem;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--sub-dim) var(--bg-raised);scrollbar-gutter:stable}.gloss-words::-webkit-scrollbar{width:.55rem}.gloss-words::-webkit-scrollbar-track{background:var(--bg-raised);border-radius:999px}.gloss-words::-webkit-scrollbar-thumb{background:var(--sub-dim);border:2px solid var(--bg-raised);border-radius:999px}.gloss-words::-webkit-scrollbar-thumb:hover{background:var(--sub)}.gloss-item{position:relative}.gloss-chip{display:inline-block;background:var(--bg-raised);color:var(--text);border-radius:.4rem;padding:.1rem .55rem;font-size:.85rem;text-decoration:none;border-bottom:1px solid var(--accent-soft);transition:color .12s ease,background .12s ease}.gloss-chip:hover{color:var(--bg);background:var(--accent)}.gloss-plain{color:var(--sub-dim);font-size:.85rem;padding:.1rem .15rem}.gloss-tip{position:fixed;z-index:100;width:max-content;max-width:17rem;background:var(--bg-raised);border:1px solid var(--sub-dim);border-radius:.4rem;padding:.4rem .6rem;font-size:.78rem;color:var(--text);box-shadow:0 6px 18px rgba(0,0,0,.45);opacity:0;visibility:hidden;transform:translate(-50%,-100%);transition:opacity .12s ease;pointer-events:none}.gloss-tip.visible{opacity:1;visibility:visible}.footer{margin-top:auto;color:var(--sub-dim);font-size:.8rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.footer a{color:var(--sub);text-decoration:none}.footer a:hover{color:var(--accent)}@media (max-width:600px){.app{padding:2rem 1rem}.wordstream{font-size:1.25rem;line-height:2.4rem;height:7.2rem}.stat .value{font-size:2.6rem}.modebar{gap:.25rem .9rem}}@media (prefers-reduced-motion:reduce){.caret,.wordstream-inner{transition:none}.confirm,.new-best,.panel,.stat.best .value{animation:none}.gloss-tip{transition:none}}