:root{color-scheme:light;--ink:#283a32;--muted:#5d6b60;--paper:#f5f3ec;--line:#cdd2c6;--green:#285b47;--orange:#a85534}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.75 system-ui,-apple-system,'Noto Sans TC',sans-serif}main{max-width:1240px;margin:auto;padding:32px 4vw}h1,h2,h3,p{margin:0 0 16px}h1{font-size:clamp(28px,4vw,42px);line-height:1.3}h2{font-size:clamp(23px,3vw,32px);line-height:1.4}h3{font-size:19px}.eyebrow{font-size:14px;font-weight:700;letter-spacing:.08em;color:var(--green)}header{border-bottom:1px solid var(--line);padding-bottom:18px}button,input,select,textarea{font:inherit}button,select{min-height:44px;border:1px solid var(--line);background:transparent;color:var(--ink);padding:7px 14px;border-radius:5px;cursor:pointer}button:hover{background:#e3e8dd}button[aria-pressed=true]{background:var(--green);border-color:var(--green);color:white}button:disabled{opacity:.5;cursor:wait}:focus-visible{outline:3px solid #b76938;outline-offset:3px}nav{display:flex;gap:8px;overflow-x:auto;padding:22px 0}nav button{flex:0 0 170px;text-align:left;line-height:1.5}nav span{display:block;font-size:13px}section{padding:26px 0;border-bottom:1px solid var(--line)}.choices{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 20px}.experiment{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr);gap:28px}.visual{background:#edefe8;padding:14px;border-radius:8px;min-width:0}#model{position:relative;height:410px}canvas{width:100%;height:100%;display:block;touch-action:none}#loading{position:absolute;inset:20px;pointer-events:none}#diagram svg{display:block;width:100%;height:auto;max-height:380px}svg text{font-family:inherit;font-size:16px;fill:var(--ink)}svg .small{font-size:13px}#readout{font-size:16px;font-variant-numeric:tabular-nums;min-height:2em;font-weight:650;padding:8px 0;border-top:1px solid var(--line)}input[type=range]{width:100%;height:44px;accent-color:var(--green)}.transport{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.transport output{margin-left:auto}aside{padding:14px 0}#explanation{font-size:20px;line-height:1.7}.note{font-size:14px;color:var(--muted);margin-top:14px}textarea,input[type=text]{display:block;width:100%;background:#fffef8;border:1px solid var(--line);padding:12px;border-radius:4px;margin:8px 0 16px;min-height:44px}label{display:block;font-weight:600}.notes button{margin:4px}.notes{margin-top:12px}#next{margin-top:24px;background:var(--green);color:white}footer{margin-top:30px;color:var(--muted);font-size:14px}a{color:var(--green)}.skip{position:absolute;left:8px;top:-80px;padding:12px;background:white;z-index:10}.skip:focus{top:8px}[hidden]{display:none!important}.checklist{display:grid;gap:12px}.checklist label{font-weight:400}.checklist input{width:20px;height:20px;margin-right:8px}.activity-step{border-left:3px solid var(--green);padding-left:14px;margin:18px 0}.stop{border-left:4px solid var(--orange);padding:12px 16px;background:#f0e5db}.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.days button{padding:6px;min-height:65px;font-size:13px}.days span{display:block;font-size:11px}#save-status{font-size:14px}li{margin:10px 0}@media(max-width:760px){main{padding:24px 5vw}.experiment{grid-template-columns:1fr;gap:8px}#model{height:330px}#explanation{font-size:18px}nav button{flex-basis:145px}aside{padding-top:16px}.days{grid-template-columns:repeat(4,1fr)}}@media(max-width:360px){main{padding:20px 12px}#model{height:290px}button{padding:7px 10px}}@media print{nav,button,#transport,#cameras,textarea,script{display:none}.experiment{display:block}body{background:white}section{break-inside:avoid}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.timing-row{display:flex;align-items:center;gap:12px;margin:12px 0;font-size:14px}.timing-track{position:relative;flex:1;height:22px}.timing-track span{position:absolute;height:22px}.timing-track i{position:absolute;top:-3px;height:28px;width:3px;background:#283a32}
.timing-row strong{flex:0 0 86px}.timing-row small{display:block;font-size:12px;font-weight:400}
#studio-controls{padding-top:18px}#studio-controls select{display:block;width:100%;margin:8px 0 16px}.joint-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px}.joint-controls label{font-size:14px;min-width:0}.joint-controls output,#studio-controls>label output{float:right;font-variant-numeric:tabular-nums}summary{cursor:pointer;padding:12px 0;min-height:44px}#model{height:480px}@media(max-width:760px){#model{height:420px}.joint-controls{gap:6px 12px}}@media(max-width:360px){.joint-controls{grid-template-columns:1fr}}
.specimen-label{position:absolute;left:4px;bottom:4px;width:180px;padding:6px;background:#e3e7dc;font-size:12px;line-height:1.45;pointer-events:none}.model-cue{position:absolute;left:8px;right:8px;top:8px;background:#f5f3ecee;padding:8px;font-size:13px;pointer-events:none}
#studio-controls{max-height:400px;overflow:auto;scrollbar-gutter:stable;padding-right:8px}#model{height:440px}@media(max-width:760px){#model{height:330px}#studio-controls{max-height:290px}}
/* Learner workbench: one viewport, one active input, immediate visual feedback. */
.lab-mode{background:#111512;color:#edf0e9;overflow:hidden;line-height:1.5;--ink:#edf0e9;--muted:#afb9ad;--line:#3a443b;--green:#d1ff00}
.lab-mode main{padding:0;max-width:none;height:100dvh;display:grid;grid-template-rows:56px minmax(0,1fr) 30px}
.lab-mode header{padding:6px 18px;display:flex;align-items:center;gap:16px;border-bottom:1px solid #3a443b;min-width:0}
.lab-brand{font-size:13px;letter-spacing:.08em;white-space:nowrap;color:#d1ff00;font-weight:700}
.lab-mode select{background:#202820;color:#edf0e9;min-width:0;border-color:#475345;border-radius:4px}
#unit-menu{flex:1;max-width:580px;width:100%;text-overflow:ellipsis}
.lab-mode button{color:inherit;font-size:14px;line-height:1.4;padding:6px 12px;border-radius:4px}
.lab-mode button:hover{background:#394535}.lab-mode button[aria-pressed=true]{background:#d1ff00;color:#18200c;border-color:#d1ff00}
.lab-mode :focus-visible{outline:3px solid #d1ff00;outline-offset:2px}
.lab-mode #workspace{border:0;padding:14px 18px 0;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:10px}
.lab-mode .scene-head{display:flex;gap:16px;align-items:baseline;min-width:0}.lab-mode #unit-id{display:none}.lab-mode #question{font-size:clamp(17px,1.8vw,24px);line-height:1.4;margin:0;font-weight:600}
.lab-mode #choices{margin:0;flex-wrap:nowrap;overflow:auto;gap:6px;padding-bottom:2px}.lab-mode #choices button{white-space:nowrap;flex-shrink:0}
.lab-mode .experiment{gap:0;grid-template-columns:minmax(0,1fr) 340px;min-height:0;border:1px solid #455140;border-radius:10px;overflow:hidden}
.lab-mode .visual{border-radius:0;background:#edefe8;padding:0;min-height:0;display:flex;flex-direction:column;position:relative;color:#283a32;--ink:#283a32;--line:#b8c3b4}
.lab-mode #model{height:auto;flex:1;min-height:0;width:100%}.lab-mode #loading{color:#283a32;margin-top:70px}
.lab-mode #cameras{position:absolute;top:10px;left:10px;right:10px;display:flex;gap:4px;margin:0;overflow:auto;flex-wrap:nowrap}.lab-mode #cameras button{color:#283a32;background:#f9faf4e8;border-color:#a9b5a2;white-space:nowrap;padding:5px 10px}.lab-mode #cameras button:hover{background:white}
.lab-mode #readout{margin:0;padding:10px 16px;font-size:14px;line-height:1.5;min-height:62px;flex-shrink:0;background:#e1e7d8;border-top:1px solid #bcc8b3}
.lab-mode #diagram:not([hidden]){max-height:28%;flex:0 1 28%;overflow:auto;background:#f1f1e7}.lab-mode #diagram svg{height:100%;max-height:180px}
.control-dock{background:#1b221c;display:flex;flex-direction:column;min-width:0;min-height:0;border-left:1px solid #455140}
.dock-tabs{display:flex;border-bottom:1px solid #44503d;padding:8px;gap:4px;flex-shrink:0}.dock-tabs button{flex:1;border-color:transparent}
.controls-panel,.reading-panel{padding:16px;min-height:0;overflow:auto;overscroll-behavior:contain}.lab-mode #studio-controls{padding:0;max-height:none;overflow:visible;scrollbar-gutter:auto}.lab-mode #studio-controls select{margin:0 0 12px;width:100%;font-size:14px}
.lab-mode .joint-controls{display:block}.lab-mode .joint-controls label,.active-control{font-size:14px;font-weight:500;line-height:1.5}.lab-mode input[type=range]{height:44px;accent-color:#d1ff00;margin:8px 0 0}.lab-mode output{color:#d1ff00;font-variant-numeric:tabular-nums;font-weight:700}
.lab-mode .extra-controls{border-top:1px solid #3b4738;margin-top:10px;font-size:14px}.lab-mode .extra-controls .choices{margin:0 0 10px}.lab-mode summary{padding:10px 0;line-height:1.4}.quick-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.quick-actions button{flex:1}
.lab-mode #palpation-label{font-size:13px;font-weight:400;margin-top:10px;color:#c8d5bc}#palpation-meter{width:100%;height:16px;accent-color:#d1ff00}
.lab-mode aside{padding:16px}.lab-mode aside .eyebrow,.lab-mode aside #explanation{display:none}.lab-mode aside h3{font-size:19px;color:#d1ff00}.lab-mode aside p{font-size:16px;line-height:1.85}.lab-mode .activity-step{border-color:#719648;margin-top:12px}.lab-mode .notes{margin:0;border:0}.lab-mode .notes h3{font-size:19px}.lab-mode textarea,.lab-mode input[type=text]{color:#182119}.lab-mode .note{color:#afb9ad}
.lab-mode footer{margin:0;padding:4px 20px;font-size:12px;display:flex;gap:12px;align-items:center}.lab-mode footer p{display:none}.lab-mode footer a{color:#b8c8ab}
@media(max-width:800px){.lab-mode main{grid-template-rows:52px minmax(0,1fr) 26px}.lab-mode header{padding:4px 8px;gap:6px}.lab-brand{display:none}.lab-mode header button{white-space:nowrap}.lab-mode #workspace{padding:8px 8px 0;gap:6px}.lab-mode #question{font-size:16px;line-height:1.4}.lab-mode .experiment{grid-template-columns:1fr;grid-template-rows:minmax(160px,1fr) 230px}.control-dock{border-left:0;border-top:1px solid #455140}.dock-tabs{padding:3px 6px;gap:2px}.dock-tabs button{min-height:36px}.controls-panel,.lab-mode aside,.reading-panel{padding:8px 12px}.lab-mode #studio-controls select{min-height:38px;margin-bottom:6px}.lab-mode #studio-controls .extra-controls{margin-top:4px}.lab-mode #readout{font-size:13px;min-height:54px;padding:6px 10px}.lab-mode #cameras{top:5px;left:5px;right:5px;gap:3px}.lab-mode #cameras button{font-size:12px;padding:4px 8px;min-height:36px}.quick-actions{margin-top:4px;gap:4px}.quick-actions button{min-height:36px}.lab-mode #palpation-label{margin-top:2px;font-size:12px}.lab-mode input[type=range]{margin-top:0}.lab-mode #choices button{min-height:40px}.lab-mode .active-control{font-size:13px}.lab-mode footer{padding-left:10px}.lab-mode #diagram:not([hidden]){position:absolute;right:8px;bottom:60px;width:42%;max-height:110px;opacity:.97}}
@media(max-height:650px) and (min-width:801px){.lab-mode #workspace{padding-top:6px;gap:4px}.lab-mode main{grid-template-rows:48px minmax(0,1fr) 24px}}
@media(max-height:620px) and (max-width:800px){.lab-mode .experiment{grid-template-rows:minmax(120px,1fr) 200px}.lab-mode #question{font-size:14px}.lab-mode #choices button{min-height:36px}.lab-mode #readout{min-height:44px;font-size:12px}}
.angle-label{position:absolute;padding:4px 8px;border:1px solid #bda568;background:#fff9e8;color:#674511;font-size:14px;font-weight:700;pointer-events:none;line-height:1.4}
@media(min-width:560px) and (max-width:800px) and (max-height:620px){.lab-mode .experiment{grid-template-columns:minmax(0,1fr) 260px;grid-template-rows:minmax(0,1fr)}.control-dock{border-top:0;border-left:1px solid #455140}.lab-mode #cameras{flex-wrap:wrap}.lab-mode #cameras button{min-height:32px}.lab-mode #readout{font-size:12px;min-height:58px}}
@media(max-width:800px){.lab-mode button,.lab-mode #cameras button,.lab-mode #choices button,.lab-mode select,.dock-tabs button,.quick-actions button{min-height:44px}.lab-mode #studio-controls select{min-height:44px}}
@media(max-width:559px) and (min-height:700px){.lab-mode .experiment{grid-template-rows:minmax(160px,1fr) 250px}}
.craig-instruction{font-size:15px;line-height:1.65;margin:0 0 12px;color:#eef2e9;white-space:pre-line}.craig-steps{display:flex;gap:5px;overflow:auto;margin-bottom:12px}.craig-steps button{white-space:nowrap;flex-shrink:0}.exam-caption{position:absolute;left:12px;bottom:10px;max-width:calc(100% - 24px);white-space:pre-line;background:#f7faf1ee;color:#25372f;border-left:3px solid #3886ac;padding:8px 12px;font-size:14px;line-height:1.5;pointer-events:none}.exam-caption[hidden]{display:none}#craig-record{display:block;font-size:14px;margin-top:8px}
@media(max-width:800px){.craig-instruction{font-size:14px;line-height:1.55}.exam-caption{font-size:12px;padding:5px 8px}.craig-steps{margin-bottom:6px}.lab-mode .controls-panel:has(.craig-steps){padding-top:8px}}

/* Keep M2.3's measured result and one active explanation next to the model. */
#readout{white-space:pre-line;font-variant-numeric:tabular-nums}
.activity-step summary{font-weight:700;cursor:pointer;padding:12px 0;line-height:1.6}
.activity-step:not([open]){margin-bottom:8px}
.understanding-check fieldset{border:1px solid var(--line,#cbd3c4);padding:16px;margin:20px 0;min-width:0}
.understanding-check legend{font-weight:700;padding:0 6px}
.understanding-check button{display:block;margin:8px 0;min-height:44px;text-align:left;white-space:normal}
.understanding-check [aria-pressed=true]{outline:2px solid #285b47;outline-offset:2px}

.lab-mode .model-cue{top:auto;bottom:8px;font-size:12px;line-height:1.45;color:#283a32}
.lab-mode #teaching-stages p{white-space:pre-line}

/* M2.2: allocate real space to each teaching surface; never overlay a diagram. */
.craig-workbench .experiment{grid-template-columns:minmax(0,1fr) 360px}
.craig-workbench .visual{display:grid;grid-template-rows:minmax(0,1fr) auto auto}
.craig-workbench #model{min-height:0;overflow:hidden}
.craig-workbench #diagram:not([hidden]){position:static;width:100%;max-height:none;height:150px;flex:none;overflow:hidden;opacity:1;border-top:1px solid #bcc8b3}
.craig-workbench #diagram svg{height:100%;max-height:none;width:100%}
.craig-workbench #diagram svg text{font-size:26px}
.craig-workbench #readout{font-size:14px;min-height:0;padding:10px 14px}
.craig-workbench .case-label{font-size:13px;color:#bec9b9;font-weight:500;line-height:1.5}
.craig-workbench #studio-controls select{margin:4px 0 12px;min-height:44px;font-size:14px}
.craig-workbench .active-control{display:block;margin:4px 0 0;font-size:14px}
.craig-workbench .active-control output{float:none;display:block;font-size:20px;line-height:1.5}
.craig-workbench .rotation-ends{display:flex;justify-content:space-between;font-size:12px;color:#bec9b9;gap:6px}
.craig-workbench .craig-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:12px 0;gap:8px}
.craig-workbench .craig-actions button{min-height:44px;white-space:normal;word-break:normal;padding:8px;flex:none}
.craig-workbench .craig-instruction,.craig-workbench .craig-evidence{font-size:14px;color:#bec9b9;line-height:1.6;margin:12px 0}
.craig-workbench .exam-caption{display:none}
@media(max-width:800px){
 .craig-workbench .experiment{grid-template-columns:1fr;grid-template-rows:minmax(200px,1fr) 225px}
 .craig-workbench #diagram:not([hidden]){height:110px}
 .craig-workbench #readout{font-size:12px;line-height:1.45;padding:6px 10px}
 .craig-workbench .controls-panel{padding:8px 12px}
 .craig-workbench #studio-controls select{margin:2px 0 6px}
 .craig-workbench .case-label{font-size:12px}
 .craig-workbench .active-control output{font-size:17px;display:inline;float:right}
 .craig-workbench .active-control{margin-top:0}
 .craig-workbench .craig-actions{margin:6px 0}
 .craig-workbench #question{font-size:15px}
}
@media(min-width:560px) and (max-width:800px) and (max-height:620px){.craig-workbench .experiment{grid-template-columns:minmax(0,1fr) 280px;grid-template-rows:minmax(0,1fr)}.craig-workbench #diagram:not([hidden]){height:100px}}
@media(min-width:801px) and (max-height:650px){.craig-workbench #diagram:not([hidden]){height:120px}}

@media(max-width:800px){.craig-workbench .case-label>span{display:none}}
@media(max-width:559px) and (max-height:680px){.craig-workbench .scene-head{display:none}.craig-workbench #workspace{grid-template-rows:auto minmax(0,1fr)}.craig-workbench #diagram:not([hidden]){height:90px}.craig-workbench .experiment{grid-template-rows:minmax(190px,1fr) 210px}}
@media(max-width:559px){.craig-workbench .experiment{grid-template-rows:minmax(190px,1fr) 255px}}
@media(max-width:559px) and (max-height:680px){.craig-workbench .experiment{grid-template-rows:minmax(190px,1fr) 240px}}
@media(max-width:559px) and (max-height:540px){.craig-workbench{overflow:auto}.craig-workbench main{min-height:640px}}
