:root{--glass:#10121875;--glass-strong:#1012189e;--line:#ffffff1f;--text:#eceae5;--muted:#eceae594;--accent:#d9b77e;--radius:14px;--gap:16px;color:var(--text);font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{background:#0b0d12;height:100%;margin:0;overflow:hidden}canvas{touch-action:none;display:block}.overlay{pointer-events:none;position:fixed;inset:0}.overlay>*{pointer-events:auto}.panel{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px)saturate(1.2);position:absolute;box-shadow:0 8px 30px #00000040}button,select,input{font:inherit;color:inherit}button{border:1px solid var(--line);cursor:pointer;white-space:nowrap;background:#ffffff0f;border-radius:9px;padding:6px 12px;transition:background .15s,border-color .15s,color .15s}button:hover{background:#ffffff24}button.on{color:#f5e3c3;background:#d9b77e38;border-color:#d9b77eb3}.info-panel{top:var(--gap);left:var(--gap);max-width:320px;padding:14px 18px 12px}.info-panel .brand{letter-spacing:.32em;color:var(--accent);font-size:10px}.info-panel h1{letter-spacing:.12em;margin:4px 0 6px;font-family:Songti SC,STSong,SimSun,serif;font-size:24px;font-weight:600}.info-panel .meta{flex-wrap:wrap;gap:4px 12px;font-size:13px;display:flex}.info-panel .sub{color:var(--muted);margin-top:4px;font-size:11px}.side-panel{right:var(--gap);bottom:var(--gap);flex-direction:column;gap:10px;width:360px;max-height:calc(100vh - 100px);padding:8px 12px 12px;display:flex}.side-panel.folded{padding-bottom:8px}.side-panel .tabs{gap:4px;display:flex}.side-panel .tabs button{flex:1;padding:5px 0;font-size:13px}.side-panel .tabs .fold{flex:none;width:32px}.sun-panel{gap:10px;font-size:13px;display:grid}.sun-panel .row{align-items:center;gap:8px;display:flex}.sun-panel select,.sun-panel input[type=date],.sun-panel input[type=number]{border:1px solid var(--line);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#ffffff0f;border-radius:8px;min-width:0;padding:4px 6px}.sun-panel select{flex:1}.sun-panel .coord{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:flex}.sun-panel .coord input{width:66px}.sun-panel input[type=date]{flex:1}.sun-panel .seasons{gap:4px;display:flex}.sun-panel .seasons button{padding:4px 9px}.time-row{align-items:center;gap:10px;display:flex}.clock{font-variant-numeric:tabular-nums;letter-spacing:.04em;width:64px;font-size:22px;font-weight:300}.time-slider{appearance:none;background:linear-gradient(90deg, #1c2333 0, #1c2333 calc(var(--rise) * 100%), #e9c58b calc(var(--rise) * 100% + 2%), #f6e7c8 50%, #e9a86b calc(var(--set) * 100% - 2%), #1c2333 calc(var(--set) * 100%), #1c2333 100%);cursor:pointer;border-radius:3px;outline:none;flex:1;height:6px}.time-slider::-webkit-slider-thumb{appearance:none;border:3px solid var(--accent);background:#fff;border-radius:50%;width:18px;height:18px;box-shadow:0 0 10px #ffc87899}.time-slider::-moz-range-thumb{border:3px solid var(--accent);background:#fff;border-radius:50%;width:14px;height:14px}.stats{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.stats div{flex-direction:column;align-items:flex-start;display:flex}.stats b{font-variant-numeric:tabular-nums;font-size:16px;font-weight:500}.stats span{color:var(--muted);font-size:11px}.north-row{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:flex}.north-row input{accent-color:var(--accent);flex:1}.north-row em{text-align:right;width:64px;color:var(--text);font-style:normal}.analysis-btn{justify-self:start;padding:4px 12px;font-size:12px}.modal-backdrop{z-index:5;background:#05060a59;place-items:center;display:grid;position:absolute;inset:0}.sunshine{background:var(--glass-strong);width:min(460px,100vw - 24px);max-height:calc(100vh - 40px);padding:14px 18px 12px;position:relative;overflow-y:auto}.sunshine header{justify-content:space-between;align-items:center;display:flex}.sunshine h2{margin:0;font-size:16px;font-weight:500}.sunshine .close{padding:2px 9px}.sunshine .seg{gap:4px;margin:10px 0 6px;display:flex}.sunshine .seg button{flex:1;padding:4px 0;font-size:12px}.sunshine .meta{color:var(--muted);margin:0 0 8px;font-size:12px}.bars{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.bars li{border-radius:6px;grid-template-columns:52px 1fr 48px;align-items:center;gap:8px;padding:4px;font-size:13px;display:grid;position:relative}.bars li.hover{background:#ffffff0f}.bars .name{color:var(--text)}.bars .track{height:12px}.bars .track i{background:#bd7f1e;border-radius:0 4px 4px 0;min-width:2px;height:100%;display:block}.bars .val{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}.bars .tip{z-index:1;border:1px solid var(--line);white-space:nowrap;pointer-events:none;background:#0a0b0eeb;border-radius:6px;padding:4px 8px;font-size:11px;position:absolute;bottom:calc(100% - 2px);left:60px}.sunshine .note{color:var(--muted);margin:10px 0 0;font-size:11px;line-height:1.6}.light-panel{flex-direction:column;gap:10px;min-height:0;font-size:12px;display:flex}.light-panel em{font-variant-numeric:tabular-nums;text-align:right;width:38px;color:var(--muted);font-style:normal}.light-panel input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.light-panel>:not(.lp-rooms){flex:none}.theme-row{scrollbar-width:none;gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.theme-row::-webkit-scrollbar{display:none}.theme-row .theme{width:62px;color:var(--muted);background:0 0;border:1px solid #0000;flex-direction:column;flex:none;align-items:center;gap:3px;padding:4px 0 3px;font-size:11px;display:flex}.theme-row .theme i{border:2px solid #ffffff26;border-radius:50%;width:26px;height:26px;box-shadow:0 1px 4px #0006}.theme-row .theme.on{color:#f5e3c3;background:#d9b77e1f;border-color:#d9b77eb3}.theme-row .theme.on i{border-color:#fff}.sofa-row{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.sofa-row span{margin-right:4px}.lp-master{align-items:center;gap:8px;font-size:13px;display:flex}.lp-master em{color:var(--text)}.modes{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.modes button{flex-direction:column;align-items:center;gap:2px;padding:5px 0 4px;font-size:12px;display:flex}.modes button i{border-radius:50%;width:14px;height:14px;box-shadow:0 0 6px #ffffff40}.modes button small{color:var(--muted);font-size:9px}.hues{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.swatch{border:2px solid #0000;border-radius:50%;width:20px;height:20px;padding:0}.swatch.on{border-color:#fff}.hue-slider{flex:1;min-width:80px}.lp-scenes{grid-template-columns:repeat(6,1fr);gap:4px;display:grid}.lp-scenes button{padding:5px 0;font-size:12px}.lp-rooms{scrollbar-width:thin;flex-direction:column;flex:1;gap:2px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.lp-room{border-radius:8px;padding:3px 4px}.lp-room:hover{background:#ffffff0a}.lp-room.off .lp-name,.lp-room.off input[type=range]{opacity:.45}.lp-room-row{align-items:center;gap:6px;display:flex}.lp-room-row select{border:1px solid var(--line);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#ffffff0f;border-radius:6px;padding:1px 2px;font-size:11px}.lp-name{cursor:pointer;white-space:nowrap;width:44px}.expander{width:16px;height:18px;color:var(--muted);background:0 0;border:none;padding:0;font-size:10px;transition:transform .15s}.expander.open{transform:rotate(90deg)}.switch{background:#ffffff24;border:none;border-radius:9px;flex:none;width:30px;height:17px;padding:0;position:relative}.switch:after{content:"";background:#cfcac0;border-radius:50%;width:13px;height:13px;transition:transform .18s;position:absolute;top:2px;left:2px}.switch.on{background:#d9b77ebf}.switch.on:after{background:#fff;transform:translate(13px)}.lp-lights{flex-wrap:wrap;gap:4px;padding:5px 0 4px 22px;display:flex}.chip{border:1px solid var(--line);cursor:pointer;color:var(--muted);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;display:inline-flex}.chip.on{color:#f5e3c3;background:#d9b77e26;border-color:#d9b77e99}.chip input{display:none}.lp-note{color:var(--muted)}.top-right{top:var(--gap);right:var(--gap);gap:6px;padding:6px;display:flex}.top-right button{align-items:center;gap:6px;font-size:13px;display:inline-flex}.minimap{left:var(--gap);bottom:var(--gap);width:230px;padding:8px}.minimap svg{aspect-ratio:15.9/18.2;width:100%;height:auto;display:block;overflow:visible}.mm-room{fill:#ffffff0d;stroke:none;cursor:pointer;transition:fill .2s}.mm-room:hover{fill:#ffffff24}.mm-room.outdoor{fill:#8caa8c1a}.mm-room.current{fill:#d9b77e4d}.mm-closed{fill:#ffffff1f}.mm-wall{stroke:#eceae5d9;stroke-linecap:square}.mm-wall.low{stroke:#eceae566}.mm-window{stroke:#9cc8e0}.minimap text{fill:var(--muted);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-size:.5px}.minimap text.current{fill:#f5e3c3}.mm-cam circle{fill:var(--accent);stroke:#fff;stroke-width:.08px}.mm-cam .fov{fill:#d9b77e52}.mm-north path{fill:var(--text)}.mm-north text{fill:var(--text);font-size:.55px}.room-bar{left:calc(var(--gap) * 2 + 230px);right:calc(var(--gap) * 2 + 360px);bottom:var(--gap);width:fit-content;max-width:calc(100% - var(--gap) * 4 - 590px);flex-wrap:wrap;justify-content:center;gap:5px;margin:0 auto;padding:6px;display:flex}.room-bar button{padding:6px 11px;font-size:13px}.hint{white-space:nowrap;background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;border-radius:999px;padding:10px 18px;font-size:13px;position:absolute;bottom:120px;left:50%;transform:translate(-50%)}.hint.faint{opacity:.5;font-size:11px}.crosshair{pointer-events:none;background:#ffffffb3;border-radius:50%;width:4px;height:4px;margin:-2px;position:absolute;top:50%;left:50%}.fps{top:var(--gap);background:#00000080;border-radius:6px;padding:3px 8px;font:12px ui-monospace,monospace;position:absolute;left:50%;transform:translate(-50%)}.info-panel .tools{align-items:center;gap:4px;margin-left:10px;display:inline-flex}.info-panel .tools button{border-radius:6px;padding:1px 7px;font-size:11px}.sun-panel .more-toggle{display:none}.joystick{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);touch-action:none;background:#10121859;border-radius:50%;place-items:center;width:112px;height:112px;display:grid;position:absolute}.joystick.hidden{display:none}.joystick .knob{pointer-events:none;background:#eceae5bf;border-radius:50%;width:46px;height:46px;box-shadow:0 2px 10px #0006}@media (width<=760px){:root{--gap:8px;--bar-h:46px;--sun-h:186px}.info-panel{right:calc(var(--gap) * 2 + 40px);max-width:none;padding:8px 12px}.info-panel .brand{display:none}.info-panel h1{margin:0 0 2px;font-size:17px}.info-panel .meta{gap:0 8px;font-size:11px}.info-panel .sub{font-size:10px}.top-right{flex-direction:column;gap:4px;padding:4px}.top-right button{justify-content:center;gap:0;width:34px;height:34px;padding:0;font-size:0}.minimap{width:128px;padding:5px;top:104px;bottom:auto}.room-bar{left:var(--gap);right:var(--gap);bottom:var(--gap);width:auto;max-width:none;height:var(--bar-h);scrollbar-width:none;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto}.room-bar::-webkit-scrollbar{display:none}.room-bar button{flex:none;font-size:13px}.side-panel{left:var(--gap);right:var(--gap);bottom:calc(var(--bar-h) + var(--gap) * 2);gap:6px;width:auto;max-height:40vh;padding:6px 10px 8px}.side-panel .tabs button{padding:3px 0}.sun-panel{gap:6px;position:relative}.sun-panel .more{display:none}.sun-panel.expanded .more{display:flex}.sun-panel .more-toggle{padding:2px 8px;font-size:11px;display:block;position:absolute;top:0;right:0}.sun-panel .date-row{justify-content:flex-start;min-height:28px;padding-right:86px}.clock{width:52px;font-size:18px}.stats b{font-size:14px}.lp-scenes button{font-size:11px}.joystick{left:18px;bottom:calc(var(--bar-h) + var(--sun-h) + var(--gap) * 3 + 6px)}.overlay:has(.side-panel.folded) .joystick{bottom:calc(var(--bar-h) + 40px + var(--gap) * 3 + 6px)}:is(.overlay:has(.side-panel.tab-lights) .joystick,.overlay:has(.sun-panel.expanded) .joystick),.hint.faint{display:none}}@media (width<=360px){.info-panel .sub{display:none}}@media (height<=520px) and (width>=761px){:root{--gap:8px}.info-panel{padding:8px 12px}.info-panel .brand,.info-panel .sub{display:none}.info-panel h1{margin:0 0 2px;font-size:16px}.minimap{width:120px;padding:4px}.side-panel{gap:6px;width:300px;max-height:calc(100vh - 70px);padding:6px 10px 8px}.sun-panel{gap:6px}.sun-panel .more{display:none}.sun-panel.expanded .more{display:flex}.sun-panel .more-toggle{justify-self:end;padding:2px 8px;font-size:11px;display:block}.modes button small{display:none}.room-bar{left:calc(var(--gap) * 2 + 120px);right:calc(var(--gap) * 2 + 300px);scrollbar-width:none;flex-wrap:nowrap;justify-content:flex-start;width:auto;max-width:none;overflow-x:auto}.room-bar button{flex:none}.joystick{width:96px;height:96px;bottom:190px;left:18px}}.loader{z-index:10;background:#0b0d12;place-content:center;justify-items:center;gap:14px;transition:opacity .6s;display:grid;position:fixed;inset:0}.loader.done{opacity:0;pointer-events:none}.loader-title{letter-spacing:.3em;font-family:Songti SC,STSong,SimSun,serif;font-size:22px}.loader .bar{background:#ffffff1f;width:220px;height:2px}.loader .bar i{background:var(--accent);height:100%;transition:width .3s;display:block}.loader .pct{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}
