:root{font-family:"Microsoft YaHei UI","Microsoft YaHei",sans-serif;color:#21494d;background:#edf2f1}*{box-sizing:border-box}body{margin:0;overflow:hidden;height:100dvh}button{font:inherit;color:#34595c;background:#fffffff0;border:1px solid #cfdcda;border-radius:5px;cursor:pointer;padding:8px 12px}button:hover{background:#dceee7}button:focus-visible,input:focus-visible{outline:3px solid #398ca0;outline-offset:3px}[hidden]{display:none!important}#viewport,#pins,#annotations{position:absolute;inset:0}#viewport canvas{display:block;touch-action:none}#pins,#annotations{pointer-events:none;overflow:hidden}header{position:absolute;top:0;left:0;right:0;height:72px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#edf2f1f2,#edf2f100);pointer-events:none}.brand,.tools{display:flex;align-items:center;gap:9px;pointer-events:auto}.brand-icon{color:white;background:#188782;border-radius:4px;font-size:27px;width:31px;height:31px;line-height:29px;text-align:center}h1{font-size:21px;font-weight:600;letter-spacing:.08em;margin:0}.edition{font-size:11px;color:#78928e;margin-left:5px}.tools button{font-size:11px}.caption{position:absolute;bottom:113px;left:32px;right:32px;pointer-events:none}.caption>span{font-size:11px;color:#52817d}.caption h2{font-size:23px;font-weight:500;margin:6px 0}.caption p{font-size:11px;color:#738e84;margin:0;line-height:1.7}.caption p:empty{display:none}footer{position:absolute;bottom:20px;left:32px;right:32px;max-width:1400px;margin:auto}.play-row{display:flex;align-items:center;gap:18px}#play{min-width:146px;background:#188782;border-color:#188782;color:white;font-size:12px;height:38px}#timeline{min-width:0;flex:1;height:4px;accent-color:#188782;cursor:pointer;margin:0}#clock{width:80px;font-size:10px;color:#6b9087;text-align:right;white-space:nowrap}#chapters{display:flex;justify-content:space-between;margin:10px 93px 0 164px;gap:10px}#chapters button{background:none;border:0;color:#79948b;padding:0;font-size:10px}#chapters button.active{color:#13746c}#skip{position:absolute;left:32px;bottom:163px;font-size:11px;background:transparent;border-color:#bdceca}#facilities{position:absolute;right:32px;bottom:128px;font-size:12px}.device-pin{position:absolute;pointer-events:auto;transform:translate(-50%,-100%);font-size:10px;padding:5px 8px;white-space:nowrap;color:#2c7269;background:#fffffff2;border-radius:4px;border-color:#a9c8bd;box-shadow:0 2px 8px #21534b16}.device-pin:after,.model-note:after{content:"";position:absolute;top:100%;left:50%;height:15px;width:1px;background:#74a89a}.device-pin.active{border-color:#c38c4b;color:#946623}.model-note{position:absolute;transform:translate(-50%,-100%);font-size:11px;color:#206f66;background:#ffffffed;padding:5px 8px;white-space:nowrap;border:1px solid #d2dfd9;border-radius:3px}.model-note.public{color:#497e97;border-color:#b9cfdb}#section-mode{position:absolute;left:32px;top:82px;font-size:10px;border:1px solid #aabeb3;padding:4px 8px;border-radius:3px;color:#68857a;background:#f3f7f2c0}#device-note,#facility-panel{position:absolute;right:28px;top:87px;width:260px;padding:17px;background:#fffffff2;border:1px solid #d4e1db;border-radius:6px;font-size:12px;line-height:1.8;z-index:2}#device-note strong{font-size:14px;font-weight:500}#device-note p{color:#68847a;margin:9px 0 0}#close-device{position:absolute;right:5px;top:4px;border:0;background:none;padding:0 6px;font-size:19px}#cabinet-action{font-size:11px;padding:5px 9px;margin-top:13px}#facility-panel>div:first-child{display:flex;justify-content:space-between;align-items:center}#close-facilities{font-size:10px;padding:2px 6px}#facility-list{display:grid;gap:7px;margin-top:12px}#facility-list button{font-size:12px;text-align:left;background:#f4f8f4}#evidence{position:absolute;right:25px;top:100px;background:white;max-width:320px;max-height:40vh;overflow:auto}#evidence pre{font-size:9px;white-space:pre-wrap}@media(max-width:1000px){header{padding:0 18px}.edition{display:none}.tools{gap:5px}.caption{left:22px;right:22px}.caption h2{font-size:20px}footer{left:22px;right:22px}#skip{left:22px}}@media(max-width:650px){header{height:92px;padding:9px 15px 13px;flex-direction:column;align-items:flex-start;justify-content:center;gap:9px}h1{font-size:16px}.brand-icon{display:none}.tools button{font-size:9px;padding:6px 4px}.tools{gap:4px;width:100%;justify-content:space-between}.caption{left:18px;right:18px;bottom:113px}.caption h2{font-size:17px}.caption p{font-size:10px;max-width:260px}footer{left:18px;right:18px;bottom:17px}.play-row{gap:10px}#play{min-width:116px;font-size:10px;height:34px;padding:6px}#clock{width:60px;font-size:9px}#chapters{margin:11px 0 0;gap:6px}#chapters button{font-size:9px}#skip{left:18px;bottom:166px;font-size:10px}#facilities{right:18px;bottom:165px;font-size:10px;padding:6px 9px}#section-mode{left:18px;top:102px;font-size:9px}.device-pin{font-size:9px;padding:4px 6px}#device-note,#facility-panel{left:14px;right:14px;top:auto;bottom:113px;width:auto;max-height:31vh;overflow:auto;padding:14px;font-size:11px}#facility-list{grid-template-columns:repeat(2,1fr)}#facility-list button{font-size:10px}#device-note strong{font-size:12px}.model-note{font-size:9px;padding:4px 6px}}

@media(min-width:651px){#facility-panel{max-height:calc(100dvh - 195px);overflow:auto}}

#tag-leaders{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#tag-leaders line{stroke:#458e82;stroke-width:1;opacity:.8}.device-pin:after,.model-note:after{display:none}

#loading{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);padding:12px 18px;background:#fffffff0;border:1px solid #cfdcda;border-radius:5px;font-size:12px;white-space:nowrap;pointer-events:none}button:disabled{opacity:.5;cursor:default}#timeline:disabled{cursor:wait}

#reading-scrim{position:absolute;left:0;right:0;bottom:0;height:205px;background:linear-gradient(#edf2f100,#edf2f1e8 48%,#edf2f1f7);pointer-events:none}header{background:linear-gradient(#edf2f1f7,#edf2f1ed 70%,#edf2f100)}

@media(max-width:650px){#device-note:not([hidden])~.caption,#device-note:not([hidden])~#facilities,#facility-panel:not([hidden])~.caption{visibility:hidden}}

#space-navigation{position:absolute;top:80px;left:28px;display:flex;align-items:center;gap:8px;z-index:3;font-size:11px}#space-navigation [aria-current="true"]{background:#188782;color:white;border-color:#188782}#space-reset{margin-left:10px}#space-caption{position:absolute;bottom:65px;left:32px;right:32px;max-width:680px}#space-caption span{font-size:11px;color:#52817d}#space-caption h2{font-size:24px;font-weight:500;margin:9px 0}#space-caption p{font-size:12px;line-height:1.8;color:#68847a}#space-next{margin-top:7px;background:#188782;color:white;padding:10px 22px}#space-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}#space-labels span{position:absolute;transform:translate(-50%,-100%);background:#fffffff2;border:1px solid #bed1ca;border-radius:4px;padding:5px 8px;color:#267369;font-size:11px;white-space:nowrap}.spatial-context:not([data-space="region"]) :is(footer,.caption,#pins,#annotations,#section-mode,#skip,#facilities,#device-note,#facility-panel,.tools button:not(#fullscreen)){display:none!important}.spatial-context[data-space="region"] #section-mode{top:126px}
.spatial-context #skip{display:none!important}
#access-controls{margin:12px 0 7px}#access-roles,#access-floors{display:flex;gap:6px;align-items:center;flex-wrap:wrap}#access-roles button,#access-floors button{font-size:11px;padding:7px 12px}#access-controls [aria-pressed="true"]{background:#d0e6dd;border-color:#4d9a87;color:#17675c}#access-floors{margin-top:8px}#access-result{font-size:11px;font-weight:500;color:#637d73}#space-previous{margin-right:9px;font-size:11px}body:is([data-space="lobby"],[data-space="access"]) #space-caption{max-width:740px;bottom:36px}body:is([data-space="lobby"],[data-space="access"]) #reading-scrim{height:280px}
@media(max-width:650px){#access-roles button,#access-floors button{font-size:10px;padding:6px 8px}body:is([data-space="lobby"],[data-space="access"]) #space-caption{bottom:20px}body:is([data-space="lobby"],[data-space="access"]) #space-caption h2{font-size:17px}#space-caption #space-next{font-size:11px;padding:9px 12px}}
#planning-controls{margin:11px 0 4px}#planning-conditions,#planning-candidates{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}#planning-controls button{font-size:11px;padding:6px 10px}#planning-controls [aria-pressed="true"]{background:#d0e6dd;border-color:#4d9a87;color:#17675c}body[data-space="floor"] #space-caption{bottom:24px;max-width:800px}body[data-space="floor"] #reading-scrim{height:285px}#planning-labels{position:absolute;inset:0;overflow:hidden;pointer-events:none}#planning-labels span{position:absolute;transform:translate(-50%,-100%);background:#fffffff0;border:1px solid #bad0c4;border-radius:3px;padding:4px 7px;font-size:10px;color:#397f72;white-space:nowrap}@media(max-width:650px){#planning-controls button{font-size:9px;padding:5px 7px}body[data-space="floor"] #space-caption{bottom:18px}body[data-space="floor"] #space-caption h2{font-size:16px}#planning-labels span{font-size:8px;padding:3px 4px}}
.story-mode:not(.local-replay) :is(footer,.caption,#space-next,#space-previous){display:none!important}.story-mode:not(.local-replay) #space-caption{bottom:140px!important;max-width:850px}.story-mode #reading-scrim{height:330px!important}#story-controls{position:absolute;left:32px;right:32px;bottom:22px;z-index:3}#story-action-row{display:flex;gap:14px;align-items:center}#story-next{background:#188782;color:white;min-width:150px}#story-position{color:#6d8d80;font-size:11px}#story-pause,#story-previous{font-size:11px}#story-chapters{display:flex;justify-content:space-between;gap:10px;margin-top:16px;max-width:1000px}#story-chapters button{border:0;background:none;font-size:11px;padding:4px 0;color:#789489}#story-chapters [aria-current="true"]{color:#13746d}#story-local-replay,#story-return{margin-left:8px}#validation-controls>div{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}#validation-controls button{font-size:11px;padding:6px 10px}#validation-controls [aria-pressed="true"]{background:#d0e6dd;border-color:#4d9a87}.local-replay #story-controls{display:none!important}.story-mode.local-replay #space-caption{display:none!important}
@media(max-width:650px){#story-controls{left:18px;right:18px;bottom:14px}#story-action-row{gap:7px}#story-next{min-width:110px;padding:8px 12px;font-size:11px}#story-previous,#story-pause{font-size:9px;padding:7px}#story-chapters{gap:5px;margin-top:10px}#story-chapters button{font-size:8px}.story-mode:not(.local-replay) #space-caption{bottom:119px!important}.story-mode #space-caption h2{font-size:16px}.story-mode #space-navigation{gap:3px}#story-local-replay,#story-return{font-size:9px;margin-left:0}#validation-controls button{font-size:9px;padding:5px 7px}}
@media(max-width:650px){.story-mode:has(#device-note:not([hidden])) #space-caption,.story-mode:has(#facility-panel:not([hidden])) #space-caption{visibility:hidden}}
.context-loading :is(#viewport,header .tools,footer,.caption,#skip,#facilities){visibility:hidden!important}
@media(max-width:650px){#space-navigation{top:92px;left:15px;right:15px;gap:4px;flex-wrap:wrap;font-size:10px}#space-navigation button{padding:6px}#space-reset{margin-left:auto}#space-caption{left:18px;right:18px;bottom:34px}#space-caption h2{font-size:19px}#space-caption p{font-size:10px}#space-labels span{font-size:9px;padding:4px}.spatial-context[data-space="region"] #section-mode{top:138px}}

#story-auto{font-size:11px;border-color:#77aaa0;color:#176e64}#story-tour-status{font-size:10px;color:#517d73;min-height:13px;margin-top:7px}#story-action-row{flex-wrap:wrap}.story-mode:not(.local-replay) #space-caption{bottom:157px!important}@media(max-width:650px){#story-auto{font-size:9px;padding:7px}#story-tour-status{font-size:9px;min-height:12px;margin-top:5px}.story-mode:not(.local-replay) #space-caption{bottom:137px!important}}

#space-labels .research-floor{background:#e8f2ed;color:#135c55;border-color:#448f80;box-shadow:0 2px 7px #174c3e1a}#building-section-toggle{border-color:#7ba69b;color:#246f64}#building-section-toggle[aria-pressed="true"]{background:#deeee6}

#facility-categories{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px;padding-bottom:10px;border-bottom:1px solid #dbe6df}#facility-categories button{font-size:10px;padding:5px 8px;background:#f4f8f5}#facility-categories [aria-pressed="true"]{background:#d5e9df;border-color:#4f9580;color:#145d4e}@media(max-width:650px){#facility-categories{margin-top:8px;gap:4px}#facility-categories button{font-size:9px;padding:4px 6px}}

#space-caption{pointer-events:none}#space-caption :is(button,input,select,summary){pointer-events:auto}

.room-pin{position:absolute;pointer-events:auto;transform:translate(-50%,-100%);font-size:10px;padding:5px 8px;white-space:nowrap;color:#315f68;background:#ffffffed;border:1px solid #8bb4b7;box-shadow:0 2px 8px #214e4b15}.story-mode :is(#overview,#region){display:none!important}#room-uses[aria-pressed="true"]{background:#d5e9df;border-color:#4f9580}@media(max-width:650px){.room-pin{font-size:9px;padding:4px 6px}}

/* Keep recovery independent of the renderer and of partially mounted chapters. */
.load-failed body > :not(header):not(#loading):not(#retry-load):not(script){visibility:hidden!important}
.load-failed header .tools{visibility:hidden!important}
.load-failed #loading{max-width:min(460px,calc(100vw - 36px));white-space:normal;line-height:1.8;text-align:center}
#retry-load{position:absolute;left:50%;top:calc(45% + 62px);transform:translateX(-50%);z-index:10;background:#188782;color:white}

#validation-review-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}#validation-review-labels button{position:absolute;pointer-events:auto;font-size:10px;padding:5px 8px;color:#356e81;border-color:#8eafb7;background:#fffffff2;white-space:nowrap;box-shadow:0 2px 7px #163e4912}@media(max-width:650px){#validation-review-labels button{font-size:9px;padding:4px 6px}}
.story-mode[data-validation-review="building"] :is(#pins,#annotations){visibility:hidden}

#space-labels button{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;font-size:11px;padding:5px 8px;white-space:nowrap;border-color:#589b8d;color:#216c62;background:#fffffff2}#lobby-hardware-leaders{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}#lobby-hardware-leaders line{stroke:#6d9a90;stroke-width:1;opacity:.65}#space-labels [data-lobby-hardware]{color:#2f6d80;border-color:#83a5b4}@media(max-width:650px){#space-labels button{font-size:9px;padding:4px 6px}}

/* Narrated walkthrough: persistent sound switch and stable navigation slots. */
.spatial-context:not([data-space="region"]) .tools button#story-mute{display:inline-flex!important}
#story-mute{min-width:70px;border-color:#438d82;color:#17675c;justify-content:center}
#story-mute[aria-pressed="true"]{background:#dce5e3;color:#526d69}
#space-caption #narration-caption{font-size:14px;line-height:1.8;color:#345e58;max-width:68ch;margin:8px 0 0}
.has-narration #space-hint{display:none}
#story-action-row{display:grid;grid-template-columns:105px 105px 48px 175px 155px;gap:12px;max-width:670px}
#story-action-row button{white-space:nowrap;min-height:38px}
#story-next{min-width:0}
#story-position{text-align:center}
#story-pause:disabled{visibility:hidden}
#story-tour-status[data-audio-message]:not([data-audio-message=""]):after{content:" · " attr(data-audio-message)}
#voice-retry{position:absolute;left:690px;top:0;font-size:11px;padding:9px}
#space-labels .narration-floor{background:#188782;color:white;border-color:#188782}
@media(max-width:650px){
 #story-action-row{grid-template-columns:1fr 1fr 48px;gap:6px}
 #story-previous{grid-column:1;grid-row:1}#story-pause{grid-column:2;grid-row:1}#story-position{grid-column:3;grid-row:1}
 #story-next{grid-column:1;grid-row:2}#story-auto{grid-column:2/4;grid-row:2}
 #story-controls{bottom:12px}#story-chapters{margin-top:6px}
 .story-mode:not(.local-replay) #space-caption{bottom:172px!important}
 #space-caption #narration-caption{font-size:12px;line-height:1.7;max-width:100%}
 #space-caption h2{margin:5px 0}
 #story-mute{min-width:54px;padding:6px}
 #voice-retry{position:static;margin-top:4px;padding:4px 7px}
}

@media(max-width:650px){.story-mode:not(.local-replay) #facilities{top:137px;bottom:auto;right:18px;z-index:3}.story-mode :is(#device-note,#facility-panel){bottom:172px}}

/* v0.40: labels serve the spoken subject instead of carpeting the model. */
#building-callouts{position:absolute;inset:0;pointer-events:none;z-index:2}
#building-callouts>div{position:absolute;font-size:13px;color:#527772;line-height:22px;white-space:nowrap;transition:color .25s}
#building-callouts>div.active{color:#148576;font-weight:600;animation:label-pulse 1.2s ease-in-out 2}
#building-callout-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
#building-callout-lines polyline{fill:none;stroke:#7b9e97;stroke-width:1;opacity:.65}
#building-callout-lines polyline.active{stroke:#198d7d;stroke-width:1.5;opacity:.95}
#floor-policy{position:absolute;right:6%;top:220px;width:300px;color:#52756c;pointer-events:none}
#floor-policy>span{font-size:11px;letter-spacing:.08em}#floor-policy>div{padding:18px 0;border-bottom:1px solid #91afa638;opacity:.55}
#floor-policy>div.active{opacity:1;color:#137c6e}#floor-policy strong{font-size:18px;font-weight:500}#floor-policy p{font-size:12px;line-height:1.6;margin:7px 0 0}
#floor-policy small{display:block;font-size:11px;line-height:1.8;margin-top:20px;color:#78928a}
#lift-current-result{font-size:13px!important;color:#236e61;margin-top:18px!important}
#lift-level-labels{position:absolute;inset:0;pointer-events:none}#lift-level-labels span{position:absolute;color:#3a776c;font-size:13px;transform:translate(-100%,-50%)}
.story-mode .room-pin{background:none;border:0;box-shadow:none;color:#256c60;font-size:11px;padding:3px 5px;text-shadow:0 1px 2px #fff}
.story-mode .model-note{background:none;border:0;color:#3f7569}
.story-mode .device-pin{background:#f1f6f1b0;border-color:#9bbdb244;box-shadow:none}
@keyframes label-pulse{50%{opacity:.45}}
@media(prefers-reduced-motion:reduce){#building-callouts>div.active{animation:none}}
@media(max-width:650px){
 #building-callouts>div{font-size:10px;line-height:19px;white-space:normal;max-width:153px}
 #floor-policy{top:180px;right:14px;width:150px}#floor-policy>div{padding:10px 0}#floor-policy strong{font-size:12px}#floor-policy p{font-size:10px}#floor-policy small{font-size:9px;margin-top:9px}#lift-current-result{font-size:10px!important}
 #lift-level-labels span{font-size:10px}
}

/* v0.41: contextual labels share the translucent access-control tag surface. */
.story-mode :is(.device-pin,.room-pin,.model-note),#planning-labels span{
 background:#f1f6f1b0;border:1px solid #9bbdb244;border-radius:4px;box-shadow:none;
 color:#2c7269;padding:5px 8px;font-size:11px;text-shadow:none;
}
@media(max-width:650px){.story-mode :is(.device-pin,.room-pin,.model-note),#planning-labels span{font-size:9px;padding:4px 6px}}
