:root{--ink:#f5f0e9;--ink-2:#f5f0e9bd;--ink-3:#f5f0e980;--gold:#d9b273;--glass:#1c171557;--line:#ffffff26;--line-2:#ffffff14;--serif:"Fraunces", Georgia, serif;--sans:"Inter", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--ease:cubic-bezier(.22, .7, .2, 1);--intro:1}*{box-sizing:border-box;margin:0;padding:0}html,body{color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;background:#0b0a09}button,a{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;text-decoration:none}#scene{cursor:grab;width:100vw;height:100vh;display:block;position:fixed;inset:0}body.dragging #scene{cursor:grabbing}#scroll{height:340vh}body:not([data-state=overview]) #scroll{height:100vh}body:not([data-state=overview]){overflow:hidden}#fade{opacity:0;pointer-events:none;z-index:40;background:#070605;position:fixed;inset:0}.glass{background:linear-gradient(180deg, #ffffff1a, #ffffff05), var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(20px)saturate(140%);box-shadow:inset 0 1px #ffffff24,0 24px 70px #00000047}.eyebrow{font-family:var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2);align-items:center;gap:10px;font-size:10.5px;display:inline-flex}.eyebrow i{background:var(--gold);width:6px;height:6px;box-shadow:0 0 12px var(--gold);border-radius:50%}.pill{letter-spacing:.22em;text-transform:uppercase;border:1px solid var(--line);white-space:nowrap;background:#ffffff0a;border-radius:999px;justify-content:center;align-items:center;gap:8px;height:40px;padding:0 20px;font-size:10.5px;transition:background .4s,border-color .4s,color .4s;display:inline-flex;box-shadow:inset 0 1px #ffffff1f}.pill:hover{background:#ffffff1f}.pill.solid{color:#1a1410;background:linear-gradient(#f0d6a4,#c99a58);border-color:#0000}.pill b{font-weight:500}.nav{z-index:20;opacity:0;height:62px;transition:opacity 1s var(--ease) .2s, transform 1s var(--ease) .2s;border-radius:999px;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 10px 0 26px;display:grid;position:fixed;top:18px;left:22px;right:22px;transform:translateY(-12px)}body.ready .nav{opacity:1;transform:none}.brand{letter-spacing:.16em;flex-direction:column;font-size:18px;font-weight:300;line-height:1.05;display:flex}.brand sup{font-size:9px}.brand small{font-family:var(--mono);letter-spacing:.24em;color:var(--ink-3);text-transform:uppercase;margin-top:3px;font-size:8.5px}.where{letter-spacing:.24em;text-transform:uppercase;color:var(--ink);align-items:center;gap:10px;font-size:11px;display:flex}.where .dot{background:var(--gold);border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 4px #d9b2732e}.actions{justify-content:flex-end;gap:8px;display:flex}body[data-state=overview] #nav-overview,body[data-state=road] #nav-overview{display:none}.intro{z-index:10;transform:translate(-50%, calc(-50% - (1 - var(--intro)) * 40px));text-align:center;width:min(1000px,90vw);opacity:var(--intro);pointer-events:none;position:fixed;top:50%;left:50%}body:not([data-state=overview]) .intro{opacity:0;transition:opacity .6s}.intro .eyebrow{justify-content:center}.intro h1{font-family:var(--serif);letter-spacing:-.015em;text-shadow:0 6px 50px #00000059;margin:22px 0 18px;font-size:clamp(44px,7vw,104px);font-weight:300;line-height:.98}.intro h1 em{color:var(--gold);font-style:italic}.intro p{color:var(--ink);text-shadow:0 2px 20px #00000080;font-size:15px}.cue{font-family:var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2);align-items:center;gap:12px;margin-top:34px;font-size:10px;display:inline-flex}.cue i{background:linear-gradient(90deg, var(--ink), transparent);width:46px;height:1px;animation:cue 2.4s var(--ease) infinite;transform-origin:0}@keyframes cue{0%{transform:scaleX(0)}60%{transform:scaleX(1)}to{opacity:0}}#hotspots{z-index:12;pointer-events:none;position:fixed;inset:0}.hotspot{pointer-events:auto;-webkit-backdrop-filter:blur(14px);opacity:0;transition:opacity .6s var(--ease), background .3s;white-space:nowrap;text-align:left;background:#18141280;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:12px;margin:-22px 0 0 -22px;padding:7px 18px 7px 8px;display:flex;position:absolute;top:0;left:0;box-shadow:0 10px 30px #0000004d}.hotspot.in{opacity:1}.hotspot:hover{background:#28201abf}.hotspot i{background:radial-gradient(circle, var(--gold) 0 5px, transparent 6px);border:1px solid #d9b27399;border-radius:50%;width:28px;height:28px;position:relative}.hotspot i:after{content:"";animation:ping 2s var(--ease) infinite;border:1px solid #d9b2738c;border-radius:50%;position:absolute;inset:-6px}@keyframes ping{0%{opacity:1;transform:scale(.6)}to{opacity:0;transform:scale(1.5)}}.hotspot span{flex-direction:column;line-height:1.2;display:flex}.hotspot strong{letter-spacing:.02em;font-size:13px;font-weight:400}.hotspot small{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-top:2px;font-size:9px}.hotspot.minor{opacity:.85}#prompt{z-index:18;color:var(--ink);opacity:0;transition:opacity .6s var(--ease), transform .8s var(--ease);pointer-events:none;border-radius:999px;align-items:center;gap:12px;padding:13px 22px;font-size:13px;display:flex;position:fixed;bottom:30px;left:50%;transform:translate(-50%,20px)}#prompt.in{opacity:1;transform:translate(-50%)}#prompt i{background:var(--gold);width:8px;height:8px;box-shadow:0 0 14px var(--gold);border-radius:50%;animation:1.6s infinite blink}@keyframes blink{50%{opacity:.35}}#chooser{z-index:16;opacity:0;pointer-events:none;width:340px;transition:opacity .6s var(--ease), transform .8s var(--ease);border-radius:26px;padding:22px;position:fixed;top:96px;right:22px;transform:translate(20px)}body[data-state=foyer] #chooser,body.chooser-open #chooser{opacity:1;pointer-events:auto;transform:none}#chooser h2{font-family:var(--serif);margin:12px 0 16px;font-size:28px;font-weight:300;line-height:1.08}#chooser h2 em{color:var(--gold);font-style:italic}.list{flex-direction:column;gap:6px;display:flex}.hall{text-align:left;border:1px solid #0000;border-radius:16px;grid-template-columns:54px 1fr auto;align-items:center;gap:14px;padding:8px;transition:background .3s;display:grid}.hall:hover{border-color:var(--line-2);background:#ffffff14}.hall img{object-fit:cover;border-radius:10px;width:54px;height:40px}.hall strong{font-size:14px;font-weight:400;display:block}.hall small{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:9px}.hall .arrow{color:var(--gold);padding-right:6px;transition:transform .3s}.hall:hover .arrow{transform:translate(4px)}#room-card{z-index:16;opacity:0;pointer-events:none;width:420px;transition:opacity .7s var(--ease), transform .9s var(--ease);border-radius:26px;padding:22px;position:fixed;bottom:22px;right:22px;transform:translateY(20px)}body[data-state=room] #room-card{opacity:1;pointer-events:auto;transform:none}#room-card .top{grid-template-columns:96px 1fr;align-items:center;gap:16px;display:grid}#room-card img{object-fit:cover;border-radius:14px;width:96px;height:72px}#room-card .kind{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-size:9.5px}#room-card h2{font-family:var(--serif);margin-top:6px;font-size:26px;font-weight:300;line-height:1.05}#room-card .blurb{color:var(--ink-2);margin:16px 0;font-size:13px;line-height:1.6}.facts{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.facts div{border-bottom:1px solid var(--line-2);flex-direction:column;gap:4px;padding:11px 0;display:flex}.facts span{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);font-size:9px}.facts strong{font-size:13.5px;font-weight:400}.caps{flex-wrap:wrap;gap:6px;margin:14px 0 16px;display:flex}.caps span{border:1px solid var(--line);color:var(--ink-2);border-radius:999px;padding:6px 12px;font-size:11.5px}.caps em{color:var(--gold);font-style:normal;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;margin-right:6px;font-size:9.5px}.btns{justify-content:space-between;gap:8px;display:flex}#map{z-index:16;opacity:0;width:300px;transition:opacity .7s var(--ease), transform .9s var(--ease);pointer-events:none;border-radius:22px;padding:16px 16px 12px;position:fixed;bottom:22px;left:22px;transform:translateY(20px)}body:is([data-state=foyer],[data-state=room],[data-state=travel],[data-state=dropoff]) #map{opacity:1;pointer-events:auto;transform:none}#map .plan{margin:10px 0 4px}#map svg{width:100%;height:auto;display:block}#map .shell{fill:#ffffff08;stroke:var(--line)}#map .foyer{fill:#ffffff0d;stroke:var(--line-2);cursor:pointer}#map .foyer.on{fill:#d9b27340}#map .rm{cursor:pointer}#map .rm rect{fill:#ffffff0f;stroke:#ffffff29;transition:fill .3s}#map .rm:hover rect{fill:#ffffff24}#map .rm.on rect{fill:#d9b27352;stroke:var(--gold)}#map text{fill:var(--ink-2);font-family:var(--sans);text-anchor:middle;pointer-events:none;font-size:7.5px}#map .you{fill:var(--gold);stroke:#fff;stroke-width:1.2px;transition:opacity .4s}#map small{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);font-size:8.5px}.hint{z-index:15;font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);opacity:0;pointer-events:none;border-radius:999px;padding:8px 16px;font-size:9.5px;transition:opacity .8s;position:fixed;top:94px;left:50%;transform:translate(-50%)}body:is([data-state=room],[data-state=foyer]) .hint{opacity:.85}#loader{z-index:50;transition:opacity 1.2s var(--ease), visibility 1.2s;background:#0b0a09;place-items:center;display:grid;position:fixed;inset:0}#loader.done{opacity:0;visibility:hidden}.loader-inner{flex-direction:column;align-items:center;gap:14px;width:260px;display:flex}.loader-mark{letter-spacing:.2em;font-size:22px;font-weight:300}.loader-mark sup{font-size:11px}.loader-copy{font-family:var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-3);font-size:10px}.loader-track{background:var(--line);width:100%;height:1px;margin-top:8px}#loader-bar{background:var(--gold);transform-origin:0;height:100%;transition:transform .3s;display:block;transform:scaleX(0)}#loader-pct{font-family:var(--mono);color:var(--ink-3);font-size:10px}@media (width<=980px){.where{display:none}.nav{grid-template-columns:1fr auto}#nav-mode,#nav-overview,#map{display:none}#chooser{width:auto;max-height:55vh;inset:auto 12px 12px;overflow:auto}#room-card{width:auto;bottom:12px;left:12px;right:12px}#room-card .facts,#room-card .caps{display:none}.nav{height:56px;padding-left:18px;top:10px;left:10px;right:10px}}@media (prefers-reduced-motion:reduce){.cue i,.hotspot i:after,#prompt i{animation:none}}
