:root{--bg:#f6f5f1;--surface:#ecebe6;--text:#2b2a27;--text-dim:#67645c;--accent:#3d6b8f;--correct:#2b2a27;--incorrect:#b0342b;--extra:#8a2d26;--caret:#3d6b8f;--separator:#dcdad3;--selection:#d6e1ea;--chart-wpm:#2a78d6;--chart-raw:#8f8b82;--chart-error:#b0342b;--heat-1:#d49a92;--heat-2:#c26f65;--heat-3:#a8392f;--heat-4:#7a2219;--font-ui:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-typing:ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, "Liberation Mono", monospace;--ui-font-size:15px;--typing-font-size:26px;--typing-line-height:1.6;--typing-letter-spacing:0;--text-xs:.8rem;--text-sm:.9rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:2rem;--text-xxl:3rem;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--radius-sm:4px;--radius-md:6px;--column-width:880px;--settings-width:560px;--duration-fast:80ms;--duration-base:.14s;--duration-slow:.24s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#16181b;--surface:#1f2226;--text:#d9d7d0;--text-dim:#8b8e94;--accent:#7fb0d6;--correct:#d9d7d0;--incorrect:#e8716a;--extra:#b4564e;--caret:#7fb0d6;--separator:#2c3035;--selection:#2a3a48;--chart-wpm:#3987e5;--chart-raw:#686b72;--chart-error:#e8603f;--heat-1:#7a3a2c;--heat-2:#a44c36;--heat-3:#cf6143;--heat-4:#f28c6c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-reduce-motion=true]{--duration-fast:0s;--duration-base:0s;--duration-slow:0s}:root[data-contrast=more]{--text-dim:color-mix(in srgb, var(--text) 82%, var(--bg));--separator:color-mix(in srgb, var(--text) 32%, var(--bg))}@font-face{font-family:Atkinson Hyperlegible;src:url(./atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;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}@font-face{font-family:Atkinson Hyperlegible;src:url(./atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;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}@font-face{font-family:Atkinson Hyperlegible Mono;src:url(./atkinson-hyperlegible-mono-latin-400-normal-CmMGer93.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;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}@font-face{font-family:Atkinson Hyperlegible Mono;src:url(./atkinson-hyperlegible-mono-latin-700-normal-BhOtGXDr.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;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}@font-face{font-family:OpenDyslexic;src:url(./opendyslexic-latin-400-normal-nUhe5EwG.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;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}@font-face{font-family:OpenDyslexic;src:url(./opendyslexic-latin-700-normal-Bnmt45Ln.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;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}*,:before,:after{box-sizing:border-box}html{background:var(--bg);font-size:var(--ui-font-size);-webkit-text-size-adjust:100%;scrollbar-gutter:stable;scrollbar-color:var(--separator) transparent;scroll-padding-top:calc(var(--header-height,5rem) + var(--space-3))}html:has(dialog[open]:modal){overflow:hidden}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-ui);font-size:var(--text-md);font-weight:var(--ui-font-weight,400);letter-spacing:var(--ui-letter-spacing,normal);word-spacing:var(--ui-word-spacing,normal);line-height:var(--ui-line-height,1.5);flex-direction:column;margin:0;display:flex}:root[data-theme-transitioning],:root[data-theme-transitioning] *,:root[data-theme-transitioning] :before,:root[data-theme-transitioning] :after,:root[data-theme-transitioning] ::backdrop{transition:background-color var(--duration-slow) var(--ease-out), color var(--duration-slow) var(--ease-out), border-color var(--duration-slow) var(--ease-out), box-shadow var(--duration-slow) var(--ease-out), text-decoration-color var(--duration-slow) var(--ease-out), fill var(--duration-slow) var(--ease-out), stroke var(--duration-slow) var(--ease-out), outline-color var(--duration-slow) var(--ease-out)!important;transition-delay:0s!important}h1,h2,h3,p{margin:0}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit;word-spacing:inherit}::selection{background:var(--selection)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}:root[data-contrast=more] :focus-visible{outline-width:3px}[hidden]{display:none!important}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;display:block!important;position:absolute!important;top:0!important;left:0!important;overflow:hidden!important}.skip-link{left:var(--space-4);padding:var(--space-2) var(--space-3);background:var(--surface);border-radius:var(--radius-sm);z-index:100;position:absolute;top:-100px}.skip-link:focus{top:var(--space-3)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}.nowrap{white-space:nowrap}.text-button,.menu-item{padding:var(--space-1) 0;color:var(--text-dim);cursor:pointer;text-align:left;transition:color var(--duration-fast);background:0 0;border:0;position:relative}.text-button:after{content:"";opacity:.5;transform-origin:0;height:1px;transition:transform var(--duration-slow) var(--ease-out);background:currentColor;position:absolute;bottom:1px;left:0;right:0;transform:scaleX(0)}.text-button:hover:after{transform:scaleX(1)}.text-button:hover,.menu-item:hover:not(:disabled){color:var(--text)}.text-button:active{opacity:.7}.menu-item:disabled{cursor:default;opacity:.6}.button{justify-content:center;align-items:center;gap:var(--space-2);background:var(--surface);min-height:2.25rem;color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--duration-fast), background-color var(--duration-base), color var(--duration-fast), transform var(--duration-base) var(--ease-spring), box-shadow var(--duration-base);line-height:1.2;display:inline-flex}.button:hover:not(:disabled){border-color:var(--text-dim);box-shadow:0 1px 0 var(--separator)}.button:active:not(:disabled){box-shadow:none;transform:scale(.97)}.button:disabled{opacity:.5;cursor:default}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--bg)}.button.primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, var(--text));border-color:#0000}.text-input,.number-input{border:0;border-bottom:1px solid var(--separator);padding:var(--space-1) var(--space-1);transition:border-color var(--duration-fast);background:0 0;border-radius:0}.text-input:hover,.number-input:hover,.text-input:focus,.number-input:focus{border-bottom-color:var(--text-dim)}.number-input{text-align:right;font-variant-numeric:tabular-nums;width:5ch}input[type=number]{appearance:textfield}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.number-field{align-items:center;gap:var(--space-2);display:inline-flex}.stepper-group{border:1px solid var(--separator);border-radius:var(--radius-md);transition:border-color var(--duration-fast);align-items:center;display:inline-flex}.stepper-group:hover,.stepper-group:focus-within{border-color:var(--text-dim)}.stepper-group .number-input{text-align:center;width:5.5ch;padding:var(--space-1) 0;border:0}.stepper-group .number-input:focus{outline:none}.stepper-group:has(.number-input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.stepper{border-radius:calc(var(--radius-md) - 1px);width:1.9rem;height:1.9rem;color:var(--text-dim);cursor:pointer;touch-action:manipulation;transition:color var(--duration-fast), background-color var(--duration-fast), transform var(--duration-base) var(--ease-spring);background:0 0;border:0;place-items:center;padding:0;font-size:1.05rem;line-height:1;display:grid}.stepper:hover:not(:disabled){color:var(--text);background:var(--surface)}.stepper:active:not(:disabled){transform:scale(.88)}.stepper:disabled{opacity:.35;cursor:default}.unit{color:var(--text-dim);font-size:var(--text-sm)}.dropdown-button{justify-content:space-between;align-items:center;gap:var(--space-3);min-width:6rem;max-width:100%;padding:var(--space-1) var(--space-1) var(--space-1) var(--space-2);color:var(--text);border:0;border-bottom:1px solid var(--separator);border-radius:var(--radius-sm) var(--radius-sm) 0 0;text-align:left;cursor:pointer;transition:border-color var(--duration-fast), background-color var(--duration-base);background:0 0;display:inline-flex}.dropdown-button:hover,.dropdown-button.is-open{border-bottom-color:var(--text-dim);background:color-mix(in srgb, var(--surface) 60%, transparent)}.dropdown-button.is-open{border-bottom-color:var(--accent)}.dropdown-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dropdown-chevron{border-right:1.5px solid var(--text-dim);border-bottom:1.5px solid var(--text-dim);width:.42em;height:.42em;transition:transform var(--duration-slow) var(--ease-out);flex:none;margin:0 .25em .2em;transform:rotate(45deg)}.dropdown-button.is-open .dropdown-chevron{transform:translateY(.2em)rotate(225deg)}.dropdown-list{padding:var(--space-1);overscroll-behavior:contain;z-index:50;color:var(--text);background:var(--bg);border:1px solid var(--separator);border-radius:var(--radius-md);font-size:var(--text-md);scrollbar-width:thin;margin:0;list-style:none;position:fixed;inset:auto;overflow-y:auto;box-shadow:0 10px 28px #00000024,0 2px 6px #0000000f}.dropdown-list:not([popover]):not([hidden]){animation:dropdown-in var(--duration-base) var(--ease-out)}.dropdown-list:popover-open{animation:dropdown-in var(--duration-base) var(--ease-out)}.dropdown-list[data-side=above]{transform-origin:bottom}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-4px)scaleY(.97)}}.dropdown-option{justify-content:space-between;align-items:baseline;gap:var(--space-4);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);color:var(--text-dim);white-space:nowrap;cursor:pointer;transition:background-color var(--duration-fast), color var(--duration-fast);display:flex}.dropdown-option.is-active{background:var(--surface);color:var(--text)}.dropdown-option[aria-selected=true]{color:var(--accent)}.dropdown-option[aria-selected=true] .dropdown-option-label:after{content:" ✓";font-family:var(--font-ui);font-size:var(--text-xs)}.dropdown-option-hint{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--text-dim)}input[type=color]::-webkit-color-swatch-wrapper{padding:2px}input[type=color]::-webkit-color-swatch{border:0;border-radius:2px}input[type=color]::-moz-color-swatch{border:0;border-radius:2px}summary{cursor:pointer;transition:color var(--duration-fast);list-style:none}summary::-webkit-details-marker{display:none}summary:before{content:"";width:.4em;height:.4em;transition:transform var(--duration-slow) var(--ease-out);border-bottom:1.5px solid;border-right:1.5px solid;margin:0 .6em .15em .1em;display:inline-block;transform:rotate(-45deg)}details[open]>summary:before{transform:rotate(45deg)}summary:hover{color:var(--text)}details[open]>summary+*{animation:rise-in var(--duration-slow) var(--ease-out)}.text-input:focus-visible{border-bottom-color:var(--accent);outline:none}textarea:focus-visible{border-color:var(--accent);outline:none}dialog[open]{animation:dialog-in var(--duration-slow) var(--ease-out)}dialog[open]::backdrop{animation:fade-in var(--duration-slow) ease-out}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px)scale(.985)}}.toggle{appearance:none;background:var(--separator);cursor:pointer;width:32px;height:18px;transition:background-color var(--duration-fast);border-radius:9px;margin:0;position:relative}.toggle:after{content:"";background:var(--bg);width:12px;height:12px;transition:transform var(--duration-slow) var(--ease-spring);border-radius:50%;position:absolute;top:3px;left:3px}.toggle:checked{background:var(--accent)}.toggle:checked:after{transform:translate(14px)}.check{appearance:none;border:1px solid var(--text-dim);cursor:pointer;width:14px;height:14px;transition:background-color var(--duration-fast), border-color var(--duration-fast);border-radius:3px;place-content:center;margin:0;display:inline-grid}.check:checked{background:var(--accent);border-color:var(--accent)}.check:checked:after{content:"";border-left:2px solid var(--bg);border-bottom:2px solid var(--bg);width:7px;height:4px;transform:translateY(-1px)rotate(-45deg)}.check-group{gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.check-label{align-items:center;gap:var(--space-2);cursor:pointer;display:inline-flex}.segmented{gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:inline-flex}.segment{cursor:pointer;color:var(--text-dim);transition:color var(--duration-fast);position:relative}.segment span{position:relative}.segment span:after{content:"";background:var(--accent);height:1px;transition:transform var(--duration-slow) var(--ease-out);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.segment:has(input:checked) span:after{transform:scaleX(1)}.segment input{opacity:0;width:1px;height:1px;position:absolute}.segment:hover{color:var(--text)}.segment:has(input:checked){color:var(--accent)}.segment:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.tooltip{max-width:min(22rem,100vw - 16px);padding:var(--space-1) var(--space-2);background:var(--bg);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);font-family:var(--font-ui);font-size:var(--text-xs);text-align:left;white-space:normal;overflow-wrap:anywhere;pointer-events:none;z-index:1100;animation:tooltip-in var(--duration-fast) ease-out;margin:0;line-height:1.45;position:fixed;inset:auto;box-shadow:0 6px 18px #0000001f}.tooltip[hidden]{display:none}@keyframes tooltip-in{0%{opacity:0;transform:translateY(2px)}}@media (prefers-reduced-motion:reduce){.tooltip{animation:none}}:root[data-reduce-motion=true] .tooltip{animation:none}kbd{min-width:1.5rem;height:1.5rem;padding:0 var(--space-2);box-sizing:border-box;font-family:var(--font-typing);font-size:var(--text-xs);color:var(--text);background:var(--surface);border:1px solid var(--separator);border-bottom:2px solid var(--separator);border-radius:var(--radius-sm);vertical-align:middle;white-space:nowrap;justify-content:center;align-items:center;font-weight:500;line-height:1;display:inline-flex;box-shadow:0 1px 2px #0000000d}.shortcut-sequence-indicator{bottom:var(--space-5);right:var(--space-5);z-index:1200;align-items:center;gap:var(--space-2);background:var(--bg);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-xs);font-family:var(--font-typing);animation:sequence-in var(--duration-fast) var(--ease-out);pointer-events:none;display:inline-flex;position:fixed;box-shadow:0 8px 24px #00000026}@keyframes sequence-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.shortcut-sequence-indicator{animation:none}}:root[data-reduce-motion=true] .shortcut-sequence-indicator{animation:none}.footer-shortcuts{margin-bottom:var(--space-2)}.shortcut-guide-btn{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-dim);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:0 0;border:none;text-decoration:none;display:inline-flex}.shortcut-guide-btn:hover{color:var(--text)}.shortcut-guide-btn kbd{min-width:1.25rem;height:1.25rem;padding:0 4px;font-size:.7rem}.app-header{z-index:20;align-items:center;gap:var(--space-6);padding:var(--space-5) max(var(--space-4), calc((100% - var(--column-width)) / 2 + var(--space-4))) var(--space-4);background:color-mix(in srgb, var(--bg) 90%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:border-color var(--duration-base), background-color var(--duration-base);border-bottom:1px solid #0000;display:flex;position:sticky;top:0}.app-header.is-scrolled{border-bottom-color:var(--separator)}.brand{color:var(--text);border-radius:var(--radius-sm);transition:opacity var(--duration-fast), transform var(--duration-base) var(--ease-out);align-items:center;text-decoration:none;display:inline-flex}.brand:hover{opacity:.75}.brand[aria-current=page]{color:var(--accent)}.brand:active{transform:scale(.97)}.wordmark{width:auto;height:1.35rem;display:block;overflow:visible}.app-nav{gap:var(--space-4);flex-wrap:wrap;flex:1;display:flex}.app-nav a{color:var(--text-dim);padding:var(--space-1) 0;transition:color var(--duration-fast);text-decoration:none;position:relative}.app-nav a:after{content:"";background:var(--accent);height:1px;transition:transform var(--duration-slow) var(--ease-out);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.app-nav a:hover,.app-nav a[aria-current=page]{color:var(--text)}.app-nav a[aria-current=page]:after{transform:scaleX(1)}.header-actions{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.profile-slot{position:relative}.app-main{width:100%;max-width:var(--column-width);padding:var(--space-5) var(--space-4) var(--space-8);flex-direction:column;flex:1 0 auto;margin:0 auto;display:flex}.app-main:has(>.view-type:not([hidden])){padding-bottom:0}.view-heading{font-size:var(--text-lg);color:var(--text-dim);margin-bottom:var(--space-5);font-weight:500}.view:not([hidden]){min-height:0;animation:view-in var(--duration-slow) var(--ease-out);flex-direction:column;flex:1;display:flex}@keyframes view-in{0%{opacity:0;transform:translateY(6px)}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}@keyframes fade-in{0%{opacity:0}}:root{--section-nav-width:9.5rem}.sectioned{grid-template-columns:var(--section-nav-width) minmax(0, 1fr);gap:var(--space-7);flex:1;align-items:stretch;min-height:0;display:grid}.section-nav,.section-panes{min-width:0}.section-panes{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.section-pane:not([hidden]){height:100%;min-height:0;animation:rise-in var(--duration-slow) var(--ease-out);flex-direction:column;flex:1;display:flex}.section-nav{top:calc(var(--header-height,5rem) + var(--space-4));align-self:start;position:sticky}.section-nav-list{gap:2px;margin:0;padding:0;list-style:none;display:grid;position:relative}.section-link{justify-content:space-between;align-items:baseline;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);color:var(--text-dim);transition:color var(--duration-fast), background-color var(--duration-base);text-decoration:none;display:flex;position:relative}.section-link:before{content:"";background:var(--accent);width:2px;transition:transform var(--duration-slow) var(--ease-out);border-radius:1px;position:absolute;top:22%;bottom:22%;left:0;transform:scaleY(0)}.section-link:hover{color:var(--text);background:color-mix(in srgb, var(--surface) 60%, transparent)}.section-link[aria-current]{color:var(--text);background:var(--surface)}.section-link[aria-current]:before{transform:scaleY(1)}.section-count{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-dim)}.section-pane:not([hidden]){animation:rise-in var(--duration-slow) var(--ease-out)}.pane-heading{font-size:var(--text-lg);margin-bottom:var(--space-2);font-weight:500}.pane-heading+:not(.pane-blurb){margin-top:var(--space-4)}.pane-blurb{font-size:var(--text-sm);margin-bottom:var(--space-5);max-width:38rem}@media (width<=720px){.sectioned{gap:var(--space-5);grid-template-columns:minmax(0,1fr)}.section-nav{top:var(--header-height,5rem);z-index:10;margin:0 calc(-1 * var(--space-4));padding:var(--space-2) var(--space-4);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.section-nav-list{scrollbar-width:none;display:flex;overflow-x:auto}.section-link{white-space:nowrap}.section-link:before{width:auto;height:2px;inset:auto 22% 0;transform:scaleX(0)}.section-link[aria-current]:before{transform:scaleX(1)}.settings-footer{margin-left:0}}.view-heading:focus{outline:none}.muted{color:var(--text-dim)}.app-footer{max-width:var(--column-width);padding:var(--space-5) var(--space-4) var(--space-6);border-top:1px solid var(--separator);color:var(--text-dim);font-size:var(--text-xs);text-align:center;margin:0 auto;line-height:1.7}.app-footer a{color:inherit;text-underline-offset:2px;-webkit-text-decoration-color:var(--separator);text-decoration-color:var(--separator);transition:color var(--duration-fast), text-decoration-color var(--duration-fast)}.app-footer a:hover{color:var(--text);text-decoration-color:currentColor}.startup-failure{text-align:center;padding:var(--space-8) 0}@media (width<=640px){.app-header{gap:var(--space-3) var(--space-4);padding-top:var(--space-4);flex-wrap:wrap}.app-nav{flex-basis:100%;order:3}.header-actions{margin-left:auto}}.nav-dot{background:var(--accent);vertical-align:.3em;border-radius:50%;width:5px;height:5px;margin-left:5px;display:inline-block}.nav-badge{min-width:1.15rem;height:1.15rem;margin-left:var(--space-1);background:var(--accent);color:var(--bg);vertical-align:.1em;font-variant-numeric:tabular-nums;animation:badge-in var(--duration-slow) var(--ease-spring);border-radius:999px;place-items:center;padding:0 .3rem;font-size:.7rem;font-weight:600;line-height:1;display:inline-grid}@keyframes badge-in{0%{opacity:0;transform:scale(.4)}}@media (height<=820px){.app-main:has(>.view-type:not([hidden])){padding-top:var(--space-3)}.app-footer{padding-top:var(--space-3);padding-bottom:var(--space-3);line-height:1.5}}.guest-banner{align-items:center;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--surface);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.guest-banner-text{color:var(--text-dim);flex:24rem;margin:0}.guest-banner-text strong{color:var(--text);font-weight:600}.guest-banner-actions,.guest-banner-form{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.guest-banner-form .text-input{width:12rem}.guest-banner-form .setting-message{flex-basis:100%;margin:0}.guest-banner-close{font-size:var(--text-lg);line-height:1}.profile-guest{padding:0 var(--space-2);border:1px solid var(--separator);color:var(--text-dim);font-size:var(--text-xs);border-radius:999px}.brand-with-version .brand-mark{margin:0}.brand-version{margin:var(--space-1) 0 0;color:var(--text-dim);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.footer-version{font-variant-numeric:tabular-nums}.settings .section-panes,.settings-footer{max-width:var(--settings-width)}.settings-section-heading{font-size:var(--text-sm);color:var(--text-dim);margin-bottom:var(--space-4);font-weight:500}.data-text{color:var(--text);max-width:60ch}.data-text.is-due{color:var(--accent)}.data-actions{gap:var(--space-4);margin:var(--space-2) 0 var(--space-5);flex-wrap:wrap;display:flex}.data-actions:empty{margin-bottom:var(--space-3)}.setting-row{align-items:center;gap:var(--space-1) var(--space-4);padding:var(--space-2) 0;grid-template-columns:minmax(10rem,1fr) auto;display:grid}.setting-label{color:var(--text)}.setting-message{font-size:var(--text-sm);color:var(--text-dim);grid-column:1/-1}.setting-message:empty{display:none}.settings-footer{margin-left:calc(var(--section-nav-width) + var(--space-7));align-items:baseline;gap:var(--space-2) var(--space-5);margin-top:var(--space-7);padding-top:var(--space-4);border-top:1px solid var(--separator);flex-wrap:wrap;display:flex}.settings-hint{font-size:var(--text-xs);color:var(--text-dim);margin-left:auto}.settings-footer .setting-message{flex-basis:100%}@media (width<=520px){.setting-row{grid-template-columns:1fr}}.profile-trigger{align-items:center;gap:var(--space-2);padding:2px var(--space-2) 2px 2px;color:var(--text-dim);cursor:pointer;transition:color var(--duration-fast), background-color var(--duration-base);background:0 0;border:0;border-radius:999px;display:inline-flex}.profile-trigger:hover,.profile-trigger.is-open{color:var(--text);background:var(--surface)}.profile-context-menu{top:calc(100% + var(--space-2));z-index:50;background:var(--bg);border:1px solid var(--separator);border-radius:var(--radius-md);width:260px;padding:var(--space-3);gap:var(--space-2);font-size:var(--text-sm);color:var(--text);animation:dropdown-in var(--duration-base) var(--ease-out);flex-direction:column;display:flex;position:absolute;right:0;box-shadow:0 10px 28px #00000024,0 2px 6px #0000000f}.profile-context-menu[hidden]{display:none}.profile-context-xp{gap:var(--space-2);padding:var(--space-1);flex-direction:column;display:flex}.profile-context-xp-header{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.profile-context-xp-level{font-weight:600;font-size:var(--text-sm);color:var(--text)}.profile-context-xp-remaining{color:var(--text-dim);font-size:var(--text-xs);white-space:nowrap}.profile-context-xp-track{background:var(--surface);border-radius:999px;width:100%;height:6px;overflow:hidden}.profile-context-xp-fill{background:var(--accent);height:100%;transition:width var(--duration-base) var(--ease-out);border-radius:999px}.profile-context-divider{border:0;border-top:1px solid var(--separator);margin:var(--space-1) 0}.profile-context-grid{background:var(--separator);border:1px solid var(--separator);border-radius:var(--radius-sm);grid-template-columns:1fr 1fr;gap:1px;display:grid;overflow:hidden}.profile-context-grid .profile-context-item{width:100%;padding:var(--space-2) var(--space-1);background:var(--bg);color:var(--text-dim);font-family:inherit;font-size:var(--text-sm);cursor:pointer;text-align:center;white-space:nowrap;transition:background-color var(--duration-fast), color var(--duration-fast);border:0;border-radius:0;justify-content:center;align-items:center;text-decoration:none;display:flex}.profile-context-grid .profile-context-item:hover,.profile-context-grid .profile-context-item:focus-visible{background:var(--surface);color:var(--text);outline:none}.profile-context-switch{width:100%;padding:var(--space-2) var(--space-3);margin-top:var(--space-1);background:var(--surface);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-sm);font-family:inherit;font-size:var(--text-sm);cursor:pointer;text-align:center;transition:background-color var(--duration-fast), border-color var(--duration-fast), color var(--duration-fast);justify-content:center;align-items:center;font-weight:500;display:flex}.profile-context-switch:hover,.profile-context-switch:focus-visible{background:var(--separator);border-color:var(--accent);color:var(--text);outline:none}dialog.modal-dialog[open],.modal-dialog[open]{flex-direction:column;display:flex}dialog.modal-dialog,.modal-dialog{box-sizing:border-box;width:min(max(58rem, var(--column-width,58rem)), calc(100vw - 2 * var(--space-4)));max-width:calc(100vw - 2 * var(--space-4));background:var(--bg);height:min(85dvh,100dvh - 4rem);max-height:calc(100dvh - 4rem);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);padding:var(--space-5) var(--space-6);overflow:hidden;box-shadow:0 16px 48px #0003}.modal-dialog::backdrop{background:var(--bg);opacity:.94}.modal-header{margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--separator);flex-shrink:0;justify-content:space-between;align-items:baseline;display:flex}.modal-title{font-size:var(--text-lg);margin:0;font-weight:400}.modal-title:focus{outline:none}.modal-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.modal-body:not(:has(.sectioned)){overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--separator) transparent;overflow-y:auto}dialog.modal-dialog.modal-shortcuts{width:min(52rem, calc(100vw - 2 * var(--space-4)));max-width:52rem;height:min(85dvh,44rem);max-height:min(85dvh,44rem)}dialog.modal-dialog.modal-confirm,dialog.modal-dialog.word-filter-dialog{width:min(34rem, calc(100vw - 2 * var(--space-4)));max-width:34rem;height:auto;max-height:calc(100dvh - 4rem)}dialog.modal-dialog.modal-confirm .modal-body,dialog.modal-dialog.word-filter-dialog .modal-body{overflow:visible}.modal-dialog{max-width:calc(100vw - 2 * var(--space-4));max-height:calc(100dvh - 4rem)}dialog.modal-dialog.modal-fit{height:fit-content}dialog.modal-dialog.modal-fit .modal-body{flex:0 auto;overflow-y:auto}.modal-confirm-body{gap:var(--space-4);flex-direction:column;display:flex}.modal-confirm-text{color:var(--text);line-height:1.5;font-size:var(--text-sm);margin:0}.modal-confirm-actions{margin-top:var(--space-2)}.shortcuts-guide{gap:var(--space-5);padding:var(--space-2) 0 var(--space-4);flex-direction:column;display:flex}.shortcuts-group{gap:var(--space-2);flex-direction:column;display:flex}.shortcuts-group-title{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);padding-bottom:var(--space-2);border-bottom:1px solid var(--separator);margin:0;font-weight:600}.shortcuts-list{gap:var(--space-1) var(--space-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin:0;padding:0;list-style:none;display:grid}.shortcut-row{padding:var(--space-2) var(--space-2);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:var(--space-3);transition:background-color var(--duration-fast);display:flex}.shortcut-row:hover{background:var(--surface)}.shortcut-desc{color:var(--text);font-size:var(--text-sm);flex:1;min-width:0}.shortcut-keys{align-items:center;gap:var(--space-1);flex-shrink:0;display:inline-flex}.shortcut-sep{font-size:var(--text-xs);color:var(--text-dim);margin:0 1px}.shortcuts-footer-hint{margin:var(--space-2) 0 0;padding-top:var(--space-3);border-top:1px solid var(--separator);font-size:var(--text-xs);color:var(--text-dim);line-height:1.5}.shortcuts-footer-hint kbd{margin:0 2px}.modal-dialog .texts,.modal-dialog .settings{flex-direction:column;flex:1;height:100%;min-height:0;display:flex;overflow:hidden}.modal-dialog .settings .section-panes{max-width:100%}.modal-dialog .sectioned{flex:1;align-items:stretch;height:100%;min-height:0;overflow:hidden}.modal-dialog .section-nav{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--separator) transparent;height:100%;max-height:100%;padding-right:var(--space-2);align-self:stretch;position:static;top:auto;overflow-y:auto}.modal-dialog .section-panes{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--separator) transparent;height:100%;min-height:0;max-height:100%;padding-right:var(--space-3);flex:1;overflow-y:auto}.modal-dialog .section-pane:not([hidden]){flex-direction:column;height:auto;min-height:100%;display:flex}.modal-dialog .settings-footer{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--separator);flex-shrink:0}@media (width<=720px){.modal-dialog{padding:var(--space-4);width:calc(100vw - 2 * var(--space-2));max-width:calc(100vw - 2 * var(--space-2));height:min(92dvh,100dvh - 2rem);max-height:calc(100dvh - 2rem)}.modal-dialog .section-nav{flex-shrink:0;height:auto;max-height:none;padding-right:0;overflow:auto hidden}.modal-dialog .settings-footer{margin-left:0}}@media (prefers-reduced-motion:reduce){.profile-context-menu{animation:none}}:root[data-reduce-motion=true] .profile-context-menu{animation:none}.profile-trigger-name,.profile-trigger .profile-level{line-height:1}.avatar{background:var(--surface);color:var(--text-dim);box-shadow:inset 0 0 0 1px var(--separator);-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;place-items:center;font-weight:600;line-height:1;display:inline-grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%;display:block}.avatar-sm{width:1.6rem;height:1.6rem;font-size:.75rem}.avatar-md{width:2.5rem;height:2.5rem;font-size:1rem}.avatar-lg{width:3rem;height:3rem;font-size:1.2rem}.avatar-xl{width:4.5rem;height:4.5rem;font-size:1.6rem}.avatar-new{box-shadow:inset 0 0 0 1px var(--text-dim);background:0 0;font-size:1.3rem;font-weight:400}.setup{width:min(40rem, calc(100vw - 2 * var(--space-4)));padding:var(--space-6);background:var(--bg);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);animation:setup-dialog-in var(--duration-slow) var(--ease-out) both;box-shadow:0 16px 48px #0000002e}.setup.is-leaving{animation:setup-dialog-out var(--duration-fast) var(--ease-out) forwards}@keyframes setup-dialog-in{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes setup-dialog-out{to{opacity:0;transform:translateY(-8px)scale(.98)}}.setup::backdrop{background:var(--bg);opacity:.94;animation:fade-in var(--duration-slow) var(--ease-out) both}.setup-brand{margin-bottom:var(--space-4);color:var(--text);animation:fade-in var(--duration-slow) var(--ease-out) both}.setup-brand .wordmark{height:1.25rem}.setup-progress-track{background:var(--separator);width:100%;height:3px;margin-bottom:var(--space-5);border-radius:999px;overflow:hidden}.setup-progress-fill{background:var(--accent);width:0%;height:100%;transition:width var(--duration-slow) var(--ease-out);border-radius:999px}.setup-step{gap:var(--space-4);min-height:9rem;animation:setup-step-in var(--duration-slow) var(--ease-out) both;display:grid}@keyframes setup-step-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.setup-prompt{font-size:var(--text-lg);font-weight:400}.setup-note{margin-top:var(--space-2);font-size:var(--text-sm)}.setup-input{font-size:var(--text-lg);width:100%;transition:border-color var(--duration-fast), box-shadow var(--duration-fast)}.setup-input:focus-visible{border-bottom-color:var(--accent);box-shadow:0 1px 0 0 var(--accent);outline:none}.setup-options{gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.setup-option{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background-color var(--duration-fast), transform var(--duration-fast) var(--ease-out);animation:rise-in var(--duration-slow) var(--ease-out) both;background:0 0;border:0;border-bottom:2px solid #0000}.setup-option:first-child{animation-delay:20ms}.setup-option:nth-child(2){animation-delay:40ms}.setup-option:nth-child(3){animation-delay:60ms}.setup-option:nth-child(4){animation-delay:80ms}.setup-option:nth-child(5){animation-delay:.1s}.setup-option:nth-child(6){animation-delay:.12s}.setup-option:hover,.setup-option:focus-visible{color:var(--text);background:color-mix(in srgb, var(--surface) 60%, transparent);transform:translateY(-1px)}.setup-option:active{transform:translateY(0)scale(.98)}.setup-option[aria-pressed=true]{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.setup-footer{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-4);margin-top:var(--space-6);padding-top:var(--space-3);border-top:1px solid var(--separator);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.setup-progress{color:var(--text-dim);transition:color var(--duration-fast);margin-right:auto}.setup-footer>*{white-space:nowrap}.setup-footer .text-button{transition:color var(--duration-fast), transform var(--duration-fast)}.setup-footer .text-button:hover{color:var(--text);transform:translateY(-1px)}.setup-option-detail{max-width:11rem;font-size:var(--text-xs);color:var(--text-dim);text-align:center;transition:color var(--duration-fast)}.setup-companions{gap:var(--space-6)}.setup-option.has-figure{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--separator);background:var(--surface);border-bottom:1px solid var(--separator);transition:transform var(--duration-base) var(--ease-out), border-color var(--duration-fast), background-color var(--duration-fast), box-shadow var(--duration-base) var(--ease-out), color var(--duration-fast);flex-direction:column;display:inline-flex}.setup-option.has-figure:first-child{animation-delay:40ms}.setup-option.has-figure:nth-child(2){animation-delay:80ms}.setup-option.has-figure:hover,.setup-option.has-figure:focus-visible{background:color-mix(in srgb, var(--surface) 90%, var(--accent));border-color:color-mix(in srgb, var(--accent) 40%, transparent);transform:translateY(-3px);box-shadow:0 6px 16px #00000014}.setup-option.has-figure:active{transform:translateY(-1px)scale(.98)}.setup-option.has-figure[aria-pressed=true]{background:color-mix(in srgb, var(--accent) 12%, var(--surface));border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.setup-companion{width:64px;height:auto;transition:transform var(--duration-slow) var(--ease-spring);overflow:visible}.setup-option.has-figure:hover .setup-companion,.setup-option.has-figure:focus-visible .setup-companion{transform:scale(1.08)translateY(-2px)}.setup-option.has-figure[aria-pressed=true] .setup-companion{transform:scale(1.04)}@media (width<=480px){.setup-companions{gap:var(--space-2)}.setup-option-detail{max-width:7rem}}@media (prefers-reduced-motion:reduce){.setup,.setup.is-leaving,.setup::backdrop,.setup-brand,.setup-step,.setup-progress-fill,.setup-option,.setup-option.has-figure,.setup-companion{transition:none!important;animation:none!important}}:root[data-reduce-motion=true] .setup,:root[data-reduce-motion=true] .setup.is-leaving,:root[data-reduce-motion=true] .setup::backdrop,:root[data-reduce-motion=true] .setup-brand,:root[data-reduce-motion=true] .setup-step,:root[data-reduce-motion=true] .setup-progress-fill,:root[data-reduce-motion=true] .setup-option,:root[data-reduce-motion=true] .setup-option.has-figure,:root[data-reduce-motion=true] .setup-companion{transition:none!important;animation:none!important}#mistakes-root,.mistakes{flex-direction:column;flex:1;min-height:0;display:flex}.mistakes-body{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.mistakes-toolbar{align-items:center;gap:var(--space-3) var(--space-5);margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--separator);font-size:var(--text-sm);flex-wrap:wrap;flex-shrink:0;display:flex}.mistakes-toolbar .button{margin-left:auto}.pane-empty{font-size:var(--text-sm)}.mistake-kind+.mistake-kind{margin-top:var(--space-5)}.mistake-kind-heading{font-size:var(--text-xs);color:var(--text-dim);margin-bottom:var(--space-1);font-weight:500}.mistake-rows{margin:0;padding:0;list-style:none}.mistake-row{align-items:baseline;gap:var(--space-4);padding:var(--space-2) 0;grid-template-columns:minmax(8rem,1fr) auto auto auto;display:grid}.mistake-label{font-family:var(--font-typing)}.mistake-stats{color:var(--text-dim);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.mistake-actions{gap:var(--space-3);font-size:var(--text-sm);display:flex}.empty-state{text-align:center;max-width:28rem;margin:0 auto}@media (width<=520px){.mistake-row{grid-template-columns:1fr auto}.mistake-row>.trend,.mistake-stats{grid-row:2}}.trend{color:var(--text-dim);align-self:center;display:block;overflow:visible}.trend-line{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linejoin:round;stroke-linecap:round}.trend-dot{fill:currentColor}.trend-baseline,.trend-goal{stroke:var(--text-dim);stroke-width:1px;opacity:.6}.trend-baseline{stroke-dasharray:3 2}.trend-goal{stroke-dasharray:1 3}.trend-empty{text-align:center;width:96px;color:var(--separator)}.trend-cell{vertical-align:middle}.mm-tone-suggested{color:var(--accent)}.mm-tone-training{color:var(--incorrect)}.mm-tone-mastered,.mm-tone-watching{color:var(--text-dim)}.mistake-overview{flex-direction:column;flex:1 1 0;height:100%;min-height:0;display:flex}.mm-controls{align-items:center;gap:var(--space-3) var(--space-5);margin-bottom:var(--space-4);flex-wrap:wrap;flex-shrink:0;display:flex}.mm-figure{margin:0 0 var(--space-4);flex-shrink:0}.mm-status-picker{margin:var(--space-3) 0 var(--space-2);font-size:var(--text-xs);justify-content:center;display:flex}.mm-key-pager{margin-top:var(--space-2);font-size:var(--text-xs)}.mm-keyboard.is-isolated{outline:1px solid color-mix(in srgb, var(--accent) 30%, transparent);outline-offset:4px;border-radius:4px}.mm-legend .legend-item.is-locked{color:var(--text);background:var(--surface);box-shadow:0 0 0 1px var(--separator)}.mm-legend .legend-item{cursor:pointer}.mm-keyboard{width:100%;max-width:640px;height:auto;margin:0 auto;display:block}.mm-key rect{fill:none;stroke:var(--separator);stroke-width:1px;transition:stroke var(--duration-fast), fill var(--duration-fast)}.mm-key text{fill:var(--text-dim);font-family:var(--font-typing);transition:fill var(--duration-fast);font-size:13px}.mm-key.is-active-key rect{stroke:var(--accent);stroke-width:2px;fill:color-mix(in srgb, var(--accent) 18%, transparent)}.mm-key.is-active-key text{fill:var(--text);font-weight:600}.mm-stroke{fill:none;stroke:currentColor;stroke-linecap:round}.mm-stroke-suggested{stroke-dasharray:4 2.5}.mm-stroke-training{stroke-dasharray:none}.mm-stroke-mastered{stroke-dasharray:1 3;stroke-linecap:round}.mm-stroke-watching{stroke-dasharray:none;opacity:.5}.mm-fill{fill:currentColor}.mm-hit{fill:none;stroke:#0000;stroke-width:14px;pointer-events:stroke}.mm-hit-area{fill:#0000;pointer-events:all}.mm-stroke,.mm-fill{pointer-events:none}.mm-shift{font-family:var(--font-ui);font-weight:600}.mm-mark{cursor:default;transition:opacity var(--duration-fast);outline:none}.mm-mark.mm-tone-watching{opacity:.35}.mm-keyboard.has-highlight .mm-mark:not(.is-highlighted){opacity:.15}.mm-keyboard .mm-mark.is-highlighted,.mm-mark:focus-visible{opacity:1}.mm-mark:focus-visible .mm-stroke,.mm-mark:focus-visible .mm-fill{filter:drop-shadow(0 0 2px)}.mm-legend{justify-content:center;gap:var(--space-2) var(--space-5);margin-top:var(--space-3);font-size:var(--text-xs);color:var(--text-dim);flex-wrap:wrap;display:flex}.mm-legend-group{gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.mm-legend .legend-item{align-items:center;gap:var(--space-1);cursor:pointer;padding:2px var(--space-1);border-radius:var(--radius-sm);transition:color var(--duration-fast), background-color var(--duration-fast);display:inline-flex}.mm-legend .legend-item:hover,.mm-legend .legend-item:focus-visible{color:var(--text);background:var(--surface);outline:none}.mm-legend-glyph{color:var(--text)}.mm-swatch,.mm-row-swatch{background:currentColor;border-radius:50%;width:8px;height:8px;display:inline-block}.mm-swatch-symbol{text-align:center;color:currentColor;justify-content:center;align-items:center;width:1em;font-size:.85rem;font-weight:700;line-height:1;display:inline-flex}.mm-row-symbol{color:currentColor;grid-area:swatch;justify-content:center;align-items:center;width:1.2rem;font-size:.85rem;font-weight:700;line-height:1;display:inline-flex}.mm-legend .mm-tone-watching .mm-swatch,.mm-row.mm-tone-watching .mm-row-swatch{opacity:.45}.mm-legend .legend-item[class*=mm-tone-]{color:var(--text-dim)}.mm-legend .mm-tone-suggested .mm-swatch{background:var(--accent)}.mm-legend .mm-tone-training .mm-swatch{background:var(--incorrect)}.mm-legend .mm-tone-mastered .mm-swatch,.mm-legend .mm-tone-watching .mm-swatch{background:var(--text-dim)}.mm-lists{gap:var(--space-5);flex:1 1 0;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));min-height:0;display:grid;overflow:hidden}.mm-list{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.mm-list .mistake-rows{scrollbar-gutter:stable;scrollbar-width:thin;min-height:0;padding-right:var(--space-2);flex:1 1 0;margin:0;overflow-y:auto}@media (width>=721px){.mm-lists{grid-template-columns:repeat(2,minmax(0,1fr))}}.mm-row{align-items:center;gap:2px var(--space-3);padding:var(--space-2) var(--space-2);margin:0 calc(-1 * var(--space-2));border-radius:var(--radius-sm);transition:background var(--duration-fast);grid-template-columns:auto minmax(5rem,1fr) auto;grid-template-areas:"swatch label trend"".stats actions";display:grid}.mm-row.is-highlighted{background:var(--surface)}.mm-row>.mm-row-swatch{grid-area:swatch}.mm-row>.mistake-label{color:var(--text);grid-area:label}.mm-row>.trend{grid-area:trend}.mm-row>.mistake-stats{grid-area:stats}.mm-row>.mistake-actions{grid-area:actions;justify-self:end}.texts .section-panes{max-width:calc(var(--settings-width) + var(--space-7))}.texts-toolbar{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.drop-zone{gap:var(--space-3);padding:var(--space-3);margin:calc(-1 * var(--space-3));border-radius:var(--radius-md);border:1px dashed #0000;display:grid}.drop-zone.dragging{border-color:var(--accent)}.drop-hint{font-size:var(--text-sm)}.new-text{gap:var(--space-2);display:grid}.paste-area{width:100%;min-height:10rem;padding:var(--space-3);background:var(--surface);border:1px solid var(--separator);border-radius:var(--radius-md);font-family:var(--font-typing);font-size:var(--text-sm);resize:vertical}.form-actions{gap:var(--space-4);align-items:center;display:flex}.text-rows,.dataset-rows{margin:var(--space-5) 0 0;padding:0;list-style:none}.text-row,.dataset-row{align-items:baseline;gap:var(--space-1) var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--separator);grid-template-columns:minmax(8rem,1fr) auto auto;display:grid}.text-title{overflow-wrap:anywhere}.dataset-details{font-size:var(--text-sm)}.dataset-details summary{cursor:pointer;color:var(--text-dim)}.install-panel{margin-top:var(--space-6)}.install-panel>summary{cursor:pointer}.install-body{gap:var(--space-3);margin-top:var(--space-3);display:grid}.url-install{gap:var(--space-3);flex-wrap:wrap;align-items:baseline;display:flex}.url-install .text-input{flex:1;min-width:12rem}.storage-line{margin-top:var(--space-5);font-size:var(--text-sm)}.text-button.danger{color:var(--incorrect)}@media (width<=520px){.text-row,.dataset-row{grid-template-columns:1fr auto}}.stats{gap:var(--space-6);grid-template-columns:minmax(0,1fr);display:grid}.stat-tiles{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(6.75rem,1fr));display:grid}.stat-tile,.period-card{padding:var(--space-3) var(--space-4);background:var(--surface);border-radius:var(--radius-md)}.stat-tile{animation:rise-in var(--duration-slow) var(--ease-out) both}.stat-tile:nth-child(2){animation-delay:30ms}.stat-tile:nth-child(3){animation-delay:60ms}.stat-tile:nth-child(4){animation-delay:90ms}.stats{container-type:inline-size}.period-cards{gap:var(--space-3);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@container (width<=640px){.period-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}.period-card{gap:2px;display:grid}.period-meta{color:var(--text-dim);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.period-card.is-quiet .stat-value{color:var(--text-dim)}.period-value .unit{margin-left:2px}.period-meta{text-wrap:balance}.stat-label{color:var(--text-dim);font-size:var(--text-sm)}.stat-value{font-size:var(--text-xl);font-weight:600}.stats-note{font-size:var(--text-sm);margin-top:calc(-1 * var(--space-3))}.stats-note.is-end{text-align:right}.stat-tiles.is-small{margin-top:calc(-1 * var(--space-3));grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr))}.stat-tile.is-small{padding:var(--space-2) var(--space-3)}.stat-tile.is-small .stat-value{font-size:var(--text-lg)}.stat-tile.stat-tile-duration,.stat-tile-duration{min-width:0}.stat-tile.stat-tile-duration .stat-value,.stat-tile-duration .stat-value{font-size:var(--text-md);white-space:nowrap;text-overflow:ellipsis;line-height:1.3;overflow:hidden}.stat-pills{gap:var(--space-3);margin-top:calc(-1 * var(--space-3));grid-template-columns:1fr 1fr;display:grid}.stat-pill{padding:var(--space-2) var(--space-4);background:var(--surface);color:var(--text-dim);font-size:var(--text-sm);text-align:center;border-radius:999px}.stat-pill-value{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.stats-section-top{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.stats-section-top .settings-section-heading{margin:0}.game-stats-cards{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));display:grid}.game-stats-card{gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface);align-content:start;display:grid}.game-stats-title{font-size:var(--text-lg);margin:0}.game-stats-bests{gap:2px var(--space-3);font-variant-numeric:tabular-nums;grid-template-columns:auto 1fr;margin:0;display:grid}.game-stats-bests dt{color:var(--text-dim)}.game-stats-bests dd{margin:0}.stats-section{padding-top:var(--space-5);border-top:1px solid var(--separator)}.stats-list{margin:0;padding:0;list-style:none}.stats-row{justify-content:space-between;gap:var(--space-4);padding:var(--space-1) 0;display:flex}.stats-paginated-list{gap:var(--space-2);flex-direction:column;display:flex}.stats-pagination{justify-content:space-between;align-items:center;gap:var(--space-2);margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--separator);display:flex}.stats-pagination .stats-page-info{color:var(--text-dim);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.stats-pagination .chip-button{font-size:var(--text-xs);padding:1px var(--space-2)}.stats-pagination .chip-button:disabled{opacity:.3;cursor:not-allowed;pointer-events:none;transform:none}.stats-columns{gap:var(--space-4) var(--space-6);margin-top:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));display:grid}.stats-empty{font-size:var(--text-sm)}.stats-table{border-collapse:collapse;margin-top:var(--space-2);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.stats-table th,.stats-table td{padding:var(--space-1) var(--space-4) var(--space-1) 0;text-align:left;border-bottom:1px solid var(--separator)}.table-scroll{margin:0 calc(-1 * var(--space-2));padding:0 var(--space-2);position:relative;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.data-table th,.data-table td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--separator);white-space:nowrap}.data-table th:first-child,.data-table td:first-child{padding-left:0}.data-table thead th{color:var(--text-dim);font-weight:500;font-size:var(--text-xs);border-bottom-color:var(--text-dim)}.data-table tbody th{font-weight:400}.data-table .numeric{text-align:right}.data-table tbody tr{transition:background-color var(--duration-fast)}.data-table tbody tr:hover{background:color-mix(in srgb, var(--surface) 70%, transparent)}.data-table .actions-cell{text-align:right}.mistakes-table th,.mistakes-table td{padding-left:var(--space-2);padding-right:var(--space-2)}.mistakes-table .mistake-actions{gap:var(--space-2)}.data-table .mistake-actions{display:inline-flex}.sort-button{color:inherit;font:inherit;cursor:pointer;transition:color var(--duration-fast);background:0 0;border:0;align-items:center;gap:2px;padding:0;display:inline-flex}.numeric .sort-button{flex-direction:row-reverse}.sort-button:hover,.sort-button.is-sorted{color:var(--text)}.sort-arrow{min-width:1ch;display:inline-block}.layout-picker-row{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);font-size:var(--text-sm);display:flex}.layout-picker-label{color:var(--text-muted)}.heatmap{--key-unit:min(2.6rem, calc((100vw - 2 * var(--space-4)) / 14));margin:0}.heat-keyboard{justify-content:center;gap:3px;display:grid}.heat-row{padding-left:calc(var(--row-offset) * var(--key-unit));gap:3px;display:flex}.heat-key{width:calc(var(--key-unit) - 3px);height:calc(var(--key-unit) - 3px);border-radius:var(--radius-sm);border:1px solid var(--separator);font-family:var(--font-typing);align-content:center;place-items:center;line-height:1.1;display:grid}.heat-char{font-size:.95rem}.heat-value{font-size:.62rem}.heat-1{background:var(--heat-1);border-color:var(--heat-1)}.heat-2{background:var(--heat-2);border-color:var(--heat-2)}.heat-3{background:var(--heat-3);border-color:var(--heat-3);color:var(--bg)}.heat-4{background:var(--heat-4);border-color:var(--heat-4);color:var(--bg)}.heat-none{color:var(--text-dim);border-style:dashed}.heat-legend{justify-content:center;gap:var(--space-1) var(--space-4);margin-top:var(--space-3);font-size:var(--text-xs);color:var(--text-dim);flex-wrap:wrap;display:flex}.heat-swatch{border:1px solid var(--separator);border-radius:2px;width:12px;height:12px;display:inline-block}.heat-swatch.heat-none{border:1px dashed var(--text-dim)}.heat-tables{grid-template-columns:repeat(var(--heat-columns,1), minmax(0, 1fr));gap:0 var(--space-6);margin-top:var(--space-5);align-items:start;display:grid}.heat-table{width:100%;margin-top:0}.heat-table .numeric{text-align:right}.heat-table :is(th,td){white-space:nowrap}.heat-table th:last-child,.heat-table td:last-child{padding-right:0}.heat-table thead th{color:var(--text-dim);font-size:var(--text-xs);border-bottom-color:var(--text-dim);font-weight:500}.heat-tables.is-compact .heat-table :is(th,td):nth-child(2){display:none}.heat-tables.is-compact .heat-table :is(th,td){padding-right:var(--space-2)}.heat-table-key{font-family:var(--font-typing);font-weight:400}.key-lists{gap:var(--space-5) var(--space-7);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (width<=560px){.key-lists{grid-template-columns:minmax(0,1fr)}}.sparkline .chart-tooltip{top:0}.text-rows .empty-state,.dataset-rows .empty-state{text-align:left;margin:0}.achievements-container.sectioned{gap:var(--space-5);grid-template-columns:13.5rem minmax(0,1fr)}.achievements-container .section-nav{gap:var(--space-3);-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;flex-direction:column;height:100%;max-height:100%;margin:0;padding:0;display:flex;position:static;overflow:hidden}.achievements-container .section-panes{padding-bottom:var(--space-4)}.achievements-sidebar-count{text-align:center;font-size:var(--text-xs);flex-shrink:0;margin:0}.achievements-container .section-nav-list{gap:var(--space-1);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--separator) transparent;min-height:0;padding-right:var(--space-1);flex-direction:column;flex:1;display:flex;overflow:hidden auto}.achievements-container .section-link{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border:1px solid var(--separator);color:var(--text-dim);font-size:var(--text-sm);white-space:nowrap;transition:color var(--duration-fast), border-color var(--duration-fast), background-color var(--duration-fast);border-radius:999px;text-decoration:none;display:flex}.achievements-container .section-title{text-overflow:ellipsis;min-width:0;overflow:hidden}.achievements-container .section-link:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (width<=640px){.achievements-container.sectioned{grid-template-columns:minmax(0,1fr);height:auto;overflow:visible}.modal-achievements .modal-body{overflow-y:auto}.achievements-container .section-nav,.achievements-container .section-panes{height:auto;max-height:none;overflow:visible}.achievements-container .section-nav-list{max-height:12rem}}.achievements-container .section-link:before{display:none}.achievements-container .section-link:hover{color:var(--text);border-color:var(--text-dim);background:0 0}.achievements-container .section-link[aria-current]{border-color:var(--accent);color:var(--text);background:var(--surface)}.achievements-container .section-count{font-family:var(--font-typing);font-size:var(--text-xs);color:var(--text-dim)}.achievements-container .section-link[aria-current] .section-count{color:var(--accent)}.achievement-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.achievement-row{justify-content:flex-start;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--separator);border-radius:var(--radius-md);min-width:0;transition:border-color var(--duration-fast)}.achievement-row.is-earned{border-color:color-mix(in srgb, var(--accent) 40%, var(--separator))}.achievement-badge{flex:none;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.achievement-badge-svg{width:24px;height:24px;stroke:var(--text-dim);fill:none;transition:transform var(--duration-fast), stroke var(--duration-fast);display:block}.achievement-row.is-earned .achievement-badge-svg{stroke:var(--accent)}.achievement-row.is-earned .achievement-badge-svg .badge-body{fill:color-mix(in srgb, var(--accent) 15%, transparent)}.achievement-row.is-earned .achievement-badge-svg .badge-star{fill:var(--accent);stroke:var(--accent)}.achievement-row:not(.is-earned) .achievement-badge-svg{opacity:.35}.achievement-row.is-secret:not(.is-earned) .achievement-badge-svg{opacity:.45;stroke:var(--text-dim)}.achievement-row:hover .achievement-badge.is-earned .achievement-badge-svg{transform:scale(1.12)}.achievement-mark{width:1.2em;color:var(--text-dim);flex:none}.achievement-row.is-earned .achievement-mark{color:var(--accent)}.achievement-text{align-items:baseline;gap:0 var(--space-2);flex-wrap:wrap;flex:auto;min-width:0;display:flex}.achievement-row:not(.is-earned) .achievement-name{color:var(--text-dim)}.achievement-hint{font-size:var(--text-sm);flex-basis:100%}.achievement-state{font-size:var(--text-sm);font-variant-numeric:tabular-nums;flex:none}.achievement-new{padding:0 var(--space-1);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-size:var(--text-xs)}.achievement-extra{padding:0 var(--space-1);border:1px solid var(--separator);border-radius:var(--radius-sm);font-size:var(--text-xs)}.achievements-complete{margin:var(--space-2) 0 0;color:var(--accent)}.achievement-note{align-items:center;gap:var(--space-2) var(--space-3);margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.achievement-note p{flex:14rem;margin:0}.achievement-note-mark{color:var(--accent)}.today-slot{position:relative}.today-trigger{align-items:center;gap:var(--space-2);height:2rem;padding:0 var(--space-2);border-radius:var(--radius-md);color:var(--text-dim);font:inherit;font-size:var(--text-sm);cursor:pointer;box-sizing:border-box;transition:color var(--duration-fast), border-color var(--duration-fast), background-color var(--duration-fast);background:0 0;border:1px solid #0000;line-height:1;display:inline-flex}.today-trigger:hover,.today-trigger.is-open{color:var(--text);border-color:var(--separator);background:var(--surface)}.today-count{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--accent)}.today-panel{top:calc(100% + var(--space-2));width:min(340px, calc(100vw - 2 * var(--space-4)));z-index:50;background:var(--bg);border:1px solid var(--separator);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--text-sm);animation:dropdown-in var(--duration-base) var(--ease-out);position:absolute;right:0;box-shadow:0 10px 28px #00000024,0 2px 6px #0000000f}.today-heading{margin:0 0 var(--space-2);font-size:var(--text-md);font-weight:500}.today-subheading{margin:var(--space-3) 0 var(--space-1);color:var(--text-dim);font-size:var(--text-xs);text-transform:lowercase;font-weight:400}.today-goal-text{margin:0 0 var(--space-1)}.today-list{margin:0;padding:0;list-style:none}.today-quest{align-items:baseline;gap:var(--space-2);padding:var(--space-1) 0;display:flex}.today-mark{width:1em;color:var(--text-dim);flex:none}.today-quest.is-done .today-mark{color:var(--accent)}.today-quest.is-done .today-what{color:var(--text-dim)}.today-text{flex-direction:column;flex:auto;min-width:0;display:flex}.today-meta{font-size:var(--text-xs)}.today-actions{align-items:baseline;gap:var(--space-2);flex:none;display:flex}.today-footer{margin:var(--space-3) 0 0;font-size:var(--text-xs)}.quest-note{align-items:center;gap:var(--space-2) var(--space-3);margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.quest-note-list{flex:14rem;margin:0;padding:0;list-style:none}.quest-note-mark{color:var(--accent)}@media (width<=640px){.today-panel{top:calc(var(--header-height,64px) + var(--space-2));left:var(--space-4);right:var(--space-4);width:auto;position:fixed}}@media (prefers-reduced-motion:reduce){.today-panel{animation:none}}.quote-area{min-height:5rem;font-family:var(--font-ui);font-size:var(--text-md)}.quote-row{gap:var(--space-1) var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--separator);grid-template-columns:1fr auto;display:grid}.quote-text{grid-column:1}.quote-by{font-size:var(--text-sm);grid-column:1}.quote-row .mistake-actions{grid-area:1/2/span 2;align-self:center}.settings-panel{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px dashed var(--separator)}.font-rows{margin:var(--space-2) 0;padding:0;list-style:none}.font-row{align-items:baseline;gap:var(--space-2) var(--space-4);padding:var(--space-2) 0;flex-wrap:wrap;display:flex}.font-row .mistake-actions{margin-left:auto}.font-input{min-width:12rem}.font-preview{margin:var(--space-3) 0;padding:var(--space-3);font-size:1.2rem;line-height:var(--typing-line-height);background:var(--surface);border-radius:var(--radius-md);overflow-wrap:anywhere}.theme-swatches{border:1px solid var(--separator);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.theme-swatch{width:14px;height:14px}.theme-editor{gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--separator);border-radius:var(--radius-md);display:grid}.token-group{gap:var(--space-2);border:0;margin:0;padding:0;display:grid}.token-row{align-items:center;gap:var(--space-3);grid-template-columns:1fr auto 6.5rem;display:grid}.color-input{border:1px solid var(--separator);border-radius:var(--radius-sm);cursor:pointer;background:0 0;width:2.4rem;height:1.8rem;padding:0}.hex-input{font-family:var(--font-typing);font-size:var(--text-sm)}.contrast-report{gap:var(--space-1);font-size:var(--text-sm);margin:0;padding:0;list-style:none;display:grid}.check-ok{color:var(--text-dim)}.check-fail{color:var(--incorrect)}.decorations-panel{gap:var(--space-3);margin-top:var(--space-4);display:grid}.decoration-slot{gap:var(--space-1);border:0;margin:0;padding:0;display:grid}.decoration-slot-title{color:var(--text);padding:0;font-weight:600}.decoration-options{gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.decoration-option{max-width:16rem;padding:var(--space-1) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;background:0 0;justify-items:start;gap:2px;display:inline-grid}.decoration-option[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.decoration-option.is-locked{cursor:default;color:var(--text-dim);border-style:dashed}.decoration-hint{font-size:var(--text-xs)}.theme-picker-trigger{align-items:center;gap:var(--space-3);min-width:140px;padding:var(--space-2) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit;font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration-fast), background-color var(--duration-fast);display:inline-flex}.theme-picker-trigger:hover{border-color:var(--text-dim)}.theme-picker-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-picker-trigger-label{text-align:left;flex:1}.theme-picker-trigger .dropdown-chevron{width:9px;height:6px;color:var(--text-dim)}.theme-picker-popover{z-index:1000;gap:var(--space-3);padding:var(--space-4);background:var(--bg);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);box-sizing:border-box;flex-direction:column;display:flex;position:fixed;box-shadow:0 16px 48px #00000038}.theme-picker-header{justify-content:space-between;align-items:center;display:flex}.theme-picker-title{font-size:var(--text-md);margin:0;font-weight:600}.theme-picker-close{color:var(--text-dim);cursor:pointer;padding:0 var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;font-size:1.25rem;line-height:1}.theme-picker-close:hover{color:var(--text)}.theme-picker-split{gap:var(--space-4);grid-template-columns:200px 260px;display:grid}.theme-picker-list{scrollbar-width:thin;flex-direction:column;gap:2px;max-height:250px;padding-right:4px;display:flex;overflow-y:auto}.theme-picker-item{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;transition:background-color var(--duration-fast);background:0 0;border:1px solid #0000;display:flex}.theme-picker-item:hover,.theme-picker-item:focus-visible{background:var(--surface);outline:none}.theme-picker-item.is-selected{color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);font-weight:600}.theme-picker-item-name{flex:1}.theme-picker-check{color:var(--accent);font-size:.85rem}.theme-preview-col{gap:var(--space-2);flex-direction:column;display:flex}.theme-preview-header{font-size:var(--text-sm);justify-content:space-between;align-items:baseline;display:flex}.theme-preview-title{font-weight:600}.theme-preview-badges{gap:var(--space-2);font-size:var(--text-xs);color:var(--text-dim);display:flex}.theme-preview-card{gap:var(--space-2);padding:var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);box-sizing:border-box;flex-direction:column;font-size:.8rem;display:flex}.tp-typing{font-family:var(--font-typing);white-space:nowrap;text-overflow:ellipsis;line-height:1.4;overflow:hidden}.tp-correct{color:var(--correct)}.tp-incorrect{color:var(--incorrect);-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.tp-extra{color:var(--extra)}.tp-dim{color:var(--text-dim)}.tp-caret{background:var(--caret);vertical-align:text-bottom;width:2px;height:.9em;margin:0 1px;display:inline-block}.tp-surface{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:var(--surface);border:1px solid var(--separator);border-radius:3px;font-size:.75rem;display:flex}.tp-text{color:var(--text)}.tp-accent{color:var(--accent);text-decoration:underline}.tp-selection{background:var(--selection);border-radius:2px;padding:0 3px}.tp-footer{padding-top:var(--space-1);justify-content:space-between;align-items:center;display:flex}.theme-preview-chart{width:90px;height:22px}.tp-raw{fill:none;stroke:var(--chart-raw);stroke-width:1.5px;stroke-dasharray:2 2}.tp-wpm{fill:none;stroke:var(--chart-wpm);stroke-width:2px}.tp-error{fill:var(--chart-error)}.theme-preview-heat{gap:2px;display:inline-flex}.theme-preview-heat span{border-radius:1px;width:8px;height:8px}.tp-heat-1{background:var(--heat-1)}.tp-heat-2{background:var(--heat-2)}.tp-heat-3{background:var(--heat-3)}.tp-heat-4{background:var(--heat-4)}.theme-picker-hint{font-size:var(--text-xs);color:var(--text-dim);margin:0}.theme-mode-slot{align-items:center;display:flex;position:relative}.theme-mode-trigger{border-radius:var(--radius-md);width:2rem;height:2rem;color:var(--text-dim);cursor:pointer;box-sizing:border-box;transition:color var(--duration-fast), border-color var(--duration-fast), background-color var(--duration-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-mode-trigger:hover,.theme-mode-trigger.is-open{color:var(--text);border-color:var(--separator);background:var(--surface)}.theme-mode-trigger svg{width:1.15rem;height:1.15rem}.theme-mode-menu{top:calc(100% + var(--space-2));z-index:100;min-width:13rem;padding:var(--space-2);background:var(--bg);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);animation:fade-in var(--duration-fast) var(--ease-out) both;flex-direction:column;gap:2px;display:flex;position:absolute;right:0;box-shadow:0 8px 24px #00000029}.theme-mode-menu-item{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;transition:background-color var(--duration-fast);background:0 0;border:1px solid #0000;display:flex}.theme-mode-menu-item:hover,.theme-mode-menu-item:focus-visible{background:var(--surface);outline:none}.theme-mode-menu-item.is-selected{color:var(--accent);font-weight:600}.theme-mode-menu-item .mode-icon{flex-shrink:0;justify-content:center;align-items:center;width:1.15rem;height:1.15rem;display:inline-flex}.theme-mode-menu-item .mode-labels{flex-direction:column;flex:1;display:flex}.theme-mode-menu-item .mode-hint{font-size:var(--text-xs);color:var(--text-dim);font-weight:400}.theme-mode-menu-item .mode-check{color:var(--accent);margin-left:auto;font-size:.9rem}@media (width<=520px){.theme-picker-split{grid-template-columns:1fr}.theme-preview-col{order:-1}}.profiles-dialog{width:min(58rem, calc(100vw - 2 * var(--space-4)));overscroll-behavior:contain;max-height:calc(100dvh - 3rem);padding:var(--space-5) var(--space-6);overflow-y:auto}.profiles-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:baseline;display:flex}.profile-cards{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(12.5rem,1fr));margin:0;padding:0;list-style:none;display:grid}.profile-card{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);text-align:left;cursor:pointer;transition:border-color var(--duration-fast), background-color var(--duration-base), transform var(--duration-base) var(--ease-spring);background:0 0;display:flex}.profile-card:hover{border-color:var(--text-dim);background:color-mix(in srgb, var(--surface) 55%, transparent)}.profile-card:active{transform:scale(.98)}.profile-card.is-current{background:var(--surface)}.profile-card[aria-expanded=true]{border-color:var(--accent)}.profile-card.is-new{color:var(--text-dim);border-style:dashed}.profile-card-text{min-width:0;display:grid}.profile-card-title{align-items:baseline;gap:var(--space-2);min-width:0;display:flex}.profile-card-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.profile-card-meta{font-size:var(--text-xs);color:var(--text-dim)}.profile-panel{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--separator)}.profile-panel:not([hidden]){animation:rise-in var(--duration-slow) var(--ease-out)}.profile-edit{gap:var(--space-4) var(--space-7);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.profile-column{align-content:start;gap:var(--space-2);display:grid}.profile-column .settings-section-heading{margin-bottom:0}.profile-column .settings-section-heading:not(:first-child){margin-top:var(--space-3)}.profile-actions{gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--separator);grid-column:1/-1;display:grid}.profile-form{gap:var(--space-2);display:grid}.profile-edit .setting-row{padding:var(--space-1) 0;grid-template-columns:8rem minmax(0,1fr)}.profile-edit .setting-row .text-input{width:100%}.profile-delete{margin-left:auto}.delete-form{min-width:min(22rem,100%)}.avatar-picker{align-items:center;gap:var(--space-4);display:flex}.avatar-picker-actions{align-items:baseline;gap:0 var(--space-3);flex-wrap:wrap;display:flex}.avatar-picker-actions .small-print,.avatar-picker-actions .setting-message{flex-basis:100%}.passkey-rows{margin:0;padding:0;list-style:none}.passkey-row{align-items:baseline;gap:var(--space-3);padding:var(--space-1) 0;border-bottom:1px solid var(--separator);grid-template-columns:1fr auto auto auto;display:grid}.profiles-footer{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--separator)}.profiles-footer .small-print{font-size:var(--text-xs)}@media (width<=640px){.profiles-dialog{padding:var(--space-4)}.profile-edit{grid-template-columns:minmax(0,1fr)}.profile-cards{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.profile-card{padding:var(--space-2);gap:var(--space-2)}.profile-delete{margin-left:0}}.small-print{font-size:var(--text-sm)}.button.danger-button{border-color:var(--incorrect);color:var(--incorrect)}.bar{fill:var(--chart-wpm)}.bar-highlight{fill:var(--surface)}.bar-hit{cursor:default}.daily-bars .chart-tooltip{top:0}.stats>.pane-blurb{margin-bottom:0}.mistakes-toolbar .segmented+.segmented{padding-left:var(--space-5);border-left:1px solid var(--separator)}.mistake-kind>summary.mistake-kind-heading{margin-bottom:var(--space-1);padding:var(--space-1) 0;font-size:var(--text-sm);color:var(--text);display:block}.mistake-kind-heading .count{color:var(--text-dim);font-weight:400}.mistake-kind:not([open])>summary.mistake-kind-heading{color:var(--text-dim)}.kind-filter{display:inline-flex}.kind-dropdown{min-width:9.5rem}.pager{align-items:center;gap:var(--space-2) var(--space-3);margin-top:var(--space-4);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.pager-pages{align-items:center;gap:2px;display:inline-flex}.pager-step,.pager-page{min-width:2rem;height:2rem;padding:0 var(--space-2);border-radius:var(--radius-md);color:var(--text-dim);font-variant-numeric:tabular-nums;cursor:pointer;transition:color var(--duration-fast), background-color var(--duration-fast), border-color var(--duration-fast), transform var(--duration-base) var(--ease-spring);background:0 0;border:1px solid #0000}.pager-step:hover:not(:disabled),.pager-page:hover{color:var(--text);background:var(--surface)}.pager-step:active:not(:disabled),.pager-page:active{transform:scale(.94)}.pager-step:disabled{opacity:.4;cursor:default}.pager-page.is-current{color:var(--text);border-color:var(--separator);background:var(--surface)}.pager-gap{color:var(--text-dim);padding:0 var(--space-1)}.pager-range{margin-left:auto}.mistakes-table tbody th.mistake-label{white-space:normal;overflow-wrap:anywhere}.level-ring{background:conic-gradient(var(--accent) calc(var(--progress,0) * 1turn), var(--separator) 0);border-radius:50%;padding:2.5px;display:inline-grid}.level-ring .avatar{box-shadow:0 0 0 1.5px var(--bg)}.profile-level{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;padding:2px 7px;font-size:.72rem;font-weight:600;line-height:1.2;display:inline-flex}.level-bar{height:4px;margin:var(--space-2) 0 var(--space-1);background:var(--separator);border-radius:2px;overflow:hidden}.level-bar>span{background:var(--accent);transform-origin:0;height:100%;animation:bar-grow var(--duration-slow) var(--ease-out);border-radius:2px;display:block}@keyframes bar-grow{0%{transform:scaleX(0)}}.delete-flow{gap:var(--space-3);padding:var(--space-4);border:1px solid color-mix(in srgb, var(--incorrect) 45%, var(--separator));border-radius:var(--radius-md);background:color-mix(in srgb, var(--incorrect) 5%, transparent);animation:rise-in var(--duration-slow) var(--ease-out);display:grid}.delete-progress{font-size:var(--text-xs);color:var(--text-dim)}.delete-flow .button.danger-button:disabled{opacity:.55}.goal-summary{font-size:var(--text-sm)}.avatar-hero{width:6.5rem;height:6.5rem;font-size:2.4rem}.lock-screen{width:100vw;max-width:none;height:100dvh;max-height:none;padding:var(--space-6) var(--space-4);color:var(--text);background:0 0;border:0;margin:0}.lock-screen[open]{grid-template-rows:auto 1fr;justify-items:center;display:grid}.lock-screen::backdrop{background:var(--bg)}.lock-brand{color:var(--text-dim)}.lock-brand .wordmark{height:1.1rem}.lock-main,.lock-chooser{align-self:center;justify-items:center;gap:var(--space-2);animation:rise-in var(--duration-slow) var(--ease-out);padding-bottom:12vh;display:grid}.lock-avatar{cursor:pointer;transition:transform var(--duration-base) var(--ease-spring), box-shadow var(--duration-base);background:0 0;border:0;border-radius:50%;padding:0}.lock-avatar:hover{box-shadow:0 0 0 4px var(--surface);transform:scale(1.03)}.lock-avatar:focus-visible{border-radius:50%}.lock-name{margin-top:var(--space-2);font-size:var(--text-lg);font-weight:600}.lock-hint{font-size:var(--text-xs);color:var(--text-dim);margin-top:-4px}.lock-form{margin-top:var(--space-3)}.lock-keep{align-items:center;gap:var(--space-2);margin-top:var(--space-3);color:var(--text-dim);font-size:var(--text-sm);display:inline-flex}.pill{width:min(17rem,80vw);height:2.4rem;padding:0 4px 0 var(--space-4);border:1px solid var(--separator);background:var(--surface);transition:border-color var(--duration-fast), box-shadow var(--duration-base);border-radius:999px;align-items:center;display:flex}.pill:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent)}.pill-input{min-width:0;color:var(--text);font-size:var(--text-md);background:0 0;border:0;outline:none;flex:1}.pill-input::placeholder{color:var(--text-dim)}.pill-button{width:1.9rem;height:1.9rem;color:var(--text-dim);cursor:pointer;transition:color var(--duration-fast), background-color var(--duration-fast), transform var(--duration-base) var(--ease-spring);background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.pill-button svg{width:1.1rem;height:1.1rem}.pill-button:hover:not(:disabled){color:var(--text);background:color-mix(in srgb, var(--text) 8%, transparent)}.pill-button[type=submit]{color:var(--bg);background:var(--accent)}.pill-button[type=submit]:hover:not(:disabled){color:var(--bg);background:color-mix(in srgb, var(--accent) 85%, var(--text))}.pill-button:active:not(:disabled){transform:scale(.9)}.pill-button:disabled{opacity:.5;cursor:default}.pill.is-shaking{animation:.36s ease-in-out pill-shake}@keyframes pill-shake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.lock-message{min-height:1.4em;font-size:var(--text-sm);color:var(--text-dim);text-align:center}.lock-switch{font-size:var(--text-sm)}.lock-people{justify-content:center;gap:var(--space-4);flex-wrap:wrap;max-width:44rem;margin:0;padding:0;list-style:none;display:flex}.lock-person{justify-items:center;gap:var(--space-1);width:7.5rem;padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);color:var(--text);cursor:pointer;transition:background-color var(--duration-base), transform var(--duration-base) var(--ease-spring);background:0 0;border:0;display:grid}.lock-person:hover{background:var(--surface)}.lock-person:active{transform:scale(.97)}.lock-person.is-current .avatar{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}.lock-person-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:var(--space-1);overflow:hidden}.lock-person-meta{font-size:var(--text-xs);color:var(--text-dim)}@media (prefers-reduced-motion:reduce){.pill.is-shaking{animation:none}}:root[data-reduce-motion=true] .pill.is-shaking{animation:none}.dataset-cards{margin:var(--space-5) 0 0;gap:var(--space-3);padding:0;list-style:none;display:grid}.dataset-card{gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid var(--separator);border-radius:var(--radius-md);transition:border-color var(--duration-base), background-color var(--duration-base);display:grid}.dataset-card.is-enabled{background:color-mix(in srgb, var(--surface) 55%, transparent)}.dataset-card-head{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.dataset-name{font-weight:500}.dataset-chips{gap:var(--space-1) var(--space-2);margin-left:calc(14px + var(--space-2));flex-wrap:wrap;display:flex}.dataset-chip{padding:1px var(--space-2);background:var(--surface);color:var(--text-dim);font-size:var(--text-xs);font-variant-numeric:tabular-nums;border-radius:999px}.dataset-card .dataset-details{margin-left:calc(14px + var(--space-2))}.dataset-actions{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.chip-button{padding:2px var(--space-3);border:1px solid var(--separator);color:var(--text-dim);font-size:var(--text-sm);cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background-color var(--duration-fast), transform var(--duration-base) var(--ease-spring);background:0 0;border-radius:999px}.chip-button:hover{color:var(--text);border-color:var(--text-dim)}.chip-button:active{transform:scale(.95)}.chip-button.danger{color:var(--incorrect)}.chip-button.danger:hover{border-color:var(--incorrect)}.review{gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--accent);border-radius:var(--radius-md);animation:rise-in var(--duration-slow) var(--ease-out);display:grid}.review .settings-section-heading{color:var(--text);margin-bottom:0}.review-fields{align-items:center;gap:var(--space-2) var(--space-4);grid-template-columns:auto minmax(0,1fr);display:grid}.review-works{gap:var(--space-2);max-height:26rem;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.review-work{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface);transition:opacity var(--duration-base);display:grid}.review-work.is-excluded,.review-work.is-empty{opacity:.55}.review-work-head{align-items:center;gap:var(--space-3);display:flex}.review-work-head .text-input{flex:1;min-width:0;font-weight:500}.review-meta{font-size:var(--text-xs);color:var(--text-dim);flex:none}.review-work-people{gap:var(--space-3);margin-left:calc(14px + var(--space-3));grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.review-text{margin-left:calc(14px + var(--space-3));font-size:var(--text-sm)}.review-preview{margin:var(--space-2) 0;max-height:9rem;color:var(--text-dim);white-space:pre-line;overflow-y:auto}.review-editor{margin-top:var(--space-2)}@media (width<=520px){.review-work-people{grid-template-columns:minmax(0,1fr)}.review-meta{display:none}}.export-line{font-size:var(--text-sm)}.export-line .chip-button{font-size:var(--text-xs)}dialog.replay-dialog{width:min(56rem, calc(100vw - 2 * var(--space-4)));background:var(--bg);max-height:calc(100dvh - 3rem);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);overscroll-behavior:contain;overflow-y:auto;box-shadow:0 10px 30px #00000040}dialog.replay-dialog[open]{gap:var(--space-4);flex-direction:column;display:flex}.replay-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.replay-header-info{gap:var(--space-1);flex-direction:column;display:flex}.replay-title{font-size:var(--text-base);margin:0;font-weight:500}.replay-meta{font-size:var(--text-xs);color:var(--text-dim);margin:0}.replay-header-actions{align-items:center;gap:var(--space-2);display:flex}.replay-btn-keep.is-pinned{color:var(--accent);font-weight:500}.replay-notice{font-size:var(--text-xs);color:var(--chart-error,var(--incorrect));margin:0}.replay-surface-container{background:var(--surface);border:1px solid var(--separator);border-radius:var(--radius-md);padding:var(--space-5);justify-content:center;align-items:center;min-height:8rem;display:flex;overflow:hidden}.replay-surface-container .typing-surface{width:100%}.replay-timeline-container{width:100%;position:relative}.replay-back-prompt{right:var(--space-2);z-index:10;opacity:0;pointer-events:none;transition:opacity var(--duration-fast,.12s) ease;font-size:var(--text-xs);padding:var(--space-1) var(--space-2);background:var(--surface);border:1px solid var(--accent);color:var(--accent);position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 2px 8px #0003}.replay-back-prompt.is-visible{opacity:1;pointer-events:auto}.replay-timeline-scroll{width:100%;margin:var(--space-2) 0;border-radius:var(--radius-sm);position:relative;overflow:hidden}.replay-timeline-scroll.is-scrollable{scrollbar-width:thin;scrollbar-color:var(--separator) transparent;overflow-x:auto}.replay-timeline-scroll::-webkit-scrollbar{height:6px}.replay-timeline-scroll::-webkit-scrollbar-track{background:0 0}.replay-timeline-scroll::-webkit-scrollbar-thumb{background:var(--separator);border-radius:3px}.replay-timeline-scroll::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.replay-timeline-wrapper{width:100%;height:28px;min-height:28px;transition:width var(--duration-fast,.12s) ease;align-items:center;display:flex;position:relative}.replay-scrubber{appearance:none;cursor:pointer;z-index:2;background:0 0;border:none;outline:none;width:100%;height:28px;margin:0;padding:0;position:relative}.replay-scrubber::-webkit-slider-runnable-track{background:var(--separator);border:none;border-radius:3px;width:100%;height:6px}.replay-scrubber::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;z-index:3;width:14px;height:14px;box-shadow:0 0 0 2px var(--bg);border-radius:50%;margin-top:-4px;position:relative}.replay-scrubber::-moz-range-track{background:var(--separator);border:none;border-radius:3px;width:100%;height:6px}.replay-scrubber::-moz-range-thumb{background:var(--accent);cursor:pointer;border:2px solid var(--bg);z-index:3;border-radius:50%;width:14px;height:14px;position:relative}.timeline-milestones{pointer-events:none;z-index:1;height:100%;position:absolute;top:0;left:0;right:0}.timeline-milestone{background:var(--text-dim);opacity:.35;width:1px;height:14px;position:absolute;top:50%;transform:translate(-50%,-50%)}.timeline-milestone-label{font-size:8px;font-family:var(--font-mono,monospace);color:var(--text-dim);opacity:.65;pointer-events:none;position:absolute;top:0;transform:translate(-50%)}.timeline-ticks{pointer-events:none;z-index:1;height:100%;position:absolute;top:0;left:0;right:0}.timeline-tick{pointer-events:auto;cursor:help;border-radius:1px;width:3px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.tick-mistake{background:var(--incorrect)}.tick-correction{background:var(--accent)}.tick-hesitation{background:var(--text-dim)}.replay-metrics{font-size:var(--text-xs);font-family:var(--font-mono,monospace);color:var(--text-dim);justify-content:space-between;align-items:center;display:flex}.replay-timeline-zoom{align-items:center;gap:var(--space-1);font-family:var(--font-ui,sans-serif);display:inline-flex}.replay-zoom-label{font-size:var(--text-xs);color:var(--text-dim);margin-right:var(--space-1)}.replay-zoom-btn{font-size:var(--text-xs);padding:0 var(--space-2);min-height:1.5rem;line-height:1.5rem}.replay-zoom-btn.is-active{background:var(--surface);color:var(--text);border-color:var(--accent)}.replay-zoom-slider{appearance:none;background:var(--separator);cursor:pointer;width:4.5rem;height:4px;margin:0 var(--space-1);border-radius:2px;outline:none}.replay-zoom-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:10px;height:10px}.replay-zoom-slider::-moz-range-thumb{background:var(--accent);cursor:pointer;border:none;border-radius:50%;width:10px;height:10px}.replay-zoom-readout{font-size:var(--text-xs);font-family:var(--font-mono,monospace);color:var(--text-dim);text-align:right;min-width:2.2rem}.replay-controls{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.replay-controls-left,.replay-controls-right{align-items:center;gap:var(--space-2);display:flex}.replay-speeds{gap:var(--space-1);margin-left:var(--space-2);display:flex}.replay-speed-btn.is-active{background:var(--surface);color:var(--text);border-color:var(--accent)}.history-actions{align-items:center;gap:var(--space-2);display:inline-flex}.pinned-icon{font-size:var(--text-xs)}.history-filter-bar{gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.history-filter-bar .chip-button.is-active{background:var(--surface);color:var(--text);border-color:var(--accent)}.history-section-heading{font-size:var(--text-sm);color:var(--text-dim);margin:var(--space-4) 0 var(--space-2);text-transform:lowercase;letter-spacing:.03em;font-weight:600}.history-section-heading:first-child{margin-top:0}.drill-content{gap:var(--space-6);display:grid}.drill-header{justify-content:space-between;align-items:end;gap:var(--space-4);flex-wrap:wrap;display:flex}.drill-tiles{gap:var(--space-3);grid-template-columns:repeat(3,minmax(5.5rem,1fr));min-width:min(100%,22rem);display:grid}.drill-tile{padding:var(--space-3) var(--space-4);background:var(--surface);border-radius:var(--radius-md);gap:2px;display:grid}.drill-tile-value{font-size:var(--text-xl);font-variant-numeric:tabular-nums;font-weight:600}.drill-tile-label{font-size:var(--text-sm);color:var(--text-dim)}.drill-empty{color:var(--text-dim);font-size:var(--text-sm);max-width:36rem}.drill-section{gap:var(--space-3);justify-items:start;display:grid}.drill-section>*{max-width:100%}.drill-section-top{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-4);flex-wrap:wrap;width:100%;display:flex}.drill-section-heading{font-size:var(--text-sm);color:var(--text-dim);font-weight:500}.drill-selection{align-items:baseline;gap:var(--space-3);font-size:var(--text-sm);flex-wrap:wrap;display:inline-flex}.drill-entries{width:100%;margin:0;padding:0;list-style:none}.drill-entry{align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-2) 0;border-bottom:1px solid var(--separator);font-size:var(--text-sm);font-variant-numeric:tabular-nums;grid-template-columns:minmax(9rem,1fr) auto 7.5rem 3.5rem 3.5rem auto;display:grid}.drill-entry-pick{align-items:center;gap:var(--space-3);cursor:pointer;min-width:0;display:inline-flex}.drill-entry-pick .mistake-label{overflow-wrap:anywhere}.drill-entry-status,.drill-entry-seen{color:var(--text-dim)}.drill-entry.is-due .drill-entry-status{color:var(--accent)}.drill-entry-rate{text-align:right}.drill-choice{row-gap:var(--space-2)}.drill-tag{margin-left:var(--space-2);padding:0 var(--space-2);background:var(--selection);color:var(--accent);font-size:var(--text-xs);vertical-align:.1em;border-radius:999px;line-height:1.5;display:inline-block}.drill-tag.is-muted{background:var(--surface);color:var(--text-dim);margin-left:0}.segment .drill-tag:after{content:none}.drill-reason{font-size:var(--text-sm);margin-top:calc(-1 * var(--space-1))}.drill-quotes{gap:var(--space-2);width:100%;display:grid}.drill-quote{gap:var(--space-3);padding:var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--duration-fast), background var(--duration-fast);grid-template-columns:auto 1fr;display:grid}.drill-quote:hover{border-color:var(--text-dim)}.drill-quote:has(input:checked){border-color:var(--accent);background:var(--surface)}.drill-quote input{accent-color:var(--accent);margin-top:.3em}.drill-quote-body{gap:var(--space-2);min-width:0;display:grid}.drill-quote-text{font-family:var(--font-typing);font-size:var(--text-sm);color:var(--text)}.drill-quote-hits{align-items:center;gap:var(--space-1) var(--space-2);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.drill-quote-hits .drill-tag{margin-left:0}.drill-hit{padding:0 var(--space-2);border:1px solid var(--separator);color:var(--text-dim);font-family:var(--font-typing);border-radius:999px}.drill-quotes-status{font-size:var(--text-sm)}.drill-start-row{align-items:center;gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=620px){.drill-entry{grid-template-columns:1fr auto auto;grid-template-areas:"pick trend action""status rate seen"}.drill-entry-pick{grid-area:pick}.drill-entry>.trend{grid-area:trend}.drill-entry>.text-button{grid-area:action}.drill-entry-status{padding-left:calc(14px + var(--space-3));grid-area:status}.drill-entry-rate{grid-area:rate}.drill-entry-seen{grid-area:seen}}.backup-progress{right:var(--space-4);bottom:var(--space-4);z-index:50;gap:var(--space-1);min-width:12rem;padding:var(--space-2) var(--space-3);border:1px solid var(--separator);background:var(--surface);color:var(--text-dim);font-size:var(--text-xs);transition:opacity var(--duration-fast);border-radius:8px;display:grid;position:fixed}.backup-progress-bar{appearance:none;background:var(--separator);width:100%;height:4px;accent-color:var(--accent);border:0;border-radius:2px}.backup-progress-bar::-webkit-progress-bar{background:var(--separator);border-radius:2px}.backup-progress-bar::-webkit-progress-value{background:var(--accent);border-radius:2px}.backup-progress-bar::-moz-progress-bar{background:var(--accent);border-radius:2px}body:has(.type-view.is-running) .backup-progress{opacity:0;pointer-events:none}.about-body{gap:var(--space-6) var(--space-7);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;width:100%;display:grid}@media (width<=720px){.about-body{gap:var(--space-6);grid-template-columns:1fr}}.about-section{gap:var(--space-3);display:grid}.about-section-heading{font-size:var(--text-sm);color:var(--text-dim);font-weight:500}.about-section p{margin:0;line-height:1.65}.about-section span{color:var(--text-dim)}.texts-status{transition:opacity var(--duration-slow) var(--ease-out)}.texts-status.is-faded{opacity:.55}.import-subfolders{align-items:center;gap:var(--space-1);font-size:var(--text-sm);display:inline-flex}.word-filter{gap:var(--space-2);margin-top:var(--space-5);display:grid}.word-filter-warning{gap:var(--space-2);padding:var(--space-3) var(--space-4);border-left:3px solid var(--incorrect);border-radius:var(--radius-sm);background:var(--surface);display:grid}.word-filter-warning-title{font-weight:600}.word-filter-own{gap:var(--space-2);grid-template-columns:minmax(0,1fr);display:grid}.word-filter-words{width:100%;min-height:4.5rem}.review-works:empty{display:none}.review-add{gap:var(--space-3);padding-top:var(--space-2);border-top:1px dashed var(--separator);display:grid}.review-add-bar{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.review-add-panel{gap:var(--space-3);display:grid}.review-add-paste{gap:var(--space-2);display:grid}.review-add-picks{gap:var(--space-1);max-height:14rem;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.review-add-pick{align-items:baseline;gap:var(--space-3);cursor:pointer;display:flex}.review-add-pick .small-print{margin-left:auto}.theme-sample-row{z-index:1;align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-2) 0;background:var(--bg);flex-wrap:wrap;display:flex;position:sticky;top:0}.theme-sample-row>.small-print{flex:12rem;margin:0}.preview-root{gap:var(--space-2);box-sizing:border-box;width:280px;max-width:100%;min-height:140px;padding:var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font-size:var(--text-sm);display:grid}.preview-panel{gap:var(--space-1);padding:var(--space-2) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--surface);display:grid}.preview-panel p{margin:0}.preview-typing{font-family:var(--font-typing)}.preview-correct{color:var(--correct)}.preview-incorrect{color:var(--incorrect);-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.preview-extra{color:var(--extra)}.preview-dim{color:var(--text-dim)}.preview-text{color:var(--text)}.preview-accent{color:var(--accent);text-decoration:underline}.preview-selection{background:var(--selection);color:var(--text)}.preview-caret{vertical-align:text-bottom;background:var(--caret);width:2px;height:1.1em;margin:0 1px;display:inline-block}.preview-bottom{align-items:center;gap:var(--space-3);display:flex}.preview-chart{flex:1;height:36px}.preview-wpm,.preview-raw{fill:none;stroke-width:2px;stroke-linejoin:round}.preview-wpm{stroke:var(--chart-wpm)}.preview-raw{stroke:var(--chart-raw);stroke-dasharray:3 2}.preview-error{fill:var(--chart-error)}.preview-heat{gap:2px;display:flex}.preview-heat>span{border-radius:2px;width:12px;height:12px}.preview-heat-1{background:var(--heat-1)}.preview-heat-2{background:var(--heat-2)}.preview-heat-3{background:var(--heat-3)}.preview-heat-4{background:var(--heat-4)}.preview-root .is-focus,.preview-root.is-focus{outline:2px dashed var(--text);outline-offset:2px}.view-type{min-height:calc(100vh - var(--header-height,5rem) - var(--footer-height,5rem) - var(--space-5));min-height:calc(100dvh - var(--header-height,5rem) - var(--footer-height,5rem) - var(--space-5));flex-direction:column;display:flex}#type-root{flex-direction:column;flex:1;display:flex}.type-view{--type-gap:var(--space-6);align-items:center;gap:var(--type-gap);padding:var(--space-4) 0;flex-direction:column;flex:1;display:flex}.type-view:before,.type-view:after{content:"";flex:1 1 0}.type-view:before{margin-bottom:calc(-1 * var(--type-gap))}.type-view:after{margin-top:calc(-1 * var(--type-gap));flex-grow:1.4}.type-view.has-results:before,.type-view.has-results:after{display:none}@media (height<=820px){.type-view{--type-gap:var(--space-4);padding:var(--space-2) 0}}.mode-bar{justify-content:center;align-items:center;gap:var(--space-2) var(--space-4);font-size:var(--text-sm);transition:opacity var(--duration-base);flex-wrap:wrap;display:flex}.mode-divider{background:var(--separator);width:1px;height:1em}.mode-tabs,.mode-options{justify-content:center;align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.mode-link,.mode-toggle{color:var(--text-dim)}.mode-note{color:var(--text-dim);font-size:var(--text-sm)}.drill-summary{gap:var(--space-3);align-items:baseline;display:inline-flex}.drill-targets{font-family:var(--font-typing);color:var(--text)}.drill-manage{color:var(--text-dim)}.custom-amount{width:5ch}.type-view.is-running .mode-bar{opacity:0}.type-view.is-running .mode-bar:focus-within{opacity:1}.type-message{color:var(--text-dim);text-align:center}.typing-area{width:100%}.live-row{align-items:baseline;gap:var(--space-4);min-height:2rem;margin-bottom:var(--space-3);font-family:var(--font-typing);font-variant-numeric:tabular-nums;display:flex}.live-progress{color:var(--accent);white-space:nowrap;font-size:1.4rem}.live-stats{color:var(--text-dim)}.live-clock{color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap}.ghost-delta{color:var(--text-dim);font-size:var(--text-sm);font-family:var(--font-typing)}.ghost-delta.ahead{color:var(--accent)}.ghost-delta.behind{color:var(--chart-error,var(--incorrect))}.live-progress.is-below{color:var(--incorrect)}.pace-note{color:var(--incorrect);font-size:var(--text-sm)}.book-note{color:var(--text-dim);font-family:var(--font-ui);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-style:italic;overflow:hidden}.pace-bar{height:3px;margin:calc(-1 * var(--space-2)) 0 var(--space-2);background:var(--separator);border-radius:2px;overflow:hidden}.pace-bar-fill{background:var(--accent);transform-origin:0;width:100%;height:100%;transition:transform .1s linear}.pace-bar.is-below .pace-bar-fill{background:var(--incorrect)}:root[data-reduce-motion=true] .pace-bar-fill{transition:none}.caps-indicator{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--incorrect);margin-left:auto}.surface{cursor:text;position:relative}.typing-input{opacity:0;resize:none;pointer-events:none;border:0;width:1px;height:1px;padding:0;position:absolute;top:0;left:0;overflow:hidden}.surface-viewport{transition:filter var(--duration-base), opacity var(--duration-base);position:relative;overflow:hidden}.lines{font-family:var(--font-typing);font-size:var(--typing-font-size);font-weight:var(--typing-font-weight,400);line-height:var(--typing-line-height);letter-spacing:var(--typing-letter-spacing);color:var(--text-dim);-webkit-user-select:none;user-select:none;will-change:transform;flex-wrap:wrap;gap:0 .6em;display:flex}.lines.animate{transition:transform var(--duration-base) ease-out}.word{white-space:pre}.ch.correct{color:var(--correct)}.ch.incorrect{color:var(--incorrect);text-underline-offset:.18em;text-decoration:underline;text-decoration-thickness:2px}.ch.extra{color:var(--extra);text-underline-offset:.18em;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.word.error{box-shadow:inset 0 -2px 0 color-mix(in srgb, var(--incorrect) 55%, transparent)}:root:not([data-vision=typical]) .ch.incorrect,:root:not([data-vision=typical]) .ch.extra{background:color-mix(in srgb, var(--incorrect) 14%, transparent);border-radius:2px;font-weight:700;text-decoration-style:wavy}:root:not([data-vision=typical]) .ch.extra{background:color-mix(in srgb, var(--extra) 14%, transparent);text-decoration-style:dotted}.word{transition:opacity var(--duration-base)}:root[data-focus-mode=line] .word:not(.on-current-line){opacity:.3}:root[data-focus-mode=sentence] .word:not(.in-sentence){opacity:.28}:root[data-focus-mode=sentence] .word.upcoming{opacity:.55}.ch.paragraph-mark{opacity:.45;margin-left:.15em}.paragraph-break{flex-basis:100%;height:0}.caret{--caret-height:calc(var(--typing-font-size) * 1.15);top:calc((var(--typing-font-size) * var(--typing-line-height) - var(--caret-height)) / 2);width:2px;height:var(--caret-height);background:var(--caret);pointer-events:none;border-radius:1px;animation:1s step-end infinite caret-blink;position:absolute;left:0}:root[data-caret=block] .caret{width:var(--caret-width,.6em);opacity:.35}:root[data-caret=underline] .caret{top:calc((var(--typing-font-size) * var(--typing-line-height) + var(--typing-font-size)) / 2);width:var(--caret-width,.6em);height:2px}:root[data-smooth-caret=true] .caret{transition:transform var(--duration-fast) ease-out}.type-view[data-state=running] .caret{animation:none}.surface:not(.focused) .caret{visibility:hidden}@keyframes caret-blink{50%{opacity:0}}:root[data-reduce-motion=true] .caret{animation:none}.caret.ghost{background:var(--text-dim);opacity:.45;z-index:1;pointer-events:none;animation:none;visibility:visible!important}.focus-hint{color:var(--text);opacity:0;pointer-events:none;transition:opacity var(--duration-base);place-items:center;display:grid;position:absolute;inset:0}.surface:not(.focused) .surface-viewport{filter:blur(3px);opacity:.45}.surface:not(.focused) .focus-hint{opacity:1}.type-footer{justify-content:center;align-items:baseline;gap:var(--space-2) var(--space-4);margin-top:var(--space-7);font-size:var(--text-sm);color:var(--text-dim);flex-wrap:wrap;display:flex}.restart-button{padding:var(--space-1) var(--space-2);color:var(--text-dim);cursor:pointer;background:0 0;border:0}.restart-button:hover,.restart-button:focus-visible{color:var(--text)}.restart-wrap{position:relative}.restart-hint{margin-left:var(--space-2);white-space:nowrap;visibility:hidden;color:var(--accent);position:absolute;top:50%;left:100%;transform:translateY(-50%)}.restart-button:focus-visible+.restart-hint{visibility:visible}.type-hints{text-align:center;font-size:var(--text-xs);flex-basis:100%}.type-view.is-running .type-footer{opacity:0;transition:opacity var(--duration-base)}.type-view.is-running .type-footer:focus-within{opacity:1}@media (width<=520px){.mode-bar>.mode-divider{display:none}}.goal-progress{font-size:var(--text-sm);color:var(--text-dim);font-variant-numeric:tabular-nums}.goal-progress.is-met{color:var(--accent)}:root{--deco-line:color-mix(in srgb, var(--accent) 55%, transparent);--deco-mark:color-mix(in srgb, var(--text-dim) calc(var(--deco-backdrop-strength,.06) * 100%), transparent);--deco-mark-soft:color-mix(in srgb, var(--text-dim) calc(var(--deco-backdrop-strength,.06) * 50%), transparent)}:root[data-deco-caret=glow] .caret:not(.ghost){box-shadow:0 0 7px 1px color-mix(in srgb, var(--caret) 55%, transparent)}:root[data-deco-caret=halo] .caret:not(.ghost):after,:root[data-deco-caret=drop] .caret:not(.ghost):after,:root[data-deco-caret=trail] .caret:not(.ghost):after{content:"";pointer-events:none;position:absolute}:root[data-deco-caret=halo] .caret:not(.ghost):after{border:1px solid color-mix(in srgb, var(--caret) 40%, transparent);border-radius:50%;width:1.3em;height:1.3em;top:50%;left:50%;transform:translate(-50%,-50%)}:root[data-deco-caret=drop] .caret:not(.ghost):after{background:var(--caret);border-radius:50%;width:4px;height:4px;margin-left:-2px;bottom:-6px;left:50%}:root[data-deco-caret=trail] .caret:not(.ghost):after{background:linear-gradient(to left, color-mix(in srgb, var(--caret) 60%, transparent), transparent);border-radius:1px;width:1.6em;height:2px;top:calc(100% + 2px);right:100%}:root[data-deco-backdrop] body{background-attachment:fixed}:root[data-deco-backdrop=dots] body{background-image:radial-gradient(circle, var(--deco-mark) 1.2px, transparent 1.6px);background-size:20px 20px}:root[data-deco-backdrop=ruled] body{background-image:repeating-linear-gradient(to bottom, transparent 0 31px, var(--deco-mark) 31px 32px)}:root[data-deco-backdrop=graph] body{background-image:linear-gradient(to right, var(--deco-mark) 1px, transparent 1px), linear-gradient(to bottom, var(--deco-mark) 1px, transparent 1px);background-size:24px 24px}:root[data-deco-backdrop=grain] body{background-image:radial-gradient(circle, var(--deco-mark) .8px, transparent 1.1px), radial-gradient(circle, var(--deco-mark) .6px, transparent .9px);background-position:0 0,3px 5px;background-size:7px 9px,11px 13px}:root[data-deco-backdrop=checks] body{background-image:conic-gradient(var(--deco-mark-soft) 25%, transparent 0 50%, var(--deco-mark-soft) 0 75%, transparent 0);background-size:36px 36px}:root[data-deco-frame] .surface:before{content:"";pointer-events:none;position:absolute;inset:-.7em -1em}:root[data-deco-frame=corners] .surface:before{--tick:14px;background:linear-gradient(var(--deco-line), var(--deco-line)) top left / var(--tick) 1.5px, linear-gradient(var(--deco-line), var(--deco-line)) top left / 1.5px var(--tick), linear-gradient(var(--deco-line), var(--deco-line)) top right / var(--tick) 1.5px, linear-gradient(var(--deco-line), var(--deco-line)) top right / 1.5px var(--tick), linear-gradient(var(--deco-line), var(--deco-line)) bottom left / var(--tick) 1.5px, linear-gradient(var(--deco-line), var(--deco-line)) bottom left / 1.5px var(--tick), linear-gradient(var(--deco-line), var(--deco-line)) bottom right / var(--tick) 1.5px, linear-gradient(var(--deco-line), var(--deco-line)) bottom right / 1.5px var(--tick);background-repeat:no-repeat}:root[data-deco-frame=bookplate] .surface:before{border:1px solid var(--deco-line);border-radius:var(--radius-md);outline:1px solid color-mix(in srgb, var(--accent) 30%, transparent);outline-offset:3px}:root[data-deco-frame=tab] .surface:before{border-top:2px solid var(--deco-line);border-radius:14px 14px 0 0}:root[data-deco-frame=brackets] .surface:before{--arm:10px;border-inline:1.5px solid var(--deco-line);background:linear-gradient(var(--deco-line), var(--deco-line)) top left / var(--arm) 1.5px, linear-gradient(var(--deco-line), var(--deco-line)) bottom left / var(--arm) 1.5px, linear-gradient(var(--deco-line), var(--deco-line)) top right / var(--arm) 1.5px, linear-gradient(var(--deco-line), var(--deco-line)) bottom right / var(--arm) 1.5px;background-repeat:no-repeat}:root[data-deco-keystroke=ink] .ch.just-typed{animation:.2s ease-out deco-ink}:root[data-deco-keystroke=rise] .ch.just-typed{animation:.16s ease-out deco-rise;position:relative}:root[data-deco-keystroke=bloom] .ch.just-typed{animation:.26s ease-out deco-bloom}@keyframes deco-ink{0%{opacity:.3}}@keyframes deco-rise{0%{top:.15em}}@keyframes deco-bloom{0%{text-shadow:0 0 8px color-mix(in srgb, var(--accent) 70%, transparent)}}:root[data-reduce-motion=true] .ch.just-typed{animation:none}@media (prefers-reduced-motion:reduce){.ch.just-typed{animation:none!important}}:root[data-deco-flourish] .brand:after{content:"";background:var(--accent);width:.8em;height:.8em;-webkit-mask:var(--flourish) center / contain no-repeat;-webkit-mask:var(--flourish) center / contain no-repeat;mask:var(--flourish) center / contain no-repeat;align-self:flex-start;margin-left:.3em;display:inline-block}:root[data-deco-flourish=leaf]{--flourish:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2 14C2 6 7 2 14 2c0 7-4 12-12 12z'/%3E%3C/svg%3E")}:root[data-deco-flourish=star]{--flourish:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1l2 5 5 .4-4 3.3 1.3 5L8 12l-4.3 2.7 1.3-5-4-3.3L6 6z'/%3E%3C/svg%3E")}:root[data-deco-flourish=key]{--flourish:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='5' cy='8' r='3.5' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M8 7h7v2h-1.5v2.5h-2V9H8z'/%3E%3C/svg%3E")}:root[data-deco-flourish=moon]{--flourish:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M11 1.5a7 7 0 1 0 3.5 11A5.5 5.5 0 1 1 11 1.5z'/%3E%3C/svg%3E")}:root[data-deco-flourish=letter] .brand:after{content:var(--deco-letter,"k");width:auto;height:auto;color:var(--accent);font-family:var(--font-typing);background:0 0;font-size:.8em;line-height:1;-webkit-mask:none;mask:none}.results-slot,.results,.result-chart{min-width:0}.results-slot{width:100%}.result-chart table{display:block}.results{justify-items:center;gap:var(--space-4);display:grid}.results-headline{align-items:baseline;gap:var(--space-7);display:flex}.hero{align-items:baseline;gap:var(--space-2);display:flex}.hero-value{font-size:3.5rem;font-weight:600;line-height:1}.hero.secondary .hero-value{font-size:2rem;font-weight:500}.hero-unit{color:var(--text-dim)}.results-detail,.results-counts{color:var(--text-dim);font-size:var(--text-sm);text-align:center}.results-ghost-comparison{color:var(--accent);font-size:var(--text-base);text-align:center;margin:var(--space-1) 0}.results-actions{gap:var(--space-3);margin-top:var(--space-3);display:flex}.button.subtle{background:0 0}.results-mistakes{justify-content:center;align-items:baseline;gap:var(--space-2) var(--space-3);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.results-attribution{color:var(--text-dim);font-size:var(--text-sm);font-style:italic}.results-books{color:var(--text-dim);font-size:var(--text-sm);text-align:center}.results-book-title{font-style:italic}.results-label,.results-note{color:var(--text-dim);font-size:var(--text-sm)}.mistake-chip{font-family:var(--font-typing)}.mistake-chip+.mistake-chip:before{content:"·";margin-right:var(--space-3);color:var(--text-dim)}.results-words{justify-items:center;gap:var(--space-2);width:100%;font-size:var(--text-sm);animation:rise-in var(--duration-slow) var(--ease-out);display:grid}.results-words-views{gap:var(--space-4);display:flex}.results-words-views [aria-pressed=true]{color:var(--accent)}.replay-wrong{color:var(--incorrect);text-underline-offset:.2em;text-decoration:underline}.replay-fixed{color:var(--text-dim);text-decoration:line-through;-webkit-text-decoration-color:var(--incorrect);text-decoration-color:var(--incorrect);opacity:.75}.replay-extra{color:var(--extra);text-underline-offset:.2em;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.replay-missing{color:var(--text-dim);opacity:.5;text-underline-offset:.2em;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.as-typed .replay-word:not(.has-mistakes){opacity:.6}.replay-key{font-size:var(--text-xs)}.results-replay{max-width:100%;font-family:var(--font-typing);color:var(--text-dim);line-height:1.8}.replay-word.wrong{color:var(--incorrect);text-underline-offset:.2em;text-decoration:underline}.results-training{justify-content:center;align-items:baseline;gap:var(--space-1) var(--space-5);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--separator);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.results-training:not(:has(>:not([hidden]))){display:none}.candidate-prompt{justify-content:center;align-items:baseline;gap:var(--space-1) var(--space-4);flex-wrap:wrap;display:flex}.candidate-status:empty{display:none}.candidate-actions{gap:var(--space-4);display:flex}.candidate-status{color:var(--accent)}.drill-summary-results{justify-items:center;gap:var(--space-2);display:grid}.drill-rows{gap:var(--space-1);margin:0;padding:0;list-style:none;display:grid}.drill-row{gap:var(--space-3);font-size:var(--text-sm);align-items:baseline;display:flex}.drill-status{color:var(--accent)}.result-chart{width:100%;margin:var(--space-4) 0 0;position:relative}.chart-empty{text-align:center}.chart-header{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.chart-header:not(:has(.chart-zoom-controls)) .chart-legend{margin-left:auto}.chart-legend{justify-content:flex-end;align-items:center;gap:var(--space-1) var(--space-4);font-size:var(--text-xs);color:var(--text-dim);flex-wrap:wrap;margin-bottom:0;display:flex}.chart-legend .legend-item,.result-chart .legend-item{align-items:center;gap:var(--space-2);white-space:nowrap;display:inline-flex}.chart-zoom-controls{align-items:center;gap:var(--space-1);display:inline-flex}.chart-zoom-label{font-size:var(--text-xs);color:var(--text-dim);margin-right:var(--space-1)}.chart-zoom-btn{font-size:var(--text-xs);padding:0 var(--space-2);min-height:1.5rem;line-height:1.5rem}.chart-zoom-btn.is-active{background:var(--surface);color:var(--text);border-color:var(--accent)}.chart-zoom-slider{width:56px;height:4px;accent-color:var(--accent);margin-left:var(--space-1);cursor:pointer}.chart-frame{border-radius:var(--radius-sm);width:100%;display:flex;position:relative;overflow:hidden}.chart-frame.is-scrollable{scrollbar-width:thin;scrollbar-color:var(--separator) transparent;cursor:grab;overflow:auto hidden}.chart-frame.is-scrollable::-webkit-scrollbar{height:6px}.chart-frame.is-scrollable::-webkit-scrollbar-track{background:0 0}.chart-frame.is-scrollable::-webkit-scrollbar-thumb{background:var(--separator);border-radius:3px}.chart-frame.is-scrollable::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.chart-frame.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.chart-y-sticky{z-index:4;pointer-events:none;background:linear-gradient(90deg, var(--bg) 70%, transparent);width:36px;margin-right:-36px;position:sticky;left:0}.milestone-line{stroke:var(--text-dim);stroke-opacity:.25;stroke-dasharray:4 4;stroke-width:1px}.milestone-label{fill:var(--text-dim);font-family:var(--font-ui);opacity:.75;dominant-baseline:hanging;font-size:10px;font-weight:500}.chart-svg{display:block;overflow:visible}.chart-grid line{stroke:var(--separator);stroke-width:1px}.tick{fill:var(--text-dim);font-family:var(--font-ui);font-variant-numeric:tabular-nums;font-size:11px}.tick-y{text-anchor:end;dominant-baseline:middle}.tick-x{text-anchor:middle}.series-wpm,.series-raw{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.series-wpm{stroke:var(--chart-wpm)}.series-raw{stroke:var(--chart-raw);stroke-dasharray:4 5}.series-rolling{fill:none;stroke:var(--text);stroke-width:2px;stroke-linecap:round;stroke-dasharray:.5 5}.target-line{stroke:var(--incorrect);stroke-width:1.5px;stroke-dasharray:8 4}.end-dot{fill:var(--chart-wpm);stroke:var(--bg);stroke-width:2px}.end-label{fill:var(--text);font-family:var(--font-ui);dominant-baseline:middle;font-size:12px;font-weight:600}.mark-error{fill:none;stroke:var(--chart-error);stroke-width:2px;stroke-linecap:round}.mark-corrected{fill:none;stroke:var(--chart-error);stroke-width:1.5px;stroke-linecap:round}.crosshair{stroke:var(--text-dim);stroke-width:1px}.chart-hit{fill:#0000;cursor:crosshair}.chart-tooltip{top:var(--space-5);min-width:8rem;padding:var(--space-2) var(--space-3);background:var(--bg);border:1px solid var(--separator);border-radius:var(--radius-md);font-size:var(--text-sm);pointer-events:none;position:absolute;left:0;box-shadow:0 6px 18px #00000014}.tooltip-title{color:var(--text-dim);font-size:var(--text-xs)}.tooltip-row{color:var(--text-dim)}.key{width:12px;height:2px;margin-right:var(--space-2);vertical-align:middle;display:inline-block}.key-wpm{background:var(--chart-wpm)}.key-raw{background:repeating-linear-gradient(90deg, var(--chart-raw) 0 4px, transparent 4px 7px)}.command-line{width:min(36rem, calc(100vw - 2 * var(--space-4)));background:var(--bg);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);margin:15vh auto 0;padding:0;box-shadow:0 12px 32px #0000001f}.command-line::backdrop{background:#0003}.command-input{width:100%;padding:var(--space-4);border:0;border-bottom:1px solid var(--separator);background:0 0}.command-input:focus{outline:none}.command-input[aria-invalid=true]{border-bottom-color:var(--incorrect)}.command-results{padding:var(--space-2) 0;max-height:50vh;margin:0;list-style:none;overflow-y:auto}.command-option,.command-empty{align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-4);color:var(--text-dim);display:flex}.command-label{flex:none}.command-meta{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;font-size:var(--text-xs);color:var(--text-dim);opacity:.85;flex:1;overflow:hidden}.command-match{color:var(--accent);background:0 0}.command-option[aria-selected=true] .command-match{color:var(--accent)}.command-option{cursor:pointer}.command-option[aria-selected=true]{color:var(--text);background:var(--surface)}.command-current{font-size:var(--text-xs);color:var(--text-dim);padding:0 var(--space-1);border:1px solid var(--separator);border-radius:var(--radius-sm);flex:none}@media (height<=820px){.results{gap:var(--space-2)}.result-chart,.results-actions{margin-top:0}}.results-ready{font-size:var(--text-sm);color:var(--text-dim);text-align:center}.results-xp{font-variant-numeric:tabular-nums}.xp-gained{color:var(--accent);font-weight:600}.xp-level.is-up{color:var(--text);font-weight:600}.results-not-counted{max-width:34rem;font-size:var(--text-sm);color:var(--text-dim);text-align:center}.candidate-prompt.is-leaving{animation:prompt-leave var(--duration-slow) var(--ease-out) forwards}@keyframes prompt-leave{to{opacity:0;transform:translateY(-4px)}}.command-group{padding:var(--space-2) var(--space-4) var(--space-1);font-size:var(--text-xs);color:var(--text-dim);list-style:none}.results-notes{justify-content:center;align-items:stretch;gap:var(--space-2) var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.results-notes>.achievement-note,.results-notes>.quest-note,.results-notes>.cal-news-note{gap:var(--space-2);font-size:var(--text-sm);border:0;flex-wrap:nowrap;margin-top:0;padding:0}.results-notes .achievement-note p,.results-notes .cal-news-note p{flex:0 auto}.results-notes .button{min-height:0;color:var(--accent);font-size:inherit;text-underline-offset:.2em;background:0 0;border:0;padding:0;text-decoration:underline}.results-notes .cal-news-cal{width:1.4rem;height:1.4rem}@media (width<=720px){.results-notes>.achievement-note,.results-notes>.quest-note,.results-notes>.cal-news-note{flex-wrap:wrap}}.games-view{width:100%;max-width:var(--column-width);margin:0 auto}.games-view>:not(.game-play){animation:view-in var(--duration-slow) var(--ease-out)}.games-intro{color:var(--text-dim);margin-bottom:var(--space-5)}.game-grid{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (width<=600px){.game-grid{grid-template-columns:1fr}}.game-card{gap:var(--space-2);padding:var(--space-5);border:1px solid var(--separator);border-radius:var(--radius-md);background:var(--surface);color:var(--text);transition:border-color var(--duration-fast,.12s);flex-direction:column;text-decoration:none;display:flex}.game-card:hover,.game-card:focus-visible{border-color:var(--accent)}.game-card-title{font-family:var(--font-typing);font-size:var(--text-xl);color:var(--accent)}.game-card-blurb{color:var(--text)}.game-card-record{color:var(--text-dim);font-size:var(--text-sm)}.game-setup{gap:var(--space-4);flex-direction:column;display:flex}.game-title{font-family:var(--font-typing);font-size:var(--text-xl);color:var(--accent);font-weight:400}.game-title.small{font-size:var(--text-lg)}.game-help{color:var(--text-dim);padding-left:var(--space-5);gap:var(--space-1);display:grid}.game-choices{gap:var(--space-3);display:grid}.game-choice{align-items:baseline;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.game-choice-label{min-width:6.5rem;color:var(--text-dim)}.game-setup-actions{align-items:baseline;gap:var(--space-4);display:flex}.game-bar{justify-content:space-between;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.game-clock{font-family:var(--font-typing);margin-right:auto}.game-bar-mode{color:var(--text-dim);font-size:var(--text-sm)}.game-arena{position:relative}.game-paused,.game-start-note{place-items:center;display:grid;position:absolute;inset:0}.game-start-note{pointer-events:none}.game-paused{z-index:2;background:color-mix(in srgb, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.game-paused[hidden]{display:none}.game-pause-panel{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);background:var(--surface);justify-items:center;display:grid}.game-pause-title{color:var(--text);font-size:var(--text-lg);margin:0}.game-pause-actions{justify-content:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.game-pause-actions kbd{margin-left:var(--space-1);color:var(--text-dim);font-size:var(--text-xs)}.game-start-note p{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}.game-start-note{place-items:center}.game-start-note .game-countdown{padding:var(--space-3) var(--space-5);font-size:var(--text-xl);font-variant-numeric:tabular-nums;font-weight:600}.game-countdown.is-ticking{animation:countdown-pulse var(--duration-slow) var(--ease-out)}@keyframes countdown-pulse{0%{opacity:.4;transform:scale(1.3)}}.game-typed{min-height:2.2rem;margin-top:var(--space-3);font-family:var(--font-typing);font-size:var(--typing-font-size,1.5rem);color:var(--text);text-align:center;white-space:pre}.game-controls{justify-content:center;align-items:baseline;gap:var(--space-2) var(--space-5);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.game-results-title{color:var(--text-dim);text-align:center}.feed-scene{align-items:center;gap:var(--space-5);display:flex}@media (width<=600px){.feed-scene{text-align:center;flex-direction:column}}.feed-creature{flex:none;width:9rem;height:9rem;animation:2.4s ease-in-out infinite feed-bob}:root[data-reduce-motion=true] .feed-creature{animation:none}@keyframes feed-bob{50%{transform:translateY(-4px)}}.feed-body{fill:var(--surface);stroke:var(--text);stroke-width:2.5px}.feed-eye{fill:var(--text)}.feed-mouth{fill:none;stroke:var(--text);stroke-width:3px;stroke-linecap:round}.game-stage[data-mood=urgent] .feed-body,.game-stage[data-mood=critical] .feed-body{stroke:var(--incorrect)}.game-stage[data-mood=critical] .feed-mouth{fill:var(--incorrect)}.feed-mood{color:var(--text-dim);font-size:var(--text-sm)}.feed-need{font-size:var(--text-lg);color:var(--text)}.feed-need-short{font-family:var(--font-typing);color:var(--accent)}.feed-bank-row{align-items:center;gap:var(--space-3);margin-top:var(--space-4);display:flex}.feed-bank,.castle-resolve,.space-health-bar{background:var(--separator);border-radius:4px;flex:1;height:8px;overflow:hidden}.feed-bank-fill,.castle-resolve-fill,.space-health-fill{background:var(--accent);transform-origin:0;height:100%;transition:transform .1s linear}:root[data-reduce-motion=true] .feed-bank-fill,:root[data-reduce-motion=true] .castle-resolve-fill,:root[data-reduce-motion=true] .space-health-fill{transition:none}.feed-bank.is-low .feed-bank-fill,.space-health-bar.is-low .space-health-fill{background:var(--incorrect)}.feed-time{font-family:var(--font-typing);font-variant-numeric:tabular-nums;text-align:right;min-width:4.5rem}.feed-status,.castle-status,.space-status{justify-content:space-between;gap:var(--space-2) var(--space-4);min-height:1.6rem;margin-top:var(--space-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.feed-counts{color:var(--text-dim)}.feed-result.is-fed{color:var(--correct,var(--accent))}.feed-result.is-wrong,.feed-result.is-mistyped{color:var(--incorrect)}.castle-hud,.space-hud,.spot-hud{align-items:center;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-3);font-size:var(--text-sm);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.castle-resolve{min-width:8rem}.castle-resolve-fill{background:var(--incorrect)}.castle-resolve.is-holding .castle-resolve-fill{background:var(--accent)}.castle-svg{width:100%;height:auto;min-height:200px;max-height:calc(100dvh - 22rem);display:block}.castle-section{cursor:pointer}.castle-frame{fill:var(--surface);stroke:var(--separator);stroke-width:2px}.castle-section.is-critical .castle-frame{stroke:var(--text-dim);stroke-dasharray:5 3}.castle-section.is-cursor .castle-frame{stroke:var(--text);stroke-width:4px;stroke-dasharray:none}.castle-fill{fill:var(--accent);fill-opacity:.55}.castle-fill.is-danger{fill:var(--incorrect)}.castle-label,.castle-critical,.castle-breach{fill:var(--text);font-family:var(--font-ui);text-anchor:middle;pointer-events:none;font-size:11px}.castle-critical{fill:var(--text-dim);font-size:9px}.castle-breach{fill:var(--incorrect)}.castle-requirement-mark{fill:var(--accent);font-family:var(--font-ui);text-anchor:middle;font-size:13px;font-weight:700}.castle-attacker{fill:var(--incorrect)}.castle-attacker.is-far{fill:var(--text-dim)}.castle-catapult-arm{stroke:var(--text-dim);stroke-width:2px;stroke-linecap:round}.castle-attacker-hp{fill:var(--accent)}.castle-attacker-pips{fill:var(--incorrect);text-anchor:middle;letter-spacing:1px;font-size:9px}.castle-foe.is-targetable,.castle-foe[data-attacker]{cursor:pointer}.is-carrying .castle-foe.is-targetable,.is-carrying .castle-foe[data-attacker]{cursor:crosshair}.castle-foe-hitbox{cursor:pointer;pointer-events:all}.castle-target-ring{fill:none;stroke:var(--incorrect);stroke-width:1.25px;stroke-dasharray:3 3;opacity:.35;transition:opacity var(--duration-fast), stroke var(--duration-fast), stroke-width var(--duration-fast)}.castle-target-pip{stroke:var(--incorrect);stroke-width:1.25px;opacity:.35;transition:opacity var(--duration-fast), stroke var(--duration-fast)}.castle-foe.is-targetable:hover .castle-target-ring,.castle-foe.is-targetable:hover .castle-target-pip,.is-carrying .castle-foe.is-targetable .castle-target-ring,.is-carrying .castle-foe.is-targetable .castle-target-pip{opacity:.85;stroke:var(--accent)}.is-carrying .castle-foe.is-targetable .castle-target-ring{stroke-dasharray:4 2;animation:1.4s ease-in-out infinite foe-target-pulse}.castle-foe.is-drop-target .castle-target-ring,.castle-foe.is-drop-target .castle-target-pip{opacity:1;stroke:var(--accent);stroke-width:2.25px;stroke-dasharray:none;animation:none}@keyframes foe-target-pulse{0%,to{opacity:.5;stroke-width:1.25px}50%{opacity:1;stroke-width:2px}}.castle-foe.type-catapult{cursor:not-allowed;opacity:.7}.castle-foe.is-drop-target .castle-attacker,.castle-section.is-drop-target .castle-frame{stroke:var(--accent);stroke-width:3px}.castle-section.is-struck .castle-frame{stroke:var(--incorrect);stroke-width:3px}.castle-layout{gap:var(--space-3) var(--space-4);grid-template-columns:minmax(0,1fr) 15rem;align-items:start;display:grid}.castle-side{gap:var(--space-3);min-width:0;display:grid}@media (width<=720px){.castle-layout{grid-template-columns:minmax(0,1fr)}}.castle-yard{gap:var(--space-2);display:grid}.castle-yard-head{align-items:baseline;gap:var(--space-1) var(--space-3);color:var(--text-dim);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.castle-yard-keys{font-size:var(--text-xs);margin-left:auto}.castle-yard-bricks{gap:var(--space-2);touch-action:none;flex-wrap:wrap;min-height:2.25rem;display:flex}.castle-yard-empty{color:var(--text-dim);font-size:var(--text-sm);align-self:center}.castle-yard-brick{align-items:baseline;gap:var(--space-1);padding:var(--space-1) var(--space-2);border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--font-typing);font-size:var(--text-sm);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.game-stage.is-carrying .castle-section,.game-stage.is-carrying .castle-foe[data-attacker]{cursor:copy}.castle-yard-brick.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.castle-yard-brick.is-cracked{border-style:dashed}.castle-yard-brick.is-patched .castle-yard-word{-webkit-text-decoration:underline dotted var(--text-dim);text-decoration:underline dotted var(--text-dim)}.castle-yard-key,.castle-yard-strength{color:var(--text-dim);font-size:var(--text-xs)}.castle-drag{z-index:50;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:var(--accent);color:var(--bg);font-size:var(--text-sm);pointer-events:none;position:fixed;top:0;left:0}.castle-attack-line{stroke:var(--incorrect);stroke-width:1px;stroke-dasharray:2 3;opacity:.6}.castle-brick.is-wrong-kind-of-brick,.castle-brick.is-rubble,.castle-brick.is-stockpile-full,.castle-brick.is-cracked{color:var(--incorrect)}.space-canvas{border:1px solid var(--separator);border-radius:var(--radius-md);width:100%;display:block}.space-layout{gap:var(--space-4);grid-template-columns:8.5rem minmax(0,1fr) 11rem;align-items:start;display:grid}.space-field{min-width:0}.space-side,.space-belt{gap:var(--space-2);font-size:var(--text-sm);display:grid}.space-side .space-hud{gap:var(--space-1);display:grid}.space-side .space-health-bar{max-width:none}.space-stat{color:var(--text-dim);font-variant-numeric:tabular-nums;margin:0}.space-belt-head,.space-belt-keys{color:var(--text-dim);justify-content:space-between;margin:0;display:flex}.space-belt-keys{font-size:var(--text-xs)}.space-slots{gap:var(--space-1);margin:0;padding:0;list-style:none;display:grid}.space-slot{justify-content:space-between;gap:var(--space-2);padding:var(--space-1) var(--space-2);border:1px solid var(--separator);border-radius:var(--radius-sm);font-family:var(--font-typing);display:flex;position:relative;overflow:hidden}.space-slot.is-empty{color:var(--text-dim);font-family:var(--font-ui)}.space-slot.is-chosen{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.space-slot.is-mistyped{border-style:dashed}.space-slot.is-half-spent{opacity:.9;border-style:dotted}.space-slot-power{color:var(--text-dim);font-variant-numeric:tabular-nums}.space-slot-bar{background:var(--accent);transform-origin:0;height:2px;position:absolute;bottom:0;left:0;right:0}.space-powerups{gap:var(--space-1);margin-top:var(--space-2);flex-direction:column;display:flex}.space-powerup-pill{align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);border:1px solid var(--separator);background:var(--surface);color:var(--text);font-weight:600;line-height:1.3;display:inline-flex}.space-powerup-pill.is-double{border-color:var(--accent);color:var(--accent)}.space-powerup-pill.is-gatling{border-color:var(--incorrect);color:var(--incorrect)}.space-powerup-pill.is-shield{border-color:var(--correct,var(--accent));color:var(--correct,var(--accent))}.space-bomb{gap:var(--space-1);margin-top:var(--space-2);color:var(--text-dim);display:grid}.space-bomb-bar{background:var(--separator);border-radius:999px;height:6px;overflow:hidden}.space-bomb-fill{background:var(--text-dim);transform-origin:0;height:100%}.space-bomb.is-ready{color:var(--accent)}.space-bomb.is-ready .space-bomb-fill{background:var(--accent)}@media (width<=720px){.space-layout{grid-template-columns:minmax(0,1fr)}.space-side{grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));align-items:center}.space-side .space-hud{grid-column:1/-1}.space-slots{grid-template-columns:repeat(auto-fill,minmax(7rem,1fr))}}.space-canvas.is-active{cursor:none}.space-health-bar{max-width:10rem}.space-jam{color:var(--incorrect);font-weight:600}.spot-passage{font-family:var(--font-typing);font-size:var(--typing-font-size,1.5rem);line-height:var(--typing-line-height,1.6);max-height:55vh;overflow-y:auto}.spot-word{border-radius:var(--radius-sm);cursor:pointer;padding:0 1px}.spot-word.is-selected{background:var(--selection);outline:2px solid var(--accent)}.spot-word.is-false{background:color-mix(in srgb, var(--incorrect) 25%, transparent)}.spot-word.is-fixed{color:var(--correct,var(--accent));-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.spot-word.is-missed s{color:var(--incorrect)}.spot-answer{color:var(--text-dim)}.spot-repair{border-bottom:2px solid var(--accent);padding:0 2px}.spot-caret{vertical-align:text-bottom;background:var(--caret);width:2px;height:1em;margin-left:1px;display:inline-block}.spot-status{color:var(--text-dim);font-size:var(--text-sm);margin-top:var(--space-3)}.game-results a.button{text-decoration:none}.learn-view{gap:var(--space-5);display:grid}.learn-view>*{animation:view-in var(--duration-slow) var(--ease-out)}.learn-intro{max-width:40rem;color:var(--text-dim)}.learn-callout{padding:var(--space-3) var(--space-4);border-left:3px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface);font-size:var(--text-sm)}.learn-continue{align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.learn-steno{gap:var(--space-4);display:grid}.learn-stage{gap:var(--space-3);display:grid}.learn-stage-heading{font-size:var(--text-sm);color:var(--text-dim);margin:0;font-weight:500}.learn-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));display:grid}.lesson-card{gap:var(--space-1);padding:var(--space-3) var(--space-4);border:1px solid var(--separator);border-radius:var(--radius-md);background:var(--surface);color:var(--text);transition:border-color var(--duration-fast,.12s), transform var(--duration-fast,.12s);align-content:start;text-decoration:none;display:grid}a.lesson-card:hover,a.lesson-card:focus-visible{border-color:var(--accent);transform:translateY(-1px)}.lesson-card.is-locked{opacity:.5}.lesson-card-top{justify-content:space-between;gap:var(--space-2);color:var(--text-dim);font-size:var(--text-sm);font-variant-numeric:tabular-nums;display:flex}.lesson-card-title{font-weight:600}.lesson-card-keys{font-family:var(--font-typing);color:var(--text-dim);font-size:var(--text-sm)}.lesson-chip{padding:0 var(--space-2);background:var(--bg);font-size:var(--text-xs);border-radius:999px}.lesson-chip.is-mastered{background:var(--accent);color:var(--bg)}.lesson-intro{gap:var(--space-4);display:grid}.lesson-intro-title{font-size:var(--text-lg);margin:0}.lesson-new-keys{font-family:var(--font-typing)}.learn-fingers{gap:var(--space-1) var(--space-3);color:var(--text-dim);font-size:var(--text-xs);flex-wrap:wrap;justify-content:center;margin:0;padding:0;list-style:none;display:flex}.learn-fingers li{align-items:center;gap:var(--space-1);display:inline-flex}.learn-swatch{border-radius:2px;width:.8em;height:.8em}.lesson-options{gap:var(--space-3);display:grid}.lesson-start-row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.learn-keyboard{width:100%;max-width:760px;margin:0 auto}.lk-stage{justify-content:center;align-items:center;gap:var(--space-4);width:100%;display:flex}.lk-board{width:100%;max-width:560px;height:auto;font-family:var(--font-ui);flex:auto;display:block}.lk-hand{flex:0 0 84px;width:84px;max-width:14%;height:auto;display:block}@container (width<=600px){.lk-hand{display:none}}@media (width<=600px){.lk-hand{display:none}}.lk-hand-palm{fill:var(--surface);stroke:var(--separator);stroke-width:1.5px}.lk-hand-finger.finger-lp{--f:var(--finger-lp)}.lk-hand-finger.finger-lr{--f:var(--finger-lr)}.lk-hand-finger.finger-lm{--f:var(--finger-lm)}.lk-hand-finger.finger-li{--f:var(--finger-li)}.lk-hand-finger.finger-t{--f:var(--finger-t)}.lk-hand-finger.finger-ri{--f:var(--finger-ri)}.lk-hand-finger.finger-rm{--f:var(--finger-rm)}.lk-hand-finger.finger-rr{--f:var(--finger-rr)}.lk-hand-finger.finger-rp{--f:var(--finger-rp)}.lk-hand-finger{fill:color-mix(in srgb, var(--f) calc(var(--finger-fill-alpha,.3) * 100%), var(--surface));stroke:var(--f);stroke-width:1.5px;transition:opacity var(--duration-fast) var(--ease-out), fill var(--duration-fast), stroke var(--duration-fast)}.lk-hand-finger.is-off{opacity:.3}.lk-hand-finger.is-new{stroke-width:2.5px}.lk-hand-finger.is-active{fill:var(--f);stroke:var(--text);stroke-width:2.5px;opacity:1;animation:1.1s ease-in-out infinite learn-pulse}:root[data-reduce-motion=true] .lk-hand-finger.is-active{stroke-width:3px;animation:none}.lk-key rect{fill:var(--surface);stroke:var(--separator);stroke-width:1.5px;transition:opacity var(--duration-fast) var(--ease-out)}.lk-key text{fill:var(--text);pointer-events:none;font-size:15px}.lk-shift text{font-size:11px}.lk-key.finger-lp rect{--f:var(--finger-lp)}.lk-key.finger-lr rect{--f:var(--finger-lr)}.lk-key.finger-lm rect{--f:var(--finger-lm)}.lk-key.finger-li rect{--f:var(--finger-li)}.lk-key.finger-t rect{--f:var(--finger-t)}.lk-key.finger-ri rect{--f:var(--finger-ri)}.lk-key.finger-rm rect{--f:var(--finger-rm)}.lk-key.finger-rr rect{--f:var(--finger-rr)}.lk-key.finger-rp rect{--f:var(--finger-rp)}.lk-key:not(.no-finger) rect{fill:color-mix(in srgb, var(--f) calc(var(--finger-fill-alpha,.3) * 100%), var(--surface));stroke:var(--f)}.lk-key.is-off{opacity:.3}.lk-key.is-new rect{stroke-width:3px}.lk-key.is-expected rect{stroke:var(--text);stroke-width:3.5px;animation:1.1s ease-in-out infinite learn-pulse}@keyframes learn-pulse{50%{stroke-opacity:.35}}:root[data-reduce-motion=true] .lk-key.is-expected rect{stroke-width:4px;animation:none}.lk-key[data-heat="1"] rect{fill:var(--heat-1)}.lk-key[data-heat="2"] rect{fill:var(--heat-2)}.lk-key[data-heat="3"] rect{fill:var(--heat-3)}.lk-key[data-heat="4"] rect{fill:var(--heat-4)}.lk-key[data-heat="3"] text,.lk-key[data-heat="4"] text{fill:var(--bg)}.learn-no-fingers{text-align:center}.learn-runner{gap:var(--space-4);display:grid}.learn-runner-bar{align-items:baseline;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.learn-counter{color:var(--text-dim);font-family:var(--font-typing);font-variant-numeric:tabular-nums;margin-left:auto}.learn-surface{position:relative}.learn-round-note{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);background:var(--surface);text-align:center;margin:0;position:absolute;inset:auto 0 0}.learn-finger-label{text-align:center;min-height:1.5em;color:var(--text-dim);margin:0}.learn-result-numbers{font-size:var(--text-lg);font-variant-numeric:tabular-nums}.learn-result-title.is-mastered{color:var(--accent)}.learn-result-title.is-first{animation:learn-master calc(var(--duration-slow) * 3) var(--ease-out);transform-origin:0}@keyframes learn-master{0%{opacity:.2;transform:scale(.92)}60%{opacity:1;transform:scale(1.06)}}.learn-result .results-counts{text-align:left;justify-content:flex-start}.learn-needs{margin:var(--space-1) 0 0;padding-left:var(--space-5)}.learn-heat-note{text-align:center;font-size:var(--text-sm)}@media (prefers-reduced-motion:reduce){.learn-view>*{animation:none}a.lesson-card:hover,a.lesson-card:focus-visible{transform:none}}.learn-guide{align-items:center;gap:var(--space-3);min-width:0;display:flex}.learn-guide>:not(.mascot){flex:auto;min-width:0;margin:0}.learn-guide-intro{min-width:0;margin-bottom:var(--space-1);align-items:center;display:flex}.learn-guide-intro .mascot{max-width:100%}.lesson-new-keys-row{margin:0;line-height:1.5}.learn-coach-alert{align-items:center;width:100%;min-height:3.75rem;display:flex}.learn-coach-alert .mascot{max-width:min(38rem,100%)}.mascot.is-caps-lock .mascot-bubble{border-color:var(--incorrect)}.learn-guide-run{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.learn-guide-run>.mascot{grid-column:1;justify-self:start;max-width:100%}.learn-guide-run>.learn-finger-label{grid-column:2;max-width:32rem}.learn-view{container-type:inline-size}.learn-intro-row{align-items:center;gap:var(--space-5);display:flex}.learn-intro-row>.learn-intro{flex:0 40rem;margin:0}.learn-intro-row>.mascot{flex:1 1 0}@container (width<=760px){.learn-intro-row>.mascot{display:none}}.mascot{align-items:center;gap:var(--space-2);flex:none;max-width:min(24rem,55%);display:flex}.mascot-figure{border-radius:var(--radius-md);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:none;display:inline-flex}.mascot-figure.is-tappable{cursor:pointer}.mascot.is-petted .mascot-figure{cursor:grabbing}.mascot-drawing{transform-origin:50% 94%;flex:none;width:3.75rem;height:3.85rem;overflow:visible}.mascot-cap{fill:var(--surface);stroke:var(--text);stroke-width:2.5px}.mascot-top{fill:var(--bg);stroke:var(--separator);stroke-width:1.5px}.mascot-leg,.mascot-limb,.mascot-paw{fill:var(--text)}.mascot-letter{fill:var(--accent);font-family:var(--font-typing);font-size:15px;font-weight:700}.mascot-eye,.mascot-mouth,.mascot-burst path{fill:none;stroke:var(--text);stroke-linecap:round;stroke-linejoin:round}.mascot-eye{stroke-width:4.5px;transform-box:fill-box;transform-origin:50%}.mascot[data-state=happy] .mascot-eye,.mascot[data-state=sleepy] .mascot-eye,.mascot[data-state=asleep] .mascot-eye,.mascot[data-state=highfive] .mascot-eye,.mascot.is-petted .mascot-eye{stroke-width:2.25px}.mascot[data-state=wobbly] .mascot-eye:last-of-type{stroke-width:2.5px}.mascot-mouth{stroke-width:2px}.mascot-lash{fill:none;stroke:var(--text);stroke-width:1.4px;stroke-linecap:round}.mascot-bump{fill:none;stroke:var(--text);stroke-width:2px;stroke-linecap:round;opacity:.55}.mascot-burst,.mascot-heart,.mascot-zzz{display:none}.mascot[data-state=highfive] .mascot-burst,.mascot.is-petted .mascot-heart,.mascot[data-state=sleepy] .mascot-zzz,.mascot[data-state=asleep] .mascot-zzz{display:inline}.cal-swing{transform-box:view-box}.cal-swing-right{transform-origin:62.5px 30px}.cal-swing-left{transform-origin:1.5px 30px}.mascot[data-state=ready] .cal-swing-right{transform:rotate(-150deg)}.mascot[data-state=highfive] .cal-swing-right{transform:translateY(-3px)rotate(-165deg)}.mascot-burst path{stroke:var(--accent);stroke-width:2px}.mascot-heart{fill:var(--incorrect);transform-box:view-box}.mascot-z{fill:var(--text-dim);font-family:var(--font-typing);font-size:9px;font-weight:700}.mascot-body{transform-box:view-box;transform-origin:32px 62px}.mascot[data-state=asleep] .mascot-body{transform:translate(29px,-26px)rotate(-90deg)}.mascot[data-state=asleep] .mascot-zzz{transform:translate(-50px,10px)}.mascot-bubble{padding:var(--space-1) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-size:var(--text-sm);margin:0;line-height:1.35;position:relative}.mascot:not(.is-speaking) .mascot-bubble{display:none}.mascot.is-speaking .mascot-bubble{animation:fade-in var(--duration-slow) ease-out}.mascot[data-state=idle] .mascot-drawing{animation:1.6s step-end infinite cal-bob}.mascot[data-state=idle] .mascot-eye,.mascot[data-state=watching] .mascot-eye,.mascot[data-state=ready] .mascot-eye{animation:4.4s step-end infinite cal-blink}.mascot[data-state=happy] .mascot-drawing{animation:.6s step-end 2 cal-hop}.mascot[data-state=wobbly] .mascot-drawing{animation:.45s step-end cal-wobble}.mascot[data-state=sleepy] .mascot-drawing,.mascot[data-state=asleep] .mascot-drawing{animation:2.4s step-end infinite cal-breathe}.mascot[data-state=sleepy] .mascot-z,.mascot[data-state=asleep] .mascot-z{animation:2.4s steps(4,end) infinite cal-float}.mascot-z-2{animation-delay:.8s!important}.mascot-z-3{animation-delay:1.6s!important}.mascot[data-state=ready] .cal-swing-right{animation:1s step-end infinite cal-wave}.mascot[data-state=highfive] .mascot-burst{animation:.3s step-end 3 cal-flash}.mascot.is-petted:not([data-state=asleep]) .mascot-drawing{animation:.24s step-end infinite cal-purr}.mascot.is-petted .mascot-heart{animation:1.2s steps(4,end) infinite cal-heart}:root[data-reduce-motion=true] .mascot *,:root[data-reduce-motion=true] .mascot-drawing{animation:none!important}@media (prefers-reduced-motion:reduce){.mascot *,.mascot-drawing{animation:none!important}}@keyframes cal-bob{0%{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes cal-blink{0%{transform:scaleY(1)}94%{transform:scaleY(.15)}98%{transform:scaleY(1)}}@keyframes cal-hop{0%{transform:translateY(0)}33%{transform:translateY(-5px)}66%{transform:translateY(-2px)}}@keyframes cal-wobble{0%{transform:rotate(-6deg)}33%{transform:rotate(6deg)}66%{transform:rotate(-3deg)}to{transform:rotate(0)}}@keyframes cal-breathe{0%{transform:scale(1)}50%{transform:scale(1.02,.97)}}@keyframes cal-float{0%{opacity:0;transform:translate(0)}25%{opacity:1}to{opacity:0;transform:translate(3px,-8px)}}@keyframes cal-wave{0%{transform:rotate(-142deg)}50%{transform:rotate(-158deg)}}@keyframes cal-flash{0%{opacity:1}50%{opacity:0}}@keyframes cal-purr{0%{transform:translate(0)}50%{transform:translate(.6px)rotate(.6deg)}}@keyframes cal-heart{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.app-footer{position:relative}.about-cal{text-align:left;font-size:var(--text-md);position:absolute;bottom:calc(100% - .22rem);right:6%}.about-cal .mascot{flex-direction:row-reverse;align-items:flex-end;max-width:none}.about-cal .mascot-bubble{width:max-content;max-width:min(18rem,60vw);margin-bottom:var(--space-3)}.mascot-sample{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.cal-piece{stroke:var(--text);stroke-width:1.2px;stroke-linejoin:round}.cal-detail{stroke:none}.cal-glyph{font-family:var(--font-typing);paint-order:stroke;font-weight:700}.cal-piece.cal-glyph{stroke-width:1.4px}.mascot-heart-lift{transform-box:view-box}.mascot.has-hat .mascot-heart-lift{transform:translateY(-18px)}.modal-wardrobe .modal-body{height:100%;overflow:hidden}.wardrobe{gap:var(--space-5);grid-template-columns:13.5rem minmax(0,1fr);align-items:stretch;height:100%;min-height:0;display:grid;overflow:hidden}@media (width<=640px){.modal-wardrobe .modal-body{overflow-y:auto}.wardrobe{grid-template-columns:minmax(0,1fr);height:auto;overflow:visible}.wardrobe-side{height:auto;overflow:visible}.wardrobe-preview{background:var(--bg);z-index:1;position:sticky;top:0}.wardrobe-tabs{max-height:12rem}.wardrobe-main{height:auto;overflow:visible}.wardrobe-grid{max-height:none;overflow:visible}}.wardrobe-side{gap:var(--space-3);flex-direction:column;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.wardrobe-preview{flex-shrink:0;place-items:center;min-height:10rem;display:grid}.wardrobe-preview .mascot-drawing{width:7.5rem;height:7.7rem}.wardrobe-preview .mascot{flex-direction:column;max-width:100%}.wardrobe-tabs{gap:var(--space-1);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--separator) transparent;min-height:0;padding-right:var(--space-1);flex-direction:column;flex:1;display:flex;overflow-y:auto}.wardrobe-tab{justify-content:space-between;align-items:center;gap:var(--space-2);box-sizing:border-box;width:100%;padding:var(--space-1) var(--space-3);border:1px solid var(--separator);color:var(--text-dim);font:inherit;font-size:var(--text-sm);cursor:pointer;text-align:left;transition:color var(--duration-fast), border-color var(--duration-fast), background-color var(--duration-fast);background:0 0;border-radius:999px;display:flex}.wardrobe-tab:hover{color:var(--text);border-color:var(--text-dim)}.wardrobe-tab.is-active{border-color:var(--accent);color:var(--text);background:var(--surface)}.wardrobe-tab:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.wardrobe-tab-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.wardrobe-tab-count{color:var(--text-dim);font-family:var(--font-typing);font-size:var(--text-xs);font-variant-numeric:tabular-nums;white-space:nowrap;opacity:.85}.wardrobe-tab.is-active .wardrobe-tab-count{color:var(--accent);opacity:1}.wardrobe-note{text-align:center;font-size:var(--text-xs);color:var(--text-dim);flex-shrink:0;margin:0;line-height:1.35}.wardrobe-main{gap:var(--space-3);flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.wardrobe-grid{gap:var(--space-2);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--separator) transparent;min-height:0;padding-right:var(--space-1);flex:1;grid-template-columns:repeat(4,minmax(0,1fr));align-content:start;display:grid;overflow-y:auto}.wardrobe-item{justify-items:center;gap:var(--space-1);padding:var(--space-2);border:1px solid var(--separator);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-xs);cursor:pointer;display:grid;position:relative}.wardrobe-item:hover{border-color:var(--text-dim)}.wardrobe-item.is-worn{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.wardrobe-item.is-worn:after{content:"✓";color:var(--accent);position:absolute;top:2px;right:6px}.wardrobe-item.is-locked{cursor:help}.wardrobe-item.is-locked .wardrobe-thumb{opacity:.35;filter:grayscale()}.wardrobe-thumb{width:100%;height:3.5rem;overflow:hidden}.wardrobe-heart{fill:var(--incorrect)}.wardrobe-secret{fill:var(--text-dim);font-family:var(--font-typing);font-size:26px;font-weight:700}.wardrobe-item-name{text-align:center;line-height:1.2}.wardrobe-item-hint{color:var(--text-dim);font-family:var(--font-typing)}.wardrobe-status{min-height:1.4em;color:var(--text-dim);font-size:var(--text-sm);flex-shrink:0;margin:0}.wardrobe-main .form-actions{flex-shrink:0;margin-top:auto}.mascot-figure{position:relative}.mascot-figure.has-news:after{content:"";border:2px solid var(--bg);background:var(--accent);border-radius:50%;width:.55rem;height:.55rem;position:absolute;top:0;right:-2px}.wardrobe-new{padding:0 var(--space-1);border-radius:var(--radius-sm);background:var(--accent);color:var(--bg);font-size:.65rem;font-weight:600;position:absolute;top:3px;left:5px}.cal-news-note{align-items:center;gap:var(--space-2) var(--space-3);margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);font-size:var(--text-sm);animation:fade-in var(--duration-slow) ease-out;flex-wrap:wrap;display:flex}.cal-news-note p{flex:14rem;margin:0}.cal-news-cal{flex:none;width:2rem;height:2rem}.ending-cutscene{--bg:#000;--surface:#16181b;--text:#e8e6e1;--text-dim:#9d9a92;--accent:#8ab4d8;--separator:#2c2f33;z-index:9999;color:var(--text);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;opacity:0;-webkit-user-select:none;user-select:none;background:#000;grid-template-rows:1fr auto auto 1fr;grid-template-columns:minmax(0,1fr);place-items:end center;gap:1.5rem;padding:2rem 1rem;transition:opacity 2s;display:grid;position:fixed;inset:0;overflow:hidden}.ending-cutscene>*{grid-column:1}.ending-cutscene.is-dark{opacity:1}.ending-stage{grid-row:1;justify-content:center;align-items:flex-end;gap:1.5rem;min-height:150px;display:flex}.ending-figure{opacity:0;width:120px;transition:opacity 1.6s;position:relative}.ending-figure .mascot-drawing{width:120px;height:auto;overflow:visible}.ending-figure .mascot-bubble{display:none}.ending-figure.is-here{opacity:1}.ending-glint{opacity:0;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);pointer-events:none;background:#fff4c2;width:18px;height:18px;position:absolute;top:68px;left:108px}.ending-figure.has-ring .ending-glint{animation:2.4s ease-in-out infinite ending-glint}@keyframes ending-glint{0%,60%,to{opacity:0;transform:scale(.4)rotate(0)}75%{opacity:1;transform:scale(1)rotate(45deg)}}.ending-cutscene.is-reduced .ending-figure.has-ring .ending-glint{opacity:.8;animation:none;transform:scale(.7)}.ending-partner{transform:translate(60vw)}.ending-partner.is-arriving{opacity:1;transition:transform 4.6s linear,opacity .6s;transform:translate(0)}.ending-partner.is-arriving .mascot-drawing,.ending-stage.is-leaving .mascot-drawing{animation:.5s steps(2,end) infinite ending-step}@keyframes ending-step{50%{transform:translateY(-4px)}}.ending-heart{opacity:0;align-self:center;width:26px;height:26px;transition:opacity .8s,transform .8s cubic-bezier(.34,1.56,.64,1);transform:scale(.4)}.ending-heart svg{fill:#ff6b8b;width:100%;height:100%;display:block}.ending-heart.is-visible{opacity:1;transform:scale(1)}.ending-stage.is-leaving .ending-figure,.ending-stage.is-leaving .ending-heart{transition:transform 7s linear,opacity 1s 6s;transform:translate(-75vw)}.ending-caption{text-align:center;grid-row:2;max-width:36rem;min-height:1.6em;margin:0;font-size:1.125rem}.ending-speaker{color:var(--text-dim)}.ending-reply{grid-row:3;min-height:2.75rem}.ending-reply-button{border-color:var(--separator);background:var(--surface);color:var(--text);animation:.6s ease-out fade-in}.ending-message{letter-spacing:-.01em;opacity:0;grid-row:1;align-self:end;margin:0 0 3rem;font-size:1.375rem;font-weight:400;transition:opacity 2.4s}.ending-message.is-visible{opacity:1}.ending-cutscene.is-over>*{opacity:0!important;transition:opacity 4s!important}.ending-cutscene.is-reduced .ending-partner{transform:none}.ending-cutscene.is-reduced .ending-partner.is-arriving{transition:opacity 1.4s}.ending-cutscene.is-reduced .mascot-drawing{animation:none!important}.ending-cutscene.is-reduced .ending-stage.is-leaving .ending-figure,.ending-cutscene.is-reduced .ending-stage.is-leaving .ending-heart{opacity:0;transition:opacity 1.6s;transform:none}.companion-menu{z-index:1000;background:var(--surface,var(--bg));border:1px solid var(--border);border-radius:8px;flex-direction:column;min-width:140px;padding:4px;display:flex;position:fixed;box-shadow:0 4px 16px #00000040}.companion-menu-item{text-align:left;width:100%;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:6px 12px;font-size:.875rem;display:block}.companion-menu-item:hover,.companion-menu-item:focus-visible{background:var(--surface-hover,#80808026);outline:none}.companion-menu-aside{color:var(--text-dim,#888);border-top:1px solid var(--border);margin-top:4px;padding-top:6px;font-size:.8125rem;font-style:italic}.away-note{color:#3b3428;max-width:22rem;transition:transform var(--duration-base,.2s) ease, max-width var(--duration-base,.2s) ease;background:#fbf6e9;border-radius:3px;margin:.75rem 0;padding:.9rem 1rem .8rem;position:relative;transform:rotate(-1.6deg);box-shadow:0 1px 2px #0000002e,0 6px 14px #0000001f}.away-note[open]{max-width:30rem;transform:rotate(-.4deg)}.away-note-summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;font-size:.9375rem;font-style:italic;list-style:none;display:flex}.away-note-summary:before{display:none}.away-note-summary::-webkit-details-marker{display:none}.away-note-summary:hover{color:inherit}.away-note-summary:focus-visible{outline-offset:4px;border-radius:2px;outline:2px solid #3d6b8f}.away-note-pin{background:radial-gradient(circle at 35% 35%,#ff8a8a,#c0392b 70%);border-radius:50%;width:12px;height:12px;margin-left:-6px;position:absolute;top:-6px;left:50%;box-shadow:0 2px 2px #0000004d}.away-note-hint{color:#7a6e58;text-underline-offset:.2em;font-size:.8125rem;font-style:normal;text-decoration:underline}.away-note[open] .away-note-hint{visibility:hidden}.away-letter{border-top:1px dashed #d8cdb3;margin-top:.75rem;padding-top:.75rem}.away-letter-text{font-family:var(--font-typing);color:#3b3428;gap:.7em;font-size:.8125rem;line-height:1.6;display:grid}.away-letter-text p{margin:0}.learn-away-note{z-index:1}.learn-away-note[open]{max-width:22rem}.learn-away-note .away-letter{z-index:20;background:#fbf6e9;border-radius:0 0 3px 3px;margin:0;padding:.75rem 1rem 1rem;position:absolute;top:calc(100% - 1px);left:0;right:0;box-shadow:0 10px 18px #00000038}.away-letter-heart{width:18px;height:18px;margin-top:.5rem;display:block}.away-letter-heart svg{fill:#d9485f;width:100%;height:100%}.about-away-note{text-align:left;margin-left:auto}@media (prefers-reduced-motion:reduce){.away-note{transition:none}}.about-cal-pair{align-items:center;gap:8px;display:inline-flex}.modal-engagement-confirm .confirm-actions{justify-content:flex-end;gap:8px;margin-top:1.5rem;display:flex}
