/* The model and its controls are separate surfaces. Tablet and phone layouts
 * use ordinary document scrolling rather than competing fixed-height panes. */
:root{--rail:360px;--header:80px;--paper:#f3f4ee;--accent:#315847}
.school-header{height:var(--header);padding:0 26px;gap:20px}
.brand small{margin-left:15px;padding-left:15px}.build-picker{margin-left:auto}.build-picker>span{display:none}.build-picker select{min-width:180px;max-width:250px;font-size:14px}
.school-header .text-button{text-decoration:none;white-space:nowrap;min-height:44px;font-size:13px;padding:10px 5px}
.lesson-scroll{padding:30px 28px 22px}.lesson-eyebrow{font-size:11px;letter-spacing:.07em;line-height:1.5}h1{font-size:36px;line-height:1.08;margin:20px 0}.lesson-intro{font-size:14px;line-height:1.75;margin-bottom:24px}
.lesson-estimate{background:transparent;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;padding:17px 0;margin:0 0 20px;text-align:left;min-height:44px}.lesson-estimate span{font-size:13px;color:var(--accent)}.lesson-estimate strong{font-size:13px;line-height:1.7;font-weight:400}
.warning{margin:12px 0 22px;padding:14px 16px;font-size:13px;line-height:1.7}.lesson-detail{margin:18px 0 0;padding-top:16px;font-size:14px;line-height:1.8}.lesson-detail summary{min-height:44px;font-size:14px;color:var(--ink);padding:10px 0}.lesson-detail .tools{border:0;padding-top:8px;margin-bottom:20px;font-size:14px}.lesson-detail a{font-size:14px;min-height:44px;padding:10px 0;overflow-wrap:anywhere}.checks h2{font-size:14px}.checks li:before{content:'—'}.instructions li,.checks li{font-size:14px;line-height:1.85;margin-bottom:22px}.instructions li:before{font-size:11px}
.lesson-dock{padding:0 28px 20px}.primary,.secondary{min-height:44px;font-size:14px}.primary{justify-content:center}.auto-button{width:100%;text-decoration:none;min-height:44px;margin-top:8px;font-size:13px}.auto-button[aria-pressed=true]{color:var(--accent);font-weight:600}.progress-copy{min-height:52px;font-size:12px}.progress-copy .text-button{min-height:44px;text-decoration:none;font-size:13px}
.model-panel{background:#dde4db;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-areas:'caption' 'model' 'controls' 'hint';min-width:0}
#vp{position:relative;inset:auto;grid-area:model;min-height:0;width:100%;height:100%}
.model-caption{position:static;grid-area:caption;display:grid;grid-template-columns:minmax(0,1fr) auto;max-width:none;padding:20px 28px 16px;gap:6px 16px;background:var(--paper);border:0;border-radius:0;pointer-events:none}.model-caption>.small-label,.model-caption>#modelPart{grid-column:1}.small-label{font-size:10px;line-height:1.4}#modelPart{font-size:27px;line-height:1.1}.model-zoom{grid-column:2;grid-row:1/3;display:flex;gap:6px;align-self:center;pointer-events:auto}.model-zoom button{width:44px;min-width:44px;height:44px;min-height:44px;border:1px solid #bcc5b7;border-radius:4px;background:#f9faf5;color:var(--ink);font-size:22px;line-height:1}.model-zoom button:hover{background:#e5ebdf}
.model-controls{position:static;grid-area:controls;left:auto;right:auto;bottom:auto;transform:none;justify-self:center;justify-content:center;flex-wrap:wrap;margin:16px 20px 0;padding:4px;max-width:calc(100% - 40px);background:#f4f5eef0;white-space:normal}.model-controls button{min-height:44px;padding:10px 16px;font-size:12px}
.model-hint{position:static;grid-area:hint;display:block;margin:0;padding:12px 20px 16px;max-width:none;width:auto;font-size:11px;line-height:1.65;color:#304034;background:transparent;text-align:center}.model-hint span{margin:0 7px}
.outline{padding-left:25px}.outline li{padding:0}.outline button{background:transparent;color:inherit;padding:15px 0;min-height:44px;width:100%;text-align:left;font-size:14px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.outline button span{flex:none;font-size:11px;font-weight:400}.outline button:hover{color:var(--accent)}#lessonReturn{margin:-6px 0 12px;min-height:44px;font-size:14px}#lessonFinish{margin-top:24px}
@media(min-width:1024px) and (max-width:1279px){:root{--rail:340px}.school-header{gap:13px;padding:0 20px}.brand small{display:none}.brand{font-size:24px}.build-picker select{min-width:165px;max-width:210px}.school-header .text-button{font-size:12px}}
@media(max-width:1023px){
 html,body.assembly-school{height:auto;min-height:100%;overflow:visible}
 body.assembly-school>main{display:flex;flex-direction:column;width:100%;min-width:0}
 .school-header{position:relative;inset:auto;height:auto;min-height:0;padding:12px 18px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:44px 44px;gap:8px 10px;align-items:center}
 .brand{grid-column:1;grid-row:1;font-size:22px}.brand small{display:none}.build-picker{grid-column:1/-1;grid-row:2;margin:0;display:block;width:100%}.build-picker select{width:100%;height:44px;min-height:44px;max-width:none;min-width:0;font-size:16px}
 .school-header .text-button,.school-header #procOpen,.school-header #lessonHelp{grid-row:1;grid-column:auto;font-size:12px;padding:8px 2px;min-height:44px;line-height:1.5;white-space:normal;text-align:center}.school-header #procOpen{grid-column:2}.school-header #lessonHelp{grid-column:3}
 .model-panel{order:0;position:relative;inset:auto;width:100%;height:auto;min-height:0;grid-template-rows:auto auto auto auto;border-bottom:1px solid var(--line)}
 #vp{height:clamp(320px,52vw,420px);min-height:320px;inset:auto}
 .model-caption{padding:18px 22px 14px;gap:5px;max-width:none}.small-label{font-size:10px}#modelPart{font-size:26px}
 .model-controls{margin:14px 16px 0;max-width:calc(100% - 32px);padding:4px;gap:4px}.model-controls button{font-size:13px;min-height:44px;padding:10px 13px}
 .model-hint{display:block;font-size:12px;line-height:1.7;padding:12px 22px 18px;margin:0;max-width:none}
 .model-hint:after{content:'Scroll page for instructions ↓';display:block;margin-top:7px;color:var(--accent);font-weight:600}
 .lesson-panel{order:1;position:relative;inset:auto;width:100%;height:auto;min-height:0;border:0;display:block}
 .lesson-scroll{padding:28px 24px 20px;overflow:visible;overscroll-behavior:auto;max-height:none;min-height:0}
 h1{font-size:36px;margin:16px 0}.lesson-intro{font-size:16px;line-height:1.8;margin-bottom:24px}.lesson-estimate{padding:18px 0;margin-bottom:22px}.lesson-estimate span,.lesson-estimate strong{font-size:14px}.lesson-eyebrow{font-size:12px}
 .lesson-detail{font-size:15px;line-height:1.85;margin-top:22px}.lesson-detail summary{font-size:15px;min-height:44px}.lesson-detail .tools,.instructions li,.checks li,.lesson-detail a{font-size:15px}.warning{font-size:14px;line-height:1.75}.checks h2{font-size:15px}
 .lesson-dock{padding:0 24px max(24px,env(safe-area-inset-bottom));position:static}.progress-copy{min-height:54px;font-size:13px}.progress-copy .text-button{font-size:14px;min-height:44px}.primary,.secondary{min-height:48px;font-size:15px}.auto-button{min-height:48px;margin-top:10px;font-size:14px}
 dialog{max-height:calc(100dvh - 24px);padding:24px}dialog p{font-size:14px;line-height:1.8}dialog .guide-safety{font-size:14px}dialog .guide-note{font-size:12px}.outline button{font-size:14px;min-height:48px}
}
@media(max-width:360px){.school-header{padding:12px 14px;gap:8px}.school-header .text-button{font-size:11px}.brand{font-size:20px}.lesson-scroll{padding:26px 20px 18px}.lesson-dock{padding-left:20px;padding-right:20px}.model-controls{max-width:calc(100% - 20px);margin-left:10px;margin-right:10px}.model-controls button{padding:10px 11px;font-size:12px}.model-caption{padding-left:18px;padding-right:18px;column-gap:10px}#modelPart{font-size:24px}}

/* Mobile recovery: one document scroll, usable canvas gestures, no sideways drift. */
@media (max-width:1023px){
  html{width:100%;overflow-x:hidden}
  body.assembly-school{
    width:100%;min-width:0;min-height:100dvh;height:auto!important;
    overflow-x:hidden!important;overflow-y:auto!important;
    -webkit-overflow-scrolling:touch
  }
  body.assembly-school>main{
    position:relative!important;display:flex!important;flex-direction:column!important;
    width:100%!important;min-width:0!important;height:auto!important;overflow:visible!important
  }
  .model-panel,.lesson-panel{
    position:relative!important;inset:auto!important;top:auto!important;right:auto!important;
    bottom:auto!important;left:auto!important;width:100%!important;min-width:0!important;
    height:auto!important;min-height:0!important;transform:none!important
  }
  .model-panel{order:0!important;display:grid!important}
  .lesson-panel{order:1!important;display:block!important}
  #vp{
    position:relative!important;inset:auto!important;width:100%!important;
    height:clamp(280px,52dvh,420px)!important;min-height:280px!important;max-height:420px
  }
  #rigCanvas,.mechanical-scene canvas{touch-action:pan-y!important}
  .lesson-scroll{
    flex:none!important;overflow:visible!important;overscroll-behavior:auto!important;
    max-height:none!important
  }
  .lesson-dock{position:relative!important;inset:auto!important}
  .model-caption,#modelPart,.school-header,.build-picker{min-width:0}
  #modelPart{overflow-wrap:anywhere}
  .model-controls{
    display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));
    width:calc(100% - 32px);max-width:none!important;margin:14px 16px 0!important
  }
  .model-controls button{width:100%;min-width:0;padding:10px 8px!important;white-space:normal}
  .action-row{min-width:0}.action-row>*{min-width:0}
  .simulation-entry{grid-template-columns:minmax(0,1fr)}
  dialog,#mechanicalDialog,#practicePicker,#datacenterDialog{
    max-width:calc(100% - 16px)!important;width:calc(100% - 16px)!important;
    max-height:calc(100dvh - 16px)!important;overflow:auto!important
  }
  .mechanical-layout,.dc-grid{min-width:0}
  .mechanical-controls{overflow:visible}
}
@media (max-width:420px){
  .school-header{padding-left:14px!important;padding-right:14px!important;gap:7px 8px!important}
  .brand{font-size:19px!important}
  .school-header .text-button,.school-header #procOpen,.school-header #lessonHelp{
    font-size:10px!important;padding-left:1px!important;padding-right:1px!important
  }
  #vp{height:42dvh!important;min-height:260px!important}
  .model-caption{padding:14px 14px 11px!important;column-gap:8px!important}
  #modelPart{font-size:23px!important}
  .model-zoom{gap:4px}.model-zoom button{
    width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important
  }
  .model-controls{width:calc(100% - 20px);margin:10px 10px 0!important;gap:3px!important}
  .model-controls button{font-size:11px!important;padding:8px 4px!important}
  .model-hint{font-size:11px!important;padding-left:14px!important;padding-right:14px!important}
  .model-hint span{display:none}
  .lesson-scroll{padding-left:20px!important;padding-right:20px!important}
  .lesson-dock{padding-left:20px!important;padding-right:20px!important}
  .mechanical-camera{right:10px;flex-wrap:wrap}
  #fastenerChoices{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:1023px) and (orientation:landscape) and (max-height:520px){
  #vp{height:64dvh!important;min-height:240px!important}
}
