:root{color-scheme:dark;--bg: #323437;--surface: #2c2e31;--line: #414448;--text: #d1d0c5;--muted: #7a7c80;--caret: #e2b714;--main: #e2b714;--on-main: #323437;--on-caret: #323437;--confirm: var(--text);--mistake: #7b7d80;--error: #ca4754;--error-extra: #7e2a33;--colorful-error: #ca4754;--colorful-error-extra: #7e2a33;--typed-correct: var(--text);--soft-error: var(--mistake);--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;--latin-practice-font: "SFMono-Regular", "Cascadia Mono", "Cascadia Code", "Segoe UI Mono", Consolas, ui-monospace, monospace;font-family:var(--font-sans)}body[data-platform=windows]{--font-sans: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;--font-mono: "Cascadia Mono", "Cascadia Code", Consolas, monospace;--latin-practice-font: "Cascadia Mono", "Cascadia Code", "Segoe UI Mono", Consolas, ui-monospace, monospace}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;font-family:var(--font-sans);background-color:var(--bg);color:var(--text);scrollbar-gutter:stable;transition:background-color .24s ease,color .24s ease}body[data-theme="9009"]{color-scheme:light}button{font:inherit}.app-shell{width:min(1120px,calc(100vw - 32px));min-height:100vh;margin:0 auto;padding:28px 0 48px;color:var(--text);background-color:var(--bg);transition:background-color .24s ease,color .24s ease}body[data-theme=olivia],.app-shell[data-theme=olivia]{--bg: #302c2d;--surface: #393335;--line: #51484a;--text: #f1d4cc;--muted: #ad8b8a;--caret: #e6baaf;--main: #e6baaf;--on-main: #302c2d;--on-caret: #302c2d;--confirm: var(--text);--mistake: #b79b91;--error: #d58a8a;--error-extra: #8f5656;--colorful-error: #e88989;--colorful-error-extra: #b46262;--typed-correct: var(--text)}body[data-theme=modern_dolch],.app-shell[data-theme=modern_dolch]{--bg: #2d2e30;--surface: #242527;--line: #45494d;--text: #e3e6eb;--muted: #54585c;--caret: #7eddd3;--main: #7eddd3;--on-main: #242527;--on-caret: #242527;--confirm: #7eddd3;--mistake: #9aa2aa;--error: #d36a7b;--error-extra: #994154;--colorful-error: #d36a7b;--colorful-error-extra: #994154;--typed-correct: var(--confirm)}body[data-theme=catppuccin],.app-shell[data-theme=catppuccin]{--bg: #1e1e2e;--surface: #181825;--line: #45475a;--text: #cdd6f4;--muted: #7f849c;--caret: #89b4fa;--main: #cba6f7;--on-main: #181825;--on-caret: #181825;--confirm: #a6e3a1;--mistake: #a6adc8;--error: #f38ba8;--error-extra: #eba0ac;--colorful-error: #f38ba8;--colorful-error-extra: #eba0ac;--typed-correct: var(--confirm)}body[data-theme=miami_nights],.app-shell[data-theme=miami_nights]{--bg: #18181a;--surface: #0f0f10;--line: #315f63;--text: #ffffff;--muted: #47bac0;--caret: #e4609b;--main: #e4609b;--on-main: #18181a;--on-caret: #18181a;--confirm: #47bac0;--mistake: #a0a3ab;--error: #fff591;--error-extra: #b6af68;--colorful-error: #fff591;--colorful-error-extra: #b6af68;--typed-correct: var(--main)}body[data-theme=alpine],.app-shell[data-theme=alpine]{--bg: #666179;--surface: #756d8a;--line: #938aa8;--text: #ffffff;--muted: #c8c0df;--caret: #ffffff;--main: #ffffff;--on-main: #4f4c60;--on-caret: #4f4c60;--confirm: #d8d0f0;--mistake: #e3dcf5;--error: #e32b2b;--error-extra: #a62626;--colorful-error: #e32b2b;--colorful-error-extra: #a62626;--typed-correct: var(--confirm)}body[data-theme=oblivion],.app-shell[data-theme=oblivion]{--bg: #313231;--surface: #3a3b3b;--line: #4a4d4d;--text: #f7f5f1;--muted: #5d6263;--caret: #a5a096;--main: #a5a096;--on-main: #313231;--on-caret: #313231;--confirm: #c9c4b8;--mistake: #8d9494;--error: #dd452e;--error-extra: #9e3423;--colorful-error: #dd452e;--colorful-error-extra: #9e3423}body[data-theme="9009"],.app-shell[data-theme="9009"]{--bg: #dfdbd0;--surface: #cbc5b6;--line: #b8b09f;--text: #242420;--muted: #858276;--caret: #5f825f;--main: #242420;--on-main: #dfdbd0;--on-caret: #242420;--confirm: #5f825f;--mistake: #777466;--error: #ad675f;--error-extra: #874f49;--colorful-error: #ad675f;--colorful-error-extra: #874f49;--typed-correct: var(--confirm);--soft-error: var(--error)}.top-bar{min-height:44px;display:grid;grid-template-columns:minmax(150px,1fr) auto minmax(150px,1fr);align-items:center;gap:16px;color:var(--muted);font-family:var(--font-mono)}.brand{border:0;padding:0;color:var(--text);background:transparent;cursor:pointer;font:inherit;text-align:left}.brand:hover{color:var(--main)}.brand:focus-visible{outline:2px solid color-mix(in srgb,var(--main) 72%,transparent);outline-offset:4px;border-radius:4px}.mode-label,.eyebrow{color:var(--main)}.mode-label{justify-self:center}.top-actions{justify-self:end;min-width:0;display:inline-flex;align-items:center;justify-content:flex-end;gap:10px}.theme-controls{position:relative;display:inline-flex;align-items:center;max-width:100%}.effects-controls{position:relative;display:inline-flex;align-items:center}.theme-trigger{width:148px;min-height:34px;min-width:0;border:1px solid var(--line);border-radius:6px;padding:0 10px;color:var(--muted);background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:8px;overflow:hidden;white-space:nowrap;transition:border-color .2s ease,color .2s ease,background-color .2s ease}.theme-trigger svg{flex:0 0 auto}.theme-trigger-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.theme-trigger:hover{border-color:color-mix(in srgb,var(--main) 42%,var(--line));color:var(--text)}.theme-trigger:focus-visible,.toolbar-button:focus-visible,.home-changelog-trigger:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.source-option:focus-visible,.mini-button:focus-visible,.icon-text-button:focus-visible,.custom-field textarea:focus-visible,.custom-field input:focus-visible,.custom-draft-row input:focus-visible{outline:2px solid color-mix(in srgb,var(--main) 78%,transparent);outline-offset:3px}.toolbar-button{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:6px;padding:0 10px;color:var(--muted);background:transparent;cursor:pointer}.restart-slot{width:84px}.restart-slot.is-layout-placeholder{visibility:hidden;pointer-events:none}.toolbar-button.is-active{border-color:color-mix(in srgb,var(--main) 72%,var(--line));color:var(--text);background:color-mix(in srgb,var(--main) 12%,transparent)}.icon-toolbar-button{width:34px;padding:0}.effects-panel,.theme-panel{position:absolute;z-index:20;top:calc(100% + 10px);right:0;width:min(340px,calc(100vw - 32px));display:grid;gap:8px;border:1px solid color-mix(in srgb,var(--line) 68%,transparent);border-radius:8px;padding:10px;background:var(--surface);box-shadow:0 12px 28px color-mix(in srgb,#000 18%,transparent);transform-origin:top right;animation:panel-enter .15s cubic-bezier(.2,.68,.18,1) both}.effects-panel.is-panel-closing,.theme-panel.is-panel-closing{animation:panel-exit .14s ease-in both}.theme-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.effect-option{position:relative;min-height:58px;display:grid;gap:4px;overflow:hidden;border:1px solid transparent;border-radius:6px;padding:10px 12px;color:var(--muted);background:transparent;cursor:pointer;text-align:left;transition:color .16s ease,transform .19s linear}.home-changelog-trigger svg{flex:0 0 auto}.effect-option:before,.theme-option:before{position:absolute;inset:0;z-index:0;content:"";border-radius:inherit;opacity:0;pointer-events:none;transform:translate3d(-8px,0,0) scaleX(.96);transform-origin:left center;transition:opacity .19s ease,transform .22s linear}.effect-option:before{background:color-mix(in srgb,var(--main) 8%,var(--surface))}.effect-option:hover{color:var(--text);transform:translateY(-1px)}.effect-option:hover:before,.effect-option.is-active:before,.theme-option:hover:before,.theme-option.is-active:before{opacity:1;transform:translateZ(0) scaleX(1)}.effect-option:active{transform:translateY(0) scale(.99)}.effect-option.is-active{color:var(--text)}.effect-option.is-active:hover{transform:translateY(-1px)}.effect-option-title,.effect-option-description{position:relative;z-index:1}.effect-option-title{color:var(--text);transition:color .16s ease}.effect-option.is-active .effect-option-title{color:var(--main)}.effect-option-description{font-size:12px;line-height:1.45}.theme-option{position:relative;min-height:58px;display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:10px;overflow:hidden;border:1px solid transparent;border-radius:6px;padding:8px;color:var(--preview-swatch-2);background:var(--preview-bg);cursor:pointer;text-align:left;min-width:0;transition:transform .19s linear,filter .16s ease}.theme-option:before{background:color-mix(in srgb,var(--preview-swatch-1) 11%,var(--preview-bg))}.theme-option-label{position:relative;z-index:1;min-width:0;overflow-wrap:anywhere;line-height:1.15;transition:color .16s ease}.theme-option:hover{filter:brightness(1.06);transform:translateY(-1px)}.theme-option:active{transform:translateY(0) scale(.99)}.theme-option.is-active{filter:brightness(1.04)}.theme-option.is-active .theme-option-label{color:var(--preview-swatch-1)}.theme-option.is-active:hover{transform:translateY(-1px)}.theme-swatch{position:relative;z-index:1;height:30px;display:grid;grid-template-columns:1.1fr .95fr .85fr;overflow:hidden;border-radius:4px;background:var(--preview-bg)}.theme-swatch span:nth-child(1){background:var(--preview-swatch-1)}.theme-swatch span:nth-child(2){background:var(--preview-swatch-2)}.theme-swatch span:nth-child(3){background:var(--preview-swatch-3)}.start-panel{display:grid;gap:16px;padding-top:18vh}.view-surface{animation:view-enter .22s ease-out both;transform-origin:50% 18px}.view-surface.is-view-exiting{animation:view-exit .14s ease-in both}.eyebrow,.intro-copy{margin:0;color:var(--muted)}h1{margin:0;font-size:clamp(44px,8vw,92px);line-height:1;letter-spacing:0}.intro-copy{max-width:680px;font-size:18px;line-height:1.7}.primary-button{width:fit-content;min-height:44px;border:1px solid var(--main);border-radius:6px;padding:0 18px;color:var(--on-main);background:var(--main);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary-button:disabled,.primary-button[aria-disabled=true]{border-color:var(--line);color:var(--muted);background:color-mix(in srgb,var(--surface) 78%,var(--bg));cursor:not-allowed}.home-changelog-dock{position:fixed;right:max(16px,calc((100vw - 1120px)/2));bottom:24px;z-index:5;display:grid;justify-items:end;gap:10px}.home-changelog{width:min(328px,calc(100vw - 48px));display:grid;gap:10px;border:1px solid color-mix(in srgb,var(--line) 56%,transparent);border-radius:8px;padding:12px;color:var(--muted);background:color-mix(in srgb,var(--bg) 94%,var(--surface));box-shadow:0 14px 36px color-mix(in srgb,#000000 12%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:changelog-panel-in .16s cubic-bezier(.2,.68,.18,1) both;transform-origin:100% 100%}.home-changelog.is-panel-closing{animation:changelog-panel-out .14s ease-in both}.home-changelog-trigger{width:148px;min-height:34px;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;border:1px solid var(--line);border-radius:6px;padding:0 10px;color:var(--muted);background:color-mix(in srgb,var(--bg) 88%,var(--surface));box-shadow:0 10px 28px color-mix(in srgb,#000000 10%,transparent);cursor:pointer;font-family:var(--font-mono);transition:border-color .2s ease,color .2s ease,background-color .2s ease,transform .16s ease}.home-changelog-trigger:hover,.home-changelog-trigger[aria-expanded=true]{border-color:color-mix(in srgb,var(--main) 72%,var(--line));color:var(--text);background:color-mix(in srgb,var(--main) 12%,var(--bg))}.home-changelog-trigger:active{transform:translateY(1px) scale(.99)}.home-changelog-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.home-changelog h2{margin:0;color:var(--text);font-size:14px;font-weight:600;line-height:1.2}.home-changelog-header span{color:var(--muted);font-family:var(--font-mono);font-size:12px}.home-changelog-scroll{max-height:min(34vh,300px);overflow-y:auto;overscroll-behavior:contain;padding-right:4px;scrollbar-color:color-mix(in srgb,var(--main) 48%,var(--line)) transparent;scrollbar-width:thin}.home-changelog-group{display:grid;gap:8px}.home-changelog-group+.home-changelog-group{margin-top:14px}.home-changelog-group time{color:var(--text);font-family:var(--font-mono);font-size:12px}.home-changelog-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.home-changelog-list li{display:grid;grid-template-columns:82px minmax(0,1fr);align-items:baseline;gap:10px;min-height:28px;border-top:1px solid color-mix(in srgb,var(--line) 62%,transparent);padding-top:8px;font-size:13px;line-height:1.55}.home-changelog-tag{color:var(--main);font-family:var(--font-mono);font-size:12px;white-space:nowrap}.content-source-panel{width:min(680px,100%);display:grid;gap:10px;margin:4px 0 2px}.source-shelf{width:100%;min-height:52px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px;border:1px solid color-mix(in srgb,var(--line) 78%,transparent);border-radius:8px;padding:6px;background:color-mix(in srgb,var(--surface) 58%,transparent)}.source-toggle{position:relative;width:fit-content;display:inline-grid;grid-template-columns:repeat(2,minmax(98px,1fr));gap:4px;border-radius:7px;isolation:isolate}.source-toggle-thumb{position:absolute;z-index:-1;top:0;bottom:0;left:0;width:calc((100% - 4px)/2);border:1px solid color-mix(in srgb,var(--main) 52%,transparent);border-radius:6px;background:color-mix(in srgb,var(--main) 10%,transparent);box-shadow:0 0 16px color-mix(in srgb,var(--main) 8%,transparent);transition:transform .18s cubic-bezier(.2,.68,.18,1),border-color .18s ease,background-color .18s ease;pointer-events:none}.source-toggle-thumb.is-custom{transform:translate(calc(100% + 4px))}.source-option,.mini-button,.icon-button,.icon-text-button{min-height:34px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:6px;padding:0 12px;color:var(--muted);background:transparent;cursor:pointer;font-family:inherit;font-size:14px;line-height:1;white-space:nowrap}.source-option{min-width:98px;position:relative;z-index:1}.source-option.is-active{border-color:transparent;color:var(--text)}.source-shelf-status{min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:12px;color:var(--muted);font-size:14px;line-height:1.35}.source-shelf-title{min-width:0;overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap}.source-shelf-count{flex:0 0 auto;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.custom-source-drawer,.custom-import-panel{width:min(680px,100%);border-radius:8px}.custom-source-drawer{display:grid;gap:12px;border:1px solid color-mix(in srgb,var(--line) 58%,transparent);padding:14px 18px 16px;background:color-mix(in srgb,var(--surface) 28%,transparent);transform-origin:top center}.custom-source-drawer-empty{border-color:transparent;padding:2px 4px 0;background:transparent}.custom-source-drawer.is-panel-open,.custom-import-panel.is-panel-open{animation:panel-enter .15s cubic-bezier(.2,.68,.18,1) both}.custom-source-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.custom-source-kicker{color:var(--muted);font-size:13px;line-height:1.4}.custom-source-empty{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:8px 12px;min-height:32px}.custom-source-empty-copy{max-width:420px;color:var(--muted);font-size:13px;line-height:1.5}.custom-source-count,.custom-text-message,.custom-import-meta{color:var(--muted);font-size:13px}.custom-source-actions,.custom-import-actions{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px}.custom-delete-confirm{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:34px;border:1px solid color-mix(in srgb,var(--error) 34%,var(--line));border-radius:6px;padding:0 10px;color:var(--muted);background:color-mix(in srgb,var(--error) 8%,transparent);font-size:13px;animation:panel-enter .15s cubic-bezier(.2,.68,.18,1) both}.custom-delete-actions{display:inline-flex;align-items:center;gap:10px}.custom-text-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.custom-text-list li{min-width:0}.custom-text-option{width:100%;min-height:38px;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:6px;padding:0 14px;color:var(--muted);background:color-mix(in srgb,var(--surface) 42%,transparent);cursor:pointer;font-family:inherit;font-size:15px;line-height:1.35;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-text-option:hover{border-color:color-mix(in srgb,var(--main) 42%,var(--line));color:var(--text)}.custom-text-option.is-active{border-color:var(--main);color:var(--text);background:color-mix(in srgb,var(--main) 12%,transparent)}.custom-text-option span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-button,.icon-button,.text-button,.icon-text-button{border-color:var(--line)}.mini-button:hover,.icon-button:hover,.text-button:hover,.icon-text-button:hover{border-color:color-mix(in srgb,var(--main) 42%,var(--line));color:var(--text)}.mini-button.is-primary{border-color:var(--main);color:var(--on-main);background:var(--main)}.mini-button.is-active{border-color:color-mix(in srgb,var(--main) 62%,var(--line));color:var(--text);background:color-mix(in srgb,var(--main) 12%,transparent)}.icon-button{width:34px;padding:0;color:var(--muted);background:color-mix(in srgb,var(--surface) 24%,transparent)}.icon-button.is-active{border-color:color-mix(in srgb,var(--main) 62%,var(--line));color:var(--text);background:color-mix(in srgb,var(--main) 12%,transparent)}.text-button{min-height:28px;border:0;padding:0;color:var(--muted);background:transparent;cursor:pointer;font:inherit}.text-button.is-danger{color:color-mix(in srgb,var(--error) 72%,var(--text))}.custom-import-panel{display:grid;gap:12px;padding:14px 18px 16px;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);background:color-mix(in srgb,var(--surface) 62%,transparent);transform-origin:top center}.custom-field{display:grid;gap:6px;color:var(--muted);font-size:13px}.custom-field textarea,.custom-field input,.custom-draft-row input{width:100%;border:1px solid var(--line);border-radius:6px;color:var(--text);background:color-mix(in srgb,var(--bg) 62%,var(--surface));font:inherit}.custom-field textarea{min-height:100px;resize:vertical;padding:10px;line-height:1.6;scrollbar-color:color-mix(in srgb,var(--main) 48%,var(--line)) transparent;scrollbar-width:thin}.custom-field input,.custom-draft-row input{min-height:34px;padding:0 10px}.custom-import-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}.custom-draft-list{display:grid;gap:8px}.custom-draft-row{display:grid;grid-template-columns:minmax(88px,.8fr) minmax(160px,1.5fr) auto auto;align-items:center;gap:8px}.custom-draft-hanzi{color:var(--text);overflow-wrap:anywhere}.custom-draft-punctuation{color:var(--main);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.custom-import-actions{justify-content:flex-end}.test-view{display:grid;gap:20px;padding-top:clamp(28px,8vh,88px)}.test-toolbar{min-height:44px;display:flex;align-items:center;flex-wrap:wrap;gap:10px 28px;color:var(--muted);font-family:var(--font-mono)}.metric-main{color:var(--main)}.toolbar-stat{--label-scale: 1;display:inline-block;transform-origin:center;transform:scale(var(--label-scale));transition:color .18s ease,text-shadow .18s ease,transform .18s ease}.toolbar-combo-group{display:inline-flex;align-items:center;flex-wrap:wrap;gap:10px 30px}.toolbar-stat.is-combo-stat{min-width:86px;min-height:28px;display:inline-grid;grid-template-columns:minmax(34px,auto) minmax(34px,auto);align-items:baseline;justify-content:start;gap:10px;padding:2px 0}.toolbar-stat-label{color:var(--muted)}.toolbar-stat-value{color:inherit;font-variant-numeric:tabular-nums}.toolbar-stat.is-label-quake{animation:label-quake .26s cubic-bezier(.2,.02,.18,1.58)}.toolbar-stat.is-label-hot{--label-scale: 1.08;color:var(--confirm);text-shadow:0 0 10px color-mix(in srgb,var(--confirm) 28%,transparent),0 0 18px color-mix(in srgb,var(--caret) 12%,transparent)}.toolbar-stat.is-label-peak{--label-scale: 1.14;color:var(--main);text-shadow:0 0 14px color-mix(in srgb,var(--main) 36%,transparent),0 0 24px color-mix(in srgb,var(--confirm) 18%,transparent)}.awesomeness-meter{position:absolute;z-index:3;top:0;left:0;width:100%;height:8px;overflow:hidden;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--caret) 4%,transparent),color-mix(in srgb,var(--caret) 11%,transparent),color-mix(in srgb,var(--caret) 4%,transparent));box-shadow:0 10px 24px color-mix(in srgb,var(--caret) 7%,transparent);transition:filter .24s ease,box-shadow .24s ease,height .24s ease}.awesomeness-meter.has-awesomeness-effects{box-shadow:0 0 18px color-mix(in srgb,var(--caret) 16%,transparent),0 12px 34px color-mix(in srgb,var(--caret) 14%,transparent)}.awesomeness-meter.is-awesomeness-hit{animation:awesomeness-meter-hit .36s cubic-bezier(.16,.82,.22,1.2)}.awesomeness-meter.is-awesomeness-sustained{filter:saturate(1.18) brightness(1.08);box-shadow:0 0 20px color-mix(in srgb,var(--caret) 22%,transparent),0 12px 36px color-mix(in srgb,var(--caret) 18%,transparent)}.awesomeness-meter.is-awesomeness-sustained .awesomeness-meter-fill{animation:awesomeness-sustain-breathe 1.8s ease-in-out infinite}.awesomeness-meter.is-awesomeness-sustain-pulse .awesomeness-meter-fill:before{animation:awesomeness-sustain-pulse .54s cubic-bezier(.16,.82,.22,1.04)}.awesomeness-meter.is-awesomeness-overdrive{height:12px;filter:saturate(1.35) brightness(1.2);animation:awesomeness-overdrive-fill .92s cubic-bezier(.16,.82,.22,1.04);box-shadow:0 0 24px color-mix(in srgb,var(--caret) 44%,transparent),0 0 58px color-mix(in srgb,var(--caret) 28%,transparent),0 18px 48px color-mix(in srgb,var(--caret) 24%,transparent)}.awesomeness-meter-fill{position:absolute;inset:0;transform-origin:left center;transform:translateZ(0) scaleX(0);border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--caret) 42%,transparent),var(--caret),color-mix(in srgb,var(--main) 24%,var(--caret)));box-shadow:0 0 18px color-mix(in srgb,var(--caret) 28%,transparent),0 0 36px color-mix(in srgb,var(--caret) 12%,transparent);transition:transform .36s linear;will-change:transform}.awesomeness-meter-fill:before{position:absolute;inset:-30% 0;content:"";opacity:0;background:radial-gradient(circle at 100% 50%,color-mix(in srgb,var(--confirm) 64%,transparent),transparent 36%)}.awesomeness-meter.is-awesomeness-hit .awesomeness-meter-fill:before{animation:awesomeness-surge .36s ease-out}.awesomeness-meter-fill:after{position:absolute;inset:0;content:"";background:linear-gradient(110deg,transparent 0%,rgba(255,255,255,.22) 46%,transparent 64%);opacity:0;transform:translate(-70%)}.awesomeness-meter.has-awesomeness-effects .awesomeness-meter-fill:after{opacity:1;animation:awesomeness-sheen .92s ease-in-out infinite}.typing-stage{position:relative;display:grid;gap:16px;min-height:300px;align-content:center;padding:clamp(28px,4.4vw,48px) 0 clamp(20px,4vw,40px)}.typing-stage.is-awesomeness-overdrive .practice-rows{animation:overdrive-stage-breathe .98s cubic-bezier(.16,.82,.22,1.04),overdrive-stage-shake .76s cubic-bezier(.22,0,.18,1)}.awesomeness-overdrive,.awesomeness-sustain-wave{position:absolute;z-index:4;inset:0;overflow:hidden;pointer-events:none}.awesomeness-sustain-wave:before,.awesomeness-sustain-wave:after{position:absolute;left:-8%;width:116%;content:"";opacity:0}.awesomeness-sustain-wave:before{top:0;height:8px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--caret) 48%,transparent),color-mix(in srgb,var(--main) 42%,transparent),transparent);transform:translate(-100%) scaleX(.3);animation:sustain-wave-sweep .86s cubic-bezier(.16,.82,.22,1.02)}.awesomeness-sustain-wave:after{top:8px;bottom:0;height:calc(100% - 8px);background:linear-gradient(180deg,color-mix(in srgb,var(--caret) 11%,transparent),transparent 56%);transform:translateY(-32%) scaleY(.32);animation:sustain-wave-drop .86s cubic-bezier(.16,.82,.22,1.02)}.awesomeness-overdrive-wave,.awesomeness-overdrive-flash,.awesomeness-overdrive-shard{position:absolute}.awesomeness-overdrive-wave{inset:0;overflow:hidden}.awesomeness-overdrive-wave:before,.awesomeness-overdrive-wave:after{position:absolute;left:-8%;width:116%;content:"";opacity:0}.awesomeness-overdrive-wave:before{top:0;height:12px;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--caret) 72%,transparent) 38%,color-mix(in srgb,var(--main) 72%,transparent) 50%,color-mix(in srgb,var(--caret) 72%,transparent) 62%,transparent 100%);filter:blur(.2px);transform:translate(-100%) scaleX(.4);animation:overdrive-wave-sweep 1.12s cubic-bezier(.16,.82,.22,1.02)}.awesomeness-overdrive-wave:after{top:12px;bottom:0;height:calc(100% - 12px);background:linear-gradient(180deg,color-mix(in srgb,var(--caret) 22%,transparent),color-mix(in srgb,var(--caret) 9%,transparent) 34%,transparent 72%);transform:translateY(-46%) scaleY(.45);animation:overdrive-wave-drop 1.12s cubic-bezier(.16,.82,.22,1.02)}.awesomeness-overdrive-flash{inset:0;opacity:0;background:linear-gradient(112deg,transparent 0%,color-mix(in srgb,var(--caret) 18%,transparent) 46%,color-mix(in srgb,var(--main) 14%,transparent) 50%,transparent 58%);transform:translate(-38%) skew(-10deg);animation:overdrive-flash .78s ease-out .11s}.awesomeness-overdrive-shard{--shard-x: 0vw;--shard-y: 0vh;--shard-r: 0deg;--shard-delay: 0ms;left:50%;top:6px;width:min(18vw,160px);height:2px;border-radius:999px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--caret) 78%,white),color-mix(in srgb,var(--main) 52%,transparent),transparent);box-shadow:0 0 12px color-mix(in srgb,var(--caret) 42%,transparent),0 0 28px color-mix(in srgb,var(--caret) 26%,transparent);opacity:0;transform-origin:center;animation:overdrive-shard .76s cubic-bezier(.15,.72,.1,1) forwards;animation-delay:var(--shard-delay)}.awesomeness-overdrive-shard:nth-child(3){--shard-x: -42vw;--shard-y: 18vh;--shard-r: -8deg}.awesomeness-overdrive-shard:nth-child(4){--shard-x: 36vw;--shard-y: 16vh;--shard-r: 8deg;--shard-delay: 18ms}.awesomeness-overdrive-shard:nth-child(5){--shard-x: -32vw;--shard-y: 34vh;--shard-r: 12deg;--shard-delay: 34ms}.awesomeness-overdrive-shard:nth-child(6){--shard-x: 31vw;--shard-y: 35vh;--shard-r: -12deg;--shard-delay: 48ms}.awesomeness-overdrive-shard:nth-child(7){--shard-x: -10vw;--shard-y: 47vh;--shard-r: -4deg;--shard-delay: 62ms}.awesomeness-overdrive-shard:nth-child(8){--shard-x: 12vw;--shard-y: 48vh;--shard-r: 4deg;--shard-delay: 76ms}.awesomeness-overdrive-shard:nth-child(9){--shard-x: -50vw;--shard-y: 7vh;--shard-r: -4deg;--shard-delay: 90ms}.awesomeness-overdrive-shard:nth-child(10){--shard-x: 48vw;--shard-y: 8vh;--shard-r: 4deg;--shard-delay: 104ms}.awesomeness-overdrive-shard:nth-child(11){--shard-x: -44vw;--shard-y: 27vh;--shard-r: 10deg;--shard-delay: 118ms}.awesomeness-overdrive-shard:nth-child(12){--shard-x: 42vw;--shard-y: 28vh;--shard-r: -10deg;--shard-delay: 132ms}.awesomeness-overdrive-shard:nth-child(13){--shard-x: -24vw;--shard-y: 42vh;--shard-r: 16deg;--shard-delay: 146ms}.awesomeness-overdrive-shard:nth-child(14){--shard-x: 24vw;--shard-y: 43vh;--shard-r: -16deg;--shard-delay: .16s}.practice-rows{position:relative;z-index:1;display:flex;align-items:flex-end;flex-wrap:wrap;gap:clamp(10px,1.8vw,16px) clamp(14px,2.4vw,24px)}.practice-rows.is-power-impact{animation:power-bump .12s ease-out}.practice-pair{display:grid;gap:4px;max-width:100%}.practice-pair.is-current{color:var(--text)}.hanzi-line,.pinyin-line{overflow-wrap:anywhere}.hanzi-line{color:var(--muted);font-size:clamp(18px,2.4vw,27px);line-height:1.35;letter-spacing:0}.hanzi-current{border-radius:6px;color:var(--text);background:color-mix(in srgb,var(--main) 18%,transparent)}.hanzi-latin{font-family:var(--latin-practice-font);font-size:.9em;font-weight:500}.pinyin-line{color:var(--muted);font-family:var(--font-mono);font-size:clamp(21px,2.8vw,32px);line-height:1.35;white-space:pre-wrap}.pinyin-line span{position:relative;z-index:1;display:inline-block;transition:color .12s ease-out,text-shadow .16s ease-out}.phrase-current{color:var(--text)}.is-correct{color:var(--typed-correct)}.is-optional-hit{position:relative;color:transparent}.is-optional-hit:after{content:"␣";position:absolute;left:50%;top:50%;z-index:2;color:var(--main);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1em;line-height:1;pointer-events:none;transform:translate(-50%,-50%)}.is-optional-hit:after{text-shadow:0 0 10px color-mix(in srgb,var(--main) 46%,transparent);opacity:1;transform:translate(-50%,-50%) scale(.96)}.is-optional-hit.is-space-pressed:after{animation:optional-space-press .18s cubic-bezier(.16,.9,.24,1) forwards}.is-optional-hit.is-space-released:after{animation:optional-space-release .17s cubic-bezier(.2,0,.78,.24) forwards}.is-error{color:var(--soft-error)}@keyframes optional-space-press{0%{opacity:1;transform:translate(-50%,-50%) scale(.82)}to{opacity:1;transform:translate(-50%,calc(-50% - .62em)) scale(1.12)}}@keyframes optional-space-release{0%{opacity:1;transform:translate(-50%,calc(-50% - .62em)) scale(1.12)}to{opacity:0;transform:translate(-50%,-50%) scale(.96)}}@keyframes view-enter{0%{opacity:0;transform:translate3d(0,3px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes view-exit{0%{opacity:1}to{opacity:0}}@keyframes changelog-panel-in{0%{opacity:0;transform:translate3d(0,8px,0) scale(.98)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes changelog-panel-out{0%{opacity:1;transform:translateZ(0) scale(1)}to{opacity:0;transform:translate3d(0,6px,0) scale(.985)}}.current-char{position:relative;z-index:2;border-radius:4px;color:var(--on-caret);background:transparent;text-shadow:0 1px 0 color-mix(in srgb,var(--bg) 24%,transparent)}.current-char.is-error{color:var(--text);background:color-mix(in srgb,var(--soft-error) 20%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--soft-error) 45%,transparent)}.motion-cursor{position:absolute;z-index:0;left:0;top:0;width:var(--cursor-width);height:var(--cursor-height);border-radius:4px;background:var(--caret);box-shadow:0 0 0 1px color-mix(in srgb,var(--caret) 35%,transparent),0 8px 26px color-mix(in srgb,var(--caret) 22%,transparent);pointer-events:none;transform:translate3d(var(--cursor-x),var(--cursor-y),0);transition:transform .22s linear,width .16s ease-out,height .16s ease-out,background-color .14s ease-out}.motion-cursor.is-backspace{transition-duration:.15s;transition-timing-function:cubic-bezier(.18,.68,.24,1.12)}.power-effects-layer{position:absolute;z-index:5;inset:0;overflow:hidden;pointer-events:none}.power-burst{position:absolute;left:0;top:0;width:1px;height:1px;transform:translate3d(var(--burst-x),var(--burst-y),0)}.power-spark{position:absolute;left:-2px;top:-2px;width:5px;height:5px;border-radius:999px;background:var(--confirm);box-shadow:0 0 10px color-mix(in srgb,var(--confirm) 48%,transparent),0 0 18px color-mix(in srgb,var(--caret) 22%,transparent);opacity:0;animation:power-spark .42s ease-out forwards;animation-delay:var(--spark-delay)}.required-space{display:inline-block;margin-left:.55em;margin-right:.12em;color:var(--main);vertical-align:.12em}.required-space.is-required-hit{text-shadow:0 0 10px color-mix(in srgb,var(--main) 46%,transparent);transform-origin:50% 50%}.required-space.is-space-pressed{animation:required-space-press .18s cubic-bezier(.16,.9,.24,1) forwards}.required-space.is-space-released{animation:required-space-release .17s cubic-bezier(.2,0,.78,.24) forwards}@keyframes required-space-press{0%{transform:translateY(0) scale(.94)}to{transform:translateY(-.62em) scale(1.12)}}@keyframes required-space-release{0%{transform:translateY(-.62em) scale(1.12)}to{transform:translateY(0) scale(1)}}@keyframes panel-enter{0%{opacity:0;transform:translate3d(0,-6px,0) scale(.985)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes panel-exit{0%{opacity:1;transform:translateZ(0) scale(1)}to{opacity:0;transform:translate3d(0,-4px,0) scale(.99)}}@keyframes power-bump{0%{transform:translateZ(0)}35%{transform:translate3d(1px,-1px,0)}70%{transform:translate3d(-1px,1px,0)}to{transform:translateZ(0)}}@keyframes power-spark{0%{opacity:.85;transform:translateZ(0) scale(.74)}65%{opacity:.72}to{opacity:0;transform:translate3d(var(--spark-x),var(--spark-y),0) scale(.16)}}@keyframes awesomeness-meter-hit{0%{filter:brightness(1);transform:translateZ(0) scaleY(1)}45%{filter:brightness(1.62) saturate(1.25);transform:translate3d(0,-2px,0) scaleY(2.1)}to{filter:brightness(1);transform:translateZ(0) scaleY(1)}}@keyframes awesomeness-surge{0%{opacity:0;transform:translate(-42%) scaleX(.2)}42%{opacity:.9}to{opacity:0;transform:translate(30%) scaleX(1.5)}}@keyframes awesomeness-sustain-breathe{0%,to{filter:brightness(1)}50%{filter:brightness(1.16) saturate(1.12)}}@keyframes awesomeness-sustain-pulse{0%{opacity:0;transform:translate(-18%) scaleX(.2)}36%{opacity:.72}to{opacity:0;transform:translate(58%) scaleX(1.15)}}@keyframes sustain-wave-sweep{0%{opacity:0;transform:translate(-100%) scaleX(.3)}18%{opacity:.76}to{opacity:0;transform:translate(100%) scaleX(1)}}@keyframes sustain-wave-drop{0%{opacity:0;transform:translateY(-32%) scaleY(.32)}22%{opacity:.62}to{opacity:0;transform:translateY(24%) scaleY(.86)}}@keyframes label-quake{0%{transform:translateZ(0) rotate(0) scale(var(--label-scale))}18%{transform:translate3d(2px,-2px,0) rotate(-4deg) scale(calc(var(--label-scale) * 1.28))}42%{transform:translate3d(-3px,2px,0) rotate(3.2deg) scale(calc(var(--label-scale) * 1.18))}68%{transform:translate3d(1px,1px,0) rotate(-1.8deg) scale(calc(var(--label-scale) * 1.08))}to{transform:translateZ(0) rotate(0) scale(var(--label-scale))}}@keyframes awesomeness-sheen{0%{transform:translate(-78%)}48%,to{transform:translate(86%)}}@keyframes awesomeness-overdrive-fill{0%{transform:translateZ(0) scaleY(1);filter:brightness(1)}18%{transform:translate3d(0,-1px,0) scaleY(1.45);filter:brightness(1.22) saturate(1.15)}42%{transform:translateZ(0) scaleY(1.18);filter:brightness(1.36) saturate(1.28)}to{transform:translateZ(0) scaleY(1);filter:brightness(1)}}@keyframes overdrive-stage-breathe{0%,to{transform:translateY(0) scale(1)}20%{transform:translateY(7px) scale(.992)}56%{transform:translateY(-2px) scale(1.006)}}@keyframes overdrive-stage-shake{0%,to{transform:translateZ(0)}12%{transform:translate3d(-5px,2px,0) rotate(-.2deg)}24%{transform:translate3d(4px,-3px,0) rotate(.2deg)}38%{transform:translate3d(-3px,-1px,0) rotate(-.14deg)}54%{transform:translate3d(3px,2px,0) rotate(.12deg)}72%{transform:translate3d(-1px,1px,0)}}@keyframes overdrive-wave-sweep{0%{opacity:0;transform:translate(-100%) scaleX(.28)}18%{opacity:1}62%{opacity:.8}to{opacity:0;transform:translate(100%) scaleX(1.18)}}@keyframes overdrive-wave-drop{0%{opacity:0;transform:translateY(-46%) scaleY(.45)}18%{opacity:.92}68%{opacity:.45}to{opacity:0;transform:translateY(36%) scaleY(1.08)}}@keyframes overdrive-flash{0%{opacity:0;transform:translate(-28%) skew(-12deg)}18%{opacity:.72}to{opacity:0;transform:translate(38%) skew(-12deg)}}@keyframes overdrive-shard{0%{opacity:0;transform:translate3d(-50%,-50%,0) rotate(var(--shard-r)) scaleX(.1)}16%{opacity:.9}to{opacity:0;transform:translate3d(calc(-50% + var(--shard-x)),calc(-50% + var(--shard-y)),0) rotate(var(--shard-r)) scaleX(1.15)}}.result-view{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(320px,1.4fr);gap:18px;padding-top:clamp(48px,10vh,96px)}.score-panel,.metric-card,.analysis-card{border:1px solid var(--line);border-radius:6px;background:var(--surface)}.score-panel{min-height:300px;display:grid;align-content:center;gap:14px;padding:clamp(24px,4vw,42px)}.metric-label{color:var(--muted);font-family:var(--font-mono);font-size:13px;line-height:1.4}.flow-score{color:var(--main);font-size:clamp(72px,12vw,132px);line-height:.9;letter-spacing:0}.result-copy{max-width:360px;margin:0;color:var(--muted);font-size:16px;line-height:1.7}.history-summary{margin:0;color:var(--muted);font-family:var(--font-mono);font-size:14px}.metrics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.metric-card,.analysis-card,.chart-card{display:grid;gap:10px;align-content:center;min-height:132px;padding:22px}.metric-card strong,.analysis-card strong{overflow-wrap:anywhere;color:var(--text);font-size:clamp(26px,4vw,42px);line-height:1.05;letter-spacing:0}.analysis-card{grid-column:2;min-height:150px}.chart-card{grid-column:2;min-height:150px;border:1px solid var(--line);border-radius:6px;background:var(--surface)}.speed-chart{height:88px;display:grid;grid-template-columns:repeat(var(--speed-points, 1),minmax(2px,1fr));align-items:end;gap:1px;max-width:100%;overflow:hidden;border-bottom:1px solid var(--line)}.speed-bar{width:100%;min-height:14px;border-radius:999px 999px 0 0;background:var(--main)}.result-actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;padding-top:6px}.secondary-button{width:fit-content;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:6px;padding:0 18px;color:var(--text);background:transparent;cursor:pointer}@media(max-width:640px){.app-shell{width:min(100% - 24px,1120px);padding-top:18px}.top-bar{grid-template-columns:1fr;align-items:flex-start}.mode-label,.top-actions{justify-self:start}.top-actions{width:100%;justify-content:space-between}.theme-trigger{width:min(148px,46vw)}.source-shelf{grid-template-columns:1fr;align-items:stretch}.source-toggle{width:100%;grid-template-columns:repeat(2,minmax(0,1fr))}.source-shelf-status{justify-content:space-between;padding:0 4px 2px}.typing-stage{min-height:280px}.result-view,.metrics-grid{grid-template-columns:1fr}.score-panel{min-height:240px}.analysis-card,.chart-card{grid-column:auto}.result-actions{justify-content:stretch}.result-actions .primary-button,.result-actions .secondary-button,.source-toggle{width:100%}.source-option{min-width:0}.home-changelog-dock{right:16px;bottom:16px}.home-changelog-scroll{max-height:240px}.home-changelog-list li{grid-template-columns:1fr;gap:3px}.custom-source-empty,.custom-source-actions,.custom-source-drawer-header{width:100%}.custom-source-drawer-header{flex-wrap:wrap}.custom-text-list,.custom-draft-row{grid-template-columns:1fr}.custom-import-actions{justify-content:stretch}.custom-import-actions .mini-button{flex:1}}@media(prefers-reduced-motion:reduce){.awesomeness-meter,.awesomeness-meter-fill,.awesomeness-sustain-wave,.awesomeness-sustain-wave:before,.awesomeness-sustain-wave:after,.awesomeness-overdrive,.awesomeness-overdrive-wave,.awesomeness-overdrive-wave:before,.awesomeness-overdrive-wave:after,.awesomeness-overdrive-flash,.awesomeness-overdrive-shard,.effects-panel,.theme-panel,.home-changelog,.home-changelog-trigger,.custom-source-drawer,.custom-import-panel,.source-toggle-thumb,.effect-option,.effect-option:before,.theme-option,.theme-option:before,.motion-cursor,.view-surface,.practice-rows,.toolbar-stat,.power-spark,.pinyin-line span{transition-duration:1ms;animation:none}.power-effects-layer,.awesomeness-overdrive{display:none}.awesomeness-meter-fill:before,.awesomeness-meter-fill:after{animation:none}}
