:root{color:#202522;font-synthesis:none;letter-spacing:0;background:#e8ece8;font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;min-width:320px;height:100%;min-height:0;margin:0;overflow:hidden}@supports (height:100dvh){#app{height:100dvh}}button,select,input{font:inherit;letter-spacing:0}button,select,label{-webkit-tap-highlight-color:transparent}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.topbar{z-index:20;pointer-events:none;justify-content:space-between;align-items:center;gap:16px;display:flex;position:absolute;top:16px;left:16px;right:16px}.brand,.toolbar{pointer-events:auto}.brand{color:#1f2823;align-items:center;gap:10px;min-width:210px;display:flex}.brand-mark{color:#ba493e;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f7f9f6eb;border:1px solid #2030283d;border-radius:6px;place-items:center;width:42px;height:42px;display:grid;box-shadow:0 8px 24px #2430291a}.brand-mark svg{stroke-width:1.9px;width:20px;height:20px}.brand-copy h1,.brand-copy p{margin:0}.brand-copy h1{font-size:17px;font-weight:700;line-height:1.35}.brand-copy p{color:#5d6760;margin-top:2px;font-size:12px;line-height:1.35}.toolbar{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f8faf7e6;border:1px solid #23312a2e;border-radius:7px;align-items:center;gap:8px;min-height:48px;padding:6px;display:flex;box-shadow:0 12px 34px #212d261f}.room-picker{color:#465149;align-items:center;min-width:140px;height:34px;display:flex;position:relative}.room-picker svg{z-index:1;pointer-events:none;width:16px;height:16px;position:absolute;left:9px}.room-picker select{color:#273029;cursor:pointer;background:#fff;border:1px solid #cbd2cd;border-radius:5px;outline:none;width:100%;height:34px;padding:0 28px 0 32px;font-size:13px}.room-picker select:focus-visible,button:focus-visible,.switch-control input:focus-visible+.switch-track{outline-offset:2px;outline:3px solid #29775b42}.segmented{background:#e9ede9;border:1px solid #cbd2cd;border-radius:5px;height:34px;padding:2px;display:flex}.segment{color:#566159;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:3px;align-items:center;gap:5px;height:28px;padding:0 10px;font-size:13px;display:flex}.segment svg,.icon-button svg{stroke-width:1.8px;width:16px;height:16px}.segment.is-active{color:#1e5f47;background:#fff;box-shadow:0 1px 4px #1c2a221f}.switch-control{color:#465149;cursor:pointer;white-space:nowrap;align-items:center;gap:6px;height:34px;padding:0 5px;font-size:13px;display:flex;position:relative}.switch-control input{opacity:0;width:100%;height:100%;cursor:inherit;margin:0;position:absolute;inset:0}.switch-track{background:#aeb8b1;border-radius:9px;width:30px;height:17px;transition:background .16s;position:relative}.switch-track:after{content:"";background:#fff;border-radius:50%;width:13px;height:13px;transition:transform .16s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #141e1840}.switch-control input:checked+.switch-track{background:#2b7558}.switch-control input:checked+.switch-track:after{transform:translate(13px)}.switch-control:has(input:disabled){opacity:.42;cursor:not-allowed}.control-icon{display:none}.icon-button{color:#3f4a43;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;flex:0 0 34px;place-items:center;width:34px;height:34px;padding:0;display:grid}.icon-button:hover{background:#fff;border-color:#cbd2cd}#viewport,#scene-host{width:100%;height:100%;position:relative}#scene-host canvas{cursor:grab;touch-action:none;width:100%;height:100%;display:block}#scene-host canvas:active{cursor:grabbing}.label-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.room-label{color:#252c27;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffe0;border:1px solid #25302a2e;border-radius:4px;padding:4px 8px;font-size:13px;font-weight:700;line-height:1.2;transform:translate(-50%,-50%);box-shadow:0 3px 12px #18251d1f}.room-status,.legend{z-index:10;color:#39443d;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f8faf7e0;border:1px solid #23312a29;border-radius:6px;align-items:center;display:flex;position:absolute;bottom:16px;box-shadow:0 8px 24px #212d261a}.room-status{gap:8px;min-width:118px;height:38px;padding:0 12px;font-size:13px;font-weight:700;left:16px}.status-dot{background:#2b7558;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #2b75581f}.legend{gap:14px;min-height:38px;padding:8px 12px;font-size:12px;right:16px}.legend span{white-space:nowrap;align-items:center;gap:6px;display:flex}.legend i{border-radius:2px;width:20px;height:4px;display:inline-block}.legend-wall{background:#deded8;box-shadow:0 0 0 1px #9c9f99}.legend-window{background:#49a8c9}#tooltip{z-index:100;color:#fff;pointer-events:none;background:#202722;border-radius:4px;padding:5px 8px;font-size:12px;display:none;position:fixed;transform:translate(-50%,calc(-100% - 8px))}@media (width<=980px){.topbar{align-items:flex-start}.brand{min-width:auto}.toolbar{flex-wrap:wrap;justify-content:flex-end;max-width:calc(100% - 150px)}}@media (width<=720px){.topbar{top:max(10px, env(safe-area-inset-top));display:block;left:10px;right:10px}.brand{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f8faf7e6;border:1px solid #23312a29;border-radius:7px;width:max-content;max-width:calc(100vw - 20px);min-height:44px;padding:5px 9px 5px 5px;box-shadow:0 8px 24px #212d261a}.brand-mark{width:34px;height:34px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0}.brand-copy{min-width:0}.brand-copy h1{font-size:15px}.brand-copy p{text-overflow:ellipsis;white-space:nowrap;max-width:calc(100vw - 84px);font-size:11px;overflow:hidden}.toolbar{top:auto;right:10px;bottom:max(10px, env(safe-area-inset-bottom));grid-template-rows:40px 40px;grid-template-columns:minmax(104px,1fr) repeat(4,40px);gap:6px;width:auto;max-width:none;min-height:0;padding:7px;display:grid;position:fixed;left:10px}.room-picker{grid-column:1/-2;width:100%;min-width:0;height:40px}#isolate-control{grid-area:1/-2/auto/-1}.room-picker select{height:40px;font-size:16px}.segmented{width:100%;height:40px}.segment{flex:1 1 0;justify-content:center;height:34px;padding:0 7px}.switch-control{color:#667169;border:1px solid #0000;border-radius:5px;justify-content:center;width:40px;height:40px;padding:0}.switch-control .switch-track,.switch-control span:last-child{display:none}.switch-control .control-icon{stroke-width:1.8px;width:17px;height:17px;display:block}.switch-control:has(input:checked){color:#1e684d;background:#e2eee8;border-color:#2b755833}.switch-control:has(input:focus-visible){outline-offset:2px;outline:3px solid #29775b42}.icon-button{flex-basis:40px;width:40px;height:40px}.legend{display:none}.room-status{right:10px;bottom:calc(108px + env(safe-area-inset-bottom));width:max-content;min-width:0;max-width:calc(100vw - 20px);left:10px}.room-label{padding:3px 5px;font-size:11px;box-shadow:0 2px 8px #18251d1a}:root[data-view=top] .room-label-detail{display:none}#tooltip{display:none!important}}@media (width<=430px){.toolbar{padding:5px}.segment{gap:4px;padding:0 5px}.segment svg{width:15px;height:15px}}@media (height<=520px) and (orientation:landscape){.topbar{top:max(8px, env(safe-area-inset-top));left:max(8px, env(safe-area-inset-left));right:max(8px, env(safe-area-inset-right))}.brand,.room-status{display:none}.toolbar{top:max(8px, env(safe-area-inset-top));right:max(8px, env(safe-area-inset-right));grid-template-rows:40px;grid-template-columns:minmax(140px,1fr) 132px repeat(5,40px);gap:6px;width:min(630px,100vw - 16px);max-width:none;min-height:0;padding:7px;display:grid;position:fixed;bottom:auto;left:auto}.room-picker{grid-column:auto;width:100%;min-width:0;height:40px}#isolate-control{grid-area:1/-2/auto/-1}.room-picker select,.segmented{height:40px}.segmented{width:132px}.segment{flex:1 1 0;justify-content:center;height:34px;padding:0 6px}.switch-control{border:1px solid #0000;border-radius:5px;justify-content:center;width:40px;height:40px;padding:0}.switch-control .switch-track,.switch-control span:last-child,.legend{display:none}.switch-control .control-icon{width:17px;height:17px;display:block}.icon-button{flex-basis:40px;width:40px;height:40px}.room-label-detail{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
