:root{color:#f5efe4;font-synthesis:none;--surface:#2a241fc2;--surface-strong:#2a241fe0;--ink:#f5efe4;--accent:#d6a776;--line:#fff3e133;background:#dedbd2;font-family:Segoe UI,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,canvas:focus-visible{outline-offset:3px;outline:2px solid #e4bb8d}button:disabled{opacity:.45;cursor:wait}button:active:not(:disabled),a:active{filter:brightness(.9)}[hidden]{display:none!important}.viewport{isolation:isolate;width:var(--viewer-width,100vw);height:100vh;height:var(--viewer-height,100dvh);background:#dedbd2;position:relative;overflow:hidden}.viewport:fullscreen{width:var(--viewer-width,100vw);height:var(--viewer-height,100dvh)}#scene{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.edge-dock{z-index:2;border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:5px;align-items:center;gap:4px;padding:3px 6px;display:flex;position:absolute;box-shadow:0 3px 12px #1c16121a}.top-docks{z-index:2;top:calc(env(safe-area-inset-top,0px) + 16px);bottom:calc(env(safe-area-inset-bottom,0px) + 84px);left:calc(env(safe-area-inset-left,0px) + 16px);width:80px;height:max-content;max-height:calc(100% - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 100px);overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:var(--accent) transparent;flex-flow:column;gap:8px;margin-block:auto;padding:4px;display:flex;position:absolute;overflow:hidden auto}.top-docks .edge-dock{flex-direction:column;flex:none;width:100%;padding:3px;position:static}.top-docks button{flex:none;width:100%;min-width:44px;min-height:44px}.viewport[data-mode=walk] .top-docks{bottom:calc(env(safe-area-inset-bottom,0px) + 124px);max-height:calc(100% - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 140px)}.tools-dock{width:132px}.tools-dock .dock-button{flex:1}.layers-dock{width:192px;max-width:100%}.light-dock{width:260px;max-width:100%}.views-dock{left:50%;bottom:max(18px, env(safe-area-inset-bottom));transform:translate(-50%)}.viewport[data-mode=walk] .views-dock{display:none}.dock-button,.view{min-width:58px;min-height:44px;color:var(--ink);letter-spacing:.04em;white-space:nowrap;background:0 0;border-radius:3px;justify-content:center;align-items:center;padding:4px 9px;font-size:12px;transition:background .18s,color .18s;display:flex;position:relative}.dock-button:hover,.view:hover,.toggle:hover{background:#fff3e11c}.dock-button.active,.view.active{color:#ffe1ba}.toggle{white-space:nowrap;background:0 0;border-radius:3px;flex:1;justify-content:center;align-items:center;min-width:0;min-height:44px;padding:0 4px;font-size:12px;display:flex;position:relative}.toggle.on{color:#ffe1ba}.fullscreen-button{z-index:2;top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:5px;place-items:center;width:44px;height:44px;display:grid;position:absolute;box-shadow:0 3px 12px #1c16121a}.fullscreen-button:hover{background:var(--surface-strong)}.fullscreen-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}#loader{z-index:5;color:#473a30;background:radial-gradient(at 52% 38%,#f3ede3 0%,#e7ded2 58%,#d9cec0 100%);place-items:center;padding:28px;transition:opacity .45s;display:grid;position:absolute;inset:0}#loader.is-complete{opacity:0;pointer-events:none}.load-content{width:min(400px,100%);transform:translateY(-8px)}.load-house{width:100%;height:auto;display:block;overflow:visible}.load-wall{fill:#fffaf145}.load-roof{fill:#5942301a}.load-outline,.load-details{fill:none;stroke:#725a47;stroke-linecap:round;stroke-linejoin:round}.load-outline{stroke-width:1.65px}.load-outline path{stroke-dasharray:1;stroke-dashoffset:1px;animation:.85s cubic-bezier(.25,.6,.2,1) forwards draw-house}.load-outline path+path{animation-delay:80ms}.load-details{stroke-width:1.15px;opacity:.35;animation:.4s .16s forwards reveal-details}.load-sun{opacity:.5;transform-origin:313px 55px;animation:3.5s ease-in-out infinite breathe-sun}.load-meta{letter-spacing:.08em;justify-content:space-between;align-items:baseline;gap:16px;margin:15px 0 11px;font-size:12px;display:flex}#load-percent{color:#775c45;font-variant-numeric:tabular-nums;letter-spacing:0;font:16px Georgia,serif}.load-progress{background:#684e392e;height:2px;overflow:hidden}.load-progress span{width:var(--load-progress,0%);background:#9a7552;height:100%;transition:width .25s;display:block}#load-note{color:#765d4b;overflow-wrap:anywhere;margin:12px 0 0;font-size:12px;line-height:1.5}@keyframes draw-house{to{stroke-dashoffset:0}}@keyframes reveal-details{to{opacity:.82}}@keyframes breathe-sun{50%{opacity:.9;transform:scale(1.08)}}#crosshair{color:#fff;text-shadow:0 1px 4px #333;pointer-events:none;position:absolute;top:50%;left:50%}#walkbar{z-index:2;left:50%;bottom:max(18px, env(safe-area-inset-bottom));border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:5px;align-items:center;gap:8px;max-width:calc(100% - 220px);padding:7px;display:flex;position:absolute;transform:translate(-50%);box-shadow:0 3px 12px #1c16121a}.walk-locations{gap:3px;display:flex}#walkbar button{white-space:nowrap;background:0 0;border-radius:3px;min-height:44px;padding:0 12px;font-size:12px}#walkbar button:hover{background:#fff3e11c}#lock{border-left:1px solid var(--line)!important;border-radius:0!important}#touchpad{z-index:2;right:12px;bottom:max(14px, env(safe-area-inset-bottom));text-align:center;position:absolute}#touchpad button{border:1px solid var(--line);background:var(--surface);border-radius:5px;width:46px;height:46px;margin:2px;font-size:19px}#toast{z-index:6;color:#fff;text-align:center;opacity:0;pointer-events:none;background:#273424e6;border-radius:10px;max-width:calc(100% - 24px);padding:10px 16px;font-size:12px;transition:opacity .2s;position:absolute;bottom:82px;left:50%;transform:translate(-50%)}#toast.show{opacity:1}@media (width<=600px){.top-docks{top:calc(env(safe-area-inset-top,0px) + 8px);left:calc(env(safe-area-inset-left,0px) + 8px);gap:6px}.views-dock{right:auto;bottom:max(8px, env(safe-area-inset-bottom))}.edge-dock{gap:2px;padding:3px 4px}.dock-button{min-width:48px;padding:4px 6px;font-size:11px}.view{min-width:56px;padding:4px 6px;font-size:11px}.fullscreen-button{top:max(8px, env(safe-area-inset-top));right:max(8px, env(safe-area-inset-right))}#walkbar{top:auto;bottom:max(8px, env(safe-area-inset-bottom));flex-wrap:wrap;max-width:calc(100% - 168px);left:8px;transform:none}.walk-locations{flex-wrap:wrap}#walkbar button{padding:0 8px}#touchpad{right:8px;bottom:max(8px, env(safe-area-inset-bottom))}#touchpad button{width:44px;height:44px;margin:1px}#toast{bottom:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.viewport:fullscreen{height:var(--viewer-height,100dvh)}#touchpad{touch-action:none;-webkit-user-select:none;user-select:none}@media (hover:none) and (pointer:coarse){#lock{display:none}}@media (width<=600px){.viewport{--mobile-top:calc(env(safe-area-inset-top,0px) + 8px);--mobile-right:calc(env(safe-area-inset-right,0px) + 8px);--mobile-bottom:calc(env(safe-area-inset-bottom,0px) + 8px);--mobile-left:calc(env(safe-area-inset-left,0px) + 8px)}.top-docks{z-index:2;top:var(--mobile-top);left:var(--mobile-left);right:auto;bottom:calc(var(--mobile-bottom) + 64px);width:68px;max-height:calc(100% - var(--mobile-top) - var(--mobile-bottom) - 64px);pointer-events:auto;flex-flow:column;align-items:stretch;gap:6px;display:flex;position:absolute}.top-docks>.edge-dock{pointer-events:auto;flex:none;width:100%;max-width:100%;position:static}.viewport[data-mode=walk] .top-docks{bottom:calc(var(--mobile-bottom) + 116px);max-height:calc(100% - var(--mobile-top) - var(--mobile-bottom) - 116px)}.edge-dock{gap:2px;padding:3px 4px}.dock-button,.toggle,.view{min-width:44px;min-height:44px;padding:4px 6px;font-size:12px}.views-dock{bottom:var(--mobile-bottom);left:var(--mobile-left);right:var(--mobile-right);width:max-content;max-width:calc(100% - var(--mobile-left) - var(--mobile-right));margin-inline:auto;transform:none}.views-dock .view{flex:1;min-width:44px}.fullscreen-button{top:var(--mobile-top);right:var(--mobile-right)}#walkbar{left:var(--mobile-left);bottom:var(--mobile-bottom);max-width:calc(100% - var(--mobile-left) - var(--mobile-right) - 164px);flex-wrap:wrap;padding:4px;transform:none}.walk-locations{flex-wrap:wrap;gap:2px}#walkbar button{min-width:44px;padding:0 8px}#touchpad{right:var(--mobile-right);bottom:var(--mobile-bottom)}#touchpad button{width:44px;height:44px;margin:3px}#toast{bottom:calc(var(--mobile-bottom) + 62px);max-width:calc(100% - var(--mobile-left) - var(--mobile-right))}.viewport[data-mode=walk] #toast{bottom:calc(var(--mobile-bottom) + 108px)}}.viewport[data-handset-orientation=landscape]{--mobile-top:calc(env(safe-area-inset-top,0px) + 8px);--mobile-right:calc(env(safe-area-inset-right,0px) + 8px);--mobile-bottom:calc(env(safe-area-inset-bottom,0px) + 8px);--mobile-left:calc(env(safe-area-inset-left,0px) + 8px)}.viewport[data-handset-orientation=landscape] .fullscreen-button{top:var(--mobile-top);right:var(--mobile-right)}.viewport[data-handset-orientation=landscape] #walkbar{left:var(--mobile-left);bottom:var(--mobile-bottom);max-width:calc(100% - var(--mobile-left) - var(--mobile-right) - 164px);flex-wrap:wrap;transform:none}.viewport[data-handset-orientation=landscape] .walk-locations{flex-wrap:wrap}.viewport[data-handset-orientation=landscape] #touchpad{right:var(--mobile-right);bottom:var(--mobile-bottom)}@media (orientation:landscape) and (height<=600px){#loader{padding:calc(env(safe-area-inset-top,0px) + 12px) calc(env(safe-area-inset-right,0px) + 20px) calc(env(safe-area-inset-bottom,0px) + 12px) calc(env(safe-area-inset-left,0px) + 20px);overflow-y:auto}.load-content{width:min(320px,100%);transform:none}.load-house{max-height:46dvh}.load-meta{margin-block:8px}}:root{--ui-brass:#cfb17f;--ui-ivory:#f4ead8;--ui-timber:#29251f}.top-docks{gap:12px;width:88px}.edge-dock,.fullscreen-button{background-color:var(--ui-timber);-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--ui-ivory);background-image:linear-gradient(135deg,#1b181457,#1b1814a3),url(/ui/walnut-lattice-v1.webp);background-size:auto,280px 280px;border:1px solid #a48b5e;border-radius:8px 2px;box-shadow:inset 0 0 0 3px #29251f,inset 0 0 0 4px #cfb17f40,0 5px 16px #120f0a38}.top-docks .edge-dock{gap:4px;padding:9px 6px}.top-docks .toggle,.views-dock .view{color:#e4dac7;letter-spacing:.08em;background:#1816122e;border:1px solid #0000;border-radius:5px 1px;flex-direction:column;gap:5px;min-height:58px;padding:6px 4px;font-size:12px;line-height:16px;transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s}.ui-icon{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;color:#c9b692;flex:none;width:22px;height:22px;display:block}.views-dock{gap:6px;padding:8px 10px}.views-dock .view{min-width:64px}.top-docks button[aria-pressed=true],.views-dock button[aria-pressed=true]{color:#fff1d5;background:linear-gradient(145deg,#be96565c,#8965342e);border-color:#e1c087b8;box-shadow:inset 0 1px #ffe8bc21,inset 0 0 12px #e2b87012,0 1px 3px #0000001f}button[aria-pressed=true] .ui-icon{color:#f1d3a0;stroke-width:1.8px}.fullscreen-button{width:48px;height:48px;color:var(--ui-brass)}.fullscreen-button svg{stroke-width:1.4px;width:21px;height:21px}.fullscreen-button:active{box-shadow:inset 0 0 0 3px #29251f,inset 0 0 0 4px #cfb17f}.edge-dock button:focus-visible,.fullscreen-button:focus-visible{outline-offset:2px;outline:2px solid #fff0cc}@media (hover:hover){.top-docks button:hover:not(:disabled),.views-dock button:hover:not(:disabled){color:#fff4df;background-color:#cfb17f24;border-color:#cfb17f8c}.fullscreen-button:hover{background-blend-mode:screen, normal;background-color:#463c2c}}@media (width<=600px){.top-docks{gap:8px;width:76px}.top-docks .edge-dock{gap:3px;padding:7px 4px}.top-docks .toggle,.views-dock .view{gap:3px;min-height:52px;padding:4px 3px;font-size:12px}.ui-icon{width:19px;height:19px}.views-dock{gap:3px;padding:6px}.views-dock .view{min-width:46px}.fullscreen-button{width:44px;height:44px}.top-docks{bottom:calc(var(--mobile-bottom) + 76px);max-height:calc(100% - var(--mobile-top) - var(--mobile-bottom) - 76px)}}.viewport[data-handset-orientation=landscape] .top-docks{top:var(--mobile-top);bottom:var(--mobile-bottom);width:56px;height:max-content;max-height:calc(100% - var(--mobile-top) - var(--mobile-bottom));gap:5px;margin-block:auto;padding:1px}.viewport[data-handset-orientation=landscape] .top-docks .edge-dock{gap:1px;padding:2px 3px}.viewport[data-handset-orientation=landscape] .top-docks .toggle,.viewport[data-handset-orientation=landscape] .views-dock .view{gap:1px;min-width:44px;min-height:44px;padding:2px 1px;font-size:10px;line-height:12px}.viewport[data-handset-orientation=landscape] .ui-icon{width:15px;height:15px}.viewport[data-handset-orientation=landscape] .views-dock{top:calc(var(--mobile-top) + 52px);right:var(--mobile-right);bottom:var(--mobile-bottom);width:56px;max-width:none;height:max-content;max-height:calc(100% - var(--mobile-top) - var(--mobile-bottom) - 52px);overscroll-behavior:contain;touch-action:pan-y;flex-direction:column;gap:1px;margin-block:auto;margin-inline:0;padding:3px 5px;display:flex;left:auto;overflow-y:auto;transform:none}.viewport[data-handset-orientation=landscape] .views-dock .view{flex:none;width:100%}.viewport[data-handset-orientation=landscape][data-mode=walk] .top-docks{bottom:var(--mobile-bottom);max-height:calc(100% - var(--mobile-top) - var(--mobile-bottom))}@media (prefers-reduced-motion:reduce){.top-docks .toggle,.views-dock .view{transition:none}}
