/* v0.9: the experiment is a viewport-sized app, not a vertically growing page. */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
body.experiment-screen{height:100vh;height:100dvh;overflow:hidden}
.experiment-screen .workspace{height:100%;display:flex;flex-direction:column;margin-left:74px;min-width:0}
.experiment-screen .sidebar{width:74px;padding:14px 7px;align-items:center}.experiment-screen .brand{font-size:0;gap:0}.experiment-screen .brand>span:last-child,.experiment-screen .side-label,.experiment-screen .route,.experiment-screen .side-bottom{display:none}.experiment-screen .sidebar nav{margin-top:20px;width:100%}.experiment-screen .sidebar .nav{font-size:0;justify-content:center;padding:11px 5px;gap:0}.experiment-screen .sidebar .nav span{font-size:23px}.experiment-screen .sidebar .nav b{display:none}
.experiment-screen .workspace>header{height:42px;min-height:42px;padding:0 18px}.experiment-screen .avatar{height:27px;width:27px}.experiment-screen .header-right{gap:12px}.experiment-screen main{height:calc(100% - 42px);min-height:0;width:100%;max-width:none;margin:0;padding:8px 14px 12px;display:flex;flex-direction:column;overflow:hidden}.experiment-screen .intro,.experiment-screen footer,.experiment-screen #experiments>.section-line,.experiment-screen .catalog-title,.experiment-screen #modelCards{display:none}.experiment-screen #curriculumBar{flex:none}.experiment-screen .catalog-bar{gap:8px;flex-wrap:nowrap}.experiment-screen .segmented button{padding:5px 11px;font-size:11px}.experiment-screen .select-wrap{font-size:10px}.experiment-screen .select-wrap select{padding:5px;max-width:180px;font-size:11px}.experiment-screen .catalog-bar>.search,.experiment-screen .curriculum-note,.experiment-screen .chapter-summary{display:none}.experiment-screen #directoryBtn{padding:5px 10px}.experiment-screen .chapter-tabs{margin:5px 0 7px;gap:18px}.experiment-screen .chapter-tabs button{padding:3px 0 5px;font-size:11px}.experiment-screen #experiments{display:flex;flex:1;min-height:0;flex-direction:column}
.lab-shell{position:relative;display:flex;flex:1;min-height:0;flex-direction:column;gap:8px}.lab-shell>.lab-heading{padding:0;gap:12px;flex:none;min-height:53px}.workbench-model-picker{min-width:0;flex:1;max-width:650px}.workbench-model-picker>label{display:flex;gap:8px;align-items:center;font-size:10px;color:var(--muted);margin-bottom:3px}.workbench-model-picker .pill{font-size:9px;padding:1px 6px}.workbench-model-row{display:flex;gap:5px;align-items:center}.workbench-model-row select{min-width:0;max-width:none;width:100%;padding:6px 9px;font-size:13px;border-color:#cadbcd;font-weight:600}.model-arrow{flex:none;border:1px solid #d6e2d3;border-radius:6px;background:#fff;font-size:20px;line-height:27px;width:27px;height:30px}.workbench-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.workbench-actions button{padding:6px 9px;font-size:11px;border:1px solid #d2dfce;border-radius:6px;background:white;white-space:nowrap}.workbench-actions button.selected{background:#e0edda;color:#1c705c;border-color:#9bbb9e}
.lab-shell>.lab-layout{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:10px;flex:1;min-height:0;align-items:stretch;overflow:hidden}.lab-shell .lab-main{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;border-radius:10px}.lab-shell .scene-toolbar{padding:7px 12px;min-height:33px;flex:none;gap:8px;align-items:center}.lab-shell .scene-layers{gap:10px;font-size:10px}.lab-shell .scene-toolbar>.textbtn{white-space:nowrap;margin:0;font-size:10px}.lab-shell .canvas-wrap{height:auto!important;min-height:0;flex:1;margin:0 8px;position:relative;inset:auto;box-shadow:none;width:auto}.lab-shell .canvas-wrap canvas{position:absolute;inset:0;width:100%;height:100%}.lab-shell .canvas-label{display:none}.lab-shell .transport{padding:7px 10px;gap:5px;flex:none;min-height:42px;flex-wrap:nowrap}.lab-shell .transport button{font-size:10px;padding:6px 8px;white-space:nowrap}.lab-shell .transport label{font-size:10px;white-space:nowrap;margin:0}.lab-shell .transport select{padding:3px;max-width:62px;font-size:10px}.lab-shell .transport .time{font-size:10px;white-space:nowrap}.lab-shell .time-scrub{flex:none;padding:0 12px 7px;gap:8px;font-size:10px}.lab-shell .time-scrub input{min-width:0}.lab-shell .readings{padding:8px 0;flex:none;grid-template-columns:repeat(var(--reading-count,3),minmax(0,1fr));min-height:62px;max-height:87px;overflow:hidden}.lab-shell .reading{padding:0 11px;min-width:0}.lab-shell .reading small{font-size:10px;min-height:15px;line-height:1.3;display:block;max-height:27px;overflow:hidden}.lab-shell .reading strong{font-size:18px;line-height:1.4;white-space:nowrap;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.lab-shell .reading em{font-size:9px}
.lab-shell .controls{display:flex;flex-direction:column;min-height:0;min-width:0;height:100%;padding:12px 14px;gap:0;overflow:hidden;position:static}.lab-shell .control-heading{padding-bottom:9px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:6px}.lab-shell .control-heading h3{margin:0;font-size:14px}.lab-shell .control-heading span{font-size:10px;color:var(--muted);white-space:nowrap}.lab-shell #parameters{flex:1;min-height:0;overflow:hidden}.lab-shell .param{margin:12px 0 14px;font-size:11px}.lab-shell .param-value{display:grid;grid-template-columns:minmax(0,1fr) 76px;gap:6px;align-items:center}.lab-shell .param-value>span{line-height:1.5;overflow-wrap:anywhere}.lab-shell .param input[type=number]{width:76px;min-width:0;font-size:12px;padding:4px 5px}.lab-shell .param input[type=range]{margin-top:9px;max-width:100%;width:100%;min-height:18px;accent-color:var(--green)}.lab-shell .range-labels{font-size:9px;line-height:1.2}.parameter-pager{flex:none;min-height:32px;display:flex;gap:5px;justify-content:space-between;align-items:center;border-top:1px solid #e1e8dc;padding-top:6px;font-size:10px;color:var(--muted)}.parameter-pager>div{display:flex;gap:4px;justify-content:center;flex-wrap:wrap}.parameter-pager button{border:1px solid #d5e1cf;border-radius:5px;background:white;min-width:25px;height:25px;line-height:22px;font-size:11px;padding:0 5px}.parameter-pager button.selected{background:var(--green);color:white;border-color:var(--green)}
.workbench-drawer{position:absolute;inset:61px 0 0;z-index:25;display:flex;flex-direction:column;background:#fcfef9;border:1px solid #b9cdb9;border-radius:12px;box-shadow:0 12px 40px #264b3b30;min-height:0;overflow:hidden}.workbench-drawer-head{padding:10px 16px;border-bottom:1px solid #dce7d7;display:flex;justify-content:space-between;align-items:center;flex:none}.workbench-drawer-head h3{margin:0;font-size:15px}.workbench-drawer-head button{padding:5px 10px}.workbench-drawer-content{overflow:auto;overscroll-behavior:contain;min-height:0;padding:12px 16px;flex:1;scrollbar-gutter:stable}.workbench-panel-hint{font-size:11px;color:var(--muted);margin:0 0 10px}.workbench-drawer .chapter-studio{margin-bottom:10px}.workbench-drawer .force-topic,.workbench-drawer .force-bench,.workbench-drawer .force-lesson{margin:10px 0}.workbench-drawer .formula,.workbench-drawer .insight{margin:12px 0}.workbench-drawer .canvas-caption,.workbench-drawer .clock-type{padding:8px 0}.workbench-drawer .experiment-steps{padding:8px 0}.workbench-drawer .observation{padding:12px;margin-top:12px}.workbench-record-actions{display:flex;gap:12px;align-items:center;margin-bottom:15px}.workbench-drawer .graph-head{padding:4px 0}.workbench-drawer .graph-wrap{margin:0;height:200px}
.experiment-screen.workbench-focused .sidebar,.experiment-screen.workbench-focused .workspace>header,.experiment-screen.workbench-focused #curriculumBar{display:none}.experiment-screen.workbench-focused .workspace{margin:0}.experiment-screen.workbench-focused main{height:100%;padding:8px}.experiment-screen.workbench-focused .lab-shell{gap:6px}
@media(max-width:1100px){.lab-shell>.lab-layout{grid-template-columns:minmax(0,1fr) 248px}.lab-shell .controls{padding:10px}.workbench-model-picker{max-width:none}.workbench-actions button{padding:6px}.lab-shell .transport .time{display:none}}
@media(max-width:760px){.experiment-screen .sidebar{display:none}.experiment-screen .workspace{margin:0}.experiment-screen .workspace>header{height:34px;min-height:34px;padding:0 10px}.experiment-screen main{height:calc(100% - 34px);padding:5px 7px 8px}.experiment-screen .region,.experiment-screen .avatar{display:none}.experiment-screen .breadcrumb{font-size:11px}.experiment-screen .catalog-bar{gap:5px}.experiment-screen .segmented button{font-size:10px;padding:5px 7px}.experiment-screen #editionWrap{display:none}.experiment-screen .select-wrap{font-size:0;min-width:0;flex:1}.experiment-screen .select-wrap select{width:100%;max-width:none;font-size:10px;padding:5px 2px}.experiment-screen #directoryBtn{font-size:10px;padding:5px 6px;white-space:nowrap}.experiment-screen .chapter-tabs{gap:14px;margin:3px 0 5px}.experiment-screen .chapter-tabs button{font-size:10px}.lab-shell{gap:5px}.lab-shell>.lab-heading{flex-wrap:wrap;gap:4px;min-height:0}.workbench-model-picker{flex:1 1 100%;max-width:none}.workbench-model-picker>label{display:none}.workbench-model-row select{font-size:11px;padding:5px 6px}.workbench-model-row .model-arrow{height:28px;line-height:24px}.workbench-actions{width:100%;justify-content:space-between;gap:4px}.workbench-actions button{font-size:10px;padding:4px 7px;flex:1}.lab-shell>.lab-layout{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) 177px;gap:5px}.lab-shell .scene-toolbar{min-height:26px;display:flex;padding:4px 8px}.lab-shell .scene-layers{gap:8px;font-size:9px}.lab-shell .scene-layers label:last-child{display:none}.lab-shell .scene-toolbar>.textbtn{font-size:9px}.lab-shell .canvas-wrap{margin:0 4px}.lab-shell .transport{padding:4px 7px;min-height:30px;gap:4px}.lab-shell .transport button{padding:4px 5px;font-size:9px}.lab-shell .transport label{font-size:0;margin-left:auto}.lab-shell .transport select{font-size:9px}.lab-shell .time-scrub{padding:0 8px 4px;font-size:9px}.lab-shell .readings{padding:4px 0;min-height:44px;max-height:57px}.lab-shell .reading{padding:0 7px}.lab-shell .reading small{font-size:8px;min-height:10px;max-height:22px}.lab-shell .reading strong{font-size:14px}.lab-shell .reading em{font-size:8px}.lab-shell .controls{padding:6px 10px;display:flex}.lab-shell .control-heading{padding-bottom:4px}.lab-shell .control-heading h3{font-size:11px}.lab-shell .control-heading span{font-size:9px}.lab-shell #parameters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}.lab-shell .param{margin:5px 0 0;font-size:10px;min-width:0}.lab-shell .param-value{grid-template-columns:minmax(0,1fr) 57px;gap:5px;min-height:34px}.lab-shell .param-value>span{line-height:1.4}.lab-shell .param input[type=number]{width:57px;font-size:11px;padding:3px}.lab-shell .param input[type=range]{margin-top:4px;min-height:16px}.lab-shell .range-labels{font-size:8px}.parameter-pager{min-height:25px;padding-top:3px}.parameter-pager button{height:22px;line-height:20px;min-width:24px;font-size:10px}.workbench-drawer{inset:64px 0 0}.workbench-drawer-head{padding:8px 12px}.workbench-drawer-head h3{font-size:13px}.workbench-drawer-content{padding:10px}.workbench-drawer .graph-head small{display:none}.workbench-drawer .experiment-steps{grid-template-columns:1fr}.workbench-drawer .studio-group{grid-template-columns:1fr}.experiment-screen.workbench-focused main{padding:5px}}
@media(max-height:650px) and (min-width:761px){.lab-shell>.lab-heading{min-height:43px}.workbench-model-picker>label{display:none}.workbench-drawer{top:48px}.lab-shell .controls{padding:8px 10px}.lab-shell .param{margin:9px 0 10px}.lab-shell .readings{min-height:49px;padding:5px 0}.lab-shell .reading strong{font-size:16px}.experiment-screen .workspace>header{height:34px;min-height:34px}.experiment-screen main{height:calc(100% - 34px)}}
@media(max-height:620px) and (max-width:760px){.experiment-screen .workspace>header{display:none}.experiment-screen main{height:100%}.experiment-screen .chapter-tabs{display:none}.lab-shell>.lab-layout{grid-template-rows:minmax(0,1fr) 149px}.lab-shell .scene-layers{display:none}.lab-shell .scene-toolbar{min-height:21px;padding:2px 6px}.lab-shell .controls{padding:4px 8px}.lab-shell .control-heading{display:none}.lab-shell .param-value{min-height:32px}.lab-shell .readings{min-height:38px}.lab-shell .reading small{max-height:11px}.lab-shell .transport label{display:none}}
@media print{body.experiment-screen{height:auto;overflow:visible}.experiment-screen main,.experiment-screen .workspace{height:auto;overflow:visible}.lab-shell>.lab-layout{min-height:500px}.workbench-drawer{position:static;max-height:none}.workbench-drawer-content{overflow:visible}}
@media(max-height:500px) and (min-width:600px){.lab-shell>.lab-layout{grid-template-columns:minmax(0,1fr) 218px;grid-template-rows:minmax(0,1fr)}.lab-shell>.lab-heading{flex-wrap:nowrap;min-height:32px}.workbench-model-picker{flex:1;min-width:0}.workbench-model-picker>label{display:none}.workbench-actions{width:auto;flex-wrap:nowrap}.workbench-actions button{flex:none;padding:4px;font-size:9px}.lab-shell #parameters{display:block}.lab-shell .controls{padding:6px 9px}.lab-shell .control-heading{display:flex}.lab-shell .param{margin:8px 0}.lab-shell .param-value{min-height:27px;grid-template-columns:minmax(0,1fr) 66px}.lab-shell .param input[type=number]{width:66px}.workbench-drawer{top:38px}.experiment-screen .chapter-tabs{display:none}.experiment-screen .workspace>header{display:none}.experiment-screen main{height:100%;padding-top:4px}.lab-shell .readings{min-height:38px;padding:3px 0}.lab-shell .reading small{font-size:8px;min-height:10px;max-height:20px}.lab-shell .reading strong{font-size:13px}.lab-shell .transport{padding:4px 7px;min-height:28px}.lab-shell .transport button{font-size:9px;padding:4px}.lab-shell .transport label{display:none}.lab-shell .scene-toolbar{padding:3px 8px;min-height:25px}.lab-shell .scene-layers{font-size:9px;gap:7px}.lab-shell .scene-layers label:last-child{display:none}}
@media(max-width:760px){.experiment-screen .segmented [data-stage]{font-size:0;min-width:40px}.experiment-screen [data-stage="junior"]::after{content:'初中';font-size:10px}.experiment-screen [data-stage="senior"]::after{content:'高中';font-size:10px}.experiment-screen #directoryBtn{font-size:0}.experiment-screen #directoryBtn::after{content:'目录';font-size:10px}}
/* Apparatus actions dock beside the scene, so their effects stay visible. */
.workbench-drawer[data-panel="actions"]{left:auto;width:292px}.workbench-drawer[data-panel="actions"] .workbench-drawer-head{padding:9px 10px}.workbench-drawer[data-panel="actions"] .workbench-drawer-head h3{font-size:13px}.workbench-drawer[data-panel="actions"] .workbench-drawer-content{padding:8px 10px}.workbench-drawer #chapterStudio,.workbench-drawer .force-nav,.workbench-drawer .force-topic-head{display:none}.workbench-drawer[data-panel="actions"] .force-topic,.workbench-drawer[data-panel="actions"] .force-bench{padding:10px;margin:7px 0}.workbench-drawer[data-panel="actions"] .force-actions{gap:5px;flex-wrap:wrap}.workbench-drawer[data-panel="actions"] .force-detail-steps,.workbench-drawer[data-panel="actions"] .force-stages{grid-template-columns:repeat(2,minmax(0,1fr))}.workbench-drawer[data-panel="actions"] .force-bench-title{flex-wrap:wrap}.workbench-drawer[data-panel="actions"] .verify-reading{grid-template-columns:1fr}.workbench-drawer[data-panel="actions"] .force-detail-note{font-size:10px}
@media(max-width:1100px){.workbench-drawer[data-panel="actions"]{width:248px}}
@media(max-width:760px){.workbench-drawer[data-panel="actions"]{inset:auto 0 0;width:auto;height:52%;min-height:180px}.workbench-drawer[data-panel="actions"] .workbench-drawer-content{padding:7px 10px}.workbench-drawer[data-panel="actions"] .force-presets,.workbench-drawer[data-panel="actions"] .force-actions{gap:5px}.workbench-drawer[data-panel="actions"] .force-detail-steps{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-height:500px) and (min-width:600px){.workbench-drawer[data-panel="actions"]{inset:38px 0 0 auto;width:218px;height:auto;min-height:0}}
/* Larger navigation and visible direct-manipulation affordances. */
.workbench-model-row .model-arrow{height:44px;min-height:44px;min-width:96px;width:auto;padding:0 9px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:25px;line-height:1;border-color:#93b7a0;background:#edf5e8;color:#236a57;font-weight:600}.model-arrow-label{font-size:12px;white-space:nowrap}.workbench-model-row select{min-height:44px}.lab-shell>.lab-heading{min-height:62px}.workbench-drawer{top:70px}.interaction-hint{flex:none;padding:3px 12px 5px;font-size:11px;line-height:1.4;color:#357c9e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:22px}.scene-layers input#dragHints{accent-color:#287caa}.lab-shell .canvas-wrap canvas{cursor:default}
@media(max-width:760px){.workbench-model-row .model-arrow{min-width:48px;width:48px;padding:0;font-size:29px}.model-arrow-label{display:none}.workbench-model-row select{min-height:44px}.lab-shell>.lab-heading{min-height:0}.workbench-drawer{top:83px}.interaction-hint{font-size:9px;min-height:18px;padding:2px 8px 4px}.lab-shell .scene-layers{gap:7px}.lab-shell .scene-layers label:nth-child(3){display:none}}
@media(max-height:500px) and (min-width:600px){.workbench-model-row .model-arrow{min-width:44px;width:44px}.model-arrow-label{display:none}.lab-shell>.lab-heading{min-height:44px}.workbench-drawer,.workbench-drawer[data-panel="actions"]{top:52px}.interaction-hint{font-size:9px;min-height:17px;padding:1px 8px 3px}}
/* Use the actual parameter-panel height; paginate only after the full list fails to fit. */
.lab-shell #parameters{display:grid;grid-template-columns:1fr;grid-auto-rows:max-content;align-content:start;gap:8px;padding-top:9px}.lab-shell #parameters .param{margin:0!important}.lab-shell #parameters.compact-parameters{gap:5px;padding-top:6px}.lab-shell #parameters.compact-parameters .param input[type=range]{margin-top:4px;min-height:16px}.lab-shell #parameters.compact-parameters .param-value{min-height:25px}.lab-shell #parameters.compact-parameters .range-labels{line-height:1.1;font-size:8px}
@media(max-width:760px){.lab-shell #parameters{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px;padding-top:3px}.lab-shell #parameters.compact-parameters{gap:4px 10px;padding-top:2px}}
@media(max-height:500px) and (min-width:600px){.lab-shell #parameters{grid-template-columns:1fr}}
.scene-action-bar{display:flex;flex:none;gap:6px;align-items:center;overflow-x:auto;padding:5px 10px;max-width:100%;background:#eff6ed;border-bottom:1px solid #d7e5d9}.scene-action-bar.hidden{display:none}.scene-action-bar button{flex:none;min-height:44px;padding:7px 12px;border:1px solid #a6bdab;border-radius:9px;background:white;color:#24584b;font:600 12px inherit;cursor:pointer}.scene-action-bar button[aria-pressed=true]{background:#175f54;color:white}.scene-action-bar button:disabled{opacity:.4;cursor:default}.scene-action-bar span{font-size:12px;white-space:nowrap;color:#536f62}

.transport .playback-duration{font-size:11px;color:#56796c;white-space:nowrap}.transport #speed{max-width:155px}
@media(max-width:760px){.transport .playback-duration{font-size:9px}.transport #speed{max-width:115px}}
