.typing-app{--typing-good:#15803d;--typing-bad:#be123c}.dark .typing-app{--typing-good:#86efac;--typing-bad:#fda4af}.typing-hero{margin-bottom:2rem}.typing-panel,.typing-history{border-radius:1.5rem;padding:clamp(1rem,3vw,2rem)}.typing-toolbar,.typing-options,.typing-bottom,.typing-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.typing-tabs{background:var(--glass-bg);border-radius:1rem;flex-wrap:wrap;gap:.25rem;padding:.3rem;display:flex}.typing-tabs button{border-radius:.75rem;padding:.65rem 1rem;font-size:.875rem;font-weight:600}.typing-app button[aria-pressed=true]{background:color-mix(in srgb,var(--color-brand-500) 14%,transparent);color:var(--color-brand-600);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-brand-500) 35%,transparent)}.dark .typing-app button[aria-pressed=true]{color:var(--color-brand-300)}.typing-options{justify-content:flex-start;margin:1.5rem 0}.typing-options label{gap:.4rem;font-size:.75rem;font-weight:600;display:grid}.typing-options select{background:var(--glass-bg);border:1px solid var(--glass-ring);color:inherit;border-radius:.65rem;padding:.55rem .8rem}.typing-options option{color:#172033;background:#fff}.typing-sound{flex-shrink:0;place-items:center;width:2.5rem;height:2.5rem;margin-left:auto;padding:0;display:grid}.typing-levels{grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1.5rem;display:grid}.typing-levels button{text-align:left;border:1px solid var(--glass-ring);border-radius:1rem;padding:1rem}.typing-levels span{opacity:.75;margin-top:.4rem;font-size:.8rem;line-height:1.6;display:block}.typing-stats{grid-template-columns:repeat(3,1fr);gap:1rem;margin:1.75rem 0;display:grid}.typing-stats>div{gap:.3rem;display:grid}.typing-stats strong{font-variant-numeric:tabular-nums;font-size:clamp(1.6rem,4vw,2.6rem);line-height:1.2}.typing-stats>div:first-child strong{color:var(--color-brand-500)}.typing-stats small{margin-left:.25rem;font-size:1rem}.typing-stats span{opacity:.65;font-size:.75rem}.typing-prompt{letter-spacing:.025em;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--glass-bg);border:1px solid var(--glass-ring);cursor:text;scrollbar-width:thin;color:#64748b;border-radius:1rem;height:175px;padding:1rem;font-family:Consolas,monospace;font-size:clamp(1.15rem,2.8vw,1.55rem);line-height:1.9;position:relative;overflow:auto}.dark .typing-prompt{color:#94a3b8}.typing-correct{color:var(--typing-good)}.typing-wrong{color:var(--typing-bad);background:color-mix(in srgb,var(--typing-bad) 12%,transparent);text-decoration:underline}.typing-cursor{border-left:2px solid var(--color-brand-500);margin-left:-2px}.typing-input-label{opacity:.75;margin:1rem 0 .5rem;font-size:.8rem;display:block}.typing-app textarea{resize:vertical;background:var(--glass-bg);border:1px solid var(--glass-ring);width:100%;min-height:80px;max-height:200px;color:inherit;border-radius:.85rem;padding:.85rem;font-family:Consolas,monospace;font-size:16px;display:block}.typing-app :is(button,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--color-brand-500);outline-offset:3px}.typing-bottom{margin-top:1rem;font-size:.75rem}.typing-bottom>span{opacity:.65}.typing-result{border-top:1px solid var(--glass-ring);margin-top:2rem;padding-top:1.5rem}.typing-eyebrow{letter-spacing:.15em;color:var(--color-brand-500);font-size:.7rem;font-weight:700}.typing-result h2{margin-top:.5rem;font-size:1.35rem;font-weight:700}.typing-result>p:not(.typing-eyebrow){opacity:.75;font-size:.85rem}.typing-chart{color:var(--color-brand-500);margin:1.5rem 0}.typing-chart svg{width:100%;max-height:130px}.typing-chart span{font-size:.75rem}.typing-actions{justify-content:flex-start;margin-top:1.25rem}.typing-history{margin-top:1.5rem}.typing-history h2{font-size:1.2rem;font-weight:700}.typing-history p{opacity:.7;margin:.8rem 0;font-size:.85rem}.typing-history li{border-bottom:1px solid var(--glass-ring);justify-content:space-between;gap:1rem;padding:.85rem 0;font-size:.8rem;display:flex}.typing-history li span{opacity:.65;margin-top:.25rem;display:block}@media (max-width:600px){.typing-levels{grid-template-columns:1fr}.typing-tabs{width:100%}.typing-tabs button{flex:1;padding:.6rem;font-size:.75rem}.typing-sound{margin-left:0}.typing-options{gap:.75rem}.typing-stats{gap:.5rem}.typing-bottom{align-items:flex-start}}.typing-panel{border-radius:0;padding:0}.typing-panel>.typing-toolbar{justify-content:center;margin-bottom:2rem}.typing-options{justify-content:center;gap:1.25rem 1.75rem;margin:0 0 2rem}.typing-sound{align-self:flex-end;margin-left:0}.typing-live{grid-template-columns:1fr auto auto;align-items:center;gap:2rem;padding:0 1rem}.typing-live>div:not(:first-child){text-align:right;flex-direction:column-reverse;display:flex}.typing-live>div:not(:first-child) strong{font-size:1.35rem}.typing-live>div:first-child strong{font-size:3rem}.typing-surface{border-radius:1.5rem;padding:clamp(1.25rem,4vw,2.5rem);transition:box-shadow .2s;position:relative;overflow:hidden}.typing-surface:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--color-brand-500) 45%,transparent)}.typing-surface .typing-prompt{height:150px;box-shadow:none;pointer-events:none;background:0 0;border:0;border-radius:0;padding:0;font-size:clamp(1.2rem,2.8vw,1.6rem);line-height:1.75;transition:filter .2s,opacity .2s;overflow:hidden}.typing-app textarea.typing-capture{opacity:0;resize:none;cursor:text;z-index:2;border:0;width:100%;height:100%;min-height:0;max-height:none;margin:0;padding:0;font-size:16px;position:absolute;inset:0;overflow:hidden}.typing-cursor{border:0;margin:0;position:relative}.typing-cursor:before{content:"";background:var(--color-brand-500);border-radius:2px;width:2px;height:1.2em;position:absolute;top:.05em;left:-1px}.is-focused .typing-cursor:before{animation:1s step-end infinite typing-blink}.is-unfocused .typing-prompt{filter:blur(3px);opacity:.45}.typing-focus-notice{pointer-events:none;z-index:3;justify-content:center;align-items:center;font-size:.9rem;font-weight:600;display:flex;position:absolute;inset:0}.typing-input-label{text-align:center;min-height:1.5em;margin-top:.85rem}.typing-bottom{justify-content:center;align-items:center;gap:.75rem;margin-top:1.5rem}.typing-bottom kbd{background:var(--glass-bg);border:1px solid var(--glass-ring);border-radius:.3rem;padding:.15rem .35rem;font-size:.75rem}.typing-app .typing-secondary{background:var(--glass-bg);color:inherit;border:1px solid var(--glass-ring);box-shadow:none}.typing-dialog{overscroll-behavior:contain;border:1px solid var(--glass-ring);color:#172033;background:#f5f7fc;border-radius:1.5rem;width:min(680px,100vw - 2rem);max-height:calc(100dvh - 3rem);margin:auto;padding:0;position:fixed;inset:0;overflow:auto;box-shadow:0 24px 100px #0005}.dark .typing-dialog{color:#e2e8f0;background:#111a2c}.typing-dialog::backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080d20a6}.typing-dialog .typing-result,.typing-dialog .typing-history{border:0;margin:0;padding:clamp(1.25rem,4vw,2rem)}.typing-close{background:var(--glass-bg);border:1px solid var(--glass-ring);border-radius:.7rem;place-items:center;width:2.25rem;height:2.25rem;font-size:1.6rem;display:grid}.typing-history>.btn{margin-top:1.25rem}.typing-result-heading{align-items:center;gap:.75rem;display:flex}.typing-rank-icon{font-size:1.9rem;line-height:1}.typing-result-msg{opacity:.75;margin:.35rem 0 0;font-size:.85rem}.typing-share-card{color:#e2e8f0;background:linear-gradient(135deg,#0f172a,#1e293b 60%,#0f172a);border:1px solid #ffffff14;border-radius:1.25rem;margin-top:1.5rem;padding:1.35rem;position:relative;overflow:hidden;box-shadow:0 20px 50px #0206174d}.typing-share-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.typing-share-badge{background:var(--color-brand-400);color:#0f172a;letter-spacing:.04em;border-radius:999px;padding:.2rem .55rem;font-size:.65rem;font-weight:800;display:inline-block}.typing-share-mode{color:#94a3b8;margin-top:.4rem;font-family:Consolas,monospace;font-size:.72rem;display:block}.typing-share-date{color:#94a3b8;white-space:nowrap;font-family:Consolas,monospace;font-size:.68rem}.typing-share-rank{color:#fcd34d;margin:.9rem 0 0;font-size:1.05rem;font-weight:800}.typing-share-stats{grid-template-columns:repeat(4,1fr);gap:.6rem;margin-top:1rem;display:grid}.typing-share-stats>div{background:#ffffff0f;border:1px solid #ffffff1a;border-radius:.85rem;flex-direction:column;gap:.2rem;padding:.6rem .7rem;display:flex}.typing-share-stats span{color:#94a3b8;font-size:.63rem;font-weight:600}.typing-share-stats strong{font-variant-numeric:tabular-nums;color:#f1f5f9;font-size:1.35rem}.typing-share-stats>div:first-child strong{color:var(--color-brand-300)}.typing-share-foot{color:#94a3b8;border-top:1px solid #ffffff1a;justify-content:space-between;gap:1rem;margin-top:1rem;padding-top:.85rem;font-family:Consolas,monospace;font-size:.72rem;display:flex}.typing-share-foot strong{color:#e2e8f0}.typing-chart{border:1px solid var(--glass-ring);background:var(--glass-bg);border-radius:1rem;padding:1rem}.typing-chart h3{opacity:.8;margin:0 0 .75rem;font-size:.8rem;font-weight:700}.typing-dialog .typing-actions{flex-wrap:nowrap;overflow-x:auto}.typing-share-btn{flex-shrink:0;place-items:center;width:2.5rem;height:2.5rem;padding:0;display:grid}@keyframes typing-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.is-focused .typing-cursor:before{animation:none}}@media (max-width:600px){.typing-live{gap:1rem;padding:0 .25rem}.typing-live>div:first-child strong{font-size:2.5rem}.typing-live span{font-size:.65rem}.typing-bottom>span{text-align:center;width:100%}.typing-dialog .typing-actions{flex-wrap:wrap;overflow-x:visible}.typing-dialog .typing-actions>:not(.typing-share-btn){flex:1}.typing-options{gap:.75rem}.typing-share-stats{grid-template-columns:repeat(2,1fr)}.typing-share-head{flex-direction:column;gap:.5rem}}
