@font-face{font-family:Oxanium;src:url('./fonts/oxanium-latin.woff2') format('woff2');font-weight:200 800;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}
.dashboard-mode{--side-w:340px;--edge:20px;--gap:14px;--bottom-h:224px;--footer-h:64px;--data-top:120px;background:#0b1523}
.dashboard-mode #app{height:100dvh;min-height:0;background:radial-gradient(ellipse at 50% 40%,#243b53 0,#122338 44%,#091421 90%)}
.dashboard-mode #stage{left:calc(var(--side-w) + var(--edge) + var(--gap));right:calc(var(--side-w) + var(--edge) + var(--gap));top:177px;bottom:calc(var(--bottom-h) + var(--footer-h) + 55px);overflow:hidden}
.dashboard-mode .vignette{background:linear-gradient(0deg,#08132240,transparent 48%),radial-gradient(ellipse at center,transparent 35%,#08132044 95%)}
.dashboard-mode .topbar{height:74px;padding:0 var(--edge);display:grid;grid-template-columns:1fr auto 1fr;background:linear-gradient(180deg,#0d1c2eea,#0e1e2bcc);border-bottom:1px solid #92c9dc24;z-index:5}
.dashboard-mode .brand-title{font-size:18px;letter-spacing:1px}.dashboard-mode .brand-sub{font-size:8px;letter-spacing:1.4px}.dashboard-mode .brand-mark{width:31px;height:31px}
.dashboard-mode .page-name{text-align:center;display:block}.dashboard-mode .page-name h1{font-size:24px;font-weight:500;letter-spacing:5px;margin:0 0 5px}.dashboard-mode .page-name>div>span{font:9px Oxanium,monospace;letter-spacing:2.5px;color:#7fa4ba}
.dashboard-mode .header-right{justify-content:flex-end}.dashboard-clock{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.dashboard-mode #clock{font:23px Oxanium,monospace;letter-spacing:2px;color:#c5e3ee}.dashboard-clock #dashboard-date{font-size:10px;color:#7d9ab0}
.dashboard-context{top:84px;left:var(--edge);right:var(--edge);height:27px;display:flex;justify-content:space-between;align-items:center;gap:15px;z-index:4}
#dashboard-period{display:flex;background:#12283b;border:1px solid #88b9cc28;border-radius:5px;padding:3px;gap:4px}#dashboard-period button{padding:4px 17px;border-radius:3px;font-size:10px;color:#829fb6;transition:.2s}#dashboard-period button.active{color:#d6f1f5;background:#407f962a;box-shadow:inset 0 0 0 1px #82d4de38}
.dashboard-source{font-size:10px;color:#7e9cae;letter-spacing:.5px}.dashboard-source i{display:inline-block;width:5px;height:5px;margin-right:6px;border-radius:50%;background:#77c7cd;box-shadow:0 0 10px #77c7cd6a}.dashboard-source span{color:#536f83}
.campus-field{font-size:10px;color:#678da3;display:flex;align-items:center;gap:9px}.campus-field select{font:inherit;color:#bcdae9;background:#12273b;border:1px solid #7fb0c232;border-radius:4px;padding:5px 11px;min-width:116px}.campus-field option{background:#13293b}
.dashboard-data{inset:var(--data-top) var(--edge) calc(var(--footer-h) + var(--gap));display:grid;grid-template-columns:var(--side-w) minmax(0,1fr) var(--side-w);grid-template-rows:minmax(0,1fr) var(--bottom-h);gap:var(--gap);pointer-events:none;z-index:3}
.dashboard-data>*{pointer-events:auto}.dashboard-column{min-width:0;min-height:0;display:grid;gap:var(--gap)}.dashboard-left{grid-column:1;grid-row:1;grid-template-rows:1.16fr 1.35fr 1.08fr 1fr}.dashboard-right{grid-column:3;grid-row:1;grid-template-rows:1.08fr 1.14fr 1.6fr .75fr}.dashboard-bottom{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:1fr 1.2fr 1.3fr;gap:var(--gap);min-height:0}
.scene-toolbar{left:calc(var(--side-w) + var(--edge) + var(--gap));right:calc(var(--side-w) + var(--edge) + var(--gap));top:121px;display:flex;align-items:center;justify-content:space-between;gap:14px;z-index:4;height:46px}
.scene-title{display:flex;align-items:center;gap:13px;flex-shrink:0}.scene-title>span{font:36px/1 Oxanium,monospace;color:#b6d8e4;letter-spacing:-1px}.scene-title small{font-size:13px;margin-left:4px;color:#6c96ac}.scene-title h2{font-size:13px;font-weight:500;letter-spacing:1px;margin:0 0 6px;color:#c4dce6}.scene-title p{font-size:9px;margin:0;color:#7896aa}
.scene-actions{display:flex;align-items:center;gap:7px}.scene-control{border:1px solid #86b7cc30;padding:8px 10px;color:#8cb4c8;background:#10263899;border-radius:4px;font-size:10px;white-space:nowrap}.scene-control:hover,.scene-control[aria-expanded=true],.scene-control[aria-pressed=true]{color:#c5eee9;background:#2a616e45;border-color:#8ed8d55c}
.dashboard-mode .space-picker{position:static;width:185px;display:block}.dashboard-mode .space-picker label{display:none}.dashboard-mode .space-picker select{width:100%;padding:8px;font-size:10px;background:#102638cc}
.dashboard-mode .scene-caption{top:187px;left:calc(var(--side-w) + var(--edge) + var(--gap) + 12px);pointer-events:none}.dashboard-mode .scene-caption div{font-size:10px;margin-top:5px}.dashboard-mode .caption-kicker{font:8px Oxanium,monospace;letter-spacing:2px}
.dashboard-mode .left-rail{left:calc(var(--side-w) + var(--edge) + var(--gap));top:179px;bottom:auto;width:222px;max-height:calc(100dvh - var(--bottom-h) - var(--footer-h) - 211px);overflow:auto;padding:17px;background:linear-gradient(135deg,#183043f5,#0f2337f5);border:1px solid #82b3c24d;border-radius:8px;z-index:7;box-shadow:0 15px 40px #06121ca0;backdrop-filter:blur(14px)}
.dashboard-mode .left-rail[hidden],.dashboard-mode .room-panel[hidden]{display:none}.dashboard-mode .floor-number{font-size:35px;letter-spacing:-2px;margin-top:9px}.dashboard-mode .floor-number span{font-size:16px}.dashboard-mode .floor-heading h1{font-size:12px;margin:9px 0 6px}.dashboard-mode .floor-heading p{font-size:9px}.dashboard-mode .eyebrow{font-size:7px;letter-spacing:1.5px}.dashboard-mode .thin-rule{margin:14px 0}.dashboard-mode .metrics{gap:7px;margin-bottom:18px}.dashboard-mode .metrics strong{font:20px Oxanium,monospace}.dashboard-mode .metrics span{font-size:8px;white-space:nowrap}.dashboard-mode .zone-button{padding:8px 5px}.dashboard-mode .zone-name{font-size:10px}.dashboard-mode .view-section{margin-top:18px}.dashboard-mode .view-button{padding:8px 5px;font-size:9px}.dashboard-mode .source-note{display:block;margin-top:15px;padding-top:0;font-size:8px}.dashboard-mode .microcopy{font-size:8px;margin:7px 0 0}.dashboard-mode .section-heading{margin-bottom:8px}
.dashboard-mode .room-panel{top:179px;right:calc(var(--side-w) + var(--edge) + var(--gap));width:252px;padding:20px;z-index:7;background:linear-gradient(135deg,#1c3446f5,#11273af5);max-height:calc(100dvh - var(--bottom-h) - var(--footer-h) - 211px);overflow:auto;box-shadow:0 15px 40px #06121c90}.dashboard-mode .room-panel.is-selected{background:linear-gradient(135deg,#204747f5,#132e3cf5)}.dashboard-mode .room-number{font:38px Oxanium,monospace;letter-spacing:0;margin-top:20px}.dashboard-mode .room-fields{display:block;margin-top:15px;padding-top:13px}.dashboard-mode .room-panel p{font-size:10px;min-height:0}.dashboard-mode .room-panel .section-heading{padding-right:9px}.details-close{position:absolute;right:8px;top:5px;color:#8ab3c6;font-size:20px;padding:3px 6px}
.dashboard-mode .north-marker{right:calc(var(--side-w) + var(--edge) + var(--gap) + 20px);bottom:calc(var(--bottom-h) + var(--footer-h) + 80px);pointer-events:none}.dashboard-mode .north-marker div{width:32px;height:32px;font-size:24px;line-height:28px}.dashboard-mode .north-marker span{font-size:7px}
.dashboard-mode .model-hint{bottom:calc(var(--bottom-h) + var(--footer-h) + 61px);font-size:9px;color:#7b9db1}.dashboard-mode .selection-status{bottom:calc(var(--bottom-h) + var(--footer-h) + 25px);font-size:9px;padding:8px 13px;max-width:calc(100vw - 2 * var(--side-w) - 60px);z-index:4}.dashboard-mode .selection-status b{font-size:9px}.dashboard-mode .room-hover-tip{z-index:8}
.dashboard-mode .bottom-bar{height:var(--footer-h);padding:0 var(--edge);gap:20px;z-index:9;overflow-x:auto;background:linear-gradient(#101f2eee,#0a1725fa)}.dashboard-mode .toolbar-left,.dashboard-mode .toolbar-right{flex-shrink:0;gap:9px}.dashboard-mode .toolbar-title{display:block;font-size:9px;margin-right:6px}.dashboard-mode .tool-button{padding:8px 10px}.dashboard-mode .tool-button span{font-size:9px;display:inline;margin-left:5px}.dashboard-mode .height-control{display:flex;margin-left:12px}.dashboard-mode .height-control>span{display:inline}.dashboard-mode .height-control input{width:98px}.dashboard-mode .icon-button{font-size:19px;padding:7px}.dashboard-mode .export-button{font-size:10px;padding:9px 13px}.dashboard-mode .export-button span{display:inline}.dashboard-mode #toast{bottom:82px}
.dashboard-mode.scene-only .dashboard-data,.dashboard-mode.scene-only .dashboard-context{display:none}.dashboard-mode.scene-only #stage{inset:171px 25px 118px}.dashboard-mode.scene-only .scene-toolbar{left:28px;right:28px;top:98px}.dashboard-mode.scene-only .scene-caption{left:40px;top:155px}.dashboard-mode.scene-only .left-rail{left:28px;top:159px;max-height:calc(100dvh - 251px)}.dashboard-mode.scene-only .room-panel{right:28px;top:159px;max-height:calc(100dvh - 251px)}.dashboard-mode.scene-only .selection-status{bottom:84px;max-width:calc(100vw - 60px)}.dashboard-mode.scene-only .model-hint{bottom:127px}.dashboard-mode.scene-only .north-marker{right:45px;bottom:157px}
@media(min-width:2300px){.dashboard-mode{--side-w:400px;--bottom-h:255px;--edge:26px;--gap:18px}.dashboard-mode .op-card-header h2{font-size:15px}.dashboard-mode .op-card-body{font-size:12px}.dashboard-mode .scene-title h2{font-size:16px}.dashboard-mode .scene-control{font-size:12px;padding:10px 12px}}
@media(max-width:1600px){.dashboard-mode{--side-w:300px;--edge:16px;--gap:12px}.scene-title>span{font-size:29px}.scene-title{gap:8px}.scene-title h2{font-size:12px}.dashboard-mode .space-picker{width:150px}.scene-actions{gap:5px}.scene-control{font-size:9px;padding:8px 7px}}
@media(max-width:1399px),(max-height:849px){
 .dashboard-mode:not(.embed){overflow:auto}.dashboard-mode:not(.embed) #app{height:auto;min-height:100dvh;padding-bottom:80px}
 .dashboard-mode #stage{left:16px;right:16px;top:176px;bottom:auto;height:410px}.dashboard-mode .dashboard-data{position:relative;inset:auto;padding:620px 16px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto;gap:12px}
 .dashboard-mode .dashboard-left{grid-column:1;grid-row:1;grid-template-rows:165px 212px 169px 160px}.dashboard-mode .dashboard-right{grid-column:2;grid-row:1;grid-template-rows:180px 180px 210px 136px}.dashboard-mode .dashboard-bottom{grid-row:2;grid-column:1/-1;grid-template-columns:1fr 1fr;grid-auto-rows:230px}.dashboard-mode .op-card-devices{grid-column:1/-1}
 .dashboard-mode .scene-toolbar{left:16px;right:16px;top:124px}.dashboard-mode .scene-caption{left:29px;top:188px}.dashboard-mode .north-marker{right:35px;bottom:auto;top:520px}.dashboard-mode .selection-status{top:578px;bottom:auto;max-width:calc(100vw - 32px)}.dashboard-mode .model-hint{top:552px;bottom:auto}.dashboard-mode .left-rail{left:16px;top:177px;max-height:390px}.dashboard-mode .room-panel{right:16px;top:177px;max-height:390px}.dashboard-mode .bottom-bar{position:fixed;bottom:0}.dashboard-mode #toast{position:fixed}
 .dashboard-mode.scene-only #app{height:100dvh;padding-bottom:0;min-height:580px}.dashboard-mode.scene-only #stage{top:174px;left:16px;right:16px;bottom:120px;height:auto}.dashboard-mode.scene-only .selection-status{top:auto;bottom:84px}.dashboard-mode.scene-only .model-hint{top:auto;bottom:130px}.dashboard-mode.scene-only .north-marker{top:auto;bottom:165px}
}
@media(max-width:760px){
 .dashboard-mode .topbar{height:75px;grid-template-columns:1fr auto}.dashboard-mode .brand-title{font-size:15px}.dashboard-mode .brand-sub{font-size:6px}.dashboard-mode .brand-mark{width:25px;height:25px}.dashboard-mode .page-name{display:none}.dashboard-mode #clock{font-size:18px}.dashboard-clock #dashboard-date{font-size:8px}.dashboard-mode .dashboard-context{left:16px;right:16px;gap:6px}.dashboard-source{display:none}#dashboard-period button{padding:4px 12px}.campus-field{font-size:9px;gap:5px}
 .dashboard-mode .scene-toolbar{height:auto;gap:7px;align-items:flex-start}.scene-title>span{display:none}.scene-title h2{font-size:11px;margin-top:5px}.scene-title p{font-size:8px;white-space:nowrap}.scene-actions{flex-wrap:wrap;justify-content:flex-end;max-width:300px}.dashboard-mode .space-picker{width:150px}.scene-control{padding:7px 6px;font-size:8px}
 .dashboard-mode #stage{top:208px;height:330px}.dashboard-mode .scene-caption{top:214px}.dashboard-mode .dashboard-data{padding-top:586px;grid-template-columns:1fr 1fr;gap:10px}.dashboard-mode .dashboard-column{gap:10px}.dashboard-mode .dashboard-left{grid-template-rows:190px 240px 190px 182px}.dashboard-mode .dashboard-right{grid-template-rows:207px 190px 255px 150px}.dashboard-mode .dashboard-bottom{grid-template-columns:1fr;grid-auto-rows:auto;gap:10px}.dashboard-mode .dashboard-bottom .op-card{min-height:180px}.dashboard-mode .op-card-devices{grid-column:1}.dashboard-mode .model-hint{top:500px;font-size:8px;letter-spacing:0;gap:6px}.dashboard-mode .selection-status{top:525px}.dashboard-mode .north-marker{display:none}.dashboard-mode .room-panel{top:204px;right:16px;width:228px;max-height:335px}.dashboard-mode .left-rail{top:204px;width:211px;max-height:335px}.dashboard-mode .toolbar-title{display:none}.dashboard-mode .height-control{margin-left:5px}.dashboard-mode .toolbar-left,.dashboard-mode .toolbar-right{gap:6px}.dashboard-mode .scene-only .scene-toolbar{top:103px}.dashboard-mode.scene-only .room-panel,.dashboard-mode.scene-only .left-rail{top:171px}
}
@media(max-width:700px){.dashboard-mode .dashboard-data{grid-template-columns:1fr}.dashboard-mode .dashboard-left,.dashboard-mode .dashboard-right{grid-column:1;grid-row:auto;grid-template-rows:auto}.dashboard-mode .dashboard-column .op-card{min-height:172px}.dashboard-mode .op-card-rank{min-height:216px!important}.dashboard-mode .op-card-warnings{min-height:230px!important}.dashboard-mode .dashboard-bottom{grid-row:auto}.dashboard-mode .scene-toolbar{flex-direction:column}.scene-actions{max-width:none;justify-content:flex-start}.dashboard-mode #stage{top:221px}.dashboard-mode .scene-caption{top:228px}.dashboard-clock #dashboard-date{max-width:130px}.campus-field>select{min-width:96px;padding:5px 6px}#dashboard-period button{padding:4px 9px}}
body.embed{overflow:hidden!important}body.embed #app{height:100dvh!important;min-height:0!important;padding:0!important;background:transparent!important}body.embed #stage{inset:0!important;height:100%!important}body.embed .ui,body.embed .vignette{display:none!important}
