:root{--page-text:#1a1a1a;--page-muted:#4a4a4a;--page-background:#fff;--page-surface:#f4f5f7;--page-border:#8a8f98;--page-accent:#1d4ed8;--page-on-accent:#fff;--page-right:#14532d;--page-right-background:#dcfce7;--page-wrong:#7f1d1d;--page-wrong-background:#fee2e2;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--page-text:#ececec;--page-muted:#b8bcc4;--page-background:#121316;--page-surface:#1d1f24;--page-border:#7d838d;--page-accent:#8ab4ff;--page-on-accent:#0b1020;--page-right:#bbf7d0;--page-right-background:#143522;--page-wrong:#fecaca;--page-wrong-background:#3f1515}}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--page-background);color:var(--page-text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:1.0625rem;line-height:1.55}a{color:var(--page-accent)}:focus-visible{outline:3px solid var(--page-accent);outline-offset:2px}.page-header,.page-footer{max-width:var(--page-max-width,44rem);overflow-wrap:break-word;margin:0 auto;padding:0 1rem}.page-header{flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:.25rem 1rem;padding-top:.75rem;display:flex}.page-languages ul{flex-wrap:wrap;gap:.25rem .75rem;margin:0;padding:0;list-style:none;display:flex}.page-languages a[aria-current=page]{color:var(--page-text);font-weight:600;text-decoration:none}.page-footer{color:var(--page-muted);margin-top:2rem;padding-bottom:1.5rem;font-size:.9375rem}.interactive{max-width:var(--page-max-width,44rem);overflow-wrap:break-word;margin:0 auto;padding:0 1rem}.interactive-routes ul{flex-wrap:wrap;gap:.25rem .75rem;margin:0;padding:0;list-style:none;display:flex}.interactive-routes a[aria-current=true]{color:var(--page-text);font-weight:600;text-decoration:none}.interactive h1{font-size:1.875rem;line-height:1.2}.interactive-title{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:0 1rem;display:flex}.interactive-title h1{flex:auto;min-width:0}.interactive-title-slot{flex:none}.interactive h2{scroll-margin-top:1rem;line-height:1.25}.interactive-noscript{border-left:4px solid var(--page-accent);background:var(--page-surface);padding:.5rem 1rem}.interactive-start{background:var(--page-accent);color:var(--page-on-accent);border-radius:.375rem;padding:.5rem 1.25rem;font-weight:600;text-decoration:none;display:inline-block}.interactive-description{color:var(--page-muted)}.interactive-routes{margin:1rem 0}.interactive-app{margin:1rem 0 2rem}.end[data-v-8dd1328d]{border:1px solid var(--page-border);background:var(--page-surface);text-align:center;border-radius:.75rem;justify-items:center;gap:.75rem;padding:1.5rem 1rem;display:grid}h2[data-v-8dd1328d]{margin:0}.chapter[data-v-8dd1328d]{color:var(--page-muted);margin:0}.results[data-v-8dd1328d]{flex-wrap:wrap;justify-content:center;gap:1rem 2rem;margin:.5rem 0;display:flex}.results div[data-v-8dd1328d]{gap:.2rem;display:grid}.results dt[data-v-8dd1328d]{color:var(--page-muted);font-size:.9rem}.results dd[data-v-8dd1328d]{margin:0;font-size:1.6rem;font-weight:700}.best[data-v-8dd1328d]{color:var(--page-muted);margin:0}.actions[data-v-8dd1328d]{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:.5rem;display:flex}.again[data-v-8dd1328d],.next[data-v-8dd1328d]{font:inherit;border-radius:999px;padding:.55rem 1.1rem;font-weight:600;text-decoration:none;display:inline-block}.again[data-v-8dd1328d]{background:var(--page-accent);color:var(--page-on-accent);border:0}.next[data-v-8dd1328d]{border:1px solid var(--page-border);background:var(--page-background);color:var(--page-text)}.again[data-v-8dd1328d]:focus-visible,.next[data-v-8dd1328d]:focus-visible{outline:3px solid var(--page-accent);outline-offset:2px}.keyboard[data-v-6af578a3]{width:100%;height:auto;margin:0 auto;display:block}.key rect[data-v-6af578a3]{fill:var(--finger);fill-opacity:.18;stroke:var(--finger);stroke-width:1.5px}.key text[data-v-6af578a3]{fill:var(--page-text);font-size:16px;font-weight:600}.key .dot[data-v-6af578a3]{fill:var(--page-text);opacity:.7}.key.is-active rect[data-v-6af578a3]{fill-opacity:.45;stroke-width:3px}.key.is-active text[data-v-6af578a3]{font-weight:800}.finger-left-pinky[data-v-6af578a3]{--finger:#b56576}.finger-left-ring[data-v-6af578a3]{--finger:#6d8b74}.finger-left-middle[data-v-6af578a3]{--finger:#4f6d7a}.finger-left-index[data-v-6af578a3]{--finger:#c9a227}.finger-right-index[data-v-6af578a3]{--finger:#7a6c9d}.finger-right-middle[data-v-6af578a3]{--finger:#4f7cac}.finger-right-ring[data-v-6af578a3]{--finger:#b08968}.finger-right-pinky[data-v-6af578a3]{--finger:#8a8f5b}.game[data-v-c21c3ad6]{gap:.75rem;display:grid}.topline[data-v-c21c3ad6]{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;display:flex}.chapter[data-v-c21c3ad6]{color:var(--page-muted);flex:14rem;margin:0;font-weight:600}.stats[data-v-c21c3ad6]{gap:1rem;margin:0;display:flex}.stats div[data-v-c21c3ad6]{gap:.1rem;display:grid}.stats dt[data-v-c21c3ad6]{color:var(--page-muted);font-size:.8rem}.stats dd[data-v-c21c3ad6]{margin:0;font-size:1.1rem;font-weight:700}.pause[data-v-c21c3ad6]{border:1px solid var(--page-border);background:var(--page-surface);color:var(--page-text);font:inherit;border-radius:999px;padding:.4rem .9rem}.play[data-v-c21c3ad6]{border:1px solid var(--page-border);background:var(--page-surface);border-radius:.75rem;gap:.6rem;padding:1rem;display:grid}.play[data-v-c21c3ad6]:focus-visible{outline:3px solid var(--page-accent);outline-offset:2px}.prompt[data-v-c21c3ad6]{flex-wrap:wrap;justify-content:center;gap:.15em;margin:0;font-size:clamp(3.5rem,14vw,6rem);font-weight:700;line-height:1.05;display:flex}.prompt span[data-v-c21c3ad6]{color:var(--page-muted)}.prompt span.current[data-v-c21c3ad6]{color:var(--page-text);text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:.08em}.prompt span.typed[data-v-c21c3ad6]{color:var(--page-right)}.finger[data-v-c21c3ad6]{text-align:center;color:var(--page-text);margin:0;font-size:1.05rem;font-weight:600}.tempo[data-v-c21c3ad6]{background:var(--page-border);border-radius:999px;height:.65rem;overflow:hidden}.tempo-fill[data-v-c21c3ad6]{border-radius:inherit;background:var(--page-accent);height:100%}.tempo-label[data-v-c21c3ad6]{color:var(--page-muted);margin:0;font-size:.85rem}.feedback[data-v-c21c3ad6]{text-align:center;min-height:1.6em;margin:0;font-weight:600}.feedback.hit[data-v-c21c3ad6],.feedback.complete[data-v-c21c3ad6]{color:var(--page-right)}.feedback.miss[data-v-c21c3ad6]{color:var(--page-wrong)}.hint[data-v-c21c3ad6]{text-align:center;color:var(--page-muted);margin:0}.sr-only[data-v-c21c3ad6]{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.overlay[data-v-625173b8]{background:color-mix(in srgb, var(--page-background) 84%, transparent);place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.panel[data-v-625173b8]{border:1px solid var(--page-border);background:var(--page-surface);text-align:center;border-radius:.75rem;justify-items:center;gap:.75rem;width:min(100%,24rem);padding:1.5rem;display:grid}.title[data-v-625173b8]{margin:0;font-size:1.6rem;font-weight:700}.hint[data-v-625173b8]{color:var(--page-muted);margin:0}.actions[data-v-625173b8]{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.resume[data-v-625173b8],.restart[data-v-625173b8]{font:inherit;border-radius:999px;padding:.55rem 1.1rem;font-weight:600}.resume[data-v-625173b8]{background:var(--page-accent);color:var(--page-on-accent);border:0}.restart[data-v-625173b8]{border:1px solid var(--page-border);background:var(--page-background);color:var(--page-text)}.resume[data-v-625173b8]:focus-visible,.restart[data-v-625173b8]:focus-visible{outline:3px solid var(--page-accent);outline-offset:2px}:root{--page-max-width:60rem}.app[data-v-10b7f51d]{gap:1rem;display:grid}.sound[data-v-43269544]{border:1px solid var(--page-border);background:var(--page-surface);color:var(--page-text);font:inherit;border-radius:999px;padding:.4rem .8rem;font-size:.9rem}.sound[data-v-43269544]:focus-visible{outline:3px solid var(--page-accent);outline-offset:2px}
