/* Dark exhibition direction approved by the user, 2026-11-08. */
:root{color-scheme:dark;--ink:#e0e7e6;--muted:#91a4a7;--line:#3c4c52;--accent:#bdcdbb;--paper:rgba(26,40,47,.94);color:var(--ink);background:#162129}
body{background:#162129}.masthead{background:#162129;border-bottom:1px solid #3a4b5055}.brand{color:#e7ece6}.brand svg{stroke:#c1d2bb}.brand small{color:#91a6a8}.mode-switch{background:#25363d;border:1px solid #3b4e53;padding:3px}.mode-switch button{color:#99b0b5}.mode-switch button.active{background:#455c5f;color:#f1f5ef;box-shadow:0 2px 12px #0003}.model-menu select{color:#bacbca}.model-menu option,select option{background:#20323a;color:#dce6e4}
button{background:#2d424a;color:#d2dfdf}button:hover{background:#3a545b}button.primary{background:#c3d1b8;color:#20382c;border-color:#d8e1cc}button.primary:hover{background:#dae3cc}.icon-button{border-color:#41535a;color:#aabdbf;background:transparent}select{border-color:#3e5358;color:#c0d2d2}.panel{border-color:#47616a45;box-shadow:0 16px 40px #040e1522}
#experience{background:radial-gradient(ellipse at 58% 42%,#3b4d55 0%,#273942 36%,#17272f 72%,#12212a 100%)}.collection{color:#a2b5b8}.model-intro h1{color:#eef1e6;text-shadow:0 2px 25px #0002}.model-intro p{color:#a2b7ba}.model-facts{color:#91a8ac}.model-facts b{color:#d6dfd0}.interaction-hint{color:#8aa4ab}.model-badge{color:#a8bec1}.status-dot{background:#bdd1a2;box-shadow:0 0 9px #bad7a655}
.view-tools{background:rgba(23,40,48,.93);border-color:#6b868b44}.view-tools button{color:#a9c0c4}.view-tools button:hover,.view-tools button[aria-pressed=true]{background:#3c5559;color:#e5ece0}.eyebrow{color:#8ca4aa}.panel-help{color:#9baeb1}.tiny.active{background:#395a51;color:#d0e1cd}.sheet-card{background:#26383b;border-color:#526255}.sheet-card-title{color:#d3dfd5}.sheet-card-title small{color:#a4b5a5}.sheet-card.has-needed{border-color:#bed2a1;box-shadow:0 0 0 2px #bed2a125}.sheet-card:hover{background:#30463f}#sheets{scrollbar-color:#4c666b transparent}
#guide-view{background:radial-gradient(ellipse at 50% 40%,#3d525b,#23343c)}.guide-number{color:#cee0b7}.guide-copy h3{color:#e1e9e5}.guide-location{color:#a3b8bc}.guide-copy p{color:#b0c0bf}.group-selector{border-color:#43575e}.group-selector label{color:#a5b9b8}.selection{background:#20353ef5;border-color:#64817666}.selection strong{color:#dbebc9}.selection span{color:#b3c5c2}input[type=range]{accent-color:#aec596}.assembly-transport{background:#1c3039ed}#speed{color:#ccdbd8}
.loading{background:#182a33}.loading-mark{color:#c7d7be}.loading h2{color:#dce7df}.loading p{color:#91a8ad}.load-track{background:#3b5058}.load-track i{background:#bed0ad}#asset-status{color:#cbded2;background:#152e38e8}#toast{background:#c7d9b9;color:#193a2d;box-shadow:0 8px 30px #071a2555}dialog{background:#20343c;border-color:#465d64;color:#dae6e1}dialog::backdrop{background:#07131cc7}.dialog-head button{background:#304950}.help-content p{color:#aec3c5}.help-content b{color:#dce7d5}
@media(max-width:760px){.mobile-panels button{background:#2a424b;border-color:#4c656c;color:#d2dfdb}.mode-switch{border-radius:11px}.guide-panel,.sheets-panel{background:#1b3039f7!important}}

/* Continuous full-window stage; UI overlays never crop the WebGL canvas. */
#experience{position:fixed;inset:0;height:100dvh}
.masthead{position:relative;background:transparent;border:0;pointer-events:none}.masthead>*{pointer-events:auto}
body[data-mode] #viewport{inset:0!important}
.model-intro{top:30%}
body[data-mode=assembly] .sheets-panel,body[data-mode=assembly] .guide-panel{top:108px;bottom:120px;max-height:none}
body[data-mode=assembly] .guide-panel{height:fit-content;max-height:calc(100dvh - 228px)}
body[data-mode] .selection{position:static;transform:none;width:100%;max-width:none;padding:14px 0 0;margin-top:16px;border:0;border-top:1px solid #43575e;border-radius:0;box-shadow:none;background:none;backdrop-filter:none}
.selection-heading{flex-wrap:wrap;gap:5px!important;padding-right:20px}.selection span{overflow-wrap:anywhere}.selection-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.selection-actions .primary{grid-column:1 / -1}.selection-actions #clear-selected{position:absolute;right:12px;margin-top:-34px;width:25px;height:25px;min-height:25px}.selection{position:relative!important;inset:auto!important}
#preview-tools .view-tools{bottom:34px;white-space:nowrap}
body[data-mode=assembly] .assembly-transport{bottom:30px;left:14px;right:14px;gap:8px;padding:10px 12px;flex-wrap:wrap}
body[data-mode=assembly] .assembly-transport .view-tools{position:static;transform:none;padding:0 0 0 10px;border:0;border-left:1px solid #48616855;border-radius:0;box-shadow:none;background:transparent;backdrop-filter:none}
#transport-tools{order:10;margin-left:auto}.assembly-transport .view-tools button{min-height:34px}
.display-settings{position:absolute;top:108px;right:22px;width:300px;max-height:calc(100dvh - 230px);overflow-y:auto;padding:18px;z-index:40;scrollbar-width:thin}
.settings-open .guide-panel{visibility:hidden}.setting-label{display:block;font-size:12px;margin:20px 0 8px}.display-settings select{width:100%}.display-settings .panel-help{line-height:1.9;margin:10px 0 18px}.display-settings h3{font-size:13px;font-weight:500}#motion-section{border-top:1px solid #43575e;padding-top:17px}.motion-control{display:grid;grid-template-columns:1fr auto;gap:10px;font-size:12px;margin:15px 0 20px}.motion-control output{font-variant-numeric:tabular-nums;color:#c4d7b5}.motion-control input{grid-column:1/-1;width:100%;margin:0}.lamp-switch{font-size:12px;display:flex;align-items:center;gap:8px;margin-bottom:16px}.motion-actions{display:flex;gap:8px}.motion-actions button{flex:1}.motion-active .assembly-transport>button,.motion-active .assembly-transport>input,.motion-active .assembly-transport>output,.motion-active .assembly-transport>select{display:none}.motion-active .sheets-panel{visibility:hidden}.motion-active #transport-tools{margin:auto}.motion-active .interaction-hint{visibility:hidden}
@media(max-width:1100px){.display-settings{width:260px}.assembly-transport #progress{flex-basis:20%}.view-tools #show-settings{font-size:11px}}
@media(max-width:760px){
 .masthead{background:transparent}.model-intro{top:135px}
 body[data-mode=assembly] .sheets-panel,body[data-mode=assembly] .guide-panel{top:auto;bottom:165px;max-height:50dvh}
 body[data-mode=assembly] .assembly-transport{bottom:10px!important}#transport-tools{width:100%;order:8;margin:0}.assembly-transport .view-tools{justify-content:center;flex-wrap:wrap}.assembly-transport #progress{flex-basis:65%}.assembly-transport #speed{order:4}body[data-mode=assembly] .assembly-transport .view-tools{border:0;padding:0}body[data-mode=assembly] .mobile-panels{bottom:149px}
 .display-settings{left:12px;right:12px;top:124px;width:auto;max-height:calc(100dvh - 285px)}body[data-mode=preview] .display-settings{max-height:calc(100dvh - 205px)}
 body[data-mode] .selection{width:100%;max-width:none}.view-tools #show-settings{padding:8px 10px}#preview-tools .view-tools{bottom:35px}.settings-open .mobile-panels{visibility:hidden}
}

/* Selection is an in-flow inspector; no inherited floating coordinates. */
#guide-panel{overflow-x:hidden}
#selection.part-inspector{display:block;position:relative;inset:auto;transform:none;width:100%;min-width:0;margin:18px 0 0;padding:16px 0 0;border:0;border-top:1px solid #53676b66;background:none;box-shadow:none}
.part-inspector-heading{display:grid;grid-template-columns:1fr 26px;gap:5px 10px;align-items:start;margin-bottom:12px}.part-inspector-heading strong{font-size:14px;color:#dce9cc}.part-inspector-heading span{grid-row:2;grid-column:1;font-size:11px;line-height:1.6;overflow-wrap:anywhere;color:#aebebd}.part-inspector-heading #clear-selected{grid-row:1/3;grid-column:2;position:static;min-height:26px;height:26px;width:26px;margin:0}.part-inspector-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.part-inspector-actions button{min-width:0;font-size:11px;padding:8px 4px}.part-inspector-actions .primary{grid-column:1/-1}
body[data-mode=assembly] .assembly-transport{left:50%;right:auto;bottom:26px;width:calc(100% - 56px);max-width:1480px;transform:translateX(-50%);display:grid;grid-template-columns:auto minmax(90px,1fr) auto auto;gap:22px;padding:14px 18px;border-radius:18px;background:linear-gradient(120deg,#263b43ed,#14262eee);border:1px solid #657d8040;box-shadow:0 14px 40px #0003,0 1px 0 #ffffff08 inset}
.playback-main #auto-play{display:flex;gap:11px;align-items:center;min-height:44px;padding:0 16px;border-radius:11px;font-size:12px}.play-symbol{font-size:12px}.timeline-meta{display:flex;justify-content:space-between;margin-bottom:10px;font-size:10px;color:#91a8ac;letter-spacing:.5px}.timeline-meta #progress-label{font-size:10px;min-width:0;color:#cfddd7}.playback-timeline{min-width:0}.playback-timeline #progress{appearance:none;-webkit-appearance:none;display:block;margin:0;width:100%;height:4px;border:0;border-radius:6px;background:linear-gradient(to right,#b9cda6 var(--progress,0%),#51666d55 var(--progress,0%));outline-offset:8px}.playback-timeline #progress::-webkit-slider-thumb{appearance:none;width:10px;height:10px;border-radius:50%;background:#dce6ca;border:0;box-shadow:0 0 0 4px #c8dab410;transition:box-shadow .2s}.playback-timeline #progress:hover::-webkit-slider-thumb{box-shadow:0 0 0 5px #c8dab430}.playback-timeline #progress::-moz-range-thumb{width:10px;height:10px;border:0;background:#dce6ca;border-radius:50%}.playback-options{display:flex;gap:2px;align-items:center}.playback-options #speed{font-size:11px;padding:8px 4px}.playback-more{position:relative}.playback-more summary{cursor:pointer;list-style:none;color:#a5babd;padding:12px 10px;letter-spacing:2px}.playback-more summary::-webkit-details-marker{display:none}.playback-more>div{position:absolute;bottom:52px;right:0;background:#1e333c;border:1px solid #54686c;border-radius:12px;padding:6px;width:130px;box-shadow:0 8px 25px #0005}.playback-more button{display:block;background:none;width:100%;text-align:left}.playback-more button:hover{background:#39515a}#transport-tools{order:initial;margin:0}.assembly-transport .view-tools{gap:0}.assembly-transport .view-tools button{color:#a7bcbf!important;background:transparent!important;border-radius:8px}.assembly-transport .view-tools button[aria-pressed=true]{color:#e3edda!important;background:#58746b30!important}.assembly-transport .view-tools button:hover{background:#627c7730!important}
.motion-active .playback-main,.motion-active .playback-timeline,.motion-active .playback-options{display:none}.motion-active .assembly-transport{grid-template-columns:1fr!important}.motion-active #transport-tools{justify-self:center}
@media(max-width:1100px){body[data-mode=assembly] .assembly-transport{gap:12px;width:calc(100% - 30px)}.assembly-transport .view-tools button{padding:8px}.playback-main #auto-play{padding:0 12px}}
@media(max-width:760px){body[data-mode=assembly] .assembly-transport{left:12px!important;right:12px!important;bottom:12px!important;transform:none;width:auto;max-width:none;grid-template-columns:auto minmax(80px,1fr) auto;gap:14px 10px;padding:12px!important;border-radius:16px}.playback-main #auto-play{min-height:38px;padding:0 11px;font-size:10px;gap:7px}.timeline-meta{margin-bottom:12px;font-size:9px;letter-spacing:0}.timeline-meta #progress-label{font-size:9px}.playback-options #speed{font-size:10px;padding:5px 0}.playback-more summary{padding:10px 3px}.assembly-transport #transport-tools{grid-column:1/-1;width:100%;border-top:1px solid #647d7d25;padding-top:4px}.assembly-transport .view-tools{justify-content:space-around}body[data-mode=assembly] .mobile-panels{bottom:148px}.playback-more>div{right:-3px;bottom:43px}.motion-active #transport-tools{border-top:0;padding-top:0}}

.motion-active #viewport canvas{cursor:pointer}.motion-active #interact-motion{color:#e3edda!important;background:#58746b55!important}

/* A quiet timeline on the exhibition floor, with one right-aligned action area. */
body[data-mode=assembly] .assembly-transport{
  left:28px;right:28px;bottom:30px;width:auto;max-width:none;transform:none;
  grid-template-columns:minmax(120px,1fr) auto auto auto;gap:18px;
  padding:12px 0 0;border:0;border-radius:0;background:none;box-shadow:none;
}
.assembly-transport .playback-timeline{order:0;padding-right:12px}
.assembly-transport .playback-main{order:1}
.assembly-transport .playback-options{order:2}
.assembly-transport #transport-tools{order:3}
.assembly-transport .view-tools{background:none;border:0;box-shadow:none}
.assembly-transport .playback-main #auto-play{min-height:36px;padding:0 14px;font-size:11px}
.assembly-transport .timeline-meta{margin-bottom:9px;color:#91a8ac;font-size:10px}
.assembly-transport .playback-timeline #progress{height:3px}
.motion-active .assembly-transport #transport-tools{justify-self:end;margin:0}
@media(max-width:1100px){
 body[data-mode=assembly] .assembly-transport{left:20px;right:20px;width:auto;gap:10px}
 .assembly-transport .view-tools button{padding:8px 6px;font-size:10px}
}
@media(max-width:760px){
 body[data-mode=assembly] .assembly-transport{left:16px!important;right:16px!important;bottom:16px!important;padding:0!important;grid-template-columns:1fr auto auto;gap:9px;background:none;border:0;border-radius:0}
 .assembly-transport .playback-timeline{grid-column:1/-1;padding:0}
 .assembly-transport .playback-main{grid-column:2}
 .assembly-transport .playback-options{grid-column:3}
 .assembly-transport #transport-tools{grid-column:1/-1;border:0;padding:0}
 .assembly-transport .view-tools{justify-content:flex-end;flex-wrap:wrap}
 body[data-mode=assembly] .mobile-panels{bottom:152px}
}

body[data-mode=assembly] .assembly-transport{backdrop-filter:none;-webkit-backdrop-filter:none}

.hotspot-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}
.hotspot-overlay path{stroke:#d8e6cd;stroke-width:1;fill:none;opacity:.75}
.hotspot-overlay circle{fill:#dcebd0;stroke:#243d3d;stroke-width:1}
.hotspot-overlay text{fill:#e6efdc;font:11px sans-serif;paint-order:stroke;stroke:#182c34;stroke-width:3px;stroke-linejoin:round}
.hotspot-overlay path{stroke:#a1b9b4;stroke-width:.8;opacity:.48}
.hotspot-overlay circle{fill:#b5c8bd;stroke:none;opacity:.75}
.hotspot-overlay text{fill:#afc1bb;font-size:10px;letter-spacing:.5px;stroke:none;opacity:.8}

/* Edge handles remain in one predictable place during drawer transitions. */
:root{--sheets-width:232px;--guide-width:278px;--drawer-margin:22px}
.drawer-handle{display:none;position:absolute;top:139px;z-index:32;width:30px;min-height:76px;padding:9px 5px;border:1px solid #69867b40;background:#21353de8;color:#a8bdb4;box-shadow:0 4px 14px #081a2020;align-items:center;justify-content:center;flex-direction:column;gap:7px;transition:left .25s ease,right .25s ease,background .18s,color .18s}
.drawer-handle svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4;transition:transform .25s ease}.drawer-handle span{writing-mode:vertical-rl;font-size:10px;letter-spacing:2px}
.drawer-handle.left{left:calc(var(--drawer-margin) + var(--sheets-width) - 1px);border-radius:0 9px 9px 0}
.drawer-handle.right{right:calc(var(--drawer-margin) + var(--guide-width) - 1px);border-radius:9px 0 0 9px}
.drawer-handle:hover,.drawer-handle:focus-visible{background:#355047;color:#e1ebd8;border-color:#95b29880;outline-offset:3px}
body[data-mode=assembly] .drawer-handle{display:flex}
body[data-mode=assembly] #sheets-panel,body[data-mode=assembly] #guide-panel{transition:transform .25s ease,opacity .2s ease,visibility 0s;will-change:transform}
body[data-mode=assembly].sheets-collapsed #sheets-panel{transform:translateX(calc(-100% - 30px));opacity:0;visibility:hidden;pointer-events:none;transition:transform .25s ease,opacity .2s ease,visibility 0s .25s}
body[data-mode=assembly].guide-collapsed #guide-panel{transform:translateX(calc(100% + 30px));opacity:0;visibility:hidden;pointer-events:none;transition:transform .25s ease,opacity .2s ease,visibility 0s .25s}
.sheets-collapsed .drawer-handle.left{left:0}.guide-collapsed .drawer-handle.right{right:0}
.drawer-handle[aria-expanded=false] svg{transform:rotate(180deg)}
#interaction-hints:not(:disabled)[aria-pressed=false]{animation:hint-invitation 2.8s ease-in-out infinite;border:1px solid #a3bf9655!important}
#interaction-hints[aria-pressed=true]{color:#e2edd6!important;background:#58746b55!important;border:1px solid #abc59a70!important}
@keyframes hint-invitation{0%,100%{box-shadow:0 0 0 0 #bfd7a900;color:#b4c8b9;background:#516b5920}50%{box-shadow:0 0 0 3px #bfd7a912,0 0 13px #a9c89a18;color:#e0ebd2;background:#66815b38}}
@media(min-width:1500px){:root{--sheets-width:250px;--guide-width:300px}}
@media(max-width:1100px){:root{--sheets-width:190px;--guide-width:230px}}
@media(max-width:760px){body[data-mode=assembly] .drawer-handle{top:126px;min-height:42px;width:36px}.drawer-handle span{display:none}.drawer-handle.left{left:0}.drawer-handle.right{right:0}}
@media(prefers-reduced-motion:reduce){#interaction-hints:not(:disabled)[aria-pressed=false]{animation:none;box-shadow:0 0 0 1px #b8cf9f50}.drawer-handle,.drawer-handle svg,body[data-mode=assembly] #sheets-panel,body[data-mode=assembly] #guide-panel{transition:none!important}}

/* Minimal preview controls sit directly on the exhibition background. */
#preview-tools .view-tools{padding:3px;gap:5px;border:0;border-radius:0;background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
#preview-tools .view-tools button{min-height:28px;padding:6px 9px;border:0!important;box-shadow:none;border-radius:5px;font-size:10px;background:transparent;color:#a4b9b6}
#preview-tools .view-tools button svg{width:13px;height:13px}
#preview-tools .view-tools button:hover,#preview-tools .view-tools button[aria-pressed=true]{background:#56716725;color:#dce8d7}
#preview-tools #interaction-hints{border:0!important}
@media(max-width:760px){#preview-tools .view-tools{gap:2px;max-width:calc(100vw - 20px);white-space:normal;flex-wrap:wrap;justify-content:center}#preview-tools .view-tools button{padding:6px 7px;font-size:10px}}

/* One continuous stage: text exits, camera reframes, drawers follow. */
body.mode-transition #viewport,body.mode-transition .mode-switch,
body.mode-transition #intro-assemble,body.mode-transition .assembly-transport,
body.mode-transition .drawer-handle,body.mode-transition #sheets-panel,
body.mode-transition #guide-panel,body.mode-transition #display-settings,
body.mode-transition .view-tools,body.mode-transition .mobile-panels{pointer-events:none}
body.entering-assembly .model-intro{display:block;animation:intro-leave .5s cubic-bezier(.22,1,.36,1) both}
body.entering-preview .model-intro{animation:intro-arrive .55s .25s cubic-bezier(.22,1,.36,1) both}
body.entering-assembly:not(.sheets-collapsed) #sheets-panel{animation:sheets-arrive .85s 1.15s cubic-bezier(.22,1,.36,1) both}
body.entering-assembly:not(.guide-collapsed) #guide-panel{animation:guide-arrive .85s 2.05s cubic-bezier(.22,1,.36,1) both}
body.entering-assembly:not(.sheets-collapsed) .drawer-handle.left{animation:sheets-handle-arrive .85s 1.15s cubic-bezier(.22,1,.36,1) both}
body.entering-assembly:not(.guide-collapsed) .drawer-handle.right{animation:guide-handle-arrive .85s 2.05s cubic-bezier(.22,1,.36,1) both}
body.entering-assembly.sheets-collapsed .drawer-handle.left{animation:controls-arrive .85s 1.15s ease both}
body.entering-assembly.guide-collapsed .drawer-handle.right{animation:controls-arrive .85s 2.05s ease both}
body.entering-assembly .assembly-transport,body.entering-assembly .mobile-panels{animation:controls-arrive .7s 3s ease both}
@keyframes intro-leave{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-100px)}}
@keyframes intro-arrive{from{opacity:0;transform:translateX(-70px)}to{opacity:1;transform:translateX(0)}}
@keyframes sheets-arrive{from{opacity:0;transform:translateX(calc(-100% - 30px))}to{opacity:1;transform:translateX(0)}}
@keyframes guide-arrive{from{opacity:0;transform:translateX(calc(100% + 30px))}to{opacity:1;transform:translateX(0)}}
@keyframes sheets-handle-arrive{from{opacity:0;transform:translateX(calc(-1 * var(--sheets-width) - 30px))}to{opacity:1;transform:translateX(0)}}
@keyframes guide-handle-arrive{from{opacity:0;transform:translateX(calc(var(--guide-width) + 30px))}to{opacity:1;transform:translateX(0)}}
@keyframes controls-arrive{from{opacity:0}to{opacity:1}}
@media(max-width:760px){
 body.entering-assembly .drawer-handle.left{animation:controls-arrive .85s 1.15s ease both}
 body.entering-assembly .drawer-handle.right{animation:controls-arrive .85s 2.05s ease both}
}

.sheet-card.current-step{border-color:#d4edac;box-shadow:0 0 0 2px #bed2a160}.sheet-card.current-step .sheet-card-title{color:#e6f4ca}
