.ad-slot.svelte-vwrlty{border-top:1px solid var(--color-rule);min-height:8rem;padding-block:1.6rem .6rem}.ad-label.svelte-vwrlty{font-family:var(--font-sans);letter-spacing:.24em;text-transform:uppercase;color:var(--color-muted);text-align:center;-webkit-user-select:none;user-select:none;margin:0 0 1rem;font-size:.58rem}.ad-placeholder.svelte-vwrlty{border:1px dashed var(--color-rule);min-height:6rem;color:var(--color-muted);font-family:var(--font-sans);letter-spacing:.06em;justify-content:center;align-items:center;font-size:.7rem;font-style:italic;display:flex}.kb-wrap.svelte-1m72oyu{width:min(100%,38rem);font-family:var(--font-mono);-webkit-user-select:none;user-select:none;flex-direction:column;gap:.45rem;display:flex}.kb-row.svelte-1m72oyu{padding-left:var(--row-offset);grid-template-columns:repeat(10,minmax(0,1fr));gap:clamp(.18rem,.9vw,.4rem);display:grid;position:relative}.kb-spacer-row.svelte-1m72oyu{justify-content:center;margin-top:.4rem;padding-left:0;display:flex}.kb-key.svelte-1m72oyu{box-sizing:border-box;aspect-ratio:1;border:1px solid color-mix(in oklab, var(--color-rule) 84%, var(--color-ink));background:var(--color-surface-strong);width:100%;color:var(--color-ink);box-shadow:0 .18rem 0 color-mix(in oklab, var(--color-rule) 80%, var(--color-ink));flex-direction:column;justify-content:center;align-items:center;transition:background-color .2s,border-color .2s,color .2s,transform .12s,box-shadow .12s;display:flex;position:relative}.kb-space.svelte-1m72oyu{aspect-ratio:auto;width:min(14rem,62%);height:1.8rem}.kb-home.svelte-1m72oyu{background:var(--color-key-hint);border-color:color-mix(in oklab, var(--color-accent) 45%, var(--color-rule))}.kb-home.svelte-1m72oyu:after{content:"";background:var(--color-accent);border-radius:999px;width:.38rem;height:.38rem;position:absolute;bottom:.3rem;left:50%;transform:translate(-50%)}.kb-primary.svelte-1m72oyu{font-size:.95rem;font-weight:500;line-height:1}.kb-space-label.svelte-1m72oyu{letter-spacing:.2em;text-transform:uppercase;color:var(--color-muted);font-size:.65rem}.kb-secondary.svelte-1m72oyu{color:var(--color-muted);letter-spacing:.05em;margin-top:.2rem;font-size:.55rem;line-height:1}.kb-next.svelte-1m72oyu{border-color:var(--color-accent);color:var(--color-accent);box-shadow:0 .22rem 0 color-mix(in oklab, var(--color-accent) 32%, var(--color-rule));background:0 0;border-width:2px;transform:translateY(-1px)}.kb-next.svelte-1m72oyu .kb-secondary:where(.svelte-1m72oyu){color:color-mix(in oklab, var(--color-accent) 70%, var(--color-muted))}.kb-hit.svelte-1m72oyu{background:var(--color-key-correct);border-color:var(--color-ink);box-shadow:0 .08rem 0 color-mix(in oklab, var(--color-rule) 80%, var(--color-ink));transform:translateY(1px)}.kb-miss.svelte-1m72oyu{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-paper);box-shadow:0 .08rem 0 color-mix(in oklab, var(--color-accent) 55%, var(--color-ink))}.kb-miss.svelte-1m72oyu .kb-secondary:where(.svelte-1m72oyu){color:color-mix(in oklab, var(--color-paper) 70%, var(--color-accent))}@media (width<=640px){.kb-row.svelte-1m72oyu{padding-left:0}.kb-key.svelte-1m72oyu{min-width:0}.kb-primary.svelte-1m72oyu{font-size:clamp(.68rem,3vw,.8rem)}.kb-secondary.svelte-1m72oyu{font-size:.5rem}.kb-space.svelte-1m72oyu{width:min(10rem,60%)}}.share-controls.svelte-1v3u7a8{min-height:1.9rem;font-family:var(--font-sans);letter-spacing:.14em;text-transform:uppercase;justify-content:center;align-items:center;gap:.5rem;font-size:.65rem;display:flex}button.svelte-1v3u7a8{border:1px solid var(--color-rule);background:var(--color-surface);color:var(--color-muted);cursor:pointer;letter-spacing:inherit;text-transform:inherit;padding:.42rem .58rem}button.svelte-1v3u7a8:hover{border-color:var(--color-accent);color:var(--color-accent)}span.svelte-1v3u7a8{color:var(--color-accent)}@keyframes svelte-qomdew-shake{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}.shake.svelte-qomdew{animation:.12s svelte-qomdew-shake}.cursor-char.svelte-qomdew{background:var(--color-ink);color:var(--color-paper);border-radius:1px}.cursor-wrong.svelte-qomdew{background:var(--color-accent)!important;color:var(--color-paper)!important}.typed-text.svelte-qomdew{color:var(--color-muted)}.tail-text.svelte-qomdew{color:var(--color-ink)}.trainer-shell.svelte-qomdew{grid-template-rows:auto minmax(14rem,1fr) auto;min-height:min(42rem,100vh - 12rem);display:grid}.stats-caption.svelte-qomdew{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--color-muted);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0;margin:0;font-size:.7rem;display:flex}.stat.svelte-qomdew{align-items:baseline;gap:.35em;display:inline-flex}.stat-value.svelte-qomdew{color:var(--color-ink);font-feature-settings:"tnum"}.stat-sub.svelte-qomdew{color:var(--color-muted);letter-spacing:.08em}.extra-stat.svelte-qomdew{color:var(--color-accent)}.dot.svelte-qomdew{opacity:.45;margin:0 .85em}.prompt-stage.svelte-qomdew{justify-content:center;align-items:center;min-height:14rem;padding-block:2rem;display:flex}.trainer-prompt.svelte-qomdew{max-width:36ch;font-family:var(--font-mono);text-align:center;white-space:pre-wrap;word-break:normal;overflow-wrap:anywhere;-webkit-user-select:none;user-select:none;font-feature-settings:"liga" 0;margin:0;font-size:clamp(1.8rem,4.4vw,3.6rem);line-height:1.45}.line-viewport.svelte-qomdew{--line-h:clamp(2.6rem, 5.2vw, 3.6rem);--line-font:calc(var(--line-h) / 1.5);width:100%;font-family:var(--font-mono);font-size:var(--line-font);max-width:32ch;height:calc(3 * var(--line-h));text-align:center;-webkit-user-select:none;user-select:none;font-feature-settings:"liga" 0;-webkit-mask-image:linear-gradient(#0000 0,#000 8% 70%,oklab(0% none none/.35) 100%);mask-image:linear-gradient(#0000 0,#000 8% 70%,oklab(0% none none/.35) 100%);overflow:hidden;-webkit-mask-image:linear-gradient(#0000 0,#000 8% 70%,oklab(0% none none/.35) 100%)}.line-rail.svelte-qomdew{will-change:transform;flex-direction:column;transition:transform .32s cubic-bezier(.22,1,.36,1);display:flex}.prompt-line.svelte-qomdew{height:var(--line-h);line-height:var(--line-h);white-space:pre;overflow-wrap:normal;flex:none;min-width:0}.prompt-line.past.svelte-qomdew .typed-text:where(.svelte-qomdew),.prompt-line.past.svelte-qomdew .tail-text:where(.svelte-qomdew){opacity:.45}@media (prefers-reduced-motion:reduce){.line-rail.svelte-qomdew{transition:none}}.keyboard-stage.svelte-qomdew{flex-direction:column;justify-content:end;align-items:center;min-height:14rem;display:flex}.start-note.svelte-qomdew{font-family:var(--font-sans);letter-spacing:.18em;text-align:center;text-transform:uppercase;margin-top:1.4rem;font-size:.7rem}.end-drill-button.svelte-qomdew{color:var(--color-muted);cursor:pointer;font-family:var(--font-sans);letter-spacing:.22em;text-transform:uppercase;background:0 0;border:none;border-bottom:1px solid #0000;margin-top:1.4rem;padding:.4rem 0;font-size:.65rem}.end-drill-button.svelte-qomdew:hover{color:var(--color-accent);border-bottom-color:var(--color-accent)}.completion.svelte-qomdew{border-top:1px solid var(--color-rule);flex-direction:column;align-items:center;gap:1.4rem;margin-top:2.4rem;padding-top:2rem;display:flex}.completion-line.svelte-qomdew{font-family:var(--font-serif);color:var(--color-ink);text-align:center;margin:0;font-size:clamp(1.25rem,2.4vw,1.6rem);font-style:italic}.completion-actions.svelte-qomdew{gap:2rem;display:flex}.completion-action.svelte-qomdew{cursor:pointer;font-family:var(--font-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--color-muted);background:0 0;border:none;border-bottom:1px solid #0000;padding:.35rem 0;font-size:.68rem}.completion-action.primary.svelte-qomdew{color:var(--color-accent)}.completion-action.svelte-qomdew:hover{border-bottom-color:currentColor}.completion-share.svelte-qomdew{margin-top:.4rem}@media (width<=760px){.trainer-shell.svelte-qomdew{grid-template-rows:auto auto auto;min-height:auto}.stats-caption.svelte-qomdew{letter-spacing:.14em;font-size:.6rem}.dot.svelte-qomdew{margin:0 .55em}.prompt-stage.svelte-qomdew{min-height:12rem;padding-block:1.6rem}.keyboard-stage.svelte-qomdew{min-height:10rem}}.page-header.svelte-1uha8ag{justify-content:space-between;align-items:center;gap:1rem;padding-block:.4rem 1.2rem;display:flex}.brand.svelte-1uha8ag{font-family:var(--font-sans);letter-spacing:.32em;text-transform:uppercase;color:var(--color-ink);font-size:.7rem;font-weight:500}.header-actions.svelte-1uha8ag{align-items:center;gap:.25rem;display:flex}.icon-button.svelte-1uha8ag{width:2rem;height:2rem;color:var(--color-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .16s;display:inline-flex}.icon-button.svelte-1uha8ag:hover,.icon-button.active.svelte-1uha8ag{color:var(--color-ink)}.lesson-nav.svelte-1uha8ag{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0;padding-block:.4rem 0;display:flex}.lesson-tab.svelte-1uha8ag{font-family:var(--font-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--color-muted);cursor:pointer;background:0 0;border:none;padding:.45rem 0;font-size:.72rem;transition:color .16s;position:relative}.lesson-tab.svelte-1uha8ag:hover,.lesson-tab.active.svelte-1uha8ag{color:var(--color-ink)}.lesson-tab.active.svelte-1uha8ag:after{content:"";background:var(--color-accent);height:1px;position:absolute;bottom:-2px;left:0;right:0}.lesson-sep.svelte-1uha8ag{color:var(--color-muted);opacity:.4;margin:0 1.4rem}.page-footer.svelte-1uha8ag{font-family:var(--font-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--color-muted);text-align:center;margin-top:1.5rem;font-size:.62rem}.page-footer.svelte-1uha8ag a:where(.svelte-1uha8ag){color:inherit;border-bottom:1px solid #0000;padding-bottom:1px;text-decoration:none}.page-footer.svelte-1uha8ag a:where(.svelte-1uha8ag):hover{border-bottom-color:var(--color-accent);color:var(--color-ink)}.footer-sep.svelte-1uha8ag{opacity:.5;margin:0 .9rem}.settings-anchor.svelte-1uha8ag{display:inline-flex;position:relative}.settings-popover.svelte-1uha8ag{z-index:20;background:var(--color-surface);border:1px solid var(--color-rule);min-width:13rem;box-shadow:0 12px 28px color-mix(in oklab, var(--color-ink) 18%, transparent);flex-direction:column;gap:.1rem;padding:.4rem;display:flex;position:absolute;top:calc(100% + .5rem);right:0}.settings-item.svelte-1uha8ag{color:var(--color-muted);cursor:pointer;font-family:var(--font-sans);letter-spacing:.14em;text-transform:uppercase;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;padding:.55rem .7rem;font-size:.65rem;line-height:1;display:flex}.settings-item.svelte-1uha8ag:hover{background:color-mix(in oklab, var(--color-accent) 8%, transparent);color:var(--color-accent)}.settings-value.svelte-1uha8ag{color:var(--color-ink);letter-spacing:.1em}.settings-item.svelte-1uha8ag:hover .settings-value:where(.svelte-1uha8ag),.settings-item.active.svelte-1uha8ag .settings-value:where(.svelte-1uha8ag){color:var(--color-accent)}@media (width<=520px){.settings-popover.svelte-1uha8ag{min-width:11rem;left:auto;right:0}.lesson-sep.svelte-1uha8ag{margin:0 .9rem}}.app-shell.svelte-1uha8ag{position:relative}.app-shell.svelte-1uha8ag:before{content:"";z-index:-1;background:linear-gradient(to bottom, color-mix(in oklab, var(--color-accent) 5%, transparent), transparent 32%), var(--color-paper);pointer-events:none;position:fixed;inset:0}.page-header.svelte-1uha8ag,.lesson-nav.svelte-1uha8ag,.ad-wrap.svelte-1uha8ag,.page-footer.svelte-1uha8ag{transition:opacity .38s}.app-shell.focus-mode.svelte-1uha8ag .page-header:where(.svelte-1uha8ag),.app-shell.focus-mode.svelte-1uha8ag .lesson-nav:where(.svelte-1uha8ag),.app-shell.focus-mode.svelte-1uha8ag .ad-wrap:where(.svelte-1uha8ag),.app-shell.focus-mode.svelte-1uha8ag .page-footer:where(.svelte-1uha8ag){opacity:.25}.app-shell.focus-mode.svelte-1uha8ag .page-header:where(.svelte-1uha8ag):focus-within,.app-shell.focus-mode.svelte-1uha8ag .lesson-nav:where(.svelte-1uha8ag):focus-within{opacity:1}@media (prefers-reduced-motion:reduce){.page-header.svelte-1uha8ag,.lesson-nav.svelte-1uha8ag,.ad-wrap.svelte-1uha8ag,.page-footer.svelte-1uha8ag{transition:none}}
