.app-toast[data-v-a6c20ec3]{position:fixed;top:calc(var(--header-height) + 12px);left:50%;transform:translate(-50%);z-index:2000;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;box-shadow:var(--shadow-dropdown);border:1px solid var(--border-strong);background:var(--bg-dropdown);color:var(--color-text-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app-toast--success[data-v-a6c20ec3]{background:color-mix(in srgb,var(--color-success) 12%,var(--bg-dropdown));border-color:color-mix(in srgb,var(--color-success) 45%,var(--border-strong));color:var(--color-success)}.app-toast--warning[data-v-a6c20ec3]{background:color-mix(in srgb,var(--color-warning) 12%,var(--bg-dropdown));border-color:color-mix(in srgb,var(--color-warning) 45%,var(--border-strong));color:var(--color-warning)}.app-toast--error[data-v-a6c20ec3]{background:color-mix(in srgb,var(--color-danger) 12%,var(--bg-dropdown));border-color:color-mix(in srgb,var(--color-danger) 45%,var(--border-strong));color:var(--color-danger)}.toast-enter-active[data-v-a6c20ec3],.toast-leave-active[data-v-a6c20ec3]{transition:all .25s ease}.toast-enter-from[data-v-a6c20ec3],.toast-leave-to[data-v-a6c20ec3]{opacity:0;transform:translate(-50%) translateY(-12px)}:root,[data-theme=dark]{--bg-primary: #060d1a;--bg-secondary: #0f1a30;--bg-panel: rgba(8, 18, 36, .88);--bg-shell: radial-gradient(circle at 15% 0%, rgba(0, 102, 255, .12), transparent 42%), radial-gradient(circle at 85% 100%, rgba(59, 201, 255, .08), transparent 38%), linear-gradient(180deg, #060d1a 0%, #0a1428 100%);--bg-header: linear-gradient(180deg, rgba(10, 24, 48, .98), rgba(8, 18, 36, .95));--bg-tabbar: rgba(6, 14, 28, .85);--bg-toolbar: rgba(8, 16, 32, .5);--bg-dropdown: rgba(12, 22, 42, .98);--bg-input: rgba(0, 0, 0, .25);--bg-btn-secondary: rgba(255, 255, 255, .06);--bg-btn-secondary-hover: rgba(255, 255, 255, .1);--bg-table-header: rgba(255, 255, 255, .045);--bg-table-hover: rgba(59, 201, 255, .05);--bg-table-selected: rgba(0, 102, 255, .12);--bg-map: linear-gradient(180deg, rgba(0, 30, 60, .5), rgba(0, 10, 30, .8));--border-color: rgba(59, 201, 255, .14);--border-subtle: rgba(59, 201, 255, .08);--border-strong: rgba(59, 201, 255, .28);--color-primary: #0066ff;--color-accent: #3bc9ff;--color-text: #e8edf5;--color-text-secondary: #a0b4d0;--color-text-muted: rgba(200, 220, 240, .75);--color-text-strong: #ffffff;--color-danger: #ff6b7c;--color-warning: #ffa940;--color-success: #2ed6a8;--btn-primary-bg: #0066ff;--btn-primary-hover: #1a75ff;--btn-primary-text: #ffffff;--btn-secondary-bg: rgba(0, 102, 255, .18);--btn-secondary-hover: rgba(0, 102, 255, .28);--btn-secondary-text: #66b3ff;--btn-default-bg: rgba(255, 255, 255, .04);--btn-default-hover: rgba(255, 255, 255, .08);--btn-default-border: rgba(59, 201, 255, .22);--btn-default-border-hover: rgba(59, 201, 255, .38);--btn-default-text: #c8d4e8;--btn-tab-bg: rgba(255, 255, 255, .08);--btn-tab-hover: rgba(255, 255, 255, .12);--btn-tab-border: rgba(59, 201, 255, .28);--btn-tab-border-hover: rgba(59, 201, 255, .42);--btn-tab-text: #dce4f0;--btn-ghost-bg: transparent;--btn-ghost-hover: rgba(255, 255, 255, .06);--btn-ghost-text: #3bc9ff;--btn-danger-bg: #ff6b7c;--btn-danger-hover: #ff8492;--btn-danger-text: #ffffff;--bg-inset: rgba(0, 0, 0, .18);--border-inset: rgba(59, 201, 255, .1);--shadow-inset: none;--color-highlight: #f0a070;--color-highlight-critical: #ff8a90;--color-highlight-success: #3ecf9a;--shadow-dropdown: 0 12px 32px rgba(0, 0, 0, .4);--scrollbar-thumb: #2d4379;--panel-corner: rgba(59, 201, 255, .45);--nav-active-bg: linear-gradient(180deg, rgba(0, 120, 255, .45), rgba(0, 80, 200, .25));--chip-bg: rgba(0, 102, 255, .15);--chip-border: rgba(59, 201, 255, .3);--video-scanline: rgba(255, 255, 255, .03);--map-tunnel-fill: #1a3050;--map-tunnel-fill-alt: #243858;--map-tunnel-stroke: rgba(59, 201, 255, .35);--map-grid: rgba(59, 201, 255, .12);--map-label-bg: rgba(8, 16, 32, .88);--map-marker-robot: #2f7dff;--map-marker-point: #3ee6b8;--map-marker-temp-point: #73d13d;--map-marker-facility: #ffa940;--dir-pad-border: #0066ff;--dir-pad-bg: rgba(0, 102, 255, .14);--dir-pad-icon: #3bc9ff;--dir-pad-hover-bg: rgba(0, 102, 255, .34);--dir-pad-hover-border: #3bc9ff;--dir-pad-hover-icon: #ffffff;--dir-pad-hover-ring: rgba(59, 201, 255, .32);--dir-pad-hover-glow: rgba(0, 102, 255, .45);--dir-pad-active-bg: #0066ff;--dir-pad-active-border: #0066ff;--dir-pad-active-icon: #ffffff;--dir-pad-active-ring: rgba(0, 102, 255, .5);--dir-pad-active-glow: rgba(0, 102, 255, .55);--header-height: 56px;--tabbar-height: 36px;--font-family: "Inter", "PingFang SC", "Microsoft YaHei", sans-serif}[data-theme=light]{--bg-primary: #eef2f8;--bg-secondary: #dce4f0;--bg-panel: #ffffff;--bg-shell: radial-gradient(circle at 15% 0%, rgba(0, 102, 255, .06), transparent 42%), radial-gradient(circle at 85% 100%, rgba(59, 201, 255, .04), transparent 38%), linear-gradient(180deg, #eef2f8 0%, #e4eaf4 100%);--bg-header: linear-gradient(180deg, #ffffff, #f5f8fc);--bg-tabbar: #f0f4fa;--bg-toolbar: rgba(255, 255, 255, .85);--bg-dropdown: #ffffff;--bg-input: #f5f8fc;--bg-btn-secondary: rgba(0, 80, 180, .06);--bg-btn-secondary-hover: rgba(0, 80, 180, .1);--bg-table-header: rgba(0, 60, 140, .06);--bg-table-hover: rgba(0, 102, 255, .04);--bg-table-selected: rgba(0, 102, 255, .08);--bg-map: linear-gradient(180deg, #d8e4f4, #c8d8ec);--border-color: rgba(0, 80, 180, .14);--border-subtle: rgba(0, 80, 180, .08);--border-strong: rgba(0, 80, 180, .26);--color-primary: #0066ff;--color-accent: #0077ee;--color-text: #1a2332;--color-text-secondary: #5a6b80;--color-text-muted: #6b7c90;--color-text-strong: #0d1520;--color-danger: #e04558;--color-warning: #d48806;--color-success: #0a9e72;--btn-primary-bg: #0066ff;--btn-primary-hover: #0052cc;--btn-primary-text: #ffffff;--btn-secondary-bg: rgba(0, 102, 255, .1);--btn-secondary-hover: rgba(0, 102, 255, .16);--btn-secondary-text: #0066ff;--btn-default-bg: #ffffff;--btn-default-hover: #f5f8fc;--btn-default-border: rgba(0, 80, 180, .22);--btn-default-border-hover: rgba(0, 102, 255, .38);--btn-default-text: #2f3e52;--btn-tab-bg: #f0f4fa;--btn-tab-hover: #e8eef6;--btn-tab-border: rgba(0, 80, 180, .22);--btn-tab-border-hover: rgba(0, 102, 255, .38);--btn-tab-text: #3a4d63;--btn-ghost-bg: transparent;--btn-ghost-hover: rgba(0, 80, 180, .06);--btn-ghost-text: #0066ff;--btn-danger-bg: #ff6b7c;--btn-danger-hover: #f25568;--btn-danger-text: #ffffff;--bg-inset: #ffffff;--border-inset: rgba(20, 60, 120, .16);--shadow-inset: 0 1px 3px rgba(20, 50, 100, .06);--color-highlight: #c2410c;--color-highlight-critical: #b42318;--color-highlight-success: #067647;--shadow-dropdown: 0 12px 32px rgba(0, 40, 100, .12);--scrollbar-thumb: #b0c0d8;--panel-corner: rgba(0, 102, 255, .35);--nav-active-bg: linear-gradient(180deg, rgba(0, 102, 255, .15), rgba(0, 80, 200, .08));--chip-bg: rgba(0, 102, 255, .08);--chip-border: rgba(0, 102, 255, .22);--video-scanline: rgba(0, 0, 0, .04);--map-tunnel-fill: #c8d8ec;--map-tunnel-fill-alt: #b0c4de;--map-tunnel-stroke: rgba(0, 80, 160, .45);--map-grid: rgba(0, 80, 160, .15);--map-label-bg: rgba(255, 255, 255, .92);--map-marker-robot: #0066ff;--map-marker-point: #0a9e72;--map-marker-temp-point: #389e0d;--map-marker-facility: #d48806;--dir-pad-border: #0066ff;--dir-pad-bg: rgba(0, 102, 255, .08);--dir-pad-icon: #0066ff;--dir-pad-hover-bg: rgba(0, 102, 255, .2);--dir-pad-hover-border: #0066ff;--dir-pad-hover-icon: #0052cc;--dir-pad-hover-ring: rgba(0, 102, 255, .24);--dir-pad-hover-glow: rgba(0, 102, 255, .12);--dir-pad-active-bg: #0066ff;--dir-pad-active-border: #0066ff;--dir-pad-active-icon: #ffffff;--dir-pad-active-ring: rgba(0, 102, 255, .35);--dir-pad-active-glow: rgba(0, 102, 255, .18)}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{height:100%}body{font-family:var(--font-family);background:radial-gradient(circle at 20% 20%,var(--bg-secondary),var(--bg-primary));color:var(--color-text);font-size:14px;line-height:1.5}a{color:var(--color-accent);text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 28px;min-width:96px;border-radius:999px;border:none;font-size:14px;font-weight:500;line-height:1.2;transition:background .2s,color .2s,box-shadow .2s,opacity .2s;white-space:nowrap;box-shadow:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover:not(:disabled){background:var(--btn-primary-hover);box-shadow:0 4px 14px #0066ff59}.btn-secondary{background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}.btn-secondary:hover:not(:disabled){background:var(--btn-secondary-hover);box-shadow:none}.btn-default{background:var(--btn-default-bg);color:var(--btn-default-text);border:1px solid var(--btn-default-border)}.btn-default:hover:not(:disabled){background:var(--btn-default-hover);border-color:var(--btn-default-border-hover);color:var(--color-text-strong)}.btn-danger{background:var(--btn-danger-bg);color:var(--btn-danger-text)}.btn-danger:hover:not(:disabled){background:var(--btn-danger-hover);box-shadow:0 4px 12px #ff6b7c4d}.btn-ghost{background:var(--btn-ghost-bg);color:var(--btn-ghost-text)}.btn-ghost:hover:not(:disabled){background:var(--btn-ghost-hover)}.btn-sm{padding:8px 22px;min-width:80px;font-size:13px}.btn-default.btn-sm,.list-panel-toolbar .btn-sm{min-width:unset;padding:8px 18px}.view-toggle{display:inline-flex;gap:0;padding:3px;border-radius:999px;background:var(--btn-default-bg);border:1px solid var(--border-subtle)}.view-toggle .btn{min-width:46px;padding:6px 16px;border:none!important;background:transparent;color:var(--btn-default-text);box-shadow:none!important}.view-toggle .btn:hover:not(.active):not(:disabled){background:var(--btn-default-hover);color:var(--color-text-strong)}.view-toggle .btn.active{background:var(--btn-primary-bg);color:var(--btn-primary-text);font-weight:600;box-shadow:0 2px 8px #0066ff47}.toggle-tabs .btn{background:var(--btn-tab-bg);color:var(--btn-tab-text);border:1px solid var(--btn-tab-border);font-weight:500}.toggle-tabs .btn:hover:not(.active):not(:disabled){background:var(--btn-tab-hover);border-color:var(--btn-tab-border-hover);color:var(--color-text-strong)}.toggle-tabs .btn.active{background:var(--btn-primary-bg);color:var(--btn-primary-text);border-color:transparent;font-weight:600;box-shadow:0 2px 8px #0066ff47}.form-group{margin-bottom:16px}.form-label{display:block;margin-bottom:6px;color:var(--color-text-secondary);font-size:13px}.form-label.required:after{content:" *";color:var(--color-danger)}.form-input,.form-select,.form-textarea{width:100%;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:8px;color:var(--color-text);outline:none;font-size:13px;line-height:1.4;transition:border-color .15s,background-color .15s,box-shadow .15s}.form-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:36px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2.5 4.5L6 8L9.5 4.5' stroke='%235a6b80' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px}[data-theme=light] .form-select,[data-theme=light] .form-input[type=date],[data-theme=light] .form-input[type=time],[data-theme=light] .form-input[type=datetime-local]{background-color:#fff}.form-select:hover:not(:disabled){border-color:var(--border-strong)}[data-theme=light] .form-select:hover:not(:disabled){background-color:#fff}.form-select:disabled{opacity:.65;cursor:not-allowed}.form-select option{background:var(--bg-dropdown);color:var(--color-text)}.form-input[type=date],.form-input[type=time],.form-input[type=datetime-local]{cursor:pointer;min-height:38px;color-scheme:light dark}.form-input[type=date]::-webkit-calendar-picker-indicator,.form-input[type=time]::-webkit-calendar-picker-indicator,.form-input[type=datetime-local]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.75}.form-input[type=date]:hover::-webkit-calendar-picker-indicator,.form-input[type=time]:hover::-webkit-calendar-picker-indicator,.form-input[type=datetime-local]:hover::-webkit-calendar-picker-indicator{opacity:1}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #3bc9ff26}.form-textarea{min-height:72px;resize:vertical}.form-error{margin-top:4px;font-size:12px;color:var(--color-danger)}.form-hint{margin-top:4px;font-size:12px;color:var(--color-text-secondary)}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--border-subtle);vertical-align:middle}.data-table th{color:var(--color-text-secondary);font-weight:500;font-size:12px;background:var(--bg-table-header);border-bottom:1px solid var(--border-color)}.data-table tbody tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--bg-table-hover)}.data-table tr.selected td{background:var(--bg-table-selected)}.data-table td.actions,.data-table td:has(.table-actions){white-space:nowrap;vertical-align:middle}.data-table .table-actions{display:inline-flex;align-items:center;gap:0;flex-wrap:wrap}.data-table .table-actions .btn,.data-table td.actions>.btn{padding:0 6px;min-width:unset;min-height:unset;border:none;background:transparent;font-size:13px;font-weight:400;border-radius:0;box-shadow:none}.data-table .table-actions .btn:first-child{padding-left:0}.data-table .table-actions .btn+.btn{border-left:1px solid var(--border-subtle);margin-left:2px;padding-left:10px}.data-table .table-actions .action-view,.data-table td.actions>.action-view{color:var(--color-accent)}.data-table .table-actions .action-edit,.data-table td.actions>.action-edit{color:var(--color-primary)}.data-table .table-actions .action-control,.data-table td.actions>.action-control{color:var(--color-warning)}.data-table .table-actions .action-muted,.data-table td.actions>.action-muted{color:var(--color-text-secondary)}.data-table .table-actions .btn-ghost:not(.action-edit):not(.action-control):not(.action-muted):not(.action-view),.data-table td.actions>.btn-ghost:not(.action-edit):not(.action-control):not(.action-muted):not(.action-view){color:var(--color-accent)}.data-table .table-actions .btn-ghost:hover:not(:disabled),.data-table td.actions>.btn-ghost:hover:not(:disabled),.data-table .table-actions .action-view:hover:not(:disabled),.data-table .table-actions .action-edit:hover:not(:disabled),.data-table .table-actions .action-control:hover:not(:disabled),.data-table .table-actions .action-muted:hover:not(:disabled){background:transparent;text-decoration:underline;opacity:.85}.data-table .table-actions .btn-danger,.data-table td.actions>.btn-danger{color:var(--color-danger)}.data-table .table-actions .btn-danger:hover:not(:disabled),.data-table td.actions>.btn-danger:hover:not(:disabled){background:transparent;text-decoration:underline;opacity:.85}.data-table .table-actions .btn:disabled,.data-table td.actions>.btn:disabled{opacity:.45;cursor:not-allowed;text-decoration:none}.panel{position:relative;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:8px;overflow:hidden}.panel+.panel{margin-top:8px}.panel.filter-panel{background:#ffffff05;border-color:transparent}.list-panel-toolbar{display:flex;align-items:center;justify-content:flex-end;padding:6px 12px;min-height:36px;flex-shrink:0}.list-panel-toolbar .panel-meta{margin-right:auto;font-size:12px;color:var(--color-text-secondary)}.list-panel>.panel-body{padding-top:0}.detail-page{display:flex;flex-direction:column;gap:12px;flex-shrink:0;width:100%;padding-bottom:16px}.list-page{display:flex;flex-direction:column;flex:1;min-height:0;height:calc(100vh - var(--header-height) - var(--tabbar-height) - 16px)}.list-page>.sub-tab-bar{flex-shrink:0}.list-page>.filter-panel{flex-shrink:0;margin-bottom:0}.list-page>.filter-panel+.list-panel{margin-top:6px}.list-page>.list-panel,.list-page-stack>.list-panel,.list-page .list-page-stack>.list-panel{flex:1;min-height:0;display:flex;flex-direction:column}.list-page>.list-panel>.panel-body.table-section,.list-page-stack>.list-panel>.panel-body.table-section,.list-page .list-page-stack>.list-panel>.panel-body.table-section{flex:1;min-height:0;overflow:auto}.sub-tab-bar{display:flex;align-items:center;gap:4px;margin-bottom:8px;border-bottom:1px solid var(--border-color);flex-shrink:0}.sub-tab-bar .tab-item{padding:7px 14px;background:none;border:none;color:var(--color-text-secondary);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;font-size:13px}.sub-tab-bar .tab-item.active{color:var(--color-accent);border-bottom-color:var(--color-accent);font-weight:500}.list-panel-toolbar--filters{justify-content:flex-start;gap:12px 16px;flex-wrap:wrap;border-bottom:1px solid var(--border-subtle)}.list-panel-toolbar--filters .toolbar-spacer{flex:1;min-width:8px}.list-panel .list-filter-head{flex-shrink:0;border-bottom:1px solid var(--border-subtle);padding-top:8px;padding-bottom:8px}.list-hint{padding:6px 12px 0;font-size:12px;color:var(--color-text-secondary)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border-subtle);background:transparent}.panel-header .btn-primary{font-weight:600}.panel-title{font-size:15px;font-weight:600;color:var(--color-text-strong)}.panel-body{padding:12px 16px 16px}.panel-body.filter-bar,.filter-bar.panel-body{padding:12px 16px}.panel.list-panel>.panel-body:not(.filter-bar){padding:0 0 8px}.panel.list-panel>.panel-body:not(.filter-bar) .table-wrap{padding:0 4px}.status-tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:500}.status-tag--normal{background:#2ed6a826;color:var(--color-success)}.status-tag--warning{background:#ffa94026;color:var(--color-warning)}.status-tag--critical{background:#ff6b7c26;color:var(--color-danger)}.status-tag--info{background:#3bc9ff26;color:var(--color-accent)}.status-tag--offline{background:#a0b4d026;color:var(--color-text-secondary)}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px}.filter-bar.panel,.filter-bar.panel-body{margin-bottom:0}.filter-bar.panel-body{padding:8px 12px}.filter-field{display:inline-flex;align-items:center;gap:8px;margin:0;cursor:default}.filter-field.wide .filter-control .form-input,.filter-field.wide .filter-control .form-select{width:240px}.filter-label{flex-shrink:0;font-size:13px;color:var(--color-text-secondary);white-space:nowrap}.filter-control{display:inline-flex;align-items:center}.filter-control .form-input,.filter-control .form-select{width:160px;min-width:120px;padding:6px 10px;font-size:13px}.filter-actions{display:inline-flex;align-items:center;gap:8px;margin-left:auto}.table-wrap{overflow-x:auto}.checkbox-group{display:flex;flex-direction:column;gap:8px}.checkbox-item{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}.checkbox-item input{accent-color:var(--color-primary)}.checkbox-group--grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:20px;font-size:12px;background:var(--chip-bg);color:var(--color-accent);border:1px solid var(--chip-border)}.chip--success{background:#2ed6a826;color:var(--color-success);border-color:#2ed6a84d}.chip--danger{background:#ff6b7c26;color:var(--color-danger);border-color:#ff6b7c4d}
