:root{--ink: #171310;--paper: #efe6d6;--brass: #d4af37;--brass-deep: #9a7420;--clay: #b85c38;--muted: #cbbfaa;--glass: rgba(18, 15, 12, .55);--hud: 32px}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ink);color:var(--paper);font-family:Josefin Sans,sans-serif}button{font-family:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--brass);outline-offset:3px}.stage{position:relative;width:100%;height:100%;background:#0c0a08;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.stage.grabbing{cursor:grabbing}.photo-clip{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:1;opacity:1;transition:opacity .42s ease}.photo-clip.hidden{opacity:0;pointer-events:none}.photo-stage{width:100%;height:100%;transform-origin:0 0;will-change:transform}.photo-stage img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.92) contrast(1.05)}.pano{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:2;opacity:0;pointer-events:none;transition:opacity .36s ease}.pano.on{opacity:1;pointer-events:auto}.portal{position:absolute;width:84px;height:84px;transform:translate(-50%,-50%);border:0;padding:0;background:transparent;color:var(--paper)}.portal-ring,.portal-core{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;border-radius:50%}.portal-ring{width:64px;height:64px;border:1px solid rgba(212,175,55,.85);box-shadow:0 0 18px #d4af3759;animation:pulse 2.4s ease-out infinite}.portal-ring.delay{width:84px;height:84px;animation-delay:.7s;opacity:.55}.portal-core{width:12px;height:12px;background:var(--brass);box-shadow:0 0 16px var(--brass)}.portal-label{position:absolute;left:92px;top:50%;transform:translateY(-50%);text-align:left;white-space:nowrap;pointer-events:none}.portal-label strong{display:block;font-family:Cinzel,serif;font-size:15px;letter-spacing:.14em;text-shadow:0 2px 12px rgba(0,0,0,.7)}.portal-label em{display:block;margin-top:4px;font-style:normal;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.portal.hot .portal-core{transform:scale(1.25)}.hotspot{position:absolute;z-index:5;transform:translate(-50%,-50%);pointer-events:none}.hotspot button{pointer-events:auto;display:flex;align-items:center;gap:10px;border:1px solid rgba(212,175,55,.45);background:var(--glass);color:var(--paper);padding:8px 14px 8px 10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);letter-spacing:.12em;font-size:12px;text-transform:uppercase;transition:border-color .2s ease,background .2s ease}.hotspot button:hover{border-color:var(--brass);background:#1c1610c7}.hotspot-dot{width:8px;height:8px;border-radius:50%;background:var(--brass);box-shadow:0 0 10px var(--brass)}.hud-top{position:absolute;top:28px;left:36px;z-index:8;pointer-events:none;max-width:min(520px,calc(100% - 80px))}.brand{margin:0 0 8px;font-size:11px;letter-spacing:.42em;color:var(--brass)}.hud-top h1{margin:0;font-family:Cinzel,serif;font-size:clamp(28px,4vw,48px);font-weight:600;letter-spacing:.08em;line-height:1}.caption{margin:12px 0 0;font-weight:300;letter-spacing:.08em;color:var(--muted)}.rooms{position:absolute;top:50%;left:28px;z-index:8;display:flex;flex-direction:column;gap:8px;transform:translateY(-50%)}.rooms button{border:1px solid rgba(239,230,214,.18);background:#0c0a0873;color:var(--muted);padding:10px 14px;letter-spacing:.16em;font-size:11px;text-transform:uppercase;text-align:left;min-width:108px;transition:color .2s ease,border-color .2s ease,background .2s ease}.rooms button:hover,.rooms button.active{color:var(--paper);border-color:var(--brass);background:#120e0ab3}.back{position:absolute;top:28px;right:28px;z-index:8;display:flex;align-items:center;gap:8px;border:1px solid rgba(212,175,55,.5);background:#0c0a0880;color:var(--paper);padding:10px 16px;letter-spacing:.18em;font-size:12px;text-transform:uppercase;min-height:44px;transition:background .2s ease}.back:hover{background:#1c1610cc}.back svg{width:16px;height:16px}.hud-bottom{position:absolute;left:36px;right:36px;bottom:28px;z-index:8;display:flex;justify-content:space-between;align-items:end;gap:16px;pointer-events:none}.hud-bottom p{margin:0;font-size:13px;letter-spacing:.12em;color:var(--muted)}.zoom-meter{font-family:Cinzel,serif;color:var(--brass)!important;letter-spacing:.22em!important}.viewfinder .corner{position:absolute;width:28px;height:28px;z-index:7;pointer-events:none;border:1px solid rgba(212,175,55,.55)}.corner.tl{top:var(--hud);left:var(--hud);border-right:0;border-bottom:0}.corner.tr{top:var(--hud);right:var(--hud);border-left:0;border-bottom:0}.corner.bl{bottom:var(--hud);left:var(--hud);border-right:0;border-top:0}.corner.br{bottom:var(--hud);right:var(--hud);border-left:0;border-top:0}.vignette{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;pointer-events:none;background:radial-gradient(ellipse at center,transparent 48%,rgba(8,6,4,.62) 100%)}.grain{position:absolute;top:0;right:0;bottom:0;left:0;z-index:7;pointer-events:none;opacity:.09;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E")}.curtain{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;background:#0a0806;opacity:0;pointer-events:none;transition:opacity .38s ease}.curtain.show{opacity:1}.loader{position:absolute;left:50%;bottom:88px;z-index:21;transform:translate(-50%);display:flex;align-items:center;gap:12px;letter-spacing:.2em;font-size:12px;text-transform:uppercase;color:var(--brass)}.loader span{width:10px;height:10px;border-radius:50%;background:var(--brass);animation:blink .9s ease-in-out infinite}@keyframes pulse{0%{transform:scale(.72);opacity:.95}to{transform:scale(1.35);opacity:0}}@keyframes blink{50%{opacity:.25}}@media(max-width:720px){.hud-top,.hud-bottom{left:18px;right:18px}.rooms{left:14px}.portal-label{left:50%;top:92px;transform:translate(-50%);text-align:center}.hud-top h1{font-size:28px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
