@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/variable/pretendardvariable.css";:root{--bg:#f5f7fb;--card:#fff;--card-soft:#f8fafc;--text:#191f28;--muted:#6b7684;--border:#e5e8eb;--blue:#3182f6;--blue-soft:#e8f3ff;--green:#00a881;--green-soft:#e6f8f3;--amber:#f59e0b;--amber-soft:#fff7e6;--danger:#f04452;--danger-soft:#fff0f2;--shadow:0 18px 44px #0f172a14;--shadow-hover:0 24px 58px #0f172a21;--shadow-surface:inset 0 0 0 1px #0f172a0f, 0 1px 2px #0f172a0a, 0 18px 44px #0f172a14;--shadow-surface-hover:inset 0 0 0 1px #3182f629, 0 2px 4px #0f172a0d, 0 24px 58px #0f172a21;--image-outline:#0000001a;--ease-out:cubic-bezier(.2, 0, 0, 1);--app-content-max:1600px;--app-content-gutter:clamp(24px, 4vw, 72px);--app-nav-closed-width:72px;--app-nav-open-width:284px;--app-nav-icon-size:44px;--app-nav-row-height:48px;--app-nav-inline-gap:14px;--app-nav-shell-padding:14px;--app-nav-safe-left:max(14px, env(safe-area-inset-left));--app-nav-layout-left:calc(var(--app-nav-closed-width) + var(--app-nav-safe-left));--app-nav-layout-right:0px;--app-nav-layout-top:0px;--app-nav-layout-bottom:0px;--app-nav-layout-width:calc(100vw - var(--app-nav-layout-left) - var(--app-nav-layout-right));--app-nav-layout-height:calc(100dvh - var(--app-nav-layout-top) - var(--app-nav-layout-bottom));--radius-xl:26px;--radius-lg:22px;--radius-md:16px;--radius-sm:10px;color:var(--text);background:var(--bg);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans KR,Apple SD Gothic Neo,sans-serif}html.dashboard-scroll-locked,body.dashboard-scroll-locked{overscroll-behavior:none;height:100%;overflow:hidden}@keyframes enter-soft{0%{filter:blur(8px);opacity:0;transform:translateY(8px)}}@keyframes app-view-enter{0%{filter:blur(8px);opacity:0;transform:translateY(12px)scale(.992)}to{filter:blur();opacity:1;transform:translateY(0)scale(1)}}@keyframes app-view-first-block-enter{0%{opacity:.4;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}[data-theme=dark]{--bg:#0f141b;--card:#171d25;--card-soft:#121820;--text:#f2f5f9;--muted:#96a3b3;--border:#2b3440;--blue:#62a6ff;--blue-soft:#62a6ff24;--green:#34d399;--green-soft:#34d39924;--amber:#fbbf24;--amber-soft:#fbbf2424;--danger:#fb7185;--danger-soft:#fb718524;--shadow:0 18px 44px #00000047;--shadow-hover:0 24px 58px #0000005c;--shadow-surface:inset 0 0 0 1px #ffffff14, 0 1px 2px #0000002e, 0 18px 44px #00000047;--shadow-surface-hover:inset 0 0 0 1px #62a6ff2e, 0 2px 4px #0000003d, 0 24px 58px #0000005c;--image-outline:#ffffff1a}*{box-sizing:border-box}html{scrollbar-gutter:stable}body{background:radial-gradient(circle at top left, #3182f61f, transparent 34rem), var(--bg);min-width:320px;min-height:100vh;margin:0}.app-boot-error{min-height:100vh;color:var(--text);place-items:center;padding:24px;display:grid}.app-boot-error section{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);width:min(100%,560px);box-shadow:var(--shadow);padding:24px}.app-boot-error strong{margin-bottom:10px;font-size:1.05rem;display:block}.app-boot-error p{color:var(--danger);margin:0 0 12px;line-height:1.55}.app-boot-error small{color:var(--muted);line-height:1.5}button,select,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}main{width:min(var(--app-content-max), calc(100% - var(--app-content-gutter)));padding:18px 0 calc(110px + env(safe-area-inset-bottom));margin:0 auto}.app-header{background:color-mix(in srgb, var(--card) 88%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid color-mix(in srgb, var(--border) 86%, transparent);box-shadow:0 1px 0 color-mix(in srgb, var(--card) 70%, transparent);min-height:74px;padding:max(10px, env(safe-area-inset-top)) max(calc(var(--app-content-gutter) / 2), env(safe-area-inset-right)) 10px max(calc(var(--app-content-gutter) / 2), env(safe-area-inset-left));z-index:12;align-items:center;gap:18px;width:100%;display:flex;position:sticky;top:0}.app-header h1{letter-spacing:-.04em;font-size:clamp(20px,2vw,26px)}.brand-mark{background:linear-gradient(135deg, var(--blue), #7c3aed);box-shadow:var(--shadow-surface);color:#fff;letter-spacing:-.06em;border-radius:18px;flex:none;justify-content:center;align-items:center;width:64px;height:64px;font-size:24px;font-weight:900;display:inline-flex}.eyebrow{color:var(--blue);letter-spacing:.08em;text-transform:uppercase;margin:0 0 7px;font-size:12px;font-weight:900}h1,h2,h3,p{margin:0}h1{letter-spacing:-.06em;font-size:clamp(28px,5vw,44px);line-height:1}.app-header p:last-child,.page-hero p:last-child,.dashboard-hero p,.muted-text,.empty{color:var(--muted);text-wrap:pretty;font-size:14px;font-weight:700;line-height:1.55}.app-nav{background:color-mix(in srgb, var(--bg) 90%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid color-mix(in srgb, var(--border) 88%, transparent);box-shadow:none;padding:8px max(calc(var(--app-content-gutter) / 2), env(safe-area-inset-right)) 9px max(calc(var(--app-content-gutter) / 2), env(safe-area-inset-left));z-index:11;justify-content:center;align-items:center;gap:8px;width:100%;display:flex;position:sticky;top:74px;overflow-x:auto}.app-nav button,.app-nav a{transition-property:background-color,box-shadow,color,transform;transition-duration:.2s;transition-timing-function:var(--ease-out);color:var(--muted);background:0 0;border:0;border-radius:999px;flex:none;justify-content:center;align-items:center;gap:8px;min-width:128px;min-height:44px;padding:0 18px;font-size:15px;font-weight:900;display:inline-flex;position:relative;overflow:hidden}.app-nav button.active,.app-nav a:hover,.app-nav button:hover{background:var(--blue-soft);color:var(--blue)}.app-nav button.active,.app-nav a.active{font-size:15.5px}.app-nav button:after,.app-nav a:after{content:"";opacity:0;transform-origin:50%;height:2px;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);background:currentColor;border-radius:999px;position:absolute;bottom:7px;left:18px;right:18px;transform:scaleX(.28)}.app-nav button.active:after,.app-nav a.active:after{opacity:.9;transform:scaleX(1)}.app-nav button svg,.app-nav a svg{transition:transform .2s var(--ease-out)}.app-nav button.active svg,.app-nav a.active svg{transform:translateY(-1px)scale(1.07)}.app-main{position:relative}.app-main.management-page{width:min(1880px,100% - clamp(16px,2vw,36px))}.app-main.direction-panel-page{position:relative}.app-main.direction-panel-page>.app-view-transition{min-width:0}.tracking-side-panel.direction-outside-panel{max-height:calc(100vh - 188px);right:max(16px, calc((100vw - var(--app-content-max)) / 2 - 316px));z-index:9;width:300px;position:fixed;top:172px;overflow:hidden auto}.app-main.monitoring-page{width:min(var(--app-content-max), calc(100% - 24px))}.app-view-transition{transform-origin:top;will-change:filter, opacity, transform;animation:.28s cubic-bezier(.2,.72,.24,1) both app-view-enter}.app-view-transition>:first-child{animation:.34s cubic-bezier(.2,.72,.24,1) both app-view-first-block-enter}.card,.page-hero,.bento-card,.error-banner,.skeleton-card,.selector-card,.editor-card{background:var(--card);border-radius:var(--radius-xl);box-shadow:var(--shadow-surface);border:0}.error-banner,.skeleton-card{margin-bottom:16px;padding:16px 18px;font-weight:900}.error-banner{color:var(--danger)}.page-hero{margin-bottom:16px;padding:clamp(22px,4vw,34px)}.page-hero h2,.bento-hero-card h2,.card h2,.editor-header h2{letter-spacing:-.06em;text-wrap:balance;margin-bottom:10px;font-size:clamp(26px,4vw,42px);line-height:1.05}.card{margin-bottom:16px;padding:22px}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.button,.primary-button,.secondary-button,.file-button{border-radius:var(--radius-sm);min-height:44px;transition-property:box-shadow,opacity,transform,background-color,color;transition-duration:.18s;transition-timing-function:var(--ease-out);white-space:nowrap;border:0;justify-content:center;align-items:center;padding:0 16px;font-weight:900;display:inline-flex}.button,.primary-button{background:var(--blue);color:#fff}.secondary-button.danger{background:var(--danger-soft);color:var(--danger)}.primary-button:disabled{background:var(--border);color:var(--muted)}.file-button{cursor:pointer}.button:active,.primary-button:active,.secondary-button:active,.file-button:active,.app-nav button:active,.theme-toggle:active{transform:translateY(1px)scale(.985)}.button:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.file-button:focus-visible,.app-nav button:focus-visible,.app-nav a:focus-visible{outline:4px solid color-mix(in srgb, var(--blue) 24%, transparent);outline-offset:3px}:where(.button,.primary-button,.secondary-button,.file-button,.icon-button,.link-button,.app-nav button,.app-nav a,.theme-toggle,.route-editor-view-tabs button,.route-editor-toolbar button) svg{flex:none;width:1em;height:1em}:where(.card,.page-hero,.bento-card,.selector-card,.editor-card,.metric,.editor-metrics article,.monitoring-summary-card,.route-editor-data-panel,.table-scroll,.bento-table-wrap){transition-property:background-color,border-color,box-shadow,color,opacity,transform;transition-duration:.2s;transition-timing-function:var(--ease-out)}:where(.card,.page-hero,.bento-card,.selector-card,.editor-card,.metric,.editor-metrics article,.monitoring-summary-card,.route-editor-data-panel):focus-within{box-shadow:var(--shadow-surface-hover)}@media (hover:hover) and (pointer:fine){:where(.button,.primary-button,.secondary-button,.file-button,.icon-button,.link-button):hover:not(:disabled){box-shadow:var(--shadow-surface-hover);transform:translateY(-1px)}:where(.button,.primary-button):hover:not(:disabled){background:color-mix(in srgb, var(--blue) 88%, #fff)}:where(.secondary-button,.button.secondary,.file-button):hover:not(:disabled){background:color-mix(in srgb, var(--blue) 16%, var(--card))}:where(.app-nav button,.app-nav a,.theme-toggle):hover{transform:translateY(-1px)}:where(.bento-card,.selector-card,.metric,.editor-metrics article,.monitoring-summary-card,.route-editor-data-panel):hover{box-shadow:var(--shadow-surface-hover)}:where(.bento-card,.selector-card,.metric,.editor-metrics article,.monitoring-summary-card):hover{transform:translateY(-1px)}:where(.table-scroll,.bento-table-wrap) tbody tr:hover td{background:color-mix(in srgb, var(--blue) 6%, transparent)}}.dashboard-page{padding-top:18px}.bento-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;display:grid}.bento-card{animation:enter-soft .7s var(--ease-out) both;animation-delay:calc(var(--stagger,0) * 80ms);transform-origin:50%;padding:22px;position:relative;overflow:hidden}.bento-card:after{content:"";background:radial-gradient(circle,#3182f61f,#0000 62%);width:220px;height:220px;position:absolute;top:-90px;right:-90px}.bento-hero-card{grid-column:span 3;min-height:276px}.metric-button-grid{grid-column:span 3;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.bento-hero-card p:not(.eyebrow),.bento-side-card p:not(.eyebrow){color:var(--muted);text-wrap:pretty;max-width:520px;font-size:15px;font-weight:700;line-height:1.6}.bento-action-row,.compact-actions,.toolbar-buttons{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.bento-metric-card{appearance:none;color:var(--text);box-shadow:var(--shadow-surface);text-align:left;min-height:158px;transition-property:box-shadow,transform,background-color;transition-duration:.18s;transition-timing-function:var(--ease-out);border:0;grid-column:span 1;justify-items:start;display:grid}.bento-metric-card:hover{box-shadow:var(--shadow-surface-hover);transform:translateY(-3px)}.metric-card-label{align-items:center;gap:8px;display:inline-flex}.metric-card-label svg{color:var(--blue);flex:none;width:15px;height:15px}.bento-metric-card:active{transform:translateY(-1px)scale(.96)}.bento-metric-card:focus-visible{outline:4px solid color-mix(in srgb, var(--blue) 24%, transparent);outline-offset:3px}.bento-metric-card span,.editor-metrics span,.metric{color:var(--muted);letter-spacing:-.01em;font-size:13px;font-weight:800}.bento-metric-card span{align-items:center;gap:6px;display:inline-flex}.bento-metric-card span:before{content:"";opacity:.5;background:currentColor;border-radius:999px;width:7px;height:7px}.bento-metric-card strong,.editor-metrics strong,.metric strong{color:var(--text);letter-spacing:-.07em;font-variant-numeric:tabular-nums;margin-top:16px;font-size:clamp(34px,4vw,46px);font-weight:850;line-height:.95;display:block}.bento-metric-card small{color:var(--muted);letter-spacing:-.01em;align-self:end;margin-top:18px;font-size:12px;font-weight:750;display:block}.bento-metric-card.primary{background:linear-gradient(135deg,#3182f6 0%,#5b8cff 48%,#7c3aed 100%)}.bento-metric-card.primary span,.bento-metric-card.primary strong,.bento-metric-card.primary small{color:#fff}.bento-metric-card.neutral{background:linear-gradient(135deg, var(--card) 0%, var(--card-soft) 100%)}.bento-metric-card.blue{background:linear-gradient(135deg, var(--blue-soft) 0%, var(--card) 100%)}.bento-metric-card.purple{background:linear-gradient(135deg, #7c3aed24 0%, var(--card) 100%)}.bento-metric-card.success{background:linear-gradient(135deg, var(--green-soft) 0%, var(--card) 100%)}.bento-metric-card.warning{background:linear-gradient(135deg, var(--amber-soft) 0%, var(--card) 100%)}.bento-metric-card.blue span,.bento-metric-card.blue strong{color:var(--blue)}.bento-metric-card.purple span,.bento-metric-card.purple strong{color:#7c3aed}.bento-metric-card.success span,.bento-metric-card.success strong{color:var(--green)}.bento-metric-card.warning span,.bento-metric-card.warning strong{color:var(--amber)}.bento-wide-card{grid-column:span 4}.bento-side-card{grid-column:span 2}.bento-side-card h2{font-size:30px}.dashboard-operations-grid .dashboard-status-card{grid-column:span 2}.dashboard-operations-grid .bento-wide-card{grid-column:span 3}.dashboard-operations-grid .dashboard-alert-card{grid-column:span 1}main.dashboard-page{width:100%;padding:0}.dashboard-page .app-view-transition{height:calc(100dvh - 86px);min-height:calc(100dvh - 86px);display:grid}.dashboard-control-grid{grid-template-rows:minmax(260px,.86fr) minmax(0,1.14fr);grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;gap:clamp(12px,1.15vw,18px);min-height:calc(100dvh - 170px)}.dashboard-control-grid>.bento-card{align-content:start;gap:clamp(12px,1vw,16px);min-width:0;min-height:0;display:grid}.dashboard-control-overview{grid-column:span 4;grid-template-rows:auto auto minmax(0,1fr) auto}.dashboard-device-roster{grid-column:span 4;grid-template-rows:auto auto auto auto minmax(0,1fr);overflow:hidden}.dashboard-control-grid .dashboard-alert-card{grid-column:span 4}.dashboard-deck-card{grid-area:span 2/span 8;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.dashboard-deck-heading-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;max-width:min(760px,64%);display:flex}.dashboard-deck-mode-control button{min-width:52px}.dashboard-deck-shell{background:linear-gradient(180deg, color-mix(in srgb, var(--card-soft) 78%, transparent), transparent), var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 86%, transparent);border-radius:8px;height:100%;min-height:0;position:relative;overflow:hidden}.dashboard-deck-shell.multi-view{background:color-mix(in srgb, var(--text) 5%, var(--card-soft))}.dashboard-deck-canvas{z-index:0;width:100%;height:100%;min-height:420px;position:absolute;inset:0}.dashboard-deck-canvas canvas{outline:none;width:100%!important;height:100%!important}.dashboard-deck-viewport-frame{border:1px solid color-mix(in srgb, var(--border) 82%, transparent);pointer-events:none;z-index:2;min-width:0;min-height:0;position:absolute;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff85}.dashboard-deck-viewport-frame.active{border-color:color-mix(in srgb, var(--blue) 68%, var(--border));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 44%, transparent)}.dashboard-deck-viewport-frame strong,.dashboard-deck-viewport-frame span{background:color-mix(in srgb, var(--card) 90%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);text-overflow:ellipsis;white-space:nowrap;max-width:calc(100% - 16px);padding:5px 7px;position:absolute;left:8px;overflow:hidden}.dashboard-deck-viewport-frame strong{color:var(--text);font-size:11px;font-weight:950;top:8px}.dashboard-deck-viewport-frame span{color:var(--muted);font-size:10px;font-weight:900;bottom:8px}.dashboard-deck-state{background:color-mix(in srgb, var(--card) 90%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-surface);text-align:center;z-index:3;border-radius:8px;align-items:center;gap:6px;width:100%;max-width:min(420px,100% - 32px);padding:18px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.dashboard-deck-state strong{color:var(--text);font-size:15px;font-weight:950}.dashboard-deck-state span{color:var(--muted);font-size:13px;font-weight:800;line-height:1.45}.dashboard-deck-state.error strong{color:var(--danger)}.dashboard-deck-state.pending strong{color:var(--blue)}.dashboard-deck-empty-state{z-index:5}.dashboard-route-control-hover{background:color-mix(in srgb, var(--card) 94%, transparent);border:1px solid color-mix(in srgb, #f97316 28%, var(--border));pointer-events:none;z-index:5;border-radius:8px;gap:3px;min-width:196px;max-width:240px;padding:8px 10px;animation:.14s both route-editor-tip-enter;display:grid;position:absolute;box-shadow:0 16px 34px #0f172a2e}.dashboard-route-control-hover span{color:#c2410c;font-size:10px;font-weight:950}.dashboard-route-control-hover strong{color:var(--text);overflow-wrap:anywhere;font-size:12px;font-weight:950;line-height:1.25}.dashboard-route-control-hover small{color:var(--muted);font-size:11px;font-weight:800;line-height:1.35}.dashboard-route-control-hover-action{color:#9a3412!important;font-weight:900!important}.dashboard-route-control-hover.blocked .dashboard-route-control-hover-action,.dashboard-route-control-hover.partial .dashboard-route-control-hover-action{color:#c2410c!important}.dashboard-static-map-fallback{color:#3182f62e;z-index:1;position:absolute;inset:0;overflow:hidden}.dashboard-static-map-fallback svg{width:100%;height:100%;display:block}.dashboard-static-map-base{fill:#edf3f8}.dashboard-static-map-grid{fill:url(#dashboard-static-grid)}.dashboard-static-floorplan{opacity:.78}.dashboard-static-escape-path{fill:none;opacity:.72;stroke:#c2410c;stroke-linecap:round;stroke-linejoin:round}.dashboard-static-escape-path.blocked{opacity:.9;stroke:#9a3412;stroke-dasharray:10 8}.dashboard-static-map-fallback.route-muted .dashboard-static-escape-path{opacity:.52;stroke:#c2410c}.dashboard-static-map-fallback.route-muted .dashboard-static-escape-path.blocked{opacity:.64;stroke:#9a3412}.dashboard-static-map-fallback.route-muted .dashboard-static-route-node,.dashboard-static-map-fallback.route-muted .dashboard-static-route-node.selected,.dashboard-static-map-fallback.route-muted .dashboard-static-route-node:focus-visible{opacity:1}.dashboard-static-map-fallback.route-muted .dashboard-static-route-node-label{display:none}.dashboard-static-timeline-trace{pointer-events:none}.dashboard-static-timeline-trace-line,.dashboard-static-timeline-trace-border,.dashboard-static-timeline-trace-line{fill:none;stroke-linecap:round;stroke-linejoin:round}.dashboard-static-timeline-trace-border{stroke:#001a2680}.dashboard-static-timeline-trace-line{stroke:#00a8e2}.dashboard-static-timeline-trace.guidance .dashboard-static-timeline-trace-line{stroke:#22c55e}.dashboard-static-timeline-trace-point circle{fill:#00a8e2;stroke:#0f172a47;stroke-width:.8px}.dashboard-static-timeline-trace.guidance .dashboard-static-timeline-trace-point circle,.dashboard-static-timeline-trace.guidance .dashboard-static-timeline-trace-pointer-body{fill:#22c55e}.dashboard-static-timeline-trace-point.selected circle{fill:#00a8e2;filter:drop-shadow(0 5px 10px #00a8e238)}.dashboard-static-timeline-trace-point.deviation circle{fill:#f97316}.dashboard-static-timeline-trace-pointer{filter:none}.dashboard-static-timeline-trace-pointer-body{fill:#00a8e2;stroke:#001a2680;stroke-width:.32px}.dashboard-static-timeline-trace-pointer-core{fill:#ffffffe6;stroke:none}.dashboard-static-timeline-trace-direction{fill:#ffffffe0;stroke:none}.dashboard-static-route-node{cursor:pointer;outline:none}.dashboard-static-route-node-socket{fill:#0000;stroke:#0000;transition:filter .18s,r .18s,stroke .18s}.dashboard-static-route-node-gem,.dashboard-static-beacon-gem{stroke:none;stroke-width:0;transition:fill .18s,opacity .18s,stroke .18s}.dashboard-static-route-node.selected .dashboard-static-route-node-socket,.dashboard-static-route-node:focus-visible .dashboard-static-route-node-socket{filter:drop-shadow(0 10px 14px #0f172a3d);stroke:#0000}.dashboard-static-route-node.selected .dashboard-static-route-node-gem,.dashboard-static-route-node:focus-visible .dashboard-static-route-node-gem{filter:drop-shadow(0 8px 12px #0f172a3d);stroke:none}.dashboard-static-route-node-slash{pointer-events:none;stroke:#431407;stroke-linecap:round}.dashboard-static-route-node-label{fill:var(--text);paint-order:stroke;stroke:color-mix(in srgb, var(--card) 92%, transparent);text-anchor:middle;font-weight:950}.dashboard-static-beacon-socket{fill:#0000;stroke:#0000}.dashboard-static-device{color:var(--blue);cursor:pointer;outline:none;transition:opacity .18s}.dashboard-static-device.normal{color:var(--green)}.dashboard-static-device.waiting{color:var(--amber)}.dashboard-static-device.uncertain{color:#f97316}.dashboard-static-device.lost{color:var(--danger)}.dashboard-static-device circle{stroke:#0f172a61;transition:filter .18s,r .18s,stroke .18s,stroke-width .18s}.dashboard-static-device.dimmed{opacity:.24}.dashboard-static-device.selected circle{filter:drop-shadow(0 8px 12px #0f172a2e);stroke:#0f172a94}.dashboard-static-device-pulse{fill:none;opacity:.58;pointer-events:none;stroke:currentColor;transform-box:fill-box;transform-origin:50%;animation:1.55s ease-out infinite dashboard-device-pulse}.dashboard-static-device:focus-visible circle{stroke:#0f172aad}@keyframes dashboard-device-pulse{0%{opacity:.58;transform:scale(.72)}72%{opacity:.16}to{opacity:0;transform:scale(1.9)}}.dashboard-static-device-label{fill:var(--text);paint-order:stroke;stroke:color-mix(in srgb, var(--card) 92%, transparent);text-anchor:middle;font-weight:950}[data-theme=dark] .dashboard-static-map-base{fill:#101720}[data-theme=dark] .dashboard-static-device-label{stroke:color-mix(in srgb, var(--card) 94%, transparent)}.dashboard-deck-overlay{background:color-mix(in srgb, var(--card) 88%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-surface);z-index:2;border-radius:8px;gap:4px;max-width:min(520px,100% - 28px);padding:12px 14px;display:grid;position:absolute;bottom:14px;left:14px}.dashboard-deck-overlay strong{color:var(--text);align-items:center;gap:8px;font-size:14px;font-weight:950;display:inline-flex}.dashboard-deck-overlay span{color:var(--muted);font-size:12px;font-weight:850;line-height:1.45}.dashboard-context-line{color:var(--muted);margin-top:3px;font-size:13px;font-weight:850}.dashboard-data-strip{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;min-height:0;max-height:100%;display:grid;overflow:auto}.dashboard-data-strip span{white-space:normal;border-radius:8px;flex-direction:column;justify-content:center;align-items:flex-start;min-height:48px}.dashboard-control-actions,.dashboard-alert-actions{z-index:2;position:relative}.dashboard-control-actions .button,.dashboard-alert-actions .button,.dashboard-device-roster .device-roster-toolbar{min-width:0}.dashboard-roster-list{min-height:0;max-height:none;padding-right:4px;overflow:auto}.dashboard-alert-card{grid-template-rows:auto auto minmax(0,1fr) auto}.dashboard-alert-card p:not(.eyebrow){color:var(--muted);font-size:13px;font-weight:750;line-height:1.5}.dashboard-alert-actions{grid-template-columns:1fr;align-self:end;display:grid}@media (width>=1800px){.dashboard-deck-card{grid-column:span 8}.dashboard-control-overview,.dashboard-device-roster,.dashboard-control-grid .dashboard-alert-card{grid-column:span 4}}@media (width<=1320px){main.dashboard-page{width:100%}.dashboard-control-grid{grid-template-rows:auto}.dashboard-deck-card{grid-area:auto/1/auto/-1;min-height:min(68vh,720px)}.dashboard-control-overview,.dashboard-device-roster{grid-column:span 6}.dashboard-control-grid .dashboard-alert-card{grid-column:1/-1}.dashboard-alert-card{grid-template-columns:minmax(0,1fr) auto}.dashboard-alert-actions{grid-template-columns:repeat(4,minmax(0,auto));justify-content:end;align-self:center}}@media (width<=1020px){.dashboard-control-grid{min-height:0}.dashboard-deck-card,.dashboard-control-overview,.dashboard-device-roster,.dashboard-control-grid .dashboard-alert-card{grid-column:1/-1}.dashboard-alert-card{grid-template-columns:1fr}.dashboard-alert-actions{grid-template-columns:repeat(2,minmax(0,1fr));justify-content:stretch}.dashboard-roster-list{max-height:min(62vh,620px)}}@media (width<=720px){main.dashboard-page{width:100%}.dashboard-control-grid,.dashboard-data-strip,.dashboard-alert-actions{grid-template-columns:1fr}.dashboard-control-grid>.bento-card{grid-column:span 1}.dashboard-deck-card{min-height:560px}.dashboard-deck-heading-actions{justify-content:flex-start;width:100%}.dashboard-deck-mode-control{width:100%}.dashboard-deck-mode-control button{flex:1 1 0}}.mobile-admin-directory>header h2{margin-top:.25rem}.mobile-admin-search{gap:.5rem;margin:1rem 0;display:flex}.mobile-admin-search input{min-width:0;min-height:44px;font:inherit;border:1px solid #c8d8d1;border-radius:.75rem;flex:1;padding:0 .75rem}.mobile-admin-search button,.mobile-admin-pagination button{color:#fff;min-height:44px;font:inherit;background:#185d4b;border:0;border-radius:.75rem;padding:0 1rem;font-weight:800}.mobile-admin-account-list{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.mobile-admin-account-list>li{background:#f4f8f6;border-radius:.8rem;align-items:flex-start;gap:.75rem;padding:.85rem;display:flex}.mobile-admin-account-list>li>svg{color:#397363;margin-top:.2rem}.mobile-admin-account-list>li>div{gap:.25rem;min-width:0;display:grid}.mobile-admin-account-list strong,.mobile-admin-account-list small{overflow-wrap:anywhere}.mobile-admin-account-list small{color:#667c74}.mobile-admin-pagination{justify-content:space-between;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.mobile-admin-pagination button:disabled{opacity:.45}.dashboard-map-command-shell{width:100%;height:calc(100dvh - 86px);min-height:calc(100dvh - 86px);display:grid;position:relative}.dashboard-map-stage{background:var(--card-soft);box-shadow:none;cursor:grab;touch-action:none;border:0;border-radius:0;width:100%;height:calc(100dvh - 86px);min-height:calc(100dvh - 86px);display:block;position:relative;overflow:hidden}.dashboard-map-stage.map-dragging{cursor:grabbing}.dashboard-map-stage.map-dragging *{cursor:grabbing!important}.dashboard-map-stage .dashboard-deck-shell{box-shadow:none;border-radius:0;width:100%;height:100%;min-height:calc(100dvh - 86px)}.dashboard-map-stage .dashboard-deck-canvas{width:100%;height:100%;min-height:calc(100dvh - 86px)}.dashboard-map-reset-view{appearance:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 96%, transparent);border:1px solid color-mix(in srgb, var(--blue) 30%, var(--border));color:var(--blue);cursor:pointer;opacity:0;pointer-events:none;visibility:hidden;z-index:1400;border-radius:999px;min-height:42px;padding:0 18px;font-size:12px;font-weight:950;transition:opacity .18s,transform .18s,border-color .18s,background .18s;position:fixed;bottom:clamp(72px,8vh,110px);left:50%;transform:translate(-50%,14px);box-shadow:0 16px 34px #0f172a2e}.dashboard-map-reset-view.visible{opacity:1;pointer-events:auto;visibility:visible;transform:translate(-50%)}.dashboard-map-reset-view:hover,.dashboard-map-reset-view:focus-visible{background:color-mix(in srgb, var(--blue) 10%, var(--card));border-color:color-mix(in srgb, var(--blue) 34%, var(--border));color:var(--blue)}.dashboard-alert-launcher,.dashboard-floating-panel,.dashboard-map-footer-tray{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb, var(--card) 88%, transparent);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);z-index:5;border-radius:8px;position:absolute;box-shadow:0 16px 44px #0f172a2e}.dashboard-map-scope-selectors{grid-template-columns:repeat(2,minmax(140px,1fr));align-items:center;gap:8px;width:100%;min-width:0;max-width:none;display:grid}.dashboard-map-scope-selectors label{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;gap:5px;min-width:0;font-size:10px;font-weight:950;display:grid}.dashboard-map-scope-selectors select{background:color-mix(in srgb, var(--card-soft) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 86%, transparent);color:var(--text);border-radius:8px;width:100%;min-width:0;min-height:36px;padding:0 10px;font-size:13px;font-weight:850}.dashboard-map-scope-selectors select:disabled{color:var(--muted);cursor:not-allowed;opacity:.64}.dashboard-scope-card-heading{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.dashboard-scope-card-heading span{color:var(--muted);font-size:11px;font-weight:900}.dashboard-scope-card-heading strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:950;overflow:hidden}.dashboard-floating-panel{align-content:start;gap:clamp(10px,.8vw,14px);min-width:0;min-height:0;padding:14px;display:grid}.dashboard-map-command-shell .dashboard-control-overview{width:min(360px,100% - 24px);top:142px;left:12px}.dashboard-map-command-shell .dashboard-scope-panel{gap:10px;width:min(360px,100% - 24px);top:12px;left:12px}.dashboard-map-command-shell .dashboard-control-overview.collapsed{gap:0;width:54px;padding:8px}.dashboard-overview-panel-toggle{appearance:none;background:color-mix(in srgb, var(--card-soft) 80%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;justify-self:end;align-items:center;gap:8px;min-height:34px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.dashboard-control-overview.collapsed .dashboard-overview-panel-toggle{flex-direction:column;align-self:start;width:36px;min-height:120px;padding:10px 0}.dashboard-control-overview.collapsed .dashboard-overview-panel-toggle span{writing-mode:vertical-rl}.dashboard-overview-panel-body{gap:clamp(10px,.8vw,14px);min-width:0;display:grid}.dashboard-panel-control-stack{gap:10px;min-width:0;display:grid}.dashboard-control-panel-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;width:100%;display:grid;overflow:hidden}.dashboard-control-panel-tabs button{white-space:nowrap;border-radius:6px;justify-content:center;align-items:center;width:100%;min-width:0;min-height:34px;padding:0 8px;display:inline-flex}.dashboard-panel-control-stack .dashboard-deck-heading-actions{justify-content:flex-start;width:100%;max-width:none}.dashboard-panel-control-stack .dashboard-primary-action-group,.dashboard-panel-control-stack .dashboard-test-mode-controls{width:100%}.dashboard-panel-badge-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.dashboard-panel-header-actions{flex:none;justify-content:flex-end;align-items:center;gap:6px;display:inline-flex}.dashboard-panel-header-actions .icon-button{border:1px solid color-mix(in srgb, var(--border) 72%, transparent);border-radius:8px;width:36px;height:36px}.dashboard-panel-header-actions .dashboard-header-alert-action{background:color-mix(in srgb, var(--danger) 11%, var(--card));border-color:color-mix(in srgb, var(--danger) 30%, var(--border));color:var(--danger)}.dashboard-panel-header-actions .dashboard-header-alert-action:hover:not(:disabled),.dashboard-panel-header-actions .dashboard-header-alert-action:focus-visible:not(:disabled){background:color-mix(in srgb, var(--danger) 18%, var(--card));border-color:color-mix(in srgb, var(--danger) 48%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--danger) 18%, transparent)}.dashboard-panel-header-actions .icon-button:disabled{cursor:not-allowed;opacity:.46;transform:none}.dashboard-event-csv-control{position:relative}.dashboard-event-csv-menu{background:color-mix(in srgb, var(--card) 96%, transparent);border:1px solid color-mix(in srgb, var(--border) 76%, transparent);z-index:20;border-radius:8px;gap:6px;min-width:176px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 16px 34px #0f172a2e}.dashboard-event-csv-menu button,.dashboard-event-csv-menu label{background:color-mix(in srgb, var(--surface-3) 38%, var(--card));border:1px solid color-mix(in srgb, var(--border) 62%, transparent);color:var(--text);border-radius:7px;min-height:32px;font-size:12px;font-weight:900}.dashboard-event-csv-menu button{cursor:pointer;text-align:left;padding:0 10px}.dashboard-event-csv-menu button:hover,.dashboard-event-csv-menu button:focus-visible{background:color-mix(in srgb, var(--blue) 12%, var(--card));border-color:color-mix(in srgb, var(--blue) 34%, var(--border));color:var(--blue)}.dashboard-event-csv-date-panel{background:color-mix(in srgb, var(--blue) 5%, var(--card));border:1px solid color-mix(in srgb, var(--blue) 18%, var(--border));border-radius:8px;gap:7px;padding:8px;animation:.14s ease-out both enter-soft;display:grid}.dashboard-event-csv-menu label{gap:5px;padding:0;display:grid}.dashboard-event-csv-menu label span{color:var(--muted);font-size:11px;font-weight:900}.dashboard-event-csv-menu input{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 70%, transparent);color:var(--text);font:inherit;border-radius:6px;min-height:28px;padding:0 7px}.dashboard-alert-launcher{color:var(--danger);cursor:pointer;z-index:9;justify-content:center;align-items:center;width:48px;height:48px;padding:0;display:inline-flex;top:12px;right:12px}.dashboard-alert-launcher:disabled{color:var(--muted);cursor:not-allowed;opacity:.62}.dashboard-alert-launcher[hidden]{display:none!important}.dashboard-map-command-shell .dashboard-device-roster{width:min(380px,100% - 24px);max-height:min(58vh,620px);top:112px;bottom:auto;right:12px;overflow:hidden}.dashboard-map-command-shell .dashboard-device-timeline-card{z-index:8;width:min(460px,100% - 24px);max-height:min(58vh,620px);animation:.18s ease-out both dashboard-timeline-card-enter;top:112px;right:12px;overflow:auto}.dashboard-map-command-shell .dashboard-device-roster.expanded{grid-template-rows:auto minmax(0,1fr)}.dashboard-map-command-shell .dashboard-device-roster.collapsed{gap:0;width:54px;padding:8px;left:auto}.dashboard-roster-panel-toggle{appearance:none;background:color-mix(in srgb, var(--card-soft) 80%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;justify-self:start;align-items:center;gap:8px;min-height:34px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.dashboard-device-roster.collapsed .dashboard-roster-panel-toggle{flex-direction:column;align-self:start;width:36px;min-height:120px;padding:10px 0}.dashboard-device-roster.collapsed .dashboard-roster-panel-toggle span{writing-mode:vertical-rl}.dashboard-roster-panel-body{grid-template-rows:auto auto auto auto minmax(0,1fr);gap:clamp(10px,.8vw,14px);min-width:0;min-height:0;display:grid;overflow:hidden}@keyframes dashboard-timeline-card-enter{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.dashboard-map-command-shell .dashboard-alert-card{width:min(360px,100% - 24px);bottom:78px;left:12px}.dashboard-map-command-shell .dashboard-data-strip{grid-template-columns:repeat(2,minmax(0,1fr));max-height:180px}.dashboard-map-footer-tray{max-height:min(42vh,380px);transition:max-height .22s var(--ease-out), transform .22s var(--ease-out);z-index:8;gap:10px;padding:10px;display:grid;bottom:12px;left:12px;right:12px;overflow:hidden}.dashboard-primary-action-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.dashboard-primary-action-group .button{min-width:0;min-height:38px;padding-inline:12px}.dashboard-primary-action-group .dashboard-alert-action-button{background:color-mix(in srgb, var(--danger) 10%, var(--card));border-color:color-mix(in srgb, var(--danger) 28%, var(--border));color:var(--danger)}.dashboard-primary-action-group .dashboard-alert-action-button:not(:disabled):hover,.dashboard-primary-action-group .dashboard-alert-action-button:not(:disabled):focus-visible{background:color-mix(in srgb, var(--danger) 16%, var(--card));border-color:color-mix(in srgb, var(--danger) 46%, var(--border))}.dashboard-test-mode-controls{background:0 0;border:0;border-radius:8px;flex-wrap:nowrap;align-items:center;gap:6px;min-width:0;padding:0;display:inline-flex}.dashboard-test-mode-controls.active{background:color-mix(in srgb, var(--amber) 9%, var(--card));border:1px solid color-mix(in srgb, var(--amber) 34%, var(--border));border-color:color-mix(in srgb, var(--amber) 34%, var(--border));padding:4px}.dashboard-test-mode-controls select{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border-radius:7px;max-width:88px;min-height:34px;padding:0 7px;font-size:12px;font-weight:850}.dashboard-test-reset-button{border-radius:7px;width:34px;height:34px}.dashboard-test-mode-toggle.active,.mini-badge.simulation{background:color-mix(in srgb, var(--amber) 14%, var(--card));border-color:color-mix(in srgb, var(--amber) 36%, transparent);color:var(--amber)}.dashboard-map-footer-tray.collapsed{max-height:54px;transform:translateY(calc(100% - 54px))}.dashboard-footer-tray-handle{appearance:none;background:color-mix(in srgb, var(--card-soft) 82%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);cursor:pointer;text-align:left;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-height:34px;padding:0 12px;display:flex}.dashboard-footer-tray-handle span{font-size:12px;font-weight:950}.dashboard-footer-tray-handle strong{color:var(--muted);font-size:11px;font-weight:850}.dashboard-footer-tray-body{gap:10px;min-height:0;display:grid;overflow:hidden}.dashboard-map-footer-tray.collapsed .dashboard-footer-tray-body{opacity:0;pointer-events:none}.dashboard-saved-view-strip{scrollbar-width:thin;gap:10px;padding:0 2px 2px;display:flex;overflow-x:auto}.dashboard-saved-view-card{background:color-mix(in srgb, var(--card-soft) 86%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-left:4px solid color-mix(in srgb, var(--blue) 62%, var(--border));border-radius:8px;flex:0 0 230px;gap:8px;min-height:112px;padding:10px;display:grid}.dashboard-saved-view-card.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 42%, transparent)}.dashboard-saved-view-card.rendered{border-left-color:var(--green)}.dashboard-saved-view-main,.dashboard-saved-view-pin{appearance:none;color:var(--text);cursor:pointer;text-align:left;border:0}.dashboard-saved-view-main{background:0 0;gap:5px;min-width:0;padding:0;display:grid}.dashboard-saved-view-main span{color:var(--blue);font-size:11px;font-weight:950}.dashboard-saved-view-main strong,.dashboard-saved-view-main small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dashboard-saved-view-main strong{font-size:14px;font-weight:950}.dashboard-saved-view-main small{color:var(--muted);font-size:11px;font-weight:850}.dashboard-saved-view-pin{background:color-mix(in srgb, var(--card) 86%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-radius:8px;justify-content:center;align-self:end;align-items:center;min-height:30px;padding:0 10px;font-size:11px;font-weight:950;display:inline-flex}.dashboard-saved-view-pin[aria-pressed=true]{background:color-mix(in srgb, var(--green) 12%, var(--card));border-color:color-mix(in srgb, var(--green) 42%, var(--border));color:var(--green)}.dashboard-cctv-strip{scrollbar-width:thin;gap:10px;padding:0 2px 2px;display:flex;overflow-x:auto}.device-trace-timeline-panel{gap:12px;min-width:0;display:grid}.device-trace-timeline-heading{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.device-trace-timeline-heading>div{flex:auto;min-width:0}.dashboard-timeline-back-button{appearance:none;background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid color-mix(in srgb, var(--border) 70%, transparent);color:var(--text);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:inline-flex}.dashboard-timeline-back-button:hover,.dashboard-timeline-back-button:focus-visible{background:color-mix(in srgb, var(--blue) 12%, var(--card));border-color:color-mix(in srgb, var(--blue) 36%, var(--border));color:var(--blue)}.dashboard-timeline-back-button svg{width:13px;height:13px}.device-trace-timeline-heading h2{letter-spacing:0;margin:0;font-size:16px}.device-trace-timeline-heading span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:12px;font-weight:800;display:block;overflow:hidden}.device-trace-summary-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.device-timeline-session-picker{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.device-timeline-session-picker label{grid-template-columns:auto minmax(180px,280px);align-items:center;gap:6px;min-width:0;display:grid}.device-timeline-session-picker span{color:var(--muted);font-size:11px;font-weight:850}.device-timeline-retention-label{background:color-mix(in srgb, var(--amber) 12%, var(--card));border:1px solid color-mix(in srgb, var(--amber) 32%, var(--border));white-space:nowrap;border-radius:999px;flex:none;padding:7px 9px;line-height:1;color:var(--amber)!important}.device-timeline-session-picker select{background:color-mix(in srgb, var(--card) 88%, transparent);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);border-radius:8px;min-width:0;padding:7px 9px;font-size:12px;font-weight:850}.segmented-control.device-trace-path-mode-control{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));width:112px;display:inline-grid}.segmented-control.device-trace-path-mode-control button{min-width:0;min-height:32px;padding:0;font-size:12px}.device-trace-summary-row article{background:color-mix(in srgb, var(--card-soft) 84%, transparent);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);border-radius:8px;gap:2px;min-width:0;padding:8px 10px;display:grid}.device-trace-summary-row span{color:var(--muted);text-transform:uppercase;font-size:10px;font-weight:950}.device-trace-summary-row strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:950;overflow:hidden}.device-transition-log-card{background:color-mix(in srgb, var(--card-soft) 84%, transparent);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);border-radius:8px;gap:8px;min-width:0;padding:10px;display:grid}.device-transition-log-heading{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.device-transition-log-toggle,.device-transition-log-csv{appearance:none;cursor:pointer;border:0;align-items:center;display:inline-flex}.device-transition-log-toggle{color:var(--text);background:0 0;flex:auto;justify-content:flex-start;gap:8px;min-width:0;padding:0}.device-transition-log-toggle svg{color:var(--muted);width:11px;height:11px;transition:transform .16s}.device-transition-log-card.expanded .device-transition-log-toggle svg{transform:rotate(90deg)}.device-transition-log-toggle strong{color:var(--text);font-size:13px;font-weight:950}.device-transition-log-toggle em{color:var(--muted);font-size:11px;font-style:normal;font-weight:800}.device-transition-log-csv{background:color-mix(in srgb, var(--blue) 10%, var(--card));border:1px solid color-mix(in srgb, var(--blue) 26%, var(--border));color:var(--blue);border-radius:8px;flex:none;gap:6px;min-height:28px;padding:0 9px;font-size:11px;font-weight:950}.device-transition-log-csv:hover,.device-transition-log-csv:focus-visible{background:color-mix(in srgb, var(--blue) 16%, var(--card));border-color:color-mix(in srgb, var(--blue) 42%, var(--border))}.device-transition-log-csv svg{width:12px;height:12px}.device-transition-log-scroll{scrollbar-width:thin;max-height:190px;overflow:auto}.device-transition-log-scroll table{border-collapse:collapse;width:100%;min-width:320px}.device-transition-log-scroll th,.device-transition-log-scroll td{border-bottom:1px solid color-mix(in srgb, var(--border) 60%, transparent);text-align:left;white-space:nowrap;padding:7px 8px;font-size:11px}.device-transition-log-scroll th{color:var(--muted);text-transform:uppercase;font-weight:950}.device-transition-log-scroll td{color:var(--text);font-weight:750}.device-transition-log-scroll tbody tr{cursor:pointer;transition:background .16s}.device-transition-log-scroll tbody tr:hover,.device-transition-log-scroll tbody tr.active{background:color-mix(in srgb, var(--blue) 10%, transparent)}.device-transition-log-scroll tbody tr.pinned{background:color-mix(in srgb, var(--green) 12%, transparent)}.device-transition-log-scroll tbody tr.active td{color:var(--blue)}.device-transition-cause-badge{border-radius:999px;align-items:center;min-height:20px;padding:0 8px;font-size:10px;font-weight:950;display:inline-flex}.device-transition-cause-badge.move{background:color-mix(in srgb, var(--blue) 10%, transparent);color:var(--blue)}.device-transition-cause-badge.deviation{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.device-transition-cause-badge.synthetic{color:#8a5a00;background:#fff3cd}.device-trace-chart-card{background:color-mix(in srgb, var(--card-soft) 74%, transparent);border:1px solid color-mix(in srgb, var(--border) 68%, transparent);border-radius:8px;gap:8px;min-width:0;padding:10px;display:grid}.device-trace-range-indicator{gap:6px;min-width:0;padding:0 2px 1px;display:grid}.device-trace-range-labels{color:var(--muted);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;min-width:0;font-size:10px;font-weight:850;display:grid}.device-trace-range-labels span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.device-trace-range-labels span:last-child{text-align:right}.device-trace-range-labels strong{color:var(--muted);text-align:center;white-space:nowrap;font-size:11px;font-weight:950}.device-trace-range-labels .live{color:var(--green);font-weight:950}.device-trace-range-rail{background:color-mix(in srgb, var(--border) 68%, transparent);border-radius:999px;height:3px;position:relative}.device-trace-range-rail:before{background:color-mix(in srgb, var(--blue) 58%, var(--border));border-radius:inherit;content:"";width:var(--trace-range-progress);position:absolute;inset:0 auto 0 0}.device-trace-range-rail i{background:var(--blue);border:2px solid var(--card);box-shadow:0 3px 8px color-mix(in srgb, var(--blue) 24%, transparent);height:11px;left:var(--trace-range-progress);border-radius:999px;width:11px;position:absolute;top:50%;transform:translate(-50%,-50%)}.device-trace-bars{background:linear-gradient(180deg, color-mix(in srgb, var(--card-soft) 86%, transparent), color-mix(in srgb, var(--card) 92%, transparent));scrollbar-width:thin;border:0;border-radius:6px;grid-auto-columns:minmax(24px,1fr);grid-auto-flow:column;align-items:end;gap:0;min-height:86px;padding:10px 8px;display:grid;position:relative;overflow-x:auto}.device-trace-bars:before{background:linear-gradient(to bottom, color-mix(in srgb, var(--border) 48%, transparent) 1px, transparent 1px), linear-gradient(to right, color-mix(in srgb, var(--border) 26%, transparent) 1px, transparent 1px);border-radius:inherit;content:"";opacity:.72;pointer-events:none;background-size:100% 20px,36px 100%;position:absolute;inset:8px 10px 12px}.device-trace-bars:after{background:color-mix(in srgb, var(--blue) 30%, var(--border));content:"";pointer-events:none;height:1px;position:absolute;bottom:12px;left:10px;right:10px}.device-trace-bar{appearance:none;color:var(--muted);cursor:pointer;z-index:1;background:0 0;border:0;place-items:center;min-width:24px;padding:0;display:grid;position:relative}.device-trace-bar span{background:color-mix(in srgb, var(--blue) 44%, var(--card-soft));border:1px solid color-mix(in srgb, var(--blue) 42%, var(--border));box-shadow:none;height:var(--trace-candle-height);border-radius:3px;width:calc(100% - 6px);transition:background .16s,border-color .16s,box-shadow .16s,transform .16s;display:block}.device-trace-bar.deviation span{background:color-mix(in srgb, var(--blue) 44%, var(--card-soft));border-color:color-mix(in srgb, var(--blue) 42%, var(--border))}.device-trace-bar.synthetic span{background:repeating-linear-gradient(135deg,#d99b2b 0 4px,#ffe3a3 4px 8px);border-color:#a66b00}.device-trace-bar small{text-overflow:ellipsis;white-space:nowrap;max-width:44px;font-size:10px;font-weight:850;line-height:1.1;overflow:hidden}.device-trace-bar:hover span,.device-trace-bar:focus-visible span{background:color-mix(in srgb, var(--blue) 54%, var(--card-soft));border-color:color-mix(in srgb, var(--blue) 58%, var(--border));box-shadow:0 0 0 1px color-mix(in srgb, var(--blue) 16%, transparent);transform:translateY(-2px)}.device-trace-bar.deviation:hover span,.device-trace-bar.deviation:focus-visible span{background:color-mix(in srgb, var(--blue) 54%, var(--card-soft))}.device-trace-bar.active span{border-color:color-mix(in srgb, var(--blue) 68%, var(--border));box-shadow:0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent)}.device-trace-bar.pinned span{box-shadow:0 0 0 2px color-mix(in srgb, var(--blue) 34%, transparent), 0 8px 18px color-mix(in srgb, var(--blue) 16%, transparent)}.device-trace-bar.deviation.active span{border-color:color-mix(in srgb, var(--blue) 68%, var(--border))}.device-trace-bar.deviation.pinned span{box-shadow:0 0 0 2px color-mix(in srgb, var(--blue) 34%, transparent), 0 8px 18px color-mix(in srgb, var(--blue) 16%, transparent)}.device-trace-selected-window{background:color-mix(in srgb, var(--green) 9%, var(--card));border:1px solid color-mix(in srgb, var(--green) 28%, var(--border));border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:9px 11px;display:flex}.device-trace-selected-window span,.device-trace-selected-window strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.device-trace-selected-window span{color:var(--green);font-size:12px;font-weight:950}.device-trace-selected-window strong{color:var(--text);font-size:12px;font-weight:900}.device-trace-empty{background:color-mix(in srgb, var(--card-soft) 82%, transparent);border:1px dashed color-mix(in srgb, var(--border) 86%, transparent);color:var(--muted);text-align:center;border-radius:8px;margin:0;padding:18px;font-size:13px;font-weight:850}.dashboard-cctv-card{background:color-mix(in srgb, var(--card-soft) 88%, transparent);border:1px solid color-mix(in srgb, var(--border) 84%, transparent);border-radius:8px;flex:0 0 244px;gap:8px;min-height:178px;padding:8px;display:grid}.dashboard-cctv-card.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));border-color:color-mix(in srgb, var(--blue) 62%, var(--border));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 38%, transparent)}.dashboard-cctv-card.floor{border-left:4px solid color-mix(in srgb, var(--blue) 68%, var(--border))}.dashboard-cctv-card.rendered:not(.floor){border-left:4px solid var(--green)}.dashboard-cctv-main,.dashboard-cctv-pin{appearance:none;color:var(--text);border:0}.dashboard-cctv-main{text-align:left;background:0 0;gap:5px;min-width:0;padding:0;display:grid}.dashboard-cctv-main>span{color:var(--blue);text-transform:uppercase;font-size:11px;font-weight:950}.dashboard-cctv-main strong,.dashboard-cctv-main small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dashboard-cctv-main strong{font-size:14px;font-weight:950}.dashboard-cctv-main small{color:var(--muted);font-size:11px;font-weight:850}.dashboard-cctv-preview{aspect-ratio:16/9;border:1px solid color-mix(in srgb, var(--border) 78%, transparent);color:#94a3b84d;background:#07111f;border-radius:6px;width:100%;position:relative;overflow:hidden}.dashboard-cctv-preview:before{content:"";pointer-events:none;z-index:2;background:linear-gradient(90deg,#ffffff14,#0000 18% 82%,#ffffff0f),linear-gradient(#0f172a1a,#0f172a47);position:absolute;inset:0}.dashboard-cctv-preview svg{width:100%;height:100%;display:block}.dashboard-cctv-base{fill:#08111f}.dashboard-cctv-grid{color:#94a3b842;opacity:.78}.dashboard-cctv-floorplan{opacity:.72}.dashboard-cctv-path{fill:none;stroke:#14b8a6cc;stroke-linecap:round;stroke-linejoin:round}.dashboard-cctv-beacon{fill:#3182f6b8;stroke:#ffffffd1}.dashboard-cctv-device{stroke:#0f172ab8;transition:opacity .18s,stroke .18s,stroke-width .18s}.dashboard-cctv-device.dimmed{opacity:.28}.dashboard-cctv-device.selected{stroke:#fffffff2}.dashboard-cctv-scanline{opacity:.28;pointer-events:none;z-index:3;background:repeating-linear-gradient(#ffffff12 0 1px,#0000 1px 5px);position:absolute;inset:0}.dashboard-cctv-pin{background:color-mix(in srgb, var(--card) 86%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);cursor:pointer;text-align:center;border-radius:8px;justify-content:center;align-self:end;align-items:center;min-height:30px;padding:0 10px;font-size:11px;font-weight:950;display:inline-flex}.dashboard-cctv-pin[aria-pressed=true]{background:color-mix(in srgb, var(--green) 12%, var(--card));border-color:color-mix(in srgb, var(--green) 42%, var(--border));color:var(--green)}.dashboard-footer-empty{background:color-mix(in srgb, var(--card-soft) 80%, transparent);border:1px dashed color-mix(in srgb, var(--border) 86%, transparent);color:var(--muted);border-radius:8px;flex:none;align-items:center;min-height:58px;margin:0;padding:0 14px;font-size:12px;font-weight:850;display:inline-flex}.monitoring-position-card{--status-color:var(--blue);background:color-mix(in srgb, var(--card-soft) 84%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-left:4px solid var(--status-color);color:var(--text);text-align:left;border-radius:8px;flex:0 0 172px;grid-template-columns:10px minmax(0,1fr);align-items:center;gap:3px 8px;min-height:62px;padding:9px 10px;display:grid}.monitoring-position-card.normal{--status-color:var(--green)}.monitoring-position-card.waiting{--status-color:var(--amber)}.monitoring-position-card.uncertain{--status-color:#f97316}.monitoring-position-card.lost{--status-color:var(--danger)}.monitoring-position-card.active{background:color-mix(in srgb, var(--status-color) 18%, var(--card));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--status-color) 70%, var(--blue))}.monitoring-position-card strong,.monitoring-position-card small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.monitoring-position-card strong{font-size:12px;font-weight:950}.monitoring-position-card small{color:var(--muted);font-size:11px;font-weight:850}.monitoring-bottom-position-strip{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 86%, transparent);border:1px solid color-mix(in srgb, var(--border) 72%, transparent);scrollbar-width:thin;z-index:3;border-radius:8px;gap:8px;max-width:calc(100% - 24px);padding:8px;display:flex;position:absolute;bottom:12px;left:12px;right:12px;overflow-x:auto;box-shadow:0 12px 30px #0f172a2e}.monitoring-bottom-position-strip p{color:var(--muted);margin:0;padding:8px;font-size:12px;font-weight:850}.monitoring-bottom-position-strip .monitoring-position-card{flex-basis:164px;min-height:58px}.webgl-scene-card .scene-legend{bottom:12px}@media (width<=1320px){.dashboard-map-stage,.dashboard-map-stage .dashboard-deck-shell,.dashboard-map-stage .dashboard-deck-canvas{min-height:calc(100dvh - 86px)}.dashboard-map-command-shell .dashboard-device-roster{max-height:min(54vh,560px)}}@media (width<=940px){.dashboard-map-stage,.dashboard-map-stage .dashboard-deck-shell,.dashboard-map-stage .dashboard-deck-canvas{min-height:calc(100dvh - 86px)}.dashboard-floating-panel,.dashboard-map-footer-tray{width:auto;left:12px;right:12px}.dashboard-map-scope-selectors,.dashboard-deck-heading-actions{width:100%;min-width:0;max-width:none}.dashboard-map-command-shell .dashboard-control-overview{top:12px}.dashboard-map-command-shell .dashboard-device-roster{top:566px}.dashboard-map-command-shell .dashboard-device-timeline-card{width:auto;max-height:min(42vh,420px);top:566px;right:12px}.dashboard-map-command-shell .dashboard-alert-card{top:auto;bottom:78px}}@media (width<=520px){.dashboard-map-stage,.dashboard-map-stage .dashboard-deck-shell,.dashboard-map-stage .dashboard-deck-canvas{min-height:calc(100dvh - 86px)}.dashboard-primary-action-group,.dashboard-test-mode-controls,.dashboard-map-scope-selectors,.dashboard-map-command-shell .dashboard-data-strip,.dashboard-alert-actions{grid-template-columns:1fr;display:grid}.dashboard-map-command-shell .dashboard-control-overview,.dashboard-map-command-shell .dashboard-device-roster,.dashboard-map-command-shell .dashboard-alert-card,.dashboard-map-command-shell .dashboard-control-overview.collapsed{top:356px}.dashboard-map-command-shell .dashboard-device-roster{top:716px}.dashboard-map-command-shell .dashboard-device-timeline-card{max-height:min(34vh,360px);top:716px}.dashboard-map-command-shell .dashboard-alert-card{top:auto;bottom:78px}.monitoring-position-card{flex-basis:150px}.webgl-scene-card .scene-legend{bottom:auto}.monitoring-bottom-position-strip{position:static}}@media (width>=1180px){.app-nav button,.app-nav a{flex:1 1 0;max-width:260px}}@media (width>=1440px){.dashboard-page{padding-top:0}.bento-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:18px}.bento-card{padding:24px}.bento-hero-card{grid-column:span 4;min-height:340px}.metric-button-grid{grid-column:span 8;grid-template-columns:repeat(3,minmax(0,1fr))}.bento-metric-card{min-height:160px}.bento-wide-card{grid-column:span 8}.bento-side-card{grid-column:span 4}.dashboard-operations-grid .dashboard-status-card{grid-column:span 3}.dashboard-operations-grid .bento-wide-card{grid-column:span 7}.metric-grid,.selector-card{grid-template-columns:repeat(4,minmax(0,1fr))}th,td{padding-left:14px;padding-right:14px}}.facility-flow-strip{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0 0 16px;display:grid}.facility-step{background:var(--card);box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);color:var(--muted);cursor:pointer;text-align:left;border:0;border-radius:20px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:72px;padding:14px;transition:background .18s,box-shadow .18s,color .18s,opacity .18s,transform .18s;display:grid}.facility-step:hover:not(:disabled),.facility-step.active{background:color-mix(in srgb, var(--blue) 8%, var(--card));box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--blue) 32%, transparent);color:var(--blue)}.facility-step:active:not(:disabled){transform:translateY(1px)}.facility-step:disabled{cursor:not-allowed;opacity:.48}.facility-step-index{background:color-mix(in srgb, var(--blue) 12%, var(--card-soft));color:var(--blue);border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;font-size:12px;font-weight:950;display:inline-flex}.facility-step.complete .facility-step-index{background:var(--green-soft);color:var(--green)}.facility-step strong,.facility-step small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.facility-step strong{color:var(--text);letter-spacing:0;font-size:14px;font-weight:950}.facility-step small{color:var(--muted);margin-top:3px;font-size:12px;font-weight:850}.facility-step .material-icons,.facility-step svg{flex:none;width:18px;height:18px;font-size:20px}.facility-panel{margin-bottom:12px;padding:0;transition:box-shadow .18s,transform .18s}.facility-panel.is-open{box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--blue) 12%, transparent)}.facility-panel.is-collapsed{box-shadow:0 10px 28px #0f172a0d, inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent)}.facility-panel-header{color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:minmax(96px,auto) minmax(160px,1fr) minmax(180px,1.4fr) auto;align-items:center;gap:8px 14px;width:100%;min-height:78px;padding:20px 22px;display:grid}.facility-panel-header:hover{background:color-mix(in srgb, var(--blue) 5%, transparent)}.facility-panel-kicker,.facility-panel-summary{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900;overflow:hidden}.facility-panel-title{color:var(--text);letter-spacing:-.04em;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:950;overflow:hidden}.facility-panel-header .material-icons,.facility-panel-header>svg{background:var(--card-soft);color:var(--muted);border-radius:999px;width:36px;height:36px;padding:9px;font-size:22px}.facility-panel.is-open .facility-panel-header .material-icons,.facility-panel.is-open .facility-panel-header>svg{background:var(--blue-soft);color:var(--blue)}.facility-panel-body{border-top:1px solid color-mix(in srgb, var(--border) 70%, transparent);gap:14px;padding:18px 22px 22px;display:grid}.facility-inline-actions{justify-content:flex-end}.facility-context-row{background:color-mix(in srgb, var(--card-soft) 84%, transparent);color:var(--muted);border-radius:18px;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:10px;padding:12px 14px;display:flex}.facility-context-row span{font-size:13px;font-weight:900}.facility-context-row strong{color:var(--text)}.facility-context-copy{flex-wrap:wrap;flex:220px;align-items:center;gap:10px;min-width:0;display:flex}.facility-context-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:inline-flex}.facility-context-actions .csv-action-group{background:color-mix(in srgb, var(--card) 88%, transparent);border:1px solid var(--border);border-radius:14px;padding:4px}.detail-actions-heading{margin-bottom:0}@media (width<=980px){.facility-flow-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-panel-header{grid-template-columns:1fr auto}.facility-panel-kicker,.facility-panel-summary{grid-column:1/-1}}@media (width<=640px){.facility-flow-strip{grid-template-columns:1fr}.facility-panel-header{min-height:70px;padding:16px}.facility-panel-title{font-size:19px}.facility-panel-body{padding:14px 16px 18px}}.detail-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;display:flex}.detail-card div{gap:4px;display:grid}.detail-card strong{font-size:22px}.detail-card small{color:var(--muted);font-weight:700}.detail-label{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:900}.grid,.metric-grid,.editor-metrics{gap:14px;display:grid}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.metric,.editor-metrics article{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-surface);padding:18px}.selector-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px;padding:18px;display:grid}.floor-workspace-selector-card{margin-bottom:0}.floorplan-side-panel .floor-workspace-selector-card,.route-context-panel .floor-workspace-selector-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px}.route-context-panel .floor-workspace-selector-card{gap:8px;padding:10px}.floorplan-side-panel .floor-workspace-selector-card label,.route-context-panel .floor-workspace-selector-card label{gap:5px;min-width:0}.floorplan-side-panel .floor-workspace-selector-card select,.route-context-panel .floor-workspace-selector-card select{width:100%;min-height:36px}.selector-card p{color:var(--muted);grid-column:1/-1;font-size:13px;font-weight:800}.selector-card label,.properties-panel label{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.selector-card select,.properties-panel input,.properties-panel select{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border:0;min-height:46px;padding:0 12px}.editor-card{padding:22px}.editor-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.editor-header h2{font-size:clamp(24px,3vw,34px)}.editor-metrics{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}.editor-metrics .warning strong{color:var(--amber)}.editor-layout{align-items:start;gap:14px;display:grid}.beacon-drawer,.properties-panel,.canvas-panel,.coordinate-card{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);border:0;padding:14px}.panel-title-row,.canvas-toolbar,.selected-summary,.status-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-title-row h3,.canvas-toolbar h3,.properties-panel h3,.coordinate-card h3{margin:0;font-size:16px}.mini-badge{background:var(--blue-soft);color:var(--blue);border-radius:999px;padding:5px 8px;font-size:11px;font-weight:900}.beacon-list-button{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);text-align:left;border:0;flex-wrap:wrap;align-items:center;gap:10px;width:100%;margin-top:8px;padding:10px;display:flex}.beacon-list-button span,.floorplan-selected-beacon-dot{background:var(--blue);color:#fff;border-radius:999px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-size:12px;font-weight:900;display:inline-flex}.beacon-list-button strong{flex:90px}.beacon-list-button small{color:var(--muted);flex:0 0 100%;padding-left:46px;font-size:11px;font-weight:800}.canvas-toolbar{align-items:flex-start;margin-bottom:12px}.toolbar-buttons{justify-content:flex-end;margin-top:0}.floorplan-canvas-wrap{background:var(--card);cursor:crosshair;outline:1px solid var(--image-outline);outline-offset:-1px;overscroll-behavior:contain;border:0;border-radius:18px;justify-content:center;align-items:center;transition:background .24s,box-shadow .24s,outline-color .24s;display:flex;position:relative;overflow:hidden}.floorplan-canvas-wrap.active{outline:2px solid color-mix(in srgb, var(--blue) 48%, transparent);outline-offset:-2px}.floorplan-canvas-wrap.beacon-placement-mode{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 22%, transparent)}.floorplan-canvas-wrap.sensor-placement-mode{box-shadow:inset 0 0 0 1px #ef44443d}.floorplan-canvas-wrap.sensor-placement-mode.active{outline-color:#ef44446b}.floorplan-canvas-wrap.zoomed{cursor:zoom-in}.floorplan-canvas-wrap.can-pan{cursor:grab}.floorplan-canvas-wrap.panning{cursor:grabbing}.floorplan-canvas-wrap.can-pan .floorplan-canvas{cursor:inherit}.floorplan-canvas{touch-action:none;width:100%;height:auto;max-height:none;display:block}.canvas-empty-state{color:var(--muted);pointer-events:none;text-align:center;place-items:center;gap:4px;display:grid;position:absolute;inset:0}.canvas-empty-state strong{color:var(--text);font-size:18px}.status-row{color:var(--muted);min-height:34px;padding:10px 4px 0;font-size:12px;font-weight:900}.property-stack{gap:12px;display:grid}.selected-summary{justify-content:flex-start}.selected-summary div{gap:3px;min-width:0;display:grid}.selected-summary small{color:var(--muted);overflow-wrap:anywhere}.coordinate-card{margin-top:14px}.table-scroll,.bento-table-wrap{overflow-x:auto}.list-pagination-toolbar{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px;display:flex}.page-size-control{color:var(--muted);align-items:center;gap:8px;font-size:12px;font-weight:900;display:inline-flex}.page-size-control select{background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:999px;min-height:34px;padding:0 30px 0 12px;font-size:12px;font-weight:900}.pagination-status{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:900}.pagination-actions{align-items:center;gap:8px;display:inline-flex}.pagination-actions>span{color:var(--text);text-align:center;min-width:48px;font-size:12px;font-weight:950}.pagination-actions .button.compact{min-height:34px;padding:0 12px}table{border-collapse:collapse;width:100%;min-width:680px}th,td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:12px 10px;font-size:13px}th{color:var(--muted);font-weight:900}td{font-weight:750}.theme-toggle{background:var(--text);transition-property:box-shadow,transform,background-color,color;transition-duration:.18s;transition-timing-function:var(--ease-out);bottom:max(18px, env(safe-area-inset-bottom));box-shadow:var(--shadow-surface);color:var(--card);min-height:48px;right:max(18px, env(safe-area-inset-right));z-index:20;border:0;border-radius:999px;align-items:center;gap:8px;padding:0 16px;font-size:13px;font-weight:900;display:inline-flex;position:fixed}.app-footer{border-top:1px solid var(--border);background:var(--bg);justify-content:center;margin-top:24px;padding:16px 18px;display:flex}.footer-links{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.footer-links a{color:var(--muted);background:var(--card);border-radius:999px;padding:10px 14px;font-size:14px;font-weight:700;text-decoration:none;transition:background-color .18s,color .18s}.footer-links a:hover{background:var(--blue-soft);color:var(--blue)}.theme-toggle-icon svg{width:18px;height:18px;display:block}.theme-toggle-icon{background:color-mix(in srgb, var(--card) 22%, transparent);border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}@media (width<=1080px){.bento-hero-card,.bento-wide-card{grid-column:span 6}.bento-side-card,.metric-button-grid{grid-column:span 3}.bento-metric-card{grid-column:span 1}}@media (width<=720px){main{width:min(100% - 24px,1180px)}.app-header{align-items:flex-start;padding-left:12px;padding-right:12px}.app-nav{justify-content:flex-start;padding-left:12px;padding-right:12px;top:78px}.brand-mark{width:54px;height:54px}.bento-grid,.selector-card,.editor-metrics,.metric-grid{grid-template-columns:1fr}.bento-hero-card,.bento-wide-card,.bento-side-card,.metric-button-grid,.bento-metric-card{grid-column:span 1}.section-heading,.editor-header,.canvas-toolbar,.status-row,.detail-card{flex-direction:column;align-items:stretch}.compact-actions,.toolbar-buttons,.bento-action-row{grid-template-columns:1fr;width:100%;display:grid}.button,.primary-button,.secondary-button,.file-button{width:100%}.theme-toggle span[data-theme-label]{display:none}}.bento-card:first-child{--stagger:0}.bento-card:nth-child(2){--stagger:1}.bento-card:nth-child(3){--stagger:2}.bento-card:nth-child(4){--stagger:3}.bento-card:nth-child(5){--stagger:4}.bento-card:nth-child(6){--stagger:5}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=480px){.metric-button-grid{grid-template-columns:1fr}}.monitoring-hero{background:radial-gradient(circle at 92% 20%, #3182f62e, transparent 24rem), linear-gradient(135deg, var(--card), var(--card-soft))}.monitoring-empty{padding:28px}.monitoring-shell{gap:16px;display:grid}.monitoring-command-shell{--monitoring-half-rail-gap:7px;--monitoring-left-rail:270px;--monitoring-rail-gap:14px;--monitoring-right-rail:340px;--monitoring-scene-height:clamp(540px, calc(100vh - 230px), 780px);min-height:0;display:block;position:relative}.monitoring-command-layout{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:12px;min-width:0;display:grid}.monitoring-center-container{z-index:1;min-width:0;position:relative}.monitoring-center-panel{gap:12px;min-width:0;display:grid}.monitoring-empty-center{min-height:min(560px,100dvh - 260px)}.monitoring-side-panel{z-index:6;align-content:start;gap:12px;min-height:0;padding:14px;display:grid;position:absolute;top:0;overflow:hidden}.monitoring-context-panel{right:calc(100% + var(--monitoring-rail-gap));width:var(--monitoring-left-rail)}.monitoring-saved-views-panel{left:calc(100% + var(--monitoring-rail-gap));min-width:0;min-height:0;width:var(--monitoring-right-rail);grid-template-rows:auto minmax(0,1fr);align-content:start;gap:12px;padding:14px;display:grid;overflow:hidden}.monitoring-saved-view-list{gap:8px;min-height:0;padding-right:4px;display:grid;overflow:auto}.monitoring-saved-view-item{background:var(--card-soft);border:1px solid color-mix(in srgb, var(--border) 88%, transparent);color:var(--text);border-radius:8px;gap:8px;min-width:0;padding:8px;display:flex}.monitoring-live-view-card{gap:8px;display:grid}.monitoring-selected-area-dock{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-radius:8px;gap:12px;margin-top:12px;padding:12px;display:grid}.monitoring-selected-area-heading{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.monitoring-selected-area-heading h3{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-size:15px;line-height:1.2;overflow:hidden}.monitoring-selected-area-heading p:last-child{color:var(--muted);margin:4px 0 0;font-size:12px;font-weight:850}.monitoring-selected-area-dock .monitoring-saved-view-preview{max-height:clamp(140px,22vh,260px)}.monitoring-saved-view-item.active{background:color-mix(in srgb, var(--blue) 11%, var(--card));border-color:color-mix(in srgb, var(--blue) 44%, var(--border));box-shadow:inset 3px 0 0 var(--blue)}.monitoring-saved-view-item.rendered{border-color:color-mix(in srgb, var(--green) 36%, var(--border))}.monitoring-saved-view-main{appearance:none;color:var(--text);cursor:default;text-align:left;background:0 0;border:0;flex:auto;gap:5px;min-width:0;padding:3px 4px;display:grid}.monitoring-saved-view-caption strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:950;overflow:hidden}.monitoring-saved-view-caption span,.monitoring-saved-view-caption small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:850;overflow:hidden}.monitoring-saved-view-caption{gap:3px;min-width:0;display:grid}.monitoring-saved-view-preview{aspect-ratio:16/9;background:linear-gradient(90deg, color-mix(in srgb, var(--border) 44%, transparent) 1px, transparent 1px), linear-gradient(180deg, color-mix(in srgb, var(--border) 44%, transparent) 1px, transparent 1px), color-mix(in srgb, var(--card) 86%, var(--card-soft));border:1px solid color-mix(in srgb, var(--border) 76%, transparent);isolation:isolate;background-size:18px 18px;border-radius:8px;width:100%;min-height:110px;display:block;position:relative;overflow:hidden}.monitoring-saved-view-preview img{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;width:100%;height:100%;position:absolute}.monitoring-saved-view-preview:after{content:"";pointer-events:none;z-index:1;background:linear-gradient(#0000,#0f172a2e);position:absolute;inset:0}.monitoring-saved-view-preview-grid{position:absolute;inset:0}.monitoring-saved-view-preview-marker{z-index:2;border-radius:999px;width:8px;height:8px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffffdb,0 6px 12px #0f172a38}.monitoring-saved-view-preview-marker.beacon{opacity:.86;background:#3182f6;width:6px;height:6px}.monitoring-saved-view-preview-marker.device.normal{background:var(--green)}.monitoring-saved-view-preview-marker.device.waiting{background:var(--amber)}.monitoring-saved-view-preview-marker.device.uncertain{background:#f97316}.monitoring-saved-view-preview-marker.device.lost{background:var(--danger)}.monitoring-saved-view-live-badge{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:color-mix(in srgb, var(--card) 82%, transparent);border:1px solid color-mix(in srgb, var(--green) 36%, transparent);color:var(--green);z-index:3;border-radius:999px;align-items:center;min-height:22px;padding:0 8px;font-size:10px;font-weight:950;display:inline-flex;position:absolute;bottom:8px;right:8px}.monitoring-saved-view-toggle{appearance:none;background:var(--card);border:1px solid color-mix(in srgb, var(--border) 88%, transparent);color:var(--muted);cursor:pointer;border-radius:8px;flex:none;min-height:32px;padding:0 9px;font-size:11px;font-weight:950}.monitoring-saved-view-actions{justify-content:flex-end;gap:6px;display:flex}.monitoring-saved-view-toggle[aria-pressed=true]{background:color-mix(in srgb, var(--green) 12%, var(--card));border-color:color-mix(in srgb, var(--green) 42%, var(--border));color:var(--green)}.monitoring-saved-view-delete{appearance:none;background:color-mix(in srgb, var(--danger) 8%, var(--card));border:1px solid color-mix(in srgb, var(--danger) 24%, var(--border));color:var(--danger);cursor:pointer;border-radius:8px;min-height:30px;padding:0 9px;font-size:11px;font-weight:950}.monitoring-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.monitoring-left-panel .monitoring-summary-grid{grid-template-columns:1fr}.monitoring-summary-card,.render-profile-card{background:color-mix(in srgb, var(--card-soft) 72%, var(--card));border:1px solid color-mix(in srgb, var(--border) 86%, transparent);box-shadow:none;border-radius:8px;gap:5px;padding:11px;display:grid}.monitoring-summary-card.primary{color:#fff;background:linear-gradient(135deg,#2563eb 0%,#3182f6 58%,#14b8a6 100%);border-color:#0000}.monitoring-summary-card.warning strong{color:var(--amber)}.monitoring-summary-card.danger strong{color:var(--danger)}.monitoring-summary-card span,.render-profile-card span{color:var(--muted);font-size:12px;font-weight:900}.monitoring-summary-card.primary span,.monitoring-summary-card.primary small{color:#ffffffd6}.monitoring-summary-card strong,.render-profile-card strong{letter-spacing:0;font-size:24px;line-height:1}.monitoring-left-panel .monitoring-summary-card strong{font-size:22px}.monitoring-summary-card small,.render-profile-card small{color:var(--muted);font-size:12px;font-weight:800}.monitoring-toolbar{border-radius:8px;grid-template-columns:minmax(0,1fr);justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:14px 16px;display:grid}.monitoring-toolbar h2{letter-spacing:0;font-size:24px;line-height:1.12}.monitoring-toolbar .muted-text{color:var(--muted);max-width:760px;margin-top:4px;font-size:12px;font-weight:800}.monitoring-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;max-width:620px;display:flex}.monitoring-dashboard-publish{gap:7px}.monitoring-dashboard-panel-name{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--muted);border-radius:8px;flex:0 220px;align-items:center;gap:8px;min-width:170px;min-height:40px;padding:0 10px 0 12px;font-size:12px;font-weight:900;display:inline-flex}.monitoring-dashboard-panel-name input{color:var(--text);background:0 0;border:0;outline:none;width:100%;min-width:0;font-size:12px;font-weight:900}.monitoring-toolbar .monitoring-dashboard-panel-name{display:none}.monitoring-dashboard-save-modal{gap:16px;display:grid}.monitoring-dashboard-name-field{color:var(--muted);gap:8px;font-size:12px;font-weight:950;display:grid}.monitoring-dashboard-name-field input{background:var(--card-soft);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border-radius:8px;outline:none;width:100%;min-height:44px;padding:0 12px;font-size:14px;font-weight:900}.monitoring-dashboard-name-field input:focus{border-color:color-mix(in srgb, var(--blue) 58%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 16%, transparent)}.monitoring-area-select.active{background:var(--blue);color:#fff}.monitoring-area-clear{color:var(--blue)}.monitoring-data-strip{background:color-mix(in srgb, var(--card-soft) 84%, transparent);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px;display:flex}.monitoring-left-panel .monitoring-data-strip{background:0 0;border:0;padding:12px;display:grid}.monitoring-data-strip span{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--muted);border-radius:999px;align-items:center;gap:7px;min-height:32px;padding:0 12px;font-size:12px;font-weight:850;display:inline-flex}.monitoring-left-panel .monitoring-data-strip span{border-radius:8px;flex-direction:column;justify-content:center;align-items:flex-start;gap:3px;width:100%;min-height:44px;padding:8px 10px}.monitoring-data-strip strong{color:var(--text);font-size:11px;font-weight:950}.monitoring-data-strip span.ready{background:var(--green-soft);border-color:color-mix(in srgb, var(--green) 28%, var(--border));color:var(--green)}.monitoring-data-strip span.pending{background:var(--amber-soft);border-color:color-mix(in srgb, var(--amber) 34%, var(--border));color:var(--amber)}.segmented-control{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);border-radius:999px;padding:4px;display:inline-flex}.segmented-control button{color:var(--muted);background:0 0;border:0;border-radius:999px;min-height:38px;padding:0 14px;font-size:13px;font-weight:900}.segmented-control button.active{background:var(--blue);color:#fff}.webgl-scene-card{background:linear-gradient(180deg, color-mix(in srgb, var(--card-soft) 72%, transparent), transparent), var(--card);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);width:100%;max-width:100%;box-shadow:var(--shadow-surface);height:var(--monitoring-scene-height);z-index:1;border-radius:8px;min-height:540px;position:relative;overflow:hidden}.monitoring-scene-stage{z-index:1;position:absolute;inset:0;overflow:hidden}.monitoring-scene-stage .webgl-scene-canvas{width:100%;height:100%;min-height:0;position:absolute;inset:0}.webgl-scene-canvas.area-selecting{cursor:cell;touch-action:none}.monitoring-area-selection-box{background:color-mix(in srgb, var(--blue) 16%, transparent);border:2px solid var(--blue);pointer-events:none;z-index:2;position:absolute;box-shadow:0 0 0 1px #ffffffb8,0 14px 36px #3182f63d}.monitoring-map-controls{z-index:4;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;max-width:min(620px,100% - 24px);display:flex;position:absolute;bottom:12px;right:12px}.monitoring-map-controls .secondary-button{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 86%, transparent);border:1px solid color-mix(in srgb, var(--border) 72%, transparent);min-height:38px;padding:0 12px;box-shadow:0 12px 30px #0f172a29}.monitoring-map-controls .secondary-button:disabled{background:color-mix(in srgb, var(--card) 72%, transparent)}.monitoring-map-controls .monitoring-icon-control{width:38px;min-width:38px;padding:0}.scene-hud,.scene-legend{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 84%, transparent);border:1px solid color-mix(in srgb, var(--border) 72%, transparent);z-index:2;border-radius:8px;gap:4px;max-width:min(320px,100% - 32px);padding:9px 11px;display:grid;position:absolute;box-shadow:0 12px 30px #0f172a2e}.scene-hud strong{letter-spacing:.08em;font-size:12px;font-weight:950}.scene-hud span{color:var(--muted);font-size:11px;font-weight:850}.scene-hud.top-left{top:12px;left:12px}.scene-hud.top-right{text-align:right;top:12px;right:12px}.scene-hud.connected strong{color:var(--green)}.scene-hud.connecting strong{color:var(--amber)}.scene-hud.disconnected strong,.scene-hud.unsupported strong{color:var(--danger)}.scene-legend{flex-wrap:wrap;gap:8px;display:flex;bottom:12px;left:12px;right:auto}.scene-legend span{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:900;display:inline-flex}.legend-dot,.device-status-dot{border-radius:999px;flex:none;display:inline-flex}.legend-dot{width:10px;height:10px}.legend-dot.normal,.device-status-dot.normal,.device-status-pill.normal{background:var(--green)}.legend-dot.waiting,.device-status-dot.waiting,.device-status-pill.waiting{background:var(--amber)}.legend-dot.uncertain,.device-status-dot.uncertain,.device-status-pill.uncertain{background:#f97316}.legend-dot.lost,.device-status-dot.lost,.device-status-pill.lost{background:var(--danger)}.monitoring-side-panel{background:color-mix(in srgb, var(--card) 96%, transparent);border:1px solid color-mix(in srgb, var(--border) 88%, transparent);box-shadow:var(--shadow-surface);border-radius:8px;align-content:start;align-self:start;gap:12px;min-width:0;margin-bottom:0;padding:12px;display:grid}.monitoring-context-panel{box-shadow:none;background:0 0;border:0;padding:0;overflow:visible}.monitoring-context-panel .floor-workspace-selector-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:0;padding:10px}.monitoring-context-panel .floor-workspace-selector-card label{gap:5px;min-width:0}.monitoring-context-panel .floor-workspace-selector-card select{width:100%;min-height:36px}.monitoring-context-device-panel{gap:10px;min-height:0;max-height:min(62vh,640px);padding:12px;display:grid;overflow:hidden}.monitoring-context-device-panel .panel-title-row{gap:8px}.monitoring-context-device-panel .device-status-command-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.monitoring-context-device-panel .device-status-filter{min-height:42px;padding:7px 8px}.monitoring-context-device-panel .device-status-filter.all{grid-column:1/-1}.monitoring-context-device-panel .device-status-filter strong{font-size:18px}.monitoring-context-device-panel .device-roster-toolbar{align-items:flex-start;gap:8px;padding:9px 10px}.monitoring-context-device-panel .device-roster-toolbar small{text-align:right}.monitoring-context-device-panel .selected-device-strip{padding:10px}.monitoring-context-device-panel .selected-device-strip dl{grid-template-columns:1fr}.device-list.monitoring-context-device-list{min-height:0;max-height:min(31vh,340px);overflow:auto}.device-list.monitoring-context-device-list .muted-text{color:var(--muted);margin:0;padding:10px;font-size:12px;font-weight:850}.monitoring-viewport-panel{height:var(--monitoring-panel-height,clamp(540px, calc(100vh - 230px), 780px));max-height:var(--monitoring-panel-height,calc(100vh - 112px));overscroll-behavior:contain;top:var(--monitoring-panel-top,96px);z-index:80;width:100%;position:fixed;overflow:auto}.monitoring-viewport-left{left:calc(var(--app-nav-layout-left) + 16px);width:252px}.monitoring-viewport-right{width:380px;right:16px}.monitoring-left-panel,.monitoring-right-panel{min-height:0}.selected-device-card{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 80%, transparent);gap:8px;padding:16px;display:grid}.selected-device-card h3{letter-spacing:0;margin:0;font-size:22px}.selected-device-card p{color:var(--muted);overflow-wrap:anywhere;font-size:12px;font-weight:850}.selected-device-card dl{gap:9px;margin:8px 0 0;display:grid}.selected-device-card dl div{justify-content:space-between;align-items:center;gap:10px;display:flex}.selected-device-card dt,.selected-device-card dd{margin:0}.selected-device-card dt{color:var(--muted);font-size:12px;font-weight:850}.selected-device-card dd{text-align:right;font-size:13px;font-weight:900}.device-status-pill{color:#fff;border-radius:999px;justify-content:center;align-items:center;width:fit-content;min-height:26px;padding:0 10px;font-size:11px;font-weight:950;display:inline-flex}.device-status-pill.selected{background:color-mix(in srgb, var(--blue) 10%, var(--card));border:1px solid color-mix(in srgb, var(--blue) 28%, var(--border));color:var(--blue)}.device-list{gap:8px;max-height:420px;padding-right:2px;display:grid;overflow:auto}.device-list button{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);text-align:left;border:0;grid-template-columns:10px minmax(0,1fr);align-items:center;gap:2px 10px;min-height:58px;padding:10px 12px;display:grid}.device-list button.active{box-shadow:inset 0 0 0 2px var(--blue), var(--shadow-surface)}.device-status-dot{grid-row:span 2;width:10px;height:10px}.device-list strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.device-list small{color:var(--muted);font-size:11px;font-weight:800}.tactical-device-panel{gap:12px}.tactical-panel-title{align-items:start}.tactical-panel-title p{color:var(--muted);margin:4px 0 0;font-size:12px;font-weight:850}.device-status-command-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.device-status-filter{background:color-mix(in srgb, var(--card-soft) 82%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-left:4px solid var(--status-color,var(--blue));color:var(--text);text-align:left;border-radius:8px;justify-content:space-between;align-items:center;min-height:48px;padding:9px 10px;display:flex}.device-status-filter.all{--status-color:var(--blue);grid-column:1/-1}.device-status-filter.normal{--status-color:var(--green)}.device-status-filter.waiting{--status-color:var(--amber)}.device-status-filter.uncertain{--status-color:#f97316}.device-status-filter.lost{--status-color:var(--danger)}.device-status-filter span{color:var(--muted);font-size:12px;font-weight:900}.device-status-filter strong{color:var(--text);letter-spacing:0;font-size:22px;font-weight:950}.device-status-filter.active{background:color-mix(in srgb, var(--status-color) 18%, var(--card));border-color:color-mix(in srgb, var(--status-color) 54%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--status-color) 28%, transparent)}.device-roster-toolbar{background:color-mix(in srgb, var(--card-soft) 78%, transparent);border:1px solid color-mix(in srgb, var(--border) 84%, transparent);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:10px 12px;display:flex}.device-roster-toolbar span,.device-roster-toolbar small{color:var(--muted);font-size:12px;font-weight:850}.device-roster-toolbar strong{color:var(--text);margin-top:2px;font-size:13px;font-weight:950;display:block}.selected-device-strip{background:color-mix(in srgb, var(--card-soft) 72%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;gap:8px 10px;padding:12px;display:grid}.selected-device-strip.normal{--status-color:var(--green)}.selected-device-strip.waiting{--status-color:var(--amber)}.selected-device-strip.uncertain{--status-color:#f97316}.selected-device-strip.lost{--status-color:var(--danger)}.selected-device-strip strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.selected-device-strip small{color:var(--muted);overflow-wrap:anywhere;font-size:11px;font-weight:800;display:block}.selected-device-clear{appearance:none;background:color-mix(in srgb, var(--card) 72%, transparent);border:1px solid color-mix(in srgb, var(--border) 68%, transparent);color:var(--muted);cursor:pointer;border-radius:999px;justify-content:center;justify-self:end;align-items:center;width:28px;height:28px;padding:0;display:inline-flex}.selected-device-clear:hover,.selected-device-clear:focus-visible{background:color-mix(in srgb, var(--danger) 12%, var(--card));border-color:color-mix(in srgb, var(--danger) 32%, var(--border));color:var(--danger)}.selected-device-clear svg{width:12px;height:12px}.selected-device-action-grid{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.selected-device-timeline-action,.selected-device-guidance-action{appearance:none;background:color-mix(in srgb, var(--blue) 14%, var(--card));border:1px solid color-mix(in srgb, var(--blue) 34%, var(--border));color:var(--blue);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-width:0;min-height:34px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.selected-device-timeline-action:hover,.selected-device-timeline-action:focus-visible,.selected-device-guidance-action:hover,.selected-device-guidance-action:focus-visible,.selected-device-guidance-action.active{background:color-mix(in srgb, var(--blue) 20%, var(--card));border-color:color-mix(in srgb, var(--blue) 52%, var(--border))}.selected-device-guidance-action:disabled{background:color-mix(in srgb, var(--surface-3) 52%, var(--card));border-color:color-mix(in srgb, var(--border) 62%, transparent);color:var(--muted);cursor:not-allowed;opacity:.64}.selected-device-timeline-action svg,.selected-device-guidance-action svg{width:13px;height:13px}.selected-device-strip dl{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0;display:grid}.selected-device-strip dl div{background:color-mix(in srgb, var(--card) 72%, transparent);border-radius:6px;min-width:0;padding:7px 8px}.selected-device-strip dt,.selected-device-strip dd{margin:0}.selected-device-strip dt{color:var(--muted);font-size:10px;font-weight:850}.selected-device-strip dd{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;font-weight:900;overflow:hidden}.monitoring-selection-hint{background:color-mix(in srgb, var(--blue) 10%, transparent);border:1px dashed color-mix(in srgb, var(--blue) 34%, var(--border));color:var(--muted);border-radius:8px;margin:0;padding:12px;font-size:12px;font-weight:850}.tactical-device-list{gap:6px;max-height:min(50vh,520px)}.device-list .device-roster-item{--status-color:var(--blue);border-left:4px solid var(--status-color);grid-template-columns:10px minmax(0,1fr) auto;min-height:52px}.device-list .device-roster-item.normal{--status-color:var(--green)}.device-list .device-roster-item.waiting{--status-color:var(--amber)}.device-list .device-roster-item.uncertain{--status-color:#f97316}.device-list .device-roster-item.lost{--status-color:var(--danger)}.device-list .device-roster-item.active{background:color-mix(in srgb, var(--status-color) 16%, var(--card));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--status-color) 70%, var(--blue))}.device-list .device-roster-item.dimmed{opacity:.58}.device-list .device-roster-item.dimmed:hover,.device-list .device-roster-item.dimmed:focus-visible{opacity:.82}.device-roster-main,.device-roster-meta{gap:3px;min-width:0;display:grid}.device-roster-meta{align-content:center;justify-items:end}.device-roster-meta em{color:var(--status-color);font-size:11px;font-style:normal;font-weight:950}.device-roster-meta small{color:var(--muted);white-space:nowrap;font-size:11px;font-weight:850}@media (width>=1600px){.app-main.monitoring-page{width:min(1280px,100vw - 840px)}.monitoring-viewport-left{left:calc(50vw + min(1280px,100vw - 840px)/-2 - 276px)}.monitoring-viewport-right{right:calc(50vw + min(1280px,100vw - 840px)/-2 - 404px)}}@media (width<=1599px){.app-main.monitoring-page{width:min(1180px,100% - 24px)}.monitoring-command-shell{display:grid}.monitoring-command-shell,.monitoring-command-layout{min-height:0}.monitoring-command-layout{order:2}.monitoring-side-panel{width:auto;max-height:320px;position:static;top:auto;left:auto;right:auto}.monitoring-context-panel{order:1;max-height:none}.monitoring-saved-views-panel{order:3;max-height:360px}.monitoring-viewport-panel{display:none}.monitoring-left-panel .monitoring-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.monitoring-left-panel .monitoring-data-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.monitoring-right-panel{grid-template-columns:1fr}.device-status-command-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.device-status-filter.all{grid-column:auto}.tactical-device-list{max-height:420px}}@media (width<=760px){.monitoring-left-panel .monitoring-summary-grid,.monitoring-left-panel .monitoring-data-strip,.device-status-command-grid{grid-template-columns:1fr 1fr}.monitoring-toolbar{grid-template-columns:1fr;align-items:stretch}.monitoring-actions,.segmented-control{grid-template-columns:1fr 1fr;width:100%;max-width:none;display:grid}.webgl-scene-card,.webgl-scene-canvas{height:auto;min-height:480px}.scene-hud.top-left,.scene-hud.top-right{max-width:calc(50% - 18px)}.monitoring-map-controls{max-width:calc(100% - 24px);bottom:58px;left:12px;right:12px}}@media (width<=520px){.monitoring-left-panel .monitoring-summary-grid,.monitoring-left-panel .monitoring-data-strip,.device-status-command-grid,.monitoring-actions,.segmented-control,.selected-device-strip dl{grid-template-columns:1fr}.scene-hud.top-left,.scene-hud.top-right,.scene-legend,.monitoring-map-controls{max-width:calc(100% - 24px);position:static}.monitoring-map-controls{justify-content:stretch}.monitoring-map-controls .secondary-button:not(.monitoring-icon-control){flex:auto}.webgl-scene-card{gap:8px;padding:8px;display:grid}}body.floorplan-wide-mode .app-view-transition,body.route-editor-wide-mode .app-view-transition,body.monitoring-wide-mode .app-view-transition,body.floorplan-wide-mode .app-view-transition>:first-child,body.route-editor-wide-mode .app-view-transition>:first-child,body.monitoring-wide-mode .app-view-transition>:first-child{will-change:auto;animation:none;transform:none}body.monitoring-wide-mode{overflow:hidden}.monitoring-command-shell.wide-mode{--monitoring-scene-height:100%;background:color-mix(in srgb, var(--app-bg) 94%, var(--card));box-sizing:border-box;height:var(--app-nav-layout-height);bottom:var(--app-nav-layout-bottom);left:var(--app-nav-layout-left);padding:12px calc(12px + var(--monitoring-right-rail) + var(--monitoring-rail-gap)) 12px calc(12px + var(--monitoring-left-rail) + var(--monitoring-rail-gap));right:var(--app-nav-layout-right);top:var(--app-nav-layout-top);width:var(--app-nav-layout-width);z-index:120;display:grid;position:fixed;overflow:hidden}.monitoring-command-shell.wide-mode .monitoring-side-panel{z-index:132;position:fixed;top:12px}.monitoring-command-shell.wide-mode .monitoring-context-panel{left:calc(var(--app-nav-layout-left) + 12px);right:auto}.monitoring-command-shell.wide-mode .monitoring-saved-views-panel{left:auto;right:12px}.monitoring-command-shell.wide-mode .monitoring-command-layout,.monitoring-command-shell.wide-mode .monitoring-center-container,.monitoring-command-shell.wide-mode .monitoring-center-panel{height:100%;min-height:0}.monitoring-command-shell.wide-mode .monitoring-command-layout{grid-template-columns:minmax(0,1fr)}.monitoring-command-shell.wide-mode .monitoring-center-panel{grid-template-rows:auto minmax(0,1fr);display:grid}.monitoring-command-shell.wide-mode .monitoring-toolbar{padding:10px 12px}.monitoring-command-shell.wide-mode .webgl-scene-card{height:100%;min-height:0}.monitoring-command-shell.wide-mode .webgl-scene-canvas{min-height:0}.monitoring-wide-toggle{min-width:42px}.monitoring-wide-toggle.active{background:color-mix(in srgb, var(--blue) 14%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 34%, transparent);color:var(--blue)}.monitoring-viewport-panel.monitoring-wide-panel{height:calc(var(--app-nav-layout-height) - 24px);max-height:calc(var(--app-nav-layout-height) - 24px);top:calc(var(--app-nav-layout-top) + 12px);z-index:130;display:grid}.monitoring-viewport-left.monitoring-wide-panel{left:calc(var(--app-nav-layout-left) + 12px);width:252px}.monitoring-viewport-right.monitoring-wide-panel{width:380px;right:12px}@media (width<=1180px){.monitoring-command-shell{display:grid}.monitoring-command-layout,.monitoring-command-shell.wide-mode .monitoring-command-layout{order:2;grid-template-columns:1fr}.monitoring-side-panel,.monitoring-command-shell.wide-mode .monitoring-side-panel{width:auto;max-height:320px;position:static;top:auto;left:auto;right:auto}.monitoring-context-panel{order:1;max-height:none}.monitoring-saved-views-panel{order:3;max-height:360px}.monitoring-command-shell.wide-mode{height:var(--app-nav-layout-height);padding:12px;overflow:auto}.monitoring-viewport-panel.monitoring-wide-panel{display:none}}.floorplan-editor-card{padding:clamp(18px,2vw,28px)}.floorplan-wide-layout{grid-template-columns:1fr}.floorplan-full-panel{order:-1}.floorplan-settings-panel{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:12px;margin-bottom:16px;display:grid}.floorplan-settings-panel label,.floorplan-settings-panel div{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.floorplan-settings-panel input{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border:0;min-height:46px;padding:0 12px}.floorplan-settings-panel strong{color:var(--text);font-size:18px}.floorplan-full-panel .floorplan-canvas-wrap{aspect-ratio:1920/1260;width:100%;min-height:0}.floorplan-full-panel,.floorplan-full-panel .canvas-toolbar,.floorplan-full-panel .floorplan-canvas-wrap,.floorplan-full-panel .floorplan-canvas{transition:border-color .22s,box-shadow .22s,max-width .28s,opacity .22s,transform .28s,width .28s}.floorplan-canvas-wrap.upload-ready{cursor:pointer}.upload-empty-button{cursor:pointer;pointer-events:auto;background:0 0;border:0;width:100%;height:100%}.floorplan-drawer,.floorplan-properties-panel{width:100%}.floorplan-drawer{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;display:grid}.floorplan-drawer .panel-title-row,.floorplan-drawer .muted-text{grid-column:1/-1}.beacon-list-button:disabled{opacity:.48}.placement-mode-card,.beacon-overview-card,.sensor-list-side-card,.selected-sensor-card,.sensor-overview-card{gap:12px;display:grid}.placement-mode-toggle{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.placement-mode-toggle button{transition:background .2s,box-shadow .2s,color .2s,transform .2s}.placement-mode-toggle button.active{box-shadow:0 8px 18px color-mix(in srgb, var(--blue) 22%, transparent);transform:translateY(-1px)}.placement-mode-toggle button:nth-child(2).active{background:#ef4444;box-shadow:0 8px 18px #ef444438}.placement-mode-panel{--placement-accent:var(--blue);transform-origin:top;animation:.22s both placementModeCardIn}.beacon-list-side-card,.beacon-overview-card{--placement-accent:var(--blue)}.sensor-list-side-card,.selected-sensor-card,.sensor-overview-card{--placement-accent:#ef4444}.placement-mode-panel.is-active{box-shadow:var(--shadow-surface), inset 3px 0 0 color-mix(in srgb, var(--placement-accent) 70%, transparent)}.placement-mode-panel.is-hidden{display:none}@keyframes placementModeCardIn{0%{opacity:0;transform:translateY(8px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.beacon-list-button,.sensor-list-button{transition:background .2s,box-shadow .2s,opacity .2s,transform .2s}.beacon-list-button:hover:not(:disabled),.sensor-list-button:hover:not(:disabled),.beacon-list-button.active,.sensor-list-button.active{transform:translateY(-1px)}.floorplan-sensor-list{gap:8px;max-height:320px;display:grid;overflow:auto}.sensor-list-button{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);text-align:left;border:0;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:2px 10px;min-height:68px;padding:10px 12px;display:grid}.sensor-list-button span{background:color-mix(in srgb, #ef4444 12%, var(--card-soft));color:#b91c1c;border-radius:999px;grid-row:span 2;justify-content:center;align-items:center;width:32px;height:32px;font-size:11px;font-weight:950;display:inline-flex}.sensor-list-button strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.sensor-list-button small{color:var(--muted);font-size:11px;font-weight:800}.sensor-list-button.active{box-shadow:inset 0 0 0 2px #ef4444, var(--shadow-surface)}.sensor-list-button.degraded,.sensor-list-button.warning{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--amber) 38%, var(--border))}.sensor-list-button.offline{opacity:.78}.sensor-dot{color:#fff;border-radius:999px;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:950;display:inline-flex}.sensor-dot.normal{background:#ef4444}.sensor-dot.warning{background:var(--amber)}.sensor-dot.offline{background:#64748b}.sensor-property-stack,.sensor-local-actions{gap:10px;display:grid}.sensor-local-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.coordinate-sensor-section{gap:12px;margin-top:18px;display:grid}.floorplan-properties-panel .property-stack{grid-template-columns:repeat(3,minmax(0,1fr))}.floorplan-properties-panel .selected-summary,.floorplan-properties-panel .primary-button,.floorplan-properties-panel .secondary-button,.floorplan-properties-panel h3,.floorplan-properties-panel .muted-text{grid-column:1/-1}.monitoring-floor-image{--floorplan-azimuth-deg:0deg;object-fit:contain;opacity:.78;pointer-events:none;height:100%;transform:rotate(var(--floorplan-azimuth-deg));transform-origin:50%;z-index:0;width:100%;position:absolute;top:0;left:0}.webgl-scene-canvas{cursor:crosshair;touch-action:manipulation;z-index:1;width:100%;height:100%;min-height:540px;display:block;position:relative}@media (width<=960px){.floorplan-settings-panel,.floorplan-properties-panel .property-stack{grid-template-columns:1fr}}main.floorplan-page,main.routing-page{--editor-left-rail:300px;--editor-right-rail:320px;--editor-rail-gap:14px;--editor-outer-gutter:24px;width:min(var(--app-content-max), calc(100vw - var(--editor-left-rail) - var(--editor-right-rail) - (var(--editor-rail-gap) * 2) - var(--editor-outer-gutter)))}main.routing-page{--editor-left-rail:280px}main.floorplan-page:has(.floorplan-editor-shell.preview-view){--editor-left-rail:0px;--editor-right-rail:0px;width:min(var(--app-content-max), calc(100% - var(--app-content-gutter)))}@media (width<=1319px){main.floorplan-page,main.routing-page{width:min(var(--app-content-max), calc(100% - var(--app-content-gutter)))}.route-context-panel{width:auto}}.floorplan-workbench{grid-template-columns:292px minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.floorplan-side-panel{gap:14px;display:grid;position:sticky;top:86px}.floorplan-side-card{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent), var(--shadow-surface);padding:14px}.floorplan-side-card h3{letter-spacing:-.03em;margin:0;font-size:16px}.side-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.side-metric-grid article{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);border-radius:16px;gap:8px;padding:12px;display:grid}.side-metric-grid span{color:var(--muted);font-size:11px;font-weight:900}.side-metric-grid strong{color:var(--text);letter-spacing:-.06em;font-size:26px;line-height:1}.floorplan-left-panel .property-stack{margin-top:12px}.floorplan-left-panel .property-stack label{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.floorplan-left-panel .property-stack input,.floorplan-left-panel .property-stack select{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border:0;min-height:44px;padding:0 12px}.floorplan-center-panel{min-width:0}.floorplan-beacon-list{gap:8px;max-height:calc(100vh - 150px);padding-right:2px;display:grid;overflow:auto}.floorplan-beacon-list .beacon-list-button{margin-top:0}.selected-beacon-inline{background:color-mix(in srgb, var(--surface-3) 34%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);border-radius:8px;gap:9px;margin-top:10px;padding:10px;display:grid}.selected-beacon-inline>.muted-text{margin:0}.compact-selected-summary{box-shadow:none;background:0 0;align-items:center;min-height:auto;padding:0}.selected-beacon-compact-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.selected-beacon-compact-fields label{color:var(--muted);gap:5px;font-size:11px;font-weight:900;display:grid}.selected-beacon-compact-fields input,.selected-beacon-compact-fields select{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 82%, transparent);color:var(--text);border:0;border-radius:7px;min-height:36px;padding:0 9px}.selected-beacon-compact-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.selected-beacon-compact-actions .primary-button,.selected-beacon-compact-actions .secondary-button{min-height:38px}.beacon-list-button.active{box-shadow:inset 0 0 0 2px var(--blue), var(--shadow-surface)}.floorplan-right-panel .beacon-list-button small{padding-left:46px}@media (width<=1500px){.floorplan-workbench{grid-template-columns:270px minmax(0,1fr) 290px}}@media (width<=1120px){.floorplan-workbench{grid-template-columns:1fr}.floorplan-side-panel{position:static}.floorplan-left-panel{order:1}.floorplan-center-panel{order:0}.floorplan-right-panel{order:2}.floorplan-beacon-list{max-height:none}}.floorplan-editor-shell{grid-template-columns:292px minmax(0,1fr) 320px;align-items:start;gap:16px;transition:grid-template-columns .28s,gap .28s;display:grid;position:relative}.floorplan-center-container{min-width:0;transition:transform .28s,box-shadow .28s}.floorplan-editor-shell.preview-view{grid-template-columns:minmax(0,1fr);gap:16px}.floorplan-editor-shell.preview-view .hero-actions,.floorplan-editor-shell.preview-view .floorplan-upload-menu,.floorplan-editor-shell.preview-view .crop-mode-toggle{flex:none;align-items:center;gap:6px;display:inline-flex}.floorplan-crop-actions{display:none}.floorplan-editor-shell.preview-view .floorplan-canvas-wrap,.floorplan-editor-shell.preview-view .upload-empty-button{cursor:default}.outside-panel{box-shadow:none;background:0 0;padding:12px;transition:opacity .22s,padding .28s,transform .28s,visibility .28s}.floorplan-editor-shell>.floorplan-side-panel{gap:14px;min-width:0;transition:opacity .22s,transform .28s,visibility .28s;display:grid;position:sticky;top:86px;overflow:hidden}.floorplan-editor-shell.preview-view>.floorplan-side-panel{opacity:0;pointer-events:none;visibility:hidden;padding-left:0;padding-right:0;display:none}.floorplan-editor-shell.preview-view>.floorplan-side-panel>*{display:none}.floorplan-editor-shell.preview-view>.floorplan-left-panel{transform:translate(-12px)}.floorplan-editor-shell.preview-view>.floorplan-right-panel{transform:translate(12px)}.floorplan-editor-shell .floorplan-side-card{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow-surface);padding:16px;transition:opacity .22s,transform .28s}.floorplan-editor-shell.preview-view .floorplan-side-card{opacity:0;transform:scale(.985)}.floorplan-editor-shell .floorplan-beacon-list{max-height:calc(100vh - 128px)}.floorplan-center-container .coordinate-card{margin-top:16px}@media (width<=1500px){.floorplan-editor-shell{grid-template-columns:270px minmax(0,1fr) 290px}.floorplan-editor-shell.preview-view{grid-template-columns:minmax(0,1fr)}}@media (width<=1120px){.floorplan-editor-shell{grid-template-columns:1fr}.floorplan-editor-shell.preview-view{grid-template-columns:1fr;gap:16px}.floorplan-editor-shell.preview-view>.floorplan-side-panel{display:none}.floorplan-editor-shell>.floorplan-side-panel{position:static}.floorplan-editor-shell .floorplan-left-panel{order:1}.floorplan-editor-shell .floorplan-center-container{order:0}.floorplan-editor-shell .floorplan-right-panel{order:2}.floorplan-editor-shell .floorplan-beacon-list{max-height:none}}@media (width>=1320px){.floorplan-editor-shell{grid-template-columns:minmax(0,1fr);align-items:stretch}.floorplan-editor-shell>.floorplan-side-panel{overscroll-behavior:contain;max-height:calc(100dvh - 142px);width:var(--editor-left-rail);z-index:6;grid-area:1/1;align-self:start;position:sticky;top:124px;overflow:auto}.floorplan-editor-shell>.floorplan-left-panel{transform:translateX(calc(-1 * (100% + var(--editor-rail-gap))));justify-self:start}.floorplan-editor-shell>.floorplan-right-panel{transform:translateX(calc(100% + var(--editor-rail-gap)));width:var(--editor-right-rail);justify-self:end}.floorplan-editor-shell .floorplan-center-container{grid-area:1/1;width:100%}.floorplan-editor-shell .floorplan-beacon-list{max-height:none}}.floorplan-view-toggle{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent);grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:16px 0;padding:6px;display:grid}.floorplan-view-toggle button{border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;font:inherit;white-space:normal;background:0 0;border:0;min-height:42px;padding:0 10px;font-size:13px;font-weight:900;line-height:1.2;transition:background-color .18s,box-shadow .18s,color .18s,transform .18s;transform:translateY(0)}.floorplan-view-toggle button.active{background:var(--card);box-shadow:var(--shadow-surface);color:var(--text);transform:translateY(-1px)}.floorplan-coordinate-view{min-height:min(76vh,820px)}.floorplan-settings-side-card{grid-template-columns:1fr;align-items:stretch;margin-bottom:0}.floorplan-settings-side-card .secondary-button{width:100%}.floorplan-size-summary{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);padding:12px}.floorplan-left-panel .floorplan-beacon-list{max-height:min(48vh,440px)}.floorplan-left-panel .beacon-list-button small{padding-left:46px}.floorplan-beacon-placement-summary{background:color-mix(in srgb, var(--surface-3) 36%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px;display:grid}.floorplan-beacon-placement-summary>div{background:color-mix(in srgb, var(--card) 76%, transparent);border:1px solid color-mix(in srgb, var(--border) 48%, transparent);border-radius:7px;justify-content:space-between;align-items:center;min-width:0;min-height:34px;padding:0 9px;display:flex}.floorplan-beacon-placement-summary span{color:var(--muted);min-width:0;font-size:11px;font-weight:900}.floorplan-beacon-placement-summary strong{color:var(--text);letter-spacing:0;white-space:nowrap;font-size:14px;font-weight:950}.mini-badge.warning{background:color-mix(in srgb, var(--amber) 14%, var(--card));border-color:color-mix(in srgb, var(--amber) 32%, transparent);color:color-mix(in srgb, var(--amber) 72%, var(--text))}.beacon-list-button.unplaced{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 20%, var(--border))}.beacon-list-button.placed{opacity:.88}.floorplan-settings-side-card .azimuth-knob-panel{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);align-items:stretch;gap:12px;padding:14px;display:grid}.floorplan-settings-side-card .azimuth-knob-header{justify-content:space-between;align-items:center;display:flex}.azimuth-knob-header span{color:var(--muted);font-size:12px;font-weight:900}.azimuth-knob-header strong{color:var(--text);letter-spacing:-.04em;font-size:20px}.azimuth-knob{--azimuth-deg:0deg;background:radial-gradient(circle at 50% 42%, var(--card) 0 34%, color-mix(in srgb, var(--blue) 10%, var(--card-soft)) 35% 100%);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent), var(--shadow-surface);color:var(--text);cursor:grab;touch-action:none;border:0;border-radius:999px;place-self:center;width:166px;height:166px;position:relative}.azimuth-knob:active{cursor:grabbing}.azimuth-knob:focus-visible{outline:3px solid color-mix(in srgb, var(--blue) 34%, transparent);outline-offset:4px}.azimuth-knob-ring{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 28%, transparent);transform:rotate(var(--azimuth-deg));border-radius:999px;transition:transform .12s;position:absolute;inset:22px}.azimuth-needle{background:linear-gradient(180deg, var(--blue), color-mix(in srgb, var(--blue) 60%, #7dd3fc));box-shadow:0 8px 20px color-mix(in srgb, var(--blue) 24%, transparent);border-radius:999px;width:5px;height:54px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.azimuth-needle:before{border-bottom:13px solid var(--blue);content:"";border-left:8px solid #0000;border-right:8px solid #0000;position:absolute;top:-10px;left:50%;transform:translate(-50%)}.azimuth-cardinal{color:var(--muted);z-index:1;font-size:11px;font-weight:950;position:absolute}.azimuth-cardinal.north{top:9px;left:50%;transform:translate(-50%)}.azimuth-cardinal.east{top:50%;right:12px;transform:translateY(-50%)}.azimuth-cardinal.south{bottom:9px;left:50%;transform:translate(-50%)}.azimuth-cardinal.west{top:50%;left:12px;transform:translateY(-50%)}.azimuth-knob-center{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);color:var(--blue);z-index:2;border-radius:999px;justify-content:center;align-items:center;width:54px;height:54px;font-size:13px;font-weight:950;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.floorplan-full-panel .floorplan-canvas-wrap{aspect-ratio:1920/1260;justify-content:center;align-items:center;min-height:0;display:flex}.floorplan-editor-shell.preview-view .floorplan-full-panel{transform:translateY(-2px)}.floorplan-editor-shell.preview-view .floorplan-full-panel .canvas-toolbar{transform:translateY(-1px)}.floorplan-editor-shell.preview-view .floorplan-full-panel .floorplan-canvas-wrap{box-shadow:0 22px 55px #0f172a1f, inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);transform:scale(1.003)}.floorplan-full-panel .floorplan-canvas{aspect-ratio:1920/1260;width:min(100%,1.52381*min(86vh,1120px));height:auto;max-height:none}.azimuth-knob-ring{transition:none}.webgl-scene-card.floorplan-calibrated{aspect-ratio:var(--monitoring-floorplan-aspect-ratio,1920 / 1260);justify-content:center;align-items:center;min-height:0;padding:0;display:flex}.webgl-scene-card.floorplan-calibrated .monitoring-scene-stage{aspect-ratio:var(--monitoring-floorplan-aspect-ratio,1920 / 1260);flex:none;max-width:100%;max-height:100%;position:relative;inset:auto}.webgl-scene-card.floorplan-calibrated .webgl-scene-canvas{cursor:crosshair;touch-action:manipulation;z-index:1;width:100%;height:100%;min-height:0;display:block;position:absolute;inset:0}.webgl-scene-card.floorplan-calibrated .monitoring-floor-image{object-fit:contain}.azimuth-knob{overflow:visible}.azimuth-knob-ring{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 34%, transparent), 0 0 0 1px color-mix(in srgb, var(--blue) 10%, transparent);transform:rotate(var(--azimuth-deg));transform-origin:50%;inset:24px;overflow:visible}.azimuth-needle{width:6px;height:50px;top:11px;transform:translate(-50%)}.azimuth-needle:before{border-bottom-width:15px;border-left-width:10px;border-right-width:10px;top:-12px}.azimuth-cardinal{background:color-mix(in srgb, var(--card) 86%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 60%, transparent);border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;line-height:1;display:flex}.azimuth-cardinal.north{color:var(--blue);transform:translate(-50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));font-size:13px;top:-19px;left:50%}.azimuth-knob{background:linear-gradient(180deg, color-mix(in srgb, var(--blue) 12%, var(--card-soft)), color-mix(in srgb, var(--blue) 6%, var(--card-soft)));overflow:visible}.azimuth-knob:before{background:color-mix(in srgb, var(--blue) 8%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 9%, transparent);content:"";pointer-events:none;border-radius:999px;position:absolute;inset:18px}.azimuth-knob-ring{box-shadow:inset 0 0 0 3px color-mix(in srgb, var(--blue) 32%, transparent);height:116px;transform:translate(-50%, -50%) rotate(var(--azimuth-deg));transform-origin:50%;z-index:2;border-radius:999px;width:116px;position:absolute;inset:50% auto auto 50%;overflow:visible}.azimuth-needle{z-index:3;width:6px;height:52px;top:6px;left:50%;transform:translate(-50%)}.azimuth-knob-center{z-index:4;width:60px;height:60px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.azimuth-cardinal{z-index:4}.azimuth-cardinal.north{transform:translate(-50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));top:-18px;left:50%}.azimuth-cardinal.east{transform:translate(50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));top:50%;right:-18px}.azimuth-cardinal.south{transform:translate(-50%, 50%) rotate(calc(-1 * var(--azimuth-deg)));bottom:-18px;left:50%}.azimuth-cardinal.west{transform:translate(-50%, -50%) rotate(calc(-1 * var(--azimuth-deg)));top:50%;left:-18px}.azimuth-lock-group{align-items:center;gap:8px;display:flex}.azimuth-lock-button{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);color:var(--muted);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:6px;min-height:30px;padding:0 10px;display:inline-flex}.azimuth-lock-button span:not(.lock-icon){color:inherit;font-size:11px;font-weight:950}.azimuth-lock-button:hover{background:color-mix(in srgb, var(--blue) 8%, var(--card));color:var(--blue)}.lock-icon{box-sizing:border-box;border:2px solid;border-radius:3px;width:12px;height:9px;margin-top:5px;display:inline-block;position:relative}.lock-icon:before{box-sizing:border-box;content:"";transform-origin:20% 100%;border:2px solid;border-bottom:0;border-radius:8px 8px 0 0;width:10px;height:9px;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.azimuth-lock-button:not(.locked) .lock-icon:before{transform:translate(-50%)rotate(-18deg)}.azimuth-knob:disabled{cursor:not-allowed;opacity:.72}.azimuth-locked-note{color:var(--blue);font-weight:850}.floorplan-settings-side-card input:disabled{background:color-mix(in srgb, var(--card-soft) 88%, transparent);color:var(--muted);cursor:not-allowed}.azimuth-heading-lock{align-items:center;gap:10px;display:flex}.azimuth-heading-label{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:950}.azimuth-lock-button{background:linear-gradient(180deg, color-mix(in srgb, var(--blue) 10%, var(--card)), var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 22%, transparent), 0 10px 24px color-mix(in srgb, var(--blue) 10%, transparent);color:var(--text);gap:9px;min-height:42px;padding:0 16px}.azimuth-lock-button span:not(.lock-icon){letter-spacing:-.03em;font-size:13px}.azimuth-lock-button:hover{background:color-mix(in srgb, var(--blue) 14%, var(--card));transform:translateY(-1px)}.azimuth-lock-button.locked{background:linear-gradient(180deg, var(--blue), color-mix(in srgb, var(--blue) 78%, #1d4ed8));box-shadow:0 12px 28px color-mix(in srgb, var(--blue) 30%, transparent);color:#fff}.lock-icon{border-radius:4px;width:15px;height:12px;margin-top:6px}.lock-icon:before{width:12px;height:11px;top:-11px}.floorplan-settings-side-card>.panel-title-row{width:100%}.floorplan-settings-side-card>.panel-title-row .mini-badge{margin-left:auto}.settings-divider{background:color-mix(in srgb, var(--border) 78%, transparent);width:100%;height:1px;margin:2px 0 4px}.beacon-clear-all-button{width:100%;margin-top:12px}.beacon-visibility-toggle{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);color:var(--muted);cursor:pointer;white-space:nowrap;border:0;border-radius:999px;align-items:center;gap:7px;min-height:32px;padding:0 11px;font-size:12px;font-weight:950;display:inline-flex}.beacon-visibility-toggle:hover:not(:disabled){background:color-mix(in srgb, var(--blue) 9%, var(--card));color:var(--blue)}.beacon-visibility-toggle.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent), 0 8px 18px color-mix(in srgb, var(--blue) 10%, transparent);color:var(--blue)}.beacon-visibility-toggle:disabled{cursor:not-allowed;opacity:.45}.visibility-dot{box-shadow:0 0 0 4px color-mix(in srgb, currentColor 14%, transparent);background:currentColor;border-radius:999px;width:7px;height:7px;display:inline-flex}.beacon-visibility-toggle:not(.active) .visibility-dot{background:0 0;box-shadow:inset 0 0 0 2px}.swal2-toss-popup{box-shadow:var(--shadow-card);font-family:var(--font-main);border-radius:22px;padding:24px}.swal2-toss-confirm{background:var(--blue);color:#fff;cursor:pointer;border:0;border-radius:999px;min-height:44px;padding:0 22px;font-size:14px;font-weight:900}.monitoring-beacon-toggle.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent);color:var(--blue)}.monitoring-beacon-toggle:disabled{cursor:not-allowed;opacity:.48}.coordinate-actions{justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.compact-export-button{white-space:nowrap;min-height:34px;padding:0 12px;font-size:12px}.beacon-label-mode-control{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);grid-template-columns:auto 1fr;align-items:center;gap:8px;margin:12px 0 10px;padding:10px;display:grid}.beacon-label-mode-control>span{color:var(--muted);white-space:nowrap;font-size:11px;font-weight:950}.compact-label-mode{grid-template-columns:repeat(3,minmax(0,1fr));padding:4px}.compact-label-mode button{min-height:30px;padding:0 8px;font-size:11px}body.floorplan-wide-mode{overflow:hidden}.floorplan-editor-shell.wide-mode{--floorplan-left-rail:clamp(280px, 18vw, 360px);--floorplan-right-rail:clamp(300px, 20vw, 380px);--floorplan-wide-gap:12px;background:color-mix(in srgb, var(--bg) 94%, var(--card));box-sizing:border-box;height:var(--app-nav-layout-height);bottom:var(--app-nav-layout-bottom);left:var(--app-nav-layout-left);right:var(--app-nav-layout-right);top:var(--app-nav-layout-top);width:var(--app-nav-layout-width);z-index:120;align-items:stretch;padding:0;transition:grid-template-columns .28s,gap .28s;display:block;position:fixed;overflow:hidden}.floorplan-editor-shell.wide-mode>.floorplan-side-panel{height:auto;max-height:calc(var(--app-nav-layout-height) - 24px);overscroll-behavior:contain;min-height:0;width:var(--floorplan-left-rail);z-index:132;align-content:start;align-self:start;gap:12px;display:grid;position:absolute;top:12px;overflow:auto}.floorplan-editor-shell.wide-mode .floorplan-left-panel{left:12px}.floorplan-editor-shell.wide-mode .floorplan-center-container{inset:12px calc(12px + var(--floorplan-right-rail) + var(--floorplan-wide-gap)) 12px calc(12px + var(--floorplan-left-rail) + var(--floorplan-wide-gap));z-index:121;border-radius:22px;grid-template-rows:minmax(0,1fr);min-width:0;min-height:0;padding:14px;display:grid;position:absolute;overflow:hidden}.floorplan-editor-shell.wide-mode .floorplan-right-panel{width:var(--floorplan-right-rail);right:12px}.floorplan-editor-shell.wide-mode .editor-header,.floorplan-editor-shell.wide-mode .floorplan-view-toggle{display:none}.floorplan-editor-shell.wide-mode .floorplan-side-card{padding:14px}.floorplan-editor-shell.wide-mode .floorplan-beacon-list{max-height:calc(var(--app-nav-layout-height) - 308px)}.floorplan-editor-shell.wide-mode .floorplan-full-panel{grid-template-rows:auto minmax(0,1fr) auto;place-items:stretch center;gap:10px;min-width:0;height:100%;min-height:0;padding:12px;display:grid;overflow:hidden}.floorplan-editor-shell.wide-mode .canvas-toolbar{background:color-mix(in srgb, var(--card) 90%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);border-radius:20px;align-items:center;width:100%;margin:0;padding:10px 12px}.floorplan-editor-shell.wide-mode .canvas-toolbar>div:first-child{min-width:0}.floorplan-editor-shell.wide-mode .canvas-toolbar .muted-text{margin:4px 0 0}.floorplan-editor-shell.wide-mode .floorplan-canvas-wrap{aspect-ratio:1920/1260;place-self:center;width:min(100%,152.381dvh - 256px);max-width:100%;min-height:0;max-height:100%}.floorplan-editor-shell.wide-mode .floorplan-canvas{aspect-ratio:1920/1260;width:100%;height:100%;max-height:100%}.floorplan-editor-shell.wide-mode .status-row{width:100%;min-height:28px;margin:0}.floorplan-editor-shell.wide-mode .icon-tool-button{min-width:42px;height:42px}.floorplan-editor-shell.preview-view.wide-mode{gap:0}.floorplan-editor-shell.preview-view.wide-mode>.floorplan-side-panel{opacity:0;pointer-events:none;visibility:hidden}.floorplan-editor-shell.preview-view.wide-mode .floorplan-center-container{inset:12px}.wide-mode-toggle.active{background:color-mix(in srgb, var(--blue) 14%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 34%, transparent);color:var(--blue)}@media (width<=1280px){.floorplan-editor-shell.wide-mode{--floorplan-left-rail:260px;--floorplan-right-rail:280px}}@media (width<=980px){body.floorplan-wide-mode{overflow:auto}.floorplan-editor-shell.wide-mode{height:auto;min-height:var(--app-nav-layout-height);bottom:var(--app-nav-layout-bottom);left:var(--app-nav-layout-left);right:var(--app-nav-layout-right);top:var(--app-nav-layout-top);width:var(--app-nav-layout-width);grid-template-columns:1fr;padding:12px;display:grid;overflow:auto}.floorplan-editor-shell.wide-mode>.floorplan-side-panel{width:auto;height:auto;max-height:none;position:static;overflow:visible;transform:none}.floorplan-editor-shell.wide-mode .floorplan-left-panel{order:1}.floorplan-editor-shell.wide-mode .floorplan-center-container{order:0;padding:12px;position:static;inset:auto}.floorplan-editor-shell.wide-mode .floorplan-right-panel{order:2}.floorplan-editor-shell.wide-mode .floorplan-view-toggle{display:grid}.floorplan-editor-shell.wide-mode .canvas-toolbar{flex-direction:column;align-items:stretch}.floorplan-editor-shell.wide-mode .floorplan-canvas-wrap{width:min(100%,152.381dvh - 347.429px)}}.icon-toolbar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-top:0;display:flex}.marker-display-segment{background:color-mix(in srgb, var(--card) 84%, transparent);border:1px solid var(--border);border-radius:12px;flex:none;align-items:center;gap:4px;padding:4px;display:inline-flex}.marker-display-segment button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;min-height:34px;padding:0 11px;font-size:12px;font-weight:950}.marker-display-segment button:hover,.marker-display-segment button:focus-visible,.marker-display-segment button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.icon-toolbar>.marker-display-segment,.route-editor-toolbar>.marker-display-segment{display:none}.editor-marker-display-overlay{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);z-index:7;position:absolute;top:14px;left:14px}.floorplan-zoom-control{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb, var(--card) 90%, transparent);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);border-radius:999px;flex:none;align-items:center;gap:3px;min-height:44px;padding:5px;display:inline-flex}.floorplan-canvas-zoom-overlay{z-index:7;position:absolute;bottom:14px;right:14px}.floorplan-ruler-overlay{pointer-events:none;z-index:6;position:absolute;inset:0}.floorplan-ruler-svg{width:100%;height:100%;display:block}.floorplan-ruler-band{fill:color-mix(in srgb, var(--card) 88%, transparent);stroke:color-mix(in srgb, var(--border) 82%, transparent);stroke-width:1.5px;vector-effect:non-scaling-stroke}.floorplan-ruler-tick line{stroke:color-mix(in srgb, var(--muted) 70%, transparent);stroke-linecap:square;stroke-width:1.5px;vector-effect:non-scaling-stroke}.floorplan-ruler-tick.medium line{stroke:color-mix(in srgb, var(--text) 44%, transparent);stroke-width:1.8px}.floorplan-ruler-tick.major line{stroke:color-mix(in srgb, var(--text) 68%, transparent);stroke-width:2.3px}.floorplan-ruler-label{fill:color-mix(in srgb, var(--text) 76%, transparent);letter-spacing:0;paint-order:stroke;stroke:color-mix(in srgb, var(--card) 88%, transparent);stroke-linejoin:round;stroke-width:4px;font-size:19px;font-weight:950}.floorplan-ruler-label.vertical{text-anchor:start}.floorplan-ruler-hit{cursor:pointer;opacity:0;pointer-events:auto;z-index:1;background:0 0;border:0;position:absolute}.floorplan-ruler-hit-corner{width:52px;height:52px;top:0;left:0}.floorplan-ruler-hit-top{height:34px;top:0;left:52px;right:0}.floorplan-ruler-hit-left{width:34px;top:52px;bottom:0;left:0}.floorplan-ruler-unit-popover{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 95%, transparent);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);pointer-events:auto;z-index:4;border-radius:14px;gap:4px;min-width:144px;padding:7px;display:grid;position:absolute;top:40px;left:6px}.floorplan-ruler-unit-popover button{color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:2px;width:100%;min-height:36px;padding:0 9px;transition:background .18s,color .18s,transform .18s;display:grid}.floorplan-ruler-unit-popover button:hover,.floorplan-ruler-unit-popover button:focus-visible,.floorplan-ruler-unit-popover button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.floorplan-ruler-unit-popover button:active{transform:scale(.98)}.floorplan-ruler-unit-popover strong{letter-spacing:0;text-transform:uppercase;font-size:12px;font-weight:950;line-height:1}.floorplan-ruler-unit-popover span{color:currentColor;opacity:.72;font-size:11px;font-weight:850;line-height:1.1}.floorplan-zoom-control button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;gap:4px;min-width:34px;height:34px;padding:0 9px;font-size:12px;font-weight:950;transition:background .18s,color .18s,transform .18s,box-shadow .18s;display:inline-flex}.floorplan-zoom-step-button,.floorplan-zoom-reset-button,.floorplan-zoom-fit-button{width:34px;padding:12px}.floorplan-zoom-control button:hover:not(:disabled),.floorplan-zoom-control button:focus-visible{background:color-mix(in srgb, var(--blue) 13%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 18%, transparent);color:var(--blue);outline:0}.floorplan-zoom-control button:active:not(:disabled){transform:translateY(1px)scale(.985)}.floorplan-zoom-control button:disabled{cursor:not-allowed;opacity:.4}.floorplan-zoom-input-label:has(input:disabled){cursor:not-allowed;opacity:.4}.floorplan-zoom-control svg{font-size:15px;line-height:1}.floorplan-zoom-input-label{background:color-mix(in srgb, var(--card-soft) 76%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 68%, transparent);color:var(--muted);border-radius:999px;justify-content:center;align-items:center;gap:2px;min-width:72px;height:34px;padding:0 10px;font-size:11px;font-weight:950;display:inline-flex}.floorplan-zoom-input-label input{appearance:textfield;color:var(--text);text-align:right;background:0 0;border:0;outline:0;width:40px;padding:12px;font-size:13px;font-weight:950}.floorplan-zoom-input-label input::-webkit-inner-spin-button{appearance:none;margin:0}.floorplan-zoom-input-label input::-webkit-outer-spin-button{appearance:none;margin:0}.floorplan-zoom-divider{background:color-mix(in srgb, var(--border) 82%, transparent);width:1px;height:20px;margin:0 2px;display:block}.icon-tool-button{background:var(--card);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);color:var(--muted);cursor:pointer;border:0;border-radius:14px;flex:none;justify-content:center;align-items:center;gap:4px;min-width:40px;height:40px;padding:0 10px;transition:background .18s,box-shadow .18s,color .18s,transform .18s;display:inline-flex}.icon-tool-button:hover:not(:disabled),.icon-tool-button.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 30%, transparent);color:var(--blue)}.icon-tool-button:active:not(:disabled){transform:translateY(1px)scale(.985)}.icon-tool-button:focus-visible{outline:4px solid color-mix(in srgb, var(--blue) 24%, transparent);outline-offset:2px}.icon-tool-button:disabled{cursor:not-allowed;opacity:.42}.icon-tool-button .material-icons{font-size:22px;line-height:1}.icon-tool-button svg{width:18px;height:18px}.icon-tool-format{color:inherit;letter-spacing:0;font-size:10px;font-weight:950;line-height:1}.icon-tool-button.compact-export-button{white-space:nowrap;min-width:44px;height:34px;min-height:34px;padding:0 10px;font-size:12px}.floorplan-upload-menu,.floorplan-export-menu{z-index:12;flex:none;display:inline-flex;position:relative}.upload-menu-trigger,.export-menu-trigger{gap:7px;min-width:58px;padding:0 12px}.export-menu-chevron{opacity:.68;transition:transform .18s;width:11px!important;height:11px!important}.upload-menu-trigger.active .export-menu-chevron,.export-menu-trigger.active .export-menu-chevron{transform:rotate(180deg)}.floorplan-upload-dropdown,.floorplan-export-dropdown{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 94%, transparent);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);border-radius:16px;gap:4px;min-width:128px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.floorplan-upload-dropdown button,.floorplan-export-dropdown button{color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:12px;grid-template-columns:18px 54px;place-items:center start;gap:8px;width:100%;height:40px;padding:0 10px;font-size:12px;font-weight:850;transition:background .18s,color .18s,transform .18s;display:grid}.floorplan-upload-dropdown button:hover:not(:disabled),.floorplan-upload-dropdown button:focus-visible,.floorplan-export-dropdown button:hover:not(:disabled),.floorplan-export-dropdown button:focus-visible{background:color-mix(in srgb, var(--blue) 11%, transparent);color:var(--blue);outline:0}.floorplan-upload-dropdown button:active:not(:disabled),.floorplan-export-dropdown button:active:not(:disabled){transform:scale(.98)}.floorplan-upload-dropdown button:disabled,.floorplan-export-dropdown button:disabled{cursor:not-allowed;opacity:.42}.floorplan-upload-dropdown svg,.floorplan-export-dropdown svg{color:currentColor;width:15px;height:15px}.export-format-badge{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:currentColor;letter-spacing:0;border-radius:8px;justify-content:center;align-items:center;min-width:54px;height:24px;padding:0 7px;font-size:11px;font-weight:950;display:inline-flex}.app-header-with-actions{justify-content:space-between;align-items:center}.app-header-copy{flex:auto;min-width:0}.header-admin-actions,.section-actions,.admin-quick-actions,.form-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.header-admin-actions{flex:none}.header-action-button{min-height:42px}.admin-session-pill{background:var(--green-soft);color:var(--green);white-space:nowrap;border-radius:999px;align-items:center;min-height:34px;padding:0 12px;font-size:12px;font-weight:950;display:inline-flex}.user-session-pill{gap:10px;min-height:42px;padding:4px 12px 4px 5px}.user-session-pill>span:last-child{gap:1px;display:grid}.user-session-pill strong{color:var(--text);font-size:13px;font-weight:950;line-height:1.1}.user-session-pill small{color:var(--green);font-size:10px;font-weight:900;line-height:1.1}.user-avatar{background:var(--green);color:#fff;border-radius:999px;flex:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:12px;font-weight:950;display:inline-flex}.admin-session-pill.muted{background:var(--card-soft);color:var(--muted);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 80%, transparent)}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.admin-login-card,.admin-status-card{max-width:760px}.admin-status-card{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-status-card strong{letter-spacing:-.04em;margin-top:4px;font-size:24px;display:block}.admin-status-card small{color:var(--muted);margin-top:4px;font-weight:800;display:block}.admin-settings-card{max-width:none}.management-hub-card{justify-content:space-between;align-items:center;gap:24px;display:flex}.management-hub-copy{gap:6px;min-width:0;max-width:680px;display:grid}.management-hub-copy p{color:var(--muted);margin:0;font-size:13px;font-weight:800;line-height:1.5}.management-hub-summary-grid{flex:560px;grid-template-columns:repeat(6,minmax(86px,1fr));gap:8px;min-width:0;display:grid}.management-hub-summary-card{appearance:none;background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;text-align:left;min-width:0;min-height:92px;transition:background-color .18s var(--ease-out), border-color .18s var(--ease-out), transform .18s var(--ease-out);gap:5px;padding:12px;display:grid}.management-hub-summary-card:hover:not(:disabled){background:color-mix(in srgb, var(--blue) 9%, var(--card-soft));border-color:color-mix(in srgb, var(--blue) 28%, var(--border));transform:translateY(-2px)}.management-hub-summary-card:disabled{cursor:default}.management-hub-summary-card span{color:var(--muted);align-items:center;gap:6px;min-width:0;font-size:11px;font-weight:900;display:inline-flex}.management-hub-summary-card span svg{color:var(--blue);flex:none;width:13px;height:13px}.management-hub-summary-card strong{color:var(--text);letter-spacing:-.04em;margin:0;font-size:27px;font-weight:950;line-height:1}.management-hub-summary-card small{color:var(--muted);font-size:11px;font-weight:850}.management-session-meta{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);gap:4px;min-width:220px;padding:14px 16px;display:grid}.management-session-meta span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:950}.management-session-meta strong{font-size:18px;font-weight:950}.management-session-meta small{color:var(--muted);font-size:12px;font-weight:850}.management-tabs-card{padding:10px}.management-tab-strip{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.dashboard-session-selector{flex:auto;align-items:center;gap:8px;min-width:0;display:flex}.dashboard-session-selector label{flex:auto;min-width:0}.dashboard-session-selector select{width:100%;min-width:0}.dashboard-session-selector small,.dashboard-session-selector p{color:var(--muted);white-space:nowrap;margin:0;font-size:11px}.odometry-diagnostics-card{gap:18px;display:grid}.odometry-filter-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;display:grid}.odometry-filter-grid label{color:var(--muted);gap:7px;font-size:12px;font-weight:900;display:grid}.odometry-filter-grid select{background:var(--card-soft);border:1px solid var(--border);color:var(--text);border-radius:12px;min-height:42px;padding:0 11px}.odometry-table-wrap{overflow-x:auto}.odometry-table-wrap table{min-width:1120px}.odometry-table-wrap td small{color:var(--muted);margin-top:4px;display:inline-block}.odometry-gate-note{color:var(--muted);margin:0;font-size:12px;line-height:1.6}@media (width<=1180px){.odometry-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=720px){.odometry-filter-grid{grid-template-columns:1fr}}.management-tab-strip button{border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;text-align:left;min-height:64px;transition:background-color .18s var(--ease-out), color .18s var(--ease-out), transform .18s var(--ease-out);background:0 0;border:0;align-items:center;gap:10px;padding:12px 14px;display:flex}.management-tab-strip button:hover:not(:disabled){background:var(--card-soft);color:var(--text)}.management-tab-strip button:disabled{cursor:wait;opacity:.64}.management-tab-strip button.active{background:color-mix(in srgb, var(--blue) 12%, var(--card-soft));color:var(--blue)}.management-tab-strip button svg{flex:none;width:17px;height:17px}.management-tab-strip span{gap:3px;min-width:0;display:grid}.management-tab-strip strong{color:inherit;font-size:14px;font-weight:950}.management-tab-strip small{color:var(--muted);font-size:11px;font-weight:800;line-height:1.3}.management-loading-card{animation:management-panel-in .24s var(--ease-out);gap:14px;display:grid;overflow:hidden}.management-loading-copy{align-items:center;gap:14px;display:flex}.management-loading-copy strong{font-size:16px;font-weight:950;line-height:1.45;display:block}.management-loading-icon{background:var(--blue-soft);color:var(--blue);border-radius:16px;flex:none;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.management-loading-icon svg{width:17px;height:17px}.management-loading-bar{background:var(--card-soft);border-radius:999px;height:7px;position:relative;overflow:hidden}.management-loading-bar span{animation:management-loading-scan .72s var(--ease-out) infinite;background:linear-gradient(90deg, transparent, var(--blue), transparent);border-radius:inherit;width:46%;height:100%;display:block}.account-management-card{gap:16px;display:grid}.account-management-heading{align-items:flex-start}.account-management-actions{flex-wrap:wrap;align-items:center}.account-search-input-wrap{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);border-radius:999px;align-items:center;gap:8px;min-width:min(360px,100%);min-height:42px;padding:0 10px 0 14px;display:inline-flex}.account-search-input-wrap input{color:var(--text);font:inherit;background:0 0;border:0;outline:0;flex:1;min-width:120px;font-size:13px;font-weight:850}.account-search-input-wrap svg{width:14px;height:14px}.account-search-clear{color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.account-management-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.account-management-summary article{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);gap:4px;padding:14px;display:grid}.account-management-summary span,.account-role-copy small,.account-identity-cell small,.account-access-note p{color:var(--muted);font-size:12px;font-weight:850}.account-management-summary strong{font-size:22px;font-weight:950}.account-access-note{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;display:flex}.account-access-note p{margin:0}.mini-badge.muted{background:color-mix(in srgb, var(--muted) 12%, var(--card-soft));color:var(--muted)}.account-error-banner{margin:0}.account-table-scroll table{min-width:760px}.account-management-table tbody tr.visitor-row td{background:color-mix(in srgb, var(--muted) 6%, transparent)}.account-identity-cell,.account-role-copy{gap:3px;display:grid}.account-identity-cell strong,.account-role-copy strong{font-weight:950}.account-row-clickable{cursor:pointer}.account-row-clickable:hover td{background:color-mix(in srgb, var(--blue) 5%, transparent)}.account-identity-button{color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;width:100%;padding:0}.account-identity-button:disabled{cursor:default}.account-identity-button:not(:disabled):hover strong,.account-identity-button:not(:disabled):focus-visible strong{color:var(--blue);text-decoration:underline}.account-editor-modal{width:min(820px,100vw - 28px)}.account-editor-grid{margin-top:18px}.account-editor-meta{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;padding:14px;display:grid}.account-editor-meta span{color:var(--muted);gap:3px;font-size:12px;font-weight:850;display:grid}.account-editor-meta strong{color:var(--text);overflow-wrap:anywhere}.account-editor-actions{justify-content:space-between;align-items:center;display:flex}.account-password-section{border:1px solid var(--border);background:var(--card-soft);border-radius:12px;margin-top:1rem;padding:1rem}.account-password-section h3,.account-password-section p{margin:0}.account-password-section p{color:var(--muted);margin-top:.25rem;font-size:.86rem}.account-password-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin:.85rem 0}.account-password-grid small{color:var(--muted)}.account-password-grid label.valid small{color:var(--green)}.account-password-grid label.invalid small{color:var(--danger)}@media (width<=900px){.account-password-grid{grid-template-columns:1fr}}.account-editor-actions>div{gap:10px;display:flex}.button.danger{background:var(--danger-soft);border-color:color-mix(in srgb, var(--danger) 30%, var(--border));color:var(--danger)}@media (width<=720px){.account-editor-meta{grid-template-columns:1fr}.account-editor-actions{flex-direction:column-reverse;align-items:stretch}.account-editor-actions>div,.account-editor-actions button{width:100%}}.az-role-badge,.account-status-pill{border-radius:999px;align-items:center;gap:6px;min-height:28px;padding:0 10px;font-size:11px;font-weight:950;display:inline-flex}.az-role-badge svg{width:12px;height:12px}.az-role-super-admin{background:color-mix(in srgb, #ef4444 14%, var(--card-soft));color:#dc2626}.az-role-building-admin{background:color-mix(in srgb, var(--blue) 14%, var(--card-soft));color:var(--blue)}.az-role-control-operator{background:color-mix(in srgb, #14b8a6 14%, var(--card-soft));color:#0f766e}.az-role-safety-manager{background:color-mix(in srgb, var(--amber) 18%, var(--card-soft));color:var(--amber)}.az-role-worker{background:color-mix(in srgb, #22c55e 14%, var(--card-soft));color:#15803d}.az-role-visitor{background:color-mix(in srgb, var(--muted) 14%, var(--card-soft));color:var(--muted)}.az-role-device-collector{background:color-mix(in srgb, #8b5cf6 14%, var(--card-soft));color:#7c3aed}.az-role-system-api{background:color-mix(in srgb, #0f172a 12%, var(--card-soft));color:var(--text)}.account-status-pill{background:var(--card-soft);color:var(--muted)}.account-role-select{background:var(--card-soft);border:1px solid var(--border);color:var(--text);border-radius:999px;min-height:36px;padding:0 34px 0 12px;font-size:12px;font-weight:900}.account-role-select:disabled{cursor:not-allowed;opacity:.55}.account-building-disabled{color:var(--muted);font-size:12px;font-weight:900}.account-confirm-body{gap:14px;padding:4px 0 18px;display:grid}.account-confirm-body p{color:var(--muted);margin:0;font-size:14px;font-weight:850;line-height:1.6}@keyframes management-panel-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes management-loading-scan{0%{transform:translate(-115%)}to{transform:translate(230%)}}@keyframes beacon-side-card-enter{0%{opacity:0;transform:translate(18px)scale(.985)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes beacon-soft-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.admin-settings-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.admin-settings-tile{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);cursor:pointer;text-align:left;min-height:112px;transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border:0;align-items:flex-start;gap:12px;padding:16px;display:flex}.admin-settings-tile:hover:not(:disabled){background:color-mix(in srgb, var(--blue) 8%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 26%, transparent);transform:translateY(-1px)}.admin-settings-tile:disabled{cursor:not-allowed;opacity:.52}.admin-settings-tile svg{color:var(--blue);flex:none;width:18px;height:18px;margin-top:2px}.admin-settings-tile span{gap:6px;min-width:0;display:grid}.admin-settings-tile strong{font-size:16px;font-weight:950}.admin-settings-tile small{color:var(--muted);font-size:12px;font-weight:800;line-height:1.45}.admin-form-card{margin-bottom:0;transition:box-shadow .18s,transform .18s}.admin-form-card.active{box-shadow:var(--shadow-surface-hover);transform:translateY(-2px)}.admin-form-wide{grid-column:1/-1}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.form-grid label{color:var(--muted);gap:7px;font-size:13px;font-weight:900;display:grid}.form-grid input,.form-grid select{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 84%, transparent);color:var(--text);border:0;border-radius:14px;outline:none;width:100%;min-height:44px;padding:0 13px}.form-grid input:focus,.form-grid select:focus{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 52%, transparent)}.form-actions{grid-column:1/-1;justify-content:flex-start;margin-top:4px}.beacon-create-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.beacon-create-grid label:first-child,.beacon-create-grid label:nth-child(2),.beacon-create-grid label:nth-child(3){grid-column:span 1}.beacon-edit-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.beacon-edit-heading{padding-bottom:4px}.beacon-edit-section{animation:beacon-soft-rise .22s var(--ease-out) both;border:1px solid color-mix(in srgb, var(--border) 82%, transparent);transition:border-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border-radius:18px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:16px;display:grid}.beacon-edit-section:focus-within{border-color:color-mix(in srgb, var(--blue) 34%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 16%, transparent), 0 12px 30px color-mix(in srgb, var(--blue) 8%, transparent);transform:translateY(-1px)}.beacon-edit-section:nth-of-type(2){animation-delay:30ms}.beacon-edit-section:nth-of-type(3){animation-delay:60ms}.beacon-edit-section-wide{grid-column:1/-1;grid-template-columns:minmax(0,1.35fr) minmax(180px,.65fr)}.beacon-edit-coordinate-section{grid-template-columns:repeat(5,minmax(0,1fr))}.beacon-edit-section legend{color:var(--text);padding:0 8px;font-size:13px;font-weight:900}.beacon-edit-section label{color:var(--text);letter-spacing:0;transition:color .18s var(--ease-out), transform .18s var(--ease-out);font-size:13px;font-weight:880;position:relative}.beacon-edit-section label:focus-within{color:var(--blue);transform:translateY(-1px)}.beacon-edit-section input,.beacon-edit-section select{background:color-mix(in srgb, var(--card-soft) 88%, var(--card));min-height:48px;transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border-radius:16px}.beacon-edit-section input:focus,.beacon-edit-section select:focus{background:color-mix(in srgb, var(--card) 64%, var(--card-soft));transform:translateY(-1px)}.beacon-edit-section input[readonly]{color:var(--blue);font-weight:900}.beacon-edit-field-wide{grid-column:span 1}.beacon-edit-identity-stack,.beacon-edit-minor-grid{gap:12px;min-width:0;display:grid}.beacon-edit-minor-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start}.beacon-edit-identity-stack input{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px}.beacon-edit-actions{border-top:1px solid color-mix(in srgb, var(--border) 74%, transparent);justify-content:flex-end;align-items:center;margin-top:0;padding-top:14px}@media (width<=860px){.app-header-with-actions,.admin-status-card{flex-direction:column;align-items:flex-start}.header-admin-actions,.section-actions,.admin-quick-actions{justify-content:flex-start}.admin-grid,.admin-settings-grid,.management-tab-strip,.form-grid,.beacon-create-grid,.beacon-edit-form,.beacon-edit-section,.beacon-edit-section-wide,.beacon-edit-coordinate-section{grid-template-columns:1fr}.beacon-edit-section,.beacon-edit-section-wide{grid-column:1/-1}.account-management-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1440px){.admin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-settings-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.management-hub-copy{max-width:920px}}@media (width<=1180px){.management-hub-card{flex-direction:column;align-items:stretch}.management-hub-summary-grid{flex-basis:auto;grid-template-columns:repeat(3,minmax(0,1fr))}.management-session-meta{min-width:0}}@media (width<=560px){.management-hub-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.account-management-summary{grid-template-columns:1fr}.account-search-input-wrap{width:100%}}.login-gate-page{min-height:100vh;padding:max(24px, env(safe-area-inset-top)) 16px max(92px, env(safe-area-inset-bottom));align-items:center;width:min(1240px,100% - 32px);display:flex}.login-gate-shell{background:var(--card);border-radius:var(--radius-xl);box-shadow:var(--shadow-surface);flex:none;grid-template-columns:minmax(0,1.1fr) minmax(420px,.9fr);align-items:stretch;gap:0;width:min(100%,1120px);max-width:1120px;min-height:660px;margin:0 auto;display:grid;overflow:hidden}.login-media-panel{color:#fff;background:linear-gradient(135deg,#3182f633,#0000 46%),linear-gradient(160deg,#101827 0%,#16324d 54%,#203a2d 100%);min-width:0;padding:30px;display:none;position:relative;overflow:hidden}.login-media-stage{height:100%;display:block}.login-building-preview{background-color:#ffffff14;background-image:linear-gradient(90deg,#ffffff0f 1px,#0000 1px),linear-gradient(0deg,#ffffff0f 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:36px 36px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border-radius:8px;height:100%;min-height:560px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff29,0 28px 80px #0000003d}.floor-strip,.beacon-dot,.scan-wave{position:absolute}.floor-strip{background:#ffffff21;border:1px solid #fff3;border-radius:8px}.floor-a{width:72%;height:34%;top:12%;left:10%}.floor-b{width:64%;height:28%;top:50%;left:18%}.floor-c{width:34%;height:18%;top:26%;left:48%}.beacon-dot{animation:login-dot-pulse 3.8s var(--ease-out) infinite, login-dot-drift-a 18s ease-in-out infinite alternate;z-index:3;background:#34d399;border:4px solid #ffffffb8;border-radius:999px;width:18px;height:18px;box-shadow:0 0 0 10px #34d39924}.beacon-dot.warning{background:#f59e0b;box-shadow:0 0 0 10px #f59e0b2e}.dot-a{animation-name:login-dot-pulse,login-dot-drift-a;top:25%;left:22%}.dot-b{animation-name:login-dot-pulse,login-dot-drift-b;animation-delay:-.8s,-3s;top:37%;left:62%}.dot-c{animation-name:login-dot-pulse,login-dot-drift-c;animation-delay:-1.4s,-6s;top:65%;left:46%}.dot-d{animation-name:login-dot-pulse,login-dot-drift-d;animation-delay:-2s,-9s;top:78%;left:31%}.dot-e{animation-name:login-dot-pulse,login-dot-drift-e;animation-delay:-2.8s,-12s;top:22%;left:76%}.dot-f{animation-name:login-dot-pulse,login-dot-drift-f;animation-delay:-3.4s,-15s;top:52%;left:14%}.scan-wave{inset-inline:0;background:linear-gradient(#0000,#60a5fa52,#0000);height:120px;animation:3s linear infinite login-scan;top:-120px}.login-gate-card{background:var(--card);flex-direction:column;justify-content:center;width:100%;min-width:0;max-width:100%;padding:clamp(24px,4vw,42px);display:flex;overflow:hidden}.login-gate-brand{align-items:center;gap:18px;margin-bottom:24px;display:flex}.login-gate-brand h1{margin-bottom:10px;font-size:clamp(30px,4vw,42px)}.login-gate-brand p:last-child,.login-hint{color:var(--muted);font-size:14px;font-weight:800;line-height:1.55}.login-gate-form{grid-template-columns:1fr}.login-signup-form{grid-template-columns:repeat(2,minmax(0,1fr))}.signup-email-label{grid-column:1/-1}.signup-email-grid{grid-template-columns:minmax(0,1fr) auto minmax(142px,.75fr);align-items:center;gap:8px;display:grid}.signup-email-grid:has(input[aria-label="이메일 도메인 직접 입력"]){grid-template-columns:minmax(0,1fr) auto minmax(132px,.62fr) minmax(0,.8fr)}.signup-email-grid input,.signup-email-grid select{min-width:0}.email-at{color:var(--muted);font-size:15px;font-weight:950}.email-preview{color:var(--blue);font-size:12px;font-weight:900;line-height:1.25}.email-preview.empty{color:var(--muted)}.auth-mode-tabs{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 84%, transparent);border-radius:14px;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:16px;padding:6px;display:grid}.auth-mode-tabs button{color:var(--muted);min-height:40px;transition:background .18s var(--ease-out), color .18s var(--ease-out), transform .18s var(--ease-out);background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:950;display:inline-flex}.auth-mode-tabs button.active,.auth-mode-tabs button:hover{background:var(--card);color:var(--blue);box-shadow:var(--shadow-surface)}.login-check-row{color:var(--muted);flex-direction:row;align-items:center;gap:8px;width:fit-content;min-height:24px;padding:2px 0;font-size:13px;font-weight:720;display:inline-flex!important}.login-check-row input{accent-color:var(--blue);box-shadow:none;width:16px;height:16px;min-height:16px;padding:0}.signup-hint,.login-signup-form .form-actions{grid-column:1/-1}.recaptcha-notice{color:var(--muted);grid-column:1/-1;max-width:420px;margin:10px 0 -7px;font-size:11px;font-weight:620;line-height:1.45}.login-lock-banner{background:var(--amber-soft);color:var(--amber);border-radius:14px;align-items:center;gap:8px;min-height:46px;margin-bottom:14px;padding:0 14px;font-size:13px;font-weight:950;display:flex}.login-hint{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 84%, transparent);border-radius:14px;padding:12px 14px}.login-hint strong{color:var(--blue)}.login-error{margin-bottom:14px}@keyframes login-dot-pulse{50%{transform:scale(1.08);box-shadow:0 0 0 18px #34d39914}}@keyframes login-scan{to{transform:translateY(560px)}}@keyframes login-dot-drift-a{to{translate:42px 28px}}@keyframes login-dot-drift-b{to{translate:-34px 38px}}@keyframes login-dot-drift-c{to{translate:48px -26px}}@keyframes login-dot-drift-d{to{translate:28px -48px}}@keyframes login-dot-drift-e{to{translate:-52px 34px}}@keyframes login-dot-drift-f{to{translate:56px -16px}}@media (width>=1024px){.login-media-panel{display:block}}@media (width<=1023px){.login-gate-shell{max-width:720px;min-height:0;display:block}}@media (width<=860px){.login-signup-form{grid-template-columns:1fr}:is(.signup-email-grid,.signup-email-grid:has(input[aria-label="이메일 도메인 직접 입력"])){grid-template-columns:minmax(0,1fr) auto minmax(132px,.8fr)}.signup-email-grid input[aria-label="이메일 도메인 직접 입력"]{grid-column:1/-1}}@media (width<=640px){.login-gate-page{width:min(100%,100% - 24px)}.login-gate-brand{flex-direction:column;align-items:flex-start}.auth-mode-tabs,:is(.signup-email-grid,.signup-email-grid:has(input[aria-label="이메일 도메인 직접 입력"])){grid-template-columns:1fr}.email-at{display:none}}.login-gate-card{position:relative}.login-gate-shell{transition:box-shadow .24s var(--ease-out)}.login-gate-shell.auth-shell-signup{box-shadow:var(--shadow-surface-hover)}.login-gate-card{transition:background-color .24s var(--ease-out)}.login-gate-card.auth-card-signup{background:var(--card)}.auth-form-motion{transform-origin:top;animation:.18s ease-in-out both auth-form-enter}.auth-form-viewport{width:100%;min-height:448px;display:grid;overflow:hidden}.auth-form-viewport-signup{min-height:448px}.auth-form-viewport>form{grid-area:1/1;align-self:start;width:100%;min-height:448px}.login-gate-form,.login-signup-form{grid-template-rows:auto}.login-gate-form .auth-form-actions,.login-signup-form .auth-form-actions{align-self:end}.login-signup-form{grid-template-columns:1fr;gap:14px;width:100%;min-width:0;max-width:100%}.signup-name-label,.signup-password-row,.login-signup-form .form-actions{grid-column:1/-1}.signup-password-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;display:grid}.signup-password-row label,.signup-email-label,.signup-name-label{min-width:0}.signup-email-grid:has(.custom-domain-input){grid-template-columns:minmax(0,.78fr) auto minmax(112px,.48fr) minmax(0,1fr)}.signup-email-grid{min-width:0;max-width:100%}.email-preview{letter-spacing:0;min-height:15px;transition:color .18s var(--ease-out), opacity .18s var(--ease-out), transform .18s var(--ease-out);font-size:11px;font-weight:720}.email-preview.valid{color:var(--green)}.email-preview.invalid{color:var(--danger)}.field-note{color:var(--muted);letter-spacing:0;min-height:11px;transition:color .18s var(--ease-out), transform .18s var(--ease-out);font-size:10px;font-weight:720;line-height:1.15}.field-note.valid{color:var(--green)}.field-note.invalid{color:var(--danger)}.auth-mode-tabs{position:relative;overflow:hidden}.auth-mode-tabs:before{background:var(--card);box-shadow:var(--shadow-surface);content:"";transition:transform .24s var(--ease-out), width .24s var(--ease-out);border-radius:10px;width:calc(50% - 9px);position:absolute;inset:6px auto 6px 6px}.auth-mode-tabs.auth-mode-signup:before{transform:translate(calc(100% + 6px))}.auth-mode-tabs button{transition:background .18s var(--ease-out), box-shadow .18s var(--ease-out), color .18s var(--ease-out), transform .18s var(--ease-out);z-index:1;position:relative;box-shadow:none!important;background:0 0!important}.auth-mode-tabs button:active{transform:none}.login-gate-form label,.login-signup-form label{letter-spacing:0;transition:color .18s var(--ease-out), transform .18s var(--ease-out);font-size:13px;font-weight:880;position:relative}.signup-email-label,.signup-name-label,.signup-password-row>label{color:var(--text)}.login-gate-form label:focus-within,.login-signup-form label:focus-within{color:var(--blue);transform:translateY(-1px)}.login-gate-form input,.login-signup-form input,.login-signup-form select{transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out)}.login-gate-form input:focus,.login-signup-form input:focus,.login-signup-form select:focus{background:color-mix(in srgb, var(--card) 64%, var(--card-soft));transform:translateY(-1px)}.login-check-row input:focus{background:0 0;transform:none}.login-signup-form label.valid input,.signup-email-label.valid .signup-email-grid input,.signup-email-label.valid .signup-email-grid select{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 44%, transparent)}.login-signup-form label.invalid input,.signup-email-label.invalid .signup-email-grid input,.signup-email-label.invalid .signup-email-grid select{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--danger) 44%, transparent)}.auth-submit-button{min-width:172px;min-height:52px;padding:0 26px;position:relative;overflow:hidden}.auth-submit-button:after{content:"";transition:transform .32s var(--ease-out);background:linear-gradient(90deg,#0000,#ffffff59,#0000);width:48%;position:absolute;inset:0 auto 0 -70%;transform:skew(-18deg)}.auth-submit-button:hover:not(:disabled):after,.auth-submit-button:focus-visible:after{transform:translate(360%)skew(-18deg)}.auth-form-actions{border-top:1px solid color-mix(in srgb, var(--border) 72%, transparent);justify-content:flex-end;align-items:center;gap:10px;margin-top:12px;padding-top:16px;display:flex}.auth-reset-button{background:var(--card-soft);color:var(--muted);flex:none;width:52px;height:52px}.auth-reset-button:hover:not(:disabled),.auth-reset-button:focus-visible{background:var(--danger-soft);color:var(--danger)}.auth-reset-button svg{transition:transform .22s var(--ease-out)}.auth-reset-button:hover:not(:disabled) svg,.auth-reset-button:focus-visible svg{transform:rotate(-42deg)}@keyframes auth-form-enter{0%{opacity:0}to{opacity:1}}@media (width<=860px){.signup-email-grid:has(.custom-domain-input){grid-template-columns:minmax(0,.82fr) auto minmax(112px,.55fr)}.signup-email-grid .custom-domain-input{grid-column:1/-1}.signup-password-row{grid-template-columns:1fr}}@media (width<=640px){.signup-email-grid:has(.custom-domain-input){grid-template-columns:1fr}.auth-mode-tabs:before{width:auto;height:calc(50% - 9px);inset:6px 6px auto}.auth-mode-tabs.auth-mode-signup:before{transform:translateY(calc(100% + 6px))}.auth-form-actions{grid-template-columns:52px minmax(0,1fr);display:grid}.auth-submit-button{width:100%;min-width:0}}.button.compact,.secondary-button.compact,.button.secondary.compact{min-height:36px;padding:0 11px}.button .material-icons,.button.secondary .material-icons,.secondary-button .material-icons,.icon-button .material-icons,.link-button .material-icons,.button svg,.button.secondary svg,.secondary-button svg,.icon-button svg,.link-button svg,.app-nav button svg{flex:none;width:16px;height:16px;font-size:18px;line-height:1}.table-actions{align-items:center;gap:6px;display:inline-flex}.icon-button,.link-button{cursor:pointer;border:0;justify-content:center;align-items:center;font-family:inherit;font-weight:900;display:inline-flex}.icon-button{background:var(--card-soft);color:var(--text);height:38px;transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border-radius:12px;width:38px}.icon-button:hover{background:color-mix(in srgb, var(--blue) 10%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 20%, transparent);color:var(--blue);transform:translateY(-1px)}.icon-button.danger{color:#ef4444}.icon-button.danger:hover{background:color-mix(in srgb, #ef4444 10%, var(--card-soft));box-shadow:inset 0 0 0 1px #ef444438}.icon-button.warning{background:var(--amber-soft);color:var(--amber)}.icon-button.warning:hover{background:var(--amber);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--amber) 22%, transparent);color:#fff}.button.warning{background:var(--amber);color:#fff}.button.warning:hover{box-shadow:0 16px 34px color-mix(in srgb, var(--amber) 26%, transparent)}.icon-button:disabled,.button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.55;transform:none}.link-button{color:var(--blue);background:0 0;padding:12px;text-decoration:none}.link-button:hover{text-decoration:underline}.selected-row td{background:color-mix(in srgb, var(--blue) 7%, transparent)}.beacon-detail-card{gap:18px;display:grid}.beacon-detail-grid,.modal-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.beacon-detail-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.beacon-detail-grid article,.modal-summary-grid article{background:var(--card-soft);border-radius:20px;gap:6px;padding:16px;display:grid}.beacon-detail-grid span,.modal-summary-grid span{color:var(--muted);font-size:12px;font-weight:900}.beacon-detail-grid strong,.modal-summary-grid strong{font-size:18px}.beacon-detail-grid small,.modal-summary-grid small{color:var(--muted);font-weight:800}.modal-backdrop{z-index:80;background:#0f172a73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.app-modal{background:var(--card);box-shadow:var(--shadow-card);border-radius:22px;width:min(100%,560px);max-width:560px;max-height:min(760px,100vh - 48px);padding:26px;overflow:auto}.app-modal-wide{width:min(100%,920px);max-width:920px}.modal-heading{gap:6px;display:grid}.modal-heading h2{letter-spacing:-.05em;margin:0;font-size:28px}.modal-heading p:last-child{color:var(--muted);margin:0;font-weight:700}.modal-heading-wide,.form-actions.modal-heading-wide{grid-column:1/-1}.manual-heading-modal{max-width:640px}.manual-heading-form{grid-template-columns:1fr}.manual-heading-knob-panel{background:var(--card-soft);animation:beacon-soft-rise .22s var(--ease-out) both;border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 76%, transparent);transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);place-items:stretch center;gap:12px;padding:16px;display:grid}.manual-heading-knob-panel:focus-within{background:color-mix(in srgb, var(--blue) 5%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent), 0 14px 34px color-mix(in srgb, var(--blue) 8%, transparent);transform:translateY(-1px)}.manual-heading-knob-panel .azimuth-knob{transition:box-shadow .18s var(--ease-out), transform .18s var(--ease-out)}.manual-heading-knob-panel .azimuth-knob:hover{transform:translateY(-1px)}.manual-heading-knob-panel .azimuth-knob:active{transform:translateY(0)scale(.99)}.manual-heading-knob-panel .azimuth-knob-header{justify-content:flex-start;width:100%}.manual-heading-inline-input{align-items:flex-start;gap:6px;min-width:136px;display:grid}.manual-heading-inline-input span{color:var(--muted);font-size:12px;font-weight:900}.manual-heading-inline-input input{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:inherit;width:128px;min-height:38px;padding:6px 9px;font-size:18px;font-weight:950}.manual-heading-inline-input input:focus{border-color:color-mix(in srgb, var(--blue) 70%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 14%, transparent);outline:none}.manual-heading-knob-panel .muted-text{text-align:center;margin:0}.heading-source-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.heading-override-summary{background:color-mix(in srgb, var(--blue) 9%, var(--card));border:1px solid color-mix(in srgb, var(--blue) 30%, var(--border));border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.heading-override-summary div{gap:4px;display:grid}.heading-override-summary span{color:var(--muted);font-size:12px;font-weight:900}.heading-override-summary strong{color:var(--text);font-size:24px;font-weight:950}.heading-override-summary em{background:var(--blue);color:#fff;white-space:nowrap;border-radius:999px;padding:7px 10px;font-size:12px;font-style:normal;font-weight:950}.edge-heading-selector{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-sm);gap:8px;padding:12px;display:grid}.edge-heading-selector span{color:var(--muted);font-size:12px;font-weight:900}.edge-heading-selector select{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:inherit;width:100%;min-height:40px;padding:8px 10px}.heading-source-choice{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);text-align:left;gap:6px;min-height:94px;padding:12px;display:grid}.heading-source-choice.active{border-color:color-mix(in srgb, var(--blue) 68%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 14%, transparent);background:var(--blue);color:#fff}.heading-source-choice:disabled{cursor:not-allowed;opacity:.54}.heading-source-choice span{color:var(--muted);font-size:12px;font-weight:900}.heading-source-choice strong{font-size:22px;font-weight:950}.heading-source-choice small{color:var(--muted);font-size:12px;font-weight:800}.heading-source-choice.active span,.heading-source-choice.active small,.heading-source-choice.active strong{color:#fff}.notification-modal{width:min(100%,1080px);max-width:min(1080px,100vw - 32px)}.notification-form textarea{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 84%, transparent);color:var(--text);font:inherit;resize:vertical;border:0;border-radius:16px;width:100%;min-height:96px;padding:13px 14px}.notification-form textarea:focus{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 72%, transparent);outline:none}.notification-target-summary,.notification-result-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.notification-result-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.notification-target-summary article,.notification-result-grid article{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);gap:5px;padding:14px;display:grid}.notification-target-summary span,.notification-result-grid span{color:var(--muted);font-size:12px;font-weight:900}.notification-target-summary strong,.notification-result-grid strong{color:var(--text);overflow-wrap:anywhere;min-width:0;font-size:20px;font-weight:950}.notification-target-summary small{color:var(--muted);font-size:12px;font-weight:750}.notification-actions{justify-content:flex-end}.notification-history-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px;display:grid}.notification-history-grid section{background:var(--card-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);gap:12px;min-width:0;padding:16px;display:grid}.compact-scroll{max-height:280px}.notification-table{min-width:620px}.delivery-status{border-radius:999px;padding:5px 9px;font-size:12px;font-weight:950;display:inline-flex}.delivery-status.SUCCESS{background:var(--green-soft);color:var(--green)}.delivery-status.PARTIAL{background:var(--amber-soft);color:var(--amber)}.delivery-status.FAILED{background:var(--danger-soft);color:var(--danger)}.delivery-status.NO_TOKENS,.delivery-status.UNKNOWN{background:var(--card);color:var(--muted)}.swal2-toss-cancel{background:var(--card-soft);color:var(--muted);cursor:pointer;border:0;border-radius:999px;min-height:44px;margin-left:8px;padding:0 22px;font-size:14px;font-weight:900}@media (width<=860px){.beacon-detail-grid,.modal-summary-grid{grid-template-columns:1fr}.app-modal{border-radius:22px;padding:20px}.notification-target-summary,.notification-result-grid,.notification-history-grid{grid-template-columns:1fr}.notification-actions{flex-direction:column;align-items:stretch}}.beacon-list-controls{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:12px;margin:16px 0 12px;display:grid}.beacon-list-layout{transition:gap .24s var(--ease-out), grid-template-columns .28s var(--ease-out);grid-template-columns:minmax(0,1fr);align-items:start;gap:18px;display:grid}.beacon-list-layout.detail-open{grid-template-columns:minmax(0,1.45fr) minmax(380px,.75fr)}.beacon-list-layout.detail-open .beacon-list-card,.beacon-detail-side-card{min-width:0}.beacon-list-layout.detail-open .beacon-list-card{transform:translateY(-1px)}.beacon-detail-side-card{animation:beacon-side-card-enter .24s var(--ease-out) both;scrollbar-width:thin;max-height:calc(100vh - 124px);transition:box-shadow .2s var(--ease-out), transform .2s var(--ease-out);align-self:start;position:sticky;top:96px;overflow:auto}.beacon-detail-side-card:hover{box-shadow:var(--shadow-surface-hover)}.beacon-detail-side-card .detail-actions-heading{align-items:flex-start;gap:12px}.beacon-detail-side-card .detail-actions-heading h2{letter-spacing:0;overflow-wrap:anywhere;font-size:22px}.side-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.side-detail-grid article{border-radius:var(--radius-sm);transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);padding:14px}.side-detail-grid article:hover{background:color-mix(in srgb, var(--blue) 4%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 16%, transparent);transform:translateY(-1px)}.beacon-side-fingerprint-detail{gap:14px;display:grid}.beacon-side-fingerprint-detail .fingerprint-detail-panel,.beacon-side-fingerprint-detail .fingerprint-insight-panel{gap:14px}.beacon-side-fingerprint-detail .fingerprint-insight-heading{display:none}.beacon-side-fingerprint-detail .fingerprint-kpi-grid,.beacon-side-fingerprint-detail .fingerprint-focused-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.beacon-side-fingerprint-detail .fingerprint-kpi:nth-child(3),.beacon-side-fingerprint-detail .fingerprint-kpi:nth-child(6){display:none}.beacon-side-fingerprint-detail .fingerprint-kpi{min-height:86px;padding:12px}.beacon-side-fingerprint-detail .fingerprint-kpi strong{font-size:16px}.beacon-side-fingerprint-detail .fingerprint-control-card{align-items:stretch;gap:10px;padding:12px;display:grid}.beacon-side-fingerprint-detail .fingerprint-control-card h3,.beacon-side-fingerprint-detail .fingerprint-card-heading h3{letter-spacing:0;font-size:15px}.beacon-side-fingerprint-detail .fingerprint-segmented-control button{min-height:30px;padding:0 9px;font-size:12px}.beacon-side-fingerprint-detail .fingerprint-analysis-grid{grid-template-columns:1fr}.beacon-side-fingerprint-detail .fingerprint-analysis-card,.beacon-side-fingerprint-detail .fingerprint-table-card{gap:10px;padding:12px}.beacon-side-fingerprint-detail .fingerprint-chart-wrap{padding:8px}.beacon-side-fingerprint-detail .fingerprint-line-chart{min-height:136px}.beacon-side-fingerprint-detail .fingerprint-direction-card{grid-column:auto}.beacon-side-fingerprint-detail .fingerprint-polar-wrap{grid-template-columns:1fr;padding:10px}.beacon-side-fingerprint-detail .fingerprint-polar-chart{min-height:190px}.beacon-side-fingerprint-detail .fingerprint-polar-meta{display:none}.beacon-side-fingerprint-detail .fingerprint-chart-legend{gap:6px 10px}.beacon-side-fingerprint-detail .fingerprint-chart-legend span,.beacon-side-fingerprint-detail .fingerprint-card-heading span{font-size:11px}.beacon-side-fingerprint-detail .fingerprint-source-values,.beacon-side-fingerprint-detail .fingerprint-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.beacon-side-fingerprint-detail .fingerprint-data-table{min-width:560px}.beacon-side-fingerprint-detail .fingerprint-data-table th,.beacon-side-fingerprint-detail .fingerprint-data-table td{padding:8px;font-size:12px}.beacon-filter-card{background:var(--card-soft);border:1px solid color-mix(in srgb, var(--border) 74%, transparent);border-radius:var(--radius-sm);min-width:0;transition:background-color .18s var(--ease-out), border-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);gap:12px;padding:14px;display:grid;box-shadow:inset 0 1px #ffffff52}.beacon-filter-card:focus-within{background:color-mix(in srgb, var(--blue) 4%, var(--card-soft));border-color:color-mix(in srgb, var(--blue) 28%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 12%, transparent), 0 12px 28px color-mix(in srgb, var(--blue) 7%, transparent);transform:translateY(-1px)}.beacon-filter-heading{align-items:center;gap:10px;display:flex}.beacon-filter-heading strong,.beacon-search-label{color:var(--text);font-size:14px;font-weight:900}.beacon-filter-icon{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);border-radius:12px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.beacon-filter-tags{flex-wrap:wrap;gap:8px;display:flex}.beacon-filter-tag{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);color:var(--muted);cursor:pointer;border-radius:999px;align-items:center;gap:8px;min-height:36px;padding:7px 12px;transition:background .18s,border-color .18s,color .18s,transform .18s;display:inline-flex}.beacon-filter-tag:hover{border-color:color-mix(in srgb, var(--blue) 42%, var(--border));color:var(--text);transform:translateY(-1px)}.beacon-filter-tag.active{background:color-mix(in srgb, var(--blue) 12%, var(--card));border-color:color-mix(in srgb, var(--blue) 54%, var(--border));color:var(--blue)}.beacon-filter-tag span{font-size:13px;font-weight:900}.beacon-filter-tag small{color:inherit;opacity:.72;font-size:11px;font-weight:900}.beacon-search-card{align-content:start}.beacon-search-input-wrap{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);color:var(--muted);min-height:44px;transition:background-color .18s var(--ease-out), border-color .18s var(--ease-out), box-shadow .18s var(--ease-out);border-radius:14px;align-items:center;gap:10px;padding:0 10px 0 12px;display:flex}.beacon-search-input-wrap:focus-within{background:color-mix(in srgb, var(--blue) 4%, var(--card));border-color:color-mix(in srgb, var(--blue) 38%, var(--border));box-shadow:0 0 0 4px color-mix(in srgb, var(--blue) 10%, transparent)}.beacon-search-input-wrap input{color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;min-width:0}.beacon-search-input-wrap input::placeholder{color:color-mix(in srgb, var(--muted) 68%, transparent)}.beacon-search-clear{color:var(--muted);cursor:pointer;height:30px;transition:background-color .18s var(--ease-out), color .18s var(--ease-out), transform .18s var(--ease-out);background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:30px;display:inline-flex}.beacon-search-clear:hover{background:color-mix(in srgb, var(--text) 8%, transparent);color:var(--text);transform:scale(1.04)}.beacon-filter-reset{margin-left:auto}@media (width<=860px){.beacon-list-layout.detail-open{grid-template-columns:1fr}.beacon-detail-side-card{max-height:none;position:static}.side-detail-grid,.beacon-side-fingerprint-detail .fingerprint-kpi-grid,.beacon-side-fingerprint-detail .fingerprint-analysis-grid,.beacon-side-fingerprint-detail .fingerprint-focused-grid,.beacon-side-fingerprint-detail .fingerprint-source-values,.beacon-side-fingerprint-detail .fingerprint-summary-grid,.beacon-list-controls{grid-template-columns:1fr}.beacon-filter-reset{margin-left:0}}.beacon-list-summary{background:var(--card-soft);border-radius:var(--radius-sm);color:var(--muted);transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);flex-wrap:wrap;align-items:center;gap:10px 16px;margin:14px 0;padding:12px 14px;font-size:13px;font-weight:850;display:flex}.beacon-list-summary:hover{background:color-mix(in srgb, var(--blue) 4%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 12%, transparent)}.beacon-list-summary strong{color:var(--text)}.beacon-list-table{min-width:1040px}.beacon-list-table tbody tr{transition:background-color .16s var(--ease-out), transform .16s var(--ease-out)}.beacon-list-table tbody tr:hover{background:color-mix(in srgb, var(--blue) 5%, transparent)}.beacon-list-table tbody tr:hover td:first-child{color:var(--blue)}.beacon-list-table tbody td{transition:background-color .16s var(--ease-out), color .16s var(--ease-out)}.beacon-list-table .link-button{transition:color .16s var(--ease-out), opacity .16s var(--ease-out), transform .16s var(--ease-out)}.beacon-list-table .link-button:hover{transform:translate(1px)}.table-badge{vertical-align:middle;margin-left:8px}.beacon-show-card,.beacon-fingerprint-detail-card{transition:box-shadow .2s var(--ease-out), transform .2s var(--ease-out);gap:16px;display:grid}.fingerprint-detail-panel{gap:16px;display:grid}.fingerprint-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.fingerprint-summary-grid article,.fingerprint-source-card{background:var(--card-soft);border-radius:var(--radius-sm);transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);gap:6px;padding:16px;display:grid}.beacon-side-fingerprint-detail .fingerprint-summary-grid article:hover,.beacon-side-fingerprint-detail .fingerprint-source-card:hover,.beacon-side-fingerprint-detail .fingerprint-analysis-card:hover,.beacon-side-fingerprint-detail .fingerprint-table-card:hover,.beacon-side-fingerprint-detail .fingerprint-focused-card:hover,.beacon-side-fingerprint-detail .fingerprint-chart-card:hover{background:color-mix(in srgb, var(--blue) 4%, var(--card-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 14%, transparent);transform:translateY(-1px)}.fingerprint-summary-grid article.manual{background:color-mix(in srgb, var(--green) 10%, var(--card-soft))}.fingerprint-summary-grid span,.fingerprint-source-card .eyebrow,.fingerprint-source-values span{color:var(--muted);font-size:12px;font-weight:900}.fingerprint-summary-grid strong{color:var(--text);font-size:20px;font-weight:950}.fingerprint-summary-grid small{color:var(--muted);font-weight:800}.fingerprint-source-card h3{margin:0;font-size:18px}.fingerprint-source-values{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.fingerprint-source-values strong{color:var(--text);margin-top:3px;font-size:15px;display:block}@media (width<=980px){.fingerprint-summary-grid,.fingerprint-source-values{grid-template-columns:1fr}}.fingerprint-insight-panel{gap:18px}.fingerprint-insight-heading{align-items:flex-start}.fingerprint-insight-heading h2{letter-spacing:-.04em}.fingerprint-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;display:grid}.edge-first-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.fingerprint-kpi{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);gap:6px;min-height:112px;padding:16px;display:grid}.fingerprint-kpi.primary{background:linear-gradient(135deg, color-mix(in srgb, var(--blue) 13%, var(--card)), var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 28%, transparent)}.fingerprint-kpi span,.fingerprint-card-heading span,.fingerprint-kpi small{color:var(--muted);font-size:12px;font-weight:900}.fingerprint-kpi strong{color:var(--text);letter-spacing:0;overflow-wrap:anywhere;min-width:0;font-size:22px;font-weight:950}.fingerprint-control-card,.fingerprint-analysis-card,.fingerprint-table-card{background:var(--card);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft), inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent)}.fingerprint-control-card{justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.fingerprint-control-card h3,.fingerprint-card-heading h3{letter-spacing:-.03em;margin:0;font-size:18px}.fingerprint-segmented-control{background:var(--card-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent);border-radius:14px;flex-wrap:wrap;gap:4px;padding:4px;display:inline-flex}.fingerprint-segmented-control button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:11px;min-height:34px;padding:0 12px;font-size:13px;font-weight:900}.fingerprint-segmented-control button.active{background:var(--blue);color:#fff;box-shadow:0 8px 18px color-mix(in srgb, var(--blue) 26%, transparent)}.fingerprint-analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.fingerprint-analysis-card,.fingerprint-table-card{gap:12px;padding:16px;display:grid;overflow:hidden}.fingerprint-edge-card{gap:14px;padding:16px;display:grid;overflow:hidden}.edge-quality-chip{border-radius:999px;padding:8px 11px;font-size:12px;font-weight:950}.edge-quality-chip.good{background:color-mix(in srgb, var(--green) 14%, transparent);color:var(--green)}.edge-quality-chip.warn,.edge-delta-warn{color:#d97706}.edge-quality-chip.warn{background:#f59e0b29}.edge-quality-chip.alert,.edge-delta-alert{color:var(--red)}.edge-quality-chip.alert{background:color-mix(in srgb, var(--red) 13%, transparent)}.edge-direction-card-grid{gap:12px;display:grid}.edge-direction-card{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-sm);gap:12px;padding:12px;display:grid}.edge-direction-card>header{justify-content:space-between;align-items:center;gap:10px;display:flex}.edge-direction-card>header strong{color:var(--text);font-size:15px;font-weight:950}.edge-direction-card>header span{color:var(--muted);font-size:12px;font-weight:800}.edge-direction-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.edge-direction-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);gap:10px;min-width:0;padding:12px;display:grid}.edge-direction-panel-title{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.edge-direction-panel-title small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:800;overflow:hidden}.edge-direction-metrics{gap:8px;margin:0;display:grid}.edge-direction-metrics div{justify-content:space-between;align-items:center;gap:10px;display:flex}.edge-direction-metrics dt{color:var(--muted);font-size:12px;font-weight:850}.edge-direction-metrics dd{color:var(--text);text-align:right;margin:0;font-size:13px;font-weight:950}.fingerprint-card-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.fingerprint-chart-wrap{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 68%, transparent);gap:8px;min-width:0;padding:12px;display:grid}.fingerprint-line-chart{width:100%;min-height:220px;display:block}.chart-axis{stroke:color-mix(in srgb, var(--muted) 72%, transparent);stroke-width:1px}.chart-grid-line{stroke:color-mix(in srgb, var(--border) 66%, transparent);stroke-width:1px}.chart-series-line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.chart-series-point{stroke:var(--card);stroke-width:2px}.chart-tick,.chart-axis-label{fill:var(--muted);font-size:12px;font-weight:800}.fingerprint-chart-legend{flex-wrap:wrap;gap:8px 16px;padding:0 4px 4px;display:flex}.fingerprint-chart-legend span{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:850;display:inline-flex}.fingerprint-chart-legend i{border-radius:999px;width:10px;height:10px;display:inline-block}.fingerprint-direction-card{grid-column:1/-1}.fingerprint-polar-wrap{grid-template-columns:minmax(280px,1fr) minmax(180px,260px);align-items:center;padding:16px}.fingerprint-polar-chart{width:100%;min-height:300px;display:block}.polar-ring{fill:color-mix(in srgb, var(--card) 80%, transparent);stroke:color-mix(in srgb, var(--border) 72%, transparent);stroke-width:1.25px}.polar-ring.outer{fill:color-mix(in srgb, var(--card-soft) 76%, transparent);stroke:color-mix(in srgb, var(--blue) 28%, var(--border));stroke-width:1.5px}.polar-axis{stroke:color-mix(in srgb, var(--muted) 46%, transparent);stroke-dasharray:5 7;stroke-width:1.2px}.polar-cardinal{fill:var(--text);font-size:15px;font-weight:950}.polar-heat-halo{opacity:.28}.polar-heat-point{stroke:var(--card);stroke-width:2.5px}.fingerprint-polar-meta{gap:14px;display:grid}.rssi-heat-legend{gap:8px;display:grid}.rssi-heat-legend span,.fingerprint-polar-stats span{color:var(--muted);justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:850;display:flex}.rssi-heat-legend i{border-radius:999px;width:34px;height:10px;display:inline-block}.rssi-heat-legend .heat-low{background:linear-gradient(90deg,#2563eb,#22d3ee)}.rssi-heat-legend .heat-mid{background:linear-gradient(90deg,#22d3ee,#facc15,#f97316)}.rssi-heat-legend .heat-high{background:linear-gradient(90deg,#f97316,#ef4444)}.fingerprint-polar-stats{background:var(--card);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 68%, transparent);gap:8px;padding:12px;display:grid}.fingerprint-polar-stats strong{color:var(--text);font-weight:950}.fingerprint-data-table{border-collapse:separate;border-spacing:0;color:var(--text);width:100%;min-width:760px}.fingerprint-data-table th,.fingerprint-data-table td{border-bottom:1px solid color-mix(in srgb, var(--border) 72%, transparent);text-align:left;padding:12px 10px;font-size:14px}.fingerprint-data-table th{background:color-mix(in srgb, var(--card-soft) 82%, transparent);color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:950}.fingerprint-data-table tbody tr{cursor:pointer}.fingerprint-data-table tbody tr:hover td,.fingerprint-data-table tbody tr.selected-row td{background:color-mix(in srgb, var(--blue) 8%, transparent)}.fingerprint-data-table.compact th,.fingerprint-data-table.compact td{padding:10px;font-size:13px}.magnetic-table{min-width:1040px}@media (width<=1180px){.fingerprint-kpi-grid,.edge-first-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=900px){.fingerprint-analysis-grid,.fingerprint-editor-grid{grid-template-columns:1fr}.fingerprint-control-card{flex-direction:column;align-items:stretch}.fingerprint-polar-wrap{grid-template-columns:1fr}}@media (width<=680px){.fingerprint-kpi-grid,.edge-first-kpis{grid-template-columns:1fr}.edge-direction-card>header,.edge-direction-panel-title{flex-direction:column;align-items:flex-start}.edge-direction-columns{grid-template-columns:1fr}.fingerprint-card-heading{flex-direction:column;align-items:flex-start}.fingerprint-polar-chart{min-height:250px}}.mobile-device-card{gap:18px;display:grid}.device-actions{flex-wrap:wrap;align-items:center}.compact-select-label{color:var(--muted);align-items:center;gap:8px;font-size:13px;font-weight:900;display:inline-flex}.compact-select-label select{background:var(--card-soft);border:1px solid var(--border);color:var(--text);border-radius:999px;min-height:40px;padding:0 36px 0 14px;font-weight:800}.device-source-note{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;font-size:13px;font-weight:800;display:flex}.device-source-note code{color:var(--text);font-size:13px;font-weight:900}.device-session-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.device-session-summary article{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px}.device-session-summary span{color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:900;display:block}.device-session-summary strong{letter-spacing:0;font-size:28px;line-height:1;display:block}.device-filter-toggle{justify-self:start}.device-session-table{min-width:1080px}.device-session-table th,.device-session-table td{white-space:nowrap}.device-id-chip,.device-session-meta{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;display:inline-flex}.device-id-chip{color:var(--blue)}.device-count-pair{align-items:center;gap:8px;display:inline-flex}.device-count-pair strong,.device-count-pair small{background:var(--card-soft);border:1px solid var(--border);color:var(--text);text-align:center;border-radius:999px;min-width:34px;padding:5px 9px;font-size:12px;font-weight:950}.device-count-pair small{color:var(--muted)}.device-timeline-panel{border:1px solid var(--border);border-radius:var(--radius-lg);gap:16px;padding:18px;display:grid}.device-timeline-context{color:var(--muted);margin:-8px 0 0;font-size:13px;font-weight:850}.device-timeline-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.device-timeline-summary article{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px}.device-timeline-summary span{color:var(--muted);margin-bottom:7px;font-size:12px;font-weight:900;display:block}.device-timeline-summary strong{color:var(--text);letter-spacing:0;font-size:24px;line-height:1;display:block}.device-timeline-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.device-timeline-card{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);gap:12px;min-width:0;padding:14px;display:grid}.device-timeline-card h3{font-size:18px}.table-scroll.compact{border-radius:var(--radius-sm);max-height:300px}.table-scroll.compact table{min-width:620px}.empty.compact{min-height:96px;margin:0}@media (width<=860px){.device-actions{flex-direction:column;align-items:stretch}.compact-select-label,.compact-select-label select,.device-actions .button{width:100%}.compact-select-label{flex-direction:column;align-items:stretch}.device-session-summary,.device-timeline-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.device-timeline-grid{grid-template-columns:1fr}}@media (width<=560px){.device-session-summary,.device-timeline-summary{grid-template-columns:1fr}}.direction-hero{position:relative;overflow:hidden}.direction-management-layout{grid-template-columns:minmax(0,1fr) minmax(260px,300px);align-items:start;gap:16px;display:grid}.direction-list-main{min-width:0;overflow:hidden}.direction-list-main .table-scroll{min-width:0;max-width:100%;overflow-x:auto}.direction-list-actions{align-items:center;gap:8px;display:flex}.direction-side-panel{align-self:start;gap:14px;display:grid;position:sticky;top:16px}.direction-side-heading{gap:12px;display:grid}.direction-side-heading h2{letter-spacing:0;margin:4px 0 0;font-size:clamp(22px,3vw,26px);line-height:1.1}.direction-side-heading span{color:var(--muted);margin-top:6px;font-size:13px;font-weight:850;line-height:1.45;display:block}.direction-side-actions{grid-template-columns:1fr;gap:8px;display:grid}.direction-side-actions .button,.direction-side-actions .icon-button{min-height:42px}.direction-side-actions .button{text-overflow:ellipsis;white-space:nowrap;justify-content:center;min-width:0;padding-inline:12px;overflow:hidden}.direction-outside-panel .button,.direction-outside-panel select,.direction-outside-panel .direction-info-strip{min-width:0;max-width:100%}.direction-outside-panel .direction-side-heading,.direction-outside-panel .direction-side-heading>div,.direction-outside-panel .direction-filter-grid,.direction-outside-panel .direction-compact-stats{min-width:0}.direction-outside-panel .direction-side-heading span,.direction-outside-panel .direction-info-strip{overflow-wrap:anywhere}.direction-outside-panel .direction-compact-stats span{min-width:0}.direction-side-filter-grid{grid-template-columns:1fr}.direction-side-filter-grid .button.secondary{justify-content:center;width:100%;min-height:42px}.direction-side-panel .direction-compact-stats{gap:6px;padding:7px}.direction-side-panel .direction-compact-stats span{justify-content:space-between;width:100%}.direction-filter-card,.direction-list-card{gap:18px;display:grid}.direction-filter-grid{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(120px,.48fr) minmax(150px,.58fr);gap:14px;display:grid}.direction-filter-grid.direction-side-filter-grid{grid-template-columns:1fr}.direction-filter-grid.direction-side-filter-grid label,.direction-filter-grid.direction-side-filter-grid select,.direction-filter-grid.direction-side-filter-grid button,.direction-filter-grid.direction-side-filter-grid .direction-info-strip{width:100%;min-width:0}.direction-filter-grid.direction-side-filter-grid .direction-info-strip{align-items:flex-start;line-height:1.45}.direction-filter-grid label{color:var(--muted);gap:8px;font-size:13px;font-weight:900;display:grid}.direction-filter-grid select{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);min-height:46px;padding:0 14px;font-weight:800}.direction-info-strip svg{color:var(--blue);flex:none;width:16px;height:16px}.direction-info-strip{background:var(--blue-soft);border:1px solid color-mix(in srgb, var(--blue) 24%, transparent);border-radius:var(--radius-md);color:var(--blue);align-items:center;gap:10px;padding:14px 16px;font-size:14px;font-weight:900;display:flex}.direction-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.direction-compact-stats{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;align-items:center;gap:8px;padding:8px;display:flex}.direction-compact-stats span{background:var(--card);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;min-height:32px;padding:0 11px;font-size:12px;font-weight:900;display:inline-flex}.direction-compact-stats strong{color:var(--text);font-size:14px;font-weight:950}.direction-table{min-width:920px}.direction-table td:first-child strong{font-weight:950;display:block}.direction-table td:first-child small{color:var(--muted);margin-top:4px;font-size:12px;font-weight:800;display:block}.floor-chip,.direction-badge{white-space:nowrap;border-radius:999px;align-items:center;min-height:28px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.floor-chip{background:var(--card-soft);border:1px solid var(--border);color:var(--muted)}.direction-badge.forward{background:var(--blue-soft);color:var(--blue)}.direction-badge.left{background:var(--green-soft);color:var(--green)}.direction-badge.right{background:var(--amber-soft);color:var(--amber)}.direction-badge.wrong{background:var(--danger-soft);color:var(--danger)}.route-node-table-wrap table{min-width:820px}.route-node-status{white-space:nowrap;border-radius:999px;align-items:center;min-height:28px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.route-node-status.active{background:var(--green-soft);color:var(--green)}.route-node-status.blocked{background:var(--danger-soft);color:var(--danger)}.direction-modal-preview{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);justify-content:space-between;align-self:end;align-items:center;gap:10px;min-height:46px;padding:0 14px;display:flex}.direction-modal-preview span{color:var(--muted);font-size:13px;font-weight:900}.direction-modal-preview strong{color:var(--blue);font-size:14px;font-weight:950}@media (width<=1100px){.tracking-side-panel.direction-outside-panel{width:min(320px,100vw - 32px);max-height:min(460px,100vh - 120px);top:auto;bottom:16px;right:16px}}@media (width<=980px){.direction-filter-grid,.direction-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.direction-filter-grid.direction-side-filter-grid{grid-template-columns:1fr}}@media (width<=640px){.direction-filter-grid,.direction-metric-grid{grid-template-columns:1fr}}@keyframes route-editor-panel-enter{0%{opacity:0;transform:translateY(10px)scale(.992)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes route-editor-tip-enter{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.route-graph-editor-shell{display:block;position:relative;overflow:visible}.route-left-panel,.route-context-panel{width:var(--editor-left-rail,300px);align-content:start;gap:10px;display:grid}.route-left-panel{grid-template-rows:auto minmax(0,1fr);min-height:0}.route-node-detail-panel{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:color-mix(in srgb, var(--card) 96%, transparent);border:1px solid var(--border);max-height:min(72vh,720px);right:calc(100% + 14px);top:var(--route-node-panel-top,0px);z-index:24;border-radius:10px;gap:12px;width:300px;padding:16px;transition:top .12s linear;animation:.22s cubic-bezier(.2,.72,.24,1) both route-editor-panel-enter;display:grid;position:absolute;overflow:auto;box-shadow:0 18px 46px #0f172a24}.route-left-panel .route-context-panel,.route-left-panel .route-node-detail-panel{width:auto;transition:none;position:static;top:auto;right:auto}.route-left-panel .route-context-panel{order:1;grid-area:1/1}.route-left-panel .route-node-detail-panel{z-index:1;order:2;grid-area:2/1;align-self:start;min-height:0;max-height:none;margin-top:2px;overflow:auto}.route-left-panel .route-node-detail-heading{grid-template-columns:34px minmax(0,1fr) auto}.route-left-panel .route-node-detail-icon{width:34px;height:34px}@media (width>=1320px){.route-graph-editor-shell{grid-template-columns:minmax(0,1fr);display:grid}.route-left-panel{height:fit-content;max-height:calc(100dvh - 142px);transform:translateX(calc(-1 * (100% + var(--editor-rail-gap))));z-index:7;grid-area:1/1;justify-self:start;position:sticky;top:124px;overflow:hidden}.route-left-panel .route-context-panel,.route-left-panel .route-node-detail-panel{width:auto}.route-graph-editor-shell .route-node-detail-panel{left:calc(-1 * (var(--editor-left-rail) + var(--editor-rail-gap)));max-height:calc(100dvh - 142px);width:var(--editor-left-rail);grid-area:1/1;justify-self:start;top:0;right:auto;overflow:auto}.route-graph-editor-shell .route-left-panel .route-node-detail-panel{grid-area:2/1;justify-self:stretch;width:auto;max-height:calc(100dvh - 266px);top:auto;left:auto;overflow:auto}.route-graph-editor-card{grid-area:1/1}}.route-node-detail-heading{grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.route-node-detail-heading h3{overflow-wrap:anywhere;margin:2px 0 0;font-size:18px;line-height:1.15}.route-node-detail-selection-count{color:var(--text-muted);margin:4px 0 0;font-size:12px;font-weight:700}.route-node-detail-heading button,.route-node-detail-icon{border-radius:12px;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.route-node-detail-icon{background:var(--blue-soft);border:1px solid color-mix(in srgb, var(--blue) 28%, var(--border));color:var(--blue);width:38px;height:38px}.route-node-detail-heading button{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000}.route-node-detail-heading button:hover,.route-node-detail-heading button:focus-visible{background:color-mix(in srgb, var(--muted) 10%, transparent);border-color:color-mix(in srgb, var(--muted) 18%, var(--border));color:var(--text);outline:0}.route-node-detail-heading-actions{align-items:center;gap:4px;display:inline-flex}.route-node-detail-heading-actions button.danger{color:var(--danger)}.route-node-detail-heading-actions button.danger:hover:not(:disabled),.route-node-detail-heading-actions button.danger:focus-visible{background:color-mix(in srgb, var(--danger) 10%, transparent);border-color:color-mix(in srgb, var(--danger) 26%, var(--border));color:var(--danger)}.route-node-detail-heading-actions button:disabled{cursor:not-allowed;opacity:.45}.route-edge-detail-panel{gap:12px;padding:14px}.route-edge-detail-panel .route-node-detail-heading h3{font-size:15px;line-height:1.25}.route-edge-detail-summary{background:var(--card-soft);border:1px solid color-mix(in srgb, var(--border) 84%, transparent);color:var(--text);border-radius:8px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;padding:9px 10px;display:grid}.route-edge-detail-summary span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:950;overflow:hidden}.route-edge-detail-summary span:last-child{text-align:right}.route-edge-detail-summary svg{color:var(--blue);font-size:11px}.route-edge-detail-list{gap:0;margin:0;display:grid}.route-edge-detail-list>div{border-bottom:1px solid color-mix(in srgb, var(--border) 58%, transparent);grid-template-columns:58px minmax(0,1fr);align-items:center;gap:12px;min-height:34px;padding:6px 0;display:grid}.route-edge-detail-list>div:last-child{border-bottom:0;padding-bottom:0}.route-edge-detail-list dt,.route-edge-detail-list dd{margin:0}.route-edge-detail-list dt{color:var(--muted);font-size:12px;font-weight:850}.route-edge-detail-list dd{color:var(--text);overflow-wrap:anywhere;text-align:right;min-width:0;font-size:13px;font-weight:850}.route-edge-detail-action{background:color-mix(in srgb, var(--danger) 8%, var(--card));border:1px solid color-mix(in srgb, var(--danger) 24%, var(--border));color:var(--danger);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:100%;min-height:38px;padding:0 12px;font-size:13px;font-weight:950;display:inline-flex}.route-edge-detail-action:hover:not(:disabled),.route-edge-detail-action:focus-visible{background:color-mix(in srgb, var(--danger) 12%, var(--card));border-color:color-mix(in srgb, var(--danger) 36%, var(--border));outline:0}.route-edge-detail-action:disabled{cursor:not-allowed;opacity:.5}.route-node-detail-list{gap:7px;margin:0;display:grid}.route-node-detail-field{gap:6px;display:grid}.route-node-detail-field span{color:var(--muted);font-size:11px;font-weight:950}.route-node-detail-field input{background:color-mix(in srgb, var(--card-soft) 72%, transparent);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);color:var(--text);border-radius:10px;outline:0;min-height:38px;padding:0 11px;font-size:13px;font-weight:850}.route-node-detail-field input:focus{border-color:color-mix(in srgb, var(--blue) 42%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 12%, transparent)}.route-node-detail-list>div{background:color-mix(in srgb, var(--card-soft) 62%, transparent);border:1px solid color-mix(in srgb, var(--border) 70%, transparent);border-radius:10px;gap:4px;padding:8px 11px;display:grid}.route-node-detail-list>.route-node-detail-two-column{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.route-node-detail-two-column>div{gap:4px;min-width:0;display:grid}.route-node-detail-list dt,.route-node-detail-list dd{margin:0}.route-node-detail-list dt{color:var(--muted);font-size:11px;font-weight:950}.route-node-detail-list dd{color:var(--text);overflow-wrap:anywhere;font-size:13px;font-weight:900}.route-node-detail-note{background:color-mix(in srgb, var(--card-soft) 76%, transparent);border:1px solid color-mix(in srgb, var(--border) 76%, transparent);color:var(--muted);border-radius:10px;margin:0;padding:8px 10px;font-size:11px;font-weight:850;line-height:1.45}body.route-editor-wide-mode{overflow:hidden}@media (width>=760px) and (width<=1366px) and (height<=900px){body.routing-tablet-focus-route{background:var(--bg);overflow:hidden}body.routing-tablet-focus-route main.routing-page{height:var(--app-nav-layout-height);margin-left:var(--app-nav-layout-left);width:var(--app-nav-layout-width);padding:0;overflow:hidden}body.routing-tablet-focus-route .app-view-transition{height:100%;animation:none}body.routing-tablet-focus-route .app-view-transition>:first-child{animation:none}body.routing-tablet-focus-route .route-graph-editor-shell{height:var(--app-nav-layout-height);min-height:0}body.routing-tablet-focus-route .route-graph-editor-card{box-shadow:none;height:var(--app-nav-layout-height);padding:max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));border:0;border-radius:0;grid-template-rows:auto auto minmax(0,1fr);gap:8px;margin:0;overflow:hidden}body.routing-tablet-focus-route .route-editor-header{pointer-events:none;right:max(8px, env(safe-area-inset-right));top:max(8px, env(safe-area-inset-top));z-index:9;justify-content:end;gap:0;position:absolute}body.routing-tablet-focus-route .route-editor-title-block,body.routing-tablet-focus-route .route-editor-summary{display:none}body.routing-tablet-focus-route .route-editor-window-actions{pointer-events:auto}body.routing-tablet-focus-route .route-editor-window-actions button{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 82%, transparent);min-width:42px;min-height:42px;box-shadow:0 10px 22px #0f172a1f}body.routing-tablet-focus-route .route-editor-view-row{padding-right:48px}body.routing-tablet-focus-route .route-editor-view-row,body.routing-tablet-focus-route .route-editor-view-tabs,body.routing-tablet-focus-route .route-editor-toolbar{border-radius:8px;gap:6px;padding:6px}body.routing-tablet-focus-route .route-editor-view-tabs button,body.routing-tablet-focus-route .route-editor-toolbar button{border-radius:8px;min-height:38px;padding:0 10px;font-size:12px}body.routing-tablet-focus-route .route-editor-toolbar{flex-wrap:nowrap;align-items:center;overflow-x:auto}body.routing-tablet-focus-route .route-editor-workspace,body.routing-tablet-focus-route .route-editor-stage-shell{min-height:0}body.routing-tablet-focus-route .route-editor-stage-shell{height:calc(var(--app-nav-layout-height) - 144px - env(safe-area-inset-top));max-height:calc(var(--app-nav-layout-height) - 144px - env(safe-area-inset-top));border-radius:8px}body.routing-tablet-focus-route .route-left-panel{max-height:calc(var(--app-nav-layout-height) - 16px);top:max(8px, env(safe-area-inset-top));z-index:20;position:absolute;overflow:hidden auto}body.routing-tablet-focus-route .route-left-panel .route-node-detail-panel{max-height:calc(var(--app-nav-layout-height) - 16px - env(safe-area-inset-top));border-radius:8px;width:272px}body.routing-tablet-focus-route .route-edge-detail-panel{width:258px;padding:12px}}.route-graph-editor-shell.wide-mode{--route-left-rail:288px;--route-right-rail:clamp(340px, 26vw, 520px);--route-wide-gap:12px;min-height:var(--app-nav-layout-height)}.route-graph-editor-shell.wide-mode .route-node-detail-panel{max-height:calc(var(--app-nav-layout-height) - 24px);z-index:130;width:300px;position:absolute;top:12px;left:12px;right:auto}.route-graph-editor-shell.wide-mode .route-left-panel{max-height:calc(var(--app-nav-layout-height) - 24px);width:var(--route-left-rail);z-index:131;position:absolute;top:12px;left:12px;overflow:hidden;transform:none}.route-graph-editor-shell.wide-mode .route-left-panel .route-node-detail-panel{max-height:calc(var(--app-nav-layout-height) - 24px - 124px);grid-area:2/1;width:auto;position:static;top:auto;left:auto;overflow:auto}.route-graph-editor-card{gap:16px;transition:margin .2s,transform .2s,width .2s;display:grid;overflow:visible}.route-graph-editor-card.active{border-color:color-mix(in srgb, var(--blue) 34%, var(--border))}.route-graph-editor-card.active .route-editor-stage-shell{border-color:color-mix(in srgb, var(--blue) 42%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 18%, transparent)}.route-graph-editor-card.wide-mode{background:color-mix(in srgb, var(--bg) 94%, var(--card));box-sizing:border-box;height:var(--app-nav-layout-height);bottom:var(--app-nav-layout-bottom);left:var(--app-nav-layout-left);right:var(--app-nav-layout-right);top:var(--app-nav-layout-top);width:var(--app-nav-layout-width);z-index:120;border-radius:0;grid-template-rows:auto auto auto minmax(0,1fr);align-content:stretch;gap:10px;margin:0;padding:12px;display:grid;position:fixed;overflow:hidden;transform:none}.route-graph-editor-shell.wide-mode.has-left-panel .route-graph-editor-card.wide-mode{padding-left:calc(12px + var(--route-left-rail) + var(--route-wide-gap))}.route-graph-editor-card.wide-mode.panel-nodes,.route-graph-editor-card.wide-mode.panel-edges{padding-right:calc(12px + var(--route-right-rail) + var(--route-wide-gap))}.route-graph-editor-card.wide-mode .route-editor-header{align-items:center}.route-graph-editor-card.wide-mode .route-editor-data-panel{max-height:calc(var(--app-nav-layout-height) - 24px);min-height:0;width:var(--route-right-rail);z-index:131;grid-template-rows:auto auto minmax(0,1fr);position:absolute;top:12px;right:12px;overflow:auto}.route-graph-editor-card.wide-mode .route-editor-data-scroll{min-height:0;max-height:none;overflow:auto}.route-editor-header{justify-content:space-between;align-items:start;gap:18px;display:flex}.route-editor-title-block{max-width:720px}.route-editor-header h2{margin-bottom:4px}.route-editor-header p:not(.eyebrow){color:var(--muted);margin:0;font-size:14px;font-weight:800;line-height:1.45}.route-editor-actions{place-items:flex-end end;gap:10px;min-width:330px;display:grid}.route-editor-summary{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.route-editor-summary span{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);border-radius:999px;align-items:center;gap:6px;min-height:32px;padding:0 12px;font-size:12px;font-weight:950;display:inline-flex}.route-editor-summary strong{color:var(--text);font-size:14px}.route-editor-summary span.dirty{background:var(--danger-soft);border-color:color-mix(in srgb, var(--danger) 26%, var(--border));color:var(--danger)}.route-editor-summary span.saved{background:var(--green-soft);border-color:color-mix(in srgb, var(--green) 26%, var(--border));color:var(--green)}.route-editor-window-actions{align-items:center;gap:8px;display:flex}.route-editor-window-actions button{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.route-editor-window-actions button:hover,.route-editor-window-actions button:focus-visible,.route-editor-window-actions button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);border-color:color-mix(in srgb, var(--blue) 38%, var(--border));color:var(--blue);outline:0}.route-editor-view-row{align-items:stretch;gap:10px;min-width:0;display:flex}.route-editor-view-tabs{isolation:isolate;background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex:none;align-items:center;gap:6px;padding:6px;display:flex}.route-editor-inline-context{flex:520px;min-width:min(420px,100%)}.route-editor-inline-context .floor-workspace-selector-card{background:var(--card-soft);border-radius:var(--radius-md);grid-template-columns:repeat(2,minmax(130px,1fr));align-items:end;gap:8px;height:100%;padding:8px 10px}.route-editor-inline-context .floor-workspace-selector-card label{gap:4px;min-width:0}.route-editor-inline-context .floor-workspace-selector-card select{width:100%;min-height:36px}.route-editor-view-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:8px;min-height:36px;padding:0 12px;font-size:12px;font-weight:950;transition:background .18s,color .18s,transform .18s;display:inline-flex;position:relative;overflow:hidden}.route-editor-view-tabs button:after{content:"";opacity:0;transform-origin:50%;background:currentColor;border-radius:999px;height:2px;transition:opacity .18s,transform .18s;position:absolute;bottom:4px;left:12px;right:12px;transform:scaleX(.35)}.route-editor-view-tabs button:hover,.route-editor-view-tabs button:focus-visible,.route-editor-view-tabs button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.route-editor-view-tabs button:active{transform:translateY(1px)scale(.98)}.route-editor-view-tabs button.active:after{opacity:.82;transform:scaleX(1)}.route-editor-view-tabs strong{background:color-mix(in srgb, var(--card) 78%, transparent);color:inherit;border-radius:999px;justify-content:center;align-items:center;min-width:22px;height:20px;padding:0 7px;font-size:11px;display:inline-flex}.route-editor-data-panel{background:color-mix(in srgb, var(--card-soft) 86%, transparent);border:1px solid var(--border);border-radius:var(--radius-md);gap:12px;min-height:0;padding:14px;animation:.22s cubic-bezier(.2,.72,.24,1) both route-editor-panel-enter;display:grid}.route-editor-data-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.route-editor-data-header h3{margin:0;font-size:17px}.route-editor-data-header span{background:var(--card);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:7px 10px;font-size:12px;font-weight:950}.route-editor-data-toolbar{background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.route-editor-data-toolbar>span{color:var(--muted);font-size:12px;font-weight:900}.route-editor-data-toolbar>span strong{color:var(--text)}.route-editor-pagination-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.route-editor-pagination-actions button,.route-editor-page-indicator{border-radius:10px;align-items:center;min-height:30px;padding:0 10px;font-size:12px;font-weight:950;display:inline-flex}.route-editor-pagination-actions button{background:var(--card-soft);border:1px solid var(--border);color:var(--muted);transition:background .18s,border-color .18s,color .18s,transform .18s}.route-editor-pagination-actions button:hover:not(:disabled),.route-editor-pagination-actions button.active{background:var(--blue-soft);border-color:color-mix(in srgb, var(--blue) 32%, var(--border));color:var(--blue)}.route-editor-pagination-actions button:active:not(:disabled){transform:translateY(1px)scale(.985)}.route-editor-pagination-actions button:disabled{cursor:not-allowed;opacity:.42}.route-editor-page-indicator{background:color-mix(in srgb, var(--blue) 10%, transparent);color:var(--blue);justify-content:center;min-width:64px}.route-editor-data-scroll{border:1px solid color-mix(in srgb, var(--border) 84%, transparent);overscroll-behavior:contain;border-radius:14px;max-height:min(82vh,1180px)}.route-editor-data-scroll.all{max-height:none}.route-editor-data-scroll table{min-width:920px}.route-editor-data-scroll th,.route-editor-data-scroll td{padding:7px 10px;font-size:11px}.route-editor-data-scroll thead th{background:color-mix(in srgb, var(--card-soft) 92%, var(--card));z-index:1;position:sticky;top:0}.route-editor-toolbar{background:var(--card-soft);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px;display:flex}.route-editor-help-wrap{position:relative}.route-editor-shortcut-help{justify-content:center;min-width:36px;padding:0}.route-editor-shortcut-popover{background:color-mix(in srgb, var(--card) 96%, transparent);border:1px solid color-mix(in srgb, var(--blue) 26%, var(--border));z-index:8;border-radius:8px;gap:10px;min-width:220px;padding:12px;display:grid;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 18px 42px #0f172a2e}.route-editor-shortcut-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.route-editor-shortcut-heading strong{color:var(--text);font-size:13px;font-weight:950}.route-editor-shortcut-heading button{min-width:28px;min-height:28px;padding:0}.route-editor-shortcut-popover dl{gap:6px;margin:0;display:grid}.route-editor-shortcut-popover dl div{grid-template-columns:74px 1fr;align-items:center;gap:10px;display:grid}.route-editor-shortcut-popover dt{background:var(--card-soft);border:1px solid var(--border);color:var(--text);text-align:center;border-radius:7px;min-height:26px;padding:5px 8px;font-size:11px;font-weight:950}.route-editor-shortcut-popover dd{color:var(--muted);margin:0;font-size:12px;font-weight:850}.route-editor-tool-group,.route-editor-segment{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.route-editor-segment{background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid var(--border);border-radius:12px;padding:4px}.route-editor-toolbar button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:7px;min-height:36px;padding:0 12px;font-size:12px;font-weight:950;transition:background .18s,color .18s,transform .18s;display:inline-flex}.route-editor-toolbar button:hover:not(:disabled),.route-editor-toolbar button:focus-visible,.route-editor-toolbar button.active{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.route-editor-toolbar button:active:not(:disabled){transform:scale(.97)}.route-editor-toolbar button:disabled{cursor:not-allowed;opacity:.44}.route-editor-undo{margin-left:auto}.route-editor-redo,.route-editor-save,.route-editor-clear{margin-left:0}.route-editor-toolbar .route-editor-save{background:color-mix(in srgb, var(--blue) 12%, var(--card));border:1px solid color-mix(in srgb, var(--blue) 30%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 7%, transparent);color:var(--blue);border-radius:10px;min-width:116px;min-height:40px;padding:0 16px;font-size:13px}.route-editor-toolbar .route-editor-save:hover:not(:disabled),.route-editor-toolbar .route-editor-save:focus-visible{background:color-mix(in srgb, var(--blue) 16%, var(--card));border-color:color-mix(in srgb, var(--blue) 40%, var(--border));color:var(--blue)}.route-editor-toolbar .route-editor-save svg{width:1.12em;height:1.12em}.route-editor-workspace{min-height:0;animation:.22s cubic-bezier(.2,.72,.24,1) both route-editor-panel-enter;display:grid}.route-editor-stage-data-actions{z-index:4;align-items:center;gap:8px;display:inline-flex;position:absolute;top:14px;right:14px}.route-editor-stage-data-actions .csv-action-group,.route-editor-data-header-actions .csv-action-group{background:color-mix(in srgb, var(--card) 90%, transparent);border:1px solid var(--border);border-radius:14px;padding:4px;box-shadow:0 10px 24px #0f172a14}.route-editor-data-header-actions{justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.route-graph-editor-card.wide-mode .route-editor-workspace{grid-template-columns:1fr}.route-editor-stage-shell{background:radial-gradient(circle at 30% 24%, color-mix(in srgb, var(--blue) 10%, transparent), transparent 28%), linear-gradient(180deg, color-mix(in srgb, var(--card-soft) 88%, transparent), var(--card));border:1px solid var(--border);border-radius:var(--radius-md);height:clamp(620px,70vh,900px);min-height:620px;position:relative;overflow:hidden}.route-graph-editor-card.wide-mode .route-editor-workspace,.route-graph-editor-card.wide-mode .route-editor-stage-shell{height:100%;min-height:0}.route-editor-stage{color:color-mix(in srgb, var(--muted) 72%, transparent);touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;min-height:100%;display:block}.route-editor-zoom-controls{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid var(--border);z-index:2;border-radius:16px;align-items:center;gap:6px;padding:6px;display:inline-flex;position:absolute;bottom:16px;right:16px;box-shadow:0 14px 36px #0f172a2e}.route-editor-zoom-controls button,.route-editor-zoom-controls input{color:var(--text);background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;min-width:34px;height:34px;font-size:12px;font-weight:950;display:inline-flex}.route-editor-zoom-controls button{cursor:pointer}.route-editor-zoom-controls button:hover,.route-editor-zoom-controls button:focus-visible{background:color-mix(in srgb, var(--blue) 12%, transparent);color:var(--blue);outline:0}.route-editor-zoom-controls input{background:var(--card-soft);text-align:center;width:56px}.route-editor-zoom-controls span{color:var(--muted);font-size:12px;font-weight:950}.route-editor-zoom-controls .fit{padding:0 10px}.route-editor-workspace.mode-node .route-editor-stage{cursor:crosshair}.route-editor-workspace.mode-edge .route-editor-stage{cursor:default}.route-editor-workspace.can-pan-stage .route-editor-stage{cursor:grab}.route-editor-workspace.mode-edge .route-editor-node{cursor:crosshair}.route-editor-workspace.panning-stage .route-editor-stage,.route-editor-workspace.dragging-node .route-editor-stage,.route-editor-node.dragging{cursor:grabbing}.route-editor-grid{fill:url(#route-editor-grid)}.route-editor-floorplan-image{opacity:.74;pointer-events:none}.route-editor-axis{stroke:color-mix(in srgb, var(--blue) 24%, transparent);stroke-dasharray:7 8;stroke-width:1.4px}#route-editor-arrow-beacon path{fill:#475569d1}#route-editor-arrow-escape path{fill:#2563ebdb}#route-editor-arrow-mixed path{fill:#3c69c8}#route-editor-arrow-preview path{fill:color-mix(in srgb, var(--danger) 84%, transparent)}.route-editor-edge-visible,.route-editor-edge-preview line{stroke-linecap:round;stroke-width:4.5px}.route-editor-edge-hit{cursor:pointer;opacity:0;pointer-events:stroke;stroke:#0000;stroke-linecap:round;stroke-width:28px}.route-editor-edge{cursor:pointer;outline:none}.route-editor-edge.tone-beacon .route-editor-edge-visible{stroke:#475569a3}.route-editor-edge.tone-escape .route-editor-edge-visible{stroke:#2563ebd1}.route-editor-edge.tone-mixed .route-editor-edge-visible{stroke:url(#route-editor-mixed-edge-gradient)}.route-editor-edge-preview line{stroke:color-mix(in srgb, var(--danger) 84%, transparent)}.route-editor-edge.bidirectional .route-editor-edge-visible,.route-editor-edge-preview.bidirectional line{stroke-dasharray:none}.route-editor-edge.oneway .route-editor-edge-visible,.route-editor-edge-preview.oneway line{stroke-dasharray:12 10}.route-editor-edge.blocked .route-editor-edge-visible{opacity:.58;stroke:color-mix(in srgb, var(--danger) 68%, transparent)}.route-editor-edge.selected .route-editor-edge-visible,.route-editor-edge:hover .route-editor-edge-visible,.route-editor-edge:focus-visible .route-editor-edge-visible{filter:drop-shadow(0 0 7px #2563eb75);stroke-width:8px}.route-editor-edge.selected .route-editor-edge-visible{stroke:#13254d}.route-editor-edge.dimmed{opacity:.44}.route-editor-edge-start{fill:#2563eb1a;pointer-events:none;stroke:#2563ebd6;stroke-dasharray:10 8;stroke-width:5px}.route-editor-node{cursor:pointer;filter:url(#route-editor-node-shadow);transform-box:fill-box;transform-origin:50%;transition:opacity .18s,transform .18s}.route-editor-node.draft{cursor:grab}.route-editor-node-socket{fill:color-mix(in srgb, var(--route-anchor-color,var(--blue)) 10%, var(--card));stroke:var(--route-anchor-color,var(--blue));stroke-width:var(--route-node-stroke-width,7px);transition:fill .18s,stroke .18s,stroke-width .18s,transform .18s}.route-editor-node-gem{fill:var(--route-node-color,var(--blue));stroke:#fff;stroke-width:var(--route-node-gem-stroke-width,2px);transition:fill .18s,opacity .18s,stroke .18s}.route-editor-node text{fill:var(--text);font-size:var(--route-node-label-size,18px);letter-spacing:0;pointer-events:none;text-anchor:middle;font-weight:950}.route-editor-node .route-editor-node-selected-code{fill:#fff;font-size:calc(var(--route-node-label-size,18px) * .72);paint-order:stroke;stroke:color-mix(in srgb, var(--blue) 76%, #0f172a);stroke-linejoin:round;stroke-width:4px}.route-editor-node .route-editor-node-code-label{fill:#fff;font-size:var(--route-node-label-size,15px);paint-order:stroke;stroke:#0f172ab8;stroke-linejoin:round;stroke-width:4px;font-weight:950}.route-editor-node.kind-fixed-anchor .route-editor-node-socket{stroke-dasharray:4 5}.route-editor-node.fallback .route-editor-node-socket{stroke:var(--route-anchor-color,#64748b)}.route-editor-node.unmatched .route-editor-node-socket{opacity:.78;stroke-dasharray:10 8}.route-editor-node.draft .route-editor-node-socket{fill:color-mix(in srgb, var(--route-anchor-color,#64748b) 14%, var(--card));stroke:var(--route-anchor-color,#64748b);stroke-dasharray:8 6}.route-editor-node.blocked .route-editor-node-socket{fill:color-mix(in srgb, #9ca3af 24%, var(--card));stroke:#6b7280}.route-editor-node.blocked .route-editor-node-gem{opacity:.6}.route-editor-node.locked .route-editor-node-socket{fill:color-mix(in srgb, var(--route-anchor-color,var(--blue)) 10%, var(--card))}.route-editor-node.dimmed{opacity:.46;transform:scale(.82)}.route-editor-node.dragging .route-editor-node-socket,.route-editor-node.selected .route-editor-node-socket,.route-editor-node:hover .route-editor-node-socket,.route-editor-node:focus-visible .route-editor-node-socket{fill:color-mix(in srgb, var(--route-anchor-color,var(--blue)) 18%, var(--card));stroke-width:var(--route-node-active-stroke-width,9px);outline:0}.route-editor-node.dragging .route-editor-node-gem,.route-editor-node.selected .route-editor-node-gem,.route-editor-node:hover .route-editor-node-gem,.route-editor-node:focus-visible .route-editor-node-gem{stroke-width:calc(var(--route-node-gem-stroke-width,2px) + 1px)}.route-editor-node.selected .route-editor-node-socket{stroke:var(--text)}.route-editor-node.blocked.selected .route-editor-node-socket,.route-editor-node.blocked:hover .route-editor-node-socket,.route-editor-node.blocked:focus-visible .route-editor-node-socket{fill:color-mix(in srgb, #9ca3af 30%, var(--card));stroke:#4b5563}.route-editor-node-blocked-slash{pointer-events:none;stroke:#4b5563;stroke-linecap:round;stroke-width:var(--route-node-slash-width,6px)}.route-editor-node-hover{background:color-mix(in srgb, var(--card) 94%, transparent);border:1px solid color-mix(in srgb, var(--blue) 24%, var(--border));pointer-events:none;z-index:3;border-radius:8px;gap:3px;min-width:196px;max-width:240px;padding:8px 10px;animation:.14s both route-editor-tip-enter;display:grid;position:absolute;box-shadow:0 16px 34px #0f172a2e}.route-editor-node-hover span{color:var(--blue);font-size:10px;font-weight:950}.route-editor-node-hover strong{color:var(--text);overflow-wrap:anywhere;font-size:12px;font-weight:950;line-height:1.25}.route-editor-node-hover small{color:var(--muted);font-size:11px;font-weight:800;line-height:1.35}@media (width<=1180px){.route-node-detail-panel{width:min(320px,100% - 24px);max-height:min(46vh,420px);top:12px;left:12px;right:auto}.route-editor-header,.route-editor-actions{justify-items:start;display:grid}.route-editor-actions{min-width:0}.route-editor-summary{justify-content:start}}@media (width<=980px){body.route-editor-wide-mode{overflow:auto}.route-left-panel,.route-context-panel{width:auto;max-height:none;position:static;top:auto;overflow:visible;transform:none}.route-left-panel .route-context-panel{position:static}.route-graph-editor-shell.wide-mode .route-left-panel{width:auto;max-height:none;position:static;top:auto;overflow:visible}.route-graph-editor-shell.wide-mode .route-left-panel .route-node-detail-panel,.route-graph-editor-shell.wide-mode .route-node-detail-panel{width:100%;max-height:none;position:static;top:auto;left:auto}.route-graph-editor-card.wide-mode,.route-graph-editor-shell.wide-mode.has-left-panel .route-graph-editor-card.wide-mode,.route-graph-editor-card.wide-mode.panel-nodes,.route-graph-editor-card.wide-mode.panel-edges{height:auto;min-height:0;padding:12px;position:static;overflow:visible}.route-graph-editor-card.wide-mode .route-editor-data-panel{width:auto;max-height:none;position:static;top:auto;bottom:auto;right:auto}}@media (width<=760px){.route-graph-editor-card.wide-mode{width:100%;left:auto;transform:none}.route-editor-view-row{display:grid}.route-editor-view-tabs,.route-editor-toolbar,.route-editor-tool-group,.route-editor-segment{grid-template-columns:1fr}.route-editor-view-tabs button,.route-editor-toolbar button,.route-editor-tool-group,.route-editor-segment{width:100%}.editor-marker-display-overlay,.editor-marker-display-overlay button{width:auto}.route-editor-inline-context{min-width:0}.route-editor-inline-context .floor-workspace-selector-card{grid-template-columns:1fr}}.route-node-detail-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.route-node-type-control{color:var(--muted);align-items:center;gap:6px;font-size:11px;font-weight:900;display:inline-flex}.route-node-type-control select,.route-node-type-select{background:var(--card-soft);border:1px solid var(--border);color:var(--text);border-radius:8px;min-height:30px;padding:0 8px;font-size:12px;font-weight:800}.route-node-type-control select:disabled,.route-node-type-select:disabled{cursor:not-allowed;opacity:.48}.route-node-type-grid{background:color-mix(in srgb, var(--card-soft) 72%, transparent);border:1px solid color-mix(in srgb, var(--border) 78%, transparent);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;width:100%;padding:4px;display:grid}.route-node-detail-actions .route-node-type-grid button{color:var(--text);text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:flex-start;align-items:center;gap:7px;min-height:34px;padding:0 9px;display:inline-flex}.route-node-detail-actions .route-node-type-grid button span{color:var(--text);align-items:center;gap:7px;font-size:12px;line-height:1.1;display:inline-flex}.route-node-detail-actions .route-node-type-grid button span:before{background:var(--route-node-type-color);box-shadow:0 0 0 3px color-mix(in srgb, var(--route-node-type-color) 14%, transparent);content:"";border-radius:999px;flex:none;width:7px;height:7px}.route-node-detail-actions .route-node-type-grid button.active{background:color-mix(in srgb, var(--route-node-type-color) 10%, var(--card));border-color:color-mix(in srgb, var(--route-node-type-color) 28%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--route-node-type-color) 12%, transparent)}.route-node-detail-actions button,.route-editor-row-action,.route-editor-row-actions button{background:var(--card-soft);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;min-height:30px;padding:0 10px;font-size:12px;font-weight:900;transition:background .18s,border-color .18s,color .18s,transform .18s;display:inline-flex}.route-node-detail-actions button:hover:not(:disabled),.route-editor-row-action:hover:not(:disabled),.route-editor-row-actions button:hover:not(:disabled){background:var(--primary-soft);color:var(--primary);border-color:#2563eb61;transform:translateY(-1px)}.route-node-detail-actions button.primary{background:var(--primary);border-color:var(--primary);color:#fff}.route-node-detail-actions button.primary:hover:not(:disabled),.route-node-detail-actions button.primary:focus-visible{background:color-mix(in srgb, var(--primary) 88%, black);border-color:color-mix(in srgb, var(--primary) 88%, black);color:#fff}.route-node-detail-actions button:disabled,.route-editor-row-action:disabled,.route-editor-row-actions button:disabled{cursor:not-allowed;opacity:.48}.route-editor-row-actions{white-space:nowrap;align-items:center;gap:6px;display:flex}.visually-hidden-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed}.csv-action-group{align-items:center;gap:6px;display:inline-flex}.csv-action-group .icon-button{width:36px;height:36px}.beacon-code-link{align-items:center;gap:6px;display:inline-flex}.new-row-badge{background:var(--blue);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:.68rem;font-weight:800;line-height:1;display:inline-flex}.csv-import-progress-modal{text-align:left;gap:14px;margin-top:8px;display:grid}.csv-import-progress-heading,.csv-import-progress-stats{justify-content:space-between;align-items:center;gap:12px;display:flex}.csv-import-progress-heading span,.csv-import-progress-stats{color:var(--muted)}.csv-import-progress-heading strong,.csv-import-progress-stats strong{color:var(--text)}.csv-import-progress-track{background:color-mix(in srgb, var(--border) 70%, transparent);border-radius:999px;height:10px;overflow:hidden}.csv-import-progress-track span{background:linear-gradient(90deg, var(--blue), #14b8a6);height:100%;transition:width .16s;display:block}.csv-import-progress-stats{font-size:.86rem}.floorplan-crop-actions{background:color-mix(in srgb, var(--card) 92%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent);border-radius:999px;flex:none;align-items:center;gap:4px;padding:4px;display:inline-flex}.mini-action-button{background:var(--blue);color:#fff;cursor:pointer;letter-spacing:0;border:0;border-radius:999px;justify-content:center;align-items:center;min-width:54px;height:30px;padding:0 11px;font-size:11px;font-weight:900;transition:background .18s,color .18s,opacity .18s,transform .18s;display:inline-flex}.mini-action-button.ghost{background:color-mix(in srgb, var(--card-soft) 82%, var(--card));color:var(--muted)}.mini-action-button:hover:not(:disabled){transform:translateY(-1px)}.mini-action-button:active:not(:disabled){transform:translateY(1px)scale(.985)}.mini-action-button:disabled{cursor:not-allowed;opacity:.42}.floorplan-canvas-wrap.crop-editing .floorplan-canvas{cursor:default}.floorplan-canvas-wrap.crop-edge-left .floorplan-canvas,.floorplan-canvas-wrap.crop-edge-right .floorplan-canvas{cursor:ew-resize}.floorplan-canvas-wrap.crop-edge-top .floorplan-canvas,.floorplan-canvas-wrap.crop-edge-bottom .floorplan-canvas{cursor:ns-resize}.floorplan-loading-state{background:color-mix(in srgb, var(--card) 92%, transparent);border-radius:var(--radius-md);box-shadow:var(--shadow-surface), inset 0 0 0 1px color-mix(in srgb, var(--border) 74%, transparent);text-align:left;z-index:8;align-items:center;gap:10px;width:100%;max-width:min(520px,100% - 48px);padding:22px;animation:.18s ease-out both floorplan-loading-enter;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.floorplan-loading-state>strong{color:var(--text);font-size:17px;font-weight:950}.floorplan-loading-state>span{color:var(--muted);font-size:13px;line-height:1.5}.floorplan-loading-steps{gap:8px;margin-top:4px;display:grid}.floorplan-loading-step{background:var(--card-soft);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);grid-template-columns:auto 1fr auto;align-items:center;gap:10px;min-height:38px;padding:0 12px;transition:background-color .18s,box-shadow .18s,transform .18s;display:grid}.floorplan-loading-step i{color:var(--muted);border-radius:999px;width:10px;height:10px;box-shadow:inset 0 0 0 2px}.floorplan-loading-step.loading i{background:var(--blue);box-shadow:0 0 0 5px color-mix(in srgb, var(--blue) 16%, transparent);color:var(--blue);animation:.9s ease-in-out infinite floorplan-loading-pulse}.floorplan-loading-step.ready{transform:translate(2px)}.floorplan-loading-step.ready i{background:var(--green);box-shadow:0 0 0 5px color-mix(in srgb, var(--green) 14%, transparent);color:var(--green)}.floorplan-loading-step.error i{background:var(--danger);box-shadow:0 0 0 5px color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger)}.floorplan-loading-step span{color:var(--text);font-size:13px;font-weight:850}.floorplan-loading-step strong{color:var(--muted);font-size:12px;font-weight:950}.floorplan-loading-step.ready strong{color:var(--green)}.floorplan-loading-step.error strong{color:var(--danger)}.floorplan-loading-step.loading strong{color:var(--blue)}@keyframes floorplan-loading-enter{0%{opacity:0;transform:translate(-50%,calc(8px - 50%))}to{opacity:1;transform:translate(-50%,-50%)}}@keyframes floorplan-loading-pulse{0%,to{opacity:.48;transform:scale(.82)}50%{opacity:1;transform:scale(1)}}.azimuth-knob-ring{transform:translate(-50%,-50%)}.azimuth-needle{transform:translate(-50%, -100%) rotate(var(--azimuth-deg));transform-origin:50% 100%;top:50%;left:50%}.azimuth-cardinal.north{transform:translate(-50%,-50%)}.azimuth-cardinal.east{transform:translate(50%,-50%)}.azimuth-cardinal.south{transform:translate(-50%,50%)}.azimuth-cardinal.west{transform:translate(-50%,-50%)}.dashboard-alert-summary-action{--alert-action-color:var(--danger);appearance:none;background:linear-gradient(135deg, color-mix(in srgb, var(--alert-action-color) 9%, var(--card)), var(--card) 62%), var(--card);border:1px solid color-mix(in srgb, var(--alert-action-color) 24%, var(--border));border-left:4px solid var(--alert-action-color);box-shadow:var(--shadow-surface);color:var(--text);cursor:pointer;text-align:left;min-width:0;min-height:clamp(94px,11vh,132px);transition:background-color .18s var(--ease-out), border-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border-radius:8px;gap:5px;padding:14px;display:grid;position:relative}.dashboard-alert-summary-action:after{background:color-mix(in srgb, var(--alert-action-color) 11%, var(--card));border:1px solid color-mix(in srgb, var(--alert-action-color) 24%, transparent);color:var(--alert-action-color);content:"열기";border-radius:999px;align-items:center;min-height:24px;padding:0 8px;font-size:10px;font-weight:950;display:inline-flex;position:absolute;top:12px;right:12px}.dashboard-alert-summary-action span{color:var(--alert-action-color);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:6px;padding-right:48px;font-size:10px;font-weight:950;display:inline-flex}.dashboard-alert-summary-action strong{color:var(--text);letter-spacing:0;font-size:20px;font-weight:950;line-height:1.1}.dashboard-alert-summary-action small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900;overflow:hidden}.dashboard-alert-summary-action em{color:color-mix(in srgb, var(--alert-action-color) 82%, var(--muted));align-self:end;font-size:11px;font-style:normal;font-weight:900}.dashboard-alert-summary-action:hover:not(:disabled),.dashboard-alert-summary-action:focus-visible{background:linear-gradient(135deg, color-mix(in srgb, var(--alert-action-color) 14%, var(--card)), var(--card) 62%), var(--card);border-color:color-mix(in srgb, var(--alert-action-color) 42%, var(--border));box-shadow:var(--shadow-surface-hover);transform:translateY(-1px)}.dashboard-alert-summary-action:disabled{--alert-action-color:var(--muted);cursor:not-allowed;opacity:.56;transform:none}.dashboard-event-log,.dashboard-route-node-ops{background:color-mix(in srgb, var(--surface-3) 34%, transparent);border:1px solid color-mix(in srgb, var(--border) 62%, transparent);border-radius:8px;gap:8px;min-width:0;padding:10px;display:grid}.dashboard-route-node-ops-heading,.dashboard-selected-route-node{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.dashboard-route-node-ops-heading div,.dashboard-selected-route-node div{gap:3px;min-width:0;display:grid}.dashboard-route-node-ops-heading span,.dashboard-selected-route-node small,.dashboard-route-node-empty,.dashboard-route-node-item small{color:var(--muted);font-size:11px;font-weight:850}.dashboard-route-node-ops-heading strong,.dashboard-selected-route-node strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:950;overflow:hidden}.dashboard-selected-route-node{background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);border-radius:7px;min-height:58px;padding:9px}.dashboard-route-edge-list,.dashboard-route-node-list{gap:5px;display:grid}.dashboard-route-edge-list{max-height:120px;overflow:auto}.dashboard-route-node-list{max-height:190px;overflow:auto}.dashboard-route-edge-item,.dashboard-route-node-item{background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);color:var(--text);cursor:pointer;border-radius:7px;align-items:center;gap:8px;min-width:0;min-height:42px;padding:8px 9px;display:grid}.dashboard-route-edge-item{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.dashboard-route-node-item{text-align:left;grid-template-columns:minmax(0,1fr) auto}.dashboard-route-edge-item span,.dashboard-route-node-item strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dashboard-route-edge-item strong,.dashboard-route-node-item em{border-radius:999px;justify-self:center;padding:5px 7px;font-size:11px;font-style:normal;font-weight:950}.dashboard-route-edge-item.active strong,.dashboard-route-node-item.active em{background:color-mix(in srgb, var(--green) 12%, var(--card));color:var(--green)}.dashboard-route-edge-item.blocked strong,.dashboard-route-node-item.blocked em{background:color-mix(in srgb, var(--danger) 12%, var(--card));color:var(--danger)}.dashboard-route-node-item.partial em{background:color-mix(in srgb, var(--amber) 14%, var(--card));color:var(--amber)}.dashboard-route-node-item.selected,.dashboard-route-edge-item:hover,.dashboard-route-edge-item:focus-visible,.dashboard-route-node-item:hover,.dashboard-route-node-item:focus-visible{border-color:color-mix(in srgb, var(--primary) 28%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 12%, transparent)}.dashboard-route-node-empty{margin:0;padding:8px 2px}.dashboard-event-log-heading{justify-content:space-between;align-items:center;min-height:24px;display:flex}.dashboard-event-log-heading span{color:var(--text);font-size:12px;font-weight:950}.dashboard-event-log-heading small{color:var(--muted);font-size:11px;font-weight:900}.dashboard-event-log-list{overscroll-behavior:contain;scrollbar-gutter:stable;gap:6px;max-height:156px;padding-right:3px;display:grid;overflow-y:auto}.dashboard-event-log-list:focus-visible{outline:2px solid color-mix(in srgb, var(--primary) 62%, transparent);outline-offset:2px;border-radius:7px}.dashboard-event-log-list p{color:var(--muted);margin:0;padding:8px 2px;font-size:12px;font-weight:850}.dashboard-event-log-item{--event-color:var(--blue);background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);border-radius:7px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;min-height:48px;padding:8px 9px;display:grid}.dashboard-event-log-item.info{--event-color:var(--blue)}.dashboard-event-log-item.success{--event-color:var(--green)}.dashboard-event-log-item.warning{--event-color:var(--amber)}.dashboard-event-log-item.danger{--event-color:var(--danger)}.dashboard-event-log-item i{background:var(--event-color);box-shadow:0 0 0 4px color-mix(in srgb, var(--event-color) 14%, transparent);border-radius:999px;width:8px;height:8px}.dashboard-event-log-item div{gap:2px;min-width:0;display:grid}.dashboard-event-log-item strong,.dashboard-event-log-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dashboard-event-log-item strong{color:var(--text);font-size:12px;font-weight:950}.dashboard-event-log-item span,.dashboard-event-log-item time{color:var(--muted);font-size:11px;font-weight:850}.dashboard-event-log-item time{white-space:nowrap;justify-self:end}:root{--surface-1:#fff;--surface-2:#f8fafc;--surface-3:#eef3f8;--primary:#2563eb;--primary-soft:#2563eb1f;--critical:#dc2626;--critical-soft:#dc26261a;--safe:#059669;--safe-soft:#0596691c;--warning:#d97706;--warning-soft:#d9770621;--focus-ring:0 0 0 4px color-mix(in srgb, var(--primary) 24%, transparent);--radius-xl:18px;--radius-lg:14px;--radius-md:10px;--radius-sm:8px;--shadow:0 14px 34px #0f172a12;--shadow-hover:0 18px 42px #0f172a1c;--shadow-surface:inset 0 0 0 1px #0f172a12, 0 1px 2px #0f172a0a, 0 14px 34px #0f172a12;--shadow-surface-hover:inset 0 0 0 1px #2563eb2e, 0 2px 6px #0f172a0f, 0 18px 42px #0f172a1c;--app-content-gutter:clamp(16px, 3vw, 52px)}[data-theme=dark]{--surface-1:#111821;--surface-2:#16202b;--surface-3:#1d2a38;--primary:#60a5fa;--primary-soft:#60a5fa26;--critical:#fb7185;--critical-soft:#fb718526;--safe:#34d399;--safe-soft:#34d39926;--warning:#fbbf24;--warning-soft:#fbbf2426;--shadow:0 14px 34px #0000004d;--shadow-hover:0 18px 42px #0006;--shadow-surface:inset 0 0 0 1px #ffffff14, 0 1px 2px #0003, 0 14px 34px #0000004d;--shadow-surface-hover:inset 0 0 0 1px #60a5fa38, 0 2px 6px #00000047, 0 18px 42px #0006}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:linear-gradient(180deg, color-mix(in srgb, var(--blue) 8%, transparent), transparent 420px), var(--bg)}body,button,select,input,textarea{letter-spacing:0}button,a,input,select,textarea,[role=button],[tabindex]:not([tabindex="-1"]){touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=button]:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{box-shadow:var(--focus-ring);outline:0}.app-header{background:color-mix(in srgb, var(--surface-1) 90%, transparent);min-height:72px}.app-header-copy h1{letter-spacing:0;align-items:center;gap:10px;line-height:1.08;display:flex}.app-header-copy h1 svg{color:var(--critical);flex:none;width:.86em;height:.86em}.app-header-copy p:last-child{max-width:760px}.app-nav{background:color-mix(in srgb, var(--surface-2) 92%, transparent);gap:6px}.app-nav button,.app-nav a{border-radius:var(--radius-sm);min-width:116px}.app-nav button[aria-current=page],.app-nav a[aria-current=page]{background:var(--primary-soft);color:var(--primary)}.button,.primary-button{background:var(--primary)}.button.secondary,.secondary-button,.file-button{background:var(--primary-soft);color:var(--primary)}.secondary-button.danger,.icon-button.danger{background:var(--critical-soft);color:var(--critical)}.button.warning,.icon-button.warning{background:var(--warning);color:#fff}.admin-session-pill{background:var(--safe-soft);color:var(--safe)}.user-avatar{background:var(--safe)}.card,.page-hero,.bento-card,.selector-card,.editor-card,.dashboard-floating-panel,.dashboard-map-footer-tray,.dashboard-alert-launcher{border:1px solid color-mix(in srgb, var(--border) 72%, transparent)}.bento-card:after{opacity:.6}.error-banner{background:var(--critical-soft);border:1px solid color-mix(in srgb, var(--critical) 28%, transparent);color:var(--critical)}.skeleton-card{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--primary) 8%, transparent), transparent), var(--surface-1)}.table-scroll,.bento-table-wrap{overscroll-behavior-x:contain;scrollbar-width:thin;max-width:100%}th{background:color-mix(in srgb, var(--surface-2) 86%, transparent);z-index:1;position:sticky;top:0}.icon-button{border:1px solid color-mix(in srgb, var(--border) 70%, transparent);min-width:44px;min-height:44px}.segmented-control,.marker-display-segment,.route-editor-segment,.floorplan-view-toggle{border-radius:var(--radius-sm)}.segmented-control button,.marker-display-segment button,.route-editor-segment button,.floorplan-view-toggle button{min-height:40px}.theme-toggle{background:var(--surface-1);border:1px solid color-mix(in srgb, var(--border) 72%, transparent);color:var(--text)}.app-footer{padding-bottom:calc(22px + env(safe-area-inset-bottom));background:0 0}@media (width<=820px){main{width:min(100% - 20px,1180px)}.app-header{padding-left:max(14px, env(safe-area-inset-left));padding-right:max(14px, env(safe-area-inset-right));align-items:flex-start;gap:12px;display:grid}.header-admin-actions{justify-content:flex-start;width:100%}.app-nav{padding-left:max(10px, env(safe-area-inset-left));padding-right:max(10px, env(safe-area-inset-right));justify-content:flex-start;top:auto}.app-nav button,.app-nav a{min-width:max-content;padding:0 14px}}@media (width<=520px){.app-header-copy h1{font-size:23px}.app-header-copy p:last-child,.admin-session-pill small{display:none}.button,.primary-button,.secondary-button,.file-button{width:100%}.header-action-button,.header-admin-actions .button,.header-admin-actions .secondary-button{width:auto}.theme-toggle{min-height:44px;padding:0 12px}}@media (prefers-reduced-motion:reduce){.app-view-transition,.app-view-transition>:first-child,.bento-card,.floorplan-loading-step.loading i{animation:none!important}}.dashboard-device-roster{background:linear-gradient(180deg, color-mix(in srgb, var(--surface-1) 94%, transparent), color-mix(in srgb, var(--surface-2) 88%, transparent)), var(--card);border-color:color-mix(in srgb, var(--border) 62%, transparent);box-shadow:0 18px 48px #0f172a29}.dashboard-roster-panel-body{gap:12px}.dashboard-device-roster .tactical-panel-title{border-bottom:1px solid color-mix(in srgb, var(--border) 68%, transparent);justify-content:space-between;align-items:center;padding-bottom:10px;display:flex}.dashboard-device-roster .tactical-panel-title h2{letter-spacing:0;font-size:18px}.dashboard-device-roster .mini-badge{background:color-mix(in srgb, var(--safe) 12%, var(--card));border:1px solid color-mix(in srgb, var(--safe) 28%, transparent);color:var(--safe)}.dashboard-roster-status-summary{background:color-mix(in srgb, var(--surface-3) 34%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:8px;display:grid}.dashboard-roster-status-donut{aspect-ratio:1;background:radial-gradient(circle, var(--card) 0 52%, transparent 53%), conic-gradient(var(--green) 0 var(--normal-end), var(--amber) var(--waiting-start) var(--waiting-end), #f97316 var(--uncertain-start) var(--uncertain-end), var(--danger) var(--lost-start) 100%);border-radius:999px;place-content:center;place-items:center;height:68px;display:grid}.dashboard-roster-status-donut strong{color:var(--text);font-size:17px;font-weight:950;line-height:1}.dashboard-roster-status-donut span{color:var(--muted);margin-top:3px;font-size:10px;font-weight:900;line-height:1}.dashboard-roster-status-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;min-width:0;display:grid}.dashboard-roster-status-chip{--status-color:var(--blue);appearance:none;background:color-mix(in srgb, var(--surface-3) 48%, var(--card));border:1px solid color-mix(in srgb, var(--muted) 14%, transparent);color:var(--muted);cursor:pointer;border-radius:999px;justify-content:space-between;align-items:center;gap:5px;min-width:0;min-height:26px;padding:0 8px;font-size:10px;font-weight:900;display:inline-flex}.dashboard-roster-status-chip.active,.dashboard-roster-status-chip:focus-visible{background:color-mix(in srgb, var(--status-color) 12%, var(--card));border-color:color-mix(in srgb, var(--status-color) 34%, var(--border));color:color-mix(in srgb, var(--status-color) 78%, var(--text))}.dashboard-roster-status-chip i{background:var(--status-color);border-radius:999px;flex:none;width:9px;height:9px}.dashboard-roster-status-chip strong{color:var(--text);margin-left:auto;font-size:11px;font-weight:950}.dashboard-roster-status-chip.normal{--status-color:var(--green)}.dashboard-roster-status-chip.waiting{--status-color:var(--amber)}.dashboard-roster-status-chip.uncertain{--status-color:#f97316}.dashboard-roster-status-chip.lost{--status-color:var(--danger)}.dashboard-roster-status-chip.completed{--status-color:#169ba5}.dashboard-roster-status-chip.guidance_ended{--status-color:#736bb0}.device-roster-item.completed em{color:#169ba5}.device-roster-item.guidance_ended em{color:#736bb0}.dashboard-roster-status-chip.all{--status-color:var(--blue)}.dashboard-device-roster .device-roster-toolbar{background:0 0;border:0;border-radius:0;min-height:auto;padding:0 2px}.dashboard-device-roster .device-roster-toolbar small{background:color-mix(in srgb, var(--surface-3) 64%, transparent);color:var(--muted);white-space:nowrap;border-radius:999px;padding:5px 8px}.dashboard-device-marker-scale-control,.dashboard-route-marker-scale-control{background:color-mix(in srgb, var(--surface-3) 34%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);color:var(--muted);border-radius:8px;grid-template-columns:auto minmax(96px,1fr) auto;align-items:center;gap:8px;min-height:42px;padding:8px 10px;display:grid}.dashboard-device-marker-scale-control span,.dashboard-device-marker-scale-control strong,.dashboard-route-marker-scale-control span,.dashboard-route-marker-scale-control strong{white-space:nowrap;font-size:11px;font-weight:950}.dashboard-device-marker-scale-control strong,.dashboard-route-marker-scale-control strong{color:var(--text);justify-self:end}.dashboard-device-marker-scale-control input,.dashboard-route-marker-scale-control input{accent-color:var(--blue);width:100%;min-width:0}.dashboard-route-marker-scale-control input{accent-color:#f97316}.dashboard-roster-list{background:color-mix(in srgb, var(--surface-3) 34%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent);border-radius:8px;gap:0;padding:4px}.dashboard-roster-list .muted-text{padding:12px}.device-list .device-roster-item{box-shadow:none;background:0 0;border:1px solid #0000;border-left:0;border-radius:7px;grid-template-columns:minmax(0,1fr) auto;gap:10px;min-height:58px;padding:9px 10px;position:relative}.device-list .device-roster-item+.device-roster-item{margin-top:2px}.device-list .device-roster-item:before{background:var(--status-color);content:"";opacity:.78;border-radius:999px;width:3px;height:calc(100% - 20px);position:absolute;top:10px;left:0}.device-list .device-roster-item:hover:not(:disabled){background:color-mix(in srgb, var(--primary) 6%, var(--card));border-color:color-mix(in srgb, var(--primary) 16%, transparent);transform:none}.device-list .device-roster-item.active{background:color-mix(in srgb, var(--status-color) 11%, var(--card));border-color:color-mix(in srgb, var(--status-color) 36%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--status-color) 18%, transparent)}.device-roster-main strong{letter-spacing:0;font-size:13px}.device-roster-main small{color:color-mix(in srgb, var(--muted) 88%, var(--text))}.device-roster-meta em{background:color-mix(in srgb, var(--status-color) 12%, var(--card));border:1px solid color-mix(in srgb, var(--status-color) 24%, transparent);color:var(--status-color);border-radius:999px;padding:5px 7px;line-height:1}.device-roster-meta small{color:var(--muted);justify-self:end}.selected-device-strip{background:linear-gradient(135deg, color-mix(in srgb, var(--muted) 7%, transparent), transparent 56%), color-mix(in srgb, var(--surface-2) 86%, transparent);border:1px solid color-mix(in srgb, var(--muted) 18%, var(--border));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--muted) 8%, transparent);border-left:0}.selected-device-strip dl div{background:color-mix(in srgb, var(--card) 78%, transparent);border:1px solid color-mix(in srgb, var(--border) 58%, transparent)}@media (width<=520px){.dashboard-device-roster .device-roster-toolbar{align-items:flex-start;display:grid}.device-timeline-session-picker{align-items:stretch;display:grid}.device-timeline-session-picker label{grid-template-columns:1fr;width:100%}.device-timeline-retention-label{justify-self:start}}.dashboard-deck-canvas,.dashboard-deck-canvas canvas{overscroll-behavior:auto;touch-action:pan-y}.dashboard-map-command-shell .dashboard-scope-panel,.dashboard-map-command-shell .dashboard-control-overview,.dashboard-map-command-shell .dashboard-device-timeline-card,.dashboard-map-command-shell .dashboard-device-roster{transition:border-color .22s var(--ease-out), box-shadow .22s var(--ease-out), opacity .22s var(--ease-out), transform .28s cubic-bezier(.2, .72, .24, 1);will-change:transform;position:fixed}.dashboard-map-command-shell .dashboard-control-overview{overscroll-behavior:contain;width:min(360px,100% - 24px);max-height:calc(100% - 154px);position:absolute;top:142px;left:12px;overflow:visible}.dashboard-map-command-shell .dashboard-control-overview.expanded .dashboard-overview-panel-body{overscroll-behavior:contain;min-height:0;max-height:calc(100dvh - 240px);overflow:auto}.dashboard-map-command-shell .dashboard-scope-panel{width:min(360px,100% - 24px);position:absolute;top:12px;left:12px;overflow:visible}.dashboard-map-command-shell .dashboard-device-roster{min-height:0;max-height:none;position:absolute;top:12px;right:12px;overflow:visible}.dashboard-map-command-shell .dashboard-device-timeline-card{max-height:min(50vh,520px);width:min(460px, calc(var(--app-nav-layout-width) - 24px));z-index:8;position:absolute;top:12px;right:12px;overflow:auto}.dashboard-map-command-shell .dashboard-device-roster.expanded{grid-template-rows:auto auto;display:grid}.dashboard-map-command-shell .dashboard-device-roster.timeline-active{opacity:0;pointer-events:none;transform:translate(18px)scale(.98)}.dashboard-map-command-shell .dashboard-device-roster.expanded .dashboard-roster-panel-body{min-height:0;overflow:visible}.dashboard-map-command-shell .dashboard-device-roster.expanded .dashboard-roster-list{overscroll-behavior:contain;min-height:0;max-height:min(50vh,520px);overflow:auto}.dashboard-map-command-shell .dashboard-live-device-roster.expanded .dashboard-roster-list{max-height:min(32vh,360px)}.dashboard-map-command-shell .dashboard-control-overview.collapsed{gap:clamp(10px,.8vw,14px);width:min(360px,100% - 24px);padding:14px;transform:translate(calc(-100% - 12px))}.dashboard-map-command-shell .dashboard-device-roster.collapsed{width:min(380px, calc(var(--app-nav-layout-width) - 24px));gap:clamp(10px,.8vw,14px);padding:14px;left:auto;transform:translate(calc(100% + 12px))}.dashboard-overview-panel-toggle,.dashboard-roster-panel-toggle{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:linear-gradient(180deg, color-mix(in srgb, var(--surface-1) 96%, transparent), color-mix(in srgb, var(--surface-2) 88%, transparent)), var(--card);border-color:color-mix(in srgb, var(--border) 70%, transparent);z-index:2;min-height:76px;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 10px 24px #0f172a1f,inset 0 0 0 1px #ffffff42}.dashboard-overview-panel-toggle{border-left:0;border-radius:0 12px 12px 0;right:-38px}.dashboard-roster-panel-toggle{border-right:0;border-radius:12px 0 0 12px;left:-38px}.dashboard-control-overview.collapsed .dashboard-overview-panel-toggle,.dashboard-device-roster.collapsed .dashboard-roster-panel-toggle{flex-direction:row;align-self:auto;width:38px;min-height:76px;padding:0}.dashboard-control-overview.expanded .dashboard-overview-panel-toggle,.dashboard-device-roster.expanded .dashboard-roster-panel-toggle{width:38px;min-height:76px;padding:0}.dashboard-overview-panel-toggle svg,.dashboard-roster-panel-toggle svg{width:14px;height:14px}.dashboard-control-overview.expanded .dashboard-overview-panel-toggle span,.dashboard-device-roster.expanded .dashboard-roster-panel-toggle span{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.dashboard-control-overview.collapsed .dashboard-overview-panel-toggle span,.dashboard-device-roster.collapsed .dashboard-roster-panel-toggle span{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;writing-mode:horizontal-tb;width:1px;height:1px;position:absolute;overflow:hidden}.dashboard-control-overview.expanded .dashboard-overview-panel-body,.dashboard-device-roster.expanded .dashboard-roster-panel-body{padding-top:40px}.dashboard-control-overview.collapsed .dashboard-overview-panel-body,.dashboard-device-roster.collapsed .dashboard-roster-panel-body{opacity:1;pointer-events:none;visibility:hidden}.dashboard-control-overview.expanded .dashboard-overview-panel-body,.dashboard-device-roster.expanded .dashboard-roster-panel-body{opacity:1;pointer-events:auto;visibility:visible}@media (width<=940px){.dashboard-map-command-shell .dashboard-control-overview.collapsed,.dashboard-map-command-shell .dashboard-device-roster.collapsed{transform:none}.dashboard-overview-panel-toggle,.dashboard-roster-panel-toggle{position:static;left:auto;right:auto}.dashboard-control-overview.collapsed .dashboard-overview-panel-body,.dashboard-device-roster.collapsed .dashboard-roster-panel-body{display:none}}.mobile-webview-shell{color:#14251f;background:#f4f7f6;min-height:100dvh}.mobile-webview-header{z-index:2;padding:max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) 1rem max(1rem, env(safe-area-inset-left));background:#fff;border-bottom:1px solid #dce6e2;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.mobile-webview-header h1{margin:.2rem 0 0;font-size:1.25rem}.mobile-eyebrow{color:#397363;letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:800}.mobile-icon-button{color:#245b4c;background:#fff;border:1px solid #ccdcd6;border-radius:.8rem;place-items:center;width:2.75rem;height:2.75rem;font-size:1rem;display:grid}.mobile-webview-content{width:min(100%,48rem);padding:1rem max(1rem, env(safe-area-inset-right)) max(1.5rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));margin:0 auto}.mobile-read-navigation{gap:.5rem;padding-bottom:.125rem;display:flex;overflow-x:auto}.mobile-read-navigation a{color:inherit;white-space:nowrap;border:1px solid #c8d8d1;border-radius:999px;align-items:center;min-height:44px;padding:0 1.125rem;text-decoration:none;display:inline-flex}.mobile-read-navigation a[aria-current=page]{color:#fff;background:#176b51;border-color:#176b51}.mobile-floorplan-selector{gap:.4rem;margin-top:1rem;display:grid}.mobile-floorplan-selector select{background:#fff;border:1px solid #c8d8d1;border-radius:.75rem;min-height:44px;padding:0 .75rem}.mobile-floorplan-read{background:#fff;border-radius:1rem;margin-top:1rem;padding:1rem;box-shadow:0 8px 24px #14251f14}.mobile-floorplan-read>header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.mobile-floorplan-read h2{margin:.2rem 0 .75rem}.mobile-floorplan-viewport{touch-action:pan-x pan-y pinch-zoom;background:#e8efec;border-radius:.75rem;min-height:18rem;max-height:65dvh;position:relative;overflow:auto}.mobile-floorplan-viewport img{object-fit:contain;width:100%;height:auto;min-height:18rem;display:block}.mobile-floorplan-marker{color:#fff;background:#176b51;border:2px solid #fff;border-radius:999px;place-items:center;min-width:28px;min-height:28px;padding:0 .35rem;font-size:.7rem;display:grid;position:absolute;translate:-50% -50%;box-shadow:0 2px 8px #00000047}.mobile-floorplan-empty{text-align:center;color:#52645d;background:#eef3f1;border-radius:.75rem;align-content:center;place-items:center;gap:.5rem;min-height:18rem;display:grid}.mobile-welcome-card{color:#fff;background:linear-gradient(135deg,#185d4b,#2f806a);border-radius:1rem;align-items:center;gap:.9rem;padding:1.1rem;display:flex;box-shadow:0 8px 22px #185d4b2e}.mobile-welcome-card>svg{font-size:1.5rem}.mobile-welcome-card div{gap:.2rem;display:grid}.mobile-welcome-card span{opacity:.82;font-size:.78rem}.mobile-welcome-card strong{font-size:1.1rem}.mobile-section{background:#fff;border:1px solid #dce6e2;border-radius:1rem;margin-top:1rem;padding:1rem}.mobile-section h2{margin:0 0 .8rem;font-size:1rem}.mobile-role-list{flex-wrap:wrap;gap:.45rem;display:flex}.mobile-role-list span{color:#185d4b;overflow-wrap:anywhere;background:#e4f2ed;border-radius:999px;padding:.35rem .55rem;font-size:.72rem;font-weight:800}.mobile-building-list{gap:.55rem;margin:.9rem 0 0;padding:0;list-style:none;display:grid}.mobile-building-list li{background:#f6f9f8;border-radius:.75rem;align-items:center;gap:.75rem;min-width:0;padding:.75rem;display:flex}.mobile-building-list li>svg{color:#397363}.mobile-building-list div{gap:.15rem;min-width:0;display:grid}.mobile-building-list strong{overflow-wrap:anywhere}.mobile-building-list small,.mobile-empty-copy{color:#667c74}.mobile-state-card{text-align:center;flex-direction:column;justify-content:center;align-items:center;max-width:30rem;min-height:100dvh;margin:0 auto;padding:2rem;display:flex}.mobile-state-card>svg{color:#397363;font-size:2rem}.mobile-state-card h1{margin:1rem 0 .4rem;font-size:1.25rem}.mobile-state-card p{color:#667c74;margin:0;line-height:1.6}.mobile-primary-button{color:#fff;min-height:2.75rem;font:inherit;background:#185d4b;border:0;border-radius:.75rem;align-items:center;gap:.5rem;margin-top:1.2rem;padding:.7rem 1rem;font-weight:800;display:inline-flex}.mobile-loader{border:3px solid #c9ddd6;border-top-color:#185d4b;border-radius:50%;width:2rem;height:2rem;animation:.8s linear infinite mobile-spin}@keyframes mobile-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.mobile-loader{border-top-color:#c9ddd6;animation:none}}@media (width>=48rem){.mobile-webview-content{padding-top:1.5rem}.mobile-section{padding:1.25rem}}@media (width<=47.99rem){.mobile-webview-content .monitoring-command-shell{--monitoring-left-rail:min(270px, calc(100vw - 32px));--monitoring-right-rail:min(340px, calc(100vw - 32px));--monitoring-scene-height:min(62vh, 520px)}.mobile-webview-content .monitoring-command-layout{display:block}.mobile-webview-content .monitoring-center-panel{min-width:0}}.shared-dashboard-read{border:1px solid color-mix(in srgb, var(--border) 86%, var(--green));background:var(--card);border-radius:1rem;margin-top:1rem;padding:1rem}.shared-dashboard-heading{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.shared-dashboard-heading span{color:var(--green);letter-spacing:.06em;font-size:.7rem;font-weight:800}.shared-dashboard-heading h2{margin:.2rem 0 0;font-size:1.1rem}.shared-dashboard-heading select{border:1px solid var(--border);background:var(--card);min-height:2.75rem;color:inherit;font:inherit;border-radius:.7rem;padding:.55rem .75rem}.shared-dashboard-counters{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.65rem;margin-top:1rem;display:grid}.shared-dashboard-counters article{background:var(--card-soft);border-radius:.8rem;gap:.2rem;min-width:0;padding:.8rem;display:grid}.shared-dashboard-counters span{color:var(--muted);overflow-wrap:anywhere;font-size:.75rem}.shared-dashboard-counters strong{font-size:1.35rem}.shared-dashboard-floors{gap:.55rem;margin-top:.8rem;display:grid}.shared-dashboard-floors article{border-top:1px solid var(--border);align-items:center;gap:.7rem;padding:.75rem;display:flex}.shared-dashboard-floors article>svg{color:var(--green)}.shared-dashboard-floors article div{gap:.15rem;min-width:0;display:grid}.shared-dashboard-floors article span,.shared-dashboard-floors p{color:var(--muted);font-size:.78rem}.shared-dashboard-state{background:var(--card-soft);color:var(--muted);border-radius:.8rem;margin-top:.8rem;padding:1rem}.shared-dashboard-state.error{background:var(--danger-soft);color:var(--danger);justify-content:space-between;align-items:center;gap:.75rem;display:flex}.shared-dashboard-state button{background:var(--green);min-height:2.75rem;color:var(--card);font:inherit;white-space:nowrap;border:0;border-radius:.65rem;font-weight:800}.dashboard-page>.app-view-transition>.shared-dashboard-read.compact{margin:0 0 .5rem}.shared-dashboard-read.dashboard-status-bar{box-sizing:border-box;border-color:var(--border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px 20px;min-height:48px;padding:8px 14px;display:flex}.dashboard-status-bar .shared-dashboard-heading{gap:12px}.dashboard-status-bar .rdmc-power-light{--led-color:#22c55e;border:1px solid color-mix(in srgb, var(--led-color) 65%, #17212b);background:var(--led-color);width:8px;height:8px;box-shadow:inset 0 1px 2px #ffffff70, 0 0 5px color-mix(in srgb, var(--led-color) 45%, transparent);border-radius:50%;flex:0 0 8px;align-self:center;display:inline-block}.shared-dashboard-read .visually-hidden{clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dashboard-status-bar .rdmc-power-light.warning{--led-color:#eab308}.dashboard-status-bar .rdmc-power-light.critical{--led-color:#ef4444}.dashboard-status-bar .shared-dashboard-heading-title{white-space:nowrap;align-items:baseline;gap:8px;display:flex}.dashboard-status-bar .shared-dashboard-heading h2{margin:0;font-size:13px;line-height:20px}.dashboard-status-bar .shared-dashboard-heading-title>span{color:var(--muted);letter-spacing:0;font-size:11px;font-weight:400}.dashboard-status-bar .shared-dashboard-heading select{border-radius:4px;max-width:180px;min-height:30px;padding:3px 8px;font-size:12px}.dashboard-status-bar .shared-dashboard-counters{flex-wrap:wrap;align-items:center;gap:6px 0;margin:0;display:flex}.dashboard-status-bar .shared-dashboard-counters article{border-left:1px solid var(--border);white-space:nowrap;background:0 0;border-radius:0;align-items:baseline;gap:8px;padding:0 14px;display:flex}.dashboard-status-bar .shared-dashboard-counters span{font-size:12px}.dashboard-status-bar .shared-dashboard-counters strong{font-variant-numeric:tabular-nums;font-size:15px;line-height:22px}.dashboard-status-bar .shared-dashboard-state{margin:0;padding:4px 8px;font-size:12px}.dashboard-status-bar .shared-dashboard-state button{min-height:30px;padding:3px 8px;font-size:12px}@media (width<=640px){.shared-dashboard-read.dashboard-status-bar{gap:8px;padding:8px 10px}.dashboard-status-bar .shared-dashboard-heading{width:100%}.dashboard-status-bar .shared-dashboard-counters{gap:8px 0}.dashboard-status-bar .shared-dashboard-counters article{padding:0 10px}}.movement-date-query-panel.shared-dashboard-read{background:linear-gradient(135deg, color-mix(in srgb, var(--card) 98%, transparent), color-mix(in srgb, var(--card-soft) 96%, transparent));border-color:color-mix(in srgb, var(--border) 86%, var(--green));z-index:80;margin:0 0 1rem;padding:1.05rem 1.15rem;position:relative;overflow:visible;box-shadow:0 16px 38px #16362d14}.movement-date-query-panel .shared-dashboard-header{grid-template-columns:minmax(13rem,.9fr) minmax(12rem,16rem) minmax(18rem,1.25fr);align-items:center;gap:1rem;display:grid}.movement-date-query-panel .shared-dashboard-header>div{min-width:0}.movement-date-query-panel .eyebrow{color:var(--green);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .25rem;font-size:.72rem;font-weight:900}.movement-date-query-panel h2{color:var(--text);letter-spacing:0;margin:0;font-size:clamp(1.05rem,1.8vw,1.35rem);font-weight:950;line-height:1.25}.movement-date-query-panel p{color:var(--muted);overflow-wrap:anywhere;margin:.38rem 0 0;font-size:.86rem;font-weight:750;line-height:1.45}.movement-date-query-control{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 86%, var(--green));border-radius:.85rem;gap:.5rem;min-width:0;padding:.86rem .95rem;display:grid;position:relative}.movement-date-query-control span{color:var(--muted);font-size:.76rem;font-weight:900}.movement-date-query-button{background:var(--card);border:1px solid color-mix(in srgb, var(--border) 86%, var(--green));color:var(--text);cursor:pointer;font:inherit;border-radius:.72rem;justify-content:space-between;align-items:center;gap:.75rem;width:100%;min-width:0;min-height:3.05rem;padding:.55rem .78rem;display:flex}.movement-date-query-button strong{color:var(--text);letter-spacing:.04em;font-size:1.08rem;font-weight:900}.movement-date-query-button svg{color:var(--muted);flex:none;width:1.05rem;height:1.05rem}.movement-date-query-button:focus-visible{border-color:var(--green);outline:0;box-shadow:0 0 0 3px #176b5124}.movement-date-calendar-popover{background:color-mix(in srgb, var(--card) 96%, var(--bg));border:1px solid color-mix(in srgb, var(--border) 82%, var(--green));color:var(--text);z-index:1600;border-radius:.9rem;gap:.86rem;min-width:min(23rem,100vw - 3rem);margin-top:.55rem;padding:1.05rem 1.18rem 1.18rem;display:grid;position:absolute;top:100%;left:0;box-shadow:0 24px 54px #0f172a3d}.movement-date-calendar-header{grid-template-columns:2.45rem minmax(0,1fr) 2.45rem;align-items:center;gap:.7rem;display:grid}.movement-date-calendar-header strong{border:1px solid color-mix(in srgb, var(--border) 76%, var(--green));text-align:center;border-radius:.35rem;justify-self:center;min-width:9.5rem;padding:.38rem .7rem;font-size:1rem;font-weight:850}.movement-date-calendar-header button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:.55rem;justify-content:center;align-items:center;width:2.45rem;height:2.45rem;display:inline-flex}.movement-date-calendar-header button:not(:disabled):hover{background:color-mix(in srgb, var(--green) 12%, transparent);color:var(--text)}.movement-date-calendar-header button:disabled{cursor:not-allowed;opacity:.34}.movement-date-calendar-weekdays,.movement-date-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.38rem;display:grid}.movement-date-calendar-weekdays span{color:var(--muted);text-align:center;font-size:.8rem;font-weight:850}.movement-date-calendar-weekdays span:first-child,.movement-date-calendar-weekdays span:last-child{color:var(--danger)}.movement-date-calendar-grid button{color:var(--text);cursor:pointer;font:inherit;background:0 0;border:1px solid #0000;border-radius:.55rem;justify-content:center;align-items:center;min-width:0;height:2.45rem;font-size:.92rem;font-weight:800;display:inline-flex}.movement-date-calendar-grid button.outside{color:color-mix(in srgb, var(--muted) 54%, transparent)}.movement-date-calendar-grid button:not(:disabled):hover{background:color-mix(in srgb, var(--green) 14%, transparent)}.movement-date-calendar-grid button.selected{background:var(--green);border-color:color-mix(in srgb, var(--green) 72%, var(--text));color:var(--card);box-shadow:0 0 0 3px color-mix(in srgb, var(--green) 22%, transparent)}.movement-date-calendar-grid button:disabled{color:color-mix(in srgb, var(--muted) 28%, transparent);cursor:not-allowed}.movement-date-event-slider{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 86%, var(--green));border-radius:.85rem;grid-template-columns:minmax(5.5rem,auto) 2.55rem minmax(9rem,1fr) minmax(7rem,auto);align-items:center;gap:.62rem;min-width:0;padding:.72rem .8rem;display:grid}.movement-date-event-slider>div{gap:.15rem;min-width:0;display:grid}.movement-date-event-slider span,.movement-date-active-event span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.7rem;font-weight:900}.movement-date-event-slider strong,.movement-date-active-event strong{color:var(--text);font-size:.98rem;font-weight:950;line-height:1.15}.movement-date-event-slider small,.movement-date-active-event small,.movement-date-empty-event{color:var(--muted);font-size:.74rem;font-weight:760;line-height:1.3}.movement-date-event-slider input[type=range]{accent-color:var(--green);width:100%;min-width:0}.movement-date-play-button{background:var(--green);color:var(--card);cursor:pointer;border:0;border-radius:.7rem;justify-content:center;align-items:center;width:2.55rem;height:2.55rem;padding:0;display:inline-flex}.movement-date-play-button svg{width:.92rem;height:.92rem}.movement-date-play-button:disabled{cursor:not-allowed;opacity:.42}.movement-date-active-event{background:color-mix(in srgb, var(--green) 8%, var(--card));border:1px solid color-mix(in srgb, var(--border) 84%, var(--green));border-radius:.7rem;gap:.18rem;min-width:0;padding:.55rem .65rem;display:grid}.movement-date-active-event small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.movement-date-empty-event{grid-column:2/-1;justify-self:start}.movement-date-query-panel .movement-date-session-slider{grid-area:1/3}.movement-date-query-panel .movement-date-event-slider:not(.movement-date-session-slider){grid-area:2/3}.movement-date-event-slider>small:not(.movement-date-empty-event),.movement-date-event-slider>[role=alert]{grid-column:1/-1}.movement-date-event-slider>button:not(.movement-date-play-button){grid-column:1/-1;justify-self:start;padding:.45rem .7rem}@media (width<=70rem){.movement-date-query-panel .shared-dashboard-header{grid-template-columns:minmax(0,1fr) minmax(13rem,18rem)}.movement-date-event-slider{grid-area:auto/1/auto/-1}}@media (width<=42rem){.movement-date-query-panel .shared-dashboard-header,.movement-date-event-slider{grid-template-columns:1fr}.movement-date-empty-event{grid-column:1/-1}.movement-date-play-button{width:100%}.movement-date-active-event small{white-space:normal}}.movement-statistics-panel-body{gap:12px}.dashboard-map-command-shell .movement-statistics-panel{top:112px}.movement-statistics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.movement-statistics-grid article,.movement-statistics-detail,.movement-statistics-route-summary>div,.movement-statistics-timeline-summary>div,.movement-statistics-active-event{background:color-mix(in srgb, var(--card) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 76%, transparent);border-radius:8px;box-shadow:0 10px 22px #0f172a12}.movement-statistics-grid article{gap:4px;min-width:0;padding:10px;display:grid}.movement-statistics-grid span,.movement-statistics-route-summary span,.movement-statistics-timeline-summary span,.movement-statistics-active-event span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.72rem;font-weight:800}.movement-statistics-grid strong{color:var(--text);font-size:1.34rem;line-height:1}.movement-statistics-grid small,.movement-statistics-route-summary small,.movement-statistics-timeline-summary small,.movement-statistics-active-event small,.movement-statistics-active-event p{color:var(--muted);font-size:.76rem;line-height:1.45}.movement-statistics-detail{padding:10px}.movement-statistics-detail dl{gap:8px;margin:0;display:grid}.movement-statistics-detail dl>div{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.movement-statistics-detail dt{color:var(--muted);font-size:.78rem;font-weight:700}.movement-statistics-detail dd{color:var(--text);text-align:right;margin:0;font-size:.86rem;font-weight:800}.movement-statistics-route-summary,.movement-statistics-timeline-summary{gap:8px;display:grid}.movement-statistics-route-summary>div,.movement-statistics-timeline-summary>div{gap:6px;padding:10px;display:grid}.movement-statistics-route-summary strong,.movement-statistics-timeline-summary strong,.movement-statistics-active-event strong{color:var(--text);font-size:.94rem}.movement-statistics-timeline-summary input[type=range]{accent-color:var(--primary);width:100%}.movement-statistics-active-event{gap:5px;padding:9px;display:grid}.movement-statistics-active-event p{margin:0}@media (width<=30rem){.shared-dashboard-counters{grid-template-columns:repeat(2,minmax(0,1fr))}.shared-dashboard-state.error{flex-direction:column;align-items:stretch}}.mobile-routing-read .route-graph-editor-card{padding:14px}.mobile-routing-read .route-editor-header,.mobile-routing-read .route-editor-actions{align-items:flex-start}.mobile-routing-read .route-editor-stage-shell{touch-action:pan-x pan-y pinch-zoom;min-height:clamp(320px,58dvh,620px)}@media (width<=720px){.mobile-routing-read .route-editor-header{display:grid}.mobile-routing-read .route-editor-summary{flex-wrap:wrap}.mobile-routing-read .route-editor-view-tabs{overflow-x:auto}}.app-nav{--app-nav-closed-width:72px;--app-nav-open-width:284px;--app-nav-icon-size:44px;--app-nav-row-height:48px;--app-nav-inline-gap:14px;--app-nav-shell-padding:14px;--app-nav-content-width:calc(var(--app-nav-open-width) - (var(--app-nav-shell-padding) * 2));background:color-mix(in srgb, var(--surface-1,var(--card)) 96%, transparent);border-bottom:0;border-right:1px solid color-mix(in srgb, var(--border) 82%, transparent);padding:max(16px, env(safe-area-inset-top)) var(--app-nav-shell-padding) max(16px, env(safe-area-inset-bottom));transition:width .2s var(--ease-out), box-shadow .2s var(--ease-out), background-color .2s var(--ease-out);width:var(--app-nav-closed-width);z-index:20;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:16px;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden;box-shadow:10px 0 30px #0f172a12}.app-nav:hover,.app-nav:focus-within{width:var(--app-nav-closed-width);box-shadow:18px 0 48px #0f172a21}.app-nav-brand,.app-nav button,.app-nav a,.app-nav-account .admin-session-pill{align-items:center;gap:var(--app-nav-inline-gap);grid-template-columns:var(--app-nav-icon-size) minmax(0, 1fr);min-width:0;width:var(--app-nav-content-width);transition:transform .2s var(--ease-out);justify-content:start;padding:0;display:grid;transform:translate(0)}.app-nav-account .admin-session-pill,.app-nav-account .app-nav-session-action{box-sizing:border-box;width:100%}.app-nav:hover .app-nav-brand,.app-nav:focus-within .app-nav-brand,.app-nav:hover button,.app-nav:focus-within button,.app-nav:hover a,.app-nav:focus-within a,.app-nav:hover .app-nav-account .admin-session-pill,.app-nav:focus-within .app-nav-account .admin-session-pill{transform:translate(0)}.app-nav-brand{min-height:72px}.app-nav-icon-cell{height:var(--app-nav-icon-size);min-width:var(--app-nav-icon-size);width:var(--app-nav-icon-size);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.app-nav-icon-cell>svg,.app-nav-icon-cell.user-avatar{z-index:1;position:relative}.app-nav-brand-mark{background:var(--primary,var(--blue));border-radius:var(--radius-sm);color:#fff;font-size:22px}.app-nav-brand-copy,.app-nav-label,.app-nav-account-copy,.app-nav-session-action>span:last-child{clip-path:inset(0 100% 0 0);opacity:0;text-overflow:ellipsis;min-width:0;transition:opacity .14s var(--ease-out), clip-path .2s var(--ease-out);white-space:nowrap;overflow:hidden}.app-nav:hover .app-nav-brand-copy,.app-nav:focus-within .app-nav-brand-copy,.app-nav:hover .app-nav-label,.app-nav:focus-within .app-nav-label,.app-nav:hover .app-nav-account-copy,.app-nav:focus-within .app-nav-account-copy,.app-nav:hover .app-nav-session-action>span:last-child,.app-nav:focus-within .app-nav-session-action>span:last-child{clip-path:inset(0 100% 0 0);opacity:0}.app-nav-brand-copy{gap:5px;display:grid}.app-nav-brand-copy .eyebrow{margin:0;font-size:10px}.app-nav-brand-copy strong{color:var(--text);font-size:17px;font-weight:950;line-height:1.12}.app-nav-brand-copy span{color:var(--muted);white-space:normal;font-size:12px;font-weight:750;line-height:1.38}.app-nav-list{scrollbar-width:thin;gap:6px;min-height:0;display:grid;overflow:hidden auto}.app-nav button,.app-nav a{border-radius:var(--radius-sm);color:var(--muted);height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);transition:background-color .18s var(--ease-out), color .18s var(--ease-out), transform .2s var(--ease-out);background:0 0;border:0;flex:none;font-size:14px;font-weight:900;position:relative}.app-nav button:after,.app-nav a:after{content:"";opacity:0;transform-origin:0;height:2px;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);background:currentColor;border-radius:999px;width:20px;position:absolute;bottom:7px;left:14px;transform:scaleX(.35)}.app-nav button.active,.app-nav button[aria-current=page],.app-nav a.active,.app-nav a[aria-current=page]{color:var(--primary,var(--blue));background:0 0}.app-nav button:hover,.app-nav a:hover{background:var(--primary-soft,var(--blue-soft))}.app-nav button.active:after,.app-nav button[aria-current=page]:after,.app-nav a.active:after,.app-nav a[aria-current=page]:after{opacity:0;transform:scaleX(1)}.app-nav button.active .app-nav-icon-cell,.app-nav button[aria-current=page] .app-nav-icon-cell,.app-nav a.active .app-nav-icon-cell,.app-nav a[aria-current=page] .app-nav-icon-cell{color:var(--primary,var(--blue))}.app-nav button svg,.app-nav a svg{flex:none;width:18px;height:18px}.app-nav-account{min-width:0;width:var(--app-nav-content-width);gap:8px;margin-top:auto;display:grid}.app-nav-account .admin-session-pill{border-radius:var(--radius-sm);color:var(--safe,var(--green));min-width:0;height:52px;min-height:52px;transition:background-color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .2s var(--ease-out);background:0 0;padding:0;font-size:12px;font-weight:950;transform:none;box-shadow:inset 0 0 0 1px #0000}.app-nav:hover .app-nav-account .admin-session-pill,.app-nav:focus-within .app-nav-account .admin-session-pill{background:var(--safe-soft,var(--green-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 72%, transparent)}.app-nav:hover .app-nav-account .admin-session-pill.muted,.app-nav:focus-within .app-nav-account .admin-session-pill.muted{background:var(--card-soft)}.app-nav-account .user-session-pill{gap:var(--app-nav-inline-gap);padding:0}.app-nav-account-copy{gap:2px;display:grid}.app-nav-session-action{opacity:0;pointer-events:none;height:0;min-height:0;transition:height .18s var(--ease-out), min-height .18s var(--ease-out), opacity .14s var(--ease-out), transform .18s var(--ease-out);background:0 0;border:1px solid #0000;overflow:hidden;transform:translateY(4px)}.app-nav:hover .app-nav-session-action,.app-nav:focus-within .app-nav-session-action{background:var(--primary-soft,var(--blue-soft));border-color:color-mix(in srgb, var(--primary,var(--blue)) 24%, transparent);height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);opacity:1;pointer-events:auto;transform:translateY(0)}.app-nav~main{margin-left:calc(var(--app-nav-closed-width) + max(14px, env(safe-area-inset-left)));max-width:none;padding:14px 14px calc(34px + env(safe-area-inset-bottom));width:calc(100% - var(--app-nav-closed-width) - max(14px, env(safe-area-inset-left)));margin-right:0}.app-nav~main.management-page,.app-nav~main.monitoring-page{width:calc(100% - var(--app-nav-closed-width) - max(14px, env(safe-area-inset-left)))}.app-nav~.app-footer,.app-nav~.theme-toggle{margin-left:calc(var(--app-nav-closed-width) + max(14px, env(safe-area-inset-left)))}body.route-editor-wide-mode .app-nav~main.routing-page,body.routing-tablet-focus-route .app-nav~main.routing-page{margin-left:var(--app-nav-layout-left);width:var(--app-nav-layout-width);padding:0}@media (width<=640px){.app-nav{--app-nav-open-width:min(280px, calc(100vw - 48px))}}@media (width<=900px){:root{--app-nav-layout-left:0px;--app-nav-layout-right:0px;--app-nav-layout-top:0px;--app-nav-layout-bottom:calc(64px + env(safe-area-inset-bottom));--app-nav-layout-width:100vw;--app-nav-layout-height:calc(100dvh - var(--app-nav-layout-bottom))}.app-nav{--app-nav-closed-width:100vw;--app-nav-open-width:100vw;--app-nav-content-width:auto;--app-nav-icon-size:42px;--app-nav-row-height:48px;border-right:0;border-top:1px solid color-mix(in srgb, var(--border) 82%, transparent);height:calc(64px + env(safe-area-inset-bottom));padding:8px max(10px, env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;width:100vw;display:grid;top:auto;bottom:0;left:0;overflow:hidden;box-shadow:0 -12px 30px #0f172a14}.app-nav:hover,.app-nav:focus-within{width:100vw;box-shadow:0 -14px 34px #0f172a1f}.app-nav-brand{width:auto;min-height:0;display:flex;transform:none}.app-nav-brand-copy,.app-nav-account,.app-nav-session-action{display:none}.app-nav-list{gap:6px;min-width:0;padding:0;display:flex;overflow:auto hidden}.app-nav button,.app-nav a{flex:0 0 46px;justify-content:center;width:46px;height:46px;min-height:46px;padding:0;display:inline-flex;transform:none}.app-nav:hover button,.app-nav:focus-within button,.app-nav:hover a,.app-nav:focus-within a{transform:none}.app-nav-label{display:none}.app-nav button:after,.app-nav a:after{bottom:4px;left:50%;transform:translate(-50%)scaleX(.35)}.app-nav button.active:after,.app-nav button[aria-current=page]:after,.app-nav a.active:after,.app-nav a[aria-current=page]:after{opacity:.75;transform:translate(-50%)scaleX(1)}.app-nav~main.app-main,.app-nav~main.dashboard-page,.app-nav~main.monitoring-page,.app-nav~main.floorplan-page,.app-nav~main.routing-page,.app-nav~main.management-page{box-sizing:border-box;max-width:none;height:auto;min-height:var(--app-nav-layout-height);padding:12px 12px calc(86px + env(safe-area-inset-bottom));width:100%;margin-left:0;overflow-x:hidden}.app-nav~main.app-main>.app-view-transition{width:100%;min-width:0}.app-nav~main.management-page .management-hub-card,.app-nav~main.management-page .management-tabs-card,.app-nav~main.management-page .admin-settings-card,.app-nav~main.management-page .card{border-radius:12px;width:100%;min-width:0;padding:14px}.app-nav~main.management-page .management-hub-card{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.app-nav~main.management-page .management-hub-summary-grid{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}.app-nav~main.management-page .management-tab-strip{grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.app-nav~main.management-page .management-tab-strip button,.app-nav~main.management-page .management-hub-summary-card{min-width:0}.app-nav~main.management-page :where(h1,h2,h3,strong,p,span,small){overflow-wrap:anywhere}.app-nav~main.dashboard-page .dashboard-control-grid,.app-nav~main.monitoring-page .monitoring-command-layout,.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode),.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode){grid-template-columns:minmax(0,1fr)}.app-nav~main.dashboard-page .dashboard-map-command-shell,.app-nav~main.monitoring-page .monitoring-command-shell,.app-nav~main.floorplan-page .floorplan-editor-shell,.app-nav~main.routing-page .route-graph-editor-shell{max-height:calc(var(--app-nav-layout-height) - 24px);width:100%;min-width:0;min-height:0;overflow:hidden auto}.app-nav~main.dashboard-page .dashboard-map-stage,.app-nav~main.dashboard-page .dashboard-deck-shell,.app-nav~main.dashboard-page .dashboard-deck-canvas{width:100%;min-height:420px}.app-nav~main.dashboard-page .dashboard-floating-panel,.app-nav~main.dashboard-page .dashboard-map-footer-tray,.app-nav~main.dashboard-page .dashboard-alert-launcher{max-width:100%}.app-nav~main.monitoring-page .monitoring-command-layout{gap:12px;display:grid}.app-nav~main.monitoring-page .monitoring-side-panel,.app-nav~main.monitoring-page .monitoring-context-panel,.app-nav~main.monitoring-page .monitoring-saved-views-panel{width:100%;min-width:0;max-width:100%;position:static}.app-nav~main.monitoring-page .monitoring-center-panel,.app-nav~main.monitoring-page .webgl-scene-card{width:100%;min-height:420px}.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode){gap:12px;display:grid}.app-nav~main.floorplan-page .floorplan-side-panel,.app-nav~main.floorplan-page .floorplan-left-panel,.app-nav~main.floorplan-page .floorplan-right-panel,.app-nav~main.floorplan-page .floorplan-center-container{width:100%;min-width:0;max-width:100%}.app-nav~main.floorplan-page .floorplan-canvas-wrap{min-height:360px;max-height:none;overflow:auto}.app-nav~main.routing-page .route-graph-editor-shell:not(.wide-mode){gap:12px;display:grid}.app-nav~main.routing-page .route-left-panel,.app-nav~main.routing-page .route-graph-editor-card,.app-nav~main.routing-page .route-editor-data-panel{width:100%;min-width:0;max-width:100%}.app-nav~main.routing-page .route-editor-header,.app-nav~main.routing-page .route-editor-actions,.app-nav~main.routing-page .route-editor-view-row,.app-nav~main.routing-page .route-editor-toolbar,.app-nav~main.routing-page .route-editor-view-tabs{flex-wrap:wrap;min-width:0}.app-nav~main.routing-page .route-editor-title-block p,.app-nav~main.routing-page .route-editor-summary{display:none}.app-nav~main.routing-page .route-editor-view-row,.app-nav~main.routing-page .route-editor-view-tabs,.app-nav~main.routing-page .route-editor-toolbar{scrollbar-width:thin;flex-wrap:nowrap;display:flex;overflow:auto hidden}.app-nav~main.routing-page .route-editor-view-tabs button,.app-nav~main.routing-page .route-editor-toolbar button,.app-nav~main.routing-page .route-editor-tool-group,.app-nav~main.routing-page .route-editor-segment{flex:none;width:auto}.app-nav~main.routing-page .route-editor-tool-group,.app-nav~main.routing-page .route-editor-segment{flex-wrap:nowrap;display:inline-flex}.app-nav~main.routing-page .route-editor-stage-shell{min-height:min(420px, calc(var(--app-nav-layout-height) - 220px))}.app-nav~main.routing-page .route-graph-editor-card:not(.wide-mode){max-height:calc(var(--app-nav-layout-height) - 190px);overflow:auto}body.route-editor-wide-mode .app-nav~main.routing-page,body.routing-tablet-focus-route .app-nav~main.routing-page{height:auto;min-height:var(--app-nav-layout-height);padding:12px 12px calc(86px + env(safe-area-inset-bottom));overflow-x:hidden}body.route-editor-wide-mode .app-nav~main.routing-page .route-graph-editor-shell,body.routing-tablet-focus-route .app-nav~main.routing-page .route-graph-editor-shell{height:auto;min-height:0}body.route-editor-wide-mode .app-nav~main.routing-page .route-graph-editor-card.wide-mode,body.routing-tablet-focus-route .app-nav~main.routing-page .route-graph-editor-card{width:100%;min-height:0;max-height:none;position:static;inset:auto}body.route-editor-wide-mode .app-nav~main.routing-page .route-editor-stage-shell,body.routing-tablet-focus-route .app-nav~main.routing-page .route-editor-stage-shell{height:min(420px, calc(var(--app-nav-layout-height) - 220px));min-height:min(300px, calc(var(--app-nav-layout-height) - 220px))}}.app-nav~main.app-main{box-sizing:border-box;min-width:0;max-width:none;display:block;overflow-x:clip}.app-nav~main.app-main :where(.dashboard-page,.dashboard-map-command-shell,.monitoring-command-shell,.floorplan-wide-layout,.floorplan-editor-shell,.route-graph-editor-shell,.management-hub-card,.management-tabs-card,.admin-settings-card,.admin-settings-grid,.beacon-list-layout){min-width:0;max-width:none}.app-nav~main.dashboard-page{height:calc(100dvh - 28px);min-height:0;overflow:hidden}.app-nav~main.dashboard-page>.app-view-transition{grid-template-rows:auto minmax(0,1fr);gap:10px;height:100%;min-height:0;display:grid}.app-nav~main.dashboard-page .dashboard-shared-feature-body{min-width:0;min-height:0;overflow:hidden}.app-nav~main.dashboard-page .dashboard-map-command-shell,.app-nav~main.dashboard-page .dashboard-control-grid{width:100%;height:100%;min-height:0}.app-nav~main.dashboard-page .dashboard-control-grid{grid-template-columns:minmax(0,1.45fr) minmax(280px,.78fr) minmax(280px,.78fr)}.app-nav~main.dashboard-page .dashboard-map-stage,.app-nav~main.dashboard-page .dashboard-deck-shell,.app-nav~main.dashboard-page .dashboard-deck-canvas{min-width:0;height:100%;min-height:0}.app-nav~main.monitoring-page{min-height:calc(100dvh - 28px)}.app-nav~main.monitoring-page .monitoring-command-shell{width:100%;min-height:calc(100dvh - 28px)}.app-nav~main.monitoring-page .monitoring-command-layout{grid-template-columns:minmax(250px,300px) minmax(0,1fr) minmax(300px,360px);width:100%;min-width:0}.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-side-panel{z-index:auto;align-self:start;width:auto;max-height:calc(100dvh - 56px);padding:0;position:sticky;top:14px;overflow:auto}.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-context-panel{grid-column:1;left:auto;right:auto}.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-center-container{grid-column:2}.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-saved-views-panel{grid-column:3;left:auto;right:auto}.app-nav~main.monitoring-page .monitoring-center-panel,.app-nav~main.monitoring-page .monitoring-center-container,.app-nav~main.monitoring-page .webgl-scene-card{min-width:0}.app-nav~main.floorplan-page{min-height:calc(100dvh - 28px)}.app-nav~main.floorplan-page .floorplan-wide-layout,.app-nav~main.floorplan-page .floorplan-editor-shell{width:100%;min-width:0}.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode){grid-template-columns:minmax(248px,300px) minmax(0,1fr) minmax(280px,340px);align-items:start;display:grid}.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-side-panel{z-index:auto;grid-row:auto;align-self:start;width:auto;max-height:calc(100dvh - 56px);position:sticky;top:14px;overflow:auto;transform:none}.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-left-panel{grid-column:1;justify-self:stretch}.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-center-container{grid-area:auto/2;width:100%}.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-right-panel{grid-column:3;justify-self:stretch}.app-nav~main.floorplan-page .floorplan-editor-shell.preview-view:not(.wide-mode){grid-template-columns:minmax(0,1fr)}.app-nav~main.floorplan-page .floorplan-editor-shell.preview-view:not(.wide-mode)>.floorplan-center-container{grid-column:1}.app-nav~main.floorplan-page .floorplan-center-container,.app-nav~main.floorplan-page .floorplan-full-panel,.app-nav~main.floorplan-page .floorplan-canvas-wrap{min-width:0}.app-nav~main.routing-page{min-height:calc(100dvh - 28px)}.app-nav~main.routing-page .route-graph-editor-shell:not(.wide-mode){width:100%;min-width:0}.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode){grid-template-columns:minmax(260px,312px) minmax(0,1fr);display:grid}.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode)>.route-left-panel{z-index:auto;grid-area:1/1;justify-self:stretch;width:auto;height:auto;max-height:calc(100dvh - 56px);position:sticky;top:14px;overflow:auto;transform:none}.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode)>.route-graph-editor-card{grid-area:1/2;min-width:0}.app-nav~main.routing-page .route-left-panel .route-context-panel,.app-nav~main.routing-page .route-left-panel .route-node-detail-panel{width:auto;max-height:none;overflow:visible}.app-nav~main.routing-page .route-graph-editor-card:not(.wide-mode),.app-nav~main.routing-page .route-editor-workspace,.app-nav~main.routing-page .route-editor-stage-shell{min-width:0}.app-nav~main.management-page{min-height:calc(100dvh - 28px)}.app-nav~main.management-page .management-hub-card{grid-template-columns:minmax(280px,.9fr) minmax(0,1.6fr) minmax(220px,.55fr);width:100%;display:grid}.app-nav~main.management-page .management-hub-copy,.app-nav~main.management-page .management-session-meta{width:100%;min-width:0}.app-nav~main.management-page .management-hub-summary-grid{grid-template-columns:repeat(auto-fit,minmax(108px,1fr))}.app-nav~main.management-page .management-hub-summary-grid,.app-nav~main.management-page .management-tab-strip,.app-nav~main.management-page .admin-settings-grid,.app-nav~main.management-page .beacon-list-layout,.app-nav~main.management-page .account-access-note{width:100%;min-width:0}@media (width<=1180px){.app-nav~main.dashboard-page .dashboard-control-grid,.app-nav~main.monitoring-page .monitoring-command-layout,.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode),.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode),.app-nav~main.management-page .management-hub-card{grid-template-columns:minmax(0,1fr)}.app-nav~main.dashboard-page{height:auto;overflow:visible}.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-side-panel,.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-side-panel,.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode)>.route-left-panel{max-height:none;position:static;top:auto;transform:none}.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-context-panel,.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-center-container,.app-nav~main.monitoring-page .monitoring-command-layout>.monitoring-saved-views-panel,.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-left-panel,.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-center-container,.app-nav~main.floorplan-page .floorplan-editor-shell:not(.wide-mode)>.floorplan-right-panel,.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode)>.route-left-panel,.app-nav~main.routing-page .route-graph-editor-shell.has-left-panel:not(.wide-mode)>.route-graph-editor-card{grid-area:auto/1}}@media (width<=900px){:root{--app-nav-layout-left:0px;--app-nav-layout-right:0px;--app-nav-layout-top:0px;--app-nav-layout-bottom:calc(64px + env(safe-area-inset-bottom));--app-nav-layout-width:100vw;--app-nav-layout-height:calc(100dvh - var(--app-nav-layout-bottom))}.app-nav{--app-nav-closed-width:100vw;--app-nav-open-width:100vw;--app-nav-content-width:auto;--app-nav-icon-size:42px;--app-nav-row-height:48px;border-right:0;border-top:1px solid color-mix(in srgb, var(--border) 82%, transparent);height:calc(64px + env(safe-area-inset-bottom));padding:8px max(10px, env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;width:100vw;display:grid;top:auto;bottom:0;left:0;overflow:hidden;box-shadow:0 -12px 30px #0f172a14}.app-nav:hover,.app-nav:focus-within{width:100vw;box-shadow:0 -14px 34px #0f172a1f}.app-nav-brand{width:auto;min-height:0;display:flex;transform:none}.app-nav-brand-copy,.app-nav-account,.app-nav-session-action{display:none}.app-nav-list{gap:6px;min-width:0;padding:0;display:flex;overflow:auto hidden}.app-nav button,.app-nav a{flex:0 0 46px;justify-content:center;width:46px;height:46px;min-height:46px;padding:0;display:inline-flex;transform:none}.app-nav:hover button,.app-nav:focus-within button,.app-nav:hover a,.app-nav:focus-within a{transform:none}.app-nav-label{display:none}.app-nav button:after,.app-nav a:after{bottom:4px;left:50%;transform:translate(-50%)scaleX(.35)}.app-nav button.active:after,.app-nav button[aria-current=page]:after,.app-nav a.active:after,.app-nav a[aria-current=page]:after{opacity:.75;transform:translate(-50%)scaleX(1)}.app-nav~main.app-main,.app-nav~main.dashboard-page,.app-nav~main.monitoring-page,.app-nav~main.floorplan-page,.app-nav~main.routing-page,.app-nav~main.management-page{box-sizing:border-box;max-width:none;height:auto;min-height:var(--app-nav-layout-height);padding:12px 12px calc(86px + env(safe-area-inset-bottom));width:100%;margin-left:0;overflow-x:hidden}.app-nav~main.app-main>.app-view-transition{width:100%;min-width:0}}.app-nav~main.monitoring-page .monitoring-command-shell.wide-mode,.app-nav~main.floorplan-page .floorplan-editor-shell.wide-mode{height:var(--app-nav-layout-height)}@media (width<=900px){.app-nav~main.monitoring-page .monitoring-command-shell,.app-nav~main.routing-page .route-graph-editor-shell:not(.wide-mode){max-height:calc(var(--app-nav-layout-height) - 32px);min-height:0;overflow:auto}.app-nav~main.monitoring-page .monitoring-command-shell.wide-mode{max-height:var(--app-nav-layout-height);min-height:0}.app-nav~main.dashboard-page .dashboard-map-command-shell .dashboard-control-overview,.app-nav~main.dashboard-page .dashboard-map-command-shell .dashboard-device-roster,.app-nav~main.dashboard-page .dashboard-map-command-shell .dashboard-device-timeline-card{overscroll-behavior:contain;overflow:auto}.app-nav~main.dashboard-page .dashboard-map-command-shell .dashboard-control-overview{max-height:max(240px, calc(100dvh - var(--app-nav-layout-bottom) - 252px))}.app-nav~main.dashboard-page .dashboard-map-command-shell .dashboard-device-roster,.app-nav~main.dashboard-page .dashboard-map-command-shell .dashboard-device-timeline-card{max-height:max(240px, calc(100dvh - var(--app-nav-layout-bottom) - 222px))}body.routing-tablet-focus-route:not(.route-editor-wide-mode) .app-nav~main.routing-page .route-graph-editor-card{max-height:calc(var(--app-nav-layout-height) - 190px);overflow:auto}body.routing-tablet-focus-route:not(.route-editor-wide-mode) .app-nav~main.routing-page .route-editor-stage-shell{height:min(280px, calc(var(--app-nav-layout-height) - 320px));min-height:min(260px, calc(var(--app-nav-layout-height) - 320px))}}.route-graph-editor-card.panel-nodes .route-editor-data-panel,.route-graph-editor-card.panel-edges .route-editor-data-panel{grid-template-rows:auto auto minmax(0,1fr);min-height:0}.route-graph-editor-card.panel-nodes .route-editor-data-scroll,.route-graph-editor-card.panel-edges .route-editor-data-scroll{min-height:0;max-height:none;overflow:auto}@media (width>=760px) and (width<=1366px) and (height<=900px){body.routing-tablet-focus-route .route-graph-editor-card.panel-nodes,body.routing-tablet-focus-route .route-graph-editor-card.panel-edges{grid-template-rows:auto minmax(0,1fr)}body.routing-tablet-focus-route .route-graph-editor-card.panel-nodes .route-editor-data-panel,body.routing-tablet-focus-route .route-graph-editor-card.panel-edges .route-editor-data-panel{overflow:hidden}}@media (width<=900px){.app-nav~main.routing-page .route-editor-data-toolbar{scrollbar-width:thin;flex-wrap:nowrap;align-items:center;overflow:auto hidden}.app-nav~main.routing-page .route-editor-data-toolbar>span,.app-nav~main.routing-page .route-editor-pagination-actions{flex:none}.app-nav~main.routing-page .route-editor-pagination-actions{flex-wrap:nowrap}body.routing-tablet-focus-route:not(.route-editor-wide-mode) .app-nav~main.routing-page .route-graph-editor-card.panel-nodes,body.routing-tablet-focus-route:not(.route-editor-wide-mode) .app-nav~main.routing-page .route-graph-editor-card.panel-edges{order:1;max-height:none;overflow:visible}body.routing-tablet-focus-route:not(.route-editor-wide-mode) .app-nav~main.routing-page .route-graph-editor-shell.has-left-panel>.route-left-panel{order:2}.app-nav~main.routing-page .route-graph-editor-card.panel-nodes .route-editor-data-panel,.app-nav~main.routing-page .route-graph-editor-card.panel-edges .route-editor-data-panel{max-height:max(320px, calc(var(--app-nav-layout-height) - 220px));min-height:min(340px, calc(var(--app-nav-layout-height) - 220px));grid-template-rows:auto auto minmax(160px,1fr);overflow:hidden}.app-nav~main.routing-page .route-graph-editor-card.panel-nodes .route-editor-data-scroll,.app-nav~main.routing-page .route-graph-editor-card.panel-edges .route-editor-data-scroll{min-height:160px}}:root{--app-nav-rail-width:68px;--app-nav-expanded-width:188px;--app-nav-expanded-label-width:calc(var(--app-nav-expanded-width) - 78px);--app-nav-rail-gutter:max(12px, env(safe-area-inset-left));--app-nav-layout-left:calc(var(--app-nav-rail-width) + var(--app-nav-rail-gutter));--app-nav-layout-right:0px;--app-nav-layout-top:0px;--app-nav-layout-bottom:0px;--app-nav-layout-width:calc(100vw - var(--app-nav-layout-left) - var(--app-nav-layout-right));--app-nav-layout-height:100dvh}.app-nav{--app-nav-icon-size:44px;--app-nav-row-height:44px;--app-nav-account-height:calc((var(--app-nav-row-height) * 2) + 8px);box-sizing:border-box;grid-template-rows:var(--app-nav-row-height) var(--app-nav-row-height) minmax(0, 1fr) var(--app-nav-account-height);height:100dvh;max-width:var(--app-nav-rail-width);min-width:var(--app-nav-rail-width);transition:width .22s var(--ease-out), min-width .22s var(--ease-out), max-width .22s var(--ease-out);width:var(--app-nav-rail-width);z-index:30;align-content:start;gap:14px;padding:14px 12px;display:grid;position:fixed;top:0;left:0;overflow:hidden;transform:none}.app-nav:hover,.app-nav:focus-within{max-width:var(--app-nav-rail-width);min-width:var(--app-nav-rail-width);width:var(--app-nav-rail-width);transform:none}.app-nav.is-expanded:hover,.app-nav.is-expanded:focus-within{max-width:var(--app-nav-expanded-width);min-width:var(--app-nav-expanded-width);width:var(--app-nav-expanded-width)}.app-nav:not(.is-expanded):hover .app-nav-brand,.app-nav:not(.is-expanded):focus-within .app-nav-brand,.app-nav:not(.is-expanded):hover button,.app-nav:not(.is-expanded):focus-within button,.app-nav:not(.is-expanded):hover a,.app-nav:not(.is-expanded):focus-within a,.app-nav:not(.is-expanded):hover .app-nav-account,.app-nav:not(.is-expanded):focus-within .app-nav-account,.app-nav:not(.is-expanded):hover .app-nav-session-action,.app-nav:not(.is-expanded):focus-within .app-nav-session-action,.app-nav:not(.is-expanded):hover .app-nav-account .admin-session-pill,.app-nav:not(.is-expanded):focus-within .app-nav-account .admin-session-pill{height:var(--app-nav-row-height);max-width:44px;min-height:var(--app-nav-row-height);grid-template-columns:44px minmax(0,1fr);justify-items:start;gap:0;width:44px;min-width:44px;padding-left:0;padding-right:0;transform:none}.app-nav:not(.is-expanded):hover .app-nav-brand-copy,.app-nav:not(.is-expanded):focus-within .app-nav-brand-copy,.app-nav:not(.is-expanded):hover .app-nav-label,.app-nav:not(.is-expanded):focus-within .app-nav-label,.app-nav:not(.is-expanded):hover .app-nav-account-copy,.app-nav:not(.is-expanded):focus-within .app-nav-account-copy,.app-nav:not(.is-expanded):hover .app-nav-toggle-label,.app-nav:not(.is-expanded):focus-within .app-nav-toggle-label,.app-nav:not(.is-expanded):hover .app-nav-session-action>span:last-child,.app-nav:not(.is-expanded):focus-within .app-nav-session-action>span:last-child{opacity:0;visibility:hidden;max-width:0;transform:translate(-8px)}.app-nav:not(.is-expanded):hover .app-nav-account,.app-nav:not(.is-expanded):focus-within .app-nav-account{height:var(--app-nav-account-height);min-height:var(--app-nav-account-height)}.app-nav-brand,.app-nav button,.app-nav a,.app-nav-account,.app-nav-session-action{box-sizing:border-box;min-width:44px;max-width:44px;transition:width .22s var(--ease-out), max-width .22s var(--ease-out), min-width .22s var(--ease-out), color .18s var(--ease-out);width:44px;overflow:hidden}.app-nav-brand{height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);grid-template-columns:44px minmax(0,1fr);align-items:center;gap:10px;padding:0;display:grid}.app-nav-toggle{height:var(--app-nav-row-height);min-height:var(--app-nav-row-height)}.app-nav-icon-cell,.app-nav-brand-mark{flex:0 0 44px;justify-content:center;align-items:center;width:44px;min-width:44px;height:44px;display:inline-flex}.app-nav-list{align-content:start;place-items:center;gap:8px;min-height:0;padding:0;display:grid;overflow:visible}.app-nav button,.app-nav a{height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);grid-template-columns:44px minmax(0,1fr);place-items:center start;gap:10px;padding:0;display:grid;transform:none}.app-nav:hover button,.app-nav:focus-within button,.app-nav:hover a,.app-nav:focus-within a{height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);transform:none}.app-nav-brand-copy,.app-nav-label,.app-nav-account-copy,.app-nav-toggle-label,.app-nav-session-action>span:last-child{clip-path:none;opacity:0;max-width:0;transition:max-width .22s var(--ease-out), opacity .16s var(--ease-out), transform .22s var(--ease-out), visibility .16s var(--ease-out);visibility:hidden;display:block;transform:translate(-8px)}.app-nav:not(.is-expanded) .app-nav-brand-copy,.app-nav:not(.is-expanded) .app-nav-label,.app-nav:not(.is-expanded) .app-nav-account-copy,.app-nav:not(.is-expanded) .app-nav-toggle-label,.app-nav:not(.is-expanded) .app-nav-session-action>span:last-child,.app-nav:not(.is-expanded) .user-session-pill>.app-nav-account-copy{opacity:0;visibility:hidden;max-width:0;transform:translate(-8px)}.app-nav-brand-copy,.app-nav-account-copy{display:grid}.app-nav-brand-copy{height:var(--app-nav-row-height);max-height:var(--app-nav-row-height);align-content:center;gap:0}.app-nav-brand-copy strong,.app-nav-account-copy strong,.app-nav-account-copy small{text-overflow:ellipsis;white-space:nowrap;line-height:1.05;overflow:hidden}.app-nav-brand-copy strong{font-size:13px}.app-nav-account{grid-template-rows:var(--app-nav-row-height) var(--app-nav-row-height);height:var(--app-nav-account-height);place-items:center;gap:8px;min-height:0;display:grid;overflow:hidden}.app-nav-account .admin-session-pill{box-shadow:none;max-width:44px;height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);border:0;grid-row:1;grid-template-columns:44px minmax(0,1fr);place-items:center start;gap:10px;width:44px;min-width:44px;padding:0;display:grid}.app-nav-session-action{height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);opacity:1;pointer-events:auto;background:0 0;border-color:#0000;grid-row:2;place-self:start center;transform:none}.app-nav:not(.is-expanded) .app-nav-session-action,.app-nav:not(.is-expanded):hover .app-nav-session-action,.app-nav:not(.is-expanded):focus-within .app-nav-session-action{height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);opacity:1;grid-row:2;transform:none}.app-nav button:hover,.app-nav a:hover,.app-nav-account .admin-session-pill:hover,.app-nav:hover .app-nav-account .admin-session-pill,.app-nav:focus-within .app-nav-account .admin-session-pill,.app-nav:hover .app-nav-account .admin-session-pill.muted,.app-nav:focus-within .app-nav-account .admin-session-pill.muted,.app-nav:hover .app-nav-session-action,.app-nav:focus-within .app-nav-session-action{box-shadow:none;background:0 0;border-color:#0000;transform:none}.app-nav-toggle{color:var(--muted)}.app-nav-toggle:hover,.app-nav-toggle:focus-visible{color:var(--text)}.app-nav.is-expanded{max-width:var(--app-nav-expanded-width);min-width:var(--app-nav-expanded-width);width:var(--app-nav-expanded-width)}.app-nav.is-expanded .app-nav-brand,.app-nav.is-expanded .app-nav-toggle,.app-nav.is-expanded .app-nav-account,.app-nav.is-expanded .app-nav-session-action,.app-nav.is-expanded .app-nav-account .admin-session-pill{width:100%;min-width:0;max-width:100%}.app-nav.is-expanded .app-nav-brand,.app-nav.is-expanded .app-nav-toggle,.app-nav.is-expanded .app-nav-account .admin-session-pill,.app-nav.is-expanded .app-nav-session-action{height:var(--app-nav-row-height);min-height:var(--app-nav-row-height)}.app-nav.is-expanded .app-nav-account{height:var(--app-nav-account-height);min-height:var(--app-nav-account-height)}.app-nav.is-expanded .app-nav-brand,.app-nav.is-expanded button,.app-nav.is-expanded a,.app-nav.is-expanded .app-nav-account .admin-session-pill{grid-template-columns:44px minmax(0,1fr);justify-items:start;gap:10px}.app-nav.is-expanded .app-nav-brand,.app-nav.is-expanded .app-nav-account .admin-session-pill{padding-right:0}.app-nav.is-expanded button,.app-nav.is-expanded a{width:100%;min-width:0;max-width:100%;padding:0}.app-nav.is-expanded .app-nav-list,.app-nav.is-expanded .app-nav-account{place-items:stretch stretch}.app-nav.is-expanded .app-nav-brand-copy,.app-nav.is-expanded .app-nav-label,.app-nav.is-expanded .app-nav-account-copy,.app-nav.is-expanded .app-nav-toggle-label,.app-nav.is-expanded .app-nav-session-action>span:last-child{clip-path:none;max-width:var(--app-nav-expanded-label-width);opacity:1;text-overflow:ellipsis;visibility:visible;white-space:nowrap;min-width:0;display:block;overflow:hidden;transform:translate(0)}.app-nav.is-expanded .app-nav-brand-copy,.app-nav.is-expanded .app-nav-account-copy{display:grid}.app-nav.is-expanded .app-nav-toggle-label,.app-nav.is-expanded .app-nav-label,.app-nav.is-expanded .app-nav-session-action>span:last-child{font-size:13px;font-weight:900}.app-nav.is-expanded:hover .app-nav-brand,.app-nav.is-expanded:focus-within .app-nav-brand,.app-nav.is-expanded:hover .app-nav-toggle,.app-nav.is-expanded:focus-within .app-nav-toggle,.app-nav.is-expanded:hover .app-nav-account,.app-nav.is-expanded:focus-within .app-nav-account,.app-nav.is-expanded:hover .app-nav-session-action,.app-nav.is-expanded:focus-within .app-nav-session-action,.app-nav.is-expanded:hover .app-nav-account .admin-session-pill,.app-nav.is-expanded:focus-within .app-nav-account .admin-session-pill{width:100%;min-width:0;max-width:100%}.app-nav.is-expanded:hover .app-nav-brand,.app-nav.is-expanded:focus-within .app-nav-brand,.app-nav.is-expanded:hover button,.app-nav.is-expanded:focus-within button,.app-nav.is-expanded:hover a,.app-nav.is-expanded:focus-within a,.app-nav.is-expanded:hover .app-nav-account .admin-session-pill,.app-nav.is-expanded:focus-within .app-nav-account .admin-session-pill{grid-template-columns:44px minmax(0,1fr);justify-items:start;gap:10px}.app-nav.is-expanded:hover button,.app-nav.is-expanded:focus-within button,.app-nav.is-expanded:hover a,.app-nav.is-expanded:focus-within a{width:100%;min-width:0;max-width:100%;padding:0}.app-nav.is-expanded:hover .app-nav-brand-copy,.app-nav.is-expanded:focus-within .app-nav-brand-copy,.app-nav.is-expanded:hover .app-nav-label,.app-nav.is-expanded:focus-within .app-nav-label,.app-nav.is-expanded:hover .app-nav-account-copy,.app-nav.is-expanded:focus-within .app-nav-account-copy,.app-nav.is-expanded:hover .app-nav-toggle-label,.app-nav.is-expanded:focus-within .app-nav-toggle-label,.app-nav.is-expanded:hover .app-nav-session-action>span:last-child,.app-nav.is-expanded:focus-within .app-nav-session-action>span:last-child{max-width:var(--app-nav-expanded-label-width);opacity:1;visibility:visible;transform:translate(0)}.app-nav button:focus-visible,.app-nav a:focus-visible,.app-nav-session-action:focus-visible{outline:3px solid color-mix(in srgb, var(--blue) 72%, white);outline-offset:2px}.app-nav~main.app-main,.app-nav~main.dashboard-page,.app-nav~main.monitoring-page,.app-nav~main.floorplan-page,.app-nav~main.routing-page,.app-nav~main.management-page{box-sizing:border-box;margin-left:var(--app-nav-layout-left);min-width:0;max-width:none;transition:margin-left .22s var(--ease-out), width .22s var(--ease-out);width:var(--app-nav-layout-width);overflow-x:hidden}.app-nav~main.app-main>.app-view-transition{width:100%;min-width:0}.app-nav.is-expanded~main.app-main,.app-nav.is-expanded~main.dashboard-page,.app-nav.is-expanded~main.monitoring-page,.app-nav.is-expanded~main.floorplan-page,.app-nav.is-expanded~main.routing-page,.app-nav.is-expanded~main.management-page{margin-left:calc(var(--app-nav-expanded-width) + var(--app-nav-rail-gutter));width:calc(100vw - var(--app-nav-expanded-width) - var(--app-nav-rail-gutter))}.app-nav~main.monitoring-page .monitoring-command-shell.wide-mode,.app-nav~main.floorplan-page .floorplan-editor-shell.wide-mode,.app-nav~main.routing-page .route-graph-editor-card.wide-mode{bottom:var(--app-nav-layout-bottom);left:var(--app-nav-layout-left);right:var(--app-nav-layout-right);top:var(--app-nav-layout-top);width:var(--app-nav-layout-width)}.app-nav.is-expanded~main.monitoring-page .monitoring-command-shell.wide-mode,.app-nav.is-expanded~main.floorplan-page .floorplan-editor-shell.wide-mode,.app-nav.is-expanded~main.routing-page .route-graph-editor-card.wide-mode{left:calc(var(--app-nav-expanded-width) + var(--app-nav-rail-gutter));width:calc(100vw - var(--app-nav-expanded-width) - var(--app-nav-rail-gutter))}@media (width<=900px){:root{--app-nav-rail-width:100vw;--app-nav-rail-gutter:0px;--app-nav-layout-left:0px;--app-nav-layout-right:0px;--app-nav-layout-top:0px;--app-nav-layout-bottom:calc(64px + env(safe-area-inset-bottom));--app-nav-layout-width:100vw;--app-nav-layout-height:calc(100dvh - var(--app-nav-layout-bottom))}.app-nav{height:var(--app-nav-layout-bottom);min-width:100vw;max-width:100vw;padding:8px max(10px, env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));grid-template-rows:1fr;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:8px;width:100vw;top:auto;bottom:0;left:0}.app-nav:hover,.app-nav:focus-within,.app-nav.is-expanded,.app-nav.is-expanded:hover,.app-nav.is-expanded:focus-within{width:100vw;min-width:100vw;max-width:100vw}.app-nav-brand{align-self:center;width:44px;min-width:44px;max-width:44px}.app-nav .app-nav-toggle{display:none}.app-nav-list{grid-auto-columns:minmax(44px,1fr);grid-auto-flow:column;justify-items:center;gap:6px;width:100%;min-width:0;display:grid;overflow:hidden}.app-nav button,.app-nav a{grid-template-columns:44px;justify-items:center;gap:0;width:100%;min-width:44px;max-width:52px;height:46px;min-height:46px;padding:0}.app-nav.is-expanded button,.app-nav.is-expanded a{grid-template-columns:44px;justify-items:center;gap:0;width:100%;min-width:44px;max-width:52px;padding:0}.app-nav-account,.app-nav-session-action{display:none}.app-nav.is-expanded .app-nav-brand-copy,.app-nav.is-expanded .app-nav-label,.app-nav.is-expanded .app-nav-account-copy,.app-nav.is-expanded .app-nav-toggle-label,.app-nav.is-expanded .app-nav-session-action>span:last-child{opacity:0;visibility:hidden;display:none}.app-nav~main.app-main,.app-nav~main.dashboard-page,.app-nav~main.monitoring-page,.app-nav~main.floorplan-page,.app-nav~main.routing-page,.app-nav~main.management-page{min-height:var(--app-nav-layout-height);padding-bottom:calc(86px + env(safe-area-inset-bottom));width:100%;margin-left:0}.app-nav.is-expanded~main.app-main,.app-nav.is-expanded~main.dashboard-page,.app-nav.is-expanded~main.monitoring-page,.app-nav.is-expanded~main.floorplan-page,.app-nav.is-expanded~main.routing-page,.app-nav.is-expanded~main.management-page{width:100%;margin-left:0}.app-nav.is-expanded~main.monitoring-page .monitoring-command-shell.wide-mode,.app-nav.is-expanded~main.floorplan-page .floorplan-editor-shell.wide-mode,.app-nav.is-expanded~main.routing-page .route-graph-editor-card.wide-mode{width:100vw;left:0}}@media (width>=901px){body .app-nav.is-expanded~main.app-main{margin-left:calc(var(--app-nav-expanded-width) + 12px);width:calc(100vw - var(--app-nav-expanded-width) - 12px)}body .app-nav.is-expanded~main.app-main .monitoring-command-shell.wide-mode,body .app-nav.is-expanded~main.app-main .floorplan-editor-shell.wide-mode,body .app-nav.is-expanded~main.app-main .route-graph-editor-card.wide-mode{left:calc(var(--app-nav-expanded-width) + 12px);width:calc(100vw - var(--app-nav-expanded-width) - 12px)}.app-nav{--app-nav-account-height:calc((var(--app-nav-row-height) * 2) + 8px);--app-nav-pad-x:12px;--app-nav-pad-y:14px;max-width:var(--app-nav-rail-width);min-width:var(--app-nav-rail-width);width:var(--app-nav-rail-width);padding:0;display:block}.app-nav.is-expanded,.app-nav.is-expanded:hover,.app-nav.is-expanded:focus-within{max-width:var(--app-nav-expanded-width);min-width:var(--app-nav-expanded-width);width:var(--app-nav-expanded-width)}.app-nav-brand,.app-nav-toggle,.app-nav-list,.app-nav-account{left:var(--app-nav-pad-x);margin:0;position:absolute;right:auto}.app-nav-brand{top:var(--app-nav-pad-y)}.app-nav-toggle{top:calc(var(--app-nav-pad-y) + var(--app-nav-row-height) + 14px)}.app-nav-list{bottom:calc(var(--app-nav-pad-y) + var(--app-nav-account-height) + 14px);grid-auto-rows:var(--app-nav-row-height);min-height:0;top:calc(var(--app-nav-pad-y) + (var(--app-nav-row-height) * 2) + 28px);width:calc(100% - (var(--app-nav-pad-x) * 2));align-content:start;place-items:start;gap:8px;display:grid;overflow:hidden}.app-nav-account{bottom:var(--app-nav-pad-y);height:var(--app-nav-account-height);width:calc(100% - (var(--app-nav-pad-x) * 2));align-content:start;place-items:start;gap:8px;display:block;position:absolute;overflow:hidden}.app-nav-brand,.app-nav-toggle,.app-nav-list button,.app-nav-list a,.app-nav-account .admin-session-pill,.app-nav-session-action,.app-nav:hover button,.app-nav:focus-within button,.app-nav:hover a,.app-nav:focus-within a{box-shadow:none;box-sizing:border-box;height:var(--app-nav-row-height);max-height:var(--app-nav-row-height);min-height:var(--app-nav-row-height);transition:width .22s var(--ease-out), max-width .22s var(--ease-out), min-width .22s var(--ease-out), color .18s var(--ease-out);background:0 0;border-color:#0000;grid-template-columns:44px minmax(0,1fr);place-items:center start;gap:10px;margin:0;padding:0;display:grid;overflow:hidden;transform:none}.app-nav:not(.is-expanded) .app-nav-brand,.app-nav:not(.is-expanded) .app-nav-toggle,.app-nav:not(.is-expanded) .app-nav-list button,.app-nav:not(.is-expanded) .app-nav-list a,.app-nav:not(.is-expanded) .app-nav-account .admin-session-pill,.app-nav:not(.is-expanded) .app-nav-session-action,.app-nav:not(.is-expanded):hover .app-nav-brand,.app-nav:not(.is-expanded):focus-within .app-nav-brand,.app-nav:not(.is-expanded):hover button,.app-nav:not(.is-expanded):focus-within button,.app-nav:not(.is-expanded):hover a,.app-nav:not(.is-expanded):focus-within a,.app-nav:not(.is-expanded):hover .app-nav-account .admin-session-pill,.app-nav:not(.is-expanded):focus-within .app-nav-account .admin-session-pill,.app-nav:not(.is-expanded):hover .app-nav-session-action,.app-nav:not(.is-expanded):focus-within .app-nav-session-action{width:44px;min-width:44px;max-width:44px}.app-nav.is-expanded .app-nav-brand,.app-nav.is-expanded .app-nav-toggle,.app-nav.is-expanded .app-nav-list button,.app-nav.is-expanded .app-nav-list a,.app-nav.is-expanded .app-nav-account .admin-session-pill,.app-nav.is-expanded .app-nav-session-action,.app-nav.is-expanded:hover .app-nav-brand,.app-nav.is-expanded:focus-within .app-nav-brand,.app-nav.is-expanded:hover button,.app-nav.is-expanded:focus-within button,.app-nav.is-expanded:hover a,.app-nav.is-expanded:focus-within a,.app-nav.is-expanded:hover .app-nav-account .admin-session-pill,.app-nav.is-expanded:focus-within .app-nav-account .admin-session-pill,.app-nav.is-expanded:hover .app-nav-session-action,.app-nav.is-expanded:focus-within .app-nav-session-action{width:100%;min-width:0;max-width:100%}.app-nav-icon-cell,.app-nav-brand-mark,.app-nav-icon-cell.user-avatar{grid-column:1;place-self:center;width:44px;min-width:44px;max-width:44px;height:44px;min-height:44px;max-height:44px;margin:0;transform:none}.app-nav-brand-copy,.app-nav-label,.app-nav-account-copy,.app-nav-toggle-label,.app-nav-session-action>span:last-child{opacity:0;text-overflow:ellipsis;max-width:0;transition:max-width .22s var(--ease-out), opacity .16s var(--ease-out), transform .22s var(--ease-out), visibility .16s var(--ease-out);visibility:hidden;white-space:nowrap;grid-column:2;place-self:center start;overflow:hidden;transform:translate(-8px)}.app-nav.is-expanded .app-nav-brand-copy,.app-nav.is-expanded .app-nav-label,.app-nav.is-expanded .app-nav-account-copy,.app-nav.is-expanded .app-nav-toggle-label,.app-nav.is-expanded .app-nav-session-action>span:last-child,.app-nav.is-expanded:hover .app-nav-brand-copy,.app-nav.is-expanded:focus-within .app-nav-brand-copy,.app-nav.is-expanded:hover .app-nav-label,.app-nav.is-expanded:focus-within .app-nav-label,.app-nav.is-expanded:hover .app-nav-account-copy,.app-nav.is-expanded:focus-within .app-nav-account-copy,.app-nav.is-expanded:hover .app-nav-toggle-label,.app-nav.is-expanded:focus-within .app-nav-toggle-label,.app-nav.is-expanded:hover .app-nav-session-action>span:last-child,.app-nav.is-expanded:focus-within .app-nav-session-action>span:last-child{max-width:var(--app-nav-expanded-label-width);opacity:1;visibility:visible;transform:translate(0)}.app-nav-account .admin-session-pill{position:absolute;top:0;left:0}.app-nav-session-action{opacity:1;pointer-events:auto;left:0;top:calc(var(--app-nav-row-height) + 8px);position:absolute}.app-nav button:after,.app-nav a:after{display:none}}.dashboard-map-command-shell .dashboard-unified-panel{width:min(360px,100% - 24px);min-height:0;padding:12px}.dashboard-map-command-shell .dashboard-unified-panel.expanded .dashboard-roster-panel-body{flex-direction:column;gap:10px;max-height:calc(100dvh - 220px);padding-top:0;display:flex;overflow:auto}.dashboard-unified-panel .dashboard-roster-panel-body[hidden],.dashboard-unified-panel [hidden]{display:none}.dashboard-unified-panel .section-heading{align-items:center;gap:8px;margin:0}.dashboard-unified-panel .section-heading h2{margin:0;font-size:15px}.dashboard-unified-panel .dashboard-context-line{margin:3px 0 0;font-size:11px}.dashboard-unified-panel .dashboard-panel-header-actions{gap:4px}.dashboard-unified-panel .dashboard-panel-header-actions .icon-button{width:30px;min-width:30px;height:30px;min-height:30px;padding:5px}.dashboard-unified-panel .dashboard-control-panel-tabs{flex-shrink:0;grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.dashboard-unified-panel .dashboard-control-panel-tabs button{white-space:nowrap;min-width:0;min-height:32px;padding:6px;font-size:12px}.dashboard-unified-panel .dashboard-roster-status-summary{background:0 0;border:0;padding:0;display:block}.dashboard-unified-panel .dashboard-roster-status-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-unified-devices{gap:10px;min-width:0;display:grid}.dashboard-unified-devices>.muted-text{margin:6px 0;font-size:12px}.dashboard-unified-panel .dashboard-display-settings{border-top:1px solid var(--border);order:3;padding-top:8px}.dashboard-unified-panel .dashboard-display-settings summary{cursor:pointer;color:var(--muted);font-size:12px}.dashboard-unified-panel .dashboard-display-settings[open]>:not(summary){margin-top:10px}.dashboard-unified-panel .dashboard-roster-panel-toggle{z-index:2}@media (width<=760px){.dashboard-map-command-shell .dashboard-unified-panel{width:auto;max-width:calc(100% - 24px);margin:12px;position:relative;top:auto;right:auto}}.app-nav~main.dashboard-page{height:100dvh;margin-top:0;padding:0}.app-nav~main.dashboard-page>.app-view-transition{gap:0;padding:0}.dashboard-page>.app-view-transition>.shared-dashboard-read.compact{border-width:0 0 1px;border-radius:0;min-height:36px;margin:0;padding:4px 12px}.app-nav~main.dashboard-page .dashboard-docked-shell{--control-width:360px;grid-template-columns:minmax(0, 1fr) var(--control-width);grid-template-rows:auto minmax(0,1fr);gap:0;max-height:none;padding:0;display:grid;overflow:hidden}.app-nav~main.dashboard-page .dashboard-docked-shell.sidebar-collapsed{--control-width:36px}.dashboard-docked-shell .dashboard-docked-scope{border-bottom:1px solid var(--border);background:var(--card);grid-area:1/1;align-items:center;gap:8px;min-width:0;margin:0;padding:4px 10px;display:flex}.dashboard-docked-scope .dashboard-scope-card-heading{display:none}.dashboard-docked-scope .dashboard-map-scope-selectors{flex-wrap:wrap;gap:8px;margin:0;display:flex}.dashboard-docked-scope .dashboard-map-scope-selectors label{align-items:center;gap:6px;display:flex}.dashboard-docked-scope .dashboard-map-scope-selectors select{max-width:180px;height:30px;min-height:30px;padding:3px 8px}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-map-stage{grid-area:2/1;min-height:0;overflow:hidden}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-unified-panel{border:0;border-left:1px solid var(--border);width:100%;max-width:none;height:100%;min-height:0;max-height:none;box-shadow:none;border-radius:0;flex-direction:column;grid-area:1/2/-1;align-self:stretch;margin:0;padding:0;transition:none;display:flex;position:relative;inset:auto;overflow:hidden;transform:none}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-unified-panel .dashboard-roster-panel-toggle{border:0;border-bottom:1px solid var(--border);border-radius:0;flex:0 0 34px;justify-content:flex-start;width:100%;height:34px;min-height:34px;margin:0;padding:0 10px;position:static;inset:auto;transform:none}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-unified-panel.expanded .dashboard-roster-panel-toggle span{clip:auto;clip-path:none;width:auto;height:auto;font-size:11px;position:static}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-unified-panel.expanded .dashboard-roster-panel-body{flex:1;gap:10px;min-height:0;max-height:none;padding:10px;overflow:auto}.dashboard-docked-shell .dashboard-unified-panel .dashboard-roster-status-summary{grid-template-columns:68px minmax(0,1fr);align-items:center;gap:10px;display:grid}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-unified-panel .dashboard-device-timeline-card{width:100%;max-width:100%;max-height:none;box-shadow:none;border:0;border-radius:0;order:2;margin:0;padding:0;position:static;inset:auto;overflow:visible;transform:none}@media (width<=900px){.app-nav~main.dashboard-page .dashboard-docked-shell{--control-width:300px}}@media (width<=600px){.app-nav~main.dashboard-page .dashboard-docked-shell.sidebar-expanded{grid-template-rows:auto minmax(160px,1fr) minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.app-nav~main.dashboard-page .dashboard-docked-shell.sidebar-expanded .dashboard-unified-panel{border-left:0;border-top:1px solid var(--border);grid-area:3/1}}.dashboard-docked-shell details.dashboard-docked-scope{padding:0;display:block}.dashboard-docked-scope>summary{cursor:pointer;align-items:center;gap:8px;width:fit-content;min-height:34px;padding:0 10px;font-size:12px;list-style:none;display:flex}.dashboard-docked-scope>summary::-webkit-details-marker{display:none}.dashboard-docked-scope>summary svg{width:14px;height:14px;color:var(--muted)}.dashboard-docked-scope>summary:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.dashboard-docked-scope:not([open])>.dashboard-map-scope-selectors{display:none}.dashboard-docked-scope[open]>.dashboard-map-scope-selectors{padding:0 10px 8px}@media (width>=901px){body .app-nav~main.app-main.dashboard-page{--app-nav-layout-left:var(--app-nav-rail-width);--app-nav-layout-width:calc(100vw - var(--app-nav-rail-width));margin-left:var(--app-nav-rail-width);width:var(--app-nav-layout-width);padding:0}body .app-nav.is-expanded~main.app-main.dashboard-page{--app-nav-layout-left:var(--app-nav-expanded-width);--app-nav-layout-width:calc(100vw - var(--app-nav-expanded-width));margin-left:var(--app-nav-expanded-width);width:var(--app-nav-layout-width)}}.dashboard-docked-scope>summary{box-sizing:border-box;max-width:100%}.dashboard-docked-scope>summary:hover{background:var(--card-soft)}.dashboard-scope-caption{color:var(--muted);white-space:nowrap}.dashboard-scope-current{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dashboard-scope-action{color:var(--blue);white-space:nowrap;font-size:11px}.dashboard-docked-scope>summary .dashboard-scope-chevron{flex-shrink:0;width:10px;height:10px}.dashboard-docked-scope[open]>summary .dashboard-scope-chevron{transform:rotate(90deg)}.dashboard-docked-scope .dashboard-scope-help{color:var(--muted);margin:0;padding:0 10px 8px;font-size:12px}.dashboard-docked-scope:not([open])>.dashboard-scope-help{display:none}.dashboard-docked-scope .dashboard-map-scope-selectors select:disabled{cursor:not-allowed;opacity:.65}.dashboard-docked-scope .dashboard-map-scope-selectors label{flex:0 220px;grid-template-columns:none;width:220px;min-width:0;max-width:100%}.dashboard-docked-scope .dashboard-map-scope-selectors label>span{white-space:nowrap;word-break:keep-all;flex:0 0 28px;width:28px;line-height:1.4}.dashboard-docked-scope .dashboard-map-scope-selectors select{flex:auto;width:0;min-width:0;max-width:none}.dashboard-docked-scope .dashboard-scope-help[hidden]{display:none}.app-nav~main.dashboard-page:has(.dashboard-docked-shell){height:var(--app-nav-layout-height,100dvh);min-height:0;max-height:var(--app-nav-layout-height,100dvh);padding:0}.app-nav~main.dashboard-page>.app-view-transition:has(.dashboard-docked-shell){flex-direction:column;gap:0;height:100%;min-height:0;display:flex}.dashboard-page .app-view-transition:has(.dashboard-docked-shell)>.dashboard-status-bar{flex:none}.app-nav~main.dashboard-page .dashboard-shared-feature-body:has(.dashboard-docked-shell){flex:1 1 0;min-width:0;height:auto;min-height:0}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-map-stage{place-self:stretch stretch;width:100%;max-width:none;height:100%;min-height:0;max-height:none;margin:0;padding:0}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-deck-shell,.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-deck-canvas{border-radius:0;width:100%;max-width:none;height:100%;min-height:0;max-height:none;margin:0;padding:0}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-unified-panel.expanded .dashboard-roster-panel-body{overflow-y:auto}.dashboard-docked-shell .dashboard-unified-panel .section-heading,.dashboard-docked-shell .dashboard-unified-panel .dashboard-control-panel-tabs,.dashboard-docked-shell .dashboard-unified-panel .dashboard-display-settings{flex:none}.dashboard-docked-shell .dashboard-unified-devices,.dashboard-docked-shell .dashboard-unified-panel .dashboard-event-log{flex-direction:column;flex:1 0 240px;gap:10px;min-height:240px;display:flex}.dashboard-docked-shell .dashboard-unified-devices>:not(.dashboard-roster-list),.dashboard-docked-shell .dashboard-event-log-heading{flex:none}.app-nav~main.dashboard-page .dashboard-docked-shell .dashboard-unified-panel .dashboard-roster-list{flex:1 0 180px;height:auto;min-height:180px;max-height:none;overflow-y:auto}.dashboard-docked-shell .dashboard-unified-panel .dashboard-event-log-list{flex:1 1 0;align-content:start;min-height:160px;max-height:none;overflow-y:auto}.dashboard-docked-shell .dashboard-unified-panel .dashboard-route-node-ops{flex-direction:column;flex:1 0 240px;gap:10px;min-height:240px;display:flex;overflow-y:auto}.dashboard-docked-shell .dashboard-unified-panel .dashboard-route-node-ops>*{flex-shrink:0}.dashboard-docked-shell .dashboard-unified-panel .dashboard-route-node-list{flex:1 0 auto;align-content:start;max-height:none;overflow:visible}.dashboard-docked-shell .dashboard-unified-panel .dashboard-route-edge-list{align-content:start;max-height:none;overflow:visible}.dashboard-docked-shell .dashboard-unified-panel .dashboard-device-timeline-card{flex-shrink:0}.dashboard-docked-shell .dashboard-selected-route-node{border:1px solid color-mix(in srgb, var(--blue) 40%, var(--border));border-left:3px solid var(--blue);flex-direction:column;align-items:stretch;gap:10px;padding:12px;display:flex}.dashboard-docked-shell .dashboard-selected-route-node>div{flex-direction:column;align-items:flex-start;gap:5px;min-width:0;display:flex}.dashboard-docked-shell .dashboard-selected-route-node>div>strong{overflow-wrap:anywhere;font-size:17px;line-height:1.4}.dashboard-docked-shell .dashboard-selected-route-node>.button{align-self:flex-end;min-height:32px;font-size:12px}.dashboard-docked-shell .dashboard-route-detail-caption{color:var(--muted);margin:0;font-size:11px;line-height:1.5}.dashboard-docked-shell .dashboard-route-connections{gap:6px;display:grid}.dashboard-docked-shell .dashboard-route-connections h3,.dashboard-docked-shell .dashboard-route-list-heading{margin:0;font-size:12px;line-height:1.6}.dashboard-docked-shell .dashboard-route-connections h3 span,.dashboard-docked-shell .dashboard-route-list-heading span{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:6px}.dashboard-docked-shell .dashboard-route-connection{border:1px solid var(--border);background:var(--card);border-radius:6px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;display:grid}.dashboard-route-connection-info{gap:4px;min-width:0;display:grid}.dashboard-route-connection-info small{color:var(--muted);overflow-wrap:anywhere;font-size:11px;line-height:1.5}.dashboard-route-neighbor{text-align:left;color:var(--blue);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;min-height:28px;padding:0;display:flex}.dashboard-route-neighbor strong{overflow-wrap:anywhere;font-size:13px}.dashboard-route-edge-action{border:1px solid var(--border);background:var(--card);color:var(--danger);cursor:pointer;white-space:nowrap;border-radius:4px;min-height:32px;padding:4px 7px;font-size:11px}.dashboard-route-edge-action.restore{color:var(--green)}.dashboard-docked-shell .dashboard-route-node-item{text-align:left;gap:8px;padding:10px}.dashboard-docked-shell .dashboard-route-node-item>span{flex-direction:column;gap:4px;min-width:0;display:flex}.dashboard-docked-shell .dashboard-route-node-item strong{overflow-wrap:anywhere;font-size:13px;line-height:1.4}.dashboard-docked-shell .dashboard-route-node-item small{font-size:11px;line-height:1.4}.dashboard-docked-shell .dashboard-route-node-item em{flex-shrink:0;font-size:10px}.dashboard-docked-shell .dashboard-route-node-item.selected{border-left:3px solid var(--blue);background:color-mix(in srgb, var(--blue) 8%, var(--card))}.dashboard-route-neighbor:focus-visible,.dashboard-route-edge-action:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.dashboard-docked-shell .dashboard-selected-route-node{border-color:color-mix(in srgb, #f97316 45%, var(--border));background:color-mix(in srgb, #f97316 6%, var(--card));border-left-color:#f97316}.dashboard-docked-shell .dashboard-route-node-item.selected{border-color:color-mix(in srgb, #f97316 45%, var(--border));background:color-mix(in srgb, #f97316 8%, var(--card));border-left-color:#f97316}.dashboard-docked-shell .dashboard-selected-route-node:has(.route-node-status.blocked){border-color:color-mix(in srgb, var(--danger) 45%, var(--border));border-left-color:var(--danger);background:color-mix(in srgb, var(--danger) 6%, var(--card))}.dashboard-docked-shell .dashboard-selected-route-node,.dashboard-docked-shell .dashboard-route-node-item.selected{background:color-mix(in srgb, #2f76ff 7%, var(--card));border-color:#2f76ff}.dashboard-docked-shell .dashboard-selected-route-node:has(.route-node-status.blocked){background:color-mix(in srgb, #2f76ff 7%, var(--card));border-color:#2f76ff}.dashboard-docked-shell .dashboard-selected-route-node .route-node-status.active{background:color-mix(in srgb, #2f76ff 14%, var(--card));color:color-mix(in srgb, #2f76ff 70%, var(--text))}.dashboard-docked-shell .dashboard-static-route-node.selected .dashboard-static-route-node-socket{stroke:#2f76ff;stroke-width:3px;vector-effect:non-scaling-stroke;fill:#0000;filter:none}.dashboard-docked-shell .dashboard-static-route-node.selected .dashboard-static-route-node-gem{stroke:#fff;stroke-width:1px;vector-effect:non-scaling-stroke}.dashboard-docked-shell .dashboard-selected-route-node{flex-direction:row;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px}.dashboard-docked-shell .dashboard-selected-route-node>div{flex-flow:wrap;align-items:center;gap:6px}.dashboard-docked-shell .dashboard-selected-route-node>div>strong{font-size:14px}.dashboard-docked-shell .dashboard-selected-route-node>.button{flex-shrink:0;align-self:center;padding:4px 8px;font-size:11px}.dashboard-docked-shell .dashboard-route-connection{border:0;border-bottom:1px solid var(--border);background:0 0;border-radius:0;gap:6px;padding:5px 2px}.dashboard-docked-shell .dashboard-route-connection-info{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.dashboard-docked-shell .dashboard-route-neighbor{min-height:30px}.dashboard-docked-shell .dashboard-route-blocked-note{color:var(--danger);font-size:10px}.dashboard-docked-shell .dashboard-route-edge-action{min-height:28px;padding:3px 7px}.dashboard-docked-shell .dashboard-static-beacon.selected .dashboard-static-beacon-socket{stroke:#2f76ff;stroke-width:3px;vector-effect:non-scaling-stroke;fill:#0000}.dashboard-docked-shell .dashboard-static-beacon.selected .dashboard-static-beacon-gem{stroke:#fff;stroke-width:1px;vector-effect:non-scaling-stroke}.dashboard-docked-shell .dashboard-node-flyout{z-index:12;top:44px;right:calc(var(--control-width) + 8px);width:min(300px, calc(100% - var(--control-width) - 16px));box-sizing:border-box;background:var(--card);border:1px solid var(--border);border-radius:8px;gap:10px;max-height:calc(100% - 56px);padding:10px;display:grid;position:absolute;overflow-y:auto;box-shadow:0 6px 20px #00000018}.dashboard-node-flyout-heading{color:var(--muted);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.dashboard-node-flyout-heading button{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;padding:0;display:grid}.dashboard-node-flyout-heading button:hover{background:var(--card-soft)}.dashboard-node-flyout-heading button:focus-visible{outline:2px solid var(--blue)}.dashboard-node-flyout .dashboard-route-edge-list{max-height:none;overflow:visible}@media (width<=900px){.dashboard-docked-shell .dashboard-node-flyout{width:var(--control-width);border-radius:0;max-height:calc(100% - 34px);top:34px;right:0}}@media (width<=600px){.dashboard-docked-shell .dashboard-node-flyout{width:100%;max-height:50%;top:auto;bottom:0}}.dashboard-docked-shell .dashboard-route-list-disclosure,.dashboard-docked-shell .dashboard-route-size-disclosure{border-top:1px solid var(--border);padding-top:8px}.dashboard-route-list-disclosure>summary,.dashboard-route-size-disclosure>summary{cursor:pointer;color:var(--muted);font-size:12px;line-height:28px}.dashboard-route-list-disclosure>summary span{font-variant-numeric:tabular-nums;margin-left:6px}.dashboard-route-list-disclosure[open]>.dashboard-route-node-list{margin-top:8px}.dashboard-route-list-disclosure:not([open])>.dashboard-route-node-list,.dashboard-route-size-disclosure:not([open])>.dashboard-route-marker-scale-control{display:none}.dashboard-route-map-hint{color:var(--muted);margin:0;font-size:12px;line-height:1.6}.dashboard-guidance-traveled{fill:none;stroke:#2f76ff;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.dashboard-unified-panel .dashboard-panel-toolbar,.dashboard-unified-panel .dashboard-panel-toolbar .dashboard-panel-header-actions{justify-content:flex-start}body.dashboard-map-tools .theme-toggle{right:calc(var(--dashboard-map-right-inset,0px) + 12px);bottom:calc(var(--dashboard-map-bottom-inset,0px) + 12px);margin-left:0}body.dashboard-map-tools .grecaptcha-badge{clip-path:inset(0 186px 0 -8px);right:calc(var(--dashboard-map-right-inset,0px) - 186px)!important;bottom:calc(var(--dashboard-map-bottom-inset,0px) + 76px)!important;transition:right .18s,clip-path .18s!important}body.dashboard-map-tools .grecaptcha-badge:hover,body.dashboard-map-tools .grecaptcha-badge:focus-within{clip-path:inset(0 -8px -8px);right:calc(var(--dashboard-map-right-inset,0px) + 12px)!important}@media (prefers-reduced-motion:reduce){body.dashboard-map-tools .grecaptcha-badge{transition:none!important}}
