: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[popover]{transition:opacity var(--duration-fast) var(--ease-out), translate var(--duration-fast) var(--ease-out), overlay var(--duration-fast) allow-discrete, display var(--duration-fast) allow-discrete}.dropdown-list[popover]:not(:popover-open){opacity:0;translate:0 -4px}.dropdown-list[data-side=above][popover]:not(:popover-open){translate:0 4px}.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:not(.setup){transition:opacity var(--duration-slow) var(--ease-out), translate var(--duration-slow) var(--ease-out), scale var(--duration-slow) var(--ease-out), overlay var(--duration-slow) allow-discrete, display var(--duration-slow) allow-discrete}dialog:not(.setup):not([open]){opacity:0;transition-duration:var(--duration-base);translate:0 6px;scale:.985}@starting-style{dialog:not(.setup)[open]{opacity:0;translate:0 10px;scale:.985}}dialog:not(.setup)::backdrop{transition:opacity var(--duration-slow) ease-out, overlay var(--duration-slow) allow-discrete, display var(--duration-slow) allow-discrete}dialog:not(.setup):not([open])::backdrop{opacity:0;transition-duration:var(--duration-base)}@starting-style{dialog:not(.setup)[open]::backdrop{opacity:0}}.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}.tooltip[popover]{transition:opacity var(--duration-fast) ease-out, overlay var(--duration-fast) allow-discrete, display var(--duration-fast) allow-discrete}.tooltip[popover]:not(:popover-open){opacity:0}@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:0}.shortcut-guide-btn{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:0;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}.today-panel,.profile-context-menu,.theme-mode-menu,.companion-menu,.game-paused,.caps-indicator,.guest-banner,.learn-round-note,.shortcut-sequence-indicator{transition:opacity var(--duration-base) var(--ease-out), translate var(--duration-base) var(--ease-out), display var(--duration-base) allow-discrete}.today-panel[hidden],.profile-context-menu[hidden],.theme-mode-menu[hidden],.companion-menu.is-leaving{opacity:0;pointer-events:none;translate:0 -4px}.game-paused[hidden],.caps-indicator[hidden],.guest-banner[hidden],.learn-round-note[hidden],.shortcut-sequence-indicator.is-leaving{opacity:0;pointer-events:none}details::details-content{transition:opacity var(--duration-base) var(--ease-out), content-visibility var(--duration-base) allow-discrete}details:not([open])::details-content{opacity:0}@starting-style{.game-paused:not([hidden]),.caps-indicator:not([hidden]),.guest-banner:not([hidden]),.learn-round-note:not([hidden]){opacity:0}.companion-menu{opacity:0;translate:0 -4px}}.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-group{align-items:center;gap:var(--space-2);display:inline-flex}.kanary-badge{border-radius:var(--radius-sm);cursor:pointer;height:1.35rem;transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);-webkit-user-select:none;user-select:none;background:repeating-linear-gradient(-45deg,#facc15 0 7px,#18181b 7px 14px);border:1px solid #00000059;justify-content:center;align-items:center;padding:2px 7px;text-decoration:none;display:inline-flex;position:relative;box-shadow:0 1px 2px #0000002e}.kanary-badge:hover{transform:translateY(-1px);box-shadow:0 3px 6px #00000040}.kanary-badge:active{transform:translateY(0)}.kanary-badge:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.kanary-badge-text{color:#facc15;font-family:var(--font-mono,ui-monospace, monospace);letter-spacing:.06em;text-transform:lowercase;background:#18181b;border-radius:2px;padding:1px 6px;font-size:.65rem;font-weight:800;line-height:1.2;display:inline-block}.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:min(calc(var(--column-width) + 80px), 100%);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);justify-content:space-between;align-items:flex-start;gap:var(--space-2) var(--space-5);flex-wrap:wrap;margin:0 auto;line-height:1.7;display:flex}.footer-column p{margin:0}.footer-start{text-align:left}.footer-end{text-align:right;margin-left:auto}@media (width<=640px){.app-footer{flex-direction:column;align-items:stretch}.footer-start,.footer-end{text-align:center;margin-left:0}}.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{z-index:1001;align-content:center;justify-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);background:var(--bg);color:var(--text);text-align:center;display:grid;position:fixed;inset:0;overflow-y:auto}.startup-failure>*{max-width:34rem;margin:0}.startup-failure-actions{justify-content:center}.startup-failure-details{text-align:left;width:100%;font-size:var(--text-xs)}.startup-failure-details summary{cursor:pointer;text-align:center;color:var(--text-dim)}.startup-failure-details pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:12rem;padding:var(--space-2);border:1px solid var(--separator);border-radius:var(--radius-sm);overflow-y:auto}@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}.footer-channel-button{font-size:inherit;color:inherit;text-underline-offset:2px;cursor:pointer;padding:0;font-family:inherit;text-decoration:underline}.footer-channel-button:hover{color:var(--accent)}.footer-update-button{font-size:inherit;color:var(--accent);text-underline-offset:2px;padding:0;text-decoration:underline}.footer-update-button:disabled{color:inherit;text-decoration:none}.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:last-child:nth-child(odd){grid-column:1/-1}.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-kanary{width:min(34rem, calc(100vw - 2 * var(--space-4)));max-width:34rem}.kanary-dialog-tape{width:100%;height:6px;margin-bottom:var(--space-3);border-radius:var(--radius-sm);background:repeating-linear-gradient(-45deg,#facc15 0 8px,#18181b 8px 16px)}.kanary-notice-body{gap:var(--space-3);font-size:var(--text-sm);color:var(--text);flex-direction:column;line-height:1.5;display:flex}.kanary-notice-body p{margin:0}.kanary-notice-body .kanary-alert{padding:var(--space-3);border-radius:var(--radius-sm);color:#000;background:#d4d4d8;border:1px solid #c4c4c8}.kanary-notice-body .kanary-alert p,.kanary-notice-body .kanary-alert strong{color:#000}.kanary-notice-body a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.kanary-notice-body a:hover{color:var(--text)}.kanary-notice-actions{justify-content:flex-end;align-items:center;gap:var(--space-3);margin-top:var(--space-2);display:flex}.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}dialog.modal-dialog.modal-whats-new{width:min(44rem, calc(100vw - 2 * var(--space-4)));max-width:44rem;height:min(85dvh,44rem);max-height:min(85dvh,44rem)}.whats-new-body{min-height:0;padding-right:var(--space-2);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.whats-new-update-card{background:var(--bg-hover,#7f7f7f14);border:1px solid var(--accent);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.whats-new-update-title{font-size:var(--text-base);margin:0;font-weight:600}.whats-new-update-meta{font-size:var(--text-xs);margin:var(--space-1) 0 0;line-height:1.4}.whats-new-update-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.whats-new-status{font-size:var(--text-xs);margin:0}.whats-new-list{gap:var(--space-3);flex-direction:column;display:flex}.whats-new-item{border-bottom:1px solid var(--separator);padding-bottom:var(--space-3)}.whats-new-item:last-child{border-bottom:none}.whats-new-item-waiting{border-left:2px solid var(--accent);padding-left:var(--space-3)}.whats-new-item-header{margin-bottom:var(--space-1);justify-content:space-between;align-items:baseline;display:flex}.whats-new-version{font-size:var(--text-sm);font-weight:600;font-family:var(--font-mono,monospace)}.whats-new-badge{font-size:var(--text-xs);color:var(--accent)}.whats-new-note{font-size:var(--text-sm);color:var(--text);margin:0;line-height:1.5}.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}.kcard{--card-radius:.8em;box-sizing:border-box;border:1px solid var(--separator);border-radius:var(--card-radius);background:var(--surface);width:20em;max-width:100%;min-height:11em;color:var(--text);isolation:isolate;font-size:15px;line-height:1.3;position:relative}.kcard-lg{font-size:18px}.kcard-md{font-size:15px}.kcard-sm{font-size:10px}.kcard-backdrop{z-index:-1;border-radius:inherit;pointer-events:none;position:absolute;inset:0}.kcard-body{box-sizing:border-box;align-items:center;gap:1.1em;min-height:11em;padding:1.2em 1.4em;display:flex}.kcard-text{gap:.25em;min-width:0;display:grid}.kcard-name{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:1.3em;font-weight:600;overflow:hidden}.kcard-meta{color:var(--text-dim);margin:0;font-size:.85em}.kcard-level{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:600}.kcard-showcase{gap:.35em;margin:.35em 0 0;padding:0;list-style:none;display:flex}.kcard-showcase .achievement-badge{width:1.9em;height:1.9em}.kcard-showcase .achievement-badge svg{width:100%;height:100%}.kcard-showcase-name{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.kcard-portrait{flex:none;place-items:center;width:5.6em;height:5.6em;display:grid;position:relative}.kcard-portrait>.avatar{z-index:1;width:4em;height:4em;box-shadow:0 0 0 .12em var(--surface), 0 0 0 .2em var(--separator);font-size:1em;position:relative}.kcard-portrait>.kcard-companion{background:var(--bg)}.kcard .kcard-companion-drawing{width:3.1em;height:auto;margin-top:.5em;overflow:visible}.kcard-portrait>.avatar.avatar-initial{width:2.5em;height:2.5em;font-size:1.6em}.kcard-ornament{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.kcard-frame-double .avatar{box-shadow:0 0 0 .1em var(--surface), 0 0 0 .18em var(--accent), 0 0 0 .28em var(--surface), 0 0 0 .34em var(--accent)}.kcard-frame-dashed .kcard-portrait:after{content:"";z-index:2;border:.14em dashed var(--accent);pointer-events:none;border-radius:50%;position:absolute;inset:.2em}.kcard-frame-square .avatar{box-shadow:0 0 0 .12em var(--surface), 0 0 0 .2em var(--text-dim), 0 .35em 0 .2em var(--separator);border-radius:.7em}.kcard-frame-square .kcard-aura{border-radius:1.2em}.kcard-frame-petals .kcard-ornament,.kcard-frame-cog .kcard-ornament{z-index:0}.kcard-ornament-leaf{fill:var(--accent)}.kcard-ornament-stem{fill:none;stroke:var(--accent);stroke-width:1px}.kcard-ornament-petal{fill:var(--heat-2)}.kcard-ornament-cog,.kcard-ornament-cog-ring{fill:var(--text-dim)}.kcard-ornament-orbit{fill:none;stroke:var(--chart-wpm);stroke-width:1.5px}.kcard-ornament-planet{fill:var(--heat-4)}.kcard-ornament-crown{fill:var(--heat-3);stroke:var(--heat-4);stroke-width:1px;stroke-linejoin:round}.kcard-aura{z-index:0;pointer-events:none;border-radius:50%;position:absolute;inset:-.3em}.kcard-aura-none .kcard-aura{display:none}.kcard-aura-soft .kcard-aura,.kcard-aura-pulse .kcard-aura{background:radial-gradient(circle, color-mix(in srgb, var(--accent) 55%, transparent) 45%, transparent 70%);filter:blur(.25em)}.kcard-aura-pulse .kcard-aura{animation:3.2s ease-in-out infinite kcard-pulse}.kcard-aura-ember .kcard-aura{background:radial-gradient(circle, var(--heat-3) 38%, color-mix(in srgb, var(--heat-1) 60%, transparent) 55%, transparent 72%);filter:blur(.3em)}.kcard-aura-halo .kcard-aura{box-shadow:0 0 .7em .25em color-mix(in srgb, var(--accent) 70%, transparent), 0 0 0 .08em var(--accent);inset:.25em}.kcard-aura-aurora .kcard-aura,.kcard-aura-prism .kcard-aura{background:conic-gradient(from 0deg, var(--accent), var(--heat-2), var(--chart-wpm), var(--heat-4), var(--accent));filter:blur(.45em);opacity:.85;animation:14s linear infinite kcard-spin;inset:-.45em}.kcard-aura-prism .kcard-aura{background:conic-gradient(from 0deg, var(--heat-1), var(--incorrect), var(--heat-4), var(--accent), var(--chart-wpm), var(--correct), var(--heat-1))}.kcard-aura-tinted{--aura-a:var(--kcard-aura-tint);--aura-b:var(--kcard-aura-tint2,var(--kcard-aura-tint))}.kcard-aura-tinted.kcard-aura-soft .kcard-aura,.kcard-aura-tinted.kcard-aura-pulse .kcard-aura{background:radial-gradient(circle, color-mix(in srgb, var(--aura-a) 60%, transparent) 30%, color-mix(in srgb, var(--aura-b) 50%, transparent) 52%, transparent 70%)}.kcard-aura-tinted.kcard-aura-ember .kcard-aura{background:radial-gradient(circle, var(--aura-a) 38%, color-mix(in srgb, var(--aura-b) 60%, transparent) 55%, transparent 72%)}.kcard-aura-blend.kcard-aura-soft .kcard-aura,.kcard-aura-blend.kcard-aura-pulse .kcard-aura,.kcard-aura-blend.kcard-aura-ember .kcard-aura{background:linear-gradient(135deg, var(--aura-a), var(--aura-b));opacity:.7;-webkit-mask:radial-gradient(circle,#000 45%,#0000 70%);mask:radial-gradient(circle,#000 45%,#0000 70%)}.kcard-aura-blend.kcard-aura-ember .kcard-aura{opacity:.9}.kcard-aura-tinted.kcard-aura-halo .kcard-aura{box-shadow:0 0 .7em .25em color-mix(in srgb, var(--aura-b) 70%, transparent), 0 0 0 .08em var(--aura-a)}.kcard-aura-tinted.kcard-aura-aurora .kcard-aura{background:conic-gradient(from 0deg, var(--aura-a), var(--aura-b), color-mix(in srgb, var(--aura-a) 40%, transparent), var(--aura-b), var(--aura-a))}.kcard-aura-tinted.kcard-aura-prism .kcard-aura{background:conic-gradient(from 0deg, var(--aura-a), var(--aura-b), var(--aura-a), var(--aura-b), var(--aura-a), var(--aura-b), var(--aura-a))}@keyframes kcard-pulse{50%{opacity:.7;transform:scale(1.12)}}@keyframes kcard-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.kcard-aura{animation:none!important}}:root[data-reduce-motion=true] .kcard-aura{animation:none!important}.kcard-border-double{border:.25em double var(--kcard-border-tint,var(--text-dim))}.kcard-border-stitch:after,.kcard-border-gilt:after,.kcard-border-corners:after{content:"";border-radius:calc(var(--card-radius) - .3em);pointer-events:none;position:absolute;inset:.4em}.kcard-border-stitch:after{border:.1em dashed var(--kcard-border-tint,var(--accent))}.kcard-border-ribbon{border-left:.55em solid var(--kcard-border-tint,var(--accent))}.kcard-border-corners:after{--tick:1.1em;--line:.14em;--corner:var(--kcard-border-tint,var(--accent));background:linear-gradient(var(--corner), var(--corner)) top left / var(--tick) var(--line), linear-gradient(var(--corner), var(--corner)) top left / var(--line) var(--tick), linear-gradient(var(--corner), var(--corner)) top right / var(--tick) var(--line), linear-gradient(var(--corner), var(--corner)) top right / var(--line) var(--tick), linear-gradient(var(--corner), var(--corner)) bottom left / var(--tick) var(--line), linear-gradient(var(--corner), var(--corner)) bottom left / var(--line) var(--tick), linear-gradient(var(--corner), var(--corner)) bottom right / var(--tick) var(--line), linear-gradient(var(--corner), var(--corner)) bottom right / var(--line) var(--tick);background-repeat:no-repeat;border-radius:0;inset:.45em}.kcard-border-keycap{border-color:var(--separator);box-shadow:0 .35em 0 var(--separator), 0 .35em 0 1px var(--separator);margin-bottom:.35em}.kcard-border-heat,.kcard-border-gilt{background:linear-gradient(var(--surface), var(--surface)) padding-box, linear-gradient(120deg, var(--heat-1), var(--heat-2), var(--heat-3), var(--heat-4)) border-box;border:.22em solid #0000}.kcard-border-gilt{background:linear-gradient(var(--surface), var(--surface)) padding-box, linear-gradient(135deg, var(--heat-4), var(--heat-2) 30%, var(--heat-4) 50%, var(--heat-2) 70%, var(--heat-4)) border-box}.kcard-border-gilt:after{border:1px solid var(--heat-3)}.kcard-border-neon{border-color:var(--kcard-border-tint,var(--accent));box-shadow:0 0 .6em color-mix(in srgb, var(--kcard-border-tint,var(--accent)) 60%, transparent), inset 0 0 .6em color-mix(in srgb, var(--kcard-border-tint,var(--accent)) 30%, transparent)}.kcard-border-midnight{border-color:var(--selection);background:linear-gradient(160deg, color-mix(in srgb, var(--selection) 60%, var(--surface)), var(--surface) 70%);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.kcard-backdrop-dots .kcard-backdrop{background:radial-gradient(var(--kcard-backdrop-tint,var(--text-dim)) .07em, transparent .09em) 0 0 / .9em .9em;opacity:.35}.kcard-backdrop-pinstripe .kcard-backdrop{background:repeating-linear-gradient(45deg, var(--kcard-backdrop-tint,var(--text-dim)) 0 1px, transparent 1px .7em);opacity:.18}.kcard-backdrop-graph .kcard-backdrop{background:linear-gradient(var(--kcard-backdrop-tint,var(--text-dim)) 1px, transparent 1px) 0 0 / 1em 1em, linear-gradient(90deg, var(--kcard-backdrop-tint,var(--text-dim)) 1px, transparent 1px) 0 0 / 1em 1em;opacity:.16}.kcard-backdrop-waves .kcard-backdrop{background:repeating-radial-gradient(circle at 0 120%, transparent 0 .8em, var(--kcard-backdrop-tint,var(--chart-wpm)) .8em .9em);opacity:.2}.kcard-backdrop-stars .kcard-backdrop{background:radial-gradient(circle, var(--text) .05em, transparent .07em) .3em .5em / 2.3em 2.1em, radial-gradient(circle, var(--accent) .07em, transparent .09em) 1.4em 1.2em / 3.1em 2.7em, radial-gradient(circle, var(--text-dim) .05em, transparent .07em) .9em .2em / 1.7em 1.9em;opacity:.55}.kcard-backdrop-confetti .kcard-backdrop{background:radial-gradient(circle, var(--heat-3) .14em, transparent .16em) .4em .6em / 2.6em 2.2em, radial-gradient(circle, var(--accent) .12em, transparent .14em) 1.5em .2em / 3.2em 2.8em, radial-gradient(circle, var(--chart-wpm) .1em, transparent .12em) .9em 1.4em / 2.2em 2.6em, radial-gradient(circle, var(--incorrect) .11em, transparent .13em) 2em .9em / 2.9em 2.3em, radial-gradient(circle, var(--heat-2) .09em, transparent .11em) .2em 1.9em / 1.9em 3.1em;opacity:.6}.kcard-stickers{z-index:3;pointer-events:none;position:absolute;inset:0}.kcard-sticker{width:2.6em;height:2.6em;translate:-50% -50%;rotate:var(--turn,0deg);scale:var(--scale,1);pointer-events:auto;filter:drop-shadow(0 .08em .1em #0000004d);position:absolute}.kcard-sticker[data-tinted] .sticker-warm,.kcard-sticker[data-tinted] .sticker-hot,.kcard-sticker[data-tinted] .sticker-soft,.kcard-sticker[data-tinted] .sticker-fresh,.kcard-sticker[data-tinted] .sticker-accent,.kcard-sticker[data-tinted] .sticker-panel{fill:var(--kcard-sticker-tint)}.kcard-sticker-art,.card-sticker-preview{width:100%;height:100%;display:block;overflow:visible}.kcard-sticker-art>*,.card-sticker-preview>*{stroke:var(--surface);stroke-width:2.4px;stroke-linejoin:round;paint-order:stroke}.sticker-warm{fill:var(--heat-3)}.sticker-hot{fill:var(--incorrect)}.sticker-soft{fill:var(--heat-2)}.sticker-fresh{fill:var(--chart-wpm)}.sticker-accent{fill:var(--accent)}.sticker-panel{fill:var(--text-dim)}.sticker-page{fill:var(--bg)}.sticker-ink{fill:var(--text);stroke-width:0!important}.kcard-sticker-art>.sticker-line,.card-sticker-preview>.sticker-line,.kcard-sticker-art>.sticker-ring,.card-sticker-preview>.sticker-ring{fill:none;stroke:var(--text);stroke-width:1.8px;stroke-linecap:round;paint-order:normal}.kcard-sticker-art>.sticker-ring,.card-sticker-preview>.sticker-ring{stroke:var(--text-dim);stroke-width:2.2px}.sticker-letter{fill:var(--text);font-family:var(--font-typing);font-size:9px;font-weight:700;stroke-width:0!important}.card-stage .kcard-sticker{cursor:grab;touch-action:none;border-radius:.4em}.card-stage .kcard-sticker.is-dragging{cursor:grabbing;scale:calc(var(--scale,1) * 1.12)}.card-stage .kcard-sticker:focus-visible{outline:2px dashed var(--accent);outline-offset:2px}.card-stage .kcard-sticker.is-selected{outline:2px dashed var(--accent);outline-offset:3px;border-radius:.4em}.kcard-sticker-controls{z-index:4;background:var(--surface);border:1px solid var(--separator);pointer-events:auto;border-radius:999px;align-items:center;gap:.15em;padding:.2em .3em;font-size:.72em;display:flex;position:absolute;translate:-50% calc(-100% - .9em);box-shadow:0 .15em .5em #00000047}.kcard-sticker-controls-left{translate:-.4em calc(-100% - .9em)}.kcard-sticker-controls-right{translate:calc(.4em - 100%) calc(-100% - .9em)}.kcard-sticker-controls-below{translate:-50% .9em}.kcard-sticker-controls-below.kcard-sticker-controls-left{translate:-.4em .9em}.kcard-sticker-controls-below.kcard-sticker-controls-right{translate:calc(.4em - 100%) .9em}.kcard-sticker-btn{width:1.7em;height:1.7em;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;padding:0;line-height:1;display:grid}.kcard-sticker-btn:hover{background:var(--selection)}.kcard-sticker-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.kcard-sticker-btn.kcard-sticker-delete{color:var(--incorrect)}.kcard-color-swatch{box-sizing:border-box;border:2px solid var(--separator);background:var(--swatch,repeating-linear-gradient(45deg, var(--surface) 0 .15em, var(--separator) .15em .3em));cursor:pointer;border-radius:50%;width:1.2em;height:1.2em;padding:0}.kcard-color-swatch[aria-pressed=true]{border-color:var(--text);box-shadow:0 0 0 .1em var(--bg), 0 0 0 .2em var(--accent)}.kcard-color-swatch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card-color-field{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.card-color-row{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.card-window{align-items:start;gap:var(--space-5);grid-template-columns:auto minmax(0,1fr);display:grid}.card-stage-column{align-content:start;gap:var(--space-3);width:360px;max-width:100%;display:grid}.card-stage{width:100%;padding:var(--space-2) 0;container-type:inline-size}.card-stage .kcard{margin-inline:auto}@container (width<=368px){.card-stage .kcard-lg{font-size:calc(5cqi - .4px)}}.card-stage-hint{margin:0}.card-controls{gap:var(--space-3);min-width:0;display:grid}.card-tabs{gap:var(--space-1);flex-wrap:wrap;display:flex}.card-tab{align-items:center;gap:var(--space-1);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;background:0 0;border-radius:999px;display:inline-flex}.card-tab:hover{color:var(--text)}.card-tab[aria-selected=true]{border-color:var(--accent);color:var(--text);box-shadow:inset 0 0 0 1px var(--accent)}.card-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card-panel{gap:var(--space-3);align-content:start;display:grid}.card-panel>.small-print{margin:0}.card-sticker-options{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(5.5rem,1fr));display:grid}.card-sticker-option{justify-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-1);border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-xs);cursor:pointer;display:grid;position:relative}.card-sticker-option:hover:not(:disabled){border-color:var(--text-dim)}.card-sticker-option .card-sticker-preview{width:2.2rem;height:2.2rem}.card-sticker-option .achievement-new{position:absolute;top:2px;right:2px}.card-sticker-option.is-locked{color:var(--text-dim);cursor:default;border-style:dashed}.card-sticker-option.is-locked .card-sticker-preview{opacity:.35;filter:grayscale()}.card-sticker-option:disabled:not(.is-locked){opacity:.6;cursor:default}.card-sticker-secret{width:2.2rem;height:2.2rem;color:var(--text-dim);place-items:center;font-size:1.2rem;display:grid}.card-showcase-options{gap:var(--space-2);flex-wrap:wrap;display:flex}.card-showcase-option{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-1) var(--space-1);border:1px solid var(--separator);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;display:inline-flex}.card-showcase-option[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.card-showcase-option:disabled{color:var(--text-dim);cursor:default}@media (width<=760px){.card-window{grid-template-columns:minmax(0,1fr)}.card-stage-column{justify-items:center;width:100%;position:static}}.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-start .setup-option{text-align:left;justify-items:start;gap:2px;display:grid}.setup-start .setup-option-detail{text-align:left;max-width:none}.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{flex-direction:column;height:100%;min-height:0;padding-bottom:0;display:flex;overflow:hidden}.achievements-container .section-pane{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.modal-dialog .achievements-container .section-pane:not([hidden]){min-height:0}.achievements-container .section-pane[hidden]{display:none}.achievements-container .pane-heading{margin:0 0 var(--space-3);flex-shrink:0}.achievements-container .achievement-list{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--separator) transparent;min-height:0;padding-right:var(--space-1);flex:1;overflow:hidden auto}.achievements-sidebar-summary{flex-shrink:0}.achievements-stat-tiles{gap:var(--space-1);margin-bottom:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.achievements-stat-tiles .stat-tile{padding:var(--space-1) var(--space-2);background:var(--surface);border:1px solid var(--separator);border-radius:var(--radius-md);text-align:center}.achievements-stat-tiles .stat-tile:first-child{padding:var(--space-2);grid-column:1/-1}.achievements-stat-tiles .stat-label{font-size:var(--text-xs);color:var(--text-dim);text-transform:lowercase;margin:0 0 2px}.achievements-stat-tiles .stat-value{font-family:var(--font-typing);font-size:var(--text-xs);color:var(--text);font-variant-numeric:tabular-nums;margin:0;font-weight:600}.achievements-stat-tiles .stat-tile:first-child .stat-value{font-size:var(--text-md);color:var(--accent)}.achievements-note{margin:var(--space-3) 0 0;padding-top:var(--space-2);border-top:1px solid var(--separator);font-size:var(--text-xs);color:var(--text-dim);text-transform:lowercase;flex-shrink:0;line-height:1.4}.achievements-complete{margin:var(--space-2) 0 0;font-size:var(--text-sm);color:var(--accent);flex-shrink:0;font-weight:500}.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,.achievements-container .section-pane{height:auto;max-height:none;overflow:visible}.achievements-container .section-nav-list{max-height:12rem}.achievements-container .section-panes,.achievements-container .section-pane,.achievements-container .achievement-list{flex:none}.achievements-container .achievement-list{height:auto;max-height:none;overflow:visible}}.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-groups{align-items:start;gap:var(--space-4) var(--space-5);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));display:grid}.token-group{gap:var(--space-1);border:0;min-width:0;margin:0;padding:0;display:grid}.token-row{align-items:center;gap:var(--space-2);padding:2px var(--space-1) 2px var(--space-2);border-radius:var(--radius-sm);transition:background-color var(--duration-fast);grid-template-columns:minmax(0,1fr) auto 5.5rem;display:grid}.token-row:hover,.token-row.is-hot,.token-row.is-open{background:var(--surface)}.token-row .setting-label{overflow-wrap:anywhere}.contrast-report{columns:2 16rem;column-gap:var(--space-5)}.contrast-report li{break-inside:avoid}.decorations-hint{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.decorations-hint p{margin:0}.colour-swatch-button{border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;width:2.4rem;height:1.8rem;padding:3px}.colour-swatch-button:hover,.colour-swatch-button[aria-expanded=true]{border-color:var(--text-dim)}.colour-swatch-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.colour-swatch-fill{background:var(--swatch);border-radius:2px;width:100%;height:100%;display:block;box-shadow:inset 0 0 0 1px #80808040}.colour-popover{z-index:1000;gap:var(--space-3);padding:var(--space-3);box-sizing:border-box;background:var(--bg);color:var(--text);border:1px solid var(--separator);border-radius:var(--radius-md);grid-template-columns:minmax(0,1fr);margin:0;display:grid;position:fixed;inset:auto;box-shadow:0 16px 48px #00000038}.colour-popover[popover]{transition:opacity var(--duration-base) var(--ease-out), translate var(--duration-base) var(--ease-out), overlay var(--duration-base) allow-discrete, display var(--duration-base) allow-discrete}.colour-popover[popover]:not(:popover-open){opacity:0;display:none;translate:0 -4px}@starting-style{.colour-popover:popover-open{opacity:0;translate:0 -4px}}.colour-header{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.colour-title{font-size:var(--text-sm);margin:0;font-weight:600}.colour-close{padding:0 var(--space-1);color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:1.25rem;line-height:1}.colour-close:hover{color:var(--text)}.colour-area{border-radius:var(--radius-sm);background:linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, var(--hue-colour));cursor:crosshair;touch-action:none;height:140px;position:relative}.colour-hue{cursor:ew-resize;touch-action:none;background:linear-gradient(90deg,red,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);border-radius:6px;height:12px;position:relative}.colour-area-thumb,.colour-hue-thumb{background:var(--picked);pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;translate:-50% -50%;box-shadow:0 0 0 1px #00000080,inset 0 0 0 1px #0000004d}.colour-hue-thumb{background:var(--hue-colour);top:50%}.colour-area:focus-visible,.colour-hue:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.colour-row{align-items:center;gap:var(--space-2);display:flex}.colour-compare{border:1px solid var(--separator);border-radius:var(--radius-sm);flex:none;width:2.4rem;height:1.6rem;display:inline-flex;overflow:hidden}.colour-compare>span{flex:1}.colour-compare-before{background:var(--before)}.colour-compare-now{background:var(--picked)}.colour-hex{width:0;min-width:0;font-family:var(--font-typing);font-size:var(--text-sm);flex:1 1 0}.colour-dropper{border:1px solid var(--separator);border-radius:var(--radius-sm);width:1.8rem;height:1.6rem;color:var(--text-dim);cursor:pointer;background:0 0;flex:none;place-items:center;padding:0;display:inline-grid}.colour-dropper:hover{color:var(--text);border-color:var(--text-dim)}.colour-dropper svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.colour-quick{flex-wrap:wrap;gap:4px;display:flex}.colour-chip{border:1px solid var(--separator);background:var(--chip);cursor:pointer;border-radius:3px;width:18px;height:18px;padding:0}.colour-chip:hover{transform:scale(1.12)}.colour-chip[aria-pressed=true]{outline:2px solid var(--text);outline-offset:1px}.colour-chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.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[aria-expanded=true] .dropdown-chevron{transform:translateY(.2em)rotate(225deg)}.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;margin:0;display:flex;position:fixed;inset:auto;overflow:auto;box-shadow:0 16px 48px #00000038}.theme-picker-popover[popover]{transition:opacity var(--duration-base) var(--ease-out), translate var(--duration-base) var(--ease-out), overlay var(--duration-base) allow-discrete, display var(--duration-base) allow-discrete}.theme-picker-popover[popover]:not(:popover-open){opacity:0;display:none;translate:0 -4px}@starting-style{.theme-picker-popover:popover-open{opacity:0;translate:0 -4px}}.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-icon-slot{display:flex}.theme-mode-trigger svg{width:1.15rem;height:1.15rem;display:block}.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);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)}.library-results{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.library-results:empty{display:none}.library-result .dataset-chips,.library-result .dataset-details,.library-authors{margin-left:0}.library-authors{margin-top:0}.library-note:empty,.library-status:empty{display:none}.library-others>summary{cursor:pointer}.library-list{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.library-list:empty{display:none}.library-added{align-items:baseline;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.library-added .chip-button{margin-left:auto}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-editor-top{align-items:start;gap:var(--space-3) var(--space-5);padding:var(--space-2) 0;background:var(--bg);grid-template-columns:auto minmax(0,1fr);display:grid}@media (height>=760px) and (width>=641px){.theme-editor-top{z-index:1;position:sticky;top:0}}.theme-sample-column{gap:var(--space-2);width:280px;max-width:100%;display:grid}.theme-sample-caption{margin:0}.theme-editor-fields{gap:var(--space-2);min-width:0;display:grid}.theme-editor-fields .setting-row{grid-template-columns:minmax(0,1fr) minmax(0,11rem);padding:0}.theme-editor-fields .text-input,.theme-editor-fields .dropdown{box-sizing:border-box;width:100%;min-width:0}@media (width<=640px){.theme-editor-top{grid-template-columns:minmax(0,1fr)}.theme-sample-column{width:100%}}.theme-buddy{align-items:flex-end;gap:var(--space-2);min-height:64px;margin-top:var(--space-1);display:flex}.theme-buddy-figure{flex:none;display:inline-flex}.theme-buddy-drawing{width:52px;height:auto;overflow:visible}.theme-buddy-bubble{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);background:var(--surface);max-width:22rem;color:var(--text);font-size:var(--text-sm);opacity:0;transition:opacity var(--duration-base) var(--ease-out), translate var(--duration-base) var(--ease-out);line-height:1.4;position:relative;translate:0 3px}.theme-buddy.is-speaking .theme-buddy-bubble{opacity:1;translate:0}@media (prefers-reduced-motion:reduce){.theme-buddy-bubble{transition:none}}:root[data-reduce-motion=true] .theme-buddy-bubble{transition:none}.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}dialog.modal-dialog.modal-legal{width:min(44rem, calc(100vw - 2 * var(--space-4)));max-width:44rem;height:min(85dvh,44rem);max-height:min(85dvh,44rem)}.legal-page{max-width:38rem;line-height:1.6}.legal-page p{margin:0 0 var(--space-3)}.legal-updated{font-size:var(--text-xs)}.legal-heading{margin:var(--space-4) 0 var(--space-2);font-size:var(--text-md)}.legal-short{margin:0 0 var(--space-5);padding-left:var(--space-5)}.legal-short li+li{margin-top:var(--space-2)}.legal-full{border-top:1px solid var(--separator);padding-top:var(--space-3)}.legal-full>summary{cursor:pointer;color:var(--accent);width:fit-content}.legal-full[open]>summary{margin-bottom:var(--space-3)}.legal-section h4{margin:var(--space-4) 0 var(--space-1);font-size:var(--text-sm)}.legal-page a{color:var(--accent);text-underline-offset:2px;overflow-wrap:anywhere}.legal-others{margin-top:var(--space-5);font-size:var(--text-sm)}dialog.modal-dialog.modal-folder-restore{width:min(38rem, calc(100vw - 2 * var(--space-4)));max-width:38rem}.modal-folder-restore .modal-body>*+*{margin-top:var(--space-3)}.folder-restore-list{gap:var(--space-2);max-height:18rem;padding:var(--space-2) 0;border-block:1px solid var(--separator);display:grid;overflow-y:auto}.folder-restore-item{align-items:baseline;gap:var(--space-2);cursor:pointer;line-height:1.4;display:flex}.folder-restore-item input{flex:none}.folder-restore-failed{padding-left:var(--space-5);color:var(--text-dim);font-size:var(--text-sm);margin:0}dialog.modal-dialog.modal-race{width:min(32rem, calc(100vw - 2 * var(--space-4)));max-width:32rem}.modal-race .modal-body>*+*{margin-top:var(--space-3)}.race-notice{padding:var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md)}.race-join{gap:var(--space-2);align-items:center;display:flex}.race-code-input{text-transform:uppercase;letter-spacing:.2em;width:8rem;font-family:var(--font-typing)}.race-code{font-size:var(--text-md)}.race-code strong{font-family:var(--font-typing);letter-spacing:.25em;font-size:1.6rem}.race-players{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(12.5rem,1fr));margin:0;padding:0;list-style:none;display:grid}.race-player{gap:var(--space-1);justify-items:start;display:grid}.race-player .kcard{width:100%;font-size:10px}.race-player-status{font-size:var(--text-sm);margin:0}.race-player.is-you .race-player-name{font-weight:700}.race-player.is-gone{opacity:.55}.race-lengths{gap:var(--space-4);display:flex}.race-track{margin:0 auto var(--space-4);width:100%;max-width:var(--column-width);gap:var(--space-2);display:grid}.race-track[hidden]{display:none}.race-countdown{font-size:var(--text-md);color:var(--accent);margin:0}.race-track-rows{gap:var(--space-1);margin:0;padding:0;list-style:none;display:grid}.race-row{gap:var(--space-2);font-size:var(--text-sm);color:var(--text-dim);grid-template-columns:minmax(4rem,9rem) 1fr minmax(4.5rem,auto);align-items:center;display:grid}.race-row.is-you{color:var(--text);font-weight:700}.race-row.is-gone{opacity:.5}.race-row-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.race-row-stat{text-align:right;font-variant-numeric:tabular-nums}.race-bar{background:var(--separator);border-radius:3px;height:6px;display:block;overflow:hidden}.race-bar-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .12s linear;display:block}.race-row:not(.is-you) .race-bar-fill{opacity:.55}.games-race{margin-top:var(--space-5);text-align:center;font-size:var(--text-sm)}@media (prefers-reduced-motion:reduce){.race-bar-fill{transition:none}}.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-setup-body{align-items:start;gap:var(--space-5) var(--space-6);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.game-setup-main{gap:var(--space-4);align-content:start;display:grid}@media (width<=720px){.game-setup-body{grid-template-columns:minmax(0,1fr)}}.game-setup-demo{gap:var(--space-2);border-radius:var(--radius-md);margin:0;display:grid}.game-setup-demo:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.game-setup-demo-caption{font-size:var(--text-xs);color:var(--text-dim);text-align:right;transition:opacity var(--duration-base) var(--ease-out)}.game-setup-demo:hover .game-setup-demo-caption,.game-setup-demo:focus-within .game-setup-demo-caption{opacity:0}.game-demo{padding:var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-md);background:var(--bg);font-size:var(--text-sm);pointer-events:none;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.game-demo:not(.is-playing) *{animation-play-state:paused!important}.game-demo .game-stage{gap:var(--space-2);display:grid}.game-demo .castle-layout{grid-template-columns:minmax(0,1fr)}.game-demo .castle-side,.game-demo .space-side,.game-demo .space-belt{display:none}.game-demo .space-layout{grid-template-columns:minmax(0,1fr)}.game-demo .space-canvas{border:0}.game-demo .castle-svg{min-height:0}.game-demo .spot-hud .text-button{display:none}.game-demo .feed-creature{width:6rem;height:6rem}.game-demo .spot-passage{font-size:var(--text-md);max-height:14rem;overflow:hidden}.game-demo.is-compact{height:8.5rem;padding:var(--space-2);margin-bottom:var(--space-1);place-items:center;display:grid}.game-demo.is-compact .game-stage{width:100%}.game-demo.is-compact .castle-hud,.game-demo.is-compact .space-status,.game-demo.is-compact .spot-hud,.game-demo.is-compact .spot-status,.game-demo.is-compact .feed-status,.game-demo.is-compact .feed-bank-row,.game-demo.is-compact .feed-need{display:none}.game-demo.is-compact .castle-svg{max-height:7.5rem;margin:0 auto}.game-demo.is-compact .space-canvas{max-height:7.5rem}.game-demo.is-compact .feed-scene{text-align:left;flex-direction:row;justify-content:center}.game-demo.is-compact .feed-creature{width:5rem;height:5rem}.game-demo.is-compact .spot-passage{font-size:var(--text-sm);max-height:7.5rem;line-height:1.5}.powerup-tray{gap:var(--space-1);flex-direction:column;display:flex}.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}.powerup-pill.is-double{border-color:var(--accent);color:var(--accent)}.powerup-pill.is-gatling{border-color:var(--incorrect);color:var(--incorrect)}.powerup-pill.is-shield{border-color:var(--correct,var(--accent));color:var(--correct,var(--accent))}.powerup-head{margin-top:var(--space-1);color:var(--text-dim);font-size:var(--text-xs)}.powerup-store{gap:var(--space-1);flex-wrap:wrap;display:flex}.powerup-slot{min-width:2.2rem;min-height:1.6rem;padding:1px var(--space-2);border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-xs);cursor:pointer;align-items:center;gap:2px;display:inline-flex}.powerup-slot.is-empty{cursor:default;background:0 0;border-style:dashed}.powerup-slot kbd{color:var(--text-dim);font-size:.7rem}.powerup-pill.is-automaton,.powerup-pill.is-homing,.powerup-pill.is-mortar,.powerup-pill.is-mason{border-color:var(--accent);color:var(--text)}.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-typed-row{justify-content:center;align-items:baseline;gap:0 var(--space-3);flex-wrap:wrap;display:flex}.game-typed-row .game-typed{margin-top:var(--space-3)}.game-strength{font-size:var(--text-xs);color:var(--text-dim);font-variant-numeric:tabular-nums}.game-strength.is-met{color:var(--accent)}.game-controls .type-hints.is-armed{color:var(--text)}.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)}.feed-hint{fill:var(--text-dim);opacity:.55;font-family:var(--font-typing);font-size:10px}.buffet-label,.buffet-table-label{color:var(--text-dim);font-size:var(--text-sm)}.buffet-satisfaction{position:relative;overflow:visible}.buffet-satisfaction .feed-bank-fill{border-radius:4px}.buffet-floor{background:var(--incorrect);width:2px;position:absolute;top:-4px;bottom:-4px}.buffet-guests{gap:var(--space-4);margin:var(--space-4) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.buffet-guest{align-items:center;gap:var(--space-1) var(--space-2);max-width:18rem;padding:var(--space-2) var(--space-3);border:1px solid var(--separator);border-radius:var(--radius-sm,6px);flex:13rem;grid-template-rows:1fr auto;grid-template-columns:auto 1fr;display:grid}.buffet-creature{grid-row:1/3;width:3.5rem;height:3.5rem}.buffet-guest[data-mood=urgent] .feed-body,.buffet-guest[data-mood=critical] .feed-body{stroke:var(--incorrect)}.buffet-guest[data-look="1"] .feed-body{fill:color-mix(in srgb, var(--accent) 18%, var(--surface))}.buffet-guest[data-look="2"] .feed-body{fill:color-mix(in srgb, var(--text) 10%, var(--surface))}.buffet-guest[data-look="3"] .feed-body{fill:color-mix(in srgb, var(--accent) 8%, var(--bg))}.buffet-order{font-family:var(--font-typing);font-size:var(--text-xs);color:var(--accent);margin:0;padding:0;list-style:none}.buffet-item.is-done{color:var(--text-dim);text-decoration:line-through}.buffet-item-count{color:var(--text-dim)}.buffet-patience{background:var(--separator);border-radius:2px;height:4px;overflow:hidden}.buffet-patience-fill{background:var(--text-dim);transform-origin:0;height:100%}.buffet-patience.is-low .buffet-patience-fill{background:var(--incorrect)}.buffet-empty{margin-top:var(--space-4);color:var(--text-dim)}.buffet-table-row{align-items:baseline;gap:var(--space-2) var(--space-3);min-height:2.2rem;margin-top:var(--space-4);flex-wrap:wrap;display:flex}.buffet-table{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.buffet-dish{padding:0 var(--space-2);border-radius:var(--radius-sm,6px);background:var(--surface);font-family:var(--font-typing)}.buffet-dish.is-burnt{color:var(--text-dim);-webkit-text-decoration:underline wavy var(--incorrect);text-decoration:underline wavy var(--incorrect)}.buffet-dish.is-stale{opacity:.5}.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)}.castle-catapult-frame{stroke:var(--text-dim);stroke-width:2px;stroke-linecap:round}.castle-catapult-wheel{fill:var(--bg);stroke:var(--text-dim);stroke-width:1.5px}.castle-boulder{fill:var(--text-dim)}.castle-boulder.is-flying{fill:var(--incorrect)}.castle-aim-arc{fill:none;stroke:var(--incorrect);stroke-width:1.5px;stroke-dasharray:3 4;pointer-events:none}.castle-aim-mark{fill:none;stroke:var(--incorrect);stroke-width:1.5px;pointer-events:none}.castle-stun-star{fill:var(--accent);text-anchor:middle;font-size:7px}:root:not([data-reduce-motion=true]) .castle-stun{transform-box:fill-box;transform-origin:50%;animation:1.2s linear infinite castle-stun-spin}@keyframes castle-stun-spin{to{transform:rotate(1turn)}}.castle-powerups{margin-top:var(--space-3)}.castle-brick.is-powerup{color:var(--accent)}.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-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-powerups{flex-flow:wrap;grid-column:1/-1;align-items:center;margin-top:0}.space-powerups .powerup-head{display:none}}.space-canvas.is-active{cursor:none}.space-health-bar{max-width:10rem}.space-jam{color:var(--incorrect);font-weight:600}.spot-source{margin-bottom:var(--space-2);color:var(--text-dim);font-size:var(--text-sm)}.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);cursor:text;white-space:pre;padding:0 2px}.spot-caret{vertical-align:text-bottom;background:var(--caret);width:2px;height:1em;margin:0 -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,.mascot.is-poked .mascot-eye,.mascot.is-tickled .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,.mascot-zzz-asleep{display:none}.mascot[data-state=highfive] .mascot-burst,.mascot.is-petted .mascot-heart,.mascot[data-state=sleepy] .mascot-zzz,.mascot[data-state=dozing] .mascot-zzz,.mascot[data-state=asleep] .mascot-zzz-asleep{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] .cal-letter{display:none}.mascot-zzz-asleep .mascot-z{fill:var(--accent);font-family:"Atkinson Hyperlegible Mono", var(--font-typing)}.mascot[data-state=dozing] .mascot-z{fill:var(--accent)}.mascot-zzz-asleep .mascot-z-2{font-size:11px}.mascot-zzz-asleep .mascot-z-3{font-size:13.5px}.mascot-arm-target{fill:#0000;display:none}.mascot.is-arm-hanging[data-state=asleep] .mascot-arm-target{cursor:pointer;display:inline}.mascot.is-arm-hanging[data-state=asleep] .cal-swing-left{transform:translate(3.5px)rotate(90deg)}.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);transition:opacity var(--duration-slow) ease-out, display var(--duration-slow) allow-discrete;margin:0;line-height:1.35;position:relative}.mascot:not(.is-speaking) .mascot-bubble{opacity:0;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=dozing] .mascot-drawing,.mascot[data-state=asleep] .mascot-drawing{animation:2.4s step-end infinite cal-breathe}.mascot.is-arm-hanging[data-state=asleep] .cal-swing-left{animation:2.4s step-end infinite cal-dangle}.mascot[data-state=sleepy] .mascot-z,.mascot[data-state=dozing] .mascot-z{animation:2.4s steps(4,end) infinite cal-float}.mascot[data-state=asleep] .mascot-zzz-asleep .mascot-z{animation:2.4s steps(4,end) infinite backwards cal-float-screen}.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}.mascot.is-poked .mascot-drawing{animation:.36s step-end cal-jolt}.mascot.is-tickled .mascot-drawing{animation:.2s step-end infinite cal-wriggle}.mascot.is-stirring .mascot-drawing{animation:.5s step-end infinite cal-wriggle}:root[data-reduce-motion=true] .mascot *,:root[data-reduce-motion=true] .mascot-drawing{animation:none!important}:root[data-reduce-motion=true] .mascot-zzz-asleep .mascot-z-1{opacity:.5}:root[data-reduce-motion=true] .mascot-zzz-asleep .mascot-z-2{opacity:.75}@media (prefers-reduced-motion:reduce){.mascot *,.mascot-drawing{animation:none!important}.mascot-zzz-asleep .mascot-z-1{opacity:.5}.mascot-zzz-asleep .mascot-z-2{opacity:.75}}@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-float-screen{0%{opacity:0;transform:translate(0)}25%{opacity:1}to{opacity:0;transform:translate(.5px,-1.5px)}}@keyframes cal-dangle{0%{transform:translate(3.5px)rotate(90deg)}50%{transform:translate(3.5px)rotate(83deg)}}@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-jolt{0%{transform:translateY(0)scale(1)}25%{transform:translateY(1px)scale(1.06,.9)}50%{transform:translateY(-4px)scale(.96,1.05)}75%{transform:translateY(-1px)}}@keyframes cal-wriggle{0%{transform:rotate(-4deg)translateY(-1px)}50%{transform:rotate(4deg)translateY(0)}}@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}
