.spatial-view{--spatial-line:#dcd6c8;position:relative;color:#2a2724}
.spatial-stage{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:4/3;background:radial-gradient(ellipse at 42% 35%,#faf7ef,#e6e0d3);border:1px solid var(--spatial-line)}
.spatial-view--hero .spatial-stage{aspect-ratio:1.15;border-radius:48% 48% 0 0;padding:12% 6% 8%}
.spatial-fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .35s}
.spatial-view--hero .spatial-fallback{object-fit:cover}
.spatial-canvas{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .4s;outline-offset:-5px;touch-action:pan-y}
.spatial-canvas canvas{display:block;width:100%;height:100%}
.spatial-view.is-3d .spatial-canvas{opacity:1;visibility:visible}
.spatial-view.is-3d .spatial-fallback{opacity:0;visibility:hidden}
.spatial-caption{position:absolute;inset-inline-start:20px;inset-block-end:18px;z-index:1;font-size:12px;letter-spacing:.04em;color:#6c5a3e;background:#f2efe8de;padding:5px 10px;border-radius:2px}
.spatial-toolbar{display:flex;justify-content:space-between;gap:12px;min-height:48px;border-block-end:1px solid var(--spatial-line)}
.spatial-toolbar button{min-height:44px;font-size:13px;font-weight:600;color:#6c5a3e;text-decoration:underline;text-underline-offset:5px;padding-inline:4px;cursor:pointer}
.spatial-toolbar button:disabled{opacity:.5;cursor:wait}
.spatial-toolbar [hidden]{display:none}
.spatial-hint,.spatial-status{font-size:12px;line-height:1.6;color:#766e62;margin-block:8px 0}
.spatial-status:empty{display:none}
.spatial-intro{margin-block:40px 20px}
.spatial-eyebrow{font-size:12px;color:#8a744e;letter-spacing:.1em;margin-block-end:10px}
.spatial-intro h2{font-family:'Frank Ruhl Libre',serif;font-size:32px;line-height:1.2;margin-block-end:12px}
.spatial-intro>p:last-child{max-width:50ch;font-size:14px;color:#766e62;line-height:1.7}
@media(prefers-reduced-motion:reduce){.spatial-view *{transition:none!important}.animate-fade-up,.room-fade{animation:none!important}.reveal{opacity:1!important;transform:none!important}}
