@font-face{font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-mono-latin-ext-wght-normal-CXgNM06D.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/atkinson-hyperlegible-mono-latin-wght-normal-CoA7y8X5.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--primary:#1b66c9;--primary-dark:#1553a6;--primary-soft:#e9f1fc;--on-primary:#fff;--success:#1f9d55;--success-dark:#177a42;--success-text:#137a3a;--success-soft:#e6f5eb;--danger:#e5484d;--danger-dark:#c62a2f;--danger-text:#c0282d;--danger-soft:#fdeceb;--danger-strong:#c0282d;--on-danger:#fff;--warning:#f5a524;--warning-text:#9a5b00;--warning-soft:#fdf3e1;--accent:#7c4ddb;--accent-dark:#6d43d8;--accent-soft:#f1ecfd;--text-primary:#17202b;--text-secondary:#566272;--background-page:#f5f7fa;--background-light:#fff;--background-medium:#f0f3f7;--background-dark:#dde3ea;--background-hover:#eef2f6;--border-strong:#b8c2ce;--font-size-xsmall:.75rem;--font-size-small:.875rem;--font-size-base:1rem;--font-size-large:1.25rem;--font-size-xlarge:1.5rem;--font-size-xxlarge:2rem;--font-family-base:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-family-mono:ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;--font-family-text:"Atkinson Hyperlegible Mono Variable", var(--font-family-mono);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.2;--line-height-base:1.5;--line-height-loose:1.8;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-xxl:3rem;--border-radius-sm:6px;--border-radius-md:8px;--border-radius-lg:12px;--border-radius-xl:16px;--border-radius-pill:999px;--shadow-xs:0 1px 2px #1018280d;--shadow-sm:0 1px 2px #1018280a, 0 1px 3px #1018280f;--shadow-md:0 2px 4px #1018280a, 0 6px 16px #10182814;--shadow-lg:0 4px 8px #1018280d, 0 20px 40px #10182824;--focus-ring:0 0 0 3px color-mix(in srgb, var(--primary) 28%, transparent);--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.5s ease;--content-width:1180px;--page-gutter:var(--spacing-xl);font-family:var(--font-family-base);line-height:var(--line-height-base);font-weight:var(--font-weight-normal);color:var(--text-primary);background-color:var(--background-page);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;--finger-lp:#f5a66b;--finger-lr:#f2c94c;--finger-lm:#8fd16a;--finger-li:#4fc9c9;--finger-lt:#a0a0a0;--finger-rt:#a0a0a0;--finger-ri:#5aa9e6;--finger-rm:#a47be0;--finger-rr:#e67ac7;--finger-rp:#c9a66b}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--primary:#6cb2ff;--primary-dark:#4f9cf2;--primary-soft:#13263d;--on-primary:#08111c;--success:#3fb950;--success-dark:#2ea043;--success-text:#4fd07a;--success-soft:#10281a;--danger:#f85149;--danger-dark:#da3633;--danger-text:#ff8a84;--danger-soft:#321719;--danger-strong:#ff8a84;--on-danger:#1c0708;--warning:#d29922;--warning-text:#e6b450;--warning-soft:#2d2310;--accent:#a78bfa;--accent-dark:#8b6cf0;--accent-soft:#241c3d;--text-primary:#e6ebf1;--text-secondary:#9aa6b3;--background-page:#0c1015;--background-light:#141a21;--background-medium:#1a212a;--background-dark:#2a323d;--background-hover:#1f2731;--border-strong:#3d4756;--shadow-xs:0 1px 2px #0006;--shadow-sm:0 1px 2px #00000059, 0 1px 3px #0000004d;--shadow-md:0 2px 4px #00000059, 0 8px 20px #00000059;--shadow-lg:0 4px 8px #0006, 0 24px 48px #0000008c;--focus-ring:0 0 0 3px color-mix(in srgb, var(--primary) 35%, transparent)}a{font-weight:var(--font-weight-medium);color:var(--primary);-webkit-text-decoration:inherit;text-decoration:inherit;transition:color var(--transition-fast)}a:hover{text-underline-offset:2px;text-decoration:underline}a:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:2px}body{background-color:var(--background-page);overflow-wrap:break-word;min-width:320px;min-height:100vh;transition:color var(--transition-base), background-color var(--transition-base);margin:0}h1,h2,h3,h4{color:var(--text-primary);font-weight:var(--font-weight-bold);letter-spacing:-.011em;text-wrap:balance}h1{font-size:var(--font-size-xxlarge);line-height:var(--line-height-tight);letter-spacing:-.022em;margin-bottom:var(--spacing-lg)}h2{font-size:var(--font-size-xlarge);line-height:var(--line-height-tight);letter-spacing:-.018em;margin-bottom:var(--spacing-md)}h3{font-size:var(--font-size-large);line-height:var(--line-height-tight);margin-bottom:var(--spacing-sm)}h4{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}::selection{background-color:color-mix(in srgb, var(--primary) 26%, transparent)}hr{border:none;border-top:1px solid var(--background-dark)}kbd{border:1px solid var(--border-strong);background-color:var(--background-light);min-width:1.6em;color:var(--text-primary);font-family:var(--font-family-mono);font-size:.8em;font-weight:var(--font-weight-medium);text-align:center;white-space:nowrap;border-bottom-width:2px;border-radius:5px;padding:.05em .45em;line-height:1.5;display:inline-block}code{font-family:var(--font-family-mono);font-size:.92em}table,.tabular{font-variant-numeric:tabular-nums}button{box-sizing:border-box;border-radius:var(--border-radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);background-color:var(--primary);color:var(--on-primary);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast), transform 80ms ease;box-shadow:var(--shadow-xs);border:1px solid #0000;justify-content:center;align-items:center;gap:.45em;padding:.6em 1.15em;font-family:inherit;line-height:1.25;display:inline-flex}button:hover{background-color:var(--primary-dark)}button:active:not(:disabled){transform:translateY(1px)}button:focus{outline:none}button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.button-secondary,.button-secondary:hover{border-color:var(--border-strong);background-color:var(--background-light);color:var(--text-primary)}.button-secondary:hover:not(:disabled){border-color:var(--text-secondary);background-color:var(--background-hover)}.button-outline,.button-outline:hover{border-color:var(--primary);box-shadow:none;color:var(--primary);background-color:#0000}.button-outline:hover:not(:disabled){background-color:var(--primary-soft)}.button-quiet,.button-quiet:hover{box-shadow:none;color:var(--text-secondary);background-color:#0000;border-color:#0000}.button-quiet:hover:not(:disabled){background-color:var(--background-hover);color:var(--text-primary)}.button-danger,.button-danger:hover{border-color:var(--danger-strong);background-color:var(--danger-strong);color:var(--on-danger)}.button-danger:hover:not(:disabled){background-color:var(--danger-dark);border-color:var(--danger-dark);color:#fff}button kbd{border-color:color-mix(in srgb, currentColor 35%, transparent);color:inherit;opacity:.85;background-color:#0000;font-size:.72em}.button-link{border-radius:var(--border-radius-md);background-color:var(--primary);box-shadow:var(--shadow-xs);color:var(--on-primary);font-weight:var(--font-weight-semibold);transition:background-color var(--transition-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:.45em;padding:.6em 1.15em;line-height:1.25;text-decoration:none;display:inline-flex}.button-link:hover{background-color:var(--primary-dark);color:var(--on-primary);text-decoration:none}.button-link:focus-visible{border-radius:var(--border-radius-md)}.button-link.button-secondary{border-color:var(--border-strong);background-color:var(--background-light);color:var(--text-primary)}.button-link.button-secondary:hover{border-color:var(--text-secondary);background-color:var(--background-hover)}.button-small,.button-link.button-small{font-size:var(--font-size-small);padding:.35em .8em}.button-large,.button-link.button-large{padding:.75em 1.6em;font-size:1.125rem}.link-button,.link-button:hover{box-shadow:none;color:var(--primary);font:inherit;font-weight:var(--font-weight-medium);text-align:inherit;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);text-underline-offset:3px;background:0 0;border:none;border-radius:0;padding:0;display:inline;transform:none}.link-button:hover{text-decoration-color:currentColor}.link-button:active:not(:disabled){transform:none}.link-button:focus-visible{border-radius:2px;outline-width:2px}@media (pointer:coarse){.link-button{position:relative}.link-button:before{content:"";position:absolute;inset:-8px -4px}.form-label-row .link-button:before{bottom:-4px}.app-footer .app-footer-links a{padding:12px 4px;display:inline-block}}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color]),select,textarea){box-sizing:border-box;border:1px solid var(--border-strong);border-radius:var(--border-radius-md);background-color:var(--background-light);max-width:100%;min-height:2.5rem;color:var(--text-primary);font:inherit;font-size:var(--font-size-base);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:.5em .75em;line-height:1.4}:where(textarea){min-height:5rem}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color]),select,textarea):hover:not(:disabled){border-color:var(--text-secondary)}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color]),select,textarea):focus{border-color:var(--primary);box-shadow:var(--focus-ring);outline:none}:where(input,select,textarea):disabled{opacity:.6;cursor:not-allowed}::placeholder{color:var(--text-secondary);opacity:.85}:where(select:not([multiple],[size])){appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5 6 8l3.5-3.5' fill='none' stroke='%237b8794' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right .75em center;background-repeat:no-repeat;background-size:12px;padding-right:2.25em}:where(input[type=checkbox],input[type=radio]){width:1.05rem;height:1.05rem;accent-color:var(--primary);cursor:pointer;vertical-align:-.15em;margin:0}:where(input[type=checkbox],input[type=radio]):focus-visible{outline:2px solid var(--primary);outline-offset:2px}:where(input[type=file]){max-width:100%;font:inherit;font-size:var(--font-size-small);color:var(--text-secondary)}:where(input[type=file])::file-selector-button{margin-right:var(--spacing-sm);border:1px solid var(--border-strong);border-radius:var(--border-radius-md);background-color:var(--background-light);color:var(--text-primary);font:inherit;font-weight:var(--font-weight-medium);cursor:pointer;padding:.4em .9em}.field{margin:0 0 var(--spacing-md);flex-direction:column;gap:.35rem;display:flex}.field>label,.field-label{color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold)}.field-hint{color:var(--text-secondary);font-size:var(--font-size-small);margin:0}.card{padding:var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-sm)}.eyebrow{margin:0 0 var(--spacing-xs);color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.06em;text-transform:uppercase}.badge{border-radius:var(--border-radius-pill);background-color:var(--background-medium);color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);white-space:nowrap;align-items:center;gap:.3em;padding:.12em .6em;line-height:1.6;display:inline-flex}.badge-primary{background-color:var(--primary-soft);color:var(--primary)}.badge-success{background-color:var(--success-soft);color:var(--success-text)}.spinner{border:2px solid color-mix(in srgb, currentColor 22%, transparent);vertical-align:-.2em;border-top-color:currentColor;border-radius:50%;flex:none;width:1.1em;height:1.1em;display:inline-block}@media (prefers-reduced-motion:no-preference){.spinner{animation:.7s linear infinite spin}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=768px){:root{--font-size-xxlarge:1.75rem;--font-size-xlarge:1.35rem;--spacing-xl:1.5rem;--spacing-lg:1.25rem;--page-gutter:1.25rem}}@media (width<=480px){:root{--font-size-xxlarge:1.5rem;--font-size-xlarge:1.25rem;--spacing-xl:1.25rem;--spacing-lg:1rem;--page-gutter:1rem}button{padding:.55em 1em}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wordmark{white-space:nowrap;align-items:center;gap:.45em;display:inline-flex}.brand-mark{flex:none;display:block}.brand-mark-lower{fill:none;stroke:var(--text-secondary);stroke-width:2.5px}.brand-mark-upper{fill:var(--primary);stroke:var(--background-light);stroke-width:1.5px}.brand-mark-bar{fill:var(--on-primary)}.wordmark-name{font-weight:var(--font-weight-bold);letter-spacing:-.01em}.wordmark-second{color:var(--primary)}:root{--header-height:64px;--header-offset:0px}.app-header{z-index:20;align-items:center;gap:var(--spacing-lg);box-sizing:border-box;width:100%;min-height:var(--header-height);padding:0 max(var(--page-gutter), (100% - var(--content-width)) / 2);border-bottom:1px solid var(--background-dark);background-color:color-mix(in srgb, var(--background-light) 88%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(12px);backdrop-filter:saturate(1.6)blur(12px);display:flex;position:relative}@media (width>=721px) and (height>=541px){:root{--header-offset:var(--header-height)}.app-header{position:sticky;top:0}html{scroll-padding-top:calc(var(--header-offset) + var(--spacing-md))}}.app-home{border-radius:var(--border-radius-md);min-height:2.75rem;color:var(--text-primary);font-size:1.3rem;font-weight:var(--font-weight-bold);letter-spacing:-.02em;flex:none;align-items:center;line-height:1;display:inline-flex}.app-home:hover{color:var(--text-primary);text-decoration:none}.app-home:focus-visible{outline-offset:4px;border-radius:var(--border-radius-md)}.app-nav{flex:auto;min-width:0}.app-nav-links{scrollbar-width:none;gap:2px;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.app-nav-links::-webkit-scrollbar{display:none}.app-nav-link{box-sizing:border-box;border-radius:var(--border-radius-md);color:var(--text-secondary);font-weight:var(--font-weight-medium);white-space:nowrap;transition:background-color var(--transition-fast), color var(--transition-fast);align-items:center;padding:.45rem .8rem;line-height:1.25;display:inline-flex}.app-nav-link:hover{background-color:var(--background-hover);color:var(--text-primary);text-decoration:none}.app-nav-link.active{background-color:var(--primary-soft);color:var(--primary);font-weight:var(--font-weight-semibold)}.app-nav-link:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.app-account{align-items:center;gap:var(--spacing-sm);flex:none;margin-left:auto;display:flex}.app-account-button,.app-account-button:hover{box-sizing:border-box;min-height:2.25rem;font-size:var(--font-size-small);white-space:nowrap;padding:.4em .9em}.app-account .button-quiet{color:var(--text-primary)}.theme-toggle,.theme-toggle:hover{border:1px solid var(--background-dark);background-color:var(--background-light);width:2.25rem;height:2.25rem;box-shadow:none;color:var(--text-secondary);border-radius:50%;flex:none;padding:0}.theme-toggle:hover{border-color:var(--border-strong);background-color:var(--background-hover);color:var(--text-primary)}.account-menu{position:relative}.account-menu-button,.account-menu-button:hover{gap:var(--spacing-sm);border-radius:var(--border-radius-pill);min-height:2.5rem;box-shadow:none;color:var(--text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);background-color:#0000;border:1px solid #0000;padding:.2rem .55rem .2rem .25rem}.account-menu-button:hover,.account-menu-button[aria-expanded=true]{border-color:var(--background-dark);background-color:var(--background-hover);color:var(--text-primary)}.account-menu-button:active:not(:disabled){transform:none}.app-user-initial{background-color:var(--primary-soft);width:2rem;height:2rem;color:var(--primary);font-weight:var(--font-weight-bold);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.app-user-name{text-overflow:ellipsis;white-space:nowrap;max-width:min(16rem,20vw);overflow:hidden}.account-menu-chevron{transition:transform var(--transition-fast);flex:none}.account-menu-button[aria-expanded=true] .account-menu-chevron{transform:rotate(180deg)}.account-menu-panel{z-index:30;box-sizing:border-box;width:max-content;min-width:14rem;max-width:calc(100vw - 2 * var(--page-gutter));padding:var(--spacing-xs);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-lg);position:absolute;top:calc(100% + 6px);right:0}.account-menu-panel[hidden]{display:none}.account-menu-who{margin:0 0 var(--spacing-xs);padding:var(--spacing-sm) .75rem;border-bottom:1px solid var(--background-dark);color:var(--text-secondary);font-size:var(--font-size-xsmall);flex-direction:column;display:flex}.account-menu-who strong{color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.account-menu-items{margin:0;padding:0;list-style:none}.account-menu-item,.account-menu-item:hover{justify-content:space-between;align-items:center;gap:var(--spacing-md);box-sizing:border-box;border-radius:var(--border-radius-md);width:100%;min-height:2.25rem;box-shadow:none;color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);text-align:left;background-color:#0000;border:none;padding:.45rem .75rem;line-height:1.25;text-decoration:none;display:flex}.account-menu-item:hover,.account-menu-item:focus-visible{background-color:var(--background-hover)}.account-menu-item:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.account-menu-item:active:not(:disabled){transform:none}.account-menu-sign-out{margin-top:var(--spacing-xs);border-top:1px solid var(--background-dark);border-radius:0 0 var(--border-radius-md) var(--border-radius-md)}.account-menu-sign-out,.account-menu-sign-out:hover{color:var(--text-secondary)}.account-menu-sign-out:hover{color:var(--text-primary)}.account-menu-item.active{background-color:var(--primary-soft);color:var(--primary);font-weight:var(--font-weight-semibold)}.account-menu-theme{justify-content:space-between;align-items:center;gap:var(--spacing-sm);color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);padding:.35rem .5rem .35rem .75rem;display:flex}.account-menu-theme-choices{border-radius:var(--border-radius-pill);background-color:var(--background-dark);gap:2px;padding:2px;display:flex}.account-menu-theme-choice,.account-menu-theme-choice:hover{border-radius:var(--border-radius-pill);min-height:1.75rem;box-shadow:none;color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-medium);background-color:#0000;border:none;padding:.2rem .55rem}.account-menu-theme-choice:hover{color:var(--text-primary)}.account-menu-theme-choice:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.account-menu-theme-choice:active:not(:disabled){transform:none}.account-menu-theme-choice[aria-pressed=true]{background-color:var(--background-light);color:var(--text-primary);font-weight:var(--font-weight-semibold)}.account-menu-pro{display:none}@media (width<=1099px){.app-user-name{display:none}.account-menu-button,.account-menu-button:hover{padding-right:.45rem}}@media (width<=720px){:root{--header-height:52px}.app-header{gap:var(--spacing-sm)}.app-home{margin-right:var(--spacing-xs);font-size:1.15rem}.app-nav-links{gap:0}.app-nav-link{padding:.4rem .55rem;font-size:.9375rem}.app-account{gap:var(--spacing-xs)}}@media (width<=760px){.app-account-sign-up{display:none}}@media (width>=761px) and (width<=840px){.app-header--guest{gap:var(--spacing-md)}.app-header--guest .app-nav-link{padding-inline:.55rem}.app-header--guest .app-account{gap:var(--spacing-xs)}}@media (width<=560px){.app-header--guest .app-home .wordmark-name{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (width<=440px){.app-header--guest,.app-header--guest .app-account{gap:var(--spacing-xs)}.app-header--guest .app-home{margin-right:0}.app-header--guest .app-nav-link{font-size:var(--font-size-small);padding-inline:.2rem}.app-header--guest .app-account-button,.app-header--guest .app-account-button:hover{padding-inline:.4em}}@media (width<=370px){.app-header--guest .app-account-button~.theme-toggle{display:none}}@media (width<=360px){.app-header--guest .app-nav-link{padding-inline:.125rem;font-size:.8125rem}.app-header--guest .app-account-button,.app-header--guest .app-account-button:hover{padding-inline:.3em;font-size:.8125rem}}@media (width<=480px){.app-home .wordmark-name{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app-nav-pro{display:none}.account-menu-pro{display:block}.app-nav-link{padding:.4rem .5rem}.account-menu-button,.account-menu-button:hover{padding:.2rem}.account-menu-chevron{display:none}.account-menu-button.is-current .app-user-initial{box-shadow:0 0 0 2px var(--primary)}.app-header--no-nav .app-home{font-size:1rem}.app-header--no-nav .app-home .wordmark-name{clip:auto;width:auto;height:auto;position:static;overflow:visible}}@media (width<=360px){.app-header,.app-account{gap:var(--spacing-xs)}.app-nav-link{font-size:var(--font-size-small);padding:.4rem .3rem}.account-menu-button,.account-menu-button:hover{padding:0}.app-header--no-nav .app-home .wordmark-name{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}}@media (pointer:coarse){.app-nav-link,.app-account-button,.account-menu-button,.account-menu-item{min-height:44px}.theme-toggle,.theme-toggle:hover{width:44px;height:44px}}#root{width:100%}.App{text-align:left;flex-direction:column;min-height:100dvh;display:flex}.app-main{box-sizing:border-box;width:100%;max-width:calc(var(--content-width) + 2 * var(--page-gutter));padding:var(--spacing-xl) var(--page-gutter) var(--spacing-xxl);flex:1 0 auto;margin:0 auto}.App:has(:is(.typing-interface-container[data-started],.daily-session))>.app-footer{display:none}.App:has(.typing-interface-container[data-chrome=hidden]) :is(.app-header,.practice-bar-section,.typing-toolbar-lead):not(:focus-within){opacity:0;pointer-events:none}.app-header,.practice-bar-section,.typing-toolbar-lead{transition:opacity .125s ease-out}@media (prefers-reduced-motion:reduce){.app-header,.practice-bar-section,.typing-toolbar-lead{transition:none}}.App:has(.typing-interface-container:not([data-started]))>.app-footer .app-footer-inner{padding-block:var(--spacing-xs)}.App:has(.typing-interface-container:not([data-started]))>.app-footer .app-footer-brand{display:none}@media (height<=700px){.App:has(.typing-interface-container)>.app-footer{display:none}}.app-main:has(:is(.typing-interface-container,.daily-session)){flex-direction:column;padding-block:.75rem;display:flex}:is(.program-page-session:has(.daily-session),.daily-session){flex-direction:column;flex:auto;width:100%;min-height:0;display:flex}.program-page-session:has(.daily-session){max-width:none}.app-main:focus{outline:none}.skip-link{top:var(--spacing-sm);left:var(--spacing-sm);z-index:100;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius-md);background-color:var(--primary);color:var(--on-primary);transition:transform var(--transition-fast);position:absolute;transform:translateY(-200%)}.skip-link:focus{transform:none}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--spacing-md) var(--spacing-lg);margin:0 0 var(--spacing-xl);flex-wrap:wrap;display:flex}.page-header>:first-child{min-width:0}.page-title{font-size:var(--font-size-xxlarge);letter-spacing:-.022em;overflow-wrap:anywhere;margin:0}.page-subtitle{margin:var(--spacing-xs) 0 0;color:var(--text-secondary);font-size:1.0625rem}.page-actions{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.page-back{margin:0 0 var(--spacing-md);color:var(--text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);align-items:center;gap:.35em;display:inline-flex}.page-back:hover{color:var(--text-primary);text-decoration:none}.page-back:before{content:"←"}.page-narrow{max-width:880px;margin-inline:auto}.page-reading{max-width:720px;margin-inline:auto}.empty-state{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xl) var(--spacing-md);border:1px dashed var(--background-dark);border-radius:var(--border-radius-lg);color:var(--text-secondary);text-align:center;flex-direction:column;display:flex}.empty-state p{max-width:34rem;margin:0}.data-table{border-collapse:collapse;width:100%;font-size:var(--font-size-small)}.data-table th{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--background-dark);color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-align:left;text-transform:uppercase;white-space:nowrap}.data-table td{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--background-dark)}.data-table tbody tr:hover{background-color:var(--background-hover)}.practice-page{max-width:880px;margin:0 auto}.setup-profile{align-items:center;gap:var(--spacing-xs);margin:0 0 var(--spacing-md);color:var(--text-secondary);font-size:var(--font-size-small);overflow-wrap:anywhere;display:inline-flex}.loading{justify-content:center;align-items:center;gap:var(--spacing-sm);min-height:12rem;color:var(--text-secondary);display:flex}.loading:before{content:"";border:2px solid color-mix(in srgb, currentColor 22%, transparent);border-top-color:currentColor;border-radius:50%;flex:none;width:1.1em;height:1.1em}@media (prefers-reduced-motion:no-preference){.loading:before{animation:.7s linear infinite spin}}.error-boundary-fallback{max-width:480px;margin:var(--spacing-xl) auto;padding:var(--spacing-xl);text-align:center;background-color:var(--background-light);border:1px solid var(--background-dark);border-top:4px solid var(--danger);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md)}.error-boundary-fallback:focus{outline:2px solid var(--primary);outline-offset:2px}.error-boundary-fallback h2{color:var(--danger-text);margin-top:0;margin-bottom:var(--spacing-sm)}.error-boundary-fallback p{color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.error-boundary-actions{gap:var(--spacing-md);flex-wrap:wrap;justify-content:center;display:flex}.error-message{align-items:flex-start;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-sm) var(--spacing-sm) var(--spacing-md);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-left:4px solid var(--danger);border-radius:var(--border-radius-md);background-color:var(--danger-soft);color:var(--danger-text);font-weight:var(--font-weight-medium);display:flex}.error-message-text{flex:1;margin:0;padding:.35em 0}.error-dismiss,.error-dismiss:hover{width:2rem;height:2rem;box-shadow:none;color:var(--danger-text);background-color:#0000;border:none;flex:none;padding:0;font-size:1.25rem;line-height:1}.error-dismiss:hover{background-color:color-mix(in srgb, var(--danger) 14%, transparent)}.realtime-stats-container{flex:auto;min-width:0}.realtime-stats-container .stats-grid{text-align:left;justify-content:flex-start;align-items:center;gap:0;margin:0;display:flex}.realtime-stats-container .stat-item{border:0;border-left:1px solid var(--background-dark);box-shadow:none;white-space:nowrap;background:0 0;border-radius:0;flex-direction:row;flex:none;align-items:baseline;gap:.4rem;padding:0 .9rem;overflow:visible}.realtime-stats-container .stat-item:first-child{border-left:0;padding-left:0}.realtime-stats-container .stat-item:before{display:none}.realtime-stats-container .stat-label{font-size:var(--font-size-xsmall);margin-bottom:0}.realtime-stats-container .stat-value{color:var(--text-primary);font-size:1.125rem;font-weight:var(--font-weight-semibold)}.realtime-stats-container [data-stat=wpm] .stat-value{min-inline-size:5ch}.realtime-stats-container [data-stat=accuracy] .stat-value{min-inline-size:6.5ch}.realtime-stats-container [data-stat=errors] .stat-value{min-inline-size:2.5ch}.realtime-stats-container .stat-detail{white-space:nowrap;min-inline-size:13ch;margin:0;display:inline-block}@container stage (width<=36rem){.realtime-stats-container,.realtime-stats-container .stats-grid{height:100%}.realtime-stats-container .stat-item{flex:1 1 0;grid-template-columns:auto 1fr;align-items:baseline;column-gap:.35rem;min-width:0;padding:0 .75rem;display:grid}.realtime-stats-container .stat-label{grid-column:1/-1;line-height:1.2}.realtime-stats-container .stat-value{min-inline-size:0;line-height:1.3}.realtime-stats-container .stat-detail{text-overflow:ellipsis;min-inline-size:0;overflow:hidden}.realtime-stats-container .stat-detail-fixed{display:none}.realtime-stats-container .stat-detail:not(:empty):before{content:"· "}}.stats-grid{text-align:center;justify-content:space-around;align-items:center;gap:1em;display:flex}.stat-label{font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:.2em;display:block}.stat-detail{font-size:var(--font-size-small);color:var(--text-secondary);margin-top:var(--spacing-xs);display:block}.stat-detail:empty:before{content:" "}.session-results .stats-grid{align-items:stretch}.stat-value{font-size:var(--font-size-xlarge);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--text-primary);transition:color var(--transition-base)}.profile-error{color:var(--danger-text);background-color:var(--danger-soft);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);padding:var(--spacing-md);border-radius:var(--border-radius-md);margin-top:var(--spacing-md);margin-bottom:var(--spacing-md);text-align:center;font-weight:var(--font-weight-medium)}.tooltip-container{display:inline-block;position:relative}.tooltip-content{background-color:var(--text-primary);color:var(--background-light);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius-sm);font-size:var(--font-size-small);white-space:normal;z-index:100;box-shadow:var(--shadow-md);text-align:left;max-width:250px;line-height:1.4;animation:.2s ease-in-out tooltipFadeIn;position:absolute}.tooltip-content:not(.tooltip-interactive){pointer-events:none}.tooltip-interactive{padding:var(--spacing-sm) var(--spacing-md);width:auto;max-width:350px;box-shadow:var(--shadow-lg);border:1px solid var(--background-dark)}.tooltip-interactive p{margin:var(--spacing-xs) 0}.tooltip-interactive h4{margin:0 0 var(--spacing-xs) 0;font-size:var(--font-size-small);color:var(--background-light)}.tooltip-close{text-align:center;width:18px;height:18px;color:var(--background-light);opacity:.7;cursor:pointer;box-shadow:none;transition:opacity var(--transition-fast);background:0 0;border:none;border-radius:50%;margin:0;padding:0;font-size:14px;line-height:14px;position:absolute;top:2px;right:2px}.tooltip-close:hover{opacity:1;box-shadow:none;background:#ffffff1a;transform:none}.tooltip-top{margin-bottom:5px;bottom:100%;left:50%;transform:translate(-50%)}.tooltip-bottom{margin-top:5px;top:100%;left:50%;transform:translate(-50%)}.tooltip-left{margin-right:5px;top:50%;right:100%;transform:translateY(-50%)}.tooltip-right{margin-left:5px;top:50%;left:100%;transform:translateY(-50%)}.chart-tooltip{max-width:200px;font-size:12px}.chart-tooltip-header{border-bottom:1px solid #fff3;margin-bottom:3px;padding-bottom:3px;font-weight:700}.chart-tooltip-value{justify-content:space-between;margin:2px 0;display:flex}.tooltip-top:after,.tooltip-bottom:after,.tooltip-left:after,.tooltip-right:after{content:"";border-style:solid;border-width:5px;position:absolute}.tooltip-top:after{top:100%;left:calc(50% - var(--tooltip-shift,0px));border-color:var(--text-primary) transparent transparent transparent;transform:translate(-50%)}.tooltip-bottom:after{bottom:100%;left:calc(50% - var(--tooltip-shift,0px));border-color:transparent transparent var(--text-primary) transparent;transform:translate(-50%)}.tooltip-left:after{border-color:transparent transparent transparent var(--text-primary);top:50%;left:100%;transform:translateY(-50%)}.tooltip-right:after{border-color:transparent var(--text-primary) transparent transparent;top:50%;right:100%;transform:translateY(-50%)}@keyframes tooltipFadeIn{0%{opacity:0}to{opacity:1}}.app-footer{box-sizing:border-box;border-top:1px solid var(--background-dark);background-color:var(--background-light);width:100%;color:var(--text-secondary);font-size:var(--font-size-small)}.app-footer-inner{justify-content:space-between;align-items:center;gap:var(--spacing-sm) var(--spacing-lg);box-sizing:border-box;max-width:calc(var(--content-width) + 2 * var(--page-gutter));padding:var(--spacing-lg) var(--page-gutter);flex-wrap:wrap;margin:0 auto;display:flex}.app-footer-brand{align-items:center;gap:var(--spacing-sm);display:inline-flex}.app-footer-links{gap:var(--spacing-xs) var(--spacing-lg);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.app-footer-links a{color:var(--text-secondary);font-weight:var(--font-weight-medium)}.app-footer-links a:hover{color:var(--text-primary)}.auth-legal{color:var(--text-secondary);font-size:var(--font-size-small)}.auth-divider{margin:var(--spacing-sm) 0;color:var(--text-secondary);font-size:var(--font-size-small);text-align:center}.oauth-buttons{gap:var(--spacing-sm);margin:var(--spacing-md) 0 0;flex-direction:column;display:flex}.oauth-button,.oauth-button:hover{border:1px solid var(--border-strong);background-color:var(--background-light);width:100%;box-shadow:var(--shadow-xs);color:var(--text-primary);font-weight:var(--font-weight-semibold);padding:.65em 1.1em}.oauth-button:hover:not(:disabled){border-color:var(--text-secondary);background-color:var(--background-hover)}.oauth-button svg{flex:none}.oauth-github,.oauth-github:hover{color:#fff;background-color:#24292f;border-color:#24292f}.oauth-github:hover:not(:disabled){background-color:#32383f;border-color:#32383f}[data-theme=dark] .oauth-github,[data-theme=dark] .oauth-github:hover{color:#0c1015;background-color:#e6ebf1;border-color:#e6ebf1}[data-theme=dark] .oauth-github:hover:not(:disabled){background-color:#fff;border-color:#fff}.auth-form-container{max-width:26rem;margin:var(--spacing-md) auto var(--spacing-xl)}.auth-card{padding:var(--spacing-xl);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-light);box-shadow:var(--shadow-md);flex-direction:column;display:flex}.auth-card h1,.auth-card h2{margin:0;font-size:1.625rem}.auth-subtitle{margin:var(--spacing-xs) 0 var(--spacing-md);color:var(--text-secondary)}.auth-notice{max-width:26rem;margin:0 auto var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);border:1px solid color-mix(in srgb, var(--success) 35%, transparent);border-radius:var(--border-radius-md);background-color:var(--success-soft)}.auth-card .auth-divider{align-items:center;gap:var(--spacing-md);margin:var(--spacing-md) 0;display:flex}.auth-card .auth-divider:before,.auth-card .auth-divider:after{content:"";border-top:1px solid var(--background-dark);flex:1}.auth-subtitle+.auth-divider{display:none}.auth-form{gap:var(--spacing-md);flex-direction:column;display:flex}.auth-form .auth-subtitle{margin:0}.form-group{flex-direction:column;gap:.35rem;display:flex}.form-group label{color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold)}.form-group input{width:100%}.auth-form input[aria-invalid=true]{border-color:var(--danger)}.auth-form input[aria-invalid=true]:focus{box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 25%, transparent)}.form-group .field-hint{font-size:var(--font-size-xsmall)}.form-label-row{justify-content:space-between;align-items:baseline;gap:var(--spacing-xs) var(--spacing-md);flex-wrap:wrap;display:flex}.link-button.auth-forgot{font-size:var(--font-size-small)}.password-field{position:relative}.password-field--toggle input{padding-right:2.75rem}.password-toggle,.password-toggle:hover{border-radius:var(--border-radius-sm);width:2.1rem;height:2.1rem;box-shadow:none;color:var(--text-secondary);background-color:#0000;border:none;padding:0;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.password-toggle:hover:not(:disabled){background-color:var(--background-hover);color:var(--text-primary)}.password-toggle:active:not(:disabled){transform:translateY(-50%)}.password-toggle[aria-pressed=true]{color:var(--primary)}.password-toggle:before{content:"";position:absolute;inset:-5px}.auth-card .auth-legal{font-size:var(--font-size-xsmall);margin:0;line-height:1.5}.auth-submit{width:100%;margin-top:var(--spacing-xs);font-size:var(--font-size-base);padding:.7em 1.2em}.auth-error{padding:var(--spacing-sm) var(--spacing-md);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-radius:var(--border-radius-md);background-color:var(--danger-soft);color:var(--danger-text);font-size:var(--font-size-small);margin:0}.auth-oauth-error{margin-top:var(--spacing-sm)}.auth-sent{margin:var(--spacing-md) 0 0;padding:var(--spacing-md);border:1px solid color-mix(in srgb, var(--success) 35%, transparent);border-radius:var(--border-radius-md);background-color:var(--success-soft)}.auth-toggle{margin:var(--spacing-md) 0 0;color:var(--text-secondary);font-size:var(--font-size-small);text-align:center}.auth-guest-way{margin-top:var(--spacing-lg)}@media (height<=700px){.auth-card{padding:var(--spacing-lg)}}@media (height<=600px){.auth-form-container{margin-top:0}.auth-card{padding-top:var(--spacing-md)}.auth-card .auth-divider{margin:var(--spacing-sm) 0}}@media (width<=480px){.auth-form-container{margin-top:0}.auth-card{padding:var(--spacing-lg) var(--spacing-md)}}.status-card>.status-icon{width:2.75rem;height:2.75rem;margin-bottom:var(--spacing-md);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.status-icon--done{background-color:var(--success-soft);color:var(--success-text)}.status-icon--failed{background-color:var(--danger-soft);color:var(--danger-text)}.status-card h1,.status-card h2{margin-bottom:var(--spacing-sm)}.status-card>p{margin:0 0 var(--spacing-sm)}.status-card>.loading{min-height:0;padding:var(--spacing-sm) 0;justify-content:flex-start}.status-card .status-actions{margin:var(--spacing-md) 0 0}.keyboard-import{gap:var(--spacing-lg);text-align:left;grid-template-columns:minmax(0,1fr);display:grid}.keyboard-import-heading{margin:0 0 var(--spacing-xs);font-size:var(--font-size-base)}.keyboard-import-hint{margin:0 0 var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-small)}.preset-list{gap:var(--spacing-sm);margin:var(--spacing-sm) 0 0;grid-template-columns:repeat(auto-fill,minmax(min(8.5rem,100%),1fr));padding:0;list-style:none;display:grid}.preset-list li{display:flex}.preset-button,.preset-button:hover{width:100%;padding:var(--spacing-sm) var(--spacing-md) var(--spacing-md);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-xs);color:var(--text-primary);text-align:left;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:2px;display:flex}.preset-button:hover:not(:disabled){border-color:var(--primary);box-shadow:var(--shadow-md)}.preset-shape{width:100%;height:3rem;margin:var(--spacing-xs) 0 var(--spacing-sm);display:block}.preset-shape rect{fill:color-mix(in srgb, var(--text-secondary) 30%, var(--background-light));transition:fill var(--transition-fast)}.preset-button:hover:not(:disabled) .preset-shape rect{fill:color-mix(in srgb, var(--primary) 55%, var(--background-light))}.preset-board{font-weight:var(--font-weight-bold)}.preset-keys{color:var(--text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-normal)}.keymap-upload-offer{align-items:center;gap:var(--spacing-sm) var(--spacing-md);flex-wrap:wrap;margin:0;display:flex}.keymap-upload-offer .keyboard-import-hint{margin:0}.keymap-upload{padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light)}.keymap-upload-fields{align-items:flex-end;gap:var(--spacing-md);flex-wrap:wrap;display:flex}.keymap-upload-fields label{min-width:0;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);flex-direction:column;gap:.35rem;display:flex}.keymap-paste{flex:16rem}.keymap-upload-fields textarea{resize:vertical;width:100%;min-height:4.5rem;font-family:var(--font-family-mono);font-size:var(--font-size-small);font-weight:var(--font-weight-normal)}.keymap-upload-fields input[type=text]{font-weight:var(--font-weight-normal)}.keyboard-import-error{padding:var(--spacing-sm) var(--spacing-md);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-radius:var(--border-radius-md);background-color:var(--danger-soft);color:var(--danger-text);margin:0}.preset-list[aria-busy=true] .preset-button:disabled{opacity:1;cursor:progress}.preset-button.preset-loading,.preset-button.preset-loading:hover{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.preset-loading .preset-shape rect{fill:color-mix(in srgb, var(--primary) 55%, var(--background-light))}.preset-loading .preset-keys{color:var(--primary);align-items:center;gap:.4em;display:inline-flex}.letters-only-switch{align-items:center;gap:var(--spacing-sm);color:var(--text-primary);font-weight:var(--font-weight-medium);cursor:pointer;padding:.5em 0;display:inline-flex}.letters-only-switch:has(input:disabled){cursor:default;opacity:.7}.practice-bar{align-items:flex-end;gap:var(--spacing-sm) var(--spacing-xl);margin:0 0 var(--spacing-md);flex-wrap:wrap;display:flex}.practice-bar .choice-group{margin:0}.practice-bar .choice-group legend,.practice-bar .layout-picker label{margin-bottom:var(--spacing-xs)}.choice-group{margin:0 0 var(--spacing-lg);border:none;min-width:0;padding:0}.choice-group legend,.layout-picker label{margin-bottom:var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;padding:0;display:block}.choice-options{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.choice{cursor:pointer;position:relative}.choice input{opacity:0;width:1px;height:1px;position:absolute}.choice span{border:1px solid var(--background-dark);border-radius:var(--border-radius-pill);background-color:var(--background-light);color:var(--text-primary);font-weight:var(--font-weight-medium);transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);align-items:baseline;gap:.4em;padding:.5em 1.05em;display:inline-flex}.choice-compact span{font-variant-numeric:tabular-nums;padding:.35em .9em}.choice:hover span{border-color:var(--border-strong);background-color:var(--background-hover)}.choice input:checked+span{border-color:var(--primary);background-color:var(--primary-soft);color:var(--primary);font-weight:var(--font-weight-semibold)}.choice input:focus-visible+span{outline:2px solid var(--primary);outline-offset:2px}.choice-group:disabled .choice{cursor:default;opacity:.7}.choice-segmented{border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-medium);flex-wrap:wrap;gap:2px;max-width:100%;padding:3px;display:inline-flex}.choice-segmented--lengths{flex-wrap:nowrap}.choice-segmented .choice span{color:var(--text-secondary);background-color:#0000;border:1px solid #0000;border-radius:9px;padding:.5em 1.1em}.choice-segmented .choice:hover span{background-color:var(--background-hover);color:var(--text-primary);border-color:#0000}.choice-segmented .choice input:checked+span{border-color:var(--background-dark);background-color:var(--background-light);box-shadow:var(--shadow-sm);color:var(--text-primary)}[data-theme=dark] .choice-segmented .choice input:checked+span{border-color:var(--border-strong);background-color:var(--background-dark)}.mode-choices{align-items:center;gap:var(--spacing-xs) var(--spacing-lg);flex-wrap:wrap;display:flex}.choice-description{margin:var(--spacing-xs) 0 0;color:var(--text-secondary);font-size:var(--font-size-small);text-wrap:pretty}.choice-time{color:var(--text-primary);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.layout-picker{align-items:flex-start;gap:var(--spacing-sm);flex-direction:column;display:flex}.layout-picker label{margin-bottom:0}.keyboard-toggle,.keyboard-toggle:hover{border:1px solid var(--border-strong);background-color:var(--background-light);box-shadow:none;color:var(--text-primary);font-weight:var(--font-weight-medium)}.keyboard-toggle:hover:not(:disabled),.keyboard-toggle[aria-expanded=true]{border-color:var(--primary);background-color:var(--primary-soft);color:var(--primary)}.layout-picker-row{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.keyboard-panel{margin:0 0 var(--spacing-lg);padding:var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-medium)}.keyboard-panel-header{justify-content:space-between;align-items:baseline;gap:var(--spacing-md);display:flex}.keyboard-panel-header h2{font-size:var(--font-size-large);letter-spacing:-.011em;margin:0}.keyboard-panel-intro{margin:var(--spacing-xs) 0 var(--spacing-md);color:var(--text-secondary);font-size:var(--font-size-small)}.keyboard-chosen{margin:0 0 var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius-md);background-color:var(--success-soft);color:var(--text-primary)}.keyboard-chosen:empty{margin:0;padding:0}.keyboard-remove{margin:calc(-1 * var(--spacing-sm)) 0 var(--spacing-md);color:var(--text-secondary);font-size:var(--font-size-small)}@media (width<=600px){.practice-setup{padding:var(--spacing-lg) var(--spacing-md);border-radius:var(--border-radius-lg)}.choice-segmented{display:flex}.mode-choices>.choice-segmented{flex:100%}.choice-segmented .choice{flex:auto}.choice-segmented .choice span{box-sizing:border-box;justify-content:center;width:100%;padding:.5em .6em}.mode-description{min-height:4.5em}.layout-picker,.layout-picker-row,.layout-picker-row>*{width:100%}.layout-picker{align-items:stretch}.practice-cta{margin-inline:calc(-1 * var(--spacing-md));padding-inline:var(--spacing-md);padding-top:var(--spacing-sm);padding-bottom:calc(var(--spacing-sm) + env(safe-area-inset-bottom,0px))}html:has(.practice-cta){scroll-padding-bottom:5rem}.practice-button{width:100%}.practice-cta .profile-error,.practice-bar-offer{text-align:center}}@media (pointer:coarse){.practice-button kbd{display:none}}.practice-bar-section--compact .practice-bar{align-items:center;gap:var(--spacing-xs) var(--spacing-md);margin-bottom:0}.practice-bar[hidden]{display:none}.practice-bar-fold{margin-bottom:var(--spacing-xs);color:var(--text-secondary);font-size:var(--font-size-small);text-decoration:none}.practice-bar-section--compact .choice-group legend,.practice-bar-section--compact .layout-picker>label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.practice-bar-section--compact .choice-description,.practice-bar-section--compact .keyboard-chosen:empty{display:none}.practice-bar-section--compact .choice span{padding:.3em .8em}.practice-bar-section--compact .layout-picker select{min-width:9rem}.practice-bar-section--compact .keyboard-toggle{padding:.35em .8em}:root{--key-unit:2.5rem}.keymap-display-container{--keycap-top:#fff;--keycap-edge:#cfd6df;--keycap-legend:var(--text-primary);--finger-tint:34%;box-sizing:border-box;width:fit-content;max-width:100%;padding:var(--kb-pad,var(--spacing-md));border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-medium);color:var(--keycap-legend);font-family:var(--font-family-mono);margin:0 auto;overflow-x:auto}[data-theme=dark] .keymap-display-container{--keycap-top:#262e39;--keycap-edge:#0c1015;--finger-tint:16%;background-color:var(--background-page)}.keymap-rows{--key-gap:calc(var(--key-unit) * .1);width:max-content;font-size:max(10px, calc(var(--key-unit) * .4));flex-direction:column;align-items:center;margin:0 auto;display:flex}.keymap-row{display:flex}.keymap-key{--finger:#c9d1db;flex-basis:calc(var(--key-unit) - var(--key-gap));box-sizing:border-box;min-width:calc(var(--key-unit) - var(--key-gap));height:calc(var(--key-unit) - var(--key-gap));margin:calc(var(--key-gap) / 2);padding:calc(var(--key-unit) * .1);border:1px solid var(--keycap-edge);border-bottom-width:max(2px, calc(var(--key-unit) * .083));border-radius:calc(var(--key-unit) * .19);background-color:color-mix(in srgb, var(--finger) var(--finger-tint), var(--keycap-top));text-align:center;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;transition:background-color .1s,border-color .1s,box-shadow .1s;display:flex;position:relative;overflow:hidden}.keymap-key.key-finger-lp{--finger:var(--finger-lp)}.keymap-key.key-finger-lr{--finger:var(--finger-lr)}.keymap-key.key-finger-lm{--finger:var(--finger-lm)}.keymap-key.key-finger-li{--finger:var(--finger-li)}.keymap-key.key-finger-lt,.keymap-key.key-finger-rt{--finger:var(--finger-lt)}.keymap-key.key-finger-ri{--finger:var(--finger-ri)}.keymap-key.key-finger-rm{--finger:var(--finger-rm)}.keymap-key.key-finger-rr{--finger:var(--finger-rr)}.keymap-key.key-finger-rp{--finger:var(--finger-rp)}.keymap-key.key-stage{outline:2px solid var(--primary);outline-offset:-1px}.keymap-key.heatmap-intensity-low{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--warning) 45%, transparent)}.keymap-key.heatmap-intensity-medium{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--warning) 75%, transparent)}.keymap-key.heatmap-intensity-high{box-shadow:inset 0 0 0 3px var(--warning)}.keymap-key.key-current-expected{border-color:color-mix(in srgb, var(--finger) 70%, #000);background-color:var(--finger);box-shadow:0 0 0 2px var(--text-primary);color:#11161c}.keymap-key.key-current-expected .key-char-shift{color:#11161c}.keymap-key.key-typed-incorrect{border-color:var(--danger);background-color:var(--danger-soft)}.keymap-key.key-expected-missed{border-color:var(--danger);background-color:var(--danger-soft);outline:1px dashed var(--danger-text);outline-offset:-4px}.keymap-key.key-shift-active{border-color:var(--text-primary);background-color:color-mix(in srgb, var(--chord,var(--finger)) 55%, var(--keycap-top));color:#11161c;border-style:dashed}[data-theme=dark] .keymap-key.key-shift-active{background-color:color-mix(in srgb, var(--chord,var(--finger)) 80%, var(--keycap-top))}.keymap-key.key-home:after{content:"";bottom:calc(var(--key-unit) * .07);width:calc(var(--key-unit) * .22);height:max(2px, calc(var(--key-unit) * .05));border-radius:var(--border-radius-pill);opacity:.55;background-color:currentColor;position:absolute;left:50%;transform:translate(-50%)}.key-char-main{font-size:1em;font-weight:var(--font-weight-bold)}.key-char-shift{top:calc(var(--key-unit) * .05);left:calc(var(--key-unit) * .1);color:var(--text-secondary);font-size:.62em;line-height:1;position:absolute}.keymap-key--word .key-char-main{font-size:.7em}.keymap-loading{padding:var(--spacing-lg);text-align:center;color:var(--text-secondary)}@container aids (width<=30rem){.key-char-shift{display:none}.keymap-key--word[data-glyph] .key-char-main{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.keymap-key--word[data-glyph]:after{content:attr(data-glyph);font-weight:var(--font-weight-bold)}.keymap-key--symbol[data-glyph]:after{font-size:1.35em;line-height:1}}.keymap-key.key-heat-good{background-color:color-mix(in srgb, var(--success) 22%, var(--keycap-top))}.keymap-key.key-heat-fair{background-color:color-mix(in srgb, var(--warning) 32%, var(--keycap-top))}.keymap-key.key-heat-weak{border-color:var(--danger);background-color:color-mix(in srgb, var(--danger) 30%, var(--keycap-top))}.keymap-key.key-heat-few{border-style:dashed}.hand-guide{margin:var(--spacing-md) auto;padding:var(--spacing-md) var(--spacing-sm) var(--spacing-sm);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-medium);text-align:center;font-size:1rem}.hands{justify-content:safe center;gap:2em;display:flex}.hand{align-items:flex-end;gap:.35em;min-width:0;display:flex}.hand-finger{border:max(1.5px, .125em) solid color-mix(in srgb, var(--text-secondary) 75%, transparent);background-color:var(--background-light);border-radius:.7em .7em .4em .4em;width:1.4em;min-width:1em;height:3.5em;transition:background-color .1s,border-color .1s}.hand-finger-lp,.hand-finger-rp{height:2.6em}.hand-finger-lr,.hand-finger-rr{height:3.3em}.hand-finger-lm,.hand-finger-rm{height:3.7em}.hand-finger-li,.hand-finger-ri{height:3.3em}.hand-finger-lt{width:1.6em;height:2em}.hand-left .hand-finger-lt{margin-left:.25em;transform:rotate(25deg)}.hand-right .hand-finger-lt{margin-right:.25em;transform:rotate(-25deg)}.hand-finger-active{border-color:var(--text-primary)}.hand-finger-active.hand-finger-lp{background-color:var(--finger-lp)}.hand-finger-active.hand-finger-lr{background-color:var(--finger-lr)}.hand-finger-active.hand-finger-lm{background-color:var(--finger-lm)}.hand-finger-active.hand-finger-li{background-color:var(--finger-li)}.hand-finger-active.hand-finger-lt{background-color:var(--finger-lt)}.hand-finger-active.hand-finger-ri{background-color:var(--finger-ri)}.hand-finger-active.hand-finger-rm{background-color:var(--finger-rm)}.hand-finger-active.hand-finger-rr{background-color:var(--finger-rr)}.hand-finger-active.hand-finger-rp{background-color:var(--finger-rp)}.hand-finger-shift{border-color:var(--text-primary);border-style:dashed}.hand-guide-caption{margin:var(--spacing-xs) 0 0;color:var(--text-secondary);font-size:var(--font-size-small)}.split-keyboard{--keycap-top:#fff;--keycap-edge:#d6dce4;--keycap-stroke:#c2cbd6;--keycap-thumb:#f1f4f8;--keycap-legend:var(--text-primary);margin:var(--spacing-md) auto;text-align:center;max-width:760px}[data-theme=dark] .split-keyboard{--keycap-top:#252d38;--keycap-edge:#0d1116;--keycap-stroke:#343e4b;--keycap-thumb:#1e252f}.split-keyboard svg{width:100%;height:auto;display:block}.split-halves{--split-unit:2.5rem;flex-direction:column;align-items:center;display:flex}.split-keyboard .split-half{width:min(100%, calc(var(--split-unit) * var(--half-w)))}.split-half-labels{box-sizing:border-box;width:min(100%, calc(var(--split-unit) * var(--halves-w,6)));height:calc(var(--split-unit) * .6);padding-inline:calc(var(--split-unit) * .1);color:var(--text-secondary);font-size:clamp(9px, calc(var(--split-unit) * .4), 11px);line-height:calc(var(--split-unit) * .6);white-space:nowrap;justify-content:space-between;display:flex}.split-key .split-key-edge{fill:var(--keycap-edge);stroke:var(--keycap-stroke);stroke-width:1px}.split-key .split-key-top{fill:var(--keycap-top)}.split-key text{fill:var(--keycap-legend);font-family:var(--font-family-mono);font-size:13px;font-weight:var(--font-weight-medium);pointer-events:none}.split-key text.split-legend-sm{font-size:11px}.split-key text.split-legend-xs{font-size:9.5px}.split-keyboard[data-small] .split-key text{font-size:clamp(13px, calc(11px * var(--svg-px,1)), 21px)}.split-keyboard[data-small] .split-key text.split-legend-2{font-size:clamp(11px, calc(10.5px * var(--svg-px,1)), 18px)}.split-keyboard[data-small] .split-key text.split-legend-3{font-size:clamp(9.5px, calc(10px * var(--svg-px,1)), 16.5px)}.split-keyboard[data-small] .split-key text.split-legend-symbol{font-size:clamp(19px, calc(18px * var(--svg-px,1)), 28px)}.split-thumb .split-key-top{fill:var(--keycap-thumb)}.split-layer-key .split-key-top{fill:var(--accent-soft)}.split-layer-key text{fill:var(--accent-dark)}[data-theme=dark] .split-layer-key text{fill:var(--accent)}.split-inherited text{fill:var(--text-secondary);opacity:.6}.split-finger-lp{--finger:var(--finger-lp)}.split-finger-lr{--finger:var(--finger-lr)}.split-finger-lm{--finger:var(--finger-lm)}.split-finger-li{--finger:var(--finger-li)}.split-finger-lt,.split-finger-rt{--finger:var(--finger-lt)}.split-finger-ri{--finger:var(--finger-ri)}.split-finger-rm{--finger:var(--finger-rm)}.split-finger-rr{--finger:var(--finger-rr)}.split-finger-rp{--finger:var(--finger-rp)}.split-stage .split-key-edge{stroke:var(--primary);stroke-width:2.5px}.split-expected .split-key-edge{fill:color-mix(in srgb, var(--finger,var(--primary)) 70%, #000);stroke:var(--text-primary);stroke-width:2.5px}.split-expected .split-key-top{fill:var(--finger,var(--primary))}.split-expected text{fill:#11161c;font-weight:var(--font-weight-bold)}.split-via .split-key-edge{stroke:var(--primary);stroke-width:3px;stroke-dasharray:5 3}.split-keyboard-caption{margin-top:var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-small)}.typing-aids .split-keyboard{max-width:none;margin:0}.typing-aids .split-keyboard svg{width:min(calc(var(--key-unit) * var(--kb-w)), 100cqw)}.typing-aids .split-halves{--split-unit:var(--key-unit)}.typing-aids .split-keyboard .split-half{width:min(calc(var(--key-unit) * var(--half-w)), 100cqw)}.typing-aids .split-keyboard-caption{contain:inline-size;text-overflow:ellipsis;white-space:nowrap;height:1.5rem;margin-top:0;line-height:1.5rem;overflow:hidden}.split-heat-good .split-key-top{fill:color-mix(in srgb, var(--success) 22%, var(--keycap-top))}.split-heat-fair .split-key-top{fill:color-mix(in srgb, var(--warning) 32%, var(--keycap-top))}.split-heat-weak .split-key-top{fill:color-mix(in srgb, var(--danger) 30%, var(--keycap-top))}.split-heat-weak .split-key-edge{stroke:var(--danger);stroke-width:1.5px}.split-heat-few .split-key-edge{stroke:var(--border-strong);stroke-dasharray:3 3}:root{--typing-text-size:clamp(1.25rem, min(.9rem + 1.2vw, .55rem + 2.5vh), 1.75rem);--text-pad-x:clamp(1rem, 3vw, 2rem);--text-pad-y:clamp(.75rem, 2.5vh, 1.5rem);--hint-room:calc(max(var(--text-pad-y), 1.5rem) + .3rem);--mono-advance:.632;--typing-width:calc(64 * var(--mono-advance) * var(--typing-text-size) + 2 * var(--text-pad-x) + 2px)}.typing-interface-container{--text-lines:3;width:100%;min-height:0;max-width:var(--typing-width);flex-direction:column;flex:auto;gap:clamp(.5rem,1.5vh,1rem);margin:0 auto;display:flex;container:stage/inline-size}@media (height<=540px){.typing-interface-container{--text-lines:2}}.typing-toolbar{align-items:center;gap:var(--spacing-md);flex-wrap:nowrap;flex:none;height:2.25rem;margin:0;display:flex}.typing-toolbar-slot{align-items:center;gap:var(--spacing-sm);white-space:nowrap;flex:auto;min-width:0;display:flex;overflow:hidden}.typing-toolbar-slot>*{text-overflow:ellipsis;min-width:0;overflow:hidden}.typing-toolbar-slot>button{flex:none}.typing-toolbar-lead{align-items:center;display:flex}.typing-context{color:var(--text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);letter-spacing:normal;white-space:nowrap;margin:0;line-height:1.4}.typing-tools{gap:var(--spacing-xs);flex:none;margin-left:auto;display:flex}.tool-button,.tool-button:hover,.session-control,.session-control:hover{border:1px solid var(--background-dark);border-radius:var(--border-radius-pill);background-color:var(--background-light);box-shadow:none;color:var(--text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);padding:.35em .85em;line-height:1.4}.tool-button:hover,.session-control:hover{border-color:var(--border-strong);background-color:var(--background-hover);color:var(--text-primary)}.tool-button[aria-pressed]{justify-content:center;align-items:center;gap:.4em;display:inline-flex}.tool-button[aria-pressed=true],.tool-button[aria-pressed=true]:hover{border-color:color-mix(in srgb, var(--primary) 45%, transparent);background-color:var(--primary-soft);color:var(--primary)}.tool-icon{--icon-keyboard:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='6' width='19' height='12' rx='2.5'/%3E%3Cpath d='M6.5 10h.01M10 10h.01M14 10h.01M17.5 10h.01M8 14h8'/%3E%3C/svg%3E");--icon-hands:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 20v-3.5L4.5 13a1.6 1.6 0 0 1 2.6-1.9L8.5 13V5.5a1.5 1.5 0 0 1 3 0V11V4a1.5 1.5 0 0 1 3 0v7V5.5a1.5 1.5 0 0 1 3 0V14a6 6 0 0 1-2 4.5V20'/%3E%3C/svg%3E");--icon-sound:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9.5v5h3.5L12 18.5v-13L7.5 9.5z'/%3E%3Cpath d='M15.5 9a4 4 0 0 1 0 6M18 6.5a7.5 7.5 0 0 1 0 11'/%3E%3C/svg%3E");--icon-sound-off:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9.5v5h3.5L12 18.5v-13L7.5 9.5z'/%3E%3Cpath d='m16 9.5 5 5M21 9.5l-5 5'/%3E%3C/svg%3E");width:1.15em;height:1.15em;-webkit-mask:var(--icon) center / contain no-repeat;-webkit-mask:var(--icon) center / contain no-repeat;mask:var(--icon) center / contain no-repeat;background-color:currentColor;flex:none}.tool-icon--keyboard{--icon:var(--icon-keyboard)}.tool-icon--hands{--icon:var(--icon-hands)}.tool-icon--sound{--icon:var(--icon-sound)}.sound-toggle[aria-pressed=false] .tool-icon--sound{--icon:var(--icon-sound-off)}@container stage (width<=36rem){.typing-toolbar{height:2.75rem}.typing-tools .tool-button{width:2.75rem;height:2.75rem;padding:0}.typing-tools .tool-icon{width:1.25rem;height:1.25rem}.tool-label{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}}@container stage (width<=52rem){.typing-toolbar:has(.typing-toolbar-lead){height:2.75rem}.typing-toolbar:has(.typing-toolbar-lead) .tool-button{width:2.75rem;height:2.75rem;padding:0}.typing-toolbar:has(.typing-toolbar-lead) .tool-icon{width:1.25rem;height:1.25rem}.typing-toolbar:has(.typing-toolbar-lead) .tool-label{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.typing-footer[data-controls] .stat-detail{min-inline-size:7ch}.typing-footer[data-controls] .stat-detail-fixed{display:none}}@media (pointer:coarse){.tool-button,.session-control{min-width:44px;min-height:44px}.typing-toolbar{height:2.75rem}}.session-control:disabled,.session-control:disabled:hover{border-color:var(--background-dark);color:var(--text-secondary);background-color:#0000}.session-control--cancel,.session-control--cancel:hover{background-color:#0000;border-color:#0000}.session-control--cancel:hover{color:var(--danger-text)}.cancel-confirm{align-items:center;gap:var(--spacing-xs);white-space:nowrap;display:flex}.cancel-question{margin-right:var(--spacing-xs);color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium)}.session-control--danger,.session-control--danger:hover{border-color:color-mix(in srgb, var(--danger) 50%, transparent);background-color:var(--danger-soft);color:var(--danger-text)}.session-control--danger:hover{border-color:var(--danger)}.typing-footer:has(.cancel-confirm) .stat-detail{display:none}.connection-notice{border-radius:var(--border-radius-pill);background-color:var(--danger-soft);color:var(--danger-text);font-size:var(--font-size-small);flex:0 auto;margin:0;padding:.15em .7em}.saving-indicator{color:var(--text-secondary);font-size:var(--font-size-small);flex:0 auto;margin:0}.typing-progress-container{top:1px;right:var(--text-pad-x);left:var(--text-pad-x);z-index:1;border-radius:0 0 var(--border-radius-pill) var(--border-radius-pill);background-color:color-mix(in srgb, var(--background-dark) 45%, transparent);height:3px;margin:0;position:absolute;overflow:hidden}.typing-progress-bar{border-radius:inherit;background-color:var(--primary);height:100%;transition:width .15s ease-out}.text-area-wrapper{flex:none;position:relative}.text-display-area{--typed-text:var(--text-primary);--untyped-text:var(--text-secondary);box-sizing:content-box;max-width:64ch;padding:var(--text-pad-y) var(--text-pad-x) var(--hint-room);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-light);box-shadow:var(--shadow-sm);color:var(--untyped-text);font-family:var(--font-family-text);font-size:var(--typing-text-size);font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;white-space:pre-wrap;overflow-wrap:break-word;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);margin:0 auto;line-height:1.65}.text-window{height:calc(var(--text-lines) * 1.65em);margin-inline:-2px;padding-inline:2px;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.text-window{scroll-behavior:smooth}}.text-display-area--focused{border-color:color-mix(in srgb, var(--primary) 60%, var(--background-dark));box-shadow:0 0 0 4px color-mix(in srgb, var(--primary) 12%, transparent), var(--shadow-sm);outline:none}.char-correct{color:var(--typed-text)}.char-incorrect{background-color:color-mix(in srgb, var(--danger) 18%, transparent);color:var(--danger-text);text-decoration:underline;text-decoration-thickness:2px;-webkit-text-decoration-color:var(--danger-text);text-decoration-color:var(--danger-text);text-underline-offset:.2em;border-radius:3px}.char-missed{color:var(--untyped-text);-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-decoration-thickness:2px;-webkit-text-decoration-color:var(--danger-text);text-decoration-color:var(--danger-text);text-underline-offset:.2em}.char-upcoming{color:var(--untyped-text)}.char-current{color:var(--untyped-text);position:relative}.char-current:before{content:"";background-color:var(--primary);border-radius:1px;width:2px;position:absolute;top:.12em;bottom:.12em;left:-1px}@media (prefers-reduced-motion:no-preference){.text-display-area[data-typing=idle] .char-current:before{animation:1.1s step-end infinite caret-blink}}@keyframes caret-blink{50%{opacity:0}}.typing-hint{right:calc(var(--text-pad-x) + 1px);color:var(--text-secondary);font-size:var(--font-size-small);line-height:var(--hint-room);white-space:nowrap;pointer-events:none;margin:0;position:absolute;bottom:1px}.typing-hint-short{display:none}@container stage (width<=44rem){.typing-hint-long{display:none}.typing-hint-short{display:inline}}.typing-error-message{padding:var(--spacing-md);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-radius:var(--border-radius-md);background-color:var(--danger-soft);color:var(--danger-text);font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);display:block}.typing-input-hidden{opacity:0;resize:none;pointer-events:none;border:0;width:1px;height:1px;min-height:0;padding:0;font-size:16px;position:absolute;top:0;left:0}.typing-footer{justify-content:space-between;align-items:center;gap:var(--spacing-md);flex-wrap:nowrap;flex:none;height:2.25rem;margin:0;display:flex}.session-controls{align-items:center;gap:var(--spacing-xs);flex:none;margin-left:auto;display:flex}@media (pointer:coarse){.typing-footer{height:2.75rem}}@container stage (width<=36rem){.typing-footer{flex-wrap:wrap;row-gap:0;height:auto}.typing-footer>.realtime-stats-container{flex:1 0 100%;height:2.75rem}.session-controls{height:2.75rem}}.typing-aids{flex:1 1 0;min-height:11rem;container:aids/size}.typing-aids[data-aids=hands]{min-height:7rem}.typing-aids-inner{--kb-pad:.5rem;--key-max:2.75rem;--side-units:0;--below-units:0;--hands-h:0rem;--split-caption:0rem;--hand-caption:0rem;--key-unit:clamp(.9rem, min((100cqw - 2 * var(--kb-pad) - 2px) / (var(--kb-w) + 2 * var(--side-units)), ( 100cqh - var(--split-caption) - var(--hand-caption) - var(--hands-h) - 2 * var(--kb-pad) - 2px ) / (var(--kb-h) + var(--below-units))), var(--key-max));grid-template-columns:1fr auto 1fr;align-content:start;justify-items:center;height:100%;display:grid}.typing-aids-inner[data-keyboard=split]{--key-max:3rem;--split-caption:1.5rem}.typing-aids-inner[data-hands=on]{--split-caption:0rem;--hand-caption:1.5rem}@container aids (height>=28rem){.typing-aids-inner{--key-max:3.25rem}.typing-aids-inner[data-keyboard=split]{--key-max:3.5rem}}.typing-aids-inner>:not(.hand-guide){grid-area:1/2;max-width:100%}.typing-aids .hand-guide{width:100%;font-size:calc(var(--key-unit) * .44);background:0 0;border:0;grid-area:2/1/auto/-1;margin:0;padding:0}.typing-aids-inner:not([data-keyboard=none])[data-hands=on]{--below-units:2.1}.typing-aids-inner:not([data-keyboard=none]) .hands{margin-top:calc(var(--key-unit) * .3)}.typing-aids .hand-guide-caption{contain:inline-size;height:1.5rem;color:var(--text-primary);font-size:var(--font-size-small);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.5rem;overflow:hidden}.typing-aids-inner[data-keyboard=none] .hand-guide{font-size:1rem}@container aids (width>=52rem){.typing-aids-inner:not([data-keyboard=none])[data-hands=on]{--side-units:5;--below-units:0;column-gap:calc(var(--key-unit) * .5);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.typing-aids-inner:not([data-keyboard=none]) .hand-guide{grid-area:1/1/3/-1;grid-template-rows:subgrid;grid-template-columns:subgrid;pointer-events:none;display:grid}.typing-aids-inner:not([data-keyboard=none]) .hands{display:contents}.typing-aids-inner:not([data-keyboard=none]) .hand-left{grid-area:1/1;place-self:center end}.typing-aids-inner:not([data-keyboard=none]) .hand-right{grid-area:1/3;place-self:center start}.typing-aids-inner:not([data-keyboard=none]) .hand-guide-caption{grid-area:2/1/auto/-1;width:100%}}@container aids (width<30rem){.typing-aids-inner[data-hands=on]{--hand-caption:2.5rem}.typing-aids-inner:not([data-keyboard=none])[data-hands=on]{--below-units:0;--hands-h:3.3rem}.typing-aids-inner:not([data-keyboard=none]) .hand-guide{font-size:.8rem}.typing-aids-inner:not([data-keyboard=none]) .hands{margin-top:.3rem}.typing-aids .hand-guide-caption{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;height:2.5rem;line-height:1.25rem;display:-webkit-box}}@container aids (width<52rem) and (height<13rem){.typing-aids-inner:not([data-keyboard=none]) .hands{display:none}.typing-aids-inner:not([data-keyboard=none])[data-hands=on]{--below-units:0;--hands-h:0rem}}@media (width<=480px){.typing-aids{margin-inline:calc(4px - var(--page-gutter))}}.dimmed-input .text-window{opacity:.3;transition:opacity .2s ease-out}.typing-paused{color:var(--text-secondary);font-size:var(--font-size-small);margin:0}.paused-indicator{z-index:10;padding:var(--spacing-sm) var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-lg);color:var(--text-primary);text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.paused-indicator strong{font-size:var(--font-size-large)}.paused-indicator span{color:var(--text-secondary);font-size:var(--font-size-small);white-space:nowrap}.paused-indicator .paused-note{font-size:var(--font-size-xsmall)}.paused-indicator .paused-how-touch{display:none}@media (pointer:coarse){.paused-indicator .paused-how{display:none}.paused-indicator .paused-how-touch{display:inline}}.keymap-error-message{color:var(--danger-text)}.keymap-skeleton{box-sizing:border-box;width:calc(var(--kb-w) * var(--key-unit) + 2 * var(--kb-pad));height:calc(var(--kb-h) * var(--key-unit) + 2 * var(--kb-pad));border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-medium);color:var(--text-secondary);font-size:var(--font-size-small);justify-content:center;align-items:center;display:flex}.stats-grid{gap:var(--spacing-md);margin-bottom:var(--spacing-xl);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.stat-item{padding:var(--spacing-md);border-radius:var(--border-radius-lg);background-color:var(--background-medium);flex-direction:column;align-items:center;display:flex;position:relative;overflow:hidden}.action-button{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--border-radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);cursor:pointer;box-shadow:var(--shadow-sm)}.session-results{max-width:880px;margin:0 auto}.results-summary{padding:var(--spacing-xl);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-light);box-shadow:var(--shadow-sm);animation:.2s ease-out results-in}@keyframes results-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.results-heading-row{justify-content:space-between;align-items:center;gap:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap;display:flex}.results-heading-row h1{color:var(--text-primary);font-size:var(--font-size-xlarge);letter-spacing:-.018em;border:none;margin:0;padding:0}.results-heading-row h1:focus{outline:none}.results-best{border:1px solid color-mix(in srgb, var(--warning) 60%, transparent);border-radius:var(--border-radius-pill);background-color:var(--warning-soft);color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-bold);align-items:baseline;gap:.35em;margin:0;padding:.3em .85em;animation:.45s ease-out both results-best-in;display:inline-flex}.results-best>span:first-child{color:var(--warning-text)}.results-best-before{color:var(--text-secondary);font-weight:var(--font-weight-normal)}@keyframes results-best-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}.session-results .results-stats{gap:var(--spacing-sm);margin:0 0 var(--spacing-md);grid-template-columns:repeat(4,minmax(0,1fr))}.session-results .stat-item{padding:var(--spacing-md) var(--spacing-lg);text-align:left;align-items:flex-start}.session-results .stat-item--main .stat-value{letter-spacing:-.03em;font-size:2.5rem;line-height:1.05}.session-results .stat-item:not(.stat-item--main) .stat-value{margin-top:.35rem}.session-results .stat-item--best{background-color:var(--warning-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--warning) 60%, transparent)}.stat-comparison{margin-top:var(--spacing-xs);color:var(--text-secondary);font-size:var(--font-size-small)}.comparison-up{color:var(--success-text);font-weight:var(--font-weight-semibold)}.results-comparison{margin:0 0 var(--spacing-md);color:var(--text-secondary);font-size:var(--font-size-small)}.results-not-saved{margin:0 0 var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);border:1px solid color-mix(in srgb, var(--warning) 45%, transparent);border-radius:var(--border-radius-md);background:var(--warning-soft);color:var(--text-primary);font-size:var(--font-size-small)}.session-actions{align-items:center;gap:var(--spacing-sm) var(--spacing-md);margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--background-dark);flex-wrap:wrap;display:flex}.results-primary,.results-primary:hover{font-size:1.125rem;font-weight:var(--font-weight-bold);box-shadow:var(--shadow-md);padding:.7em 1.8em}.results-secondary,.results-secondary:hover{border:1px solid var(--border-strong);background-color:var(--background-light);box-shadow:none;color:var(--text-primary)}.results-secondary:hover:not(:disabled){border-color:var(--text-secondary);background-color:var(--background-hover)}.session-actions .choose-text-button{margin-left:auto}.results-hint{margin:var(--spacing-sm) 0 0;color:var(--text-secondary);font-size:var(--font-size-small)}@media (hover:none) and (pointer:coarse){.results-hint{display:none}}.results-more{gap:var(--spacing-md);margin-top:var(--spacing-md);flex-direction:column;display:flex}.session-results .results-more>*{margin-top:0;margin-bottom:0}.results-save-progress{align-items:center;gap:var(--spacing-sm) var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);border:1px solid color-mix(in srgb, var(--primary) 30%, transparent);border-radius:var(--border-radius-lg);background:var(--primary-soft);flex-wrap:wrap;display:flex}.results-save-progress p{color:var(--text-primary);flex:18rem;margin:0}.results-links{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.results-drill{align-items:center;gap:var(--spacing-sm) var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);flex-wrap:wrap;display:flex}.results-drill p{color:var(--text-secondary);flex:18rem;margin:0}.results-drill strong{color:var(--text-primary);font-family:var(--font-family-mono)}.results-links svg{color:var(--text-secondary);flex:none}.problematic-elements-section{padding:var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-xs)}.problematic-elements-section h3{color:var(--text-primary);margin:0;font-size:1.125rem}.results-section-note{margin:var(--spacing-xs) 0 var(--spacing-md);color:var(--text-secondary);font-size:var(--font-size-small)}.problematic-elements-grid{gap:var(--spacing-sm);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.problematic-list{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius-md);background-color:var(--background-medium)}.problematic-list h4{margin:var(--spacing-xs) 0 var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.06em;text-transform:uppercase}.problematic-list ul{max-height:200px;margin:0;padding:0;list-style:none;overflow-y:auto}.problematic-list li{padding:var(--spacing-xs) 0;border-bottom:1px solid var(--background-dark);color:var(--text-secondary);font-size:var(--font-size-small)}.problematic-list li:last-child{border-bottom:none}.element-char{border:1px solid var(--border-strong);background-color:var(--background-light);min-width:1.4em;color:var(--danger-text);font-family:var(--font-family-mono);font-weight:var(--font-weight-bold);text-align:center;white-space:pre;border-bottom-width:2px;border-radius:5px;padding:0 .35em;display:inline-block}.element-count{color:var(--text-secondary)}.problematic-list p{margin:var(--spacing-sm) 0;color:var(--text-secondary);font-size:var(--font-size-small)}@media (width<=600px){.results-summary{padding:var(--spacing-lg) var(--spacing-md)}.session-results .results-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.session-results .stat-item{padding:var(--spacing-sm) var(--spacing-md)}.session-results .stat-item--main .stat-value{font-size:2rem}.results-primary{flex:100%}.session-actions .choose-text-button{margin-left:0}.results-links>button{flex:auto;padding-inline:.75em}.problematic-elements-section{padding:var(--spacing-md)}}@media (prefers-reduced-motion:reduce){.results-summary,.results-best{animation:none}}.results-details>summary{cursor:pointer;color:var(--text-secondary);font-weight:var(--font-weight-semibold)}.results-details[open]>summary{margin-bottom:var(--spacing-sm)}.finger-stats{margin-top:var(--spacing-lg);padding:var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-xs);text-align:left}.finger-stats h3{margin:0;font-size:1.125rem}.finger-stats-intro{margin:var(--spacing-xs) 0 0;color:var(--text-secondary);font-size:var(--font-size-small)}.finger-chart{justify-content:center;align-items:flex-end;gap:var(--spacing-md) var(--spacing-lg);margin:var(--spacing-lg) 0 var(--spacing-md);padding:var(--spacing-lg) var(--spacing-sm) var(--spacing-sm);border-radius:var(--border-radius-lg);background-color:var(--background-medium);flex-wrap:wrap;display:flex}.finger-hand{gap:var(--spacing-xs);margin:0;padding:0;list-style:none;display:flex}.finger-hand-group{flex-direction:column;align-items:center;display:flex}.finger-hand-caption{margin-bottom:var(--spacing-xs);color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;display:none}.finger-column{flex-direction:column;align-items:center;width:3rem;display:flex;position:relative}.finger-bar{box-sizing:border-box;border-radius:.875rem .875rem var(--border-radius-sm) var(--border-radius-sm);background-color:var(--background-light);width:1.75rem;height:5rem;box-shadow:inset 0 0 0 1px var(--background-dark);align-items:flex-end;display:flex;overflow:hidden}.finger-fill{background-color:var(--finger-color,var(--primary));width:100%}.finger-empty .finger-bar{border:1px dashed var(--text-secondary);box-shadow:none;background-color:#0000;justify-content:center;align-items:center}.finger-few{color:var(--text-secondary);white-space:nowrap;writing-mode:vertical-rl;font-size:.6875rem;line-height:1;transform:rotate(180deg)}.finger-empty .finger-name{opacity:.8}.finger-accuracy{margin-top:var(--spacing-xs);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.finger-name{color:var(--text-secondary);font-size:var(--font-size-small)}.finger-weakest .finger-bar{outline:2px solid var(--danger);outline-offset:2px}.finger-weakest .finger-accuracy,.finger-weakest .finger-name{color:var(--danger-text);font-weight:var(--font-weight-bold)}.finger-slowest .finger-bar{outline:2px solid var(--text-secondary);outline-offset:2px}.finger-slowest .finger-name{color:var(--text-primary);font-weight:var(--font-weight-bold)}.finger-tag{color:var(--text-secondary);font-size:.6875rem;font-weight:var(--font-weight-semibold);white-space:nowrap;margin-bottom:.3rem;line-height:1;position:absolute;bottom:100%}.finger-lp{--finger-color:var(--finger-lp)}.finger-lr{--finger-color:var(--finger-lr)}.finger-lm{--finger-color:var(--finger-lm)}.finger-li{--finger-color:var(--finger-li)}.finger-lt{--finger-color:var(--finger-lt)}.finger-ri{--finger-color:var(--finger-ri)}.finger-rm{--finger-color:var(--finger-rm)}.finger-rr{--finger-color:var(--finger-rr)}.finger-rp{--finger-color:var(--finger-rp)}.finger-stats-weakest{margin:0}@media (width<=600px){.finger-chart{justify-content:center;gap:var(--spacing-lg) var(--spacing-md);grid-template-areas:"left thumbs""right thumbs";display:grid}.finger-hand-caption{display:block}.finger-hand-left{grid-area:left}.finger-hand-right{grid-area:right}.finger-hand-thumbs{grid-area:thumbs;align-self:center}.finger-hand-thumbs .finger-hand-caption{display:none}}@media (width<=480px){.finger-column{width:2.5rem}.finger-accuracy,.finger-name{font-size:.75rem}}.layer-stats-scroll{overflow-x:auto}.layer-stats{margin-top:var(--spacing-lg);border-collapse:collapse;font-size:var(--font-size-small);font-variant-numeric:tabular-nums}.layer-stats caption{margin-bottom:var(--spacing-xs);font-weight:var(--font-weight-bold);text-align:left}.layer-stats th,.layer-stats td{padding:var(--spacing-xs) var(--spacing-lg) var(--spacing-xs) 0;border-bottom:1px solid var(--background-dark);text-align:left}.layer-stats tbody tr:last-child th,.layer-stats tbody tr:last-child td{border-bottom:none}.layer-stats thead th{color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase}.layer-stats td{white-space:nowrap}.layer-stats-joined{display:none}@media (width<=480px){.layer-stats th,.layer-stats td{padding-right:var(--spacing-sm)}.layer-stats-joined{display:inline}.layer-stats-ratio{display:none}}.layer-stats-note{max-width:40rem;margin:var(--spacing-xs) 0 0;color:var(--text-secondary);font-size:var(--font-size-small)}.layer-slips h4{margin:var(--spacing-md) 0 var(--spacing-xs);font-size:var(--font-size-base)}.layer-slips-list{gap:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-small);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.layer-slips-list li{border:1px solid var(--background-dark);border-radius:var(--border-radius-pill);background-color:var(--background-medium);padding:.2rem .7rem}.layer-slips-count{font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums}.layer-slips-note{margin:var(--spacing-sm) 0 0;color:var(--text-secondary);font-size:var(--font-size-small)}.keyboard-notice{margin:0 0 var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-md);border:1px solid color-mix(in srgb, var(--warning) 45%, transparent);border-radius:var(--border-radius-md);background-color:var(--warning-soft);color:var(--text-primary)}.keyboard-notice.practice-note-notice{margin-bottom:var(--spacing-sm);flex:none}.practice-note{margin:0 0 var(--spacing-xs);color:var(--text-secondary);font-size:var(--font-size-small);flex:none;line-height:1.5}.replaced-text-line{transition:opacity .125s ease-out}.App:has(.typing-interface-container[data-chrome=hidden]) .replaced-text-line{opacity:0}@media (prefers-reduced-motion:reduce){.replaced-text-line{transition:none}}.placement-line{margin:var(--spacing-md) 0}.practice-change,.practice-change:hover{font-size:var(--font-size-small);flex:none}.diagnosis{max-width:880px;padding:var(--spacing-xl);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-light);box-shadow:var(--shadow-sm);text-align:left;margin:0 auto}.diagnosis h1{margin:0 0 var(--spacing-lg);font-size:var(--font-size-xlarge);letter-spacing:-.018em}.diagnosis h3,.diagnosis h4{margin:var(--spacing-xl) 0 var(--spacing-sm);font-size:var(--font-size-base)}.diagnosis .diagnosis-details{margin:var(--spacing-xl) 0 0;padding-top:var(--spacing-lg);border-top:1px solid var(--background-dark);color:var(--text-secondary);font-size:var(--font-size-xsmall);font-weight:var(--font-weight-semibold);letter-spacing:.06em;text-transform:uppercase}.diagnosis .diagnosis-details+h4{margin-top:var(--spacing-md)}.diagnosis-headline{gap:var(--spacing-sm);grid-template-columns:repeat(2,minmax(0,12rem));display:grid}.diagnosis-headline>div{padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--border-radius-lg);background-color:var(--background-medium)}.diagnosis-number{color:var(--text-primary);font-size:2.5rem;font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;letter-spacing:-.03em;line-height:1.1;display:block}.diagnosis-unit{color:var(--text-secondary);font-size:var(--font-size-small)}.weak-pairs{gap:var(--spacing-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.weak-pairs li{min-width:5.5rem;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-xs);flex-direction:column;align-items:center;gap:2px;display:flex}.weak-pair{color:var(--danger-text);font-family:var(--font-family-mono);font-size:var(--font-size-xlarge);font-weight:var(--font-weight-bold);white-space:pre}.weak-pair-reason{color:var(--text-secondary);font-size:var(--font-size-small)}.diagnosis-note{margin:var(--spacing-sm) 0 0;color:var(--text-secondary);font-size:var(--font-size-small)}.class-list{gap:var(--spacing-xs);margin:0;padding:0;list-style:none;display:grid}.class-list li{gap:2px var(--spacing-md);padding:var(--spacing-xs) 0;grid-template-columns:minmax(9rem,12rem) minmax(4rem,1fr);grid-template-areas:"name bar"".figures";align-items:center;display:grid}.class-name{grid-area:name}.class-bar{border-radius:var(--border-radius-pill);background-color:var(--background-medium);height:.5rem;box-shadow:inset 0 0 0 1px var(--background-dark);grid-area:bar;overflow:hidden}.class-bar span{border-radius:inherit;background-color:var(--success);height:100%;display:block}.class-focus .class-bar span{background-color:var(--primary)}.class-focus .class-name{font-weight:var(--font-weight-bold)}.class-figures{color:var(--text-secondary);font-size:var(--font-size-small);grid-area:figures}.diagnosis-finger{margin:0}.diagnosis-plan{margin-top:var(--spacing-lg);padding:var(--spacing-lg);border:1px solid color-mix(in srgb, var(--primary) 30%, transparent);border-radius:var(--border-radius-lg);background-color:var(--primary-soft)}.diagnosis-plan h3{margin-top:0}.diagnosis-plan p{margin:0}.diagnosis-actions{align-items:center;gap:var(--spacing-md) var(--spacing-lg);margin-top:var(--spacing-md);flex-wrap:wrap;display:flex}.diagnosis-actions .practice-button{margin:0}@media (hover:none) and (pointer:coarse),(width<=400px){.diagnosis-enter{display:none}}.diagnosis .results-save-progress{margin-top:var(--spacing-lg)}@media (width<=600px){.diagnosis{padding:var(--spacing-lg) var(--spacing-md)}.diagnosis-headline{grid-template-columns:repeat(2,minmax(0,1fr))}.diagnosis-number{font-size:2rem}.class-list li{grid-template-columns:minmax(0,1fr);grid-template-areas:"name""bar""figures"}.diagnosis-actions .practice-button{width:100%}}.daily-goal{justify-content:space-between;align-items:center;gap:var(--spacing-sm) var(--spacing-xl);margin-bottom:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-light);box-shadow:var(--shadow-xs);text-align:left;flex-wrap:wrap;display:flex}.daily-goal-today{flex-direction:column;flex:14rem;gap:.4rem;display:flex}.daily-goal-label{color:var(--text-secondary);font-size:var(--font-size-small)}.daily-goal-label strong{color:var(--text-primary);font-size:var(--font-size-base);font-variant-numeric:tabular-nums}.daily-goal-bar{border-radius:var(--border-radius-pill);background-color:var(--background-medium);height:.5rem;box-shadow:inset 0 0 0 1px var(--background-dark);display:block;overflow:hidden}.daily-goal-bar span{border-radius:inherit;background-color:var(--primary);height:100%;transition:width var(--transition-base);display:block}.daily-goal-bar span.met{background-color:var(--success)}.daily-goal-streak{align-items:center;gap:var(--spacing-sm) var(--spacing-md);min-width:0;font-size:var(--font-size-small);flex-wrap:wrap;display:flex}.daily-goal-week{align-items:center;gap:5px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.daily-goal-week li{aspect-ratio:1;border:1px solid var(--background-dark);background-color:var(--background-medium);width:1.75rem;min-width:1rem;color:var(--text-secondary);font-size:.68rem;font-weight:var(--font-weight-semibold);border-radius:50%;justify-content:center;align-items:center;display:flex}.daily-goal-week li.met{border-color:var(--success);background-color:var(--success);color:#fff}[data-theme=dark] .daily-goal-week li.met{color:var(--background-page)}.daily-goal-week li.practised{border-color:var(--success);background-color:var(--success-soft);color:var(--success-text)}.daily-goal-keep{color:var(--text-secondary)}.daily-goal-week li.forgiven{border-style:dashed;border-color:var(--success)}.daily-goal-week li.today{outline:2px solid var(--primary);outline-offset:2px}.daily-goal-blank{max-width:100%;display:inline-block;position:relative}.daily-goal-blank:before{content:"";border-radius:var(--border-radius-pill);background-color:var(--background-medium);position:absolute;inset:.3em 0}.daily-goal-blank--goal{width:8em;font-size:var(--font-size-base)}.daily-goal-blank--streak{width:16em}@media (prefers-reduced-motion:no-preference){.daily-goal-placeholder>*{animation:1.2s ease-in-out infinite alternate daily-goal-pulse}}@keyframes daily-goal-pulse{to{opacity:.55}}@media (width<=480px){.daily-goal{padding:var(--spacing-sm) var(--spacing-md)}}.share-backdrop{z-index:1000;box-sizing:border-box;padding:var(--spacing-md);overscroll-behavior:contain;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#090d1380;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}[data-theme=dark] .share-backdrop{background-color:#0000009e}.share-dialog{box-sizing:border-box;width:min(600px,100%);padding:var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-light);box-shadow:var(--shadow-lg);text-align:left;margin:auto;position:relative}.share-dialog:focus{outline:none}@media (prefers-reduced-motion:no-preference){.share-backdrop{animation:.18s ease-out share-fade}.share-dialog{animation:.22s cubic-bezier(.2,.8,.3,1) share-rise}}@keyframes share-fade{0%{opacity:0}}@keyframes share-rise{0%{opacity:0;transform:translateY(8px)scale(.98)}}.share-header{justify-content:space-between;align-items:center;gap:var(--spacing-md);margin:0 0 var(--spacing-md);display:flex}.share-header h2{font-size:var(--font-size-large);margin:0}.share-close{border-radius:var(--border-radius-md);flex:none;width:2.25rem;height:2.25rem;margin:-.25rem -.5rem -.25rem 0;padding:0}.share-icon{flex:none;display:block}.share-loading{align-items:center;gap:var(--spacing-sm);min-height:6rem;color:var(--text-secondary);margin:0;display:flex}.share-intro{align-items:flex-start;gap:var(--spacing-md);display:flex}.share-intro-icon{background-color:var(--primary-soft);width:2.5rem;height:2.5rem;color:var(--primary);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.share-intro p{color:var(--text-secondary);margin:0;line-height:1.6}.share-intro strong{color:var(--text-primary);font-weight:var(--font-weight-semibold);overflow-wrap:anywhere}.share-card{box-sizing:border-box;aspect-ratio:1200/630;border:1px solid var(--background-dark);border-radius:var(--border-radius-lg);background-color:var(--background-medium);width:100%;height:auto;box-shadow:var(--shadow-sm);display:block}.share-native{width:100%;margin-top:var(--spacing-lg);padding-block:.75em;font-size:1.0625rem}.share-link{margin:var(--spacing-lg) 0 var(--spacing-md);flex-direction:column;gap:.35rem;display:flex}.share-link label{color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold)}.share-link-row{gap:var(--spacing-sm);display:flex}.share-link-row input{background-color:var(--background-medium);min-width:0;color:var(--text-primary);font-family:var(--font-family-mono);font-size:var(--font-size-small);flex:auto}.share-link-field{flex:auto;min-width:0;display:flex;position:relative}.share-link-field.share-link-clipped:before{content:"";border-radius:var(--border-radius-md) 0 0 var(--border-radius-md);background:linear-gradient(to right, var(--background-medium) 35%, color-mix(in srgb, var(--background-medium) 0%, transparent));pointer-events:none;width:1.75rem;position:absolute;top:2px;bottom:2px;left:2px}.share-copy{flex:none;min-width:8.25rem}.share-copy.share-copied,.share-copy.share-copied:hover{border-color:color-mix(in srgb, var(--success) 45%, transparent);background-color:var(--success-soft);box-shadow:none;color:var(--success-text)}.share-actions{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.share-action:focus-visible{border-radius:var(--border-radius-md)}.share-actions .share-icon{color:var(--text-secondary)}.share-footer{align-items:center;gap:var(--spacing-sm) var(--spacing-md);margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--background-dark);flex-wrap:wrap;display:flex}.share-footer-end{justify-content:flex-end}.share-visibility{justify-content:space-between}.share-status{align-items:center;gap:var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-small);margin:0;display:inline-flex}.share-status-dot{background-color:var(--success);width:.5rem;height:.5rem;box-shadow:0 0 0 3px var(--success-soft);border-radius:50%;flex:none}.share-visibility .button-quiet{margin-right:-.5rem}.share-error{margin:var(--spacing-md) 0 0;padding:var(--spacing-sm) var(--spacing-md);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-radius:var(--border-radius-md);background-color:var(--danger-soft);color:var(--danger-text);font-size:var(--font-size-small);font-weight:var(--font-weight-medium)}@media (width<=600px){.share-backdrop{padding:var(--spacing-sm)}.share-dialog{padding:var(--spacing-md)}.share-close{width:2.75rem;height:2.75rem}.share-actions>*{flex:10rem}.share-footer-end{flex-direction:column-reverse;align-items:stretch}.share-copy{min-width:0}}.speed-form{margin:var(--spacing-md) 0}.speed-label{color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);margin-bottom:.35rem;display:block}.speed-row{align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.speed-row input{width:7rem;font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.speed-row input[aria-invalid=true]{border-color:var(--danger)}.speed-row input[aria-invalid=true]:focus{box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 25%, transparent)}.speed-unit{margin-right:var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold)}.speed-hint{margin:var(--spacing-sm) 0 0;color:var(--text-secondary);font-size:var(--font-size-small)}.speed-error{margin:var(--spacing-sm) 0 0;border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);border-radius:var(--border-radius-md);background-color:var(--danger-soft);color:var(--danger-text);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);padding:.5rem .75rem}.give-old-speed{margin-top:var(--spacing-sm);padding:var(--spacing-md);border-radius:var(--border-radius-lg);background-color:var(--background-medium)}.give-old-speed .speed-form{margin:0}.give-old-speed>.link-button{margin-top:var(--spacing-sm);text-align:left;display:block}.program-notice .give-old-speed{background-color:var(--background-light)}.program-notice{--notice-color:var(--primary);--notice-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 16 5-5 3.5 3.5L20 7'/%3E%3Cpath d='M15 7h5v5'/%3E%3C/svg%3E");gap:var(--spacing-md);margin:var(--spacing-md) 0;padding:var(--spacing-md) var(--spacing-lg);border:1px solid color-mix(in srgb, var(--notice-color) 30%, transparent);border-radius:var(--border-radius-lg);background-color:var(--primary-soft);text-align:left;align-items:flex-start;display:flex}.program-notice-passed{--notice-color:var(--success);--notice-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 3.5 2.6 5.3 5.9.9-4.25 4.1 1 5.8L12 16.85 6.75 19.6l1-5.8L3.5 9.7l5.9-.9z'/%3E%3C/svg%3E");background-color:var(--success-soft)}.program-notice-badge{background-color:var(--background-light);width:2.5rem;height:2.5rem;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--notice-color) 30%, transparent);border-radius:50%;flex:none;position:relative}.program-notice-badge:after{content:"";background-color:var(--notice-color);-webkit-mask:var(--notice-icon) center / contain no-repeat;-webkit-mask:var(--notice-icon) center / contain no-repeat;mask:var(--notice-icon) center / contain no-repeat;position:absolute;inset:.625rem}.program-notice-passed .program-notice-badge:after{background-color:var(--success-text)}.program-notice-body{flex:1;min-width:0}.program-notice h3{margin:.35rem 0 var(--spacing-xs);font-size:1.125rem}.program-notice-passed h3{color:var(--success-text)}.program-notice p{margin:0 0 var(--spacing-sm)}.program-notice kbd{font-size:.85em}.program-notice-key{white-space:nowrap}.program-notice-target{margin:0 0 var(--spacing-md);padding-top:var(--spacing-sm);border-top:1px solid color-mix(in srgb, var(--notice-color) 25%, transparent)}.program-notice-target .link-button{margin:var(--spacing-xs) 0;text-align:left;display:block}.program-notice-target .speed-form{margin:var(--spacing-sm) 0}.program-notice-given{color:var(--success-text);font-weight:var(--font-weight-medium)}.program-notice .program-notice-given:empty{margin:0}@media (width<=480px){.program-notice{padding:var(--spacing-md)}.program-notice-badge{display:none}}.program-notice-skeleton{--notice-color:var(--text-secondary);background-color:var(--background-light)}.program-notice-skeleton .program-notice-badge:after{content:none}.program-notice-skeleton-bar{border-radius:var(--border-radius-sm);background-color:var(--background-medium);color:#0000;-webkit-box-decoration-break:clone;box-decoration-break:clone}.program-notice-skeleton-button{border-radius:var(--border-radius-md);background-color:var(--background-medium);width:8.5rem;height:calc(2.45rem + 2px);display:block}@media (prefers-reduced-motion:no-preference){.program-notice-skeleton{animation:1.6s ease-in-out infinite program-notice-pulse}}@keyframes program-notice-pulse{50%{opacity:.55}}.first-screen{max-width:46rem;margin:0 auto var(--spacing-xl)}.first-screen h1:focus,.first-screen h2:focus{outline:none}.first-lead{margin:0 0 var(--spacing-lg);color:var(--text-secondary);font-size:var(--font-size-large);line-height:1.45}.first-back{margin:0 0 var(--spacing-md)}.first-back-button,.first-back-button:hover{box-shadow:none;color:var(--text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);background:0 0;border:none;padding:0}.first-back-button:hover{color:var(--text-primary)}.first-card,.board-preview{scroll-margin:var(--spacing-md) 0}.board-preview{scroll-margin-top:3.5rem}.first-card{margin:0 0 var(--spacing-lg);padding:var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-light);box-shadow:var(--shadow-sm)}.first-card h2{margin:0 0 var(--spacing-xs);font-size:var(--font-size-large);letter-spacing:-.011em}.first-hint{margin:var(--spacing-xs) 0 var(--spacing-sm);color:var(--text-secondary);font-size:var(--font-size-small)}.first-error{margin:var(--spacing-sm) 0 0;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius-md);background-color:var(--danger-soft);color:var(--danger-text);font-weight:var(--font-weight-medium)}.board-preview{margin:0 0 var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--background-dark);border-radius:var(--border-radius-xl);background-color:var(--background-light);box-shadow:var(--shadow-sm)}.board-preview-head{justify-content:space-between;align-items:center;gap:var(--spacing-sm) var(--spacing-lg);flex-wrap:wrap;display:flex}.board-preview-title{min-width:0}.board-preview h2{font-size:var(--font-size-large);letter-spacing:-.011em;margin:0}.board-preview-meta{color:var(--text-secondary);font-size:var(--font-size-small);margin:2px 0 0}.board-preview .board-layers{margin-bottom:0}.board-preview-note{margin:var(--spacing-sm) 0 0}.board-preview .split-keyboard{margin:var(--spacing-md) auto 0}.first-screen .split-keyboard-caption{display:none}.first-speed-fields{align-items:flex-start;gap:0 var(--spacing-lg);margin-top:var(--spacing-md);flex-wrap:wrap;display:flex}.first-speed-fields .speed-form{flex:20rem;margin:0}.first-select{margin:0 0 var(--spacing-md);color:var(--text-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);flex-direction:column;align-items:flex-start;gap:.35rem;display:flex}.first-select select{min-width:14rem;font-weight:var(--font-weight-normal)}.first-layouts{margin-bottom:0}.first-primary{font-weight:var(--font-weight-bold)}.first-starting:disabled{opacity:1;cursor:progress}.first-secondary,.first-secondary:hover{border:1px solid var(--primary);box-shadow:none;color:var(--primary);background-color:#0000}.first-secondary:hover:not(:disabled){background-color:var(--primary-soft)}.first-alternatives{align-items:center;gap:var(--spacing-sm) var(--spacing-lg);margin:var(--spacing-md) 0 var(--spacing-xs);flex-wrap:wrap;display:flex}@media (width<=640px){.first-screen .first-primary{width:100%}}@media (height<=700px) and (width>=641px){.board-preview .split-keyboard{max-width:460px;margin-top:var(--spacing-sm)}.first-back{margin-bottom:var(--spacing-xs)}.first-back-button,.first-back-button:hover{padding:var(--spacing-xs) 0}}@media (width<=720px){.first-back{margin:calc(-1 * var(--spacing-sm)) 0 0}.first-back-button,.first-back-button:hover{padding:.75rem 0}.first-screen .link-button{align-items:center;min-height:44px;display:inline-flex}}@media (width<=480px){.first-card,.board-preview{padding:var(--spacing-md)}.first-lead{font-size:1.0625rem}}
