:root{color-scheme:dark;--ink:#101817;--panel:rgba(16,24,23,.82);--line:rgba(255,255,255,.2);--accent:#c9efab;--text:#fff;--muted:#d5dcd7;font-family:Arial,Helvetica,sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--text);overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button svg,span svg,div>svg{width:21px;height:21px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.symbols{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#experience{height:100vh;height:100dvh;width:100%;position:relative;overflow:hidden;background:var(--ink)}#panorama,#photo-background{position:absolute;inset:0;width:100%;height:100%;display:block}#panorama{touch-action:none;cursor:grab;outline-offset:-5px}#panorama:active{cursor:grabbing}#photo-background{background:linear-gradient(0deg,rgba(16,24,23,.4),rgba(16,24,23,.2)),url('panos/living/f.jpg') center/cover;filter:blur(3px);transform:scale(1.02)}.vignette{pointer-events:none;position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,13,11,.65) 0,transparent 24%,transparent 37%,rgba(6,13,11,.16) 52%,rgba(6,13,11,.87) 100%);transition:opacity .4s}.playing .vignette{opacity:.55}.topbar{position:absolute;top:0;left:0;right:0;padding:max(25px,env(safe-area-inset-top)) 34px 22px;display:flex;justify-content:space-between;align-items:center;gap:22px;pointer-events:none;z-index:5}.topbar>*{pointer-events:auto}.identity{display:flex;align-items:center;gap:24px}.wordmark{font-weight:750;font-size:27px;letter-spacing:-1.5px;white-space:nowrap}.wordmark>span{font-weight:400}.wordmark>i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin:0 0 3px 3px}.identity-divider{height:31px;width:1px;background:var(--line)}.project-name{font-size:14px;font-weight:600;line-height:1.5;white-space:nowrap}.project-name>span{display:block;font-size:13px;font-weight:400;color:var(--muted)}.location-pill{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;padding:12px 17px;border:1px solid var(--line);background:rgba(16,24,23,.64);backdrop-filter:blur(16px);border-radius:30px;font-size:14px}.location-pill>svg{width:16px;height:16px;color:var(--accent)}.location-count{border-left:1px solid var(--line);padding-left:12px;margin-left:3px;color:var(--muted);font-size:12px;letter-spacing:.03em;white-space:nowrap}.top-actions{display:flex;gap:9px}.tool-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:10px 15px;background:rgba(16,24,23,.5);border:1px solid var(--line);border-radius:10px;backdrop-filter:blur(16px);font-size:14px;transition:background .2s,border-color .2s}.tool-button:hover{background:rgba(16,24,23,.9);border-color:rgba(255,255,255,.6)}.tool-button.square{width:44px;padding:10px}.welcome{position:absolute;left:48px;bottom:205px;max-width:560px;z-index:3;transition:opacity .25s,transform .25s}.eyebrow{font-size:12px;font-weight:600;letter-spacing:.17em;color:var(--accent);display:flex;align-items:center;gap:10px}.eyebrow>span{display:inline-block;width:22px;height:1px;background:var(--accent)}h1{font-size:clamp(38px,4.8vw,66px);font-weight:400;letter-spacing:-.055em;line-height:1.1;margin:18px 0 13px}.welcome>p{font-size:17px;color:#e7ece8;margin:0 0 26px;line-height:1.5}.primary{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:55px;border:1px solid transparent;border-radius:8px;background:var(--accent);color:#1b2b17;padding:15px 20px;font-weight:600;font-size:16px;transition:background .2s,transform .2s}.primary:hover{background:#ddfac8;transform:translateY(-1px)}.primary .end-arrow{margin-left:21px}.start-hint{display:flex;align-items:center;gap:24px;color:#d2dcd5;font-size:12px;margin-top:19px}.start-hint>span{display:flex;align-items:center;gap:4px}.start-hint kbd:last-of-type{margin-right:6px}kbd{display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:12px;min-width:22px;padding:4px 5px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.3);border-radius:4px;white-space:nowrap;letter-spacing:.04em}.start-hint svg{width:18px;height:18px;margin-right:3px}.touch-hint{display:none}
.room-browser{position:absolute;bottom:max(20px,env(safe-area-inset-bottom));left:48px;right:48px;z-index:4}.room-browser-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;font-size:12px;letter-spacing:.14em;color:#f0f4f1}.room-browser-heading>span+span{letter-spacing:0;color:#ccd5ce}.room-list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;max-width:1090px}.room-card{position:relative;overflow:hidden;isolation:isolate;height:79px;border:1px solid rgba(255,255,255,.24);border-radius:8px;background:var(--ink);text-align:left;padding:12px;display:flex;align-items:flex-end;gap:9px;transition:border .2s}.room-card>img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;transition:transform .3s;filter:brightness(.64)}.room-card:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent,rgba(7,14,11,.6))}.room-card:hover>img{transform:scale(1.06);filter:brightness(.8)}.room-card[aria-current=true]{border:2px solid var(--accent);padding:11px}.room-card .room-num{font-size:11px;color:#e1e8e2;align-self:flex-start}.room-card .room-label{font-size:14px;line-height:1.3;flex:1}.room-card .visited-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);align-self:flex-start}.tour-note{font-size:12px;color:#adbcb1;margin-top:13px}.tour-note>span{margin:0 7px}
#hotspots{position:absolute;inset:0;pointer-events:none;overflow:hidden}.hotspot{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:center;gap:7px;background:none;border:0;padding:8px;pointer-events:auto;will-change:transform;text-shadow:0 1px 7px #000;color:white;z-index:2}.hotspot .hotspot-ring{display:grid;place-items:center;width:43px;height:43px;background:rgba(255,255,255,.18);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.9);border-radius:50%;box-shadow:0 2px 15px #0004;transition:background .2s,transform .2s}.hotspot .hotspot-ring>svg{width:19px;height:19px;transform:rotate(-90deg)}.hotspot-label{font-size:13px;white-space:nowrap;background:rgba(16,24,23,.6);padding:5px 9px;border-radius:5px}.hotspot:hover .hotspot-ring,.hotspot.aimed .hotspot-ring{background:var(--accent);color:var(--ink);text-shadow:none;transform:scale(1.12);border-color:var(--accent)}.playing .hotspot-label{opacity:0}.playing .hotspot.aimed .hotspot-label{opacity:1}.reticle{position:absolute;left:50%;top:50%;width:17px;height:17px;transform:translate(-50%,-50%);display:grid;place-items:center;pointer-events:none;z-index:4}.reticle>span{width:5px;height:5px;background:#fff;border-radius:50%;box-shadow:0 0 0 2px #10181760,0 2px 6px #000}.reticle.active{border:1px solid var(--accent);border-radius:50%;width:26px;height:26px}.target-prompt{position:absolute;left:50%;bottom:100px;transform:translateX(-50%);z-index:5;display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:30px;padding:9px 15px 9px 9px;background:rgba(16,24,23,.8);backdrop-filter:blur(16px);font-size:14px;white-space:nowrap}.target-key{border-radius:50%;background:var(--accent);color:var(--ink);width:30px;height:30px;display:grid;place-items:center;font-size:12px;font-weight:700}.target-prompt svg{width:17px}.game-hud{position:absolute;inset:0;pointer-events:none}.keyboard-hud{position:absolute;bottom:30px;left:34px;display:flex;gap:23px;align-items:center;font-size:12px;color:#e0e7e1}.keyboard-hud>span{display:flex;gap:8px;align-items:center}.keyboard-hud svg{height:18px;width:18px}.mini-map{position:absolute;right:26px;bottom:25px;width:170px;padding:12px 13px 10px;border:1px solid var(--line);border-radius:12px;background:var(--panel);backdrop-filter:blur(15px);pointer-events:auto;text-align:left}.mini-map-title{display:flex;align-items:center;justify-content:space-between;letter-spacing:.08em;font-size:11px;color:#cbd7ce}.mini-map-title svg{width:13px;height:13px}.mini-map-image{position:relative;margin-top:8px;width:100%;aspect-ratio:1}.mini-map-image>img{width:100%;height:100%;object-fit:contain}.mini-map-point{position:absolute;transform:translate(-50%,-50%);width:9px;height:9px;border:2px solid var(--ink);background:var(--accent);border-radius:50%;box-shadow:0 0 0 3px #c9efab70}.mini-map-point>i{position:absolute;bottom:0;left:50%;width:20px;height:26px;background:linear-gradient(0deg,#c9efab90,transparent);clip-path:polygon(50% 100%,0 0,100% 0);transform-origin:50% 100%;transform:translateX(-50%)}#mini-map-label{display:block;font-size:12px;margin-top:7px}
.loading{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:18px 24px;background:var(--panel);backdrop-filter:blur(18px);font-size:14px;z-index:8;white-space:nowrap}.spinner{width:19px;height:19px;border:2px solid #c9efab40;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:absolute;top:104px;left:50%;transform:translateX(-50%);padding:12px 18px;border:1px solid var(--line);border-radius:9px;background:var(--panel);backdrop-filter:blur(15px);max-width:min(92%,550px);font-size:14px;text-align:center;z-index:15;line-height:1.5}.error-card{position:absolute;top:46%;left:50%;transform:translate(-50%,-50%);width:min(440px,90%);padding:25px;border:1px solid var(--line);background:#101817f5;border-radius:16px;z-index:20}.error-card h2{font-size:23px;line-height:1.25;margin:0 0 12px}.error-card p{font-size:16px;line-height:1.6;color:var(--muted)}.error-card a{color:var(--accent);font-size:14px;display:block;margin-top:19px}.error-card .primary{font-size:14px;min-height:44px}
dialog{color:var(--text);background:#17201e;border:1px solid #ffffff24;border-radius:18px;padding:28px;box-shadow:0 20px 100px #0008;max-height:90vh;max-height:90dvh;overflow:auto}dialog::backdrop{background:#07110dbb;backdrop-filter:blur(9px)}.dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.dialog-heading h2{font-size:26px;letter-spacing:-.04em;font-weight:400;margin:12px 0 18px;line-height:1.2}.dialog-heading .eyebrow{font-size:11px}.dialog-heading .tool-button{background:none;flex-shrink:0}.map-dialog{width:min(800px,95vw)}.map-content{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:30px;align-items:center}.floorplan{position:relative;width:100%;background:#222d28;border:1px solid #ffffff10;border-radius:10px;overflow:hidden;aspect-ratio:1}.floorplan>img{position:absolute;width:100%;height:100%;object-fit:contain}.map-point{position:absolute;transform:translate(-50%,-50%);width:31px;height:31px;display:grid;place-items:center;font-size:12px;font-weight:700;border:2px solid #fff;border-radius:50%;background:#17201ee8;box-shadow:0 2px 8px #0005}.map-point[aria-current=true]{background:var(--accent);color:var(--ink);border-color:var(--ink);box-shadow:0 0 0 4px #c9efab70}.map-rooms{display:flex;flex-direction:column;gap:5px}.map-room{padding:13px 10px;display:flex;gap:14px;align-items:center;font-size:14px;border:0;border-bottom:1px solid #ffffff17;background:transparent;text-align:left;border-radius:5px}.map-room span{font-size:12px;color:#a5b6ac}.map-room svg{margin-left:auto;width:17px}.map-room:hover{background:#ffffff09}.map-room[aria-current=true]{color:var(--accent);background:#c9efab0b}.dialog-note{font-size:14px;color:#b6c7bc;margin:17px 0 0}.help-dialog{width:min(560px,94vw)}.help-rows>div{display:flex;align-items:center;gap:20px;padding:15px 0;border-bottom:1px solid #ffffff16}.help-rows>div>kbd{min-width:89px;font-size:13px;padding:8px 10px}.help-rows>div>svg{margin:0 33px;width:23px}.help-rows p{font-size:14px;line-height:1.6;margin:0;color:#e2e9e3}.help-note{margin:23px 0;background:#c9efab0a;padding:18px;border:1px solid #c9efab1a;border-radius:9px;font-size:14px}.help-note strong{font-weight:500;color:var(--accent)}.help-note p{margin:8px 0 0;color:#c0cfc5;line-height:1.6}.help-dialog .primary{min-height:46px;font-size:14px}.help-dialog .primary svg{margin-left:22px}.mobile-help{color:var(--muted);font-size:14px;line-height:1.6}.touch-controls{position:absolute;bottom:max(30px,env(safe-area-inset-bottom));left:26px;right:26px;pointer-events:none;display:flex;align-items:center;justify-content:space-between;z-index:6}.joystick-wrap{display:flex;flex-direction:column;align-items:center;gap:12px}.joystick-wrap>span{font-size:10px;letter-spacing:.16em;color:#d4e0d7}.joystick{position:relative;pointer-events:auto;touch-action:none;width:114px;height:114px;border:1px solid #ffffff50;border-radius:50%;background:#18211d55;backdrop-filter:blur(5px);user-select:none}.joystick-knob{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:43px;height:43px;background:#ffffffe8;border:4px solid #c9efab30;border-radius:50%;box-shadow:0 2px 15px #0004}.joystick-mark{position:absolute;font-size:17px;color:#eee}.joystick-mark.top{top:5px;left:50%;transform:translateX(-50%)}.joystick-mark.bottom{bottom:5px;left:50%;transform:translateX(-50%)}.joystick-mark.left{left:8px;top:50%;transform:translateY(-50%)}.joystick-mark.right{right:8px;top:50%;transform:translateY(-50%)}.touch-look-hint{display:flex;flex-direction:column;gap:10px;align-items:center;font-size:12px;color:#edf4ef;text-shadow:0 1px 5px #000}.noscript{position:fixed;inset:0;z-index:50;background:var(--ink);padding:30px;font-size:18px}.noscript a{color:var(--accent)}
@media(min-width:1600px){.room-list{max-width:1250px}.room-card{height:91px}.welcome{bottom:225px}}@media(max-width:1100px){.topbar{padding-left:25px;padding-right:25px}.identity{gap:15px}.project-name{font-size:12px}.project-name>span{font-size:12px}.location-pill{left:auto;right:226px;transform:none}.identity-divider{display:none}.welcome{left:32px}.room-browser{left:32px;right:32px}.room-card{padding:9px;gap:6px}.room-card[aria-current=true]{padding:8px}.room-card .room-num{display:none}.keyboard-hud{gap:13px;left:25px}.mini-map{width:145px}}
@media(max-width:780px){.topbar{align-items:flex-start;padding:20px;gap:10px}.project-name{display:none}.wordmark{font-size:26px}.location-pill{top:77px;left:20px;right:auto;transform:none;padding:9px 12px;font-size:13px}.location-count{font-size:11px}.top-actions{gap:7px}.tool-button{min-height:42px;border-radius:9px}.tool-button.square{width:42px}.tool-button>span{display:none}.top-actions .tool-button:first-child{width:42px;padding:10px}.welcome{left:24px;right:24px;bottom:210px;max-width:540px}.welcome h1{font-size:clamp(32px,9.5vw,46px);margin-top:14px}.welcome>p{font-size:16px;margin-bottom:22px}.welcome .eyebrow{font-size:10px}.welcome .primary{min-height:54px;font-size:15px;padding:14px 17px}.primary .end-arrow{margin-left:12px}.start-hint{gap:14px}.room-browser{left:24px;right:0;bottom:max(22px,env(safe-area-inset-bottom))}.room-browser-heading{padding-right:24px}.room-list{display:flex;overflow-x:auto;gap:8px;padding-bottom:9px;padding-right:24px;scrollbar-width:thin;scrollbar-color:#ffffff40 transparent}.room-card{flex:0 0 135px;height:80px;padding:10px}.room-card[aria-current=true]{padding:9px}.room-card .room-num{display:block}.tour-note{font-size:11px;margin-top:6px;white-space:nowrap}.keyboard-hud{display:none}.mini-map{bottom:auto;top:133px;right:20px;width:113px;padding:9px;opacity:.96}.mini-map-title{font-size:9px}.mini-map-title svg{width:10px;height:10px}.mini-map-image{margin-top:7px}#mini-map-label{font-size:11px}.target-prompt{bottom:207px;font-size:13px}.map-dialog{padding:20px}.map-content{grid-template-columns:minmax(0,1fr);gap:12px}.floorplan{max-height:48dvh;width:auto;max-width:100%;height:48dvh;aspect-ratio:1;margin:auto}.map-rooms{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px}.map-room{font-size:13px;padding:11px 5px;gap:10px}.dialog-heading h2{font-size:24px;max-width:280px}.dialog-note{font-size:12px}.toast{top:128px}.error-card{top:40%}.help-dialog{padding:22px}.help-rows>div{gap:13px}.help-rows>div>kbd{min-width:78px;font-size:12px}.help-rows>div>svg{margin:0 27px}.loading{font-size:13px;max-width:93%;white-space:normal;padding:16px 19px}.spinner{flex-shrink:0}}
@media(pointer:coarse){.desktop-hint{display:none}.touch-hint{display:flex}.keyboard-hud{display:none}.target-key{font-size:0}.target-key:after{content:'↑';font-size:20px}.playing .hotspot-label{opacity:1}.touch-look-hint svg{display:none}}@media(pointer:fine){.mobile-help{display:none}}@media(max-height:650px) and (min-width:781px){.welcome{bottom:172px}.welcome h1{font-size:44px}.welcome>p{margin-bottom:17px}.welcome .eyebrow{font-size:10px}.start-hint{margin-top:12px}.room-card{height:61px}.tour-note{font-size:11px}.room-browser{bottom:17px}.mini-map{width:132px}}
@media(max-height:500px) and (orientation:landscape){.topbar{padding:13px 20px}.location-pill{top:13px;left:50%;right:auto;transform:translateX(-50%)}.welcome{bottom:104px;left:25px;max-width:75%}.welcome h1{font-size:33px;margin:8px 0}.welcome>p{display:none}.welcome .eyebrow{font-size:9px}.welcome .primary{min-height:42px;padding:10px 15px;margin-top:5px;font-size:14px}.start-hint{margin-top:9px;font-size:11px}.room-browser{left:25px;bottom:8px}.room-browser-heading{display:none}.room-card{height:57px;flex-basis:125px}.tour-note{font-size:10px;margin-top:0}.mini-map{top:74px;width:96px;right:20px}.mini-map-title{font-size:8px}.touch-controls{bottom:14px}.joystick{height:90px;width:90px}.joystick-wrap>span{display:none}.joystick-knob{width:36px;height:36px}.target-prompt{bottom:36px}.toast{top:67px}.map-content{grid-template-columns:minmax(0,1fr) 190px}.map-rooms{display:flex}.floorplan{height:58dvh;max-height:58dvh}.map-room{padding:7px;font-size:12px}.dialog-heading h2{font-size:20px;margin:6px 0 12px}.dialog-note{margin-top:10px}.loading{top:40%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}.spinner{animation-duration:2s}}
