:root{--bg: #f7f7f7;--surface: #fff;--text: #262626;--muted: #8c8c8c;--secondary: #737373;--border: #e8e8e8;--control-color: #303030;--control-hover: #171717;--control-subtle: #f0f0f0;--key: #fff;--key-border: #d9d9d9;--key-side: #bcbcbc;--shell: #e8e8e8;--green: #66b89b;--reference-bg: var(--tested-bg);--reference-border: var(--tested-border);--reference-text: var(--tested-text);--tested-bg: #ccebd8;--tested-border: #91bf9f;--tested-text: #245c3b;--tested-detail: #497a5a;--tested-shadow: #a4cdb0;--pressed-bg: #262626;--pressed-border: #262626;--pressed-text: #ffffff;--pressed-detail: #d4d4d4;--pressed-shadow: #262626;--shadow: 0 1px 0 #d5d5d5, 0 2px 3px #0000000a, inset 0 1px 0 #ffffffb3;--key-text: #525252;--color-scheme: light;--focus-ring: #737373;--brand-bg: #fde201;--brand-ink: #010101;--brand-shadow: #b5a20018;--success-soft: #66b89b12;--success-border: #66b89b40;--success-glow: #66b89b60;--panel-shadow: #00000003;--toggle-shadow: #00000014;--case-highlight: #ffffff80;--case-shadow: #0000000b;--case-label: #a3a3a3;--led-idle: #cccccc;--led-shadow: #00000011;--key-detail: #999999;--key-contact-shadow: #00000006;--button-text: #ffffff;--warning-text: #bd8247;--warning-soft: #bd82470b;--toast-shadow: #23203215;--warning-emphasis: #c69656;--error-text: #d26a78;--error-soft: #d26a7810}:root[data-theme=dark]{--bg: #181818;--surface: #222222;--text: #f2f2f2;--muted: #999999;--secondary: #b3b3b3;--border: #383838;--control-color: #e5e5e5;--control-hover: #ffffff;--control-subtle: #343434;--key: #353535;--key-border: #4a4a4a;--key-side: #171717;--shell: #2b2b2b;--green: #76c9a8;--reference-bg: var(--tested-bg);--reference-border: var(--tested-border);--reference-text: var(--tested-text);--tested-bg: #193f2a;--tested-border: #326344;--tested-text: #d8f6e3;--tested-detail: #a4d3b4;--tested-shadow: #123421;--pressed-bg: #e5e5e5;--pressed-border: #e5e5e5;--pressed-text: #000000;--pressed-detail: #525252;--pressed-shadow: #bcbcbc;--shadow: 0 1px 0 #171717, 0 2px 3px #00000022, inset 0 1px 0 #ffffff05;--key-text: #e5e5e5;--color-scheme: dark;--focus-ring: #b3b3b3;--success-soft: #76c9a81a;--success-border: #76c9a859;--success-glow: #76c9a880;--panel-shadow: #00000014;--toggle-shadow: #00000040;--case-highlight: #ffffff0a;--case-shadow: #00000033;--case-label: #999999;--led-idle: #626262;--led-shadow: #00000040;--key-detail: #b3b3b3;--key-contact-shadow: #00000014;--button-text: #222222;--warning-text: #e2b77f;--warning-soft: #e2b77f14;--toast-shadow: #00000066;--warning-emphasis: #efc383;--error-text: #f497a4;--error-soft: #f497a41a}:root{font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none;font-weight:400;color-scheme:var(--color-scheme)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer}button{border:0;background:none;color:inherit}a{color:inherit;text-decoration:none}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}:root[data-focus-input=pointer] :focus-visible{outline:none}h1,h2,h3,p{margin:0}svg{flex-shrink:0}button,a{transition:color .15s,background .15s,border-color .15s}.header{height:85px;background:var(--surface);border-bottom:1px solid var(--border)}.header-inner{max-width:1280px;margin:auto;padding:0 38px;height:100%;display:flex;align-items:center;gap:52px}.brand{display:flex;gap:10px;align-items:center;font-family:Manrope,sans-serif;font-weight:800;font-size:20px;letter-spacing:-.8px;white-space:nowrap}.brand-icon{background:var(--brand-bg);height:36px;width:36px;color:var(--brand-ink);display:grid;place-items:center;border-radius:10px;box-shadow:0 2px 5px var(--brand-shadow)}.header-actions{display:flex;align-items:center;gap:18px;margin-inline-start:auto;white-space:nowrap}.language-button{display:inline-flex;gap:7px;align-items:center;font-size:14px;color:var(--secondary);padding:7px 9px;border-radius:6px}.language-button[data-state=open]{background:var(--bg);color:var(--text)}.language-current{max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.language-chevron{transition:transform .15s}.language-button[data-state=open] .language-chevron{transform:rotate(180deg)}.popover-content{z-index:50;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;outline:none}.language-popover{padding:6px;width:max-content;max-width:calc(100vw - 24px);max-height:var(--radix-popover-content-available-height);overflow-y:auto;overscroll-behavior:contain}.language-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(10,auto);gap:2px 4px}.language-option{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:34px;padding:6px 10px;border-radius:4px;text-align:start;font-size:14px;color:var(--secondary)}.language-option:hover,.language-option:focus-visible{background:var(--bg);color:var(--text)}.language-option:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.language-option[aria-current=page]{background:var(--bg);color:var(--text);font-weight:600}@media(max-width:640px){.language-grid{grid-template-rows:repeat(20,auto)}.language-option{min-height:36px;gap:6px;padding-inline:8px;font-size:14px}.language-current{max-width:88px}}.keyboard-shell,.history-key,.history-interval,.passage,.typing-tool textarea{direction:ltr}:root[dir=rtl] .history-table th:first-child{text-align:right}.header-divider,.toolbar-divider{height:18px;width:1px;background:var(--border);display:block;flex-shrink:0}.icon-button{height:32px;width:32px;display:inline-flex;align-items:center;justify-content:center;color:var(--secondary);border-radius:7px}main{max-width:1280px;margin:auto;padding:0 38px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px var(--success-soft);flex-shrink:0}.workspace{scroll-margin-top:24px}.test-panel{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 4px 24px var(--panel-shadow);overflow:hidden}.keyboard-toolbar{display:flex;justify-content:space-between;align-items:center;padding:21px 28px 11px;gap:20px}.layout-controls,.keyboard-actions{display:flex;align-items:center;gap:17px}.os-toggle{display:flex;background:var(--bg);padding:3px;border:1px solid var(--border);border-radius:7px}.os-toggle button{display:flex;align-items:center;justify-content:center;gap:4px;color:var(--muted);font-size:14px;padding:4px 9px;border-radius:4px}.os-toggle button.active{background:var(--surface);box-shadow:0 1px 4px var(--toggle-shadow);color:var(--text)}.windows-icon{font-size:17px;line-height:14px}.toolbar-button{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--secondary);padding:6px 0;white-space:nowrap}.volume-control{display:flex;align-items:center;gap:6px;color:var(--secondary);font-size:14px}.volume-control input{flex:0 0 65px;width:65px;height:20px;margin:0;accent-color:var(--control-color);cursor:pointer}.volume-control input,.threshold-control input{-moz-appearance:none;appearance:none;-webkit-appearance:none;height:20px;padding:0;border:0;background:transparent;outline:none}.volume-control input::-webkit-slider-runnable-track,.threshold-control input::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:linear-gradient(to right,var(--control-color) var(--slider-progress),var(--shell) var(--slider-progress))}.volume-control input::-webkit-slider-thumb,.threshold-control input::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:10px;height:10px;margin-top:-3px;border:0;border-radius:50%;background:var(--control-color)}.volume-control input::-moz-range-track,.threshold-control input::-moz-range-track{height:4px;border:0;border-radius:999px;background:var(--shell)}.volume-control input::-moz-range-progress,.threshold-control input::-moz-range-progress{height:4px;border-radius:999px;background:var(--control-color)}.volume-control input::-moz-range-thumb,.threshold-control input::-moz-range-thumb{width:10px;height:10px;border:0;border-radius:50%;background:var(--control-color)}:root:not([data-focus-input=pointer]) .volume-control input:focus-visible::-webkit-slider-thumb,:root:not([data-focus-input=pointer]) .threshold-control input:focus-visible::-webkit-slider-thumb{outline:2px solid var(--focus-ring);outline-offset:3px}:root:not([data-focus-input=pointer]) .volume-control input:focus-visible::-moz-range-thumb,:root:not([data-focus-input=pointer]) .threshold-control input:focus-visible::-moz-range-thumb{outline:2px solid var(--focus-ring);outline-offset:3px}.volume-control span{flex:0 0 34px;width:34px;white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}.board-viewport{padding:16px 28px 8px;overflow-x:auto;outline:none;scrollbar-width:thin;scrollbar-color:var(--key-border) transparent;--keyboard-row-height: 43px;--keyboard-function-height: 34px;--keyboard-case-extra: 98px;--keyboard-case-height: max( 335px, calc( 5 * var(--keyboard-row-height) + var(--keyboard-function-height) + var(--keyboard-case-extra) ) );height:calc(var(--keyboard-case-height) + 48px);display:flex;align-items:center;overflow-y:hidden}.keyboard-shell{width:100%;min-width:930px;background:var(--shell);border:1px solid var(--key-border);border-radius:23px;padding:12px 13px 17px;box-shadow:inset 0 1px 0 var(--case-highlight),0 2px color-mix(in srgb,var(--key-border) 75%,var(--surface)),0 8px 20px var(--case-shadow);-webkit-user-select:none;user-select:none;height:var(--keyboard-case-height);display:flex;flex-direction:column;flex-shrink:0}.keyboard-leds{color:var(--case-label);font-family:Manrope,sans-serif;font-size:10px;font-weight:700;letter-spacing:.1px;display:flex;justify-content:space-around;width:100%}.keyboard-led{display:inline-flex;flex-direction:column;align-items:center;gap:6px;white-space:nowrap}.keyboard-led i{display:block;height:4px;width:4px;border-radius:50%;background:var(--led-idle);box-shadow:inset 0 1px 1px var(--led-shadow)}.keyboard-led i.lit{background:var(--green);box-shadow:0 0 5px var(--success-glow)}.keyboard-body{display:flex;gap:13px;flex:1;min-height:0}.main-block{flex:15;min-width:0}.main-rows{display:flex;flex-direction:column;gap:7px}.key-row{display:flex;gap:5px}.key{--key-depth: min(3px, calc(var(--keyboard-row-height) * .07));--key-side-color: var(--key-side);height:var(--keyboard-row-height);background:var(--key);border:1px solid var(--key-border);border-bottom-color:var(--key-border);border-radius:9px;position:relative;box-shadow:inset 0 -1px 0 var(--key-contact-shadow),0 var(--key-depth) 0 var(--key-side-color),0 calc(var(--key-depth) + 2px) 3px var(--key-contact-shadow);color:var(--key-text);min-width:0;display:flex;align-items:center;justify-content:center;transition:background 80ms,border-color 80ms,transform 80ms,box-shadow 80ms}.key-label{font-size:14px;display:flex;gap:8px;align-items:center;justify-content:center;width:100%;white-space:nowrap}.key .secondary{position:absolute;top:4px;left:7px;font-size:14px;color:var(--key-detail)}.key:has(.secondary) .key-label{padding-top:10px}.key.is-tested{background:var(--tested-bg);color:var(--tested-text);border-color:var(--tested-border)}.key.is-tested .secondary{color:var(--tested-detail)}.key.is-pressed{--key-side-color: var(--pressed-shadow);background:var(--pressed-bg);color:var(--pressed-text);border-color:var(--pressed-border);box-shadow:0 1px 0 var(--key-side-color),0 2px 2px var(--key-contact-shadow);transform:translateY(max(0px,calc(var(--key-depth) - 1px)))}.key.is-pressed .secondary{color:var(--pressed-detail)}.key.space-key .space-mark{width:40px;height:3px;border:1px solid var(--key-border);border-top:0;border-radius:0 0 2px 2px}.homing-bar{width:8px;height:2px;background:var(--key-border);position:absolute;bottom:6px;left:calc(50% - 4px);border-radius:3px}.function-row{display:flex;gap:5px;margin-bottom:16px}.function-row .key{height:var(--keyboard-function-height)}.function-row .key:first-child{margin-right:25px}.function-row .key:nth-child(5),.function-row .key:nth-child(9){margin-right:13px}.function-row .key-label{font-size:14px}.navigation-block{flex:3.1;display:flex;flex-direction:column;align-self:flex-start}.system-row{display:flex;gap:5px;margin-bottom:16px}.system-row .key{height:var(--keyboard-function-height)}.system-row .key-label{font-size:14px}.navigation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px 5px}.navigation-grid .key-label{font-size:14px}.arrow-grid{margin-top:calc(var(--keyboard-row-height) + 14px);display:grid;grid-template-columns:repeat(3,1fr);gap:7px 5px}.arrow-grid .key:first-child{grid-column:2}.arrow-grid .key:nth-child(2){grid-column:1}.arrow-grid .key-label{font-size:17px;font-weight:400}.numpad-block{flex:4.15;min-width:0}.numpad-header{height:var(--keyboard-function-height);margin-bottom:16px;display:flex;align-items:center;justify-content:center}.numpad-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(5,var(--keyboard-row-height));gap:7px 5px}.numpad-grid .key-label{font-size:14px}.numpad-grid .NumpadAdd{grid-column:4;grid-row:2 / span 2;height:auto}.numpad-grid .NumpadEnter{grid-column:4;grid-row:4 / span 2;height:auto}.numpad-grid .NumpadEnter .key-label{font-size:14px}.numpad-grid .Numpad0{grid-column:span 2}.layout-tkl{min-width:770px;max-width:1000px;margin:auto}.layout-compact{min-width:650px;max-width:860px;margin:auto;padding-top:14px}.layout-compact .key{height:50px}.keyboard-caption{display:flex;align-items:center;justify-content:space-between;padding:22px 29px 24px;gap:20px}.legend{display:flex;gap:17px;align-items:center}.legend>span{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--secondary);white-space:nowrap}.legend-key{height:10px;width:10px;border:1px solid var(--key-border);background:var(--key);border-radius:3px}.legend-key.tested{background:var(--tested-bg);border-color:var(--tested-border)}.legend-key.pressed{background:var(--pressed-bg);border-color:var(--pressed-border)}.stats-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:1px solid var(--border);padding:22px 9px}.stat{padding:0 27px;border-right:1px solid var(--border)}.stat:last-child{border-right:0}.stat-reset{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--secondary);font-size:14px}.stat-title{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--secondary)}.stat-title>svg{color:var(--muted)}.stat-value{font-family:Manrope,sans-serif;font-size:29px;letter-spacing:-1px;font-weight:650;margin-top:8px;color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1}.stat-value>span{font-family:DM Sans,PingFang SC,sans-serif;font-size:14px;font-weight:400;letter-spacing:0;color:var(--muted);margin-left:9px}.history-panel{margin-top:19px;border:1px solid var(--border);border-radius:13px;background:var(--surface);overflow:hidden}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:21px 25px 17px}.section-heading>.text-button{flex-shrink:0}.history-heading{flex-wrap:wrap;row-gap:12px}.threshold-control{display:flex;align-items:center;gap:8px;color:var(--secondary);font-size:14px}.threshold-control input{width:100px;margin:0;accent-color:var(--control-color);cursor:pointer}.threshold-control output{min-width:45px;text-align:right;font-variant-numeric:tabular-nums}.section-heading h2{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}.count-badge{font-size:14px;line-height:1;padding:4px 5px;background:var(--bg);color:var(--muted);font-weight:400;border-radius:4px;min-width:20px;text-align:center}.section-heading p{font-size:14px;color:var(--muted);margin-top:5px}.text-button{display:flex;align-items:center;gap:6px;color:var(--secondary);font-size:14px;padding:5px 0}.history-content{border-top:1px solid var(--border);display:flex;min-height:98px}.event-list{flex:1;min-width:0}.empty-history{min-height:98px;display:flex;align-items:center;justify-content:center;padding:20px}.history-timeline{max-height:480px;overflow:auto;scrollbar-width:thin;scrollbar-gutter:stable}.history-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}.history-table th,.history-table td{padding:10px 20px;text-align:center;vertical-align:middle}.history-table thead th{position:sticky;top:0;z-index:1;height:42px;border-bottom:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:14px;font-weight:400}.history-table th:first-child{text-align:left}.interval-heading{display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}.history-table .threshold-control{order:initial;flex:0 0 123px;min-width:0;max-width:123px;gap:6px;font-size:12px}.history-table .threshold-control input{flex:1;width:0;min-width:0}.history-table .threshold-control output{flex:0 0 48px;width:48px;min-width:48px;white-space:nowrap}.history-table .history-export{padding-inline:6px}.history-table tbody tr+tr>*{border-top:1px solid var(--border)}.timing-help{position:relative;cursor:help;text-decoration:underline dotted;text-underline-offset:3px}.timing-help:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.timing-tooltip{display:none;position:fixed;z-index:50;width:396px;max-width:calc(100vw - 32px);padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:0 4px 16px var(--toast-shadow);color:var(--text);font-size:14px;line-height:1.6;text-decoration:none}.timing-help:hover .timing-tooltip,.timing-help:focus .timing-tooltip{display:block}.history-interval{display:block;color:var(--secondary);font-size:14px;font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-interval.problem-interval{color:var(--error-text);font-weight:600}.history-key{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:44px;height:44px;padding:0 6px;border:1px solid var(--key-border);border-radius:9px;background:var(--key);color:var(--key-text);box-shadow:inset 0 -1px 0 var(--key-contact-shadow),0 3px 0 var(--key-side),0 5px 3px var(--key-contact-shadow);font:500 14px Manrope,sans-serif;white-space:nowrap}.history-entry .history-key.chatter-key{color:var(--error-text);background:var(--error-soft);border-color:var(--error-text)}.history-interval.held-time{color:var(--pressed-bg);font-weight:600}.toast{position:fixed;bottom:27px;left:50%;transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);color:var(--text);box-shadow:0 5px 30px var(--toast-shadow);padding:14px 17px;border-radius:10px;font-size:14px;max-width:90vw}.toast>svg{color:var(--green)}.toast button{display:grid;place-items:center;margin-left:15px;color:var(--muted)}.diagnostic-heading{padding:22px 30px;text-align:center}.diagnostic-heading h2{font-size:23px;font-weight:650;letter-spacing:-.5px}.diagnostic-heading p{font-size:14px;color:var(--secondary);margin-top:10px}.diagnostic-numbers{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:24px}.diagnostic-numbers strong{font-family:Manrope,sans-serif;font-size:35px;font-weight:650;line-height:1;color:var(--control-color);font-variant-numeric:tabular-nums}.diagnostic-numbers small{font-size:14px;margin-left:5px;font-weight:400;color:var(--muted)}.diagnostic-numbers>span{font-size:14px;color:var(--secondary)}.diagnostic-numbers i{width:1px;height:30px;background:var(--border);margin:0 17px}.diagnostic-numbers .warning-text{color:var(--warning-emphasis)}.typing-tool{padding:35px 45px}.typing-stats{display:flex;align-items:center;gap:45px;max-width:760px;margin:35px auto 22px;border-bottom:1px solid var(--border);padding-bottom:23px}.typing-stats>div{display:flex;flex-direction:column;gap:4px}.typing-stats strong{font-family:Manrope,sans-serif;font-size:28px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--control-color)}.typing-stats small{font-size:14px;margin-left:3px}.typing-stats span{font-size:14px;color:var(--muted)}.typing-stats>button{margin-inline-start:auto}.passage{font-family:DM Sans,sans-serif;line-height:1.9;font-size:23px;max-width:760px;margin:auto;color:var(--muted);letter-spacing:.3px;-webkit-user-select:none;user-select:none}.passage .correct{color:var(--green)}.passage .incorrect{color:var(--error-text);background:var(--error-soft);border-bottom:1px solid var(--error-text)}.passage .cursor{border-left:2px solid var(--control-color);margin-left:-2px}.typing-tool textarea{display:block;width:100%;max-width:760px;resize:vertical;min-height:100px;margin:23px auto 17px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:16px;color:var(--text);font-size:14px;line-height:1.8}.typing-tool textarea::placeholder{color:var(--muted);font-size:14px}.typing-footer{max-width:760px;margin:auto;display:flex;align-items:center;gap:7px;font-size:14px;color:var(--muted)}.typing-footer .text-button{margin-inline-start:auto}@media(min-width:1400px){.header-inner,main{max-width:1320px}.board-viewport{--keyboard-row-height: 47px;--keyboard-function-height: 36px;--keyboard-case-extra: 101px}.keyboard-shell{padding:13px 15px 19px}.keyboard-caption{padding-bottom:26px}.stat-value{font-size:31px}}@media(max-width:1100px){.header-inner{gap:30px;padding:0 25px}.header-actions{gap:12px}main{padding:0 25px}.keyboard-toolbar{padding:20px 21px 10px}.board-viewport{padding-left:21px;padding-right:21px}.keyboard-shell{min-width:880px}.layout-tkl{min-width:740px}.layout-compact{min-width:630px}.keyboard-caption{padding-left:22px;padding-right:22px}.board-viewport{--keyboard-row-height: 39px}.key-label{font-size:14px}.function-row .key:first-child{margin-right:15px}.function-row .key:nth-child(5),.function-row .key:nth-child(9){margin-right:8px}}@media(max-width:850px){.header{height:73px}.header-inner{gap:20px}.header-actions{gap:17px}.keyboard-toolbar{padding:18px 20px 8px}.toolbar-divider{display:none}.board-viewport{padding-bottom:12px}.stat{padding:0 18px}.stat-title{font-size:14px;gap:5px}.stat-title>svg{width:13px}.stat-value{font-size:26px}.stat-value>span{font-size:14px;margin-left:6px}}@media(max-width:560px){.header{height:66px}.header-inner{padding:0 18px}.brand{font-size:18px;gap:7px}.brand-icon{height:31px;width:31px;border-radius:9px}.brand-icon>svg{width:19px}.header-actions{gap:12px}.header-divider{display:none}.language-button{font-size:14px}.language-button>svg{width:14px}.header-actions .icon-button{width:26px}main{padding:0 14px}.test-panel{border-radius:12px}.keyboard-toolbar{padding:13px 13px 6px;flex-wrap:wrap;gap:10px}.layout-controls{gap:12px}.os-toggle button{font-size:14px;padding:3px 6px}.os-toggle{padding:2px}.keyboard-actions{gap:9px}.keyboard-actions .toolbar-button>span{display:none}.keyboard-actions .toolbar-button{padding:5px}.keyboard-actions .expand-button{display:none}.board-viewport{padding:13px 13px 10px}.keyboard-shell{min-width:850px}.layout-tkl{min-width:720px}.layout-compact{min-width:620px}.keyboard-caption{padding:15px 14px 10px;gap:8px}.legend{gap:11px}.legend>span{font-size:14px;gap:4px}.legend-key{width:8px;height:8px;border-radius:2px}.stats-grid{padding:16px 0}.stat{padding:0 9px}.stat-title{font-size:14px;gap:3px}.stat-title>svg{width:11px;height:11px}.stat-value{font-size:24px;margin-top:8px}.stat-value>span{font-size:14px;margin-left:4px}.history-panel{margin-top:14px}.section-heading{padding:17px 16px 14px}.section-heading h2{font-size:14px}.threshold-control{order:1;flex-basis:100%}.threshold-control input{flex:1;min-width:0;width:auto}.section-heading p{font-size:14px}.text-button{font-size:14px;gap:5px}.text-button>svg{width:13px}.diagnostic-heading{padding:21px 14px 15px}.diagnostic-heading h2{font-size:19px}.diagnostic-heading p{font-size:14px;line-height:1.8}.diagnostic-numbers{gap:8px;margin-top:19px}.diagnostic-numbers strong{font-size:28px}.diagnostic-numbers>span{font-size:14px}.diagnostic-numbers small{font-size:14px}.diagnostic-numbers i{margin:0 8px}.typing-tool{padding:25px 18px}.typing-stats{gap:30px;margin:27px auto 20px;padding-bottom:18px}.typing-stats strong{font-size:26px}.typing-stats span{font-size:14px}.passage{font-size:18px;line-height:1.9;letter-spacing:.1px}.typing-tool textarea{min-height:95px;font-size:16px;padding:12px}.typing-tool textarea::placeholder{font-size:14px}.typing-footer{font-size:14px;flex-wrap:wrap;line-height:1.7}.typing-footer>.text-button{font-size:14px}.toast{font-size:14px;bottom:15px;padding:12px;white-space:nowrap}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media(max-width:380px){.header-inner{gap:10px}.brand{font-size:16px}.header-actions{gap:8px}.keyboard-caption{flex-wrap:wrap;row-gap:13px}}.header{height:72px}.workspace{padding-top:28px;padding-bottom:32px}.diagnostic-numbers,.typing-stats{margin-top:0}.empty-history>span{font-size:14px;color:var(--muted)}@media(max-width:560px){.header{height:66px}.workspace{padding-top:18px;padding-bottom:20px}.typing-stats{margin-top:0}}.layout-controls{flex-wrap:wrap}.layout-toggle button{min-width:42px}.layout-compact .keyboard-body{align-items:center}@media(max-width:400px){.header-inner{gap:8px;padding-inline:12px}.header-actions{gap:6px}.brand{font-size:16px}}.key.is-reference{border-style:dashed}.legend-key.reference{background:var(--reference-bg);border:1px dashed var(--reference-border)}.reference-note{color:var(--secondary);font-size:14px;line-height:1.6}.keyboard-caption:has(.reference-note){flex-wrap:wrap;gap:10px 20px}.legend{flex-wrap:wrap}.keyboard-guide{padding:36px 0 52px;border-top:1px solid var(--border)}.keyboard-guide h1{font-size:clamp(22px,3vw,28px);font-weight:700;line-height:1.3;letter-spacing:-.5px;margin-bottom:12px}.keyboard-guide p{color:var(--secondary);font-size:14px;line-height:1.8;max-width:76ch}.guide-intro p{max-width:none}.keyboard-guide h2{font-size:17px;font-weight:600;margin:30px 0 16px}.guide-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;padding:0;margin:0;list-style-position:inside}.guide-steps li::marker{color:var(--secondary);font-size:14px}.guide-steps h3{display:inline;font-size:14px;font-weight:600}.guide-steps p{margin-top:8px;font-size:14px}.guide-faq{max-width:860px}.guide-faq details{border-bottom:1px solid var(--border)}.guide-faq summary{padding:15px 0;font-size:14px;font-weight:500;cursor:pointer}.guide-faq details p{padding:0 0 16px;font-size:14px}@media(max-width:640px){.keyboard-guide{padding:28px 0 36px}.guide-steps{grid-template-columns:1fr;gap:18px}}.guide-languages{margin-top:28px}.guide-languages summary{cursor:pointer;color:var(--secondary);font-size:14px}.guide-languages nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:4px 16px;padding-top:16px}.guide-languages a{padding:6px 0;font-size:14px;color:var(--secondary)}.guide-languages a:hover{color:var(--text);text-decoration:underline}.guide-languages a[aria-current=page]{color:var(--text);font-weight:600}html{scrollbar-gutter:stable}.app-shell{--app-header-height: 72px}.app-shell>.header{height:var(--app-header-height)}.workspace{height:calc(100dvh - var(--app-header-height));min-height:0;display:flex;flex-direction:column;gap:12px;padding-block:16px}.workspace>.test-panel{display:flex;flex-direction:column;flex:0 1 auto;min-height:0}.workspace .keyboard-toolbar{flex-shrink:0;flex-wrap:wrap;gap:8px 16px;padding-block:12px 8px}.workspace .board-viewport{flex:1 1 376px;min-height:0;height:376px;max-height:376px;padding-block:8px;container-type:size;overscroll-behavior:contain}.workspace .board-viewport .keyboard-shell{--keyboard-row-height: clamp(12px, calc((100cqh - 96px) / 6), 47px);--keyboard-function-height: min(36px, var(--keyboard-row-height));height:auto;padding-block:10px 12px;border-radius:16px}.workspace .board-viewport .layout-compact{--keyboard-row-height: clamp(12px, calc((100cqh - 84px)/5) , 50px)}.workspace .board-viewport .layout-compact .key{height:var(--keyboard-row-height)}.workspace .keyboard-caption,.workspace .stats-grid{flex-shrink:0;padding-block:12px}.workspace .stat-value{margin-top:5px;font-size:25px}.workspace>.history-panel{display:flex;flex-direction:column;flex:1 0 clamp(170px,26dvh,240px);min-height:0;margin-top:0}.workspace .history-heading{flex-shrink:0;padding-block:12px}.workspace .history-content,.workspace .event-list{display:flex;flex-direction:column;flex:1;min-height:0}.workspace .history-timeline{flex:1;min-height:0;max-height:none;overflow:auto;overscroll-behavior:contain}.workspace .empty-history{flex:1;min-height:0;padding:12px}.language-button:not(:disabled):hover,.icon-button:not(:disabled):hover,.toolbar-button:not(:disabled):hover,.text-button:not(:disabled):hover,.stat-reset:not(:disabled):hover,.os-toggle button:not(:disabled):hover,.typing-stats>button:not(:disabled):hover,.toast button:not(:disabled):hover{color:var(--text)}:root[data-screen-locked],:root[data-screen-locked] body{overflow:hidden;overscroll-behavior:none}.app-shell.is-screen-locked{position:relative;height:100dvh;overflow:hidden;background:var(--bg)}.is-screen-locked .keyboard-guide{display:none}@media(max-width:560px){.app-shell{--app-header-height: 66px}.workspace{gap:10px;padding-block:10px}.workspace .keyboard-toolbar{gap:6px;padding-block:8px 4px}.workspace .keyboard-caption{padding-block:8px}.workspace .stats-grid{padding-block:9px}.workspace .stat-value{font-size:22px}.workspace .history-heading{padding-block:10px;row-gap:6px}.header-actions{gap:6px}.language-button{padding-inline:4px}.language-chevron{display:none}}@media(max-height:600px)and (min-width:700px){.app-shell{--app-header-height: 52px}.workspace{flex-direction:row;gap:12px;padding-block:10px}.workspace>.test-panel{flex:1.6;min-width:0}.workspace>.history-panel{flex:1;min-width:0}.workspace .keyboard-toolbar{padding:8px 12px 4px}.workspace .keyboard-caption{padding:8px 12px}.workspace .stats-grid{padding-block:8px}.workspace .stat-value{font-size:20px}.workspace .history-heading{padding:10px 12px;gap:6px}.workspace .threshold-control{order:1;flex-basis:100%}.workspace .threshold-control input{flex:1;min-width:0;width:auto}}@container (max-height: 220px){.workspace .board-viewport .keyboard-shell{--keyboard-row-height: clamp(12px, calc((100cqh - 32px) / 6), 35px);padding-block:6px}.workspace .board-viewport .layout-compact{--keyboard-row-height: clamp(12px, calc((100cqh - 24px)/5) , 35px)}.main-rows,.navigation-grid,.arrow-grid,.numpad-grid{row-gap:3px}.arrow-grid{margin-top:calc(var(--keyboard-row-height) + 6px)}.function-row,.system-row,.numpad-header{margin-bottom:6px}.key .secondary{display:none}.key:has(.secondary) .key-label{padding-top:0}.homing-bar{bottom:2px}}.workspace .history-key{min-width:32px;min-height:30px}@media(max-width:360px){.language-current{display:none}}.stats-grid .stat{min-width:0}.apm-readout{display:flex;align-items:center;gap:clamp(4px,1vw,10px)}.apm-number{flex:0 0 4ch;letter-spacing:0}.apm-trend{flex:1;min-width:0}.apm-trend svg{display:block;width:100%;height:.85em;overflow:visible}.apm-trend polyline{fill:none;stroke:var(--tested-text);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.apm-baseline{stroke:var(--border);vector-effect:non-scaling-stroke}.apm-trend-axis{display:flex;justify-content:space-between;margin-top:2px;color:var(--secondary);font-family:DM Sans,sans-serif;font-size:14px;font-weight:400;line-height:1;letter-spacing:0}@media(max-width:560px){.stats-grid .stat{padding-inline:7px}.stats-grid .stat-title{min-height:2.8em;line-height:1.4}.stats-grid .stat-title>svg{display:none}}.site-footer{max-width:1280px;width:100%;margin:0 auto;padding:0 38px 32px}.footer-bottom-row{border-top:1px solid var(--border);padding-top:24px;display:flex;justify-content:space-between;align-items:center;gap:24px}.footer-brand{display:inline-flex;align-items:center;gap:9px;font-size:13px;color:var(--secondary)}.footer-brand-icon{display:grid;place-items:center;width:26px;height:26px;border-radius:6px;background:var(--brand-bg);color:var(--brand-ink)}.footer-nav,.footer-page-links{display:flex;align-items:center;gap:32px}.footer-nav a{color:var(--secondary);font-size:13px;padding-block:8px}.footer-nav a:hover,.footer-brand:hover,.footer-nav a[aria-current=page]{color:var(--text)}.footer-nav a:hover{text-decoration:underline;text-underline-offset:4px}.is-screen-locked .site-footer{display:none}.document-shell{min-height:100dvh;display:flex;flex-direction:column}.document-shell .header-inner{justify-content:space-between}.document-page{width:100%;flex:1;padding-block:48px 72px}.document-content{max-width:760px;margin-inline:auto;font-size:15px;line-height:1.8;overflow-wrap:break-word}.document-back{display:inline-block;color:var(--secondary);font-size:13px;margin-bottom:24px}.document-content h1{font-size:clamp(26px,4vw,36px);line-height:1.25;letter-spacing:-.7px;margin-bottom:24px}.document-content h2{font-size:19px;line-height:1.4;margin:32px 0 12px;font-weight:600}.document-content p{margin-bottom:16px;color:var(--secondary)}.document-content .document-date{font-size:13px;margin-bottom:32px}.document-content p a{color:var(--text);text-decoration:underline;text-underline-offset:3px}.document-back:hover{color:var(--text);text-decoration:underline}@media(max-width:700px){.site-footer{padding:0 20px 24px}.footer-bottom-row{align-items:flex-start;flex-direction:column;gap:16px}.footer-nav{flex-wrap:wrap;gap:12px 28px}.footer-page-links{gap:24px}.document-page{padding:32px 20px 48px}}
