/* Close-up paintings remain inside the Sanctuary fullscreen root. */
.sanctuary-frame{position:relative}
.sanctuary-exterior-layer{position:absolute;z-index:0;overflow:hidden;pointer-events:none;background:#14151b}
.sanctuary-exterior-layer[hidden]{display:none!important}
.sanctuary-exterior-layer>img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none;user-select:none}
.sanctuary-scene[data-layered=true] .sanctuary-scene-image{z-index:3}
.sanctuary-scene[data-layered=true] .sanctuary-ambient{z-index:2}
.sanctuary-scene[data-layered=true] .sanctuary-lamp-glow{display:none}
.sanctuary-scene[data-layered=true] .sanctuary-window-target{z-index:3}
.sanctuary-scene[data-layered=true] .sanctuary-breath{z-index:4}
.sanctuary-window-view[data-scene=agandar] .sanctuary-window-plane{box-shadow:inset 0 0 0 2px #312b2c}
.sanctuary-window-target{position:absolute;z-index:3;border:0;background:transparent;cursor:zoom-in;padding:0;border-radius:7px;color:transparent}
.sanctuary-scene-night{display:none!important}
.sanctuary-scene[data-lamp=dim] .sanctuary-scene-night{opacity:0!important}
.sanctuary-window-view{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;background:var(--san-bg,#1a1721);color:var(--san-ink,#fff4e4);overflow:auto;overscroll-behavior:contain;isolation:isolate}
.sanctuary-window-view[hidden]{display:none!important}
.sanctuary-window-head{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--san-line);background:var(--san-bg);flex:none}
.sanctuary-window-head h2{font:400 clamp(19px,2.2vw,29px)/1.15 var(--san-title,Georgia,serif);margin:3px 0 0;letter-spacing:-.02em}
.sanctuary-window-head p{margin:0;color:var(--san-muted);font:600 9px/1.4 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.14em}
.sanctuary-window-view button{cursor:pointer}
.sanctuary-window-head button{min-height:44px;border:1px solid var(--san-line);border-radius:9px;background:var(--san-panel);color:var(--san-ink);padding:9px 13px;font:600 12px/1.35 system-ui,sans-serif;flex:none}
.sanctuary-window-head button:hover{border-color:var(--san-accent)}
.sanctuary-window-head button:disabled{opacity:.65;cursor:default}
.sanctuary-window-controls{display:flex;gap:8px;flex:none}
.sanctuary-window-viewport{position:relative;display:flex;align-items:center;justify-content:center;min-height:210px;flex:1;background:#0d1017;overflow:hidden}
.sanctuary-window-plane{position:relative;max-width:100%;flex:none;overflow:hidden}
.sanctuary-window-plane>img,.sanctuary-window-plane>canvas{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.sanctuary-window-plane>canvas{z-index:1}
.sanctuary-window-loading{position:absolute;inset:40% 15% auto;text-align:center;padding:15px;border-radius:12px;background:#10151ce8;color:#f8eedd;font:500 13px/1.5 system-ui,sans-serif;z-index:5}
.sanctuary-window-loading[hidden]{display:none}
.sanctuary-window-spot{position:absolute;transform:translate(-50%,-50%);z-index:3;min-width:44px;min-height:44px;display:grid;place-items:center;border:0;border-radius:50%;padding:8px;background:transparent;color:#fff5df;touch-action:manipulation}
.sanctuary-window-mark{display:grid;place-items:center;width:23px;height:23px;border:1px solid #fff6daac;border-radius:50%;background:#221a22b5;box-shadow:0 0 0 5px #fff3da12;font:17px/1 system-ui,sans-serif}
.sanctuary-window-spot:hover .sanctuary-window-mark,.sanctuary-window-spot:focus-visible .sanctuary-window-mark{background:#fff2d9;color:#382435}
.sanctuary-window-label{position:absolute;bottom:44px;left:50%;transform:translateX(-50%);opacity:0;pointer-events:none;width:max-content;max-width:170px;white-space:normal;text-align:center;border:1px solid #fff5dc55;border-radius:8px;background:#171922ed;color:#fff6df;padding:7px 10px;font:600 11px/1.4 system-ui,sans-serif}
.sanctuary-window-spot:hover .sanctuary-window-label,.sanctuary-window-spot:focus-visible .sanctuary-window-label{opacity:1}
.sanctuary-window-view button:focus-visible{outline:3px solid var(--san-accent);outline-offset:4px}
.sanctuary-window-spot:focus-visible{outline-color:#fff2bf!important}
.sanctuary-window-foot{padding:12px 20px 14px;text-align:center;border-top:1px solid var(--san-line);background:var(--san-bg);flex:none}
.sanctuary-window-foot p{margin:0;font:500 12px/1.5 system-ui,sans-serif;color:var(--san-ink)}
.sanctuary-window-foot #sanctuary-window-help{margin-top:5px;font-size:10px;color:var(--san-muted)}
.sanctuary-view[data-window-open=true] .sanctuary-ambient,.sanctuary-view[data-window-open=true] .sanctuary-breath{visibility:hidden}
.sanctuary-view[data-window-open=true] .sanctuary-scene{pointer-events:none}
@media(max-width:700px){.sanctuary-window-head{padding:11px 12px;gap:9px;flex-wrap:wrap}.sanctuary-window-head>div:not(.sanctuary-window-controls){flex:1;min-width:100px}.sanctuary-window-controls{width:100%;justify-content:flex-end}.sanctuary-window-head h2{font-size:19px}.sanctuary-window-head button{font-size:11px;padding:8px 10px}.sanctuary-window-foot{padding:10px 12px}.sanctuary-window-foot p{font-size:11px}.sanctuary-window-view{min-height:100%}.sanctuary-window-viewport{min-height:240px}.sanctuary-window-label{max-width:130px;font-size:10px}}
@media(max-width:420px){.sanctuary-window-head{gap:7px}.sanctuary-window-head h2{font-size:17px}.sanctuary-window-head p{font-size:8px}.sanctuary-window-viewport{min-height:210px}.sanctuary-window-controls{justify-content:space-between}}
@media(prefers-reduced-motion:reduce){.sanctuary-window-view *{animation:none!important;transition:none!important}}
@media(forced-colors:active){.sanctuary-window-view,.sanctuary-window-head,.sanctuary-window-foot{background:Canvas;color:CanvasText;border-color:CanvasText}.sanctuary-window-head button,.sanctuary-window-mark{background:ButtonFace;color:ButtonText;border-color:ButtonText}.sanctuary-window-plane>canvas{display:none}.sanctuary-window-label{background:Canvas;color:CanvasText;border-color:CanvasText}}
.sanctuary-window-exterior{position:absolute;z-index:0;overflow:hidden;background:#080911;pointer-events:none}
.sanctuary-window-exterior[hidden]{display:none!important}
.sanctuary-window-exterior>img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
.sanctuary-window-plane[data-layered=true]>#sanctuary-window-image{z-index:3}
.sanctuary-window-plane[data-layered=true]>canvas{z-index:2}
.sanctuary-window-plane #sanctuary-window-spots{position:absolute;inset:0;z-index:5;pointer-events:none}
.sanctuary-window-plane #sanctuary-window-spots>button{pointer-events:auto}

/* Authored, scene-aligned local changes; never translated or stretched into a different pose. */
.sanctuary-authored-room-layers{position:absolute;inset:0;z-index:3;pointer-events:none}
.sanctuary-authored-room-layers[hidden]{display:none!important}
.sanctuary-authored-room-layers>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
/* Snow is a real middle layer: clean exterior < precipitation < opaque room.
   Mask holes stop short of timber edges, flowers, and the antique lamp. */
.sanctuary-scene[data-scene=solomon][data-layered=true] .sanctuary-scene-image{mask-image:url('/assets/sanctuary/solomon-interior-mask-v4.svg');mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-image:url('/assets/sanctuary/solomon-interior-mask-v4.svg');-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat}
.sanctuary-scene[data-scene=solomon] .sanctuary-exterior-layer>img{object-fit:fill}
.sanctuary-view[data-window-scene=solomon] .sanctuary-window-plane[data-layered=true]>#sanctuary-window-image{mask-image:url('/assets/sanctuary/solomon-window-frame-mask-v4.svg');mask-size:100% 100%;-webkit-mask-image:url('/assets/sanctuary/solomon-window-frame-mask-v4.svg');-webkit-mask-size:100% 100%}
.sanctuary-view[data-window-scene=solomon] .sanctuary-window-exterior>img{object-fit:fill}
/* A failed layered load shows the complete opaque fallback, never empty panes. */
.sanctuary-scene[data-scene=solomon][data-exterior-error=true] .sanctuary-scene-image,.sanctuary-scene[data-scene=solomon][data-room-layers-error=true] .sanctuary-scene-image{mask-image:none;-webkit-mask-image:none}

/* Foreground objects win over the broad window target; native controls remain above both. */
.sanctuary-lamp-target{position:absolute;inset:0;z-index:4;cursor:pointer;touch-action:manipulation;background:transparent}
.sanctuary-lamp-target[hidden]{display:none!important}
.sanctuary-lamp-target:hover{background:rgba(255,216,150,.07)}
.sanctuary-scene .sanctuary-hotspot{z-index:5}
.sanctuary-lamp-target:hover~.sanctuary-hotspot[data-hotspot=lamp] .sanctuary-hotspot-label{opacity:1;visibility:visible}
