:root{--paper: #eeeae1;--ink: #1b2a25;--muted: #5d6a63;--glass: rgba(250, 248, 242, .78);--glass-strong: rgba(250, 248, 242, .92);--line: rgba(27, 42, 37, .12);--gold: #b08a2e;--accent: #2f4a3f;--display: "Iowan Old Style", Palatino, "Palatino Linotype", "Book Antiqua", Georgia, serif;--body: "Avenir Next", Avenir, "Segoe UI", "Helvetica Neue", system-ui, sans-serif;--safe-b: env(safe-area-inset-bottom, 0px);--shadow: 0 10px 30px rgba(27, 42, 37, .12), 0 1px 2px rgba(27, 42, 37, .08)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--paper)}body{color:var(--ink);font:14px/1.45 var(--body);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:3px}[hidden]{display:none!important}svg{display:block}.app{position:fixed;inset:0;overflow:hidden}.stage{position:absolute;inset:0}.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}.poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity 1.4s ease .2s;pointer-events:none;z-index:1}.app.is-live .poster{opacity:0}.topbar{position:absolute;z-index:10;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:max(14px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;flex-direction:column;padding:9px 14px 10px;border-radius:14px;background:var(--glass);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);box-shadow:var(--shadow);transition:opacity .5s}.brand-title{font:500 19px/1.1 var(--display);letter-spacing:-.01em}.brand-sub{font-size:12px;color:var(--muted);margin-top:2px}.app[data-stage=intro] .brand{opacity:0;pointer-events:none}.top-actions{display:flex;align-items:center;gap:8px}.badge{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:7px 11px;border-radius:999px;background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow);color:var(--accent)}.badge:empty{display:none}.icon-btn{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:12px;background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow)}.icon-btn svg{width:20px;height:20px}.icon-btn:hover{background:var(--glass-strong)}.text-btn{font-size:12px;font-weight:700;letter-spacing:.06em}.icon-btn[aria-pressed=true]{background:var(--ink);color:#fff}.intro{position:absolute;z-index:9;left:max(28px,6vw);bottom:max(54px,11vh);max-width:470px;padding:0;transition:opacity .6s ease,transform .8s cubic-bezier(.2,.7,.2,1)}.intro:before{content:"";position:absolute;inset:-60vh -40vw -20vh -30vw;z-index:-1;background:radial-gradient(ellipse at 25% 75%,#eeeae1f0 0,#eeeae1b3 35%,#eeeae100 65%);pointer-events:none}.intro.is-gone{opacity:0;transform:translateY(16px);pointer-events:none}.intro-place{margin:0 0 10px;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.intro h1{margin:0;font:400 clamp(46px,7vw,84px)/.98 var(--display);letter-spacing:-.035em}.nowrap{white-space:nowrap}.intro-lede{margin:16px 0 0;font:italic 400 clamp(18px,2vw,22px)/1.35 var(--display);color:#33443d}.facts{display:flex;flex-wrap:wrap;gap:6px 18px;margin:20px 0 28px;padding:0;list-style:none;font-size:13px;color:var(--muted)}.facts li{position:relative}.facts li+li:before{content:"";position:absolute;left:-10px;top:50%;width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.6}.cta{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:12px;height:54px;padding:0 24px 0 26px;border:0;border-radius:999px;background:var(--ink);color:#fff;font-size:15px;font-weight:600;letter-spacing:.01em;box-shadow:0 14px 34px #1b2a2547;transition:transform .25s,box-shadow .25s,background .25s}.cta svg{width:20px;height:20px;transition:transform .25s}.cta:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 18px 40px #1b2a2552}.cta:hover:not(:disabled) svg{transform:translate(3px)}.cta:disabled{cursor:progress;background:#3d4f48}.cta-progress{position:absolute;left:0;bottom:0;height:3px;width:calc(var(--p, 0) * 100%);background:var(--gold);transition:width .2s,opacity .4s}.cta:not(:disabled) .cta-progress{opacity:0}.cta-small{height:48px;padding:0 20px 0 22px;font-size:14px}.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px}.cta-tour{gap:12px;padding:0 26px 0 20px}.cta .i-play{width:22px;height:22px;padding:4px;border-radius:50%;background:var(--gold);color:#fff;box-sizing:content-box;margin:0 -2px}.cta:hover:not(:disabled) .i-play{transform:scale(1.06)}.cta-label{display:flex;align-items:baseline;gap:10px}.cta-label small{font-size:12px;font-weight:500;opacity:.62}.cta-ghost{background:#faf8f2b3;color:var(--ink);box-shadow:inset 0 0 0 1px #1b2a2533;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.cta-ghost:hover:not(:disabled){background:#fff;box-shadow:inset 0 0 0 1px #1b2a254d,0 10px 26px #1b2a2524}.cta-ghost:disabled{background:#faf8f280;color:var(--muted)}.cta-ghost .i-play{width:16px;height:16px;padding:3px}.dock{position:absolute;z-index:10;left:50%;bottom:calc(18px + var(--safe-b));transform:translate(-50%);display:flex;align-items:center;gap:8px;max-width:calc(100vw - 24px);padding:6px;border-radius:18px;background:var(--glass);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);box-shadow:var(--shadow);transition:opacity .45s,transform .45s cubic-bezier(.2,.7,.2,1)}.app[data-stage=intro] .dock,.app.is-busy:not(.is-walking) .dock,.app.is-touring .dock{opacity:0;transform:translate(-50%,12px);pointer-events:none}.app.is-walking .dock{pointer-events:none}.app:not([data-stage=building]) #enter{display:none}.app[data-stage=building] .dock{padding:0;background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.app[data-stage=building] .dock-back,.app[data-stage=building] .chips,.app[data-stage=building] .dock-tour{display:none}.dock-tour{flex:none;display:inline-flex;align-items:center;gap:7px;height:42px;padding:0 14px 0 9px;border:0;border-radius:12px;background:#fff;color:var(--ink);font-size:13px;font-weight:600;box-shadow:inset 0 0 0 1px #b08a2e73}.dock-tour .i-play{width:13px;height:13px;padding:4px;border-radius:50%;background:var(--gold);color:#fff;box-sizing:content-box}.dock-tour:hover{background:#fffaf0}.dock-back{flex:none;display:inline-flex;align-items:center;gap:7px;height:42px;padding:0 14px 0 10px;border:0;border-radius:12px;background:var(--ink);color:#fff;font-size:13px;font-weight:600}.dock-back svg{width:18px;height:18px}.app[data-stage=room] .i-back,.app:not([data-stage=room]) .i-plan{display:none}.chips{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 18px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 18px),transparent);padding-right:14px}.chips::-webkit-scrollbar{display:none}.chip{flex:none;height:42px;padding:0 14px;border:0;border-radius:12px;background:transparent;font-size:13px;font-weight:550;color:#33443d;white-space:nowrap;scroll-snap-align:start;transition:background .2s,color .2s}.chip:hover{background:#1b2a2512}.chip[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 3px #1b2a2524}.motion-btn{box-shadow:none;background:transparent}.pins{position:absolute;inset:0;z-index:5;pointer-events:none}.pin-guides{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.pin-guides line{stroke:#1b2a2573;stroke-width:1;opacity:0;transition:opacity .4s}.pins.is-on .pin-guides line{opacity:1}.pin{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:flex-start;padding:7px 12px 8px;border:0;border-radius:12px;background:var(--glass-strong);box-shadow:var(--shadow);pointer-events:auto;text-align:left;opacity:0;scale:.85;transition:opacity .35s,scale .35s cubic-bezier(.3,1.4,.5,1),background .2s;will-change:transform}.pin b{font-size:13px;font-weight:650;white-space:nowrap}.pin small{font-size:11px;color:var(--muted)}.pins.is-on .pin{opacity:1;scale:1}.pins:not(.is-on) .pin{pointer-events:none;transition-delay:0s!important}.pin:hover,.pin.is-hover{background:var(--ink);color:#fff}.pin:hover small,.pin.is-hover small{color:#ffffffb3}.views{position:absolute;z-index:9;left:50%;top:calc(max(14px,env(safe-area-inset-top)) + 60px);transform:translate(-50%);display:flex;align-items:center;gap:2px;max-width:calc(100vw - 24px);padding:5px;border-radius:16px;background:var(--glass);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);box-shadow:var(--shadow);overflow-x:auto;scrollbar-width:none;transition:opacity .4s,transform .4s cubic-bezier(.2,.7,.2,1),visibility 0s}.views::-webkit-scrollbar{display:none}.view-btn{flex:none;height:34px;padding:0 12px;border:0;border-radius:11px;background:transparent;font-size:13px;font-weight:550;color:#33443d;white-space:nowrap;transition:background .2s,color .2s}.view-btn:hover{background:#1b2a2512}.view-btn[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 3px #1b2a2524}.view-fly{display:inline-flex;align-items:center;gap:7px;margin-right:4px;padding:0 13px 0 7px;background:#fff;color:var(--ink);font-weight:600;box-shadow:inset 0 0 0 1px #b08a2e73}.view-fly:hover{background:#fffaf0}.view-fly svg{width:12px;height:12px;padding:4px;border-radius:50%;background:var(--gold);color:#fff;box-sizing:content-box}.view-fly .i-stop,.view-fly[aria-pressed=true] .i-play{display:none}.view-fly[aria-pressed=true] .i-stop{display:block}.view-fly[aria-pressed=true]{background:var(--ink);color:#fff;box-shadow:none}.zoom{position:absolute;z-index:9;right:max(16px,env(safe-area-inset-right));top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px;padding:4px;border-radius:14px;background:var(--glass);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);box-shadow:var(--shadow);transition:opacity .4s,visibility 0s}.zoom .icon-btn{width:38px;height:38px;border-radius:10px;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.zoom .icon-btn:hover{background:#1b2a2512}.app:not([data-stage=apartment]) :is(.views,.zoom),.app.is-busy :is(.views,.zoom),.app.is-touring :is(.views,.zoom){visibility:hidden;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s,visibility 0s .3s}.app:not([data-stage=apartment]) .views,.app.is-busy .views,.app.is-touring .views{transform:translate(-50%,-8px)}.tag{position:absolute;left:0;top:0;z-index:4;display:flex;flex-direction:column;align-items:center;pointer-events:none;opacity:0;transition:opacity .5s;will-change:transform}.tag.is-on{opacity:1}.tag span{padding:5px 11px;border-radius:999px;background:var(--ink);color:#f6efdc;font-size:12px;font-weight:700;letter-spacing:.06em;box-shadow:var(--shadow)}.tag i{width:1px;height:34px;background:linear-gradient(var(--gold),rgba(176,138,46,.2))}.tag i:after{content:"";position:absolute;left:50%;bottom:-4px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 4px #d9b45a59}.waypoints{position:absolute;inset:0;z-index:5;pointer-events:none}.waypoint{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center;gap:8px;margin:-26px 0 0 -60px;width:120px;border:0;background:none;pointer-events:auto}.waypoint i{width:52px;height:52px;border-radius:50%;border:2px solid rgba(255,255,255,.95);background:#ffffff38;box-shadow:0 0 0 1px #1b2a251f,0 6px 18px #0000002e;transform:scaleY(.55);transition:transform .3s,background .3s;animation:breathe 2.6s ease-in-out infinite}.waypoint span{padding:5px 10px;border-radius:999px;background:var(--glass-strong);box-shadow:var(--shadow);font-size:12px;font-weight:600;white-space:nowrap}.waypoint:hover i{background:#ffffff8c;transform:scaleY(.62) scale(1.1)}.waypoint.is-edge i{transform:scale(.62);animation:none}.waypoint.is-edge:hover i{transform:scale(.72)}.waypoint i{position:relative}.waypoint[data-side=left] i,.waypoint[data-side=right] i{width:40px;height:40px;margin-top:6px;transform:none;background:#1b2a258c;animation:none}.waypoint[data-side=left]:hover i,.waypoint[data-side=right]:hover i{background:#1b2a25bf;transform:scale(1.06)}.waypoint[data-side=left] i:after,.waypoint[data-side=right] i:after{content:"";position:absolute;inset:0;margin:auto;width:10px;height:10px;border:solid #fff;border-width:2px 2px 0 0;transform:translate(-2px) rotate(45deg)}.waypoint[data-side=left] i:after{transform:translate(2px) rotate(-135deg)}@keyframes breathe{50%{box-shadow:0 0 0 7px #ffffff38,0 6px 18px #0000002e}}.minimap{position:absolute;z-index:9;right:max(16px,env(safe-area-inset-right));bottom:calc(18px + var(--safe-b));width:min(380px,30vw);aspect-ratio:2280 / 730;padding:0;border-radius:14px;overflow:hidden;background:#fff;box-shadow:var(--shadow);animation:rise .5s cubic-bezier(.2,.7,.2,1)}.minimap img,.minimap svg{position:absolute;inset:0;width:100%;height:100%}.minimap img{object-fit:fill}.mm-room{fill:transparent;cursor:pointer;transition:fill .2s}.mm-room:hover{fill:#b08a2e2e}.mm-stop{fill:#fff;stroke:var(--ink);stroke-width:6;cursor:pointer}.mm-stop.is-current{display:none}.mm-cone{fill:#b08a2e59;stroke:none;pointer-events:none}.mm-me{fill:var(--gold);stroke:#fff;stroke-width:7;pointer-events:none}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.skip{position:absolute;z-index:11;right:max(16px,env(safe-area-inset-right));bottom:calc(22px + var(--safe-b));height:36px;padding:0 14px;border:0;border-radius:999px;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:12px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .3s}.app.is-busy:not(.is-walking):not(.is-touring) .skip{opacity:.9;pointer-events:auto}.app.is-touring .waypoints{display:none}.tourbar{position:absolute;z-index:11;left:50%;bottom:calc(18px + var(--safe-b));transform:translate(-50%);display:flex;align-items:center;gap:4px;padding:6px;border-radius:18px;background:var(--glass);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);box-shadow:var(--shadow);animation:rise .5s cubic-bezier(.2,.7,.2,1)}.tour-btn{display:grid;place-items:center;width:42px;height:42px;border:0;border-radius:12px;background:transparent;color:var(--ink)}.tour-btn:hover{background:#1b2a2512}.tour-btn svg{width:20px;height:20px}#tour-pause{background:var(--ink);color:#fff}#tour-pause .i-play{width:18px;height:18px}.app:not(.is-paused) #tour-pause .i-play,.app.is-paused #tour-pause .i-pause{display:none}.tour-steps{display:flex;gap:5px;margin:0 10px;padding:0;list-style:none}.tour-steps li{position:relative;width:26px;height:4px;border-radius:2px;background:#1b2a2524;overflow:hidden}.tour-steps li:after{content:"";position:absolute;inset:0;background:var(--gold);transform-origin:left;transform:scaleX(var(--fill, 0))}.caption{position:absolute;z-index:9;left:max(24px,env(safe-area-inset-left));bottom:calc(92px + var(--safe-b));max-width:min(420px,36vw);margin:0;padding:16px 20px 18px;border-radius:16px;background:var(--glass-strong);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);box-shadow:var(--shadow);pointer-events:none}.caption.is-in{animation:caption-in .7s cubic-bezier(.2,.7,.2,1)}.caption-kicker{margin:0 0 4px;font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}.caption h2{margin:0;font:400 28px/1.1 var(--display);letter-spacing:-.02em}.caption-line{margin:6px 0 0;font-size:14px;color:#33443d}@keyframes caption-in{0%{opacity:0;transform:translateY(10px)}}.app.is-touring .hint{bottom:auto;top:calc(max(14px,env(safe-area-inset-top)) + 64px)}.endcard{position:absolute;z-index:12;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 32px));padding:28px 28px 26px;border-radius:20px;background:var(--glass-strong);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);box-shadow:0 24px 60px #1b2a2538;text-align:center;animation:caption-in .6s cubic-bezier(.2,.7,.2,1)}.endcard h2{margin:0;font:400 32px/1.08 var(--display);letter-spacing:-.02em}.endcard p{margin:10px 0 22px;color:#33443d}.endcard .cta-row{justify-content:center}.hint{position:absolute;z-index:8;left:50%;bottom:calc(92px + var(--safe-b));transform:translate(-50%,8px);margin:0;padding:8px 14px;border-radius:999px;background:#1b2a25c7;color:#fff;font-size:13px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .4s,transform .4s}.hint.is-on{opacity:1;transform:translate(-50%)}.loader{position:absolute;z-index:12;left:50%;top:50%;width:54px;height:54px;margin:-27px 0 0 -27px;pointer-events:none}.loader circle{fill:none;stroke:#ffffff80;stroke-width:3}.loader .loader-bar{stroke:var(--gold);stroke-linecap:round;stroke-dasharray:113;stroke-dashoffset:calc(113 - (113*max(var(--p, 0),.08)));transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .2s;animation:spin 1.1s linear infinite}@keyframes spin{to{transform:rotate(270deg)}}.disclaimer{position:absolute;z-index:4;left:max(16px,env(safe-area-inset-left));bottom:calc(6px + var(--safe-b));max-width:min(560px,60vw);margin:0;font-size:10.5px;color:#1b2a259e;pointer-events:none}.app[data-stage=room] .disclaimer{color:#ffffffd9;text-shadow:0 1px 3px rgba(0,0,0,.45)}.error{position:absolute;z-index:20;left:50%;top:76px;transform:translate(-50%);padding:10px 16px;border-radius:12px;background:#fff3ef;color:#7a2a17;box-shadow:var(--shadow);font-size:13px}@media (max-width: 720px){.intro{left:20px;right:20px;bottom:calc(40px + var(--safe-b))}.facts{margin:16px 0 22px}.cta{width:100%;justify-content:center}.cta-small{width:auto}.brand{padding:7px 11px 8px}.brand-title{font-size:16px}.badge{display:none}.dock{left:12px;right:12px;transform:none;max-width:none;bottom:calc(14px + var(--safe-b))}.app[data-stage=intro] .dock,.app.is-busy:not(.is-walking) .dock,.app.is-touring .dock{transform:translateY(12px)}.cta-row{flex-direction:column;align-items:stretch}.cta-row .cta{width:100%;justify-content:center}.cta-label{flex-direction:column;align-items:flex-start;gap:0;line-height:1.15}.dock-tour span{display:none}.dock-tour{padding:0 9px}.tourbar{left:12px;right:12px;transform:none;justify-content:space-between;bottom:calc(14px + var(--safe-b))}.tour-steps{flex:1;margin:0 6px}.tour-steps li{flex:1;width:auto}.caption{left:12px;right:12px;max-width:none;bottom:calc(80px + var(--safe-b));padding:12px 16px 14px}.caption h2{font-size:22px}.caption-line{font-size:13px}.app[data-stage=building] .dock{left:50%;right:auto;transform:translate(-50%)}.chip{padding:0 11px}.minimap{top:calc(max(14px,env(safe-area-inset-top)) + 54px);bottom:auto;right:12px;width:46vw}.views{top:auto;bottom:calc(76px + var(--safe-b));left:12px;right:12px;transform:none;max-width:none;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 18px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 18px),transparent);padding-right:16px}.app:not([data-stage=apartment]) .views,.app.is-busy .views,.app.is-touring .views{transform:translateY(8px)}.zoom{display:none}.app[data-stage=apartment] .hint{bottom:calc(132px + var(--safe-b))}.hint{bottom:calc(82px + var(--safe-b))}.disclaimer{display:none}.skip{bottom:auto;top:calc(max(14px,env(safe-area-inset-top)) + 54px)}}@media (max-width: 720px) and (orientation: landscape){.minimap{width:30vw}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}}
