/* Shared typing surface. Scoped to Practice Lab; no changes to gameplay themes. */
.practice-lab-screen .practice-real-text-session-header {display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;}
.practice-lab-screen .practice-real-text-typing {margin:1.25rem 0;padding:clamp(16px,3vw,28px);border:1px solid var(--border-subtle,#3b4758);border-radius:8px;background:var(--bg-panel,#101820);color:var(--text-muted,#a6b2c1);font-family:var(--font-mono,ui-monospace,monospace);font-size:clamp(20px,2.3vw,28px);line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;max-height:45vh;overflow:auto;cursor:text;contain:layout style;}
.practice-lab-screen .practice-real-text-char.is-typed {color:var(--text-primary,#edf4fa);}
.practice-lab-screen .practice-real-text-char.is-error {color:#ff8d95;background:#602a324d;text-decoration:underline wavy;}
.practice-lab-screen .practice-real-text-char.is-current {color:var(--text-primary,#fff);background:#00d4c51c;box-shadow:inset 3px 0 0 var(--primary,#00dfcd);text-decoration:underline;text-underline-offset:.22em;}
/* Collapsing whitespace can otherwise give the active/error span a zero-width
   client rect. Keep a small paint box without changing the canonical text. */
.practice-lab-screen :is(.practice-real-text-char,.practice-weak-key-char,.practice-combination-char):is(.is-current,.is-error) {display:inline-block;min-inline-size:.62ch;min-block-size:1em;}
.practice-lab-screen .practice-session-input {display:block;box-sizing:border-box;width:100%;min-height:48px;margin:1rem 0;padding:12px 14px;border:1px solid var(--border-subtle,#3b4758);border-radius:6px;background:var(--bg-panel,#101820);color:var(--text-primary,#edf4fa);font:inherit;font-size:16px;resize:vertical;}
.practice-lab-screen .practice-session-input:focus-visible,.practice-lab-screen button:focus-visible {outline:2px solid var(--primary,#00dfcd);outline-offset:3px;}
.practice-lab-screen :is(.practice-real-text-typing,.practice-weak-key-typing,.practice-combination-typing,[data-protocol-text]):focus-visible {outline:2px solid var(--primary,#00dfcd);outline-offset:3px;}
.practice-lab-screen .practice-session-input::placeholder {color:var(--text-muted,#a6b2c1);opacity:1;}
.practice-lab-screen .practice-real-text-time {display:flex;align-items:baseline;gap:.35em;font-size:1.2rem;margin:1rem 0;}
.practice-lab-screen [role="progressbar"] {min-height:5px;background:var(--border-subtle,#3b4758);}
.practice-lab-screen [role="progressbar"] > div {height:5px;background:var(--primary,#00dfcd);}
.practice-lab-screen .practice-real-text-result-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem;}
.practice-lab-screen .practice-real-text-result-grid > div {padding:1rem;background:var(--bg-panel,#101820);}
.practice-lab-screen .practice-real-text-result-grid dd {margin:.4rem 0 0;font-size:1.2rem;}
@media(max-width:600px) {.practice-lab-screen .practice-real-text-session-header {flex-wrap:wrap;}.practice-lab-screen .practice-real-text-typing {max-height:38vh;}}
