/* Scroll drives the model, without intercepting wheel or touch gestures. */
body.home.landing-page{display:block;height:auto;min-height:100svh;background:#0b151c}
body.home.landing-page:before,body.home.landing-page:after{display:none}
.assembly-story{height:100svh;position:relative}.assembly-story.scene-ready{height:340svh}
.assembly-pin{position:sticky;top:0;height:100svh;display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;background:radial-gradient(ellipse at 75% 48%,#25363e 0,#111f28 48%,#091219 100%)}
.assembly-pin .site-header{position:relative;z-index:5;padding-top:16px;padding-bottom:16px}
.assembly-pin .landing{position:relative;min-height:0;isolation:isolate;padding-top:24px;padding-bottom:70px;max-width:none;width:100%;box-sizing:border-box}
.assembly-pin .landing-copy{position:relative;z-index:2;width:40%;max-width:590px;pointer-events:none}
.assembly-pin .landing-copy a{pointer-events:auto}
.assembly-pin h1{font-size:clamp(40px,4.1vw,80px)}
.assembly-pin .landing-intro{font-size:clamp(15px,1.2vw,19px)}
.assembly-stage{position:absolute;inset:0 0 0 37%;background:url('assets/scenery-backdrop.png') center/cover;mask-image:linear-gradient(90deg,transparent,#000 20%)}
.scene-ready .assembly-stage{background:none;mask-image:none}
.assembly-stage canvas{display:block;width:100%;height:100%}
.assembly-controls{position:absolute;bottom:22px;right:5%;text-align:right;z-index:3;color:#d6bd83}
.assembly-controls p{font-size:18px;font-weight:700;margin:0 0 5px}
.assembly-controls span{display:block;font-size:12px;color:#adbdc4}
.assembly-controls button{margin-top:10px;border:1px solid #77817e;border-radius:20px;background:#14252e;color:#f5e7c9;padding:7px 15px;cursor:pointer}
.assembly-controls button:hover{background:#29404b}
.assembly-controls button:focus-visible{outline:3px solid #f3d399;outline-offset:3px}
.assembly-pin .landing-footer{position:relative;background:#0b161ee6;z-index:3}
@media(max-width:900px){
 .assembly-pin .landing{display:block;padding:20px 24px 0}
 .assembly-pin .landing-copy{width:100%;max-width:600px}
 .assembly-pin h1{font-size:clamp(32px,6vw,46px);margin-bottom:10px}
 .assembly-pin .landing-intro{max-width:540px;font-size:14px;line-height:1.45;margin-bottom:14px}
 .assembly-pin .landing-small{display:none}
 .assembly-pin .landing-promise{margin-top:12px;font-size:11px}
 .assembly-pin .release-note{font-size:10px;margin:8px 0}
 .assembly-stage{inset:210px -5% 28px 0;mask-image:none}
 .assembly-controls{bottom:8px;right:24px}
 .assembly-controls p{font-size:13px}
 .assembly-controls span{display:none}
 .assembly-controls button{font-size:11px;margin-top:5px;padding:5px 10px}
 .assembly-pin .landing-footer{font-size:10px;padding:10px 24px;gap:6px}
 .assembly-pin .site-header{padding:12px 24px}
}
@media(max-height:740px) and (min-width:901px){.assembly-pin h1{font-size:44px}.assembly-pin .landing-small{display:none}.assembly-pin .landing{padding-top:10px}.assembly-pin .landing-promise{margin-top:14px}}
@media(max-width:900px) and (max-height:730px){.assembly-pin .landing-intro{display:none}.assembly-stage{top:165px}.assembly-pin .landing-promise{margin-top:8px}.assembly-pin h1{font-size:32px}}
@media(max-height:500px){.assembly-pin .landing-copy{width:47%}.assembly-stage{inset:0 0 0 42%}.assembly-pin .landing-intro,.assembly-pin .landing-promise,.assembly-pin .release-note{display:none}.assembly-pin h1{font-size:32px}.assembly-pin .landing-footer{padding:6px 24px}}
@media(prefers-reduced-motion:reduce){.assembly-story.scene-ready{height:100svh}.assembly-controls button{display:none}}
.scene-unavailable{height:100svh}.scene-unavailable .assembly-controls button{display:none}

/* Safe areas and dynamic browser bars on iOS Safari and Android Chrome. */
.assembly-pin{height:100svh}
.assembly-pin .site-header{padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right));padding-top:max(16px,env(safe-area-inset-top))}
.assembly-pin .landing-footer{padding-bottom:max(12px,env(safe-area-inset-bottom))}
.assembly-stage canvas{touch-action:pan-y pinch-zoom}
.scene-unavailable .assembly-stage canvas{display:none}
@media(pointer:coarse){
 .assembly-controls button,.assembly-pin .menu-toggle{min-height:44px;min-width:44px}
 .assembly-pin nav a{min-height:44px;display:inline-flex;align-items:center}
 .assembly-pin .landing-footer a{display:inline-flex;align-items:center;min-height:32px}
}
@media(max-width:900px){
 .assembly-pin .landing{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}
 .assembly-stage{right:0;bottom:70px}
 .assembly-controls{right:max(20px,env(safe-area-inset-right))}
}
@media(max-height:500px) and (orientation:landscape){
 .assembly-pin .site-header{padding-top:max(6px,env(safe-area-inset-top));padding-bottom:6px}
 .assembly-pin .landing{padding-top:10px;padding-bottom:64px}
 .assembly-pin .landing-footer{padding-top:4px;padding-bottom:max(4px,env(safe-area-inset-bottom))}
 .assembly-stage{bottom:35px}
 .assembly-controls{display:flex;align-items:center;gap:12px;bottom:3px}
 .assembly-controls p{margin:0}.assembly-controls button{margin:0}
}

/* The same scroll sequence introduces each public product/service page. */
.assembly-chapter{height:min(760px,100svh)}
.assembly-chapter.scene-ready{height:240svh}
.assembly-chapter .assembly-pin{height:min(760px,100svh);grid-template-rows:1fr}
.assembly-chapter .landing{padding-left:8%;padding-right:8%;display:flex;align-items:center}
.assembly-chapter .landing-copy{pointer-events:auto}
.assembly-chapter .landing-intro{max-width:480px}
@media(max-width:900px){
 .assembly-chapter .landing{display:block;padding:32px 24px 0}
 .assembly-chapter .landing-copy{width:100%}
 .assembly-chapter .landing-intro{display:block;max-width:540px}
 .assembly-chapter .assembly-stage{bottom:85px}
}
@media(max-height:500px) and (orientation:landscape){
 .assembly-chapter .landing-copy{width:44%}
 .assembly-chapter .landing-intro{font-size:12px;margin-bottom:8px}
 .assembly-chapter .landing{padding-top:15px}
 .assembly-chapter .assembly-stage{bottom:50px}
}
@media(prefers-reduced-motion:reduce){.assembly-chapter.scene-ready{height:min(760px,100svh)}}

/* Safari must constrain long native select labels to the form column. */
.inner-page .print-panel label{min-width:0}
.inner-page .print-panel select{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.inner-page .print-panel select{appearance:none;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,#d6b575 50%),linear-gradient(135deg,#d6b575 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat}

/* Preserve the scroll section during GPU loss; never jump the visitor away. */
.scene-ready.scene-unavailable .assembly-stage{background:url('assets/scenery-backdrop.png') center/cover;mask-image:none}
.assembly-stage .assembly-sequence{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.sequence-ready.scene-unavailable .assembly-controls button{display:inline-block}

/* A browser motion preference is a default, not a dead end for the visitor. */
.assembly-story.scene-ready.motion-enabled{height:340svh}
.assembly-chapter.scene-ready.motion-enabled{height:240svh}
.assembly-story.scene-ready.motion-still{height:100svh}
.assembly-chapter.scene-ready.motion-still{height:min(760px,100svh)}
.assembly-controls #assembly-motion,.motion-enabled .assembly-controls button{display:inline-block}
.motion-still #skip-assembly{display:none}
.assembly-controls button+button{margin-left:8px}
.assembly-controls #assembly-replay[hidden]{display:none}
@media(max-height:500px){.assembly-controls{flex-wrap:wrap;max-width:90%}}
