:root{--ink:#121211;--ink-soft:#4f6478;--ink-faint:#7f92a6;--paper:#f7feff;--card:#fff;--line:#d7e8ec;--line-soft:#e8f2f5;--accent:#008d9f;--accent-soft:#e6f6f8;--accent-ink:#004047;--danger:#ad5542;--danger-soft:#fff0e9;--warn:#aa733b;--sidebar-bg:#0f141d;--sidebar-ink:#e9f3f6;--sidebar-ink-soft:#a9bec8;--sidebar-line:#2c3a4a;--sidebar-hover:#192a36;--sidebar-active:#143943;--sidebar-active-ink:#90f2ff;--sidebar-chip-bg:#213641;--sidebar-chip-ink:#c2d3da;--sidebar-btn-border:#2c3a4a;--sidebar-btn-ink:#c2d3da;--sidebar-btn-hover:#192a36;color:var(--ink);background:var(--paper);font-synthesis:none;font-family:DM Sans,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body,h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:Fraunces,Georgia,serif}a{color:inherit}.player-link{color:inherit;text-decoration:none}.player-link:hover{color:var(--accent);text-decoration:underline}.fleet-workspace{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;display:grid}.fleet-map-pane,.fleet-list-pane{min-width:0}.fleet-workspace>.card{margin-top:0}.fleet-map-pane{position:sticky;top:24px}.zone-list-pane{min-width:0}.zone-workspace .zone-list-pane .table-wrap{max-height:420px;overflow:auto}.zone-workspace .zone-list-pane .table thead{background:var(--card);z-index:1;position:sticky;top:0}.zone-workspace .zone-list-pane .table{table-layout:fixed;min-width:0}.zone-workspace .zone-list-pane .table th,.zone-workspace .zone-list-pane .table td{overflow-wrap:anywhere;padding-left:6px;padding-right:6px}.zone-workspace .zone-list-pane .table th:first-child{width:25%}.zone-workspace .zone-list-pane .table th:nth-child(2){width:18%}.zone-workspace .zone-list-pane .table th:nth-child(3){width:17%}.zone-workspace .zone-list-pane .table th:nth-child(4){width:18%}.zone-workspace .zone-list-pane .table th:nth-child(5){width:9%}.zone-workspace .zone-list-pane .table th:nth-child(6){width:13%}.zone-workspace .zone-list-pane .table .badge{white-space:normal}.detail-actions{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.api-gap{color:var(--ink-faint);margin-top:16px;font-size:12px;line-height:1.6}.attached-media-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-top:18px;display:grid}.attached-media{border:1px solid var(--line);border-radius:7px;gap:8px;padding-bottom:12px;display:grid;overflow:hidden}.attached-media strong,.attached-media small{overflow-wrap:anywhere;padding:0 12px}.attached-media small{color:var(--ink-faint)}.media-card-actions{flex-wrap:wrap;align-items:center;gap:6px;padding:0 12px;display:flex}.attached-media img,.attached-media video,.media-preview-empty{aspect-ratio:16/10;object-fit:contain;background:#101a22;width:100%}.media-preview-empty{color:#c2d3da;place-items:center;display:grid}.calendar-grid{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;margin:18px 0;display:grid}.calendar-weekday{background:var(--card);text-align:center;padding:10px 2px;font-size:11px}.calendar-day{background:var(--card);min-width:0;height:110px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;border:0;flex-direction:column;gap:5px;padding:8px;display:flex}.calendar-day strong{font-size:12px}.calendar-day span{text-overflow:ellipsis;white-space:nowrap;width:100%;color:var(--accent);font-size:10px;overflow:hidden}.calendar-day small{color:var(--ink-faint);font-size:10px}.calendar-day.selected{box-shadow:inset 0 0 0 2px var(--accent);background:var(--accent-soft)}.calendar-day.muted{opacity:.65}@media (max-width:560px){.calendar-day{height:90px;padding:5px 3px}}@media (max-width:1100px){.fleet-workspace{grid-template-columns:minmax(0,1fr)}.fleet-map-pane{position:static}.zone-workspace .zone-list-pane .table-wrap{max-height:none}.zone-workspace .zone-list-pane .table{min-width:600px}}.shell{min-height:100vh;padding-left:244px;display:flex}.sidebar{z-index:50;width:244px;height:100vh;color:var(--sidebar-ink);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-line);flex-direction:column;padding:26px 16px 18px;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.brand{flex-direction:column;align-items:flex-start;gap:4px;padding:0 8px;font-weight:700;text-decoration:none;display:flex}.brand-logo{align-items:center;display:flex}.brand-logo-img{object-fit:contain;width:auto;max-width:150px;height:28px;display:block}.brand-logo-img-dark{display:block}.brand-logo-img-light,:root.dark .brand-logo-img-light{display:none}:root.dark .brand-logo-img-dark{display:block}.brand-tag{color:var(--accent);letter-spacing:1.5px;text-transform:uppercase;margin-top:1px;font-size:8.5px;font-weight:700;display:inline-block}.sidebar-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.sidebar-signout{border:1px solid var(--sidebar-btn-border);width:30px;height:30px;color:var(--sidebar-ink-soft);cursor:pointer;background:0 0;border-radius:7px;flex-shrink:0;place-items:center;display:grid}.sidebar-signout:hover{background:var(--sidebar-btn-hover);color:var(--sidebar-ink)}.sidebar nav{flex-direction:column;gap:4px;margin-top:26px;display:flex}.sidebar nav a{color:var(--sidebar-ink-soft);border-radius:7px;align-items:center;gap:10px;padding:10px 11px;font-size:12.5px;font-weight:500;text-decoration:none;display:flex}.sidebar nav a span.nav-mark{text-align:center;opacity:.85;width:16px}.sidebar nav a:hover{color:var(--sidebar-ink);background:var(--sidebar-hover)}.sidebar nav a.active{color:var(--sidebar-active-ink);background:var(--sidebar-active)}.sidebar nav a b{background:var(--sidebar-chip-bg);color:var(--sidebar-chip-ink);border-radius:999px;margin-left:auto;padding:1px 7px;font-size:10px}.nav-group{flex-direction:column;gap:4px;margin-top:22px;display:flex}.nav-group-title{color:var(--sidebar-ink-soft);letter-spacing:1.2px;text-transform:uppercase;opacity:.7;margin-bottom:6px;padding:0 11px;font-size:9.5px;font-weight:700}.sidebar-user{background:var(--sidebar-hover);border:1px solid var(--sidebar-line);border-radius:7px;align-items:center;gap:10px;margin-bottom:12px;padding:8px 10px;display:flex}.sidebar-user-avatar{color:#fff;background:linear-gradient(135deg,#00bdd6,#00636f);border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;font-size:11px;font-weight:700;display:grid}.sidebar-user-details{flex-direction:column;min-width:0;line-height:1.25;display:flex}.sidebar-user-name{color:var(--sidebar-ink);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;overflow:hidden}.sidebar-user-role{color:var(--accent);letter-spacing:.5px;text-transform:uppercase;font-size:9px;font-weight:700;display:inline-block}.sidebar-bottom{border-top:1px solid var(--sidebar-line);margin-top:auto;padding-top:14px}.sidebar-theme{margin-bottom:12px;display:flex}.sidebar-theme .theme-switch{border-color:var(--sidebar-line);background:var(--sidebar-hover);width:100%}.sidebar-theme .theme-switch button{color:var(--sidebar-ink-soft);flex:1}.sidebar-theme .theme-switch button:hover{color:var(--sidebar-ink)}.sidebar-theme .theme-switch button.active{background:var(--sidebar-active);color:var(--sidebar-active-ink);box-shadow:none}.sidebar-foot{color:var(--sidebar-ink-soft);font-size:10px;line-height:1.6}.sidebar-foot button{border:1px solid var(--sidebar-btn-border);width:100%;color:var(--sidebar-btn-ink);font:inherit;cursor:pointer;background:0 0;border-radius:6px;margin-top:8px;padding:8px 10px;font-size:11px}.sidebar-foot button:hover{background:var(--sidebar-btn-hover)}.main{width:100%;min-width:0;max-width:1600px;margin:0 auto;padding:32px 20px 48px}.topbar{color:var(--ink-faint);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;font-size:11px;display:flex}.conn-dot{background:#00bdd6;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #e6f6f8}.conn-dot.off{background:#d17b58;box-shadow:0 0 0 3px #f8e6d9}.page-head{justify-content:space-between;align-items:flex-start;gap:22px;margin-bottom:30px;padding-left:16px;display:flex}.page-head h1{letter-spacing:-.8px;font-size:32px;font-weight:600}.page-head p{max-width:620px;color:var(--ink-faint);margin-top:9px;font-size:13px;line-height:1.55}.kicker{color:var(--accent);letter-spacing:.7px;text-transform:uppercase;margin-bottom:8px;font-size:10px;font-weight:700}.section-head{justify-content:space-between;align-items:baseline;gap:14px;margin:34px 0 16px;padding-left:16px;display:flex}.section-head h2{font-size:20px;font-weight:600}.section-head p{color:var(--ink-faint);font-size:12px}.grid{gap:18px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.card{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:16px 12px}.card.padless{padding:0;overflow:hidden}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.card-head h3{font-size:17px;font-weight:600}.card-head p{color:var(--ink-faint);margin-top:4px;font-size:11px}.stat{gap:7px;display:grid}.stat span{color:var(--ink-faint);font-size:11px}.stat strong{color:#1f2c40;font-family:Fraunces,Georgia,serif;font-size:29px;font-weight:600}.stat strong small{color:var(--ink-faint);font-family:DM Sans,sans-serif;font-size:12px;font-weight:400}.stat em{color:var(--accent);font-size:10px;font-style:normal}.stat.attention strong{color:var(--danger)}.btn{color:#1f2c40;white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #c5dde3;border-radius:6px;justify-content:center;align-items:center;gap:7px;padding:10px 15px;font-size:12px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:#eaf6f8}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{border-color:var(--accent);background:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:#007e8e}.btn.danger{color:#a2513a;border-color:#d3a595}.btn.danger:hover:not(:disabled){background:var(--danger-soft)}.btn.tiny{padding:6px 10px;font-size:11px}.tab-bar{flex-wrap:wrap}.tab-bar .btn{flex:160px;min-width:160px}.refresh-icon{align-items:center;line-height:0;display:inline-flex}.refresh-icon.spinning{animation:.9s linear infinite spin}.badge{color:var(--ink-soft);text-transform:capitalize;white-space:nowrap;background:#eaf3f6;border-radius:999px;align-items:center;gap:6px;padding:4px 9px;font-size:10px;font-weight:600;display:inline-flex}.badge i{background:#8fa3b1;border-radius:50%;width:6px;height:6px}.badge.ok,.badge.online,.badge.active,.badge.played{background:var(--accent-soft);color:#007e8e}.badge.ok i,.badge.online i,.badge.active i,.badge.played i{background:#00bdd6}.badge.warn,.badge.warning,.badge.pending,.badge.draft,.badge.idle{color:var(--warn);background:#f7efdc}.badge.warn i,.badge.warning i,.badge.pending i,.badge.draft i,.badge.idle i{background:#cfa257}.badge.bad,.badge.offline,.badge.failed,.badge.suspended,.badge.rejected,.badge.retired,.badge.dark{color:var(--danger);background:#f8e6d9}.badge.bad i,.badge.offline i,.badge.failed i,.badge.suspended i,.badge.rejected i,.badge.retired i,.badge.dark i{background:#d17b58}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:12px}.table-wrap .table{min-width:680px}.table th{color:var(--ink-faint);letter-spacing:.6px;text-align:left;text-transform:uppercase;padding:0 12px 9px;font-size:9px;font-weight:700}.table td{border-top:1px solid var(--line-soft);color:var(--ink-soft);vertical-align:middle;overflow-wrap:anywhere;padding:12px}.table tbody tr:hover{background:#f2fafc}.table tbody tr.clickable{cursor:pointer}.table strong{color:#1f2c40;font-size:12px}.table small{color:var(--ink-faint);margin-top:3px;font-size:10px;display:block}.table td.actions{text-align:right;white-space:nowrap}.mono{font-family:SFMono-Regular,ui-monospace,Menlo,Consolas,monospace;font-size:11px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:start;gap:14px;display:grid}.field{color:#4f6478;letter-spacing:.3px;text-transform:uppercase;gap:6px;min-width:0;font-size:10px;font-weight:700;display:grid}.field.full{grid-column:1/-1}.field span.hint{color:var(--ink-faint);letter-spacing:0;text-transform:none;font-size:10px;font-weight:400}.field input,.field select,.field textarea{border:1px solid var(--line);color:#1f2c40;width:100%;font:inherit;letter-spacing:0;text-transform:none;background:#fff;border-radius:5px;padding:10px 11px;font-size:12px;font-weight:400}.field input:focus,.field select:focus,.field textarea:focus{border-color:#6fcbd8;outline:none}.field textarea{resize:vertical;min-height:76px}.field.checkbox{text-transform:none;letter-spacing:0;align-items:center;gap:8px;font-size:11px;display:flex}.field.checkbox input{width:auto}.form-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.search-picker{position:relative}.search-picker input{padding-right:30px}.search-picker-clear{background:var(--line-soft);width:20px;height:20px;color:var(--ink-soft);cursor:pointer;border:0;border-radius:50%;place-items:center;font-size:14px;line-height:1;display:grid;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.search-picker-clear:hover{background:var(--line)}.search-picker-menu{z-index:40;border:1px solid var(--line);background:var(--card);border-radius:6px;max-height:260px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 12px 30px #101a222e}.search-picker-option{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:10px;padding:7px 8px;display:flex}.search-picker-option:hover:not(:disabled),.search-picker-option.selected{background:var(--accent-soft)}.search-picker-option:disabled{opacity:.45;cursor:not-allowed}.search-picker-thumb{color:#fff;background:#101a22;border-radius:4px;flex:none;place-items:center;width:42px;height:30px;font-size:11px;display:grid;overflow:hidden}.search-picker-thumb img,.search-picker-thumb video{object-fit:cover;width:100%;height:100%}.search-picker-meta{gap:2px;min-width:0;display:grid}.search-picker-meta strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.search-picker-meta small{color:var(--ink-faint);font-size:10px}.search-picker-empty{color:var(--ink-faint);padding:10px;font-size:11px}.weekday-toggles{flex-wrap:wrap;gap:6px;display:flex}.weekday-toggles .chip{cursor:pointer}.ad-list{margin-top:14px}.ad-row{border-top:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) 150px auto;align-items:start;gap:12px;padding-top:14px;display:grid}.ad-row:first-child{border-top:0;padding-top:0}.row-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.table tr.selected td{background:var(--accent-soft)}.attached-media .row-actions{padding:0 12px}@media (max-width:720px){.ad-row{grid-template-columns:1fr;gap:10px}}.zone-draw{margin-top:16px}.zone-draw-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.zone-draw-bar .spacer{flex:1}.zone-draw-count{color:var(--ink-faint);font-size:11px}.zone-draw-radius{color:var(--ink-faint);align-items:center;gap:6px;font-size:11px;display:inline-flex}.zone-draw-radius input{border:1px solid var(--line);color:#1f2c40;width:96px;font:inherit;background:#fff;border-radius:5px;padding:6px 8px;font-size:12px}.zone-draw-hint{color:var(--ink-faint);margin-top:8px;font-size:11px;line-height:1.5}.zone-draw-map{border-radius:7px}.toolbar{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px;display:flex}.toolbar .field{min-width:160px}.toolbar .spacer{flex:1}.zone-list-toolbar{flex-wrap:nowrap;gap:8px}.compact-toolbar{gap:8px}.compact-toolbar .field{flex:1;min-width:120px;max-width:320px}.data-table{min-width:0}.data-table>.cursor-pagination{padding:12px 8px 0}.zone-list-toolbar .field{flex:1;min-width:0}.icon-select{border:1px solid var(--line);width:36px;height:36px;color:var(--ink-soft);background:var(--card);border-radius:6px;flex:0 0 36px;place-items:center;display:grid;position:relative}.icon-select span{display:flex}.icon-select select{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.icon-select:hover,.icon-select.active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.icon-select:focus-within{outline:2px solid var(--accent);outline-offset:2px}.cursor-pagination{border-top:1px solid var(--line-soft);color:var(--ink-faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:14px;padding-top:12px;font-size:11px;display:flex}.pagination-controls{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.pagination-size{align-items:center;gap:6px;display:flex}.pagination-size select{border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;border-radius:4px;padding:5px 6px}.pagination-current{text-align:center;min-width:80px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.pagination-arrow{place-items:center;width:30px;height:30px;padding:0;display:grid}.empty{min-height:180px;color:var(--ink-soft);text-align:center;background:linear-gradient(135deg,#fafeff,#f2fafc);border:1px dashed #bcdce3;border-radius:8px;place-items:center;gap:10px;padding:28px;display:grid}.empty i{background:var(--accent-soft);width:44px;height:44px;color:var(--accent);border:1px solid #9fe3ee;border-radius:50%;place-items:center;font-size:20px;font-style:normal;display:grid}.empty strong{color:#1f2c40;font-family:Fraunces,Georgia,serif;font-size:16px;font-weight:600}.empty p{max-width:380px;color:var(--ink-soft);font-size:11px;line-height:1.55}.kv{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;display:grid}.kv small{color:var(--ink-faint);text-transform:uppercase;margin-bottom:3px;font-size:9px;display:block}.kv strong{color:#1f2c40;overflow-wrap:anywhere;font-size:12px;font-weight:600}.chip{border:1px solid var(--line);color:#1f2c40;text-align:left;background:#f8fcfd;border-radius:6px;gap:3px;padding:9px 12px;font-size:11px;display:grid}.chip small{color:var(--ink-faint);font-size:9px}.chip.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.spinner{border:2px solid #bcdce3;border-top-color:var(--accent);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-row{color:var(--ink-faint);align-items:center;gap:10px;padding:24px 4px;font-size:12px;display:flex}.loading-skeleton{gap:18px;width:100%;min-height:130px;padding:24px;display:grid}.loading-skeleton-lines{opacity:.45;gap:8px;display:grid}.loading-skeleton-lines span{background:linear-gradient(90deg, var(--line-soft), var(--line), var(--line-soft));background-size:200% 100%;border-radius:4px;height:8px;animation:1.6s ease-in-out infinite skeleton-sweep}.loading-skeleton-lines span:nth-child(2){width:78%}.loading-skeleton-lines span:nth-child(3){width:56%}.loading-skeleton-label{color:var(--ink-soft);justify-content:center;align-items:center;gap:10px;font-size:12px;display:flex}.adbox-loader-mark{flex-shrink:0}.adbox-loader-mark .loader-bar{transform-box:fill-box;transform-origin:bottom;animation:1.4s ease-in-out infinite loader-bar-wave}.adbox-loader-mark .loader-bar:nth-of-type(3){animation-delay:.18s}.adbox-loader-mark .loader-bar:nth-of-type(4){animation-delay:.36s}.adbox-loader-mark .loader-bar:nth-of-type(5){animation-delay:.54s}@keyframes loader-bar-wave{0%,to{opacity:.5;transform:scaleY(.35)}50%{opacity:1;transform:scaleY(1)}}@keyframes skeleton-sweep{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.loading-skeleton-lines span,.adbox-loader-mark .loader-bar{animation:none}}.inline-error{background:var(--danger-soft);color:#8a4838;border:1px solid #e1b6a7;border-radius:6px;padding:12px 14px;font-size:12px}.fleet-box-marker span{background:#0f171d;border:1.5px solid;border-radius:4px;justify-content:center;align-items:center;gap:1px;width:17px;height:17px;display:flex;box-shadow:0 1px 4px #0003}.fleet-box-marker i{background:currentColor;border-radius:1px;width:2px;height:8px}.fleet-box-marker i:first-child{opacity:.45}.fleet-box-marker i:nth-child(2){opacity:.65}.fleet-box-marker.selected span{outline:2px solid #00bdd655}.map-shell{border:1px solid var(--line);isolation:isolate;z-index:1;background:#eaf3f6;border-radius:8px;width:100%;position:relative;overflow:hidden}.map-card{margin-bottom:18px}.card.padless>.map-shell{border-radius:inherit;border:none}.map-shell .leaflet-container{width:100%;height:100%;font:inherit;background:#eaf3f6;outline:none}.map-loading{width:100%;height:100%;min-height:280px;color:var(--ink-faint);background:#eaf3f6;place-items:center;font-size:12px;display:grid}.leaflet-popup-content{margin:10px 12px;font-size:12px}.leaflet-popup-content strong{color:#1f2c40}.map-legend{z-index:500;border:1px solid var(--line);color:var(--ink);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto;background:#fffffff0;border-radius:6px;align-items:center;gap:12px;padding:6px 12px;font-size:11px;font-weight:600;display:inline-flex;position:absolute;bottom:14px;left:14px;box-shadow:0 4px 14px #1f2c4014}.map-legend-item{color:#1f2c40;align-items:center;gap:6px;font-size:11px;font-weight:600;display:inline-flex}.map-legend-item span{align-items:center;line-height:0;display:inline-flex}.modal-backdrop{z-index:100;background:#0f141d8c;place-items:center;padding:22px;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{border:1px solid var(--line);background:var(--card);border-radius:9px;width:min(560px,100%);max-height:calc(100vh - 44px);padding:24px;overflow:auto;box-shadow:0 22px 60px #1f271e38}.modal.wide{width:min(860px,100%)}.modal h2{font-size:22px;font-weight:600}.modal-head{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.modal-head p{color:var(--ink-faint);margin-top:6px;font-size:12px}.modal-head-actions{flex:none;align-items:center;gap:8px;display:flex}.btn.icon{gap:0;width:30px;height:30px;padding:0}.btn.icon.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.toast-stack{z-index:80;gap:10px;width:min(400px,100vw - 32px);display:grid;position:fixed;bottom:20px;right:20px}.toast{color:#00636f;background:#ecf9fb;border:1px solid #8dd7e3;border-radius:7px;gap:4px;padding:14px 16px;font-size:12px;display:grid;box-shadow:0 12px 34px #262b2129}.toast.bad{color:#8a4838;background:#fff4f0;border-color:#e1b6a7}.toast strong{font-size:12px}.signin-wrap{background:radial-gradient(1000px 600px at 50% -10%, #eaf6f8 0%, transparent 60%), var(--paper);place-items:center;min-height:100vh;padding:24px;display:grid}.signin-card{border:1px solid var(--line);background:var(--card);border-radius:12px;width:min(400px,100%);padding:32px;box-shadow:0 22px 60px #1f271e14}.signin-card .brand-logo-img{height:32px}.signin-top{justify-content:flex-end;margin-bottom:16px;display:flex}.signin-card h1{margin:22px 0 6px;font-size:26px;font-weight:600}.signin-card>p{color:var(--ink-faint);margin-bottom:22px;font-size:12px;line-height:1.55}.gate{place-items:center;min-height:60vh;display:grid}@media (max-width:1100px){.grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:860px){.shell{padding-left:0;display:block}.sidebar{border-right:none;border-bottom:1px solid var(--sidebar-line);width:100%;height:auto;padding:14px 14px 10px;position:sticky;inset:auto}.sidebar nav{flex-direction:row;gap:5px;margin-top:12px;overflow-x:auto}.sidebar nav a{white-space:nowrap;padding:9px 11px}.sidebar nav .nav-group{flex-direction:row;gap:5px;margin-top:0}.nav-group-title,.sidebar-foot{display:none}.main{padding:24px 16px 48px}.grid.two,.grid.three{grid-template-columns:1fr}.page-head{display:grid}.page-head h1{font-size:26px}}@media (max-width:560px){.grid.four{grid-template-columns:1fr}}.theme-switch{border:1px solid var(--line);background:var(--line-soft);border-radius:999px;align-items:center;gap:2px;padding:2px;display:inline-flex}.theme-switch button{color:var(--ink-faint);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:4px 10px;font-size:10px;font-weight:600}.theme-switch button:hover{color:var(--ink)}.theme-switch button.active{background:var(--card);color:var(--accent);box-shadow:0 1px 2px #0f141d29}:root.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#e7eef2;--ink-soft:#aebfca;--ink-faint:#7d919e;--paper:#0b0f14;--card:#121a21;--line:#24323d;--line-soft:#1b2630;--accent:#23b4c7;--accent-soft:#0f2b31;--accent-ink:#9fe8f2;--danger:#e08a72;--danger-soft:#2a1a16;--warn:#d9a35f;--sidebar-bg:#0f141d;--sidebar-ink:#e9f3f6;--sidebar-ink-soft:#9fb2c1;--sidebar-line:#22303f;--sidebar-hover:#182534;--sidebar-active:#1d2f3f;--sidebar-active-ink:#fff;--sidebar-chip-bg:#22303f;--sidebar-chip-ink:#cfe1e8;--sidebar-btn-border:#2c3d4d;--sidebar-btn-ink:#cfe1e8;--sidebar-btn-hover:#182534}:root.dark .stat strong,:root.dark .table strong,:root.dark .kv strong,:root.dark .empty strong,:root.dark .leaflet-popup-content strong{color:#eef4f7}:root.dark .btn{color:#dbe7ee;border-color:#2c3b47}:root.dark .btn:hover:not(:disabled){background:#17222c}:root.dark .btn.danger{color:#e59a82;border-color:#6b3a2c}:root.dark .badge{color:var(--ink-soft);background:#1a242e}:root.dark .badge i{background:#5b7280}:root.dark .badge.ok,:root.dark .badge.online,:root.dark .badge.active,:root.dark .badge.played{color:#7fe3ef;background:#0f2b31}:root.dark .badge.ok i,:root.dark .badge.online i,:root.dark .badge.active i,:root.dark .badge.played i{background:#23d3e6}:root.dark .badge.warn,:root.dark .badge.warning,:root.dark .badge.pending,:root.dark .badge.draft,:root.dark .badge.idle{color:#e0b877;background:#2b2415}:root.dark .badge.warn i,:root.dark .badge.warning i,:root.dark .badge.pending i,:root.dark .badge.draft i,:root.dark .badge.idle i{background:#d9a35f}:root.dark .badge.bad,:root.dark .badge.offline,:root.dark .badge.failed,:root.dark .badge.suspended,:root.dark .badge.rejected,:root.dark .badge.retired,:root.dark .badge.dark{color:#e59a82;background:#2e1b15}:root.dark .badge.bad i,:root.dark .badge.offline i,:root.dark .badge.failed i,:root.dark .badge.suspended i,:root.dark .badge.rejected i,:root.dark .badge.retired i,:root.dark .badge.dark i{background:#d98a68}:root.dark .table tbody tr:hover{background:#151f28}:root.dark .field{color:#aebfca}:root.dark .field input,:root.dark .field select,:root.dark .field textarea{border-color:var(--line);color:#e7eef2;background:#0e151c}:root.dark .field input:focus,:root.dark .field select:focus,:root.dark .field textarea:focus{border-color:#2f9fb0}:root.dark .zone-draw-radius input{border-color:var(--line);color:#e7eef2;background:#0e151c}:root.dark .empty{background:linear-gradient(135deg,#101922,#0d151d);border-color:#2b3d49}:root.dark .empty i{border-color:#1f5560}:root.dark .chip{color:#e7eef2;background:#101922}:root.dark .chip.on{background:var(--accent-soft);color:var(--accent-ink)}:root.dark .spinner{border-color:#2b3d49;border-top-color:var(--accent)}:root.dark .inline-error{color:#e59a82;border-color:#6b3a2c}:root.dark .map-shell,:root.dark .map-shell .leaflet-container,:root.dark .map-loading{background:#0e151c}:root.dark .map-legend{background:#121a21f0;box-shadow:0 4px 14px #0006}:root.dark .map-legend-item{color:#eef4f7}:root.dark .leaflet-popup-content-wrapper,:root.dark .leaflet-popup-tip{background:var(--card);color:var(--ink)}:root.dark .leaflet-container a.leaflet-popup-close-button{color:var(--ink-soft)}:root.dark .leaflet-container .leaflet-control-attribution{color:var(--ink-faint);background:#0b0f14bf}:root.dark .leaflet-container .leaflet-control-attribution a{color:var(--accent)}:root.dark .toast{color:#7fe3ef;background:#0d2a2e;border-color:#1f6b74}:root.dark .toast.bad{color:#e59a82;background:#2e1b15;border-color:#6b3a2c}:root.dark .signin-wrap{background:radial-gradient(1000px 600px at 50% -10%, #10262b 0%, transparent 60%), var(--paper)}:root.dark .conn-dot{box-shadow:0 0 0 3px #1fb3c62e}:root.dark .conn-dot.off{box-shadow:0 0 0 3px #d17b582e}
