/* Whole-location composition, with small neutral spatial entrances. */
body.m27 #visual-scene-host .so-root .so-stage{position:absolute;inset:0;z-index:4;overflow:hidden;background:#102129;isolation:isolate}
.so-stage:after{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(#06141b70,transparent 18%,transparent 78%,#06141ba8)}
.so-stage [hidden],.so-stage[hidden]{display:none!important}
.so-ambient{position:absolute;inset:-20px;width:calc(100% + 40px);height:calc(100% + 40px);object-fit:cover;filter:blur(28px) brightness(.65);pointer-events:none}
.so-viewport{position:absolute;inset:0;overflow:hidden;touch-action:none;outline-offset:-4px}.so-viewport.can-pan{cursor:grab}.so-viewport.can-pan:active{cursor:grabbing}
.so-plane{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;user-select:none}
.so-art{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none;user-select:none}
.so-zones{position:absolute;inset:0;pointer-events:none}
.so-zone{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;box-shadow:none;color:#f3dfb7;pointer-events:auto;cursor:pointer;min-width:44px;min-height:44px;padding:0}
.so-anchor-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:6px 9px;border:1px solid #c9af7669;border-radius:2px;background:#11252ad4;box-shadow:0 3px 10px #0004;white-space:nowrap;font:12px/1.4 'KaiTi','STKaiti',serif;letter-spacing:1px;color:#f1ddb7;pointer-events:none}
.so-anchor-label:after{content:'';position:absolute;left:50%;top:100%;height:8px;border-left:1px solid #d9bf8180}
.so-person .so-anchor-label{top:100%;transform:translate(-50%,3px)}
.so-zone:hover .so-anchor-label,.so-zone:focus-visible .so-anchor-label{border-color:#f1d398;background:#203735ed}.so-zone:focus-visible{outline:1px solid #f1d398;outline-offset:2px}
.so-hint{position:absolute;z-index:3;left:24px;right:24px;bottom:25px;margin:0;text-align:center;color:#ebdbb9;text-shadow:0 2px 5px #000;font:12px/1.7 'KaiTi',serif;pointer-events:none;transition:opacity .3s}.so-hint.so-faded{opacity:0}
.so-status{position:absolute;z-index:7;top:34%;left:20px;right:20px;text-align:center;color:#f1e0bc;font-size:14px;line-height:1.7}
.so-fallback{position:absolute;top:43%;left:24px;right:24px;z-index:7;display:flex;gap:9px;justify-content:center;flex-wrap:wrap}.so-fallback button{min-height:44px;border:1px solid #b29c75;background:#14262e;color:#ecdcbf;padding:9px 12px;border-radius:3px}
body.m27 #visual-scene-host .so-on-overview>:is(.fi-camera,.fi-scene-residents,.fi-photo-receipt,.if-scene-tools,.if-scene-hint,.fi-status){visibility:hidden;pointer-events:none}
body.m27 #visual-scene-host .so-root .if-scene-tools{display:none!important}
body.m27 #visual-scene-host .so-root .if-scene-hint{left:18px;right:125px;bottom:25px;font-size:11px;text-align:left}
.so-camera{position:absolute;right:16px;bottom:18px;z-index:5;min-height:44px;padding:8px 15px;border:1px solid #bfa57399;border-radius:3px;background:#183037e6;color:#f4dfb5;font:13px/1.5 'KaiTi',serif;cursor:pointer}
.so-camera[hidden]{display:none!important}
body.m27 #visual-scene-host .so-root .fi-capture-controls{bottom:22px;grid-template-columns:1fr auto;max-width:430px;gap:8px;padding:8px}
body.m27 #visual-scene-host .so-root .fi-capture-controls>:is(.fi-input,.fi-minor){display:none!important}
.so-cancel{min-height:44px;min-width:64px;color:#e8d6b7;border:1px solid #bba47777;background:#172b34;border-radius:3px;font-size:12px}
body.m27 #visual-scene-host .so-root.so-framing .fi-scene-residents{visibility:hidden;pointer-events:none}
body.m27 #visual-scene-host .so-root .if-closeup-caption{font-size:14px;line-height:1.7;bottom:20px}
body.m27 #visual-scene-host .so-root .if-closeup-tools{top:auto;bottom:145px;flex-direction:row}
body.m27 #visual-scene-host .so-root .if-closeup-tools .if-tool{width:auto;min-width:68px;min-height:46px;flex-direction:row;border-radius:4px;gap:8px;padding:8px 12px}
body.m27 #visual-scene-host .so-root .if-closeup-tools .if-tool span{font-size:13px}
body.m27 #visual-scene-host .so-root .if-closeup-tools .if-tool:last-child{background:#dbc28e;color:#202c2d;border-color:#eddbac}
body.m27 #visual-scene-host .so-root .fi-photo-receipt{bottom:78px}
body.m27 #visual-scene-host .so-root .fi-scene-residents{bottom:78px}
@media(min-width:760px){.so-anchor-label{font-size:14px;padding:7px 12px}.so-hint{font-size:13px}}
@media(max-height:540px){.so-anchor-label{font-size:11px;padding:5px 7px}.so-hint{bottom:16px;font-size:11px}body.m27 #visual-scene-host .so-root .if-closeup-tools{bottom:109px}body.m27 #visual-scene-host .so-root .if-closeup-caption{font-size:12px;padding:9px 12px}}
@media(prefers-reduced-motion:reduce){.so-hint{transition:none}}

.so-note-fold{grid-column:1/-1;font-size:11px;color:#d9c6a1}.so-note-fold summary{min-height:24px;cursor:pointer;padding:3px 0}.so-note-fold .fi-input{display:block!important;font-size:16px!important;width:100%;margin-top:4px;box-sizing:border-box}
body.m27 #visual-scene-host .so-root .fi-capture-controls{right:16px;left:16px;margin-inline:auto}
body.m27 #visual-scene-host .so-root .fi-scene-residents{bottom:18px}
body.m27 #visual-scene-host .so-root .if-scene-hint{bottom:74px}
