:root{--night:#04070c;--ink:#0a1220;--chalk:#e8eef5;--fog:#8fa3b8;--glass:#060b14b8;--edge:#2b8cff3d;--blue:#2b8cff;--scan:#6fc3ff;--gold:#c9a24a;--gold-hi:#e2c36e;--foil:linear-gradient(135deg,#8c6b26 0%,#f1da97 42%,#b8892f 65%,#e6c877 100%);--r-panel:4px;--r-btn:3px;--font:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;--display:"Sora","Manrope",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace}*{box-sizing:border-box}html,body{background:var(--night);height:100%;color:var(--chalk);font:400 14px/1.5 var(--font);touch-action:none;-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}canvas#app{width:100%;height:100%;display:block;position:fixed;inset:0}button,a.primary{font:500 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--chalk);background:var(--glass);border:1px solid var(--edge);border-radius:var(--r-btn);cursor:pointer;-webkit-backdrop-filter:blur(10px);padding:11px 14px;text-decoration:none;transition:border-color .15s,color .15s,background .15s}button:hover,a.primary:hover{color:#fff;border-color:#6fc3ffb3}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--scan);outline-offset:2px}button.primary,a.primary{background:var(--blue);color:#020305;border-color:#0000;font-weight:600;box-shadow:0 0 22px #2b8cff73}button.primary:hover,a.primary:hover{color:#020305;background:#4a9dff;box-shadow:0 0 32px #2b8cffb3}.panel{background:var(--glass);border:1px solid var(--edge);border-radius:var(--r-panel);-webkit-backdrop-filter:blur(12px)}[hidden]{display:none!important}.hidden{opacity:0;pointer-events:none}.wordmark{color:var(--chalk);align-items:center;gap:12px;text-decoration:none;display:flex}.wordmark svg{filter:drop-shadow(0 0 10px #c9a24a40);flex:none;width:40px;height:40px}.wordmark .wm{font:600 14px/1.05 var(--display);letter-spacing:.16em;text-transform:uppercase}.wordmark .wm small{font:400 10px/1.2 var(--mono);letter-spacing:.12em;color:var(--gold-hi);margin-top:6px;display:block}.wordmark.small svg{width:30px;height:30px}.intro-card .wordmark svg,.loadmeta .wordmark svg{width:56px;height:56px}.intro-card .wordmark .wm{font-size:16px}.wordmark.small .wm{font-size:11px}#loader{z-index:30;background:linear-gradient(#2b8cff0f 1px,transparent 1px) 0 0/32px 32px, linear-gradient(90deg,#2b8cff0f 1px,transparent 1px) 0 0/32px 32px, radial-gradient(ellipse at 50% 45%,#0a1a33 0%,var(--night) 65%);align-content:center;place-items:center;gap:28px;transition:opacity .8s;display:grid;position:fixed;inset:0}#loader.done{opacity:0;pointer-events:none}#plandots{width:min(300px,62vw);height:auto}.loadmeta{justify-items:center;gap:14px;display:grid}#loadtxt{color:var(--fog);font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;margin:0}.bar{background:#2b8cff26;width:220px;height:2px}.bar i{background:var(--foil);width:0;height:100%;transition:width .25s;display:block}.sheet{z-index:25;background:linear-gradient(#04070c59,#04070cdb);place-items:center;padding:16px;display:grid;position:fixed;inset:0}.intro-card{width:100%;max-width:540px}.eyebrow{font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--scan);margin:34px 0 0}.intro-card h1{font:600 clamp(44px,9vw,78px)/.95 var(--display);letter-spacing:-.025em;margin:12px 0 16px}.lede{color:#c9d4e0;max-width:44ch;margin:0 0 26px;font-size:16px;line-height:1.55}.intro-actions{flex-wrap:wrap;gap:10px;display:flex}.intro-actions button{padding:15px 20px;font-size:12px}.controls-hint{color:var(--fog);font:400 11px var(--mono);letter-spacing:.06em;margin:18px 0 0}#top{z-index:6;pointer-events:none;justify-content:space-between;align-items:flex-start;display:flex;position:fixed;top:14px;left:16px;right:16px}#top>*{pointer-events:auto}.property{text-align:right;text-shadow:0 1px 10px #000000b3}.property strong{font:600 15px var(--display);letter-spacing:-.01em;display:block}.property span{color:var(--gold-hi);font:400 11px var(--mono);letter-spacing:.08em;text-transform:uppercase}#roomcard{z-index:5;border-left:2px solid var(--gold);width:min(300px,100vw - 32px);padding:14px 16px;transition:opacity .4s;position:fixed;top:70px;left:16px}#roomcard h2{font:600 20px var(--display);letter-spacing:-.01em;margin:0}#roomcard .dims{color:var(--scan);font:500 12px var(--mono);letter-spacing:.04em;font-variant-numeric:tabular-nums;margin:4px 0 10px}#roomcard .facts{color:#b5c3d2;margin:0;padding:0 0 0 16px;font-size:13px}#roomcard .facts li{margin:3px 0}#roomcard .facts li::marker{color:var(--blue)}#minimap{z-index:5;width:200px;padding:8px;position:fixed;bottom:16px;left:16px}#minimap svg{cursor:crosshair;width:100%;height:auto;display:block}#minimap.collapsed svg{display:none}#minimap.collapsed{width:auto;padding:0}.mm-toggle{display:none}#minimap.collapsed .mm-toggle{display:block}#plan .wall{fill:#2b8cff;fill-opacity:.85}#plan .room{fill:#2b8cff0d}#plan .room.here{fill:#c9a24a29}#plan .open{fill:#0a1220}#plan .win{fill:#6fc3ff}#plan .porch{fill:none;stroke:#6fc3ff66;stroke-dasharray:3 3}#plan text{fill:var(--fog);font:500 8px var(--mono);letter-spacing:.06em;text-transform:uppercase;text-anchor:middle;pointer-events:none}#plan .me circle{fill:var(--gold-hi)}#plan .me path{fill:#e2c36e4d}#plan .stop{fill:none;stroke:#6fc3ff99;stroke-width:1.2px;stroke-dasharray:2 2}#rooms{z-index:5;scrollbar-width:none;background:var(--glass);border:1px solid var(--edge);border-radius:var(--r-panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);gap:4px;max-width:calc(100vw - 32px);padding:4px;display:flex;position:fixed;bottom:16px;left:50%;overflow-x:auto;transform:translate(-50%)}#rooms button{white-space:nowrap;background:0 0;border-color:#0000;padding:10px 12px}#rooms button[aria-current=true]{color:var(--gold-hi);background:#c9a24a24;border-color:#e2c36e99}#rail{z-index:5;flex-direction:column;gap:6px;display:flex;position:fixed;top:50%;right:16px;transform:translateY(-50%)}#rail button{place-items:center;width:44px;height:44px;padding:0;display:grid;position:relative}#rail svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}#btnTour svg,#btnView svg circle{fill:currentColor;stroke:none}#rail span{white-space:nowrap;background:var(--glass);border:1px solid var(--edge);border-radius:var(--r-btn);font:500 10px var(--mono);letter-spacing:.08em;opacity:0;pointer-events:none;padding:7px 9px;transition:opacity .15s;position:absolute;right:52px}#rail button:hover span,#rail button:focus-visible span{opacity:1}#rail button[aria-pressed=true]{color:var(--scan);border-color:#6fc3ffb3;box-shadow:0 0 14px #2b8cff4d}#hotspots{z-index:4;pointer-events:none;position:fixed;inset:0}.hs{pointer-events:auto;align-items:center;gap:8px;transition:opacity .3s;display:flex;position:absolute;transform:translate(-50%,-50%)}.hs i{border:1.5px dashed var(--scan);background:radial-gradient(circle,var(--scan) 0 2px,transparent 3px);cursor:pointer;border-radius:50%;flex:none;width:18px;height:18px;box-shadow:0 0 12px #2b8cff73}.hs .t{background:var(--glass);border:1px solid var(--edge);border-left:2px solid var(--gold);border-radius:var(--r-btn);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;max-width:230px;padding:9px 11px;font-size:12px;line-height:1.45;transition:opacity .25s,transform .25s;transform:translate(-4px)}.hs .t b{font:600 13px var(--display);margin-bottom:3px;display:block}.hs.open i{border-style:solid;border-color:var(--gold-hi);background:radial-gradient(circle,var(--gold-hi) 0 3px,transparent 4px);box-shadow:0 0 14px #e2c36e80}.hs.open .t{opacity:1;transform:none}#measureLayer{z-index:4;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}#measureLayer line{stroke:var(--scan);stroke-width:1.5px;stroke-dasharray:6 4}#measureLayer circle{fill:var(--night);stroke:var(--gold-hi);stroke-width:2px}#measureLayer rect{fill:var(--night);stroke:var(--blue);stroke-width:1px}#measureLayer text{fill:var(--gold-hi);font:600 12px var(--mono);font-variant-numeric:tabular-nums}#crosshair{z-index:4;pointer-events:none;border:1.5px dashed var(--scan);border-radius:50%;width:22px;height:22px;margin:-11px 0 0 -11px;position:fixed;top:50%;left:50%}#crosshair:after{content:"";background:var(--gold-hi);border-radius:50%;width:3px;height:3px;margin:-1.5px;position:absolute;top:50%;left:50%}#measureBar,#tourBar{z-index:7;align-items:center;gap:10px;max-width:calc(100vw - 32px);padding:8px 8px 8px 14px;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%)}#measureBar span{font-size:13px}.tour-progress{background:#2b8cff33;width:90px;height:2px}.tour-progress i{background:var(--foil);width:0;height:100%;display:block}#tourStep{font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.help-card{width:100%;max-width:620px;padding:22px 24px}.help-card h2{font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--scan);margin:0 0 10px}.help-cols{grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;display:grid}dl{margin:0}dt{color:var(--chalk);font:600 13px var(--display);margin-top:9px}dd{color:var(--fog);margin:2px 0 0;font-size:13px}.settings{gap:10px;margin-bottom:16px;font-size:13px;display:grid}.settings label{align-items:center;gap:10px;display:flex}.settings input[type=range]{accent-color:var(--gold);width:160px}.settings input[type=checkbox]{accent-color:var(--gold);width:16px;height:16px}.credit{color:var(--fog);margin:0 0 16px;font-size:12px}.help-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}#toast{z-index:9;background:var(--glass);border-radius:var(--r-btn);font:500 11px var(--mono);letter-spacing:.06em;border:1px solid #e2c36e8c;padding:10px 14px;position:fixed;top:70px;left:50%;transform:translate(-50%)}#stick{z-index:6;pointer-events:none;background:#04070c40;border:1px dashed #6fc3ff73;border-radius:50%;width:120px;height:120px;position:fixed;transform:translate(-50%,-50%)}#knob{background:#e2c36e66;border-radius:50%;width:46px;height:46px;margin:-23px 0 0 -23px;position:absolute;top:50%;left:50%}@media (width<=720px){#minimap{width:150px}#rail{top:auto;bottom:76px;transform:none}#rail button{width:40px;height:40px}#rail span{display:none}#rooms{max-width:none;bottom:16px;left:16px;right:16px;transform:none}#minimap{bottom:76px}#roomcard{top:62px}.help-cols{grid-template-columns:1fr}.property span{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.lite #btnView{display:none}
