body[data-page="typing"] .editorial{max-width:1180px;margin:0 auto;padding:12px 0;border:0}
.typing-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 24px}.typing-heading h1{font-size:32px;margin:5px 0 10px}.typing-heading p{margin:0;color:var(--muted)}.typing-eyebrow{font-size:12px;letter-spacing:.08em;color:var(--muted)}.typing-local{font-size:13px;color:#276449;background:#eaf5ee;border-radius:30px;padding:9px 15px;white-space:nowrap}
.typing-tabs{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.typing-tabs a{padding:9px 18px;border:1px solid var(--line);border-radius:8px;text-decoration:none;color:var(--ink);background:var(--surface)}.typing-tabs a[aria-current]{background:var(--accent);color:white;border-color:var(--accent)}
.typing-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:22px;align-items:start}.typing-workspace,.typing-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:26px;min-width:0}.typing-options{display:grid;grid-template-columns:minmax(0,1fr) 145px;gap:16px}.typing-page label{font-size:13px;color:var(--muted)}.typing-page select{width:100%;margin:7px 0 0;min-height:42px}.typing-metrics{display:grid;grid-template-columns:repeat(4,1fr);margin:24px 0;padding:19px 0;background:var(--soft);border-radius:10px}.typing-metrics>div{text-align:center;border-right:1px solid var(--line)}.typing-metrics>div:last-child{border:0}.typing-metrics dt{font-size:12px;color:var(--muted)}.typing-metrics dd{margin:6px 0 0;font-size:27px;font-variant-numeric:tabular-nums;font-weight:650;color:var(--ink)}
.typing-section-line{display:flex;justify-content:space-between;gap:12px;font-size:13px;margin-bottom:14px}.typing-section-line span{color:var(--muted);white-space:nowrap}.typing-passage{font-size:23px;line-height:1.95;letter-spacing:.04em;overflow-wrap:anywhere;white-space:pre-wrap;min-height:150px;max-height:340px;overflow-y:auto;padding:14px 16px;background:#f8fafc;border:1px solid var(--line);border-radius:9px;color:#52637a}.typing-passage .correct{color:#176344;background:#e6f4ec}.typing-passage .wrong{color:#a42632;background:#fde7e9;text-decoration:underline;text-decoration-thickness:2px}.typing-passage .current{border-bottom:3px solid var(--accent);background:#e7efff}.typing-input-label{display:block;margin:20px 0 8px}.typing-page textarea{display:block;width:100%;resize:vertical;min-height:100px;border:1px solid #aabbd0;border-radius:9px;padding:14px;font:inherit;font-size:19px;line-height:1.7;color:var(--ink);background:var(--surface)}.typing-page textarea:focus{outline:2px solid var(--accent);outline-offset:2px}.typing-page textarea:disabled{background:var(--soft)}.typing-note{font-size:12px!important;line-height:1.8!important;color:var(--muted)}.typing-actions{display:flex;flex-wrap:wrap;gap:9px;margin:16px 0}.typing-actions .btn{min-height:40px}.typing-page button:disabled{opacity:.5;cursor:default}#typing-status{font-size:13px;color:var(--accent);min-height:22px;margin:14px 0}.typing-aside{display:grid;gap:18px}.typing-card{padding:22px}.typing-card h2,.typing-result h2{font-size:18px;margin:0 0 14px}.typing-card ol{padding-left:20px;font-size:13px;line-height:2}.typing-card p{font-size:13px;line-height:1.9}.typing-card li{margin-bottom:8px}.typing-text-button{background:none;border:0;padding:0;color:var(--accent);font:inherit;font-size:12px;text-decoration:underline;cursor:pointer}.typing-result{padding:20px;background:#edf6f1;border:1px solid #b8d8c5;border-radius:10px;margin:20px 0}.typing-result p{font-size:14px;overflow-wrap:anywhere}#typing-custom{padding:16px;background:var(--soft);border-radius:10px;margin-top:16px}#typing-custom select{width:auto;margin:12px}#typing-custom textarea{margin-top:10px}.typing-help{margin:24px 0;font-size:13px}.typing-help p{line-height:1.9}#typing-keyboard-panel{border-top:1px solid var(--line);padding-top:18px;font-size:13px}#typing-keyboard-panel p{font-size:13px}#typing-keyboard{overflow-x:auto;padding:5px 0}.typing-key-row{display:flex;gap:4px;margin:4px 0;min-width:360px;justify-content:center}.typing-key{flex:1;max-width:42px;padding:9px 0;text-align:center;background:var(--soft);border:1px solid var(--line);border-bottom-width:3px;border-radius:5px;font:12px monospace}.typing-key.space{max-width:180px}.typing-key.next{background:var(--accent);color:white;border-color:var(--accent)}.typing-help summary,#typing-keyboard-panel summary{cursor:pointer}.typing-page [hidden]{display:none!important}
@media(max-width:1100px){.typing-layout{grid-template-columns:minmax(0,1fr)}.typing-aside{grid-template-columns:1fr 1fr}.typing-workspace{padding:22px}}
/* Keep the passage, input and responding keyboard together in one workspace. */
body[data-page="typing"] main{padding-top:16px}
.typing-heading{margin-bottom:12px}.typing-heading h1{font-size:27px;margin:0}.typing-heading>div>p:last-child{display:none}.typing-tabs{margin-bottom:14px}.typing-tabs a{padding:7px 18px}
.typing-layout{grid-template-columns:minmax(0,1fr)}.typing-aside{grid-template-columns:1fr 1fr}.typing-workspace{padding:18px 24px}.typing-options{grid-template-columns:minmax(0,1fr) 170px}.typing-options label{display:flex;align-items:center;gap:12px;white-space:nowrap}.typing-options select{margin:0}
.typing-metrics{margin:12px 0;padding:8px 0}.typing-metrics dd{font-size:23px;margin-top:0}.typing-guidance{display:grid;grid-template-columns:1fr 1fr;gap:3px 20px;padding:10px 14px;margin-bottom:12px;border-left:3px solid var(--accent);background:#edf3fa;font-size:12px}.typing-guidance strong,.typing-guidance span:last-child{grid-column:1/-1}.typing-guidance strong{font-size:13px}.typing-section-line{margin-bottom:7px}.typing-passage{min-height:70px;max-height:160px;font-size:21px;line-height:1.65;padding:10px 14px}.typing-input-label{margin:9px 0 5px}.typing-page #typing-input{min-height:65px;height:65px;resize:vertical;padding:7px 12px;font-size:18px;line-height:1.5}.typing-page #typing-input-help{margin:5px 0;font-size:12px}
#typing-keyboard-panel{border:0;padding:8px 0 0}.typing-keyboard-heading{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12px;margin-bottom:6px}.typing-keyboard-heading strong{color:var(--accent)}#typing-key-response{color:var(--muted)}#typing-keyboard{max-width:870px;margin:0 auto;padding:0}.typing-key-row{min-width:550px;gap:5px;margin:5px 0}.typing-key{max-width:none;min-width:0;height:34px;display:flex;align-items:center;justify-content:center;padding:2px;border-radius:5px;background:#edf1f6;border-color:#c2ccd9;font-size:11px;transition:background .06s}.typing-key.home-key{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}.typing-key.next{background:#e0edff;color:#174f8b;border:2px solid #347ac6;border-bottom-width:3px}.typing-key.pressed{background:#237458;color:white;border-color:#15573e;transform:translateY(1px)}#typing-keyboard.numpad{max-width:300px}#typing-keyboard.numpad .typing-key-row{min-width:0}.typing-key-legend{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:8px 0 0}.typing-key-legend .legend-next:before,.typing-key-legend .legend-pressed:before{content:'';display:inline-block;width:10px;height:10px;margin-right:5px;background:#e0edff;border:1px solid #347ac6;border-radius:2px}.typing-key-legend .legend-pressed:before{background:#237458;border-color:#15573e}.typing-actions{margin:10px 0 0}#typing-status{margin:8px 0 0}.typing-card h2{margin-top:0}
@media(max-width:600px){.typing-heading{align-items:flex-start}.typing-heading h1{font-size:25px}.typing-local{display:none}.typing-workspace,.typing-card{padding:12px}.typing-options{grid-template-columns:1fr}.typing-options select{min-width:0}.typing-aside{grid-template-columns:1fr}.typing-metrics dd{font-size:22px}.typing-passage{font-size:18px;max-height:150px;min-height:65px}.typing-tabs a{padding:8px 12px}.typing-section-line{flex-wrap:wrap}.typing-guidance{grid-template-columns:1fr;font-size:11px}.typing-guidance strong,.typing-guidance span:last-child{grid-column:auto}.typing-key-row{min-width:0;gap:2px;margin:3px 0}.typing-key{height:27px;font-size:7px;border-radius:3px}.typing-key-legend{gap:8px;font-size:10px}.typing-page #typing-input{height:65px}.typing-keyboard-heading{font-size:11px}}
/* Practice first: compact toolbar, coaching and scores beside the keyboard. */
body[data-page="typing"] .editorial{max-width:1320px;padding-top:0}
.typing-heading{justify-content:flex-start;gap:22px;margin:0 0 12px;min-height:40px;flex-wrap:wrap}
.typing-heading h1{margin:0;font-size:24px;white-space:nowrap}
.typing-heading .typing-tabs{margin:0;gap:6px}
.typing-heading .typing-tabs a{padding:6px 12px;font-size:12px}
.typing-heading .typing-local{margin-left:auto;font-size:11px;padding:6px 10px}
.typing-layout{grid-template-columns:minmax(0,1fr) 230px;gap:16px}
.typing-workspace{padding:16px;min-width:0}
.typing-options{grid-template-columns:minmax(0,1fr) 150px;gap:12px;margin-bottom:12px}
.typing-options label{gap:8px;font-size:12px}
.typing-options select{min-width:0;min-height:36px;padding:6px 8px}
.typing-aside{display:grid;grid-template-columns:1fr;gap:14px}
.typing-card{padding:16px}
.typing-card h2{font-size:15px;margin:0 0 10px}
.typing-coach .typing-metrics{grid-template-columns:1fr 1fr;margin:0;padding:0;background:transparent;gap:0}
.typing-coach .typing-metrics>div{border:0;padding:8px 0;text-align:left}
.typing-coach .typing-metrics dd{font-size:24px;margin:0}
.typing-coach .typing-guidance{grid-template-columns:1fr;gap:8px;margin:14px 0 0;padding:12px 0 0;border:0;border-top:1px solid var(--line);background:transparent;line-height:1.8}
.typing-coach .typing-guidance strong,.typing-coach .typing-guidance span:last-child{grid-column:auto}
.typing-coach .typing-guidance strong{font-size:12px}
.typing-passage{max-height:130px}
.typing-key-row{min-width:0}
.typing-actions .btn{min-height:34px;padding:7px 12px}
@media(max-width:1179px){
 .typing-layout{grid-template-columns:minmax(0,1fr)}
 .typing-aside{grid-template-columns:1fr 1fr}
 .typing-coach .typing-metrics{grid-template-columns:repeat(4,1fr);gap:10px}
 .typing-coach .typing-metrics dt{font-size:11px}
 .typing-coach .typing-metrics dd{font-size:21px}
 .typing-heading .typing-local{display:none}
}
@media(max-width:600px){
 .typing-heading{gap:8px;margin-bottom:10px}
 .typing-heading h1{font-size:21px}
 .typing-heading .typing-tabs{gap:4px}
 .typing-heading .typing-tabs a{padding:5px 7px;font-size:11px}
 .typing-workspace,.typing-card{padding:12px}
 .typing-options{grid-template-columns:1fr;gap:8px}
 .typing-aside{grid-template-columns:1fr}
 .typing-passage{max-height:130px}
}

.typing-result{display:flex;align-items:center;gap:16px;padding:16px 20px}
.typing-result-copy{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 18px;flex:1;min-width:0}
.typing-result-copy h2{font-size:16px;margin:0}
.typing-result-copy p{margin:0;line-height:1.7}
.typing-result>.typing-actions{margin:0 0 0 auto;flex-shrink:0;flex-wrap:nowrap;justify-content:flex-end}
@media(max-width:600px){.typing-result{flex-wrap:wrap;padding:14px;gap:12px}.typing-result-copy{flex-basis:100%}}
