:root{font-family:"Segoe UI Variable Text","Segoe UI",sans-serif;color:#161616;background:#e5e2d8;font-synthesis:none;--paper:#fbfaf6;--ink:#161616;--muted:#55554e;--red:#e33224;--line:#d7d5cc}
*{box-sizing:border-box}html,body,main{margin:0;width:100%;height:100%;overflow:hidden}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:disabled{opacity:.45;cursor:wait}button:focus-visible,a:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid #0057ff;outline-offset:4px}::selection{background:#f7bbb4;color:#161616}header{position:absolute;left:28px;right:28px;top:24px;display:flex;align-items:center;gap:25px;pointer-events:none}header>*{pointer-events:auto}.brand{display:block;width:116px}.brand img{display:block;width:100%;height:auto}.title{border-left:1px solid #88877c;padding-left:24px}.title h1{font-family:Bahnschrift,"Segoe UI",sans-serif;font-weight:600;font-size:25px;line-height:1.15;letter-spacing:-.025em;margin:0 0 5px}.title p{font-size:12px;margin:0;color:#45453f}.icon-button{width:40px;height:40px;background:var(--paper);border-radius:7px;margin-left:auto}.icon-button svg{width:21px;height:21px;vertical-align:middle}#scene{display:block;width:100%;height:100%;touch-action:none;outline-offset:-3px}.scene-controls{position:absolute;right:28px;top:50%;transform:translateY(-50%);width:192px;background:var(--paper);box-shadow:0 8px 28px #1b251318;border-radius:10px;padding:7px}.scene-controls button{width:100%;display:flex;align-items:center;gap:10px;text-align:left;padding:12px 10px;font-size:13px;border-radius:5px;line-height:1.25}.scene-controls button+button{margin-top:3px}.scene-controls button:hover{background:#eeece4}.scene-controls svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:round;flex-shrink:0}.switch{margin-left:auto;position:relative;width:24px;height:14px;background:#c7c5bd;border-radius:9px;flex-shrink:0}.switch:after{content:"";position:absolute;width:10px;height:10px;top:2px;left:2px;border-radius:50%;background:white;transition:transform .16s ease}.scene-controls button[aria-pressed=true] .switch{background:#161616}.scene-controls button[aria-pressed=true] .switch:after{transform:translateX(10px)}footer{position:absolute;left:28px;right:28px;bottom:23px;display:flex;flex-direction:column;gap:15px;align-items:flex-start;pointer-events:none}footer>*{pointer-events:auto}nav{display:flex;padding:5px;background:var(--paper);border-radius:8px;gap:3px;box-shadow:0 8px 26px #1b251314}nav button{padding:11px 17px;font-size:13px;border-radius:4px;white-space:nowrap;transition:background .16s ease,color .16s ease}nav button:hover{background:#eeece4}nav button.active{background:var(--ink);color:white}.footer-meta{display:flex;align-items:center;gap:18px;font-size:11px;color:#44443b}.footer-meta>button{font-size:11px;padding:6px 12px;background:var(--paper);border-radius:4px}.footer-meta>button[aria-pressed=true]{background:var(--red);color:#fff}.gesture{background:#e6e3d8dc;padding:4px 7px;border-radius:3px}details{position:relative}summary{cursor:pointer;text-underline-offset:3px;text-decoration:underline;list-style:none;padding:4px}summary::-webkit-details-marker{display:none}details>div{position:absolute;left:0;bottom:31px;width:300px;background:var(--paper);padding:20px;border-radius:7px;box-shadow:0 8px 28px #1b251328;font-size:12px;line-height:1.6}details a{color:#0055cc;text-underline-offset:3px}details p{margin:8px 0 13px}.scene-label{position:absolute;left:28px;bottom:134px;font-family:Bahnschrift,"Segoe UI",sans-serif;font-size:12px;letter-spacing:.055em;color:#464940;pointer-events:none;background:#f7f5eecc;padding:5px 8px;border-radius:3px}/* White VTG splash: actual load progress inside a small pipe run. */
#loading{position:absolute;inset:0;display:grid;place-items:center;background:#fff;transition:opacity .4s ease;z-index:4}
#loading.complete{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s ease,visibility 0s .4s}
.loading-content{width:min(380px,calc(100vw - 56px));text-align:center;transform:translateY(-12px)}
.loading-logo{display:block;width:180px;height:auto;margin:0 auto 27px}
.loading-content h2{font-family:Bahnschrift,"Segoe UI",sans-serif;font-weight:500;font-size:27px;line-height:1.25;letter-spacing:-.025em;color:#1c2926;margin:0 0 23px}
.loading-pipes{display:block;width:100%;height:auto;overflow:visible}
.pipe-outline{stroke:#cfd8d5;stroke-width:13;stroke-linecap:round;stroke-linejoin:round}
.pipe-inner{stroke:#f3f6f4;stroke-width:9;stroke-linecap:round;stroke-linejoin:round}
#loading-progress{stroke:url(#pipe-color);stroke-width:7;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .32s ease-out}
.pipe-flow{stroke:#71877e;stroke-opacity:.3;stroke-width:2;stroke-linecap:round;stroke-dasharray:2 23;animation:pipe-flow 1.5s linear infinite}
.pipe-fittings{stroke:#718078;stroke-width:2;stroke-linecap:round;fill:#fff}
.loading-meta{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin:17px 13px 0;color:#66766f;font-family:"Segoe UI",sans-serif;font-size:12px;line-height:1.5}
.loading-meta p{margin:0;text-align:left}.loading-meta>span{font-variant-numeric:tabular-nums;min-width:32px;text-align:right}
@keyframes pipe-flow{to{stroke-dashoffset:-50}}
@media(max-width:430px){.loading-logo{width:154px}.loading-content h2{font-size:24px}.loading-meta{font-size:11px}}
@media(prefers-reduced-motion:reduce){.pipe-flow{animation:none}#loading-progress{transition:none}}
#error{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:28px;background:var(--paper);width:min(450px,88vw);border-radius:10px;z-index:6;box-shadow:0 10px 34px #0002}#error h2{font-size:22px;line-height:1.3;margin:0 0 14px}#error p{font-size:14px;line-height:1.6}#error button{padding:11px 17px;background:#161616;color:white;border-radius:5px}body.loading .scene-controls,body.loading footer,body.loading .scene-label{visibility:hidden}
@media(max-width:760px){header{left:16px;right:16px;top:17px;gap:15px}.brand{width:80px}.title{padding-left:15px}.title h1{font-size:21px}.title p{font-size:10px;max-width:160px;line-height:1.4}.icon-button{width:34px;height:34px;flex-shrink:0}.scene-controls{top:auto;bottom:134px;right:14px;transform:none;width:auto;padding:5px;display:flex;flex-direction:column}.scene-controls button{padding:10px;margin:0!important;width:40px;height:40px}.scene-controls button>span{display:none}.scene-controls button[aria-pressed=true]{background:#e3e1d9}.scene-controls button:after{content:none}footer{left:14px;right:14px;bottom:15px;gap:11px}nav{width:100%;gap:0;justify-content:space-between}nav button{font-size:11px;padding:12px 9px;white-space:normal}.footer-meta{gap:13px;font-size:10px}.gesture{display:none}.footer-meta>button{font-size:10px}.scene-label{left:17px;bottom:131px;font-size:10px;max-width:calc(100vw - 95px)}details>div{left:-75px;width:min(300px,85vw)}#scene{height:100svh}}
header{background:var(--paper);padding:12px 17px;border-radius:9px;top:17px;left:20px;right:20px;box-shadow:0 5px 22px #1b25130b}.dimensions{white-space:nowrap}
@media(max-width:760px){header{left:12px;right:12px;top:12px;padding:10px 12px;gap:12px}.title{padding-left:12px}.brand{width:69px}.title h1{font-size:20px}.title p{max-width:155px}.icon-button{margin-left:auto;width:30px;background:transparent}.scene-controls button{position:relative}.scene-controls button:focus-visible:after{content:attr(aria-label);position:absolute;right:46px;background:var(--paper);padding:5px}}
@media(max-width:760px){.title p{font-size:9px;max-width:157px}.scene-controls button{width:44px;height:44px;padding:12px}.scene-controls button:focus-visible:after{white-space:nowrap;z-index:2;bottom:7px;border-radius:4px;font-size:12px;box-shadow:0 3px 10px #0002}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}
#life .play-icon{display:none}#life[aria-pressed=false] .pause-icon{display:none}#life[aria-pressed=false] .play-icon{display:block}
.tour-launch{margin-left:auto;background:var(--ink);color:white;display:flex;align-items:center;gap:7px;padding:11px 15px;min-height:44px;border-radius:5px;font-size:13px;white-space:nowrap}.tour-launch:hover{background:#35352f}.tour-launch svg{width:19px;height:19px;fill:currentColor}.tour-launch[aria-pressed=true]{background:var(--red)}header .icon-button{margin-left:0;min-width:40px;min-height:44px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.tour-panel,.equipment-card,.flow-legend{position:absolute;background:var(--paper);border:1px solid #d7d5cc;box-shadow:0 8px 28px #1b251318;border-radius:8px}.tour-panel[hidden],.equipment-card[hidden],.flow-legend[hidden],[hidden]{display:none!important}.tour-panel{left:28px;bottom:151px;width:340px;padding:17px 18px 8px}.tour-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.tour-panel h2{font-family:Bahnschrift,"Segoe UI",sans-serif;font-size:21px;line-height:1.2;font-weight:600;letter-spacing:-.02em;margin:12px 0 7px}.tour-panel p{font-size:13px;line-height:1.55;margin:0 0 14px}.tour-panel progress{display:block;width:100%;height:3px;border:0;background:var(--line);appearance:none}.tour-panel progress::-webkit-progress-bar{background:var(--line)}.tour-panel progress::-webkit-progress-value{background:var(--red)}.tour-panel progress::-moz-progress-bar{background:var(--red)}.tour-actions{display:flex;align-items:center;justify-content:space-between;margin:6px -7px 0}.tour-actions button{min-width:44px;min-height:44px;font-size:12px;padding:10px}.tour-actions button:hover{background:#eeece4;border-radius:4px}.tour-actions button:disabled{cursor:default}.tour-actions #tour-stop{font-size:24px;color:var(--muted)}.equipment-card{left:28px;top:114px;width:320px;max-height:calc(100svh - 274px);overflow:auto;padding:15px 18px 18px}.card-heading{display:flex;align-items:center;justify-content:space-between;margin:-6px -10px 5px 0}.card-heading h2{font-size:16px;font-weight:600;margin:0}.card-heading button{width:44px;height:44px;font-size:25px;color:var(--muted)}.equipment-card label,.flow-legend>label{display:block;font-size:11px;line-height:1.5;color:var(--muted);margin-bottom:7px}select{font:inherit;max-width:100%;border:1px solid #b9b7ae;border-radius:4px;background:var(--paper);color:var(--ink);min-height:44px;padding:8px;font-size:12px}select:focus-visible{outline:2px solid #0057ff;outline-offset:2px}#equipment-select{width:100%}.part-kicker{display:flex;justify-content:space-between;gap:8px;margin-top:19px;font-size:11px;color:var(--muted)}.part-kicker #part-id{font-family:Consolas,monospace}.equipment-card h3{font-family:Bahnschrift,"Segoe UI",sans-serif;font-size:21px;font-weight:600;line-height:1.2;margin:8px 0}.equipment-card #part-model{font-size:13px;line-height:1.55;overflow-wrap:anywhere;margin:0 0 17px}.equipment-card dl{font-size:12px;line-height:1.5;margin:0}.equipment-card dt{color:var(--muted);margin-top:10px}.equipment-card dd{margin:2px 0 0}.part-note{border-top:1px solid var(--line);font-size:11px;line-height:1.6;padding-top:13px;margin:15px 0 10px;color:var(--muted)}#part-focus{padding:10px 0;min-height:44px;font-size:12px;text-decoration:underline;text-underline-offset:4px}.flow-legend{top:114px;left:28px;width:270px;padding:16px 18px}.flow-legend select{width:100%}.flow-keys{display:flex;gap:20px;margin-top:14px;font-size:12px}.flow-keys span{display:flex;gap:6px;align-items:center}.flow-keys i{display:inline-block;width:16px;height:3px}.supply-key{background:#df3526}.return-key{background:#146ed4}.flow-legend p{font-size:11px;line-height:1.5;color:var(--muted);margin:13px 0 0}.flow-legend button{font-size:12px;min-height:44px;text-decoration:underline;text-underline-offset:4px;padding:8px 0 0}.inspecting .flow-legend{left:364px}.footer-meta>button{min-height:36px}details>div{max-height:calc(100svh - 150px);overflow:auto}.inspecting .tour-panel{left:364px;width:340px}body.loading .tour-launch{visibility:hidden}
@media(max-width:1000px){.inspecting .tour-panel{left:28px;width:320px;bottom:151px}.inspecting .equipment-card{max-height:calc(100svh - 535px)}}
@media(max-width:760px){header{gap:8px}.title{padding-left:10px}.title h1{font-size:18px}.title p{font-size:8px;max-width:137px}.tour-launch{width:44px;height:44px;padding:11px;flex-shrink:0}.tour-launch span{display:none}.tour-launch svg{width:22px;height:22px}header .icon-button{min-width:30px;width:30px}.scene-controls{bottom:144px}.tour-panel,.inspecting .tour-panel{top:102px;left:14px;bottom:auto;width:calc(100% - 88px);padding:13px 14px 5px}.tour-panel h2{font-size:18px;margin:10px 0 6px}.tour-panel p{font-size:12px;line-height:1.45;margin-bottom:10px}.tour-meta{font-size:10px}.tour-actions button{padding:8px;min-width:40px}.equipment-card,.inspecting .equipment-card{left:14px;top:auto;bottom:143px;width:calc(100% - 88px);max-height:calc(100svh - 265px);padding:12px 14px}.inspecting:has(#tour-panel:not([hidden])) .equipment-card{max-height:calc(100svh - 420px)}.equipment-card h3{font-size:18px}.flow-legend,.inspecting .flow-legend{left:14px;top:auto;bottom:143px;width:calc(100% - 88px);padding:12px 14px}.flow-legend p{font-size:10px}.footer-meta>button{min-height:44px;padding:6px 10px}.footer-meta{gap:12px}footer{gap:6px}.scene-label{bottom:143px}body:has(.tour-panel:not([hidden])) .scene-label,body:has(.flow-legend:not([hidden])) .scene-label,body.inspecting .scene-label{display:none}}
@media(max-width:760px){nav button{flex:1;min-width:0;padding:12px 5px;font-size:10px}}
body:has(.tour-panel:not([hidden])) .scene-label{display:none}
.tour-actions svg,.card-heading svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round;vertical-align:middle}.equipment-card #part-title{margin-top:19px}.equipment-card .part-kicker{margin:9px 0 12px}
@media(max-width:760px){.inspecting:has(#tour-panel:not([hidden])) .equipment-card{max-height:calc(100svh - 500px)}}
