:root{--typing-ink:#0a0a0a;--typing-muted:#717171;--typing-line:#cfcfcf;--typing-surface:#f4f4f4}body{color:var(--typing-ink);background:#fff}.visually-hidden{clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.typing-game{width:min(100% - 2rem,46rem);min-height:100svh;margin-inline:auto;padding:clamp(5rem,12vw,8rem) 0 4rem}.typing-game__header{text-align:center;margin-top:clamp(2.5rem,7vw,4.5rem);transition:opacity .18s,visibility linear}.typing-game__header h1{letter-spacing:-.035em;margin:0;font-size:clamp(1.25rem,3vw,1.55rem)}.typing-game__intro{max-width:38rem;color:var(--typing-muted);margin:1.4rem auto 0;font-size:.82rem;line-height:1.35}.typing-game__intro p{margin:0}.typing-game__intro p+p{margin-top:.35rem;font-size:.68rem}.typing-game[data-game-state=running] .typing-game__intro{display:none}.typing-stage{display:grid}.typing-challenge,.typing-result{grid-area:1/1}.typing-stage>[hidden]{visibility:hidden;pointer-events:none;display:block!important}.typing-challenge{margin-top:clamp(2.2rem,6vw,3.8rem)}.typing-passage{color:#777;letter-spacing:-.025em;scroll-behavior:smooth;scrollbar-width:none;background:0 0;border:0;height:4.05em;margin:0;padding:0;font-size:clamp(1.8rem,4vw,2.7rem);line-height:1.35;position:relative;overflow:hidden}.typing-passage::-webkit-scrollbar{display:none}.typing-passage .is-correct{color:var(--typing-ink)}.typing-passage .is-incorrect{color:var(--typing-ink);text-decoration:line-through 2px}.typing-passage .is-current{background:var(--typing-ink);color:#fff}.typing-controls{grid-template-columns:minmax(0,1fr) 3.8rem 3.8rem;gap:.55rem;margin-top:4.15rem;display:grid}.typing-controls__input-wrap,.typing-publish__input-wrap{min-width:0;position:relative}.typing-controls input,.typing-publish input,.typing-publish button,.typing-timer,.typing-reset{border:1px solid #777;border-radius:.7rem;min-height:2.65rem}.typing-controls input,.typing-publish input{width:100%;font:inherit;background:#fff;padding:.55rem 1rem}.typing-timer{background:var(--typing-ink);color:#fff;font-variant-numeric:tabular-nums;place-items:center;display:grid}.typing-reset{background:var(--typing-ink);color:#fff;cursor:pointer;font-size:1.2rem}.typing-reset:hover{background:#282828}.typing-mascot{z-index:2;transform-origin:50% 100%;width:2.6rem;height:2rem;position:absolute;bottom:calc(100% - .08rem);right:.45rem}.typing-controls .typing-mascot{left:var(--typing-mascot-x,.45rem);transition:left .48s cubic-bezier(.22,1,.36,1);right:auto}.typing-mascot svg{width:100%;height:100%;animation:3.8s ease-in-out infinite typing-mascot-bob;display:block;overflow:visible}.typing-mascot path{fill:#fff;stroke:var(--typing-ink);stroke-width:2.35px;stroke-linejoin:round}.typing-mascot ellipse{fill:var(--typing-ink)}.typing-controls:focus-within .typing-mascot{animation:2.8s ease-in-out infinite typing-mascot-squish}.typing-ghost-race{z-index:1;pointer-events:none;height:3.85rem;position:absolute;bottom:calc(100% + .12rem);left:.45rem;right:.45rem;overflow:visible}.typing-ghost-racer{bottom:calc(var(--typing-ghost-row) * 1.85rem);max-width:5.25rem;color:var(--typing-ink);white-space:nowrap;flex-direction:column;align-items:center;gap:.08rem;transition:left .16s linear;display:flex;position:absolute;left:.45rem}.typing-controls .typing-ghost-racer .typing-mascot{opacity:.3;flex:none;width:1.82rem;height:1.4rem;transition:none;animation:none;position:relative;inset:auto}.typing-ghost-racer .typing-mascot svg{animation-duration:4.4s}.typing-ghost-racer .typing-mascot path{fill:#e9e9e9;stroke:#555;stroke-width:2.5px}.typing-ghost-racer .typing-mascot ellipse{fill:#555}.typing-ghost-racer__label{color:#666;text-align:center;text-overflow:ellipsis;max-width:3.8rem;font-size:.52rem;line-height:1;overflow:hidden}.typing-result{text-align:center;max-width:36rem;margin:clamp(3rem,7vw,4.5rem) auto 0}.typing-result__metrics{justify-content:center;gap:clamp(1.5rem,5vw,3rem);margin:0;display:flex}.typing-result__metrics div{align-items:baseline;gap:.55rem;display:flex}.typing-result__metrics dt{font-size:.78rem}.typing-result__metrics dd{margin:0;font-size:clamp(1.7rem,5vw,2.2rem);font-weight:750}.typing-text-button{cursor:pointer;background:0 0;border:0;border-bottom:1px solid;margin-top:1.15rem;padding:.15rem 0;font-size:.82rem;font-weight:650}.typing-text-button:disabled{color:var(--typing-muted);cursor:default}.typing-publish{margin-top:clamp(2rem,5vw,2.8rem)}.typing-publish__row{grid-template-columns:minmax(0,1fr) 7.8rem;gap:.55rem;display:grid}.typing-publish button{border-color:var(--typing-ink);background:var(--typing-ink);color:#fff;cursor:pointer}.typing-publish__status{min-height:1.1rem;color:var(--typing-muted);text-align:left;margin:.65rem 0 0;font-size:.72rem}.typing-publish__status:empty{display:none}.typing-status{text-align:center;min-height:1.4rem;color:var(--typing-muted);margin:1rem 0 0;font-size:.75rem;transition:opacity .18s,visibility linear}.typing-status:empty{display:none}.typing-leaderboard{margin-top:clamp(3.5rem,9vw,6rem);transition:opacity .18s,visibility linear}.typing-leaderboard h2{text-align:center;margin:0 0 1.1rem;font-size:1.08rem}.typing-leaderboard table{border-collapse:collapse;width:100%;font-size:.88rem}.typing-leaderboard tr{border-bottom:1px solid #e1e1e1}.typing-leaderboard td,.typing-leaderboard th{text-align:left;height:2.55rem;padding:0 .25rem}.typing-leaderboard td:first-child{font-variant-numeric:tabular-nums;width:3rem}.typing-leaderboard__wpm{width:4rem;font-weight:700;text-align:right!important}.typing-leaderboard__accuracy{width:4.5rem;color:var(--typing-muted);font-variant-numeric:tabular-nums;text-align:right!important}.typing-leaderboard__played{width:6rem;color:var(--typing-muted);font-size:.76rem;text-align:right!important}.typing-leaderboard th{font-weight:600}.typing-leaderboard__empty{text-align:center;color:var(--typing-muted);margin:0;font-size:.82rem}.typing-back{border:1px solid var(--typing-ink);width:2.35rem;min-height:2.35rem;color:var(--typing-ink);border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:.75rem;font-weight:600;text-decoration:none;transition:background-color .16s,color .16s,opacity .18s,visibility linear;display:inline-flex}.typing-back:hover{background:var(--typing-ink);color:#fff}.typing-back:focus-visible{outline:2px solid var(--typing-ink);outline-offset:3px}.typing-game[data-game-state=running] .typing-back,.typing-game[data-game-state=running] .typing-game__header,.typing-game[data-game-state=running] .typing-status,.typing-game[data-game-state=running] .typing-leaderboard{opacity:0;visibility:hidden;pointer-events:none;transition-delay:0s,.18s}.typing-game[data-game-state=running] .typing-back{transition-delay:0s,0s,0s,.18s}@keyframes typing-mascot-bob{0%,to{transform:translateY(0)scaleY(.98)}50%{transform:translateY(-4px)scaleY(1.02)}}@keyframes typing-mascot-squish{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-3px)scale(.97,1.04)}}@media (width<=560px){.typing-game{padding-top:3.5rem}.typing-game__intro{max-width:22rem}.typing-controls{grid-template-columns:minmax(0,1fr) 3.5rem 3.5rem}.typing-result__metrics{gap:1rem}.typing-result__metrics div,.typing-result__metrics dt{display:block}.typing-publish__row{grid-template-columns:minmax(0,1fr) 6.8rem}.typing-leaderboard__wpm{width:3.25rem}.typing-leaderboard__accuracy{width:3.75rem}.typing-leaderboard__played{width:4.5rem}}@media (prefers-reduced-motion:reduce){.typing-mascot,.typing-mascot svg{animation:none!important}.typing-controls .typing-mascot,.typing-ghost-racer{transition:none}.typing-passage{scroll-behavior:auto}.typing-game__header,.typing-status,.typing-leaderboard,.typing-back{transition:none}}
