.lab-intro{max-width:1100px}.lab-intro h1{font-size:clamp(34px,4.4vw,58px)}.lab-card{padding:24px}.lab-layout{display:grid;grid-template-columns:minmax(260px,.95fr) minmax(280px,1.05fr);gap:36px;align-items:center;padding:18px 12px}.lab-picture{min-width:0;position:relative;max-width:470px;width:100%;margin:auto}.lab-svg{display:block;width:100%;height:auto;max-height:400px;filter:drop-shadow(0 12px 20px #315dbe10)}.lab-controls{min-width:0}.lab-controls h2{font-size:29px;line-height:1.25;margin:0 0 18px;overflow-wrap:break-word}.lab-controls p{color:var(--muted);line-height:1.65}.lab-fields{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.lab-fields label{display:flex;flex-direction:column;gap:7px;font-size:14px;color:var(--muted);flex:1;min-width:125px}.lab-fields input,.lab-fields select,.lab-answer input,.lab-answer select{width:100%;padding:11px 12px;min-height:47px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);font:inherit}.lab-fields input[type=range]{accent-color:var(--accent);padding:0;min-height:30px}.lab-readout{background:var(--soft);border:1px solid var(--line);border-radius:18px;padding:18px 22px;min-height:96px;margin:18px 0}.lab-readout strong{display:block;color:var(--accent);font-size:clamp(29px,3vw,45px);letter-spacing:-.035em;line-height:1.2;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.lab-readout small{display:block;margin-top:8px;color:var(--muted);font-size:13px}.lab-note{font-size:13px;color:var(--muted)}.lab-error{color:var(--error)!important;min-height:24px;font-size:14px}.lab-task{font-size:clamp(26px,3vw,36px);font-weight:700;line-height:1.3;margin:12px 0 24px;letter-spacing:-.025em}.lab-progress{font-size:13px;color:var(--muted)}.lab-answer{display:block;margin:16px 0;font-size:14px;max-width:360px}.lab-answer input,.lab-answer select{display:block;font-size:23px;margin-top:8px}.lab-feedback{min-height:32px;font-weight:650;line-height:1.5}.lab-feedback[data-state=correct]{color:var(--accent)}.lab-feedback[data-state=wrong]{color:var(--error)}.lab-explanation{padding:16px;border:1px solid var(--line);border-radius:15px;background:var(--soft);line-height:1.7}.lab-settings{display:flex;gap:12px;flex-wrap:wrap;padding:12px;background:var(--soft);border-radius:17px;margin:14px 0}.lab-settings label{display:flex;flex-direction:column;gap:5px;font-size:13px;flex:1;min-width:140px;color:var(--muted)}.lab-settings select{width:100%;background:var(--surface);min-height:44px}.lab-print{padding:18px 6px}.lab-print-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:24px 0}.lab-sheet-item{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;min-height:110px}.lab-sheet-item p{font-size:18px;margin:3px 0 20px}.lab-sheet-item .lab-svg{max-height:140px}.lab-sheet-item .writing-line{margin:20px 0 4px;width:80%}.pythagoras{border-collapse:separate;border-spacing:3px;width:100%;font-variant-numeric:tabular-nums}.pythagoras th,.pythagoras td{text-align:center;padding:6px 2px;font-size:12px;border-radius:4px}.pythagoras th{background:var(--accent);color:var(--surface)}.pythagoras td{background:var(--soft)}.pythagoras .highlight{background:#3569ff;color:#fff}.pythagoras caption{text-align:left;font-size:14px;font-weight:650;margin-bottom:10px}.mini-calendar{background:var(--surface);border:1px solid var(--line);padding:18px;border-radius:24px;box-shadow:0 15px 35px #245bfa0b}.calendar-heading{font-size:23px;font-weight:700;text-transform:capitalize;color:var(--accent);padding:8px 6px 22px}.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}.calendar-week span{font-size:12px;color:var(--muted);padding:5px 0}.calendar-days button,.calendar-days>span{padding:8px 3px;min-height:42px;border-radius:10px;border:1px solid transparent;display:grid;place-items:center;font-size:15px;font-variant-numeric:tabular-nums}.calendar-days button[aria-pressed=true],.calendar-days .selected-day{background:var(--accent);color:var(--surface)}.date-tile{margin:auto;background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:32px;text-align:center;max-width:300px;box-shadow:0 12px 30px #245bfa13}.date-tile span{display:block;color:var(--accent);text-transform:capitalize;font-size:22px}.date-tile strong{font-size:110px;color:var(--accent);line-height:1.4}.date-tile p{font-size:13px;color:var(--muted)}.fraction-pair{display:flex;align-items:center;gap:8px}.fraction-pair .lab-svg{width:50%;min-width:0}.receipt{margin:auto;padding:32px 24px;background:var(--surface);border:1px dashed #acbfe6;border-radius:5px;max-width:310px;box-shadow:0 12px 22px #245bfa13;text-align:center}.receipt span{display:block;color:var(--muted);font-size:12px;letter-spacing:.04em}.receipt strong{display:block;font-size:48px;color:var(--accent);margin:22px 0}.receipt i{display:block;border-top:1px dashed #a9bde6;margin:25px 0}.receipt b{display:block;font-size:28px;margin-top:12px}.cash-caption{text-align:center;font-size:23px;color:var(--accent);font-weight:650;margin:22px 0}.wallet{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0}.wallet button{position:relative;min-height:52px;padding:7px 3px;border-radius:9px;background:var(--soft);font-weight:650;font-size:15px}.wallet button[data-value="1"],.wallet button[data-value="2"],.wallet button[data-value="5"],.wallet button[data-value="10"]{border-radius:50%;aspect-ratio:1;min-height:0;max-width:57px;justify-self:center;width:100%}.wallet-summary{font-size:23px;font-weight:650;color:var(--accent);margin:14px 0}.wallet-stack{display:flex;gap:6px;flex-wrap:wrap;min-height:35px}.wallet-stack button{font-size:12px;padding:6px 10px;min-height:34px}.roman-symbols{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:18px 0}.roman-symbols span{background:var(--soft);padding:10px 3px;border-radius:10px;text-align:center;font-size:12px}.roman-symbols b{display:block;font-size:23px;color:var(--accent)}.learn-catalog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:24px 0}.learn-card{display:block;border:1px solid var(--line);border-radius:24px;background:var(--surface);padding:23px;text-decoration:none;color:var(--text)}.learn-card:hover{border-color:var(--accent);box-shadow:0 8px 25px #245bfa0a}.learn-card h2{font-size:22px;margin:14px 0 10px}.learn-card p{font-size:15px;color:var(--muted);margin:0 0 18px}.learn-card small{font-size:12px;color:var(--accent);font-weight:650}.learn-card .lab-svg{height:140px;filter:none}.learn-filters{display:flex;gap:8px;flex-wrap:wrap;margin:28px 0}.learn-filters button[aria-pressed=true]{background:var(--accent);color:var(--surface)}.typing-card{padding:26px}.typing-target{font-size:clamp(23px,3vw,34px);line-height:1.9;letter-spacing:.04em;background:var(--soft);border:1px solid var(--line);border-radius:20px;padding:22px;white-space:pre-wrap;overflow-wrap:anywhere;margin:22px 0;min-height:140px}.typing-target .ok{color:var(--accent);background:#7da0ff22}.typing-target .bad{color:var(--error);background:#e6796730;text-decoration:underline}.typing-target .current{border-left:2px solid var(--accent)}.typing-input{font:20px/1.65 system-ui;width:100%;padding:16px;border:1px solid var(--line);border-radius:16px;resize:vertical;min-height:110px;background:var(--surface);color:var(--text)}.typing-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.typing-stats div{background:var(--soft);padding:16px;border-radius:16px}.typing-stats strong{display:block;color:var(--accent);font-size:30px}.typing-stats span{font-size:12px;color:var(--muted)}.keyboard-sketch{display:grid;gap:5px;max-width:650px;margin:20px auto}.keyboard-row{display:flex;gap:4px;justify-content:center}.keyboard-row span{border:1px solid var(--line);background:var(--surface);padding:7px 3px;min-width:28px;text-align:center;border-radius:6px;font-size:12px}.price-visual{padding:25px;border:1px solid var(--line);background:var(--soft);border-radius:28px;text-align:center}.price-visual .hours{font-size:clamp(38px,5vw,65px);font-weight:750;color:var(--accent);overflow-wrap:anywhere;line-height:1.2}.work-blocks{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:22px 0}.work-blocks span{height:30px;background:#bfd0fd;border-radius:5px}.work-blocks span.active{background:#3268ff}.price-visual p{font-size:14px;color:var(--muted)}.lab-main-link{display:inline-block;margin-top:14px}.lab-next-scope [hidden]{display:none!important}
@media(max-width:1000px){.learn-catalog{grid-template-columns:1fr 1fr}.lab-layout{gap:22px;padding:12px 0}}@media(max-width:680px){.lab-layout{grid-template-columns:1fr;padding:4px 0;gap:14px}.lab-card,.typing-card{padding:14px}.lab-picture{max-width:350px}.lab-picture .lab-svg{max-height:275px}.lab-controls{padding:0 4px}.lab-task{font-size:27px}.lab-controls h2{font-size:26px}.lab-settings{padding:10px;gap:10px}.lab-settings label{min-width:120px}.lab-fields{gap:10px}.lab-readout{padding:15px}.lab-print-grid{grid-template-columns:1fr}.learn-catalog{grid-template-columns:1fr}.learn-card .lab-svg{height:155px}.typing-target{padding:15px;font-size:23px}.typing-stats{gap:7px}.typing-stats div{padding:12px 8px}.typing-stats strong{font-size:25px}.keyboard-row span{min-width:18px;padding:6px 2px;font-size:10px}.wallet{grid-template-columns:repeat(4,minmax(0,1fr))}.roman-symbols{gap:4px}.roman-symbols span{font-size:10px;padding:9px 2px}.roman-symbols b{font-size:20px}.calendar-days button{min-height:38px;padding:6px 1px}.pythagoras th,.pythagoras td{font-size:10px;padding:5px 1px}}
@media print{#print-root .lab-print-grid{display:grid;grid-template-columns:1fr 1fr;gap:5mm;margin:5mm 0}#print-root .lab-sheet-item{border:1px solid #d7e0f2;border-radius:0;padding:4mm;min-height:32mm;break-inside:avoid}#print-root .lab-sheet-item p{font-size:12px;margin:0 0 5mm}#print-root .lab-sheet-item .lab-svg{height:16mm;max-width:50mm;margin:auto}#print-root .lab-sheet-item .fraction-pair{display:flex}#print-root .lab-sheet-item .writing-line{margin:4mm 0 0}#print-root .lab-answer-sheet{font-size:13px;line-height:1.9}#print-root .lab-answer-sheet li{margin-bottom:3mm}}
.learn-card [data-learn-art]{height:160px;overflow:hidden;display:grid;place-items:center}.learn-card .clock-svg{max-height:150px;width:auto}.learn-card .mini-calendar{transform:scale(.55);transform-origin:top center;width:260px;padding:10px}.learn-card .cash-scene{transform:scale(.55);transform-origin:top center;width:270px}.learn-card .receipt{padding:10px}.learn-card .receipt strong{margin:8px}.learn-card .receipt i{margin:8px}.learn-card .cash-caption{margin:7px}.mini-type-art{background:#e9efff;color:#245bfa;font-weight:700;letter-spacing:.25em;font-size:28px;padding:25px;border:1px solid #c5d6fd;border-radius:18px;box-shadow:0 8px 0 #d4e1ff}.mini-price-art{background:#e9efff;padding:22px;text-align:center;border-radius:20px;color:#245bfa}.mini-price-art b{display:block;font-size:50px}.mini-price-art span{font-size:12px}.lab-next-scope .learn-card[hidden]{display:none!important}

.lab-svg{background:#f5f8ff;border-radius:24px}.learn-card .lab-svg{background:transparent}.lab-picture:empty{min-height:0}.lab-settings:empty{display:none!important}

/* Local audit: explicit whitespace and live key hints. */
.typing-target .typing-space{position:relative;white-space:pre}.typing-target.show-spaces .typing-space:after{content:'·';position:absolute;left:0;top:0;width:100%;text-align:center;opacity:.5}.typing-target .bad{border-bottom:2px solid currentColor}.typing-target .typing-extra{white-space:pre-wrap;overflow-wrap:anywhere}.typing-target{white-space:pre-wrap;overflow-wrap:anywhere}.keyboard-sketch [data-typing-key].is-next{background:var(--accent);color:var(--surface);border-color:var(--accent);box-shadow:0 0 0 2px var(--soft)}.keyboard-sketch .typing-space-key{min-width:130px}#typing-progress{width:100%;height:10px;accent-color:var(--accent);margin-top:18px}#typing-key-note{min-height:23px}@media(max-width:680px){.keyboard-row{gap:3px}.keyboard-row span{min-width:15px;font-size:10px}.keyboard-sketch .typing-space-key{min-width:110px}}

/* Short typing sessions, results and device-local history. */
.typing-mode-note{color:var(--accent);font-size:14px;font-weight:650}.typing-target{position:relative}.typing-target.is-timed{max-height:220px;overflow-y:auto;scrollbar-gutter:stable}.typing-actions{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.typing-actions button{max-width:100%;white-space:normal}.typing-result{margin-top:26px;border-top:1px solid var(--line);padding-top:20px}.typing-result h2{font-size:28px}.typing-result-values{font-size:21px;font-weight:650;color:var(--accent);overflow-wrap:anywhere}.typing-error-list{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.typing-error-list li{border:1px solid var(--line);background:var(--soft);border-radius:12px;padding:12px;overflow-wrap:anywhere}.typing-error-list span{display:block;font-size:13px;color:var(--muted)}.typing-history{margin-top:24px}.typing-history-head{display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap}.typing-history-head h2{font-size:28px;margin:0}.typing-history-head label{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px}.typing-table-wrap{width:100%;overflow:auto}.typing-history table{border-collapse:collapse;width:100%;font-size:14px}.typing-history th,.typing-history td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}.typing-history th{background:var(--soft)}.typing-history th:first-child,.typing-history td:first-child{min-width:100px}.typing-history td:nth-child(2){min-width:160px}.typing-history select{max-width:100%;background:var(--surface);color:var(--text)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(max-width:680px){.typing-error-list{grid-template-columns:1fr}.typing-history{padding:16px}.typing-history-head{gap:12px}.typing-history-head h2{font-size:25px}.typing-target.is-timed{max-height:200px}.typing-actions{gap:8px}.typing-actions button{font-size:14px}.typing-result-values{font-size:18px}}

.typing-target .typing-word{display:inline-block;white-space:nowrap}

.typing-space-toggle{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-top:18px}.typing-space-toggle input{width:18px;height:18px;accent-color:var(--accent)}

.unit-reference{padding:28px;max-width:100%;text-align:left}.unit-reference h2{font-size:clamp(24px,4vw,38px);margin:12px 0}.unit-reference p{line-height:1.7}.unit-reference button{margin:12px 0}.unit-reference details{margin-top:20px}.unit-reference li{margin:8px 0}.unit-category{color:var(--accent,#245aff);font-weight:700}

body[data-lesson=units] #explore-panel .lab-layout{align-items:start}body[data-lesson=units] #explore-fields label{flex-basis:100%}@media(max-width:800px){body[data-lesson=units] #explore-panel .lab-controls{grid-row:1}body[data-lesson=units] .unit-reference{padding:16px 4px}}

.typing-extra-panel{padding:22px;border:1px solid var(--line);border-radius:18px;background:var(--soft);margin:20px 0}.typing-extra-panel h2{font-size:25px;margin:0 0 15px}.typing-extra-panel label{display:block;font-size:15px}.typing-extra-panel textarea,.typing-extra-panel select{display:block;width:100%;padding:12px;margin:8px 0;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit}.typing-extra-panel textarea{resize:vertical}.typing-extra-panel button{margin:5px 8px 5px 0}.typing-finger-legend{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0;font-size:12px}.typing-finger-legend span{border-radius:8px;padding:8px;border:2px solid transparent;background:var(--zone);color:#142139}.typing-finger-legend .is-active{border-color:var(--accent);font-weight:750}.show-finger-zones [data-finger]{background:var(--zone);color:#142139;border-color:#152b4b35}.show-finger-zones .is-next{outline:3px solid var(--accent);outline-offset:1px;font-weight:800}.typing-finger-legend [data-finger=L5],.show-finger-zones [data-finger=L5]{--zone:#ffd5df}.typing-finger-legend [data-finger=L4],.show-finger-zones [data-finger=L4]{--zone:#ffe2b5}.typing-finger-legend [data-finger=L3],.show-finger-zones [data-finger=L3]{--zone:#fff3b5}.typing-finger-legend [data-finger=L2],.show-finger-zones [data-finger=L2]{--zone:#d2efd7}.typing-finger-legend [data-finger=R2],.show-finger-zones [data-finger=R2]{--zone:#c8edf5}.typing-finger-legend [data-finger=R3],.show-finger-zones [data-finger=R3]{--zone:#d4dfff}.typing-finger-legend [data-finger=R4],.show-finger-zones [data-finger=R4]{--zone:#e8d8ff}.typing-finger-legend [data-finger=R5],.show-finger-zones [data-finger=R5]{--zone:#ffdcd0}.typing-finger-legend [data-finger=thumb],.show-finger-zones [data-finger=thumb]{--zone:#e4e9f2}

.typing-extra-panel[hidden],.typing-finger-legend[hidden]{display:none!important}
.typing-target .typing-word{max-width:100%;white-space:normal;overflow-wrap:anywhere}

.unit-graphic{margin:8px 0 12px;color:var(--accent,#245aff)}.unit-graphic svg{display:block;width:100%;height:auto;max-height:350px}.unit-graphic figcaption{color:var(--muted);font-size:13px;line-height:1.6}.unit-graphic-scale{display:block;margin-top:6px;font-size:12px}.unit-reference:has(.unit-graphic){padding:10px 12px}.unit-reference:has(.unit-graphic) .unit-category{display:block;font-size:13px}.unit-reference:has(.unit-graphic) details{font-size:14px}.unit-graphic text{font-family:inherit;font-variant-numeric:tabular-nums}@media(max-width:800px){body[data-lesson=units] #explore-panel .lab-controls{grid-row:auto}body[data-lesson=units] #explore-panel .lab-layout{display:flex;flex-direction:column}.unit-reference:has(.unit-graphic){padding:8px 4px}.unit-graphic svg{max-height:260px}.unit-graphic figcaption{font-size:12px}}
