:root,:root[data-theme=dark]{color-scheme:dark;--bg: #0b1020;--panel: rgba(20, 26, 48, .78);--panel-border: rgba(120, 150, 220, .25);--primary: #4f8cff;--accent: #00d4b4;--text: #e6ecff;--text-dim: #8e9bc4;--danger: #ff5e7e;--warn: #ffb454;--input-bg: rgba(255, 255, 255, .05);--layout-side-bg: rgba(11, 16, 32, .96);--layout-side-border: rgba(120, 150, 220, .2);--layout-text: #e6ecff;--layout-muted: #8e9bc4;--layout-nav: #bcc6e0;--layout-nav-hover-bg: rgba(255, 255, 255, .04);--layout-nav-active-bg: rgba(79, 140, 255, .15);--layout-nav-active: #4f8cff;--layout-group-label: #6f7ba8;--layout-brand-text: #e6ecff;--layout-tool-active-bg: rgba(79, 140, 255, .18);--nav-alert-ring: rgba(11, 16, 32, .96);--layout-avatar-grad-1: #4f8cff;--layout-avatar-grad-2: #7c5fff;--login-page-bg: radial-gradient(ellipse at center, #1a2350 0%, #0b1020 70%);--login-card-bg: rgba(20, 26, 48, .85);--login-card-border: rgba(120, 150, 220, .25);--cctv-spinner-track: rgba(120, 150, 220, .25);--surface-1: rgba(20, 26, 48, .6);--surface-1-strong: rgba(20, 26, 48, .95);--surface-widget: rgba(20, 26, 48, .78);--surface-2: rgba(11, 16, 32, .4);--surface-2-strong: rgba(11, 16, 32, .85);--surface-3: rgba(11, 16, 32, .45);--surface-muted: rgba(11, 16, 32, .5);--modal-bg: rgba(20, 26, 48, .98);--toast-bg: rgba(20, 26, 48, .96);--sticky-row-bg: rgba(11, 16, 32, .97);--table-th-bg: rgba(255, 255, 255, .04);--text-secondary: #bcc6e0;--backdrop-scrim: rgba(0, 0, 0, .6);--border-strong: rgba(120, 150, 220, .35);--border-muted: rgba(120, 150, 220, .2);--border-faint: rgba(120, 150, 220, .1);--border-ultra: rgba(120, 150, 220, .08);--border-widget: rgba(120, 150, 220, .18);--elev-1: rgba(255, 255, 255, .04);--elev-2: rgba(255, 255, 255, .05);--elev-3: rgba(255, 255, 255, .03);--elev-cell: rgba(255, 255, 255, .02);--canvas-placeholder: radial-gradient(ellipse at center, #1a2350 0%, #0b1020 70%);--chip-bg: rgba(120, 150, 220, .15);--chart-grid: rgba(255, 255, 255, .08);--chart-track: rgba(255, 255, 255, .12);--shadow-deep: 0 16px 60px rgba(0, 0, 0, .55);--shadow-widget: 0 6px 24px rgba(0, 0, 0, .3);--primary-soft: rgba(79, 140, 255, .22)}:root[data-theme=light]{color-scheme:light;--bg: #e9edf7;--panel: rgba(255, 255, 255, .94);--panel-border: rgba(52, 64, 102, .2);--primary: #2563eb;--accent: #059669;--text: #1a2238;--text-dim: #5a678a;--danger: #dc2626;--warn: #d97706;--input-bg: rgba(0, 0, 0, .04);--layout-side-bg: rgba(252, 252, 253, .98);--layout-side-border: rgba(52, 64, 102, .12);--layout-text: #1a2238;--layout-muted: #5a678a;--layout-nav: #384056;--layout-nav-hover-bg: rgba(37, 99, 235, .06);--layout-nav-active-bg: rgba(37, 99, 235, .12);--layout-nav-active: #2563eb;--layout-group-label: #6b7289;--layout-brand-text: #161c2e;--layout-tool-active-bg: rgba(37, 99, 235, .14);--nav-alert-ring: #f5f7fc;--layout-avatar-grad-1: #2563eb;--layout-avatar-grad-2: #7c3aed;--login-page-bg: radial-gradient(ellipse at center, #eef2fb 0%, #dde4f2 72%);--login-card-bg: rgba(255, 255, 255, .93);--login-card-border: rgba(52, 64, 102, .14);--cctv-spinner-track: rgba(52, 64, 102, .15);--surface-1: rgba(255, 255, 255, .75);--surface-1-strong: rgba(255, 255, 255, .95);--surface-widget: rgba(255, 255, 255, .9);--surface-2: rgba(0, 0, 0, .035);--surface-2-strong: rgba(248, 250, 252, .98);--surface-3: rgba(0, 0, 0, .06);--surface-muted: rgba(0, 0, 0, .06);--modal-bg: rgba(255, 255, 255, .98);--toast-bg: rgba(255, 255, 255, .96);--sticky-row-bg: rgba(236, 240, 248, .98);--table-th-bg: rgba(0, 0, 0, .035);--text-secondary: #4a556f;--backdrop-scrim: rgba(40, 45, 60, .35);--border-strong: rgba(52, 64, 102, .28);--border-muted: rgba(52, 64, 102, .16);--border-faint: rgba(52, 64, 102, .1);--border-ultra: rgba(52, 64, 102, .07);--border-widget: rgba(52, 64, 102, .14);--elev-1: rgba(0, 0, 0, .035);--elev-2: rgba(0, 0, 0, .045);--elev-3: rgba(0, 0, 0, .025);--elev-cell: rgba(0, 0, 0, .03);--canvas-placeholder: radial-gradient(ellipse at center, #e8eefc 0%, #d9e3f5 74%);--chip-bg: rgba(37, 99, 235, .1);--chart-grid: rgba(52, 64, 102, .12);--chart-track: rgba(52, 64, 102, .15);--shadow-deep: 0 16px 44px rgba(45, 55, 80, .12);--shadow-widget: 0 6px 20px rgba(45, 55, 80, .1);--primary-soft: rgba(37, 99, 235, .16)}html:not([data-theme]){color-scheme:dark}*{box-sizing:border-box}html,body,#root,#share-root{height:100%;margin:0;padding:0}body{font-family:Noto Sans TC,Inter,-apple-system,sans-serif;background:var(--bg);color:var(--text);overflow:hidden}button{font-family:inherit;cursor:pointer;border:none;border-radius:8px;padding:8px 16px;background:var(--primary);color:#fff;transition:filter .15s}button:hover{filter:brightness(1.15)}button.ghost{background:transparent;border:1px solid var(--panel-border);color:var(--text)}.prefs-tb-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:6px}button.prefs-tb-btn{background:var(--surface-2-strong);border:1px solid var(--border-strong);color:var(--text);font-weight:500;box-shadow:0 1px 2px #00000024}button.prefs-tb-btn:hover{filter:brightness(1.07)}button.prefs-tb-btn[aria-pressed=true]{background:var(--primary-soft);border-color:var(--primary);color:var(--text)}.prefs-tb-seg{display:inline-flex;border-radius:8px;overflow:hidden;border:1px solid var(--border-strong);box-shadow:0 1px 2px #0000001a}.prefs-tb-seg>button.prefs-tb-btn{border-radius:0;border:none;box-shadow:none}.prefs-tb-seg>button.prefs-tb-btn+button.prefs-tb-btn{border-left:1px solid var(--border-strong)}input,select,textarea{font-family:inherit;background:var(--input-bg);border:1px solid var(--panel-border);color:var(--text);padding:10px 12px;border-radius:8px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--primary)}.material-icons{vertical-align:middle}.react-grid-item.react-grid-placeholder{background:#4f8cff40!important;border:2px dashed var(--primary);border-radius:14px}.layout-edit-mode .widget-drag-handle{touch-action:none;user-select:none;-webkit-user-select:none}.layout{pointer-events:none;min-height:100%}.react-grid-item{pointer-events:auto}.layout.map-interact-passthrough .react-grid-item{pointer-events:none!important}.react-grid-item>.react-resizable-handle{background-image:none}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:6px;bottom:6px;width:10px;height:10px;border-right:2px solid var(--text-dim);border-bottom:2px solid var(--text-dim)}.cctv-spinner{width:28px;height:28px;border:3px solid var(--cctv-spinner-track);border-top-color:var(--accent);border-radius:50%;animation:cctv-spin .9s linear infinite}@keyframes cctv-spin{to{transform:rotate(360deg)}}@keyframes alert-toast-in{0%{opacity:0;transform:translateY(-120%)}to{opacity:1;transform:translateY(0)}}@keyframes alert-toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-130%)}}.alert-toast-item{animation:alert-toast-in .38s cubic-bezier(.22,1,.36,1) forwards}.alert-toast-item--out{animation:alert-toast-out .42s cubic-bezier(.55,0,1,.45) forwards}.devices-export-csv>summary{list-style:none}.devices-export-csv>summary::-webkit-details-marker{display:none}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
