@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin-ext-wght-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin-wght-normal.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-ext-wght-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2)format("woff2");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}html:root:has(main.app-shell.typing-page,main.app-shell>.layout>.trainer){--at-scheme:dark;--at-navy:#1e293b;--at-blue:#2075c7;--at-yellow:#f6c343;--at-bg:#0f172a;--at-panel:#1e293b;--at-soft:#273449;--at-ink:#f8fafc;--at-muted:#a3b1c4;--at-border:#74869e;--at-accent:#38bdf8;--at-focus:#f6c343;--at-success:#68d391;--at-error:#fc8181;--ref-line:#334155;--ref-shadow:0 8px 22px -4px #0006, 0 3px 8px -2px #0003;--ref-kbd-frame:#0b1120;--ref-key:#1e293b;--ref-key-edge:#334155;--ref-key-ink:#e2e8f0;--ref-correct-bg:#48bb7833;--ref-wrong-bg:#f5656559}html[data-flowkeys-theme=light]:root:has(main.app-shell.typing-page,main.app-shell>.layout>.trainer){--at-scheme:light;--at-navy:#2583d8;--at-blue:#1f74c4;--at-bg:#eef6fb;--at-panel:#fff;--at-soft:#e0f2fe;--at-ink:#2d3748;--at-muted:#55657a;--at-border:#8193a8;--at-accent:#1f74c4;--at-focus:#b07508;--at-success:#2f855a;--at-error:#c53030;--ref-line:#dbe4ee;--ref-shadow:0 8px 22px -4px #2583d814, 0 3px 8px -2px #0000000a;--ref-kbd-frame:#d9e0e7;--ref-key:#fff;--ref-key-edge:#c1ccd7;--ref-key-ink:#334155;--ref-correct-bg:#48bb782e;--ref-wrong-bg:#f565654d}html:root:has(main.app-shell.typing-page,main.app-shell>.layout>.trainer){color-scheme:var(--at-scheme);--background:var(--at-bg);--foreground:var(--at-ink);--card:var(--at-panel);--card-foreground:var(--at-ink);--popover:var(--at-panel);--popover-foreground:var(--at-ink);--primary:var(--at-blue);--primary-foreground:#fff;--secondary:var(--at-soft);--secondary-foreground:var(--at-ink);--muted:var(--at-soft);--muted-foreground:var(--at-muted);--accent:var(--at-soft);--accent-foreground:var(--at-ink);--border:var(--at-border);--input:var(--at-border);--ring:var(--at-focus);--design-canvas:var(--at-bg);--design-surface:var(--at-panel);--design-soft:var(--at-soft);--design-ink:var(--at-ink);--design-muted:var(--at-muted);--design-border:var(--at-border);--design-action:var(--at-blue);--design-action-ink:#fff;--design-teal:var(--at-accent);--design-focus:var(--at-focus)}html[data-flowkeys-theme]:root:has(main.app-shell.typing-page,main.app-shell>.layout>.trainer){color-scheme:var(--at-scheme);--background:var(--at-bg);--foreground:var(--at-ink);--card:var(--at-panel);--card-foreground:var(--at-ink);--popover:var(--at-panel);--popover-foreground:var(--at-ink);--primary:var(--at-blue);--primary-foreground:#fff;--secondary:var(--at-soft);--secondary-foreground:var(--at-ink);--muted:var(--at-soft);--muted-foreground:var(--at-muted);--accent:var(--at-soft);--accent-foreground:var(--at-ink);--border:var(--at-border);--input:var(--at-border);--ring:var(--at-focus);--design-canvas:var(--at-bg);--design-surface:var(--at-panel);--design-soft:var(--at-soft);--design-ink:var(--at-ink);--design-muted:var(--at-muted);--design-border:var(--at-border);--design-action:var(--at-blue);--design-action-ink:#fff;--design-teal:var(--at-accent);--design-focus:var(--at-focus)}html:root:has(main.app-shell.typing-page,main.app-shell>.layout>.trainer) body{background:var(--at-bg)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar{--design-surface:var(--at-navy);--design-soft:#fff3;--design-border:#ffffff4d;background:var(--at-navy);min-height:58px;padding-block:10px;box-shadow:0 2px 10px #0000001f}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .training-page-label{color:#fff;letter-spacing:0;font-weight:700}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar :is(button,.account-control,.learn-appearance,.search-nav-link,.manual-link),html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .site-language-menu summary{color:#fff;background:#ffffff24;border:1px solid #ffffff3d;border-radius:8px;font-weight:600;transition:background-color .15s}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar :is(button,.account-control,.learn-appearance,.search-nav-link,.manual-link):hover,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .site-language-menu summary:hover{color:#fff;background:#ffffff42}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .site-language-menu :is(ul,nav,a){background:var(--at-panel);color:var(--at-ink)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .site-language-menu :is(ul,nav){border:1px solid var(--ref-line);border-radius:12px;box-shadow:0 14px 32px #0000002e}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .site-language-menu a:is(:hover,:focus-visible){background:var(--at-soft);color:var(--at-accent)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .site-language-menu a[aria-current]{color:var(--at-accent);font-weight:800}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar :is(button,a,summary):focus-visible{outline:3px solid var(--at-yellow);outline-offset:3px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-controls,.typing-metric,.typing-analytics,.settings-content,.typing-path-picker,.typing-progress-disclosure,.side-card,.sidebar,.practice-panel,.category-card,.planned-hub,.session-toolbar,.shortcut-voice-status){background:var(--at-panel);border-color:var(--ref-line);box-shadow:var(--ref-shadow);border-radius:12px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-stage,.challenge,.completion-card){border:2px solid var(--ref-line);box-shadow:var(--ref-shadow);border-radius:18px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-workspace .typing-stage,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .challenge{background:var(--at-panel)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .challenge.correct{border-color:#68b664}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .challenge.wrong{border-color:var(--at-error)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-path-options button,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .platform-toolbar button,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .mode-switch button{border-color:var(--ref-line);border-radius:999px;font-weight:700;transition:border-color .15s,color .15s,background-color .15s}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-path-options,.platform-toolbar,.mode-switch) button:not(.active):hover{border-color:var(--at-accent);color:var(--at-accent)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-path-options,.platform-toolbar) button.active{background:var(--at-blue);border-color:var(--at-blue);color:#fff;box-shadow:0 4px 12px #2583d840}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .sidebar button{border-radius:8px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.sidebar,.category-card) button.active{background:var(--at-soft);border-color:var(--at-accent);color:var(--at-accent)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .category-card{transition:transform .18s,border-color .18s,box-shadow .18s}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .category-card:hover{border-color:var(--at-accent);transform:translateY(-4px);box-shadow:0 12px 24px #2583d824}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-reset,.quiet,.reset,.keyboard-footer>button){border:2px solid var(--ref-line);color:var(--at-muted);background:0 0;border-radius:9px;font-weight:700}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-reset,.quiet,.reset,.keyboard-footer>button):not(:disabled):hover{border-color:var(--at-ink);color:var(--at-ink)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-stage-top .typing-focus-button,.completion-card button,.practice-play){color:#1e293b;background:linear-gradient(#f8d353 0%,#f0b823 100%);border:1px solid #d99b16;border-radius:9px;font-weight:800;transition:transform .15s,filter .15s;box-shadow:0 3px #c2880e}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-stage-top .typing-focus-button,.completion-card button,.practice-play):hover{filter:brightness(1.04);transform:translateY(-1px)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-stage-top .typing-focus-button,.completion-card button,.practice-play):active{transform:translateY(2px);box-shadow:0 1px #c2880e}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-stage-top .typing-focus-button.is-active{background:var(--at-soft);border-color:var(--ref-line);box-shadow:none;color:var(--at-accent)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(button,a,summary,input,select,textarea,[tabindex]):focus-visible{outline-color:var(--at-focus)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-stage-top{color:var(--at-muted);font-weight:600}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-stage-top strong{color:var(--at-accent)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-text .typing-char{border-radius:6px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-workspace .typing-text .typing-char.typed-correct{background-color:var(--ref-correct-bg);color:var(--at-success)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-workspace .typing-text .typing-char.typed-wrong{background-color:var(--ref-wrong-bg);color:var(--at-error)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark)[data-practice-mode=text] .typing-workspace .typing-text .typing-char.typing-current{background:var(--at-blue);color:#fff;box-shadow:0 0 0 2px var(--at-blue), 0 4px 12px #2583d859;border-radius:6px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-text-viewport{scrollbar-color:var(--ref-line) transparent}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-stage .text-window-label{color:var(--at-muted)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-stage [role=progressbar]{border-radius:999px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor[data-practice-mode][data-feedback-animations]:is(.theme-light,.theme-dark) .typing-keyboard-panel,html[data-flowkeys-theme=light] main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor[data-practice-mode][data-feedback-animations]:is(.theme-light,.theme-dark):not(.theme-high-contrast):not(.theme-custom) .typing-keyboard-panel{--kb-frame:var(--ref-kbd-frame);--kb-border:var(--ref-key-edge);--kb-ink:var(--ref-key-ink);--kb-target:#2583d8;--kb-target-ink:#fff;--kb-hit:#68d391;--kb-hit-ink:#10301c;background:var(--kb-frame);border-color:#0000;border-radius:16px;box-shadow:inset 0 2px 4px #fff6,0 8px 20px #0000000f}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-keyboard-panel .typing-keyboard .typing-key-row>span{border-width:1px 1px 3px;border-radius:7px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-keyboard-panel .typing-keyboard .typing-key-row>span.finger-neutral:not(.next):not(.physically-pressed):not(.key-feedback-a):not(.key-feedback-b){background:var(--ref-key);color:var(--ref-key-ink)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-workspace .floating-typing-keyboard .typing-keyboard .typing-key-row>span.next:not(.physically-pressed):not(.key-feedback-a):not(.key-feedback-b){color:#fff;z-index:2;background:#2583d8;border-color:#1a5fa0;box-shadow:0 0 0 5px #2583d847}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-workspace .floating-typing-keyboard .typing-keyboard .typing-key-row>span:is(.physically-pressed,.key-feedback-a,.key-feedback-b):not(.key-feedback-error),html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-key-row>span:is(.physically-pressed,.key-feedback-a,.key-feedback-b):not(.key-feedback-error){color:#10301c;background:#68d391;border-color:#3d9a63}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .typing-keyboard-panel .next-key strong{color:var(--at-accent)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .keyboard-landscape .typing-key-row>span.next{--zone-fill:#2583d8;--zone-ink:#fff;--zone-edge:#1a5fa0;outline:2px solid #1a5fa0;box-shadow:0 0 0 5px #2583d847}@media (forced-colors:none){html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor:is(.theme-light,.theme-dark) .keyboard-landscape .keyboard-finger-legend>span{color:var(--ref-key-ink)!important}}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .keyboard-board{background:var(--ref-kbd-frame);border:0;border-radius:16px;box-shadow:inset 0 2px 4px #fff6,0 8px 20px #0000000f}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .keyboard-board .keyboard-row button{border-width:1px 1px 3px;border-radius:7px;transition:transform 80ms,background-color 80ms}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .keyboard-board .keyboard-row button.selected{color:#fff;background:#2583d8;border-color:#1a5fa0;box-shadow:0 0 0 5px #2583d847}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .keyboard-board .keyboard-row button.pressed{color:#10301c;background:#68d391;border-color:#3d9a63;transform:translateY(2px)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .answer-space kbd,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .hint-panel kbd{background:var(--at-panel);color:var(--at-ink);border:2px solid #94a3b8;border-radius:10px;box-shadow:0 4px #cbd5e1}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .result-line.correct{color:var(--at-success)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .result-line.wrong{color:var(--at-error)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor>.typing-workspace+[role=status]{background:var(--at-panel);box-shadow:var(--ref-shadow);color:var(--at-ink);text-align:center;border:2px solid #68b664;border-radius:18px;padding:20px 28px;font-weight:800}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor>.typing-workspace+[role=status]:before,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .completion-card:before{content:"★ ★ ★";color:#f6c343;letter-spacing:.2em;text-shadow:0 6px 14px #f6c34373;margin-bottom:8px;font-size:2.4rem;line-height:1;display:block}@media (prefers-reduced-motion:no-preference){html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor[data-feedback-animations=true]>.typing-workspace+.appreciation:before,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .completion-card:before{animation:.45s cubic-bezier(.18,.89,.32,1.28) both at-reference-stars}}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor .tutor-confetti i:nth-child(5n+1){background:#f6c343}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor .tutor-confetti i:nth-child(5n+2){background:#2583d8}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor .tutor-confetti i:nth-child(5n+3){background:#48bb78}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor .tutor-confetti i:nth-child(5n+4){background:#f56565}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor .tutor-confetti i:nth-child(5n+5){background:#a855f7}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .completion-card{background:var(--at-panel);color:var(--at-ink)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .completion-card .celebration{color:#fff;background:#68b664;border:2px solid #4f964b;border-radius:50%;box-shadow:0 4px #3d7a3a}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .completion-card p{color:var(--at-accent)}@keyframes at-reference-stars{0%{opacity:.2;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@container at-trainer (width<=760px){html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.typing-stage,.challenge,.completion-card){border-radius:14px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor>.typing-workspace+[role=status]:before,html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .completion-card:before{font-size:1.8rem}}@media (prefers-reduced-motion:reduce){html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.category-card,.typing-stage-top .typing-focus-button,.completion-card button,.practice-play,.keyboard-board .keyboard-row button){transition:none}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) :is(.category-card,.typing-stage-top .typing-focus-button,.completion-card button,.practice-play):is(:hover,:active),html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .keyboard-board .keyboard-row button.pressed{transform:none}}html main.app-shell.typing-page .typing-hub-tabs{background:#0000002e;border-radius:999px;gap:2px;padding:3px;display:inline-flex}html main.app-shell.typing-page .typing-hub-tab{color:#fff;border-radius:999px;align-items:center;gap:6px;min-height:38px;padding:0 14px;font-size:.86rem;font-weight:700;text-decoration:none;transition:background .18s,transform .18s;display:inline-flex}html main.app-shell.typing-page .typing-hub-tab:hover{background:#ffffff38;transform:translateY(-1px)}html main.app-shell.typing-page .typing-hub-tab.active{color:#1a5fa0;background:#fff}html main.app-shell.typing-page .typing-hub-tab:focus-visible{outline-offset:2px;outline:3px solid #f6c343}@media (max-width:700px){html main.app-shell.typing-page .typing-hub-tabs{order:5;justify-content:center;width:100%}}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-text{letter-spacing:1px;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:500;line-height:1.7}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-stage-top{font-family:Inter,ui-sans-serif,system-ui,sans-serif}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-text .typing-char{border-bottom:3px solid #0000;border-radius:6px;padding:0 1px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-text .typing-current{border-bottom-color:#1a5fa0}@media (prefers-reduced-motion:no-preference){html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-text .typed-correct{animation:.24s cubic-bezier(.2,.8,.2,1) both at-ref-land}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-text .typing-current{animation:1.5s ease-in-out infinite at-ref-caret}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .typing-tutor[data-feedback-animations=true]>.typing-workspace+.appreciation{animation:.5s cubic-bezier(.18,.89,.32,1.28) both at-ref-card-pop;box-shadow:0 0 0 3px #f6c34366,0 18px 40px #f6c34333}}@keyframes at-ref-land{0%{background-color:#48bb7866;transform:translateY(-3px)}to{transform:none}}@keyframes at-ref-caret{0%,to{box-shadow:0 4px 12px #2583d859}50%{box-shadow:0 4px 18px #2583d8a6}}@keyframes at-ref-card-pop{0%{opacity:0;transform:translateY(14px)scale(.96)}to{opacity:1;transform:none}}html main.app-shell:has(>.layout>.trainer) .topic-group{border-top:1px solid var(--ref-line);gap:6px;margin-top:18px;padding-top:14px;display:grid}html main.app-shell:has(>.layout>.trainer) .side-subheading{color:var(--at-muted);letter-spacing:.09em;text-transform:uppercase;padding:0 4px 2px;font-size:.72rem;font-weight:800}html main.app-shell:has(>.layout>.trainer) .training-collections .nav-section{gap:4px;margin-bottom:14px;display:grid}html main.app-shell:has(>.layout>.trainer) .training-collections .nav-section-button{box-shadow:none;color:var(--at-muted);letter-spacing:.09em;text-transform:uppercase;background:0 0;border:0;padding:6px 4px;font-size:.72rem;font-weight:800}html main.app-shell:has(>.layout>.trainer) .training-collections .nav-section-button .nav-chevron{display:none}:is(html main.app-shell:has(>.layout>.trainer) .training-collections .nav-section-button:hover,html main.app-shell:has(>.layout>.trainer) .training-collections .nav-section-button[aria-current=true]){color:var(--at-accent)}html main.app-shell:has(>.layout>.trainer) .training-collections .nav-children{gap:4px;display:grid}html main.app-shell:has(>.layout>.trainer) .key-lock{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}html main.app-shell:has(>.layout>.trainer) .key-lock-status{color:var(--at-muted);max-width:34ch;font-size:.78rem}html main.app-shell:has(>.layout>.trainer) .key-lock-button.locked{color:#fff;background:#2f855a;border-color:#276749}html main.app-shell:has(>.layout>.trainer) .key-lock-button:disabled{opacity:.55;cursor:not-allowed}html main.app-shell:has(>.layout>.trainer) .key-lock-button.armed{color:#172b46;background:#f6c343;border-color:#b48012}html main.app-shell:has(>.layout>.trainer) .key-lock-button.armed:not(:disabled):hover{color:#172b46;background:#ffda65;border-color:#8a6208}html main.app-shell:has(>.layout>.trainer) .key-lock-auto{color:var(--at-ink);align-items:center;gap:8px;margin:8px 0;display:flex}html main.app-shell:has(>.layout>.trainer) .key-lock-auto input{accent-color:#2f855a;width:18px;height:18px;margin:0}html main.app-shell:has(>.layout>.trainer) .sidebar nav{grid-template-columns:minmax(0,1fr);min-width:0}html main.app-shell:has(>.layout>.trainer) .sidebar .nav-group{grid-template-columns:minmax(0,1fr);min-width:0}html main.app-shell:has(>.layout>.trainer) .topic-group{grid-template-columns:minmax(0,1fr);min-width:0}html main.app-shell:has(>.layout>.trainer) .nav-section{grid-template-columns:minmax(0,1fr);min-width:0}html main.app-shell:has(>.layout>.trainer) .nav-children{grid-template-columns:minmax(0,1fr);min-width:0}html main.app-shell:has(>.layout>.trainer) .sidebar nav button{min-width:0;max-width:100%}html main.app-shell:has(>.layout>.trainer) .sidebar nav button>span{overflow-wrap:anywhere;white-space:normal;min-width:0;line-height:1.2}html main.app-shell:has(>.layout>.trainer) .training-collections .nav-children{border-left:0;margin:0;padding-left:0}html main.app-shell:has(>.layout>.trainer) .training-collections .nav-section-button>span{white-space:normal;line-height:1.25}html main.app-shell:has(>.layout>.trainer) .challenge-actions button:disabled{opacity:.5;cursor:not-allowed}html main.app-shell:has(>.layout>.trainer) .session-toolbar{flex-wrap:wrap;gap:10px 22px}html main.app-shell:has(>.layout>.trainer) .session-toolbar .shortcut-layout-select{flex-direction:row;align-items:center;gap:10px;display:inline-flex}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training.typing-path-picker{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:12px;display:grid}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training .typing-path-options{width:auto;display:contents}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training :is(.typing-path-options button,.typing-focus-button){box-sizing:border-box;border:1px solid var(--ref-line);text-align:left;background:var(--at-panel);width:100%;min-height:68px;color:var(--at-ink);font:inherit;cursor:pointer;border-radius:14px;justify-content:flex-start;align-items:center;gap:12px;margin:0;padding:10px 16px;font-size:.98rem;font-weight:700;line-height:1.25;text-decoration:none;display:flex}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training .typing-focus-button:hover{border-color:var(--at-accent);color:var(--at-accent)}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training .typing-path-options button.active{background:var(--at-accent);border-color:var(--at-accent);color:#fff}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training :is(.typing-path-options button,.typing-focus-button):focus-visible{outline:3px solid var(--at-focus);outline-offset:2px}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training .typing-path-options button>span{min-width:0}@media (max-width:1100px){html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training.typing-path-picker{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training.typing-path-picker{grid-template-columns:1fr}}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-stage{gap:6px}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-text-viewport{min-width:0;padding-top:0;-webkit-mask-image:none;mask-image:none}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-text{text-align:start;text-align-last:auto;text-justify:auto;letter-spacing:normal;word-spacing:normal;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:0;padding-top:0;line-height:1.5}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-text .typing-char{padding-inline:0}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-text .typing-word{white-space:normal}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls{--control-height:56px;grid-template-columns:minmax(110px,.8fr) minmax(150px,1.2fr) minmax(190px,1.5fr) minmax(160px,1fr) minmax(210px,1.4fr);align-items:end}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls :is(.tutor-settings-slot,.tutor-voice-control){align-self:end}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls>.tutor-control [data-slot=select-trigger],html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-settings>summary,html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-voice-control{min-height:var(--control-height);box-sizing:border-box;border-radius:10px;width:100%;height:auto;margin-block:0;padding:8px 12px;font-size:14px;line-height:1.3}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-settings>summary{color:#172b46;box-shadow:none;background:#f6c343;border-color:#b48012}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-settings>summary svg{color:#172b46}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-settings>summary:hover{background:#ffda65}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-voice-control{background:var(--at-blue);color:#fff;box-shadow:none;border-color:#1b65a8}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-voice-control :is(svg,strong,small,span){color:inherit}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls .tutor-voice-control:hover{background:#2075c7}html main.app-shell.typing-page .typing-tutor .keyboard-landscape .keyboard-finger-legend{background:var(--at-panel);color:var(--at-ink);border:1px solid var(--at-border);border-radius:10px;padding:8px 10px}html main.app-shell.typing-page .typing-tutor .keyboard-landscape .keyboard-finger-legend>span{font-weight:600;color:var(--at-ink)!important}html main.app-shell:has(>.layout>.trainer) .sidebar nav button{background:var(--at-panel);color:var(--at-ink);border:1px solid var(--at-border);min-height:46px;box-shadow:none;font-weight:650}html main.app-shell:has(>.layout>.trainer) .sidebar nav button :is(span,small,svg){color:inherit;opacity:1}html main.app-shell:has(>.layout>.trainer) .sidebar nav button:hover{background:var(--at-soft);border-color:var(--at-blue)}html main.app-shell:has(>.layout>.trainer) .sidebar nav button.active{color:#fff;background:#1b66ad;border-color:#1b66ad;box-shadow:inset 4px 0 #f6c343}html main.app-shell:has(>.layout>.trainer) .sidebar nav .training-collections .nav-section-button.active{color:#fff}html main.app-shell:has(>.layout>.trainer) .sidebar nav .training-collections .nav-section-button.active:hover{color:#fff}html main.app-shell:has(>.layout>.trainer) .sidebar nav button:focus-visible{outline:3px solid var(--at-focus);outline-offset:2px}@media (max-width:1150px){html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls{grid-template-columns:repeat(6,minmax(0,1fr))}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls>*{grid-column:span 2}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls>:is(.tutor-settings-slot,.tutor-voice-control){grid-column:span 3}}@media (max-width:600px){html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls{grid-template-columns:minmax(0,1fr)}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls>*,html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls>#setting-keyboard,html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-controls>:is(.tutor-settings-slot,.tutor-voice-control){grid-column:auto}}@media (forced-colors:active){html main.app-shell.typing-page .typing-tutor .keyboard-landscape .keyboard-finger-legend>span{color:canvastext!important}}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .top-actions{align-items:center}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .top-actions :is(.search-nav-link,.account-control,.learn-appearance,.site-language-menu summary){box-sizing:border-box;white-space:nowrap;flex-direction:row;justify-content:center;align-items:center;gap:8px;height:44px;min-height:44px;padding:0 14px;line-height:1.2;display:inline-flex}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) .topbar .manual-nav-link svg{flex:none;width:18px;height:18px;display:block}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training .typing-path-options button.active{color:#172b45;background:#f6c343;border-color:#c28c0c}html main.app-shell:is(.typing-page,:has(>.layout>.trainer)) #setting-training .typing-path-options button.active :is(svg,small,span,strong){color:#172b45}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text]{gap:12px}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text]>.typing-controls+.typing-save-note,html main.app-shell.typing-page .typing-tutor[data-practice-mode=text]>.typing-save-note[data-device-layout-source]{display:none}@media (min-width:1151px){html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-workspace{grid-template-rows:minmax(180px,1fr) auto;height:clamp(400px,100svh - 340px,720px);min-height:400px}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .typing-workspace.keyboard-hidden{grid-template-rows:minmax(180px,1fr)}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .floating-typing-keyboard{width:88%}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .keyboard-landscape{padding:6px 10px}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .keyboard-landscape .typing-keyboard{gap:4px;padding-block:4px}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .keyboard-landscape .typing-key-row>span{height:36px;min-height:36px}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .next-key{min-height:26px;margin-bottom:4px}html main.app-shell.typing-page .typing-tutor[data-practice-mode=text] .keyboard-landscape .keyboard-finger-legend{margin-top:5px;padding:5px 8px}}html main.app-shell:has(>.layout>.trainer) .session-toolbar{justify-content:flex-start;align-items:center;gap:12px 18px;min-height:44px;margin-bottom:8px;padding:0}html main.app-shell:has(>.layout>.trainer) .session-toolbar>.shortcut-layout-select{flex-flow:row;flex:280px;align-items:center;gap:10px;min-width:0;margin:0;display:flex}html main.app-shell:has(>.layout>.trainer) .session-toolbar>.shortcut-layout-select>span{white-space:nowrap;flex:none}html main.app-shell:has(>.layout>.trainer) .session-toolbar>.shortcut-layout-select>select{box-sizing:border-box;flex:1 1 0;width:auto;min-width:0;height:44px;min-height:44px;margin:0}html main.app-shell:has(>.layout>.trainer) .shortcut-voice-status{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px 12px;display:flex}html main.app-shell:has(>.layout>.trainer) .shortcut-voice-status>div:not(.score-pills){flex:0 auto}html main.app-shell:has(>.layout>.trainer) .shortcut-voice-status>button{flex:none;margin:0}@media (max-width:760px){html main.app-shell:has(>.layout>.trainer) .session-toolbar{flex-direction:row}html main.app-shell:has(>.layout>.trainer) .session-toolbar>.shortcut-layout-select{flex-basis:100%;width:100%}}@media (min-width:761px) and (max-height:860px){html main.app-shell:has(>.layout>.trainer) .practice-panel{margin-top:10px}html main.app-shell:has(>.layout>.trainer) .keyboard-board{padding:6px 14px 10px}html main.app-shell:has(>.layout>.trainer) :is(.keyboard-main,.keyboard-side){grid-template-rows:repeat(6,36px);gap:4px}html main.app-shell:has(>.layout>.trainer) :is(.keyboard-nav,.keyboard-arrows){grid-template-rows:repeat(2,36px);gap:4px}html main.app-shell:has(>.layout>.trainer) .keyboard-board .keyboard-row{margin-bottom:0}html main.app-shell:has(>.layout>.trainer) .keyboard-board .keyboard-row button{height:36px;min-height:36px}}html main.app-shell:has(>.layout>.trainer) .key-lock-help{color:var(--at-muted);font-size:.78rem;position:relative}html main.app-shell:has(>.layout>.trainer) .key-lock-help summary{cursor:pointer;text-underline-offset:3px;text-decoration:underline}html main.app-shell:has(>.layout>.trainer) .key-lock-help[open]{flex-basis:100%}html main.app-shell:has(>.layout>.trainer) .key-lock-help p{max-width:80ch;margin:8px 0;line-height:1.5}html main.app-shell:has(>.layout>.trainer) .shortcut-key-sound{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}html main.app-shell:has(>.layout>.trainer) .shortcut-key-sound[aria-pressed=true]{background:var(--at-blue);color:#fff;border-color:var(--at-blue)}html main.app-shell:has(>.layout>.trainer) .shortcut-key-sound>span{color:inherit}html main.app-shell:has(>.layout>.trainer) .meeting-shortcut-help{border:1px solid var(--at-border);color:var(--at-muted);border-radius:9px;margin:0 0 8px;padding:8px 12px;font-size:.8rem}html main.app-shell:has(>.layout>.trainer) .meeting-shortcut-help summary{cursor:pointer;font-weight:500}html main.app-shell:has(>.layout>.trainer) .meeting-shortcut-help p{max-width:90ch;margin:8px 0;line-height:1.5}
