.dashboard-floor{--df-ink:#163e3a;--df-muted:#657f79;--df-line:#dce7e2;overflow:hidden;border:1px solid #d4e2dd;border-radius:16px;background:#fff;box-shadow:0 9px 32px #133d3710;margin:25px 0;color:var(--df-ink);min-width:0}
.dashboard-floor *{box-sizing:border-box}.dashboard-floor button,.dashboard-floor select{font:inherit}.dashboard-floor button{cursor:pointer}.dashboard-floor :is(button,a,select,[role=button]):focus-visible{outline:3px solid #78b88d;outline-offset:3px}.dashboard-floor h2,.dashboard-floor h3,.dashboard-floor h4,.dashboard-floor p{margin:0}.dashboard-floor a{text-decoration:none}.df-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:25px 28px 22px;background:#123f3b;color:#eef7f0}.df-heading .df-kicker{color:#b7d39d;font-size:.62rem;letter-spacing:.16em;font-weight:650;margin-bottom:5px}.df-heading h2{font-size:1.3rem;letter-spacing:-.035em;color:#fff}.df-heading h2+p{font-size:.76rem;color:#bed2ca;margin-top:6px}.df-edit{display:inline-flex;gap:7px;align-items:center;color:#d6e8d5;font-size:.75rem;white-space:nowrap;min-height:42px}.df-edit:hover{color:white}.df-location-bar{padding:18px 28px;display:flex;gap:24px;align-items:center;border-bottom:1px solid var(--df-line);background:#f8faf8}.df-location-bar label{font-size:.67rem;color:var(--df-muted);display:flex;flex-direction:column;gap:6px;font-weight:600;min-width:0;flex:0 1 410px}.df-location-bar select{border:1px solid #cdded4;border-radius:7px;padding:10px 32px 10px 12px;color:var(--df-ink);font-size:.88rem;font-weight:600;min-width:0;width:100%;max-width:100%;background:#fff;min-height:43px}.df-location-meta{font-size:.72rem;color:var(--df-muted);display:flex;flex-direction:column;gap:4px;min-width:0;overflow-wrap:anywhere}.df-location-meta strong{font-weight:500;color:#345c53}.df-layout{display:grid;grid-template-columns:167px minmax(0,1fr);min-height:440px}.df-floors{background:#f3f7f3;padding:25px 12px;border-right:1px solid var(--df-line);display:flex;flex-direction:column;gap:7px;min-width:0}.df-floors>p{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;padding:0 11px 12px;color:#6b8277;font-weight:650}.df-floors button{display:flex;align-items:center;text-align:left;gap:9px;width:100%;padding:12px 10px;border:1px solid transparent;background:none;border-radius:8px;color:#627b70;min-height:54px;line-height:1.25;font-size:.75rem;overflow-wrap:anywhere}.df-floors button>span:nth-child(2){flex:1}.df-floors button>.ui-icon{opacity:0}.df-floors button:hover{background:#e6efe5}.df-floors button[aria-pressed=true]{background:#194b40;color:#fff;box-shadow:0 3px 10px #163e301c}.df-floors button[aria-pressed=true]>.ui-icon{opacity:1;color:#c3e49b}.df-floor-level{font-size:1rem;font-weight:650;min-width:23px;text-align:center}.df-floor-missing{padding:10px;font-size:.75rem;color:var(--df-muted)}.df-content{padding:23px 25px 24px;min-width:0}.df-plan-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.df-plan-heading p{color:var(--df-muted);font-size:.7rem;margin-bottom:3px}.df-plan-heading h3{font-size:1.08rem;letter-spacing:-.025em;font-weight:650;overflow-wrap:anywhere}.df-plan-heading>span{font-size:.7rem;color:var(--df-muted);text-align:right}.df-back{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:39px;padding:8px 11px;border:1px solid #d5e3da;color:#365e50;background:white;border-radius:7px;font-size:.73rem!important;white-space:nowrap}.df-back:hover{background:#edf5ec}.df-view{min-width:0}.df-plan-stage{min-width:0;background:#f6f9f5;border:1px solid #e2eae0;border-radius:10px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.df-map{display:block;width:100%;height:365px;padding:20px;overflow:visible}.df-map-room{cursor:pointer}.df-map-room>rect{fill:#e5eddf;stroke:#a6b59f;stroke-width:1.5;vector-effect:non-scaling-stroke;transition:fill .15s,stroke .15s}.df-map-room>text{fill:#48603f;font-weight:600;pointer-events:none;user-select:none}.df-map-room:hover>rect,.df-map-room:focus>rect{fill:#d4e6c2;stroke:#638855;stroke-width:2.5}.df-map-room.fault>rect{fill:#f5e5df;stroke:#be8071}.df-map-room.warning>rect{fill:#f1ebd2;stroke:#b6a060}.df-map-room:focus{outline:none}.df-marker{cursor:pointer;color:#355447}.df-marker>circle{fill:#fff;stroke:#8d9e95;stroke-width:1.6;stroke-dasharray:3 2;vector-effect:non-scaling-stroke}.df-marker.confirmed>circle{stroke-dasharray:none}.df-marker.ok{color:#315c34}.df-marker.ok>circle{fill:#e2f0d0;stroke:#5e8a4b}.df-marker.fault{color:#a84238}.df-marker.fault>circle{fill:#ffe5df;stroke:#bc685f}.df-marker.warning,.df-marker.stale{color:#8d6920}.df-marker.warning>circle,.df-marker.stale>circle{fill:#fff4d5;stroke:#bea263}.df-marker:hover>circle,.df-marker:focus>circle{stroke:#1b6148;stroke-width:3}.df-marker:focus{outline:none}.df-marker svg{pointer-events:none}.df-plan-caption{padding:12px 16px;border-top:1px solid #e1e9de;color:#708069;font-size:.65rem;line-height:1.5}.df-empty{padding:53px 24px;text-align:center;min-height:260px;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#7d9487}.df-empty h3{font-size:.98rem;color:#426052;margin:17px 0 8px}.df-empty p{max-width:440px;font-size:.79rem;line-height:1.65;color:#718577}.df-unplaced{font-size:.69rem;color:#7b8068;margin-top:12px!important}.df-room-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0 18px;margin-top:17px}.df-room-list button{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:3px;background:none;border:0;border-bottom:1px solid #e6ede6;padding:12px 20px 12px 0;min-width:0;color:#315344}.df-room-list strong{font-size:.77rem;font-weight:600;overflow-wrap:anywhere}.df-room-list span,.df-room-list small{font-size:.64rem;color:#7c8a80;line-height:1.5;overflow-wrap:anywhere}.df-room-list .ui-icon{position:absolute;right:0;top:15px;color:#91a58a}.df-room-list button:hover strong{color:#538e42}.df-room-list button:hover .ui-icon{color:#538e42}.df-no-rooms{font-size:.75rem;color:#718575;padding-top:15px}.df-view.has-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,340px);gap:21px;align-items:start}.df-view.has-detail .df-map{height:320px}.df-detail{min-width:0}.df-detail-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-bottom:12px}.df-detail .df-kicker{font-size:.66rem;color:var(--df-muted);font-weight:600}.df-room-number{font-size:.65rem;background:#edf3e8;padding:3px 8px;border-radius:5px;color:#637857}.df-system-choice{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}.df-system-choice button{display:flex;align-items:center;gap:7px;font-size:.7rem;padding:8px 9px;border:1px solid #d8e3d5;border-radius:6px;color:#5c7557;background:#fff;min-height:38px;text-align:left;max-width:100%;overflow-wrap:anywhere}.df-system-choice button[aria-pressed=true]{background:#eaf2e4;color:#33582b;border-color:#b3cca2}.df-device-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.df-device-heading h4{font-size:.86rem;line-height:1.45;overflow-wrap:anywhere}.df-status{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-size:.59rem;color:#79837b;padding:3px 6px;border-radius:4px;background:#f0f3ef}.df-status i{height:5px;width:5px;border-radius:50%;background:#909c91;flex:none}.df-status.ok{background:#eef5e8;color:#48743c}.df-status.ok i{background:#6c9c4b}.df-status.fault{background:#fff0ec;color:#a44b3d}.df-status.fault i{background:#c56554}.df-status.warning,.df-status.stale,.df-status.partial{background:#fcf5e5;color:#987222}.df-status.warning i,.df-status.stale i,.df-status.partial i{background:#c3a154}.df-position{font-size:.64rem;color:#85917e;line-height:1.6;margin-top:7px!important}.df-position .ui-icon{margin-right:3px}.df-readings{margin-top:13px}.df-reading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px;border-top:1px solid #e4eae0;padding:12px 0}.df-reading-name{font-size:.73rem;color:#4e6b50;overflow-wrap:anywhere}.df-reading-name small{display:block;font-size:.61rem;color:#7e8c79;margin-top:3px}.df-reading-value{white-space:nowrap;text-align:right;align-self:start}.df-reading-value strong{font-size:1.02rem;font-weight:650;letter-spacing:-.02em}.df-reading-value>span{font-size:.65rem;color:#7d8c75}.df-reading-value.stale{color:#917023}.df-reading-value.invalid,.df-reading-value.missing{color:#8f9b87}.df-reading-meta{grid-column:1/-1;display:flex;flex-direction:column;gap:1px;color:#88917e;font-size:.6rem;overflow-wrap:anywhere}.df-asset-link{display:flex;align-items:center;gap:7px;justify-content:space-between;color:#336746;font-size:.72rem;font-weight:600;border-top:1px solid #e4eae0;padding:15px 0;min-height:45px}.df-muted{font-size:.75rem;color:var(--df-muted);line-height:1.6}.df-unassigned{border-top:1px solid var(--df-line);padding:17px 28px;background:#fafbf8}.df-unassigned summary{font-size:.75rem;color:#617158;cursor:pointer;min-height:28px;align-content:center}.df-unassigned>p{font-size:.71rem;color:#7c876e;margin:10px 0}.df-unassigned>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:0 25px}.df-unassigned a{display:flex;align-items:center;gap:9px;min-height:48px;border-bottom:1px solid #e7ebe1;color:#4b6447;font-size:.72rem}.df-unassigned a>span:not(.df-status){flex:1;overflow-wrap:anywhere}.df-location-note{font-size:.7rem;color:#7d866e;padding:14px 28px}
@media(min-width:1450px){.df-map{height:420px}.df-content{padding:25px 30px 27px}.df-layout{grid-template-columns:185px minmax(0,1fr)}}
@media(max-width:1100px){.df-view.has-detail{grid-template-columns:minmax(0,1fr)}.df-view.has-detail .df-map{height:280px}.df-detail{padding-top:2px}.df-readings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}}
@media(max-width:650px){.dashboard-floor{border-radius:12px;margin:18px 0}.df-heading{padding:21px 18px;gap:12px;align-items:flex-start;flex-direction:column}.df-heading h2{font-size:1.18rem}.df-heading h2+p{font-size:.7rem;max-width:260px;line-height:1.6}.df-edit{min-height:32px;font-size:.68rem}.df-location-bar{padding:15px 17px;gap:10px;align-items:flex-start;flex-direction:column}.df-location-bar label{flex:auto;width:100%}.df-location-meta{flex-direction:row;flex-wrap:wrap;gap:5px 14px;font-size:.64rem}.df-layout{grid-template-columns:78px minmax(0,1fr);min-height:360px}.df-floors{padding:18px 6px;gap:6px}.df-floors>p{font-size:.5rem;padding:0 2px 7px;line-height:1.5;letter-spacing:.03em}.df-floors button{flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:10px 3px;font-size:.61rem;min-height:64px}.df-floors button>.ui-icon{display:none}.df-floor-level{font-size:1rem}.df-floor-missing{font-size:.62rem;padding:5px 2px;overflow-wrap:anywhere}.df-content{padding:17px 11px 15px}.df-plan-heading{gap:10px;align-items:flex-start;flex-direction:column;margin-bottom:13px}.df-plan-heading h3{font-size:.91rem}.df-plan-heading p{font-size:.61rem}.df-plan-heading>span{font-size:.61rem;text-align:left}.df-map{height:280px;padding:7px}.df-view.has-detail .df-map{height:220px}.df-plan-caption{font-size:.55rem;padding:9px;line-height:1.55}.df-empty{padding:30px 12px;min-height:230px}.df-empty h3{font-size:.84rem}.df-empty p{font-size:.67rem}.df-room-list{grid-template-columns:minmax(0,1fr);margin-top:10px}.df-room-list strong{font-size:.69rem}.df-room-list span,.df-room-list small{font-size:.57rem}.df-unplaced{font-size:.59rem}.df-detail-head{gap:6px}.df-device-heading{flex-direction:column;gap:5px}.df-system-choice button{font-size:.63rem;padding:7px;gap:5px;min-height:40px}.df-system-choice button .ui-icon{width:15px;flex-shrink:0}.df-readings{grid-template-columns:minmax(0,1fr)}.df-reading{gap:5px 8px}.df-reading-name{font-size:.66rem}.df-reading-value strong{font-size:.9rem}.df-reading-value>span{font-size:.59rem}.df-reading-meta{font-size:.56rem}.df-unassigned{padding:14px 16px}.df-unassigned summary{font-size:.68rem;line-height:1.6}.df-unassigned>div{grid-template-columns:minmax(0,1fr)}.df-unassigned a{flex-wrap:wrap;padding:8px 0;gap:6px}.df-unassigned a>span:not(.df-status){min-width:100px}.df-unassigned .df-status{font-size:.57rem}.df-location-note{padding:12px 16px;font-size:.65rem}}
@media(prefers-reduced-motion:reduce){.df-map-room>rect{transition:none}}
.dashboard-home .dashboard-floor{margin:0}.dashboard-home .df-heading{padding-top:19px;padding-bottom:18px}.df-map-room.partial>rect,.df-map-room.stale>rect{fill:#f0eddf;stroke:#b2a685}
.df-reading{grid-template-columns:minmax(0,1fr) minmax(0,.85fr)}.df-reading-value{min-width:0;white-space:normal;overflow-wrap:anywhere}.df-system-choice button>span{min-width:0;overflow-wrap:anywhere}
.df-map-tools{display:flex;align-items:center;gap:3px;padding:8px 10px;border-bottom:1px solid #e1e9de;flex-wrap:wrap}.df-map-tools button{min-width:32px;min-height:32px;padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#466342;font-size:1rem;line-height:1}.df-map-tools button:hover:not(:disabled){background:#e5eddc;border-color:#cbd8c3}.df-map-tools button:disabled{opacity:.3;cursor:default}.df-map-tools output{min-width:46px;text-align:center;font-size:.66rem;color:#6a7c60}.df-map-tools .df-map-fit{margin-left:auto;font-size:.67rem}.df-map-viewport{height:365px;max-width:100%;min-width:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#aebea0 #edf2e8}.df-map-sheet{width:100%;height:100%;min-width:0}.df-map-viewport .df-map,.df-view.has-detail .df-map-viewport .df-map{width:100%;height:100%;max-width:none;padding:12px;overflow:hidden}.df-zoom-150 .df-map-sheet{width:150%;height:150%}.df-zoom-200 .df-map-sheet{width:200%;height:200%}.df-zoom-250 .df-map-sheet{width:250%;height:250%}.df-zoom-300 .df-map-sheet{width:300%;height:300%}.df-view.has-detail .df-map-viewport{height:320px}
@media(min-width:1450px){.df-map-viewport{height:420px}}
@media(max-width:1100px){.df-view.has-detail .df-map-viewport{height:280px}}
@media(max-width:650px){.df-map-viewport{height:280px}.df-view.has-detail .df-map-viewport{height:220px}.df-map-tools{padding:6px 5px;gap:0}.df-map-tools button{min-width:31px;min-height:36px;padding:4px 6px}.df-map-tools output{min-width:39px;font-size:.6rem}.df-map-tools .df-map-fit{font-size:.6rem;padding-left:5px;padding-right:5px}}
.df-marker{color:#155c54}.df-marker>circle{stroke:#3f8173;fill:#fff;stroke-width:1.8}.df-marker.partial{color:#8d6920}.df-marker.partial>circle{fill:#fff4d5;stroke:#bea263}.df-marker-note{display:flex;align-items:center;gap:7px;padding:3px 14px 10px;font-size:.65rem;line-height:1.5;color:#5c7569}.df-marker-note>span{display:block;flex:none;width:14px;height:14px;border:1.5px dashed #3f8173;border-radius:50%;background:#fff}
@media(max-width:650px){.df-marker-note{padding:3px 9px 9px;font-size:.57rem}}
