.room3d [hidden]{display:none!important}
.room3d-compass{position:absolute;z-index:3;left:18px;top:17px;display:grid;justify-items:center;gap:3px;min-width:132px;padding:11px 13px;border:1px solid #365b72;border-radius:14px;background:#0a1d31d9;box-shadow:0 12px 26px #0005;pointer-events:none}
.room3d-compass-rose{position:relative;width:55px;height:55px;border:1px solid #4a7188;border-radius:50%;background:radial-gradient(circle,#1e3a50,#0b2136)}
.room3d-compass-n{position:absolute;left:50%;top:2px;transform:translateX(-50%);font-size:11px;font-weight:800;color:#57eed1}
.room3d-compass-needle{position:absolute;left:50%;top:50%;font-size:23px;color:#6deacb;transform:translate(-50%,-50%);transform-origin:50% 50%;line-height:1}
.room3d-compass strong{font-size:12px}.room3d-compass small{font-size:10px;color:#9dbad0}
.room3d-walkpad{position:absolute;z-index:3;left:16px;bottom:16px;display:grid;justify-items:center;gap:4px;touch-action:none}
.room3d-walkpad>div{display:flex;gap:4px}.room3d-walkpad button{width:44px;height:44px;padding:0;border-radius:12px;background:#122d45e8;font-size:20px;touch-action:none;user-select:none}
.room3d-calibrate{display:grid;grid-template-columns:minmax(0,1fr) 320px;flex:1;min-height:0;background:#0b1829}
.room3d-map-area{min-width:0;min-height:0;padding:20px 28px;overflow:auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px}
.room3d-map-head{display:flex;justify-content:space-between;align-items:center;gap:16px;width:min(100%,1100px)}
.room3d-map-head h3{font-size:24px;margin:4px 0;color:#f2fbff}.room3d-map-head p{font-size:13px;line-height:1.5;color:#9ebad0;margin:0}
.room3d-map{position:relative;width:min(100%,1100px);aspect-ratio:2/1;max-height:68vh;border:2px solid #4ba9bb;border-radius:12px;background:linear-gradient(135deg,#15283d,#0e1b2d);overflow:hidden;cursor:crosshair;box-shadow:0 20px 45px #0005}
.room3d-map img{display:block;width:100%;height:100%;object-fit:fill;user-select:none;pointer-events:none}
.room3d-map>p{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(80%,410px);text-align:center;font-size:16px;line-height:1.7;color:#b6cee1}
#room3d-markers{position:absolute;inset:0;pointer-events:none}
.room3d-marker{position:absolute;z-index:2;transform:translate(-50%,-50%);width:28px;height:28px;min-height:0!important;padding:0!important;border:2px solid #eaf9ff!important;border-radius:50%!important;background:#0e7199e6!important;color:#fff;font-size:12px!important;font-weight:700!important;box-shadow:0 2px 8px #0008;pointer-events:auto}
.room3d-marker.selected{background:#e9a83e!important;color:#152233!important;outline:3px solid #ffffffa3}
.room3d-map-caption{width:min(100%,1100px);font-size:13px;line-height:1.5;color:#a7c3d8;margin:0}
.room3d-plan-controls{min-height:0;overflow:auto;padding:22px;border-left:1px solid #2c4862;background:#102237;display:grid;align-content:start;gap:14px}
.room3d-plan-controls h3{font-size:19px;margin:0}.room3d-plan-controls p{margin:0}
.room3d-privacy{font-size:12px;line-height:1.55;color:#ffdb9b;border:1px solid #826d42;border-radius:10px;background:#3c322066;padding:10px}
.room3d-upload{display:block;border:1px solid #5adcc3;border-radius:10px;background:#174e59;text-align:center;padding:10px 12px;cursor:pointer;font-size:14px;font-weight:700}
.room3d-upload input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.room3d-plan-controls label{display:grid;gap:6px;font-size:12px;color:#bad1e3}
.room3d-plan-controls input:not([type=file]),.room3d-plan-controls select{width:100%;min-width:0;border:1px solid #345772;border-radius:9px;background:#142d44;color:#eff9ff;min-height:38px;padding:7px 10px;font:inherit;font-size:13px}
.room3d-plan-controls input[type=range]{padding:0;accent-color:#4be6c6}
.room3d-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.room3d-field-help{font-size:11px;color:#9cb8cf;line-height:1.5}
#room3d-plan-status{font-size:12px;line-height:1.5;color:#8de4d1;min-height:20px}
@media(max-width:760px){.room3d-head{gap:6px}.room3d-actions{gap:5px}.room3d-actions button{font-size:11px}.room3d-compass{left:8px;top:8px;min-width:104px;padding:5px 8px}.room3d-compass-rose{width:43px;height:43px}.room3d-compass strong{font-size:10px}.room3d-calibrate{display:block;overflow-y:auto}.room3d-map-area{padding:12px;overflow:visible;display:block}.room3d-map-head{margin-bottom:10px}.room3d-map-head h3{font-size:18px}.room3d-map-head p{font-size:11px}.room3d-map-head button{font-size:12px}.room3d-map{max-height:none}.room3d-map-caption{margin:8px 0}.room3d-plan-controls{overflow:visible;border-left:0;border-top:1px solid #2c4862;padding:14px;gap:12px}}
.room3d-entry-marker{position:absolute;z-index:3;transform:translate(-50%,-50%);width:46px;height:30px;min-height:0!important;padding:2px!important;border:2px solid #e9ffe9!important;border-radius:7px!important;background:#126b4c!important;color:#fff!important;font-size:12px!important;font-weight:700!important;box-shadow:0 0 0 4px #1de4ac6e,0 3px 12px #0009;pointer-events:auto}
.room3d-door-controls{display:grid;gap:9px;padding:12px;border:1px solid #527a72;border-radius:11px;background:#173a3b}.room3d-door-controls>strong{color:#b4ffdc}.room3d-door-controls>p{font-size:12px;line-height:1.5;color:#b9d9d0}.room3d-door-actions{display:flex;gap:7px;flex-wrap:wrap}.room3d-door-actions button{font-size:12px!important;min-height:36px!important;padding:7px 10px!important}.room3d-door-actions button.active,.room3d-actions button.active{background:#106b57!important;border-color:#5aebba!important;color:#fff!important}.room3d-door-actions button:disabled{opacity:.5;cursor:default}
.room3d-structure-panel{position:absolute;z-index:5;right:14px;top:14px;display:grid;align-content:start;gap:9px;width:min(295px,calc(100% - 28px));max-height:calc(100% - 28px);overflow:auto;padding:15px;border:1px solid #4e8aa3;border-radius:13px;background:#0b2035ed;box-shadow:0 15px 35px #0008;color:#eaf8ff}.room3d-structure-panel>strong{font-size:17px}.room3d-structure-panel>p{margin:0;color:#b8d2e2;font-size:12px;line-height:1.55}.room3d-structure-panel>label{display:grid;gap:5px;font-size:12px;color:#cde3ee}.room3d-structure-panel select,.room3d-structure-panel input{width:100%;min-height:36px;border:1px solid #477089;border-radius:8px;background:#112c45;color:#f0fbff;padding:6px 8px;font:inherit;font-size:13px}.room3d-structure-actions{display:flex;gap:7px;flex-wrap:wrap}.room3d-structure-actions button,.room3d-structure-item button{min-height:32px!important;padding:5px 9px!important;font-size:12px!important}.room3d-structure-actions button:last-child{border-color:#5bdfba!important;color:#8af0d4!important}#room3d-structure-status{min-height:17px;color:#8de9cc!important}.room3d-structure-list{display:grid;gap:5px;max-height:160px;overflow:auto;border-top:1px solid #365570;padding-top:9px}.room3d-structure-list>p{margin:0;color:#9cb9ca;font-size:12px}.room3d-structure-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid #23435d;font-size:12px}.room3d-structure-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:760px){.room3d-structure-panel{right:8px;top:auto;bottom:8px;width:min(220px,62vw);max-height:32%;padding:10px;gap:6px}.room3d-structure-panel>strong{font-size:14px}.room3d-structure-panel>p{font-size:11px}}
.room3d-minimap{position:absolute;z-index:4;right:16px;bottom:16px;width:clamp(165px,19vw,255px);overflow:hidden;border:2px solid #70cdbd;border-radius:11px;background:#eff7fa;box-shadow:0 10px 28px #0009;cursor:crosshair}.room3d-minimap img{display:block;width:100%;height:100%;object-fit:fill;pointer-events:none}.room3d-minimap>span{position:absolute;z-index:2;display:grid;place-items:center;width:27px;height:27px;border:2px solid #fff;border-radius:50%;background:#047d67;color:#fff;font-size:14px;box-shadow:0 2px 7px #0008;pointer-events:none}.room3d-minimap button{position:absolute;right:4px;bottom:4px;min-height:24px!important;padding:2px 6px!important;border-radius:6px!important;background:#0d2c42ed!important;font-size:10px!important}#room3d-minimap-expand{position:absolute;z-index:4;right:16px;bottom:16px;min-height:34px!important;background:#123a4be8!important;font-size:12px!important}#room3d-opacity-wrap{display:flex;align-items:center;gap:6px;white-space:nowrap;color:#bddbdc}#room3d-opacity-wrap input{width:95px;accent-color:#56dac4}#room3d-opacity-value{min-width:29px;text-align:right}.room3d-bottom{align-items:center;flex-wrap:wrap}.room3d-stage canvas{touch-action:none}
@media(max-width:760px){.room3d-minimap{right:8px;bottom:8px;width:142px}#room3d-minimap-expand{right:8px;bottom:8px}.room3d-bottom{gap:5px}#room3d-opacity-wrap{order:3;width:100%;justify-content:center}#room3d-opacity-wrap input{width:120px}.room3d-walkpad{left:8px;bottom:8px}.room3d-walkpad button{width:38px;height:38px}}
.room3d-structure-item-actions{display:flex;gap:4px;flex:none}.room3d-structure-item-actions button{min-width:42px!important}.room3d-structure-panel .room3d-structure-list{max-height:180px}
@media(max-width:760px){.room3d-head .room3d-kicker{display:none}.room3d-structure-item{flex-wrap:wrap}.room3d-structure-item-actions{width:100%;justify-content:flex-end}}
.room3d{width:100vw;max-width:100vw;overflow:hidden}
.room3d-head,.room3d-main{width:100%;min-width:0}
.room3d-head>div:first-child{flex:0 0 auto}.room3d-actions{min-width:0;justify-content:flex-end}
.room3d-main{grid-template-columns:minmax(0,1fr) clamp(300px,23vw,360px);overflow:hidden}
.room3d-side{min-width:0}.room3d-side.has-selection .room3d-list{max-height:105px}
.room3d-device-heading{margin:17px 0 8px;font-size:15px;color:#8ff0d6}
.room3d-devices li{align-items:flex-start;flex-direction:column;gap:5px;padding:10px 11px;border:1px solid #2e546a;font-size:12px}
.room3d-devices li>div{min-width:0}.room3d-devices small{display:block;margin-top:3px;color:#a5bfd0;font-size:11px}.room3d-devices span{flex:none;color:#b8d8e5}
.room3d-equipment-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.room3d-equipment-fields label{display:grid;gap:4px;min-width:0;color:#cde3ee;font-size:11px}.room3d-equipment-fields small{grid-column:1/-1;color:#9fe6d4}
.room3d-equipment-fields label:nth-child(4){grid-column:1/-1}
@media(max-width:900px){.room3d-head{align-items:flex-start;flex-wrap:wrap}.room3d-head>div:first-child{flex:1 1 100%}.room3d-actions{justify-content:flex-start}.room3d-main{grid-template-columns:minmax(0,1fr) 300px}}
@media(max-width:760px){.room3d-main{grid-template-columns:1fr;grid-template-rows:minmax(220px,1fr) minmax(210px,37vh)}.room3d-side.has-selection .room3d-list{max-height:none}}
.room3d-layer-panel{position:absolute;z-index:6;right:15px;top:15px;display:grid;gap:8px;width:min(260px,calc(100% - 30px));padding:15px;border:1px solid #4d8b9c;border-radius:14px;background:#0b2035f2;box-shadow:0 18px 35px #0009}
.room3d-layer-panel strong{margin-top:3px;font-size:13px;color:#a8f0e2}.room3d-layer-panel label{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}.room3d-layer-panel input{accent-color:#51ddc8}.room3d-layer-panel input:disabled{opacity:.5}.room3d-layer-panel p{margin:2px 0 0;color:#a7c7d5;font-size:11px;line-height:1.5}
.room3d-view-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.room3d-view-buttons button{min-height:34px;padding:5px 8px;font-size:12px}
.room3d-device-result{border-color:#426488;background:#112a43}.room3d-device-result:before{content:'设备';float:right;color:#7acdd3;font-size:10px}.room3d-list-empty{padding:10px;color:#a7c1d7;font-size:12px}
.room3d-devices li{padding:0!important;background:none!important}.room3d-device-link{display:flex!important;flex-direction:column;align-items:stretch;width:100%;gap:4px;min-height:0!important;padding:9px 10px!important;text-align:left;background:#152a3d!important;border-color:#2e546a!important;font-size:12px!important}.room3d-device-link.selected{border-color:#ffd57f!important;background:#59442e!important}.room3d-device-link small{display:block}.room3d-device-link span{color:#b8d8e5}
.room3d-device-detail,.room3d-maintenance{margin:15px 0;padding:11px;border:1px solid #305870;border-radius:10px;background:#10283e}.room3d-device-detail:empty{display:none}.room3d-device-detail h4,.room3d-maintenance h4{margin:0 0 9px;font-size:14px;color:#96eed7}.room3d-device-detail p{margin:4px 0;overflow-wrap:anywhere}.room3d-maintenance-item{display:flex;align-items:flex-start;gap:6px;justify-content:space-between;padding:7px 0;border-top:1px solid #27465b;font-size:11px;line-height:1.5}.room3d-maintenance-item span{overflow-wrap:anywhere}.room3d-maintenance-item button{min-height:27px;padding:2px 6px;font-size:11px;flex:none}.room3d-maintenance-form{display:grid;gap:6px;margin-top:9px}.room3d-maintenance-form textarea{width:100%;min-height:58px;resize:vertical;padding:8px;border:1px solid #3b6077;border-radius:8px;background:#112b43;color:#effbff;font:inherit;font-size:12px}.room3d-maintenance-form button{min-height:32px;font-size:12px}
@media(max-width:760px){.room3d-layer-panel{top:7px;right:7px;width:min(220px,63vw);max-height:65%;overflow:auto;padding:10px}.room3d-layer-panel label{font-size:11px}.room3d-view-buttons button{font-size:11px}}
