:root{color-scheme:dark;--bg:#081018;--surface:#101b25;--surface-2:#152431;--surface-3:#1a2c3a;--line:#294150;--text:#eef5f7;--muted:#91a7b2;--accent:#58d6c2;--accent-2:#36a994;--danger:#ff6b72;--amber:#ffb951;--red:#f26068;--green:#53c98b;--critical:#b57aff;--shadow:0 18px 50px rgba(0,0,0,.28);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100vh}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}a{color:inherit}.topbar{height:68px;padding:0 clamp(18px,3vw,44px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:rgba(8,16,24,.94);position:sticky;top:0;z-index:40;backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none}.brand-mark{display:grid;place-items:center;min-width:45px;height:35px;padding:0 7px;border-radius:10px;background:var(--accent);color:#082018;font-size:.72rem;font-weight:900;letter-spacing:-.02em}.brand strong,.brand small{display:block}.brand small{font-size:.72rem;color:var(--muted);margin-top:2px}.topbar nav{display:flex;gap:6px}.topbar nav a{padding:9px 12px;text-decoration:none;color:var(--muted);border-radius:8px}.topbar nav a:hover,.topbar nav a:focus-visible{background:var(--surface-2);color:var(--text)}main{min-height:calc(100vh - 68px)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.7rem,3vw,2.6rem);letter-spacing:-.04em;margin-bottom:0}h2{font-size:1.05rem}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.68rem;font-weight:800;color:var(--accent);margin-bottom:7px}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:22px}.heading-actions,.row-actions,.form-actions{display:flex;gap:10px;align-items:center}.content-page,.narrow-page,.viewer-page{padding:34px clamp(18px,4vw,58px)}.narrow-page{max-width:780px;margin:auto}.button,.icon-button,.mode-button,.zoom-readout,.map-toolbar button,.editor-toolbar button{border:1px solid var(--line);color:var(--text);background:var(--surface-2);padding:9px 13px;border-radius:9px;text-decoration:none;cursor:pointer;font-weight:700}.button:hover,.icon-button:hover,.mode-button:hover,.map-toolbar button:hover{border-color:#4b6b7c;background:var(--surface-3)}.button.primary,.mode-button.active{background:var(--accent);border-color:var(--accent);color:#08221c}.button.danger{color:#ffb1b5;border-color:#713c43}.button:disabled{opacity:.45;cursor:not-allowed}.icon-button{width:38px;padding:8px}.field{display:flex;flex-direction:column;gap:7px;font-size:.78rem;color:var(--muted);font-weight:700}.field input,.field select,.field textarea,.filters input,.filters select,.upload-form input,.lookup-form input{width:100%;border:1px solid var(--line);background:#0b1620;color:var(--text);border-radius:8px;padding:10px 11px;outline:none}.field input:focus,.field select:focus,.field textarea:focus,.filters input:focus,.filters select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(88,214,194,.12)}.field.compact{min-width:230px}.check-field{display:flex;gap:9px;align-items:center;color:var(--muted);font-size:.85rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field.wide{grid-column:1/-1}.form-card{padding:24px;border:1px solid var(--line);background:var(--surface);border-radius:14px;display:grid;gap:16px}.form-actions{justify-content:flex-end;margin-top:12px}.field-help,.muted{color:var(--muted);font-size:.82rem}.flash{padding:12px 30px;background:var(--surface-2);border-bottom:1px solid var(--line)}.flash-error{color:#ffb7bb}.toast-region{position:fixed;right:20px;bottom:20px;z-index:100;display:grid;gap:8px}.toast{padding:11px 15px;background:var(--surface-3);border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow)}.toast.error{border-color:var(--danger)}.empty-state{padding:50px;text-align:center;border:1px dashed var(--line);border-radius:14px;background:var(--surface)}
.live-page{padding:28px clamp(14px,3vw,42px) 40px}.metric-grid{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:10px;margin-bottom:16px}.metric{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:13px 15px}.metric span{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.metric strong{font-size:1.35rem;display:block;margin-top:4px}.live-workspace{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(330px,.7fr);gap:14px;min-height:570px}.map-card,.issues-card,.completed-strip{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}.map-toolbar{height:50px;display:flex;justify-content:space-between;align-items:center;padding:0 14px;border-bottom:1px solid var(--line);font-weight:700}.map-stage{min-height:500px;position:relative;overflow:hidden;background-color:#0b151d}.map-stage svg{width:100%;height:100%;position:absolute;inset:0;user-select:none;touch-action:none}.map-legend{display:flex;gap:15px;padding:10px 14px;color:var(--muted);font-size:.75rem;border-top:1px solid var(--line)}.rag.green{color:var(--green)}.rag.amber{color:var(--amber)}.rag.red{color:var(--red)}.rag.critical{color:var(--critical)}.issues-card{display:flex;flex-direction:column}.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--line)}.panel-heading h2{margin:0}.count-pill{min-width:28px;text-align:center;padding:4px 8px;border-radius:99px;background:var(--surface-3);color:var(--accent);font-weight:800}.filters{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:12px;border-bottom:1px solid var(--line)}.filters input{grid-column:1/-1}.issue-list{overflow:auto;max-height:470px}.issue-item{width:100%;display:grid;grid-template-columns:8px 1fr;gap:11px;text-align:left;padding:14px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer}.issue-item:hover,.issue-item:focus-visible{background:var(--surface-2)}.severity-bar{border-radius:9px;background:var(--amber)}.severity-bar.Red{background:var(--red)}.severity-bar.Critical{background:var(--critical)}.severity-bar.Green{background:var(--green)}.issue-ref,.issue-meta{font-size:.72rem;color:var(--muted)}.issue-title{font-weight:780;margin:3px 0}.completed-strip{margin-top:14px;padding:15px 17px;display:grid;grid-template-columns:180px 1fr;align-items:center}.completed-strip h2{margin:0}.completed-list{display:flex;gap:9px;overflow:auto}.completed-item{min-width:210px;padding:10px 12px;background:var(--surface-2);border-radius:9px;font-size:.8rem}.school-alerts{margin-bottom:14px;padding:13px 16px;border:1px solid var(--red);background:rgba(242,96,104,.1);border-radius:12px}.detail-drawer{position:fixed;z-index:60;right:0;top:68px;bottom:0;width:min(520px,100vw);background:var(--surface);box-shadow:-20px 0 50px rgba(0,0,0,.45);border-left:1px solid var(--line);padding:24px;overflow:auto;transform:translateX(105%);transition:transform .22s ease}.detail-drawer.open{transform:none}.drawer-close{position:absolute;right:16px;top:14px;border:0;background:none;color:var(--muted);font-size:1.8rem;cursor:pointer}.detail-section{border-top:1px solid var(--line);padding-top:16px;margin-top:18px}.detail-row{display:flex;justify-content:space-between;gap:16px;margin:8px 0;color:var(--muted)}.detail-row strong{color:var(--text)}.update-item{padding:11px 0;border-bottom:1px solid var(--line)}.update-item.system{color:var(--muted);font-size:.82rem}.attachment-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.attachment-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px}.inline-form{display:flex;gap:8px;margin-top:10px}.inline-form input,.inline-form textarea,.inline-form select{min-width:0;flex:1}.modal{width:min(720px,calc(100vw - 24px));border:1px solid var(--line);border-radius:15px;background:var(--surface);color:var(--text);padding:0;box-shadow:var(--shadow)}.modal::backdrop{background:rgba(2,7,11,.7);backdrop-filter:blur(3px)}.modal form{padding:22px}.modal-heading{display:flex;justify-content:space-between}.duplicate-warning{padding:12px;margin-bottom:14px;border:1px solid var(--amber);border-radius:9px;background:rgba(255,185,81,.09)}
.viewer-layout{display:grid;grid-template-columns:1fr 340px;border:1px solid var(--line);border-radius:14px;overflow:hidden;min-height:650px}.viewer-layout .map-stage{min-height:650px}.viewer-details{background:var(--surface);border-left:1px solid var(--line);padding:22px}.card-list{display:grid;gap:12px}.map-list-card{display:flex;justify-content:space-between;align-items:center;padding:19px 20px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.map-list-card h2{margin-bottom:5px}.map-list-card p{color:var(--muted);margin-bottom:6px}.map-list-card small{color:var(--muted)}.map-list-card.archived{opacity:.55}.notice{padding:12px 15px;background:var(--surface);border:1px solid var(--line);border-radius:10px;color:var(--muted)}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}.settings-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:17px}.settings-card ul{padding:0;list-style:none;min-height:100px}.settings-card li{padding:7px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.lookup-form{display:flex;gap:7px}.lookup-form input{min-width:0}
.room-shape{stroke:#7d9caa;stroke-width:2;vector-effect:non-scaling-stroke;fill:rgba(50,96,111,.34);transition:fill .2s,stroke .2s,opacity .2s}.room{cursor:pointer}.room:hover .room-shape,.room.selected .room-shape{stroke:var(--accent);fill:rgba(88,214,194,.23)}.room.focused .room-shape{stroke:#fff;stroke-width:4}.rooms-focused .room:not(.focused){opacity:.32}.room[data-rag="Amber"] .room-shape{fill:rgba(255,185,81,.28)}.room[data-rag="Red"] .room-shape{fill:rgba(242,96,104,.32)}.room[data-rag="Critical"] .room-shape{fill:rgba(181,122,255,.4)}.room-label{fill:#f5fbfd;font-size:20px;font-weight:800;text-anchor:middle;dominant-baseline:middle;pointer-events:auto;text-shadow:0 1px 3px #000}.background-image.load-error{opacity:.16!important}.empty-list{padding:20px;color:var(--muted);text-align:center}
.room-wifi-overlay{display:none;pointer-events:none;fill:rgba(255,38,50,.78);stroke:#fff;stroke-width:3;vector-effect:non-scaling-stroke}.room[data-wifi-state="offline"] .room-wifi-overlay{display:block;animation:room-wifi-offline 1.65s ease-in-out infinite}.effects-off .room[data-wifi-state="offline"] .room-wifi-overlay{animation:none;opacity:.55}.wifi-state.online{color:var(--green)}.wifi-state.offline{color:#ff8d93}.wifi-state.unknown,.wifi-state.unassigned{color:var(--muted)}@keyframes room-wifi-offline{0%,100%{opacity:.25;filter:drop-shadow(0 0 1px #ff3540)}50%{opacity:.9;filter:drop-shadow(0 0 10px #ff3540)}}
@media(max-width:1000px){.metric-grid{grid-template-columns:repeat(3,1fr)}.live-workspace{grid-template-columns:1fr}.issue-list{max-height:500px}.map-stage{min-height:460px}.topbar nav a:nth-child(1){display:none}.viewer-layout{grid-template-columns:1fr}.viewer-details{border-left:0;border-top:1px solid var(--line)}}@media(max-width:650px){.topbar{height:auto;min-height:62px;padding:10px 14px}.brand small{display:none}.topbar nav{gap:0}.topbar nav a{font-size:.76rem;padding:8px}.live-page,.content-page,.narrow-page,.viewer-page{padding:20px 12px}.page-heading{align-items:flex-start;flex-direction:column}.heading-actions{width:100%;flex-wrap:wrap}.field.compact{flex:1}.metric-grid{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:1fr}.filters input{grid-column:auto}.map-stage{min-height:390px}.completed-strip{grid-template-columns:1fr}.completed-list{margin-top:10px}.map-list-card{align-items:flex-start;flex-direction:column;gap:14px}.row-actions{flex-wrap:wrap}.form-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.viewer-layout .map-stage{min-height:480px}.map-legend{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important}}
.settings-card li{gap:8px}.settings-card .tiny-button{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:.72rem}.lookup-form select{min-width:0;background:#0b1620;color:var(--text);border:1px solid var(--line);border-radius:8px}.history-list .issue-item{opacity:.58}
.node-types-card{grid-column:1/-1}.node-type-list{display:grid;grid-template-columns:1fr;gap:8px;min-height:0!important}.settings-card .node-type-row{display:block;padding:10px;border:1px solid var(--line);border-radius:9px}.node-type-summary{display:flex;align-items:center;gap:10px}.node-type-name{min-width:0;flex:1}.node-type-name small{color:var(--muted)}.node-type-actions{display:flex;align-items:center;gap:4px}.node-icon-preview{width:38px;height:38px;flex:0 0 auto;background:#0b1620;border:1px solid var(--line);border-radius:8px;padding:4px}.node-icon-preview.large{width:56px;height:56px;align-self:end}.node-type-edit-form,.node-type-create-form{margin-top:10px;display:grid;grid-template-columns:minmax(160px,1fr) minmax(160px,1fr) auto auto;gap:10px;align-items:end}.node-type-edit-form[hidden]{display:none}.node-type-edit-form select,.node-type-create-form select{width:100%;border:1px solid var(--line);background:#0b1620;color:var(--text);border-radius:8px;padding:10px 11px}.node-type-edit-form .row-actions{align-self:end}
.room-shape,.room[data-rag="Green"] .room-shape{fill:rgba(83,201,139,.24)}
.issue-item>span:last-child{min-width:0}.issue-ref,.issue-title,.issue-meta{display:block;min-width:0;overflow-wrap:anywhere}.issue-title{margin:4px 0;line-height:1.25}
.metric-grid{grid-template-columns:repeat(4,minmax(130px,1fr))}.live-workspace{grid-template-columns:minmax(0,1.9fr) minmax(320px,.62fr)}
.advanced-filters{grid-column:1/-1;border:1px solid var(--line);border-radius:8px;background:#0b1620}.advanced-filters summary{padding:10px 11px;color:var(--muted);font-size:.82rem;font-weight:700;cursor:pointer;user-select:none}.advanced-filters[open] summary{border-bottom:1px solid var(--line)}.advanced-filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:8px}.advanced-filter-grid .check-field{padding:7px 4px}
@media(max-width:1000px){.live-workspace{grid-template-columns:1fr}}
@media(max-width:650px){.advanced-filter-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(2,1fr)}}
.live-page{padding-top:14px}.map-toolbar{height:auto;min-height:50px}.map-toolbar-actions{display:flex;align-items:center;gap:8px}.map-toolbar-actions>div{display:flex;align-items:center}
@media(max-width:650px){.map-toolbar{align-items:flex-start;gap:8px;flex-direction:column;padding-top:9px;padding-bottom:9px}.map-toolbar-actions{width:100%;justify-content:space-between}}
.issue-location-mode{min-width:0;margin:0;border:1px solid var(--line);border-radius:9px;padding:9px 11px;display:flex;align-items:center;gap:16px}.issue-location-mode legend{padding:0 5px;color:var(--muted);font-size:.78rem;font-weight:700}.issue-location-mode label{display:flex;align-items:center;gap:7px;color:var(--text);font-size:.82rem;font-weight:700}.issue-location-mode input{accent-color:var(--accent)}#issue-location-field{transition:opacity .15s}#issue-location-field.disabled{opacity:.42}#issue-location-field.disabled select{cursor:not-allowed}
.school-alert-ticker{height:38px;overflow:hidden;border-bottom:1px solid rgba(255,185,81,.55);background:#251c10;color:#fff;display:flex;align-items:center}.school-alert-ticker[hidden]{display:none}.school-alert-track{display:inline-flex;align-items:center;gap:32px;min-width:max-content;white-space:nowrap;padding-left:16px;animation:school-alert-scroll 26s linear infinite}.school-alert-message{display:inline-flex;gap:7px;align-items:center;font-size:.85rem}.school-alert-message::before{content:"⚠";color:var(--amber)}.school-alert-message strong{color:var(--amber)}.school-alert-message.Red strong{color:var(--red)}.school-alert-message.Critical strong{color:var(--critical)}.school-alert-message.Green strong{color:var(--green)}.school-alert-message span{color:#d9e2e6}.school-alert-separator{color:var(--amber)}@keyframes school-alert-scroll{from{transform:translateX(0)}to{transform:translateX(-100%)}}
@media(max-width:650px){.issue-location-mode{grid-column:1/-1;align-items:flex-start;flex-direction:column;gap:8px}.school-alert-ticker{height:34px}.school-alert-message{font-size:.78rem}}
@media(prefers-reduced-motion:reduce){.school-alert-track{animation:none!important;transform:none!important;padding-left:12px;white-space:normal;flex-wrap:wrap}}
.issue-edit-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.issue-destructive-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.close-issue-button{border-color:var(--danger);color:#ffd0d2;background:rgba(242,96,104,.1)}.close-issue-button:hover,.close-issue-button:focus-visible{background:rgba(242,96,104,.2);border-color:#ff858b}.delete-issue-button{border-color:var(--danger);background:var(--danger);color:#fff}.delete-issue-button:hover,.delete-issue-button:focus-visible{border-color:#ff858b;background:#e84e57}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.topbar{gap:18px}.brand{flex:0 0 auto}.topbar-metrics{min-width:0;margin-right:auto;display:flex;align-items:center;align-self:stretch}.topbar-metric{min-width:0;padding:0 18px;border-left:1px solid var(--line);display:flex;align-items:baseline;gap:8px;white-space:nowrap}.topbar-metric span{color:var(--muted);font-size:.65rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.topbar-metric strong{color:var(--text);font-size:1rem;font-variant-numeric:tabular-nums}.settings-nav-link{font-size:1.05rem;line-height:1}
@media(min-width:1001px){.live-workspace{min-height:calc(100dvh - 116px)}.live-workspace .map-card{display:flex;flex-direction:column}.live-workspace #live-map-stage{min-height:0;flex:1}.issues-card .issue-list{max-height:none;flex:1}}
@media(max-width:650px){.topbar{flex-wrap:nowrap;gap:5px}.topbar-metrics{flex:0 1 auto;margin:0 auto}.topbar-metric{padding:0 5px;gap:0}.topbar-metric span{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.topbar-metric strong{font-size:.88rem}.topbar nav a{font-size:.7rem;padding:6px 5px}.settings-nav-link{font-size:.9rem!important}.brand-mark{min-width:40px;height:32px;padding:0 5px;font-size:.64rem}}
.topbar-report{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 13px;border:1px solid #ff858b;border-radius:9px;background:var(--danger);color:#fff;text-decoration:none;font-weight:850;white-space:nowrap;box-shadow:0 0 0 1px rgba(255,255,255,.05)}.topbar-report:hover{background:#e84e57}.topbar-report:focus-visible{outline:3px solid #fff;outline-offset:2px}.report-icon{display:none}.room-label.label-hidden{display:none}
@media(max-width:650px){.topbar nav a:nth-child(2){display:none}.topbar-report{width:34px;height:34px;padding:0}.report-label{display:none}.report-icon{display:inline;font-size:.92rem}}
.map-layer[hidden]{display:none}.map-object{cursor:pointer}.map-path-base{vector-effect:non-scaling-stroke}.map-path-base.line-dashed{stroke-dasharray:14 9}.map-path-base.line-dotted{stroke-dasharray:1 9}.map-path-effect{pointer-events:none;vector-effect:non-scaling-stroke;stroke:currentColor;stroke-linecap:round}.map-path-object:hover .map-path-base,.map-path-object:focus-visible .map-path-base,.map-path-object.selected .map-path-base{filter:drop-shadow(0 0 4px currentColor);stroke-width:calc(var(--selected-width, 1) * 1px)}.effect-directional-pulse .map-path-effect{stroke-dasharray:14 86;animation:path-flow var(--effect-duration) var(--effect-easing) infinite}.effect-moving-dots .map-path-effect{stroke-dasharray:0 var(--effect-spacing);stroke-width:8;animation:path-flow var(--effect-duration) linear infinite}.effect-glow .map-path-effect{animation:map-glow var(--effect-duration) var(--effect-easing) infinite}.effect-reverse .map-path-effect{animation-direction:reverse}.map-node{outline:none}.map-node:hover,.map-node:focus-visible,.map-node.selected{filter:drop-shadow(0 0 7px var(--node-color))}.node-effect-ring{vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;opacity:var(--effect-intensity)}.map-node.effect-pulse .node-effect-ring{animation:node-pulse var(--effect-duration) var(--effect-easing) infinite}.map-node.effect-glow{animation:node-glow var(--effect-duration) var(--effect-easing) infinite}.map-node-label{fill:#fff;font-size:16px;font-weight:850;text-anchor:middle;dominant-baseline:hanging;paint-order:stroke;stroke:#081018;stroke-width:4px;stroke-linejoin:round;cursor:pointer}.effects-off .map-path-effect,.effects-off .node-effect-ring{display:none}.effects-off .map-node,.effects-off .map-path-base{animation:none!important;filter:none!important}@keyframes path-flow{to{stroke-dashoffset:-100}}@keyframes map-glow{0%,100%{filter:drop-shadow(0 0 1px currentColor);opacity:.35}50%{filter:drop-shadow(0 0 8px currentColor);opacity:1}}@keyframes node-pulse{0%{transform:scale(.75);opacity:var(--effect-intensity)}100%{transform:scale(1.65);opacity:0}}@keyframes node-glow{0%,100%{filter:drop-shadow(0 0 2px var(--node-color))}50%{filter:drop-shadow(0 0 12px var(--node-color))}}
.map-layer-controls{position:relative;display:inline-flex;margin-left:7px}.layers-toggle{padding:8px 10px}.layers-popover{position:absolute;z-index:12;right:0;top:calc(100% + 8px);width:230px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:var(--shadow);color:var(--text)}.layers-popover>strong{display:block;margin-bottom:8px}.viewer-layer-list{display:grid;border-top:1px solid var(--line)}.viewer-layer-option,.effects-control{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid var(--line);font-size:.82rem}.viewer-layer-option input,.effects-control input{accent-color:var(--accent)}.effects-control{margin-bottom:7px}.reset-layer-defaults{border:0;background:transparent;color:var(--muted);padding:4px;cursor:pointer;text-decoration:underline}.map-node-popover{position:absolute;z-index:9;width:210px;padding:12px;border:1px solid var(--line);border-radius:10px;background:rgba(16,27,37,.97);box-shadow:var(--shadow);transform:translateX(-50%);pointer-events:auto}.map-node-popover button{position:absolute;right:7px;top:5px;border:0;background:none;color:var(--muted);font-size:1.1rem;cursor:pointer}.map-node-popover h3{margin-bottom:5px}.map-node-popover p:last-child{margin:0;color:var(--muted);font-size:.8rem}
@media(max-width:650px){.layers-toggle{font-size:.76rem;padding:7px 8px}.layers-popover{position:fixed;right:12px;top:66px;width:min(260px,calc(100vw - 24px))}.map-node-popover{width:190px}}
@media(prefers-reduced-motion:reduce){.map-path-effect,.node-effect-ring,.map-node{animation:none!important}.map-layer{transition:none!important}}
@media(prefers-reduced-motion:reduce){.room[data-wifi-state="offline"] .room-wifi-overlay{animation:none!important;opacity:.55}}
.map-path-object:hover .map-path-base,.map-path-object:focus-visible .map-path-base,.map-path-object.selected .map-path-base{stroke-width:var(--path-width)}
.node-effect-presentation.effect-pulse .node-effect-ring{animation:node-pulse var(--effect-duration) var(--effect-easing) infinite;pointer-events:none}
@media(max-width:700px){.node-type-edit-form,.node-type-create-form{grid-template-columns:1fr}.node-icon-preview.large{align-self:auto}.node-type-summary{align-items:flex-start}.node-type-actions{flex-direction:column;align-items:flex-end}}
.wifi-monitoring-card{grid-column:1/-1}.wifi-settings-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.integration-status{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;margin:12px 0;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#0b1620;color:var(--muted);font-size:.78rem}.integration-error{color:#ffb5b9}.status-pill{display:inline-flex;align-items:center;gap:5px;width:max-content;padding:4px 8px;border:1px solid var(--line);border-radius:999px;font-size:.72rem;font-weight:850}.status-pill.online{border-color:var(--green);color:var(--green);background:rgba(83,201,139,.09)}.status-pill.offline{border-color:var(--danger);color:#ffb5b9;background:rgba(242,96,104,.12)}.status-pill.unknown,.status-pill.unassigned{color:var(--muted)}.wifi-room-search{max-width:360px;margin:12px 0}.wifi-mapping-table{border:1px solid var(--line);border-radius:10px;overflow:hidden}.wifi-mapping-header,.wifi-mapping-row{display:grid;grid-template-columns:minmax(130px,.7fr) minmax(260px,1.8fr) minmax(140px,.6fr);gap:12px;align-items:center;padding:9px 12px}.wifi-mapping-header{background:var(--surface-2);color:var(--muted);font-size:.7rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.wifi-mapping-row{border-top:1px solid var(--line)}.wifi-mapping-row>span:first-child{display:grid}.wifi-mapping-row small{display:block;color:var(--muted);font-size:.7rem}.wifi-mapping-row select{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;background:#0b1620;color:var(--text);padding:9px}.wifi-mapping-state{display:grid;gap:4px}.wifi-monitoring-card .form-actions{margin-top:12px}
@media(max-width:700px){.wifi-settings-heading{align-items:stretch;flex-direction:column}.wifi-mapping-header{display:none}.wifi-mapping-row{grid-template-columns:1fr;padding:12px}.wifi-mapping-row>span{display:grid;gap:4px}.wifi-mapping-row>span:nth-child(2)::before,.wifi-mapping-row>span:nth-child(3)::before{color:var(--muted);font-size:.65rem;font-weight:800;text-transform:uppercase}.wifi-mapping-row>span:nth-child(2)::before{content:"Access point"}.wifi-mapping-row>span:nth-child(3)::before{content:"Cached state"}}
@media(min-width:651px) and (max-width:1200px){.topbar-metric{padding:0 10px;gap:0}.topbar-metric span{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}}
.room-report-action{display:flex;justify-content:center;margin:16px 0 4px}.room-report-action .button{text-align:center}
body.fullscreen-live-shell{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}body.fullscreen-live-shell>.topbar,body.fullscreen-live-shell>.school-alert-ticker{flex:0 0 auto}body.fullscreen-live-shell>main{flex:1;min-height:0}.fullscreen-live{height:100%;min-height:0;padding:14px clamp(14px,3vw,42px);display:flex}.fullscreen-live>.live-workspace{width:100%;min-height:0;display:flex}.fullscreen-live .map-card{min-width:0;min-height:0;flex:1;display:flex;flex-direction:column}.fullscreen-live #live-map-stage{min-height:0;flex:1}
@media(max-width:650px){.fullscreen-live{padding:10px 12px}.fullscreen-live .map-toolbar{flex:0 0 auto}}
.wifi-offline-legend{color:#ff8d93}.wifi-offline-swatch{display:inline-block;color:#ff3540;animation:wifi-legend-flash 1.65s ease-in-out infinite}@keyframes wifi-legend-flash{0%,100%{opacity:.3;filter:drop-shadow(0 0 1px #ff3540)}50%{opacity:1;filter:drop-shadow(0 0 6px #ff3540)}}@media(prefers-reduced-motion:reduce){.wifi-offline-swatch{animation:none!important;opacity:1;filter:none}}
