.password-form[data-v-3d9defed]{grid-template-columns:1fr;margin:0;padding:22px 26px;border-top:0}.field-error[data-v-3d9defed]{color:#b91c1c}@media (max-width: 640px){.password-form[data-v-3d9defed]{padding:18px}}.form-dialog-wide[data-v-c1471ab8]{grid-column:1 / -1}.empty-state[data-v-c1471ab8]{min-height:180px}.detail-dialog[data-v-dd4c2375]{display:flex;flex-direction:column;width:min(1120px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto}.device-detail-page-shell[data-v-dd4c2375]{position:static;display:block;min-height:100%;padding:0;background:transparent}.detail-dialog.device-detail-page[data-v-dd4c2375]{width:100%;height:auto;min-height:calc(100vh - 72px);max-height:none;overflow:visible;border:0;box-shadow:none}.detail-page-actions[data-v-dd4c2375],.detail-adjacent-actions[data-v-dd4c2375]{display:flex;align-items:center;gap:8px}.detail-dialog-header[data-v-dd4c2375],.detail-tabs[data-v-dd4c2375]{flex:0 0 auto}.detail-summary[data-v-dd4c2375],.detail-tab-content[data-v-dd4c2375]{flex:0 0 auto;min-height:0;overflow:visible}.detail-summary[data-v-dd4c2375]{grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:14px}.detail-summary div[data-v-dd4c2375]{display:flex;flex-direction:column;justify-content:space-between;min-height:126px;padding:18px;background:#fff;border:1px solid var(--line-soft);border-left:3px solid #5a9bf6;border-radius:6px;box-shadow:0 6px 16px #102a430a}.detail-summary div[data-v-dd4c2375]:nth-child(1){border-left-color:#d45454}.detail-summary div[data-v-dd4c2375]:nth-child(2){border-left-color:#18a478}.detail-summary div[data-v-dd4c2375]:nth-child(3){border-left-color:#3978dc}.detail-summary div[data-v-dd4c2375]:nth-child(4){border-left-color:#d28c26}.detail-summary div[data-v-dd4c2375]:nth-child(5){border-left-color:#8158c9}.detail-summary div[data-v-dd4c2375]:nth-child(6){border-left-color:#687f93}.detail-summary dd[data-v-dd4c2375]{margin:10px 0 0;font-size:20px;font-variant-numeric:tabular-nums}.detail-tabs[data-v-dd4c2375]{display:flex;gap:2px;padding:0 26px;overflow-x:auto;border-bottom:1px solid var(--line-soft)}.detail-tabs button[data-v-dd4c2375]{flex:0 0 auto;min-height:48px;padding:0 15px;color:var(--ink-muted);font-weight:700;background:transparent;border:0;border-bottom:3px solid transparent}.detail-tabs button[data-v-dd4c2375]:hover,.detail-tabs button.active[data-v-dd4c2375]{color:var(--blue);border-bottom-color:var(--blue)}.detail-tab-content[data-v-dd4c2375]{margin:0;padding:22px 26px 26px}.analysis-dashboard[data-v-dd4c2375]{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,.9fr);gap:20px;align-items:start}.trend-section[data-v-dd4c2375],.analysis-section[data-v-dd4c2375]{min-width:0;padding:20px;background:var(--surface);border:1px solid var(--line-soft);border-radius:6px;box-shadow:0 6px 16px #102a430a}.trend-heading[data-v-dd4c2375],.analysis-actions[data-v-dd4c2375],.trend-controls[data-v-dd4c2375],.preset-buttons[data-v-dd4c2375],.analysis-editor>div[data-v-dd4c2375],.trend-toolbar[data-v-dd4c2375],.analysis-title-row[data-v-dd4c2375]{display:flex;align-items:center;gap:10px}.trend-heading[data-v-dd4c2375]{justify-content:space-between}.trend-heading h4[data-v-dd4c2375],.analysis-heading h4[data-v-dd4c2375]{display:flex;align-items:center;gap:7px;margin:0;font-size:17px;color:var(--ink)}.trend-heading p[data-v-dd4c2375],.analysis-heading p[data-v-dd4c2375],.range-caption[data-v-dd4c2375],.analysis-meta[data-v-dd4c2375],.analysis-generated[data-v-dd4c2375]{margin:5px 0 0;color:var(--ink-muted);font-size:13px}.trend-controls[data-v-dd4c2375]{flex-wrap:wrap;margin:16px 0 12px}.trend-controls label[data-v-dd4c2375]{display:flex;align-items:center;gap:6px;color:var(--ink-muted);font-size:13px}.trend-controls input[data-v-dd4c2375]{width:180px}.preset-buttons[data-v-dd4c2375]{flex-wrap:wrap}.preset-buttons button[data-v-dd4c2375]{padding:7px 10px;font-size:13px}.metric-tabs[data-v-dd4c2375]{display:flex;gap:8px;border-bottom:1px solid var(--line)}.metric-tabs button[data-v-dd4c2375]{border:0;border-bottom:2px solid transparent;background:transparent;padding:9px 15px;color:var(--ink-muted);font-weight:700}.metric-tabs button.active[data-v-dd4c2375]{border-color:var(--primary);color:var(--primary)}.chart-wrap[data-v-dd4c2375]{position:relative;margin-top:12px;border:1px solid var(--line);border-radius:10px;background:#fbfdff;padding:10px 12px 0}.trend-chart[data-v-dd4c2375]{display:block;width:100%;height:clamp(300px,42vh,460px)}.trend-chart.is-zoomed[data-v-dd4c2375]{cursor:grab;touch-action:pan-y}.trend-chart.is-zoomed[data-v-dd4c2375]:active{cursor:grabbing}.chart-interaction[data-v-dd4c2375]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 2px 8px;color:var(--ink-muted);font-size:12px}.chart-interaction>div[data-v-dd4c2375]{display:flex;gap:6px}.chart-interaction button[data-v-dd4c2375]{padding:5px 8px;font-size:12px}.chart-grid[data-v-dd4c2375]{stroke:#e8eef5;stroke-width:1}.chart-line[data-v-dd4c2375]{stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.chart-axis[data-v-dd4c2375]{fill:#8292a8;font-size:11px}.chart-time[data-v-dd4c2375]{font-size:10px}.chart-stat[data-v-dd4c2375]{position:absolute;top:15px;right:18px;display:flex;gap:7px;align-items:baseline;padding:5px 8px;border-radius:6px;background:rgba(255,255,255,.88);color:var(--ink-muted);font-size:12px}.chart-stat strong[data-v-dd4c2375]{color:var(--ink)}.chart-empty[data-v-dd4c2375],.trend-error[data-v-dd4c2375]{margin-top:12px;padding:28px;border-radius:8px;background:#f7f9fc;color:var(--ink-muted);text-align:center}.trend-error[data-v-dd4c2375]{color:#b42318;background:#fff3f2}.analysis-heading[data-v-dd4c2375]{margin-bottom:12px}.analysis-title-row[data-v-dd4c2375]{justify-content:space-between}.analysis-actions[data-v-dd4c2375]{flex:0 0 auto}.analysis-actions[data-v-dd4c2375]>*{white-space:nowrap}.analysis-source[data-v-dd4c2375],.analysis-status[data-v-dd4c2375]{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.analysis-source.auto[data-v-dd4c2375]{background:#eef5ff;color:#2563eb}.analysis-source.manual[data-v-dd4c2375],.analysis-status[data-v-dd4c2375]{background:#edf9f4;color:#087b5d}.analysis-status.analysis-warn[data-v-dd4c2375]{background:#fff7e8;color:#9a6700}.analysis-status.analysis-critical[data-v-dd4c2375]{background:#fff0f0;color:#c5221f}.analysis-content[data-v-dd4c2375]{white-space:pre-line;margin:10px 0;line-height:1.7;color:var(--ink)}.analysis-generated[data-v-dd4c2375]{padding:9px 10px;border-left:3px solid #c7d7f5;background:#f7faff;white-space:pre-line;line-height:1.6}.analysis-editor[data-v-dd4c2375]{margin-top:14px;padding:14px;border:1px solid #cfdcf0;border-radius:10px;background:#f8fbff}.analysis-editor label[data-v-dd4c2375]{display:grid;gap:7px;color:var(--ink);font-weight:700}.analysis-editor textarea[data-v-dd4c2375]{width:100%;resize:vertical}.analysis-editor>div[data-v-dd4c2375]{margin-top:10px}.location-section[data-v-dd4c2375]{display:flex;flex-direction:column;min-height:calc(100vh - 240px)}.location-map[data-v-dd4c2375]{width:100%;min-height:460px;flex:1;overflow:hidden;background:#eef3f7;border:1px solid var(--line-soft);border-radius:6px}.location-meta[data-v-dd4c2375]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px;margin-top:14px;padding:14px 0;color:var(--ink-muted)}.location-meta strong[data-v-dd4c2375]{color:var(--ink-strong)}.location-empty[data-v-dd4c2375]{display:grid;min-height:240px;gap:8px;color:var(--ink-muted);place-content:center;text-align:center}.location-empty strong[data-v-dd4c2375]{color:var(--ink-strong);font-size:16px}.location-actions[data-v-dd4c2375]{display:flex;justify-content:flex-end;margin-top:0;padding-top:14px;border-top:1px solid var(--line-soft)}@media (max-width: 900px){.analysis-dashboard[data-v-dd4c2375]{grid-template-columns:1fr}.location-meta[data-v-dd4c2375]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.detail-dialog-header[data-v-dd4c2375]{align-items:flex-start;gap:12px}.detail-page-actions[data-v-dd4c2375]{align-items:flex-end;flex-direction:column}.detail-summary[data-v-dd4c2375]{grid-template-columns:repeat(2,1fr)}.detail-tabs[data-v-dd4c2375],.detail-tab-content[data-v-dd4c2375]{padding-right:18px;padding-left:18px}.trend-section[data-v-dd4c2375],.analysis-section[data-v-dd4c2375]{padding:16px}.trend-heading[data-v-dd4c2375],.chart-interaction[data-v-dd4c2375],.analysis-title-row[data-v-dd4c2375]{align-items:flex-start;flex-direction:column}.trend-controls label[data-v-dd4c2375]{width:100%;justify-content:space-between}.trend-controls input[data-v-dd4c2375]{width:min(230px,68vw)}.trend-chart[data-v-dd4c2375]{height:280px}.chart-stat[data-v-dd4c2375]{display:none}.location-section[data-v-dd4c2375]{min-height:auto}.location-map[data-v-dd4c2375]{min-height:330px}.location-meta[data-v-dd4c2375]{grid-template-columns:1fr}}.device-list-heading[data-v-061d57a8],.device-list-actions[data-v-061d57a8],.device-dialog-actions[data-v-061d57a8],.device-status-tags[data-v-061d57a8]{display:flex;gap:10px}.device-list-heading[data-v-061d57a8]{justify-content:space-between;flex-wrap:wrap}.device-filter-form[data-v-061d57a8]{align-items:end;flex-wrap:wrap}.device-filter-form>select[data-v-061d57a8]{min-width:138px}.time-filter[data-v-061d57a8]{display:grid;gap:5px;color:var(--ink-muted);font-size:12px}.time-filter input[data-v-061d57a8]{min-height:40px}.device-status-tags[data-v-061d57a8]{padding:0 20px 16px;overflow-x:auto}.device-status-tags button[data-v-061d57a8]{flex:0 0 auto;min-height:32px;padding:0 12px;color:var(--ink-muted);background:var(--surface-muted);border:1px solid var(--line);border-radius:6px}.device-status-tags button.active[data-v-061d57a8]{color:var(--blue);background:var(--blue-soft);border-color:var(--blue)}.device-management-dialog[data-v-061d57a8]{width:min(760px,100%)}.device-dialog-form[data-v-061d57a8]{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:22px 26px;border-top:0}.device-dialog-actions[data-v-061d57a8]{grid-column:1 / -1;justify-content:flex-end;padding-top:6px}td small[data-v-061d57a8]{display:flex;flex-direction:column;gap:3px;color:var(--ink-muted);font-size:12px}.device-name-button[data-v-061d57a8]{display:grid;gap:3px;padding:0;color:var(--blue);text-align:left;background:transparent;border:0}.device-name-button:hover:not(:disabled) strong[data-v-061d57a8]{color:var(--blue-dark);text-decoration:underline}.device-name-button[data-v-061d57a8]:disabled{color:var(--ink-muted)}@media (max-width: 640px){.device-list-actions[data-v-061d57a8]{width:100%}.device-list-actions button[data-v-061d57a8]{flex:1}.device-filter-form[data-v-061d57a8]>*{width:100%}.device-dialog-form[data-v-061d57a8]{grid-template-columns:1fr;padding:18px}}.form-dialog-wide[data-v-67b4cf4e]{grid-column:1 / -1}.login-panel-wide[data-v-f8e8d4a5]{width:min(760px,calc(100vw - 32px));display:grid;grid-template-columns:1fr 250px;gap:28px;align-items:center}.login-password form[data-v-f8e8d4a5]{display:grid;gap:14px}.login-password form label[data-v-f8e8d4a5]{display:grid;gap:6px}.login-password form button[data-v-f8e8d4a5]{margin-top:8px}.login-qr[data-v-f8e8d4a5]{border-left:1px solid var(--line);padding-left:28px;display:grid;justify-items:center;text-align:center;color:var(--ink-muted)}.login-qr h2[data-v-f8e8d4a5]{margin:6px 0;color:var(--ink);font-size:16px}.qr-image[data-v-f8e8d4a5]{width:176px;height:176px;image-rendering:pixelated}.qr-hint[data-v-f8e8d4a5]{margin:5px 0 10px;font-size:12px;line-height:1.5}.qr-expired[data-v-f8e8d4a5]{color:#b45309;font-size:12px}@media (max-width: 650px){.login-panel-wide[data-v-f8e8d4a5]{grid-template-columns:1fr}.login-qr[data-v-f8e8d4a5]{border-left:0;border-top:1px solid var(--line);padding:20px 0 0}}.password-panel[data-v-7d040324]{max-width:420px;display:grid;gap:12px}.password-panel h1[data-v-7d040324]{margin:0}.password-panel p[data-v-7d040324]{margin:0;color:var(--ink-muted);line-height:1.6}.password-panel label[data-v-7d040324]{display:grid;gap:6px}.password-error[data-v-7d040324]{color:#b91c1c!important}.member-toolbar[data-v-c3b8acf9]{flex-wrap:wrap}.readonly-field[data-v-c3b8acf9]{display:flex;align-items:center;min-height:42px;padding:0 12px;color:var(--ink-muted);background:var(--surface-muted);border:1px solid var(--line);border-radius:6px;line-height:1.4}td small[data-v-c3b8acf9]{display:block;margin-top:4px;color:var(--ink-muted)}.scope-summary[data-v-c3b8acf9]{min-width:220px;line-height:1.5}.form-help[data-v-c3b8acf9]{display:flex;gap:7px;align-items:center;margin:0 26px 22px;color:var(--ink-muted);font-size:13px}.empty-state[data-v-c3b8acf9]{min-height:180px}.menu-scope-section[data-v-c3b8acf9]{grid-column:1 / -1;display:grid;gap:10px}.menu-scope-section h4[data-v-c3b8acf9],.menu-scope-section p[data-v-c3b8acf9]{margin:0}.menu-scope-section p[data-v-c3b8acf9],.scope-empty[data-v-c3b8acf9]{color:var(--ink-muted);font-size:13px}.menu-scope-card[data-v-c3b8acf9]{padding:12px;border:1px solid var(--line);border-radius:8px}.menu-scope-head[data-v-c3b8acf9]{display:flex;align-items:center;justify-content:space-between;gap:12px}.menu-scope-head select[data-v-c3b8acf9]{width:min(240px,100%)}.scope-tree[data-v-c3b8acf9]{display:grid;gap:8px;margin-top:12px;max-height:320px;overflow-y:auto}.scope-tree details[data-v-c3b8acf9]{padding:8px;background:var(--surface-muted);border:1px solid var(--line);border-radius:6px}.scope-tree summary[data-v-c3b8acf9]{cursor:pointer}.scope-tree summary label[data-v-c3b8acf9],.scope-device[data-v-c3b8acf9]{display:inline-flex;gap:7px;align-items:center;color:var(--ink)}.scope-project[data-v-c3b8acf9]{margin:8px 0 0 16px}.scope-device[data-v-c3b8acf9]{display:flex;margin:8px 0 0 24px}.scope-tree input[data-v-c3b8acf9]{width:auto}.field-error[data-v-c3b8acf9]{grid-column:1 / -1;color:#b91c1c}@media (max-width: 640px){.menu-scope-head[data-v-c3b8acf9]{display:grid;grid-template-columns:1fr}.menu-scope-head select[data-v-c3b8acf9]{width:100%}}.hierarchy-note[data-v-ac31d541]{margin:5px 0 0;color:var(--ink-muted);font-size:13px}.monitor-tree[data-v-ac31d541]{display:grid;gap:12px}.company-group[data-v-ac31d541],.project-group[data-v-ac31d541]{border:1px solid var(--line);border-radius:10px;overflow:hidden}.tree-group-head[data-v-ac31d541],.tree-project-head[data-v-ac31d541]{display:flex;width:100%;align-items:center;gap:8px;border:0;color:var(--ink);text-align:left;cursor:pointer}.tree-group-head[data-v-ac31d541]{padding:14px 16px;background:#f5f9ff}.tree-project-head[data-v-ac31d541]{padding:12px 14px;background:#fbfdff}.tree-group-head span[data-v-ac31d541],.tree-project-head span[data-v-ac31d541]{margin-left:auto;color:var(--ink-muted);font-size:13px;font-weight:400}.project-groups[data-v-ac31d541]{display:grid;gap:10px;padding:10px}.collapsed[data-v-ac31d541]{transform:rotate(-90deg)}.tree-group-head svg[data-v-ac31d541],.tree-project-head svg[data-v-ac31d541]{transition:transform .18s ease}td small[data-v-ac31d541]{display:block;margin-top:3px;color:var(--ink-muted);font-size:12px}@media (max-width: 700px){.tree-group-head span[data-v-ac31d541],.tree-project-head span[data-v-ac31d541]{font-size:12px}.project-groups[data-v-ac31d541]{padding:7px}}.empty-state[data-v-cb5259cc]{min-height:180px}.role-table-wrap[data-v-8ba12cd2]{max-height:none}.role-table[data-v-8ba12cd2]{width:100%;border-collapse:collapse}.role-table th[data-v-8ba12cd2],.role-table td[data-v-8ba12cd2]{padding:14px 16px;text-align:left;vertical-align:middle;border-bottom:1px solid var(--line-soft)}.role-table th[data-v-8ba12cd2]{color:var(--ink-muted);font-size:12px;font-weight:700;background:var(--surface-muted)}.role-table tr:last-child td[data-v-8ba12cd2]{border-bottom:0}.role-table td small[data-v-8ba12cd2]{display:block;margin-top:4px;color:var(--ink-muted);font-size:12px}.role-code[data-v-8ba12cd2]{color:#486581;font-family:Consolas,Courier New,monospace;font-size:12px;overflow-wrap:anywhere}.role-table td[data-v-8ba12cd2]:last-child{width:1%;white-space:nowrap}.role-form[data-v-8ba12cd2]{align-items:start}.role-form .role-remark[data-v-8ba12cd2],.permission-section[data-v-8ba12cd2]{grid-column:1 / -1}.permission-section[data-v-8ba12cd2]{display:grid;gap:11px;padding-top:2px}.permission-heading[data-v-8ba12cd2]{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.permission-heading h4[data-v-8ba12cd2],.permission-heading p[data-v-8ba12cd2]{margin:0}.permission-heading h4[data-v-8ba12cd2]{color:var(--ink-strong);font-size:15px}.permission-heading p[data-v-8ba12cd2],.permission-branch small[data-v-8ba12cd2]{color:var(--ink-muted);font-size:12px}.permission-heading p[data-v-8ba12cd2]{margin-top:5px}.permission-tree[data-v-8ba12cd2]{display:grid;gap:10px;max-height:min(360px,calc(100vh - 390px));overflow:auto;border:1px solid var(--line);border-radius:6px}.permission-branch+.permission-branch[data-v-8ba12cd2]{border-top:1px solid var(--line)}.permission-menu[data-v-8ba12cd2]{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:12px 14px;background:#f8fbff}.permission-option[data-v-8ba12cd2],.permission-child[data-v-8ba12cd2]{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;column-gap:10px;min-width:0;cursor:pointer}.permission-option[data-v-8ba12cd2]{flex:1}.permission-expand[data-v-8ba12cd2]{display:inline-flex;flex:0 0 auto;align-items:center;gap:5px;min-height:30px;padding:0 7px;color:var(--blue);background:transparent;border:0;border-radius:4px;white-space:nowrap}.permission-expand[data-v-8ba12cd2]:hover{background:#eaf3ff}.permission-expand small[data-v-8ba12cd2]{color:var(--ink-muted)}.permission-children[data-v-8ba12cd2]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line-soft);background:#fff}.permission-child[data-v-8ba12cd2]{padding:12px 14px}.permission-child+.permission-child[data-v-8ba12cd2]{border-left:1px solid var(--line-soft)}.permission-checkbox[data-v-8ba12cd2]{width:18px;min-width:18px;height:18px;min-height:18px;margin:1px 0 0;padding:0;accent-color:var(--blue);border-radius:3px;box-shadow:none}.permission-checkbox[data-v-8ba12cd2]:focus{box-shadow:0 0 0 3px #1268d529}.permission-option span[data-v-8ba12cd2],.permission-child span[data-v-8ba12cd2]{display:grid;gap:4px;min-width:0}.permission-branch strong[data-v-8ba12cd2]{color:var(--ink);font-size:14px}.permission-branch small[data-v-8ba12cd2]{line-height:1.45}.permission-branch input[data-v-8ba12cd2]:disabled{cursor:not-allowed}@media (max-width: 640px){.role-table thead[data-v-8ba12cd2]{display:none}.role-table[data-v-8ba12cd2],.role-table tbody[data-v-8ba12cd2],.role-table tr[data-v-8ba12cd2],.role-table td[data-v-8ba12cd2]{display:block;width:100%}.role-table tr[data-v-8ba12cd2]{padding:10px 14px;border-bottom:1px solid var(--line-soft)}.role-table tr[data-v-8ba12cd2]:last-child{border-bottom:0}.role-table td[data-v-8ba12cd2]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:7px 0;border:0;text-align:right}.role-table td[data-v-8ba12cd2]:before{flex:0 0 68px;color:var(--ink-muted);content:attr(data-label);font-size:12px;font-weight:600;text-align:left}.role-table td[data-v-8ba12cd2]:first-child{align-items:flex-start}.role-table td:first-child strong[data-v-8ba12cd2],.role-table td:first-child small[data-v-8ba12cd2]{text-align:right}.role-table td.empty[data-v-8ba12cd2]{display:table-cell;padding:24px 0;text-align:center}.role-table td.empty[data-v-8ba12cd2]:before{display:none}.permission-menu[data-v-8ba12cd2]{align-items:flex-start;flex-direction:column;gap:8px}.permission-expand[data-v-8ba12cd2]{align-self:flex-end;margin-top:-3px}.permission-children[data-v-8ba12cd2]{grid-template-columns:1fr}.permission-child+.permission-child[data-v-8ba12cd2]{border-top:1px solid var(--line-soft);border-left:0}.permission-tree[data-v-8ba12cd2]{max-height:min(360px,calc(100vh - 340px))}.form-dialog-actions[data-v-8ba12cd2]{align-items:stretch;flex-direction:column-reverse}.form-dialog-actions .primary[data-v-8ba12cd2],.form-dialog-actions .secondary[data-v-8ba12cd2]{width:100%}}:root{color-scheme:light;--ink-strong: #162a3d;--ink: #30495f;--ink-muted: #6b7f92;--canvas: #f3f6f9;--surface: #ffffff;--surface-muted: #f8fafc;--line: #dce5ed;--line-soft: #e9eef3;--sidebar: #0a1d30;--sidebar-raised: #123d5d;--blue: #1268d5;--blue-dark: #0c54b2;--cyan: #14a9b8;--gold: #c98c13;--success: #158064;--danger: #b33a3a;--warning: #9a6700;--shadow: 0 8px 24px rgba(22, 42, 61, .06)}*{box-sizing:border-box;letter-spacing:0}html{background:var(--canvas)}body{margin:0;color:var(--ink);background:var(--canvas);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}input,select{width:100%;height:42px;padding:0 12px;color:var(--ink-strong);background:var(--surface);border:1px solid #cbd7e3;border-radius:6px;outline:none;transition:border-color .16s ease,box-shadow .16s ease}input:hover,select:hover{border-color:#9fb3c8}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #155eef1f}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(21,94,239,.2);outline-offset:2px}.login-shell{display:grid;min-height:100vh;place-items:center;padding:28px;background:#eff4f7}.login-panel{position:relative;width:420px;max-width:100%;padding:42px 44px 40px;overflow:hidden;text-align:center;background:var(--surface);border:1px solid #dbe5ed;border-radius:8px;box-shadow:0 24px 58px #162a3d24}.login-panel:before{position:absolute;top:0;right:0;left:0;height:4px;background:var(--cyan);content:""}.login-logo{width:76px;height:76px;padding:5px;object-fit:contain;background:#fff;border:1px solid var(--line-soft);border-radius:8px;box-shadow:0 7px 18px #102a4314}.login-panel h1{margin:16px 0 5px;color:var(--ink-strong);font-size:28px;font-weight:700}.login-panel p{margin:0 0 30px;color:var(--ink-muted);font-size:15px}.login-panel label{display:grid;gap:8px;margin-top:17px;color:#486581;font-weight:600;text-align:left}.login-panel .primary{width:100%;height:44px;margin-top:26px}.shell{display:grid;min-height:100vh;grid-template-columns:256px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:26px 16px 20px;overflow-y:auto;color:#d9e2ec;background:var(--sidebar);border-right:1px solid #15344d}.brand-lockup{display:flex;align-items:center;gap:13px;min-height:66px;margin-bottom:22px;padding:0 10px 22px;border-bottom:1px solid rgba(217,226,236,.14)}.brand-lockup img{width:46px;height:46px;padding:3px;object-fit:contain;background:#fff;border:1px solid rgba(255,255,255,.18);border-radius:7px}.brand-lockup h1{margin:0;color:#fff;font-size:19px;font-weight:700}.brand-lockup p{margin:4px 0 0;color:#91a9bc;font-size:12px}.sidebar nav{display:grid;gap:6px}.sidebar nav button{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:45px;padding:0 14px;overflow:hidden;color:#b7c8d6;font-weight:600;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:transparent;border:0;border-radius:5px;transition:color .16s ease,background-color .16s ease}.sidebar nav button svg{flex:0 0 auto;color:#7f9db3}.sidebar nav button.active svg,.sidebar nav button:hover svg{color:#fff}.sidebar nav button:before{position:absolute;top:9px;bottom:9px;left:0;width:3px;background:transparent;border-radius:2px;content:""}.sidebar nav button:hover{color:#fff;background:rgba(255,255,255,.06)}.sidebar nav button.active{color:#fff;background:var(--sidebar-raised)}.sidebar nav button.active:before{background:var(--cyan)}.sidebar-footer{margin:auto 10px 0;padding-top:18px;color:#7892a8;border-top:1px solid rgba(217,226,236,.12);font-size:12px}.content{width:100%;max-width:1700px;min-width:0;margin:0 auto;padding:30px 36px 48px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:26px}.page-eyebrow{margin-bottom:7px;color:var(--cyan);font-size:12px;font-weight:700}.page-header h2{margin:0;color:var(--ink-strong);font-size:28px;font-weight:700}.page-header p{margin:8px 0 0;color:var(--ink-muted);font-size:14px}.title-row,.panel-heading{display:flex;align-items:center;gap:10px}.panel-heading-with-actions{justify-content:space-between;flex-wrap:wrap}.panel-heading-actions,.form-dialog-actions{display:flex;gap:10px}.readonly-badge,.count-chip{display:inline-flex;align-items:center;gap:5px;min-height:26px;padding:3px 9px;color:#526b80;background:#eef3f7;border:1px solid #d9e2ec;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.count-chip{min-height:24px;color:#486581;background:#f4f7fa}.header-actions{display:flex;align-items:center;gap:10px}.header-account{display:inline-flex;align-items:center;gap:6px;min-height:40px;color:var(--ink-muted);font-size:14px;font-weight:600;white-space:nowrap}.primary,.secondary,.text-button{min-height:40px;border-radius:5px;transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease}.primary{padding:0 17px;color:#fff;font-weight:600;background:var(--blue);border:1px solid var(--blue);box-shadow:0 5px 12px #1268d52e}.primary:hover:not(:disabled){background:var(--blue-dark);border-color:var(--blue-dark)}.secondary{padding:0 15px;color:var(--ink);font-weight:600;background:var(--surface);border:1px solid #cbd7e3}.secondary:hover:not(:disabled){color:var(--blue-dark);border-color:#9fb7d6}.text-button{min-width:40px;padding:0 8px;color:var(--blue);font-weight:600;background:transparent;border:0}.text-button:hover:not(:disabled){color:var(--blue-dark);background:rgba(21,94,239,.06)}.text-button.danger{color:var(--danger)}.text-button.danger:hover:not(:disabled){background:rgba(179,58,58,.07)}.button-with-icon{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}.icon-button{display:inline-grid;width:36px;min-width:36px;min-height:36px;padding:0;place-items:center}.spinning{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.success-toast{position:fixed;z-index:30;top:22px;left:50%;display:flex;align-items:center;gap:9px;min-height:44px;padding:10px 16px;color:#116149;font-weight:600;background:#edf9f4;border:1px solid #b9e3d2;border-radius:7px;box-shadow:0 12px 30px #102a4329;transform:translate(-50%)}.metrics{display:grid;grid-template-columns:repeat(6,minmax(132px,1fr));gap:16px}.metric-card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow)}.metric-card{position:relative;display:flex;align-items:flex-start;justify-content:space-between;min-height:116px;padding:21px 19px 18px;overflow:hidden}.metric-card:before{position:absolute;top:0;right:0;left:0;height:4px;background:#9fb3c8;content:""}.metric-total:before,.metric-user:before{background:var(--blue)}.metric-online:before,.metric-grant:before{background:var(--success)}.metric-offline:before{background:var(--danger)}.metric-stale:before{background:var(--gold)}.metrics span{display:block;color:var(--ink-muted);font-size:13px;font-weight:600}.metrics strong{display:block;margin-top:13px;color:var(--ink-strong);font-size:30px;font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.metric-card>svg{width:21px;height:21px;padding:7px;box-sizing:content-box;color:#57718a;background:#f1f6fa;border-radius:5px}.metric-online>svg,.metric-grant>svg{color:var(--success);background:#eaf7f2}.metric-offline>svg{color:var(--danger);background:#fceed}.metric-stale>svg{color:#9a6700;background:#fff5df}.metric-total>svg,.metric-user>svg{color:var(--blue);background:#edf5ff}.panel{margin-top:20px;padding:23px}.panel h3{margin:0;color:var(--ink-strong);font-size:17px;font-weight:700}.panel p{margin:7px 0 0;color:var(--ink-muted)}.overview-action,.panel-title-row{display:flex;align-items:center;justify-content:space-between;gap:18px}.overview-action{border-left:4px solid var(--cyan)}.table-wrap{margin-top:17px;max-height:560px;overflow:auto;border:1px solid var(--line-soft);border-radius:5px}.dialog-backdrop{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:rgba(13,31,45,.42)}.detail-dialog{width:min(960px,100%);max-height:min(760px,calc(100vh - 48px));overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 64px #102a4340}.form-dialog{width:min(820px,100%)}.form-dialog-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:22px 26px;border-top:0}.form-dialog-actions{grid-column:1 / -1;justify-content:flex-end;padding-top:6px}.confirm-dialog-backdrop{z-index:40}.confirm-dialog{width:min(510px,100%);background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 64px #102a4340}.confirm-dialog-header,.confirm-dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px}.confirm-dialog-header{border-bottom:1px solid var(--line-soft)}.confirm-dialog-title{display:flex;align-items:center;gap:10px}.confirm-dialog-title h3{margin:0;color:var(--ink-strong);font-size:17px}.confirm-dialog-icon{display:grid;width:36px;height:36px;color:#9a6700;background:#fff4d9;border-radius:6px;place-items:center}.confirm-dialog-content{padding:20px 22px;color:var(--ink);line-height:1.7}.confirm-dialog-content p{margin:0}.confirm-dialog-content p+p{margin-top:8px;color:var(--ink-muted);font-size:14px}.confirm-dialog-actions{justify-content:flex-end;border-top:1px solid var(--line-soft)}.confirm-danger{min-height:40px;padding:0 16px;color:#fff;font-weight:600;background:var(--danger);border:1px solid var(--danger)}.confirm-danger:hover:not(:disabled){background:#942f2f;border-color:#942f2f}.detail-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 26px 18px;border-bottom:1px solid var(--line-soft)}.detail-dialog-header h3,.detail-records h4{margin:0;color:var(--ink-strong)}.detail-dialog-header p{margin:6px 0 0;color:var(--ink-muted)}.detail-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:22px 26px}.detail-summary div{min-height:72px;padding:13px 15px;background:var(--surface-muted);border:1px solid var(--line-soft);border-radius:6px}.detail-summary dt{color:var(--ink-muted);font-size:12px}.detail-summary dd{margin:8px 0 0;color:var(--ink-strong);font-size:15px;font-weight:700}.detail-records{padding:0 26px 26px}.detail-records .table-wrap{max-height:340px}.location-dialog{width:min(920px,100%);height:min(720px,calc(100vh - 48px));overflow:hidden;display:flex;flex-direction:column}.location-dialog-header h3{display:flex;align-items:center;gap:8px}.location-content{display:flex;flex:1;flex-direction:column;min-height:0;padding:22px 26px}.location-map{width:100%;flex:1;min-height:220px;overflow:hidden;background:#eef3f7;border:1px solid var(--line-soft);border-radius:6px}.location-meta{display:grid;gap:8px;margin-top:14px;color:var(--ink-muted)}.location-meta strong{color:var(--ink-strong)}.location-empty{display:grid;min-height:210px;gap:8px;color:var(--ink-muted);place-content:center;text-align:center}.location-empty strong{color:var(--ink-strong);font-size:16px}.location-actions{display:flex;justify-content:flex-end;padding:18px 26px;border-top:1px solid var(--line-soft)}@media (max-width: 720px){.detail-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-dialog-header,.detail-summary,.detail-records,.location-content,.location-actions{padding-right:18px;padding-left:18px}.location-map{min-height:180px}}table{width:100%;border-collapse:collapse;font-size:14px}th,td{height:48px;padding:11px 13px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line-soft)}th{position:sticky;z-index:2;top:0;color:#486581;font-size:13px;font-weight:700;background:#f5f8fb}td{color:#334e68;font-variant-numeric:tabular-nums}tbody tr{transition:background-color .14s ease}tbody tr:hover{background:#f8fafc}tbody tr:last-child td{border-bottom:0}.error-cell{min-width:240px;max-width:420px;overflow-wrap:anywhere;line-height:1.5;white-space:normal}.message-content{min-width:240px;max-width:420px;overflow:hidden;line-height:1.5;text-overflow:ellipsis}.message-status-select{min-width:96px;height:34px;padding:0 8px}.phone-link{color:var(--blue);font-variant-numeric:tabular-nums;font-weight:600}.phone-link:hover{color:var(--blue-dark);text-decoration:underline}.empty{height:92px;padding:28px 12px;color:#829ab1;text-align:center;background:#fff}.empty-state{display:grid;justify-items:center;gap:6px;min-height:106px;padding:18px;place-content:center;white-space:normal}.empty-state svg{color:#9fb3c8}.empty-state strong{color:#526b80;font-size:14px}.empty-state span{color:#829ab1;font-size:12px}.state{display:inline-flex;align-items:center;gap:7px;min-height:25px;padding:3px 9px;border-radius:4px;font-size:12px;font-weight:600}.state:before{width:6px;height:6px;flex:0 0 auto;background:currentColor;border-radius:50%;content:""}.state-online,.state-active,.state-success,.state-normal,.state-available{color:#147253;background:#e8f5ef}.state-offline,.state-failed,.state-disabled{color:#aa3636;background:#fbecec}.state-stale,.state-pending_bind,.state-partial,.state-not_run,.state-maintain{color:#8a6000;background:#fff4d6}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:17px;align-items:end;margin-top:18px;padding-top:18px;border-top:1px solid var(--line-soft)}.form-grid label{display:grid;gap:8px;min-width:0;color:#486581;font-size:13px;font-weight:600}.form-actions{display:flex;align-items:end}.form-actions .primary{min-width:150px}.device-form{grid-template-columns:repeat(4,minmax(150px,1fr)) auto}.grant-form{grid-template-columns:repeat(4,minmax(160px,1fr))}.list-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) 164px auto;gap:10px;align-items:center;margin-top:17px;padding:12px;background:var(--surface-muted);border:1px solid var(--line-soft);border-radius:6px}.search-field{position:relative;display:block;min-width:0}.search-field svg{position:absolute;z-index:1;top:50%;left:12px;color:#829ab1;pointer-events:none;transform:translateY(-50%)}.search-field input{padding-left:38px}.status-filter{min-width:0}.clear-filter{min-height:38px;padding:0 10px;color:#526b80;background:transparent;border:0;border-radius:6px;font-weight:600}.clear-filter:hover{color:var(--blue-dark);background:#e8eef5}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:14px;margin-top:15px;color:var(--ink-muted);font-size:12px}.pagination>div{display:flex;gap:7px}.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(190px,1fr));gap:0 26px;margin:18px 0 0;padding:0;border-top:1px solid var(--line-soft)}.settings-grid div{min-width:0;padding:17px 2px;background:transparent;border:0;border-bottom:1px solid var(--line-soft)}.settings-grid dt{color:var(--ink-muted);font-size:13px;font-weight:600}.settings-grid dd{margin:8px 0 0;overflow-wrap:anywhere;color:var(--ink-strong);font-variant-numeric:tabular-nums;font-weight:700}.settings-grid code{color:#274c77;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px;font-weight:600}.config-pill{display:inline-flex;align-items:center;min-height:26px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:700}.config-pill.good{color:#147253;background:#e8f5ef}.config-pill.warn{color:#8a6000;background:#fff4d6}.config-pill.neutral{color:#274c77;background:#eaf1fb}.runtime-config-panel{margin-top:18px}.runtime-config-panel .panel-heading{align-items:flex-start}.runtime-config-panel .panel-heading p,.runtime-config-actions p{margin:6px 0 0;color:var(--ink-muted);font-size:13px;line-height:1.55}.runtime-config-form{margin-top:18px}.runtime-config-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:16px 22px}.runtime-config-grid>label{display:grid;gap:8px;color:var(--ink-strong);font-size:13px;font-weight:700}.runtime-config-grid>label>small{color:var(--ink-muted);font-size:12px;font-weight:500;line-height:1.45}.runtime-config-grid input[type=number]{width:100%;max-width:300px}.runtime-switch{min-height:84px;grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:15px;border:1px solid var(--line-soft);border-radius:8px}.runtime-switch span{display:grid;gap:5px}.runtime-switch small{color:var(--ink-muted);font-size:12px;font-weight:500;line-height:1.45}.runtime-switch input[type=checkbox]{width:42px;height:22px;accent-color:var(--blue)}.runtime-config-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line-soft)}.runtime-config-actions p{margin:0}@media (max-width: 1280px){.metrics{grid-template-columns:repeat(3,minmax(130px,1fr))}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.runtime-config-grid{grid-template-columns:1fr}.form-grid,.grant-form,.device-form{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media (max-width: 900px){.shell{grid-template-columns:1fr}.sidebar{z-index:10;height:auto;padding:12px 15px;overflow:hidden;box-shadow:0 7px 18px #0d1f2d2e}.brand-lockup{min-height:48px;margin:0 0 10px;padding:0 2px 10px}.brand-lockup img{width:38px;height:38px}.brand-lockup h1{font-size:17px}.brand-lockup p{display:none}.sidebar nav{display:flex;gap:7px;padding-bottom:2px;overflow-x:auto}.sidebar nav button{width:auto;min-width:max-content;min-height:38px;padding:0 13px;text-align:center}.sidebar nav button:before{top:auto;right:12px;bottom:0;left:12px;width:auto;height:2px}.content{padding:26px 20px 40px}}@media (max-width: 640px){.page-header,.overview-action,.panel-title-row{align-items:stretch;flex-direction:column}.page-header h2{font-size:24px}.header-actions{justify-content:flex-end}.metrics,.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card{min-height:98px;padding:17px 15px}.metrics strong{font-size:26px}.panel{padding:18px}.list-toolbar{grid-template-columns:minmax(0,1fr) 150px auto}.overview-action .primary,.panel-title-row .primary,.panel-heading-actions{width:100%}.panel-heading-actions .primary,.panel-heading-actions .secondary{flex:1}.form-dialog-grid{grid-template-columns:1fr;padding:18px}}@media (max-width: 520px){.login-shell{padding:18px}.login-panel{padding:36px 24px 30px}.content{padding:22px 14px 34px}.form-grid,.grant-form,.device-form,.settings-grid{grid-template-columns:1fr}.runtime-config-actions{align-items:stretch;flex-direction:column}.list-toolbar{grid-template-columns:1fr}.clear-filter{justify-self:start}.form-actions .primary{width:100%}}
