[data-tool-root="keyboard-latency-test"]{--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-3xl:48px;--gray-50:#fbfbfb;--gray-100:#f7f7f7;--gray-150:#f2f2f2;--gray-200:#eeeeee;--gray-300:#dddddd;--gray-400:#bbbbbb;--gray-500:#999999;--gray-600:#666666;--gray-700:#444444;--gray-800:#222222;--gray-900:#111111;--bg-canvas:#ffffff;--bg-module:#f7f7f7;--bg-workspace:#f2f2f2;--bg-result-surface:#ffffff;--bg-hover:#eeeeee;--bg-active:#111111;--text-primary:#111111;--text-secondary:#444444;--text-tertiary:#666666;--text-on-dark:#ffffff;--border:#dddddd;--border-strong:#222222;--success:#276749;--danger:#a12424;--warning:#805300;--info:#315f7d;--radius-sm:4px;--radius:6px;--radius-round:999px;box-sizing:border-box;width:100%;margin:0;padding:0 360px 48px 30px;color:var(--text-primary);background:var(--bg-canvas);font-family:"Noto Sans SC",system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:15px;line-height:1.7}
[data-tool-root="keyboard-latency-test"],[data-tool-root="keyboard-latency-test"] *,[data-tool-root="keyboard-latency-test"] *::before,[data-tool-root="keyboard-latency-test"] *::after{box-sizing:border-box}
[data-tool-root="keyboard-latency-test"] .tool-page-header{padding:24px 0 16px;border-bottom:1px solid var(--border)}[data-tool-root="keyboard-latency-test"] .tool-page-header h1{margin:0;font-size:30px;line-height:1.2;letter-spacing:-.5px;font-weight:800}[data-tool-root="keyboard-latency-test"] .page-description{margin:4px 0 0;color:var(--text-tertiary)}
[data-tool-root="keyboard-latency-test"] .tool-workspace{margin-top:16px}[data-tool-root="keyboard-latency-test"] .workspace-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:stretch;gap:16px}[data-tool-root="keyboard-latency-test"] .input-panel,[data-tool-root="keyboard-latency-test"] .result-panel{display:flex;flex-direction:column;min-width:0;padding:16px 24px;background:var(--bg-workspace);border:1px solid var(--border);border-radius:var(--radius)}[data-tool-root="keyboard-latency-test"] .panel-label{margin:0 0 12px;font-size:16px;font-weight:800}
[data-tool-root="keyboard-latency-test"] .field{min-width:0;margin-bottom:12px}[data-tool-root="keyboard-latency-test"] .field label{display:block;margin-bottom:4px;color:var(--text-secondary);font-size:13px;font-weight:700}[data-tool-root="keyboard-latency-test"] .field-help,[data-tool-root="keyboard-latency-test"] .field-error{margin:4px 0 0;font-size:13px}[data-tool-root="keyboard-latency-test"] .field-help{color:var(--text-tertiary)}[data-tool-root="keyboard-latency-test"] .field-error{color:var(--danger)}[data-tool-root="keyboard-latency-test"] input{width:100%;min-height:42px;padding:9px 12px;color:var(--text-primary);background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);font:inherit;font-variant-numeric:tabular-nums}[data-tool-root="keyboard-latency-test"] input:focus{border-color:var(--border-strong)}[data-tool-root="keyboard-latency-test"] input[aria-invalid="true"]{border-color:var(--danger)}[data-tool-root="keyboard-latency-test"] :focus-visible{outline:2px solid var(--border-strong);outline-offset:2px}
[data-tool-root="keyboard-latency-test"] .btn{min-height:40px;min-width:80px;padding:0 16px;background:var(--bg-canvas);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius);font:600 14px/1.2 inherit;cursor:pointer}[data-tool-root="keyboard-latency-test"] .btn:hover{background:var(--bg-hover);border-color:var(--gray-400)}[data-tool-root="keyboard-latency-test"] .btn-primary{background:var(--bg-active);color:var(--text-on-dark);border-color:var(--bg-active)}[data-tool-root="keyboard-latency-test"] .btn-primary:hover{background:var(--gray-800)}[data-tool-root="keyboard-latency-test"] .btn:disabled{cursor:not-allowed;opacity:.55}[data-tool-root="keyboard-latency-test"] .button-row{display:flex;flex-wrap:wrap;gap:8px}[data-tool-root="keyboard-latency-test"] .session-actions .btn{flex:1 1 160px}
[data-tool-root="keyboard-latency-test"] .capture-zone{display:grid;place-items:center;align-content:center;gap:6px;min-height:146px;margin:12px 0;padding:20px;text-align:center;background:var(--bg-canvas);border:1px dashed var(--gray-400);border-radius:var(--radius);cursor:text}[data-tool-root="keyboard-latency-test"] .capture-zone.is-active{border-style:solid;border-color:var(--border-strong)}[data-tool-root="keyboard-latency-test"] .capture-zone.is-paused{background:var(--gray-100)}[data-tool-root="keyboard-latency-test"] .capture-zone strong{display:block;font-size:clamp(20px,3vw,32px);line-height:1.25}[data-tool-root="keyboard-latency-test"] .capture-zone span{color:var(--text-tertiary)}
[data-tool-root="keyboard-latency-test"] .live-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:10px 0;background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius)}[data-tool-root="keyboard-latency-test"] .live-metrics div{min-width:0;padding:0 10px}[data-tool-root="keyboard-latency-test"] .live-metrics div+div{border-left:1px solid var(--border)}[data-tool-root="keyboard-latency-test"] .live-metrics dt{color:var(--text-tertiary);font-size:12px}[data-tool-root="keyboard-latency-test"] .live-metrics dd{margin:1px 0 0;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
[data-tool-root="keyboard-latency-test"] .sample-progress{margin-top:12px}[data-tool-root="keyboard-latency-test"] .sample-progress__meta{display:flex;justify-content:space-between;gap:8px;font-size:13px}[data-tool-root="keyboard-latency-test"] .progress-track{height:10px;margin-top:6px;overflow:hidden;background:var(--gray-200);border-radius:var(--radius-round)}[data-tool-root="keyboard-latency-test"] .progress-fill{display:block;width:var(--progress,0%);height:100%;background:var(--gray-900);border-radius:inherit;transition:width .1s linear}[data-tool-root="keyboard-latency-test"] .phase-line{display:flex;justify-content:space-between;gap:8px;margin:10px 0 0;color:var(--text-secondary)}[data-tool-root="keyboard-latency-test"] .status-line{min-height:24px;margin:8px 0 0;color:var(--text-secondary)}[data-tool-root="keyboard-latency-test"] .status-line[data-kind="error"]{color:var(--danger)}[data-tool-root="keyboard-latency-test"] .status-line[data-kind="success"]{color:var(--success)}
[data-tool-root="keyboard-latency-test"] .result-summary{display:flex;flex:1;flex-direction:column;min-width:0;padding:20px;background:var(--bg-result-surface);border:1px solid var(--border);border-left:4px solid var(--gray-400);border-radius:var(--radius)}[data-tool-root="keyboard-latency-test"] .result-summary[data-state="info"]{border-left-color:var(--info)}[data-tool-root="keyboard-latency-test"] .result-summary[data-state="warning"]{border-left-color:var(--warning)}[data-tool-root="keyboard-latency-test"] .result-summary[data-state="success"]{border-left-color:var(--success)}[data-tool-root="keyboard-latency-test"] .result-summary[data-state="danger"]{border-left-color:var(--danger)}[data-tool-root="keyboard-latency-test"] .result-summary__header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}[data-tool-root="keyboard-latency-test"] .result-summary__eyebrow{color:var(--text-tertiary);font-size:13px;font-weight:700}[data-tool-root="keyboard-latency-test"] .result-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;background:var(--gray-700);color:var(--text-on-dark);border-radius:var(--radius-round);font-size:13px;font-weight:700}[data-tool-root="keyboard-latency-test"] .result-badge[data-state="info"]{background:var(--info)}[data-tool-root="keyboard-latency-test"] .result-badge[data-state="warning"]{background:var(--warning)}[data-tool-root="keyboard-latency-test"] .result-badge[data-state="success"]{background:var(--success)}[data-tool-root="keyboard-latency-test"] .result-badge[data-state="danger"]{background:var(--danger)}
[data-tool-root="keyboard-latency-test"] .result-primary{margin-top:24px}[data-tool-root="keyboard-latency-test"] .result-primary__label{display:block;color:var(--text-secondary);font-weight:700}[data-tool-root="keyboard-latency-test"] .result-primary__value{display:block;margin-top:2px;font-size:clamp(36px,6vw,64px);line-height:1.15;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}[data-tool-root="keyboard-latency-test"] .result-primary__secondary{display:block;margin-top:6px;color:var(--text-tertiary)}[data-tool-root="keyboard-latency-test"] .result-data-band{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:20px 0 0;padding:12px;background:var(--gray-50);border-top:1px solid var(--border);border-bottom:1px solid var(--border);border-radius:var(--radius-sm)}[data-tool-root="keyboard-latency-test"] .result-data-band div{min-width:0;padding:0 12px}[data-tool-root="keyboard-latency-test"] .result-data-band div+div{border-left:1px solid var(--border)}[data-tool-root="keyboard-latency-test"] .result-data-band dt{color:var(--text-tertiary);font-size:13px}[data-tool-root="keyboard-latency-test"] .result-data-band dd{margin:2px 0 0;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}[data-tool-root="keyboard-latency-test"] .result-summary__note{margin:16px 0 0;color:var(--text-secondary)}[data-tool-root="keyboard-latency-test"] .result-summary__actions{margin-top:auto;padding-top:16px}
[data-tool-root="keyboard-latency-test"] h2{margin:32px 0 16px;padding-left:12px;border-left:3px solid var(--gray-900);font-size:24px;line-height:1.3}[data-tool-root="keyboard-latency-test"] h3{margin:0 0 12px;font-size:18px;line-height:1.4}[data-tool-root="keyboard-latency-test"] .card-block{margin-bottom:16px;padding:16px 24px;background:var(--bg-module);border:1px solid var(--border);border-radius:var(--radius)}[data-tool-root="keyboard-latency-test"] .insight-item{min-width:0;padding:16px;background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius)}[data-tool-root="keyboard-latency-test"] .histogram-plot{min-height:210px;padding-top:8px}[data-tool-root="keyboard-latency-test"] .histogram-svg{display:block;width:100%;height:auto;min-height:180px}[data-tool-root="keyboard-latency-test"] .plot-grid{stroke:var(--gray-200);stroke-width:1}[data-tool-root="keyboard-latency-test"] .hist-bar{fill:var(--gray-700)}[data-tool-root="keyboard-latency-test"] .plot-median{stroke:var(--gray-500);stroke-width:2;stroke-dasharray:4 4}[data-tool-root="keyboard-latency-test"] .plot-p95{stroke:var(--danger);stroke-width:2;stroke-dasharray:7 5}[data-tool-root="keyboard-latency-test"] .plot-label{fill:var(--gray-700);font-size:12px}[data-tool-root="keyboard-latency-test"] .histogram-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:8px;font-size:13px}[data-tool-root="keyboard-latency-test"] .histogram-legend span{display:inline-flex;align-items:center;gap:6px}[data-tool-root="keyboard-latency-test"] .legend-marker{display:inline-block;width:14px;height:4px;background:var(--gray-700)}[data-tool-root="keyboard-latency-test"] .legend-marker.is-median{background:var(--gray-500)}[data-tool-root="keyboard-latency-test"] .legend-marker.is-p95{background:var(--danger)}[data-tool-root="keyboard-latency-test"] .chart-labels{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;color:var(--text-tertiary);font-size:12px}[data-tool-root="keyboard-latency-test"] .visual-empty{display:grid;min-height:180px;place-items:center;padding:16px;color:var(--text-tertiary);text-align:center;border:1px dashed var(--border);border-radius:var(--radius)}
[data-tool-root="keyboard-latency-test"] details.acc{background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius)}[data-tool-root="keyboard-latency-test"] details.acc+details.acc,[data-tool-root="keyboard-latency-test"] .faq-group details.acc{margin-top:8px}[data-tool-root="keyboard-latency-test"] details.acc summary{min-height:48px;display:flex;align-items:center;padding:0 14px;font-size:16px;font-weight:700;cursor:pointer;list-style:none}[data-tool-root="keyboard-latency-test"] details.acc summary::-webkit-details-marker{display:none}[data-tool-root="keyboard-latency-test"] details.acc summary::after{content:"+";margin-left:auto;color:var(--text-tertiary);font-size:20px}[data-tool-root="keyboard-latency-test"] details.acc[open] summary::after{content:"−"}[data-tool-root="keyboard-latency-test"] details.acc[open] summary{border-bottom:1px solid var(--border)}[data-tool-root="keyboard-latency-test"] .acc-panel{padding:14px}[data-tool-root="keyboard-latency-test"] .acc-panel>:first-child{margin-top:0}[data-tool-root="keyboard-latency-test"] .acc-panel>:last-child{margin-bottom:0}[data-tool-root="keyboard-latency-test"] .source-list{margin:0;padding-left:20px}[data-tool-root="keyboard-latency-test"] .source-list a{color:var(--text-primary);text-underline-offset:3px}[data-tool-root="keyboard-latency-test"] .related-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}[data-tool-root="keyboard-latency-test"] .related-links>a{display:block;padding:12px;color:var(--text-primary);background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;font-weight:700}[data-tool-root="keyboard-latency-test"] .related-links>a:hover{background:var(--bg-hover)}[data-tool-root="keyboard-latency-test"] .category-link{grid-column:1/-1;margin:4px 0 0}[data-tool-root="keyboard-latency-test"] .category-link a{color:var(--text-primary);text-underline-offset:3px}
@media(max-width:900px){[data-tool-root="keyboard-latency-test"]{padding-right:8px;padding-left:8px}}
@media(max-width:720px){[data-tool-root="keyboard-latency-test"] .workspace-grid,[data-tool-root="keyboard-latency-test"] .related-links{grid-template-columns:1fr;gap:8px}[data-tool-root="keyboard-latency-test"] .input-panel,[data-tool-root="keyboard-latency-test"] .result-panel,[data-tool-root="keyboard-latency-test"] .card-block{padding:14px 12px}[data-tool-root="keyboard-latency-test"] .result-data-band{grid-template-columns:1fr}[data-tool-root="keyboard-latency-test"] .result-data-band div{padding:8px 0}[data-tool-root="keyboard-latency-test"] .result-data-band div+div{border-left:0;border-top:1px solid var(--border)}[data-tool-root="keyboard-latency-test"] .live-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}[data-tool-root="keyboard-latency-test"] .live-metrics div:nth-child(3){border-left:0}[data-tool-root="keyboard-latency-test"] .live-metrics div:nth-child(n+3){border-top:1px solid var(--border);padding-top:8px}}
@media(max-width:430px){[data-tool-root="keyboard-latency-test"] .button-row{display:grid;grid-template-columns:1fr}[data-tool-root="keyboard-latency-test"] .btn{min-height:44px;width:100%}[data-tool-root="keyboard-latency-test"] .tool-page-header h1{font-size:28px}[data-tool-root="keyboard-latency-test"] .sample-progress__meta,[data-tool-root="keyboard-latency-test"] .phase-line{flex-direction:column;gap:2px}}
@media(prefers-reduced-motion:reduce){[data-tool-root="keyboard-latency-test"] .progress-fill{transition:none}}
