.layout[data-v-1bd21b0c]{--sidebar-width: 220px;--sidebar-collapsed-width: 64px;display:flex;height:100vh;height:100dvh;overflow:hidden}.sidebar-backdrop[data-v-1bd21b0c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0000008c}.sidebar[data-v-1bd21b0c]{width:var(--sidebar-width);flex-shrink:0;height:100vh;height:100dvh;overflow-y:auto;overflow-x:hidden;background:var(--card);border-right:1px solid var(--border);padding:16px 12px;display:flex;flex-direction:column;transition:width .2s ease,transform .2s ease;z-index:100}.sidebar-head[data-v-1bd21b0c]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px;flex-shrink:0;min-height:32px}.brand[data-v-1bd21b0c]{font-weight:700;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-toggle[data-v-1bd21b0c]{flex-shrink:0;width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.sidebar-toggle[data-v-1bd21b0c]:hover{border-color:var(--primary);color:var(--primary)}.toggle-icon[data-v-1bd21b0c]{font-size:1.1rem;line-height:1}.sidebar nav[data-v-1bd21b0c]{display:flex;flex-direction:column;gap:4px;flex:1;min-height:0;overflow-y:auto}.sidebar nav a[data-v-1bd21b0c]{padding:10px 12px;border-radius:6px;color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar nav a[data-v-1bd21b0c]:hover{text-decoration:none;background:#58a6ff14}.sidebar nav a.router-link-active[data-v-1bd21b0c]{background:var(--border);color:var(--primary)}.user[data-v-1bd21b0c]{margin-top:auto;padding-top:16px;border-top:1px solid var(--border);font-size:.9rem;flex-shrink:0}.user .company-name[data-v-1bd21b0c]{display:block;margin-top:4px;font-size:.85rem;color:var(--text)}.user .sms-quota[data-v-1bd21b0c]{display:block;margin-top:6px;font-size:.85rem}.user .sms-quota.sms-exhausted[data-v-1bd21b0c]{color:#e74c3c}.user .sms-quota.sms-warning[data-v-1bd21b0c]{color:#e67e22}.user .sms-quota.sms-disabled[data-v-1bd21b0c]{color:#95a5a6}.user .btn[data-v-1bd21b0c]{margin-top:8px;width:100%}.main-wrap[data-v-1bd21b0c]{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.mobile-topbar[data-v-1bd21b0c]{display:none;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--card);flex-shrink:0}.mobile-menu-btn[data-v-1bd21b0c]{width:40px;height:40px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:1.2rem;cursor:pointer;padding:0}.mobile-topbar-title[data-v-1bd21b0c]{font-weight:600;font-size:1rem}.main[data-v-1bd21b0c]{flex:1;min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.layout.sidebar-collapsed .sidebar[data-v-1bd21b0c]{width:var(--sidebar-collapsed-width);padding-left:10px;padding-right:10px}.layout.sidebar-collapsed .sidebar-head[data-v-1bd21b0c]{justify-content:center}.layout.sidebar-collapsed .sidebar nav a[data-v-1bd21b0c]{padding-left:8px;padding-right:8px;text-align:center;font-size:.72rem;line-height:1.25;white-space:normal;word-break:break-all}@media (max-width: 767px){.layout[data-v-1bd21b0c]{display:block;position:relative}.sidebar[data-v-1bd21b0c]{position:fixed;top:0;left:0;bottom:0;width:min(280px,86vw);transform:translate(-105%);box-shadow:4px 0 24px #00000059}.layout.sidebar-mobile-open .sidebar[data-v-1bd21b0c]{transform:translate(0)}.mobile-topbar[data-v-1bd21b0c]{display:flex}.main-wrap[data-v-1bd21b0c]{height:100vh;height:100dvh}}.login-page[data-v-2026a23f]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card[data-v-2026a23f]{width:100%;max-width:380px}.login-card h1[data-v-2026a23f]{font-size:1.5rem;margin-bottom:8px}.form[data-v-2026a23f]{margin-top:24px}.form .btn[data-v-2026a23f]{width:100%;margin-top:8px}.pagination-bar[data-v-8ab2c6bc]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}.pagination-actions[data-v-8ab2c6bc]{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.page-size-label[data-v-8ab2c6bc]{display:flex;align-items:center;gap:6px;font-size:.9rem;color:var(--text-muted)}.page-size-label select[data-v-8ab2c6bc]{padding:4px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text)}.page-num[data-v-8ab2c6bc]{min-width:4.5em;text-align:center;font-size:.9rem}.tabs[data-v-ba84b3a2]{display:flex;gap:8px;margin-bottom:20px}.tab[data-v-ba84b3a2]{padding:8px 16px;border:1px solid var(--border);background:var(--bg);border-radius:6px;cursor:pointer;color:#fff}.tab.active[data-v-ba84b3a2]{background:var(--primary);color:#fff;border-color:var(--primary)}.realtime-header[data-v-ba84b3a2]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.realtime-header h2[data-v-ba84b3a2]{margin:0}.realtime-toolbar[data-v-ba84b3a2]{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.checkbox-label[data-v-ba84b3a2]{display:flex;align-items:center;gap:6px;cursor:pointer}.refresh-select[data-v-ba84b3a2]{padding:4px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg)}.refresh-hint[data-v-ba84b3a2]{font-size:.85rem}.sort-label[data-v-ba84b3a2]{display:inline-flex;align-items:center;gap:6px;font-size:.9rem;color:var(--text-muted)}.blocks[data-v-ba84b3a2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.device-block[data-v-ba84b3a2]{position:relative;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:40px 16px 16px;min-height:140px}.device-block-alarm[data-v-ba84b3a2]{border-color:#f871718c;box-shadow:0 0 0 1px #f8717126}.alarm-corner[data-v-ba84b3a2]{position:absolute;right:10px;bottom:10px;width:22px;height:22px;line-height:22px;text-align:center;font-size:14px;font-weight:700;color:#fecaca;background:#dc262640;border:1px solid rgba(248,113,113,.65);border-radius:50%}.corner[data-v-ba84b3a2]{position:absolute;top:10px;display:flex;flex-direction:column;align-items:center;gap:4px}.signal-corner[data-v-ba84b3a2]{left:12px}.battery-corner[data-v-ba84b3a2]{right:12px}.corner-label[data-v-ba84b3a2]{font-size:.7rem;color:var(--text-muted);white-space:nowrap}.device-block-name[data-v-ba84b3a2]{text-align:center;font-size:.95rem;font-weight:600;margin-bottom:14px;padding:0 56px}.sensor-grid[data-v-ba84b3a2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:10px}.sensor-cell[data-v-ba84b3a2]{text-align:center;padding:10px 6px;border-radius:8px;background:var(--card);border:1px solid var(--border);min-width:0;overflow:hidden}.sensor-cell-alarm[data-v-ba84b3a2]{border-color:#f871718c;background:#dc262614}.sensor-label[data-v-ba84b3a2]{font-size:.8rem;color:var(--text-muted);margin-bottom:6px;white-space:nowrap}.sensor-value[data-v-ba84b3a2]{font-weight:600;line-height:1.2;max-width:100%;color:inherit}.sensor-value-alarm[data-v-ba84b3a2]{color:#f87171}.sensor-value-line[data-v-ba84b3a2]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sensor-value .unit[data-v-ba84b3a2]{font-size:.78em;font-weight:400;color:var(--text-muted);margin-left:.1em}.device-block-time[data-v-ba84b3a2]{font-size:.8rem;margin-top:0;text-align:center}.device-block-footer[data-v-ba84b3a2]{margin-top:12px;text-align:center;padding-right:28px;display:flex;flex-direction:column;gap:4px}.device-block-status[data-v-ba84b3a2]{font-size:.78rem;font-weight:500}.device-block-status.status-ok[data-v-ba84b3a2]{color:#4ade80}.device-block-status.status-stale[data-v-ba84b3a2]{color:#fbbf24}.device-block-downtime[data-v-ba84b3a2]{font-size:.75rem;color:#f87171}.signal-bars[data-v-ba84b3a2]{display:flex;align-items:flex-end;gap:2px;height:16px}.signal-bar[data-v-ba84b3a2]{width:4px;border-radius:1px;background:var(--border)}.signal-bar[data-v-ba84b3a2]:nth-child(1){height:25%}.signal-bar[data-v-ba84b3a2]:nth-child(2){height:50%}.signal-bar[data-v-ba84b3a2]:nth-child(3){height:75%}.signal-bar[data-v-ba84b3a2]:nth-child(4){height:100%}.signal-bar.on[data-v-ba84b3a2]{background:#4ade80}.battery-shell[data-v-ba84b3a2]{display:flex;align-items:center;gap:1px}.battery-cap[data-v-ba84b3a2]{width:3px;height:8px;border-radius:0 1px 1px 0;background:var(--text-muted)}.battery-body[data-v-ba84b3a2]{width:28px;height:14px;border:2px solid var(--text-muted);border-radius:3px;padding:2px;box-sizing:border-box}.battery-fill[data-v-ba84b3a2]{height:100%;border-radius:1px;transition:width .3s ease}.battery-fill.level-high[data-v-ba84b3a2]{background:#4ade80}.battery-fill.level-mid[data-v-ba84b3a2]{background:#facc15}.battery-fill.level-low[data-v-ba84b3a2]{background:#f87171}.battery-fill.level-unknown[data-v-ba84b3a2]{background:var(--border)}.form-inline[data-v-ba84b3a2]{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-bottom:16px}.form-inline .form-group[data-v-ba84b3a2]{margin-bottom:0}.form-inline .form-group label[data-v-ba84b3a2]{margin-bottom:4px}.form-inline .form-group input[data-v-ba84b3a2],.form-inline .form-group select[data-v-ba84b3a2]{min-width:160px}.curve-form[data-v-ba84b3a2]{align-items:flex-end}.curve-actions[data-v-ba84b3a2]{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.curve-options[data-v-ba84b3a2]{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.curve-options .checkbox-label[data-v-ba84b3a2]{margin:0;color:var(--text);white-space:nowrap}.curve-options .checkbox-label input[type=checkbox][data-v-ba84b3a2]{width:16px;min-width:16px;height:16px;margin:0;padding:0;flex-shrink:0}.ma-window[data-v-ba84b3a2]{display:flex;align-items:center;gap:6px;margin:0;color:var(--text);white-space:nowrap}.ma-window-input[data-v-ba84b3a2]{width:64px;min-width:64px;padding:6px 8px}.curve-sensor-group[data-v-ba84b3a2]{flex:1 1 100%;width:100%;margin-bottom:12px}.field-label[data-v-ba84b3a2]{display:block;margin-bottom:8px;color:var(--text-muted);font-size:.95rem}.device-checks[data-v-ba84b3a2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px 16px;max-height:160px;overflow-y:auto;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.curve-sensor-checks[data-v-ba84b3a2]{max-height:180px}.device-check-item[data-v-ba84b3a2]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;margin:0;color:var(--text);line-height:1.45}.device-check-item input[type=checkbox][data-v-ba84b3a2]{width:16px;height:16px;min-width:16px;margin:2px 0 0;padding:0;flex-shrink:0}.device-check-text[data-v-ba84b3a2]{flex:1;min-width:0;word-break:keep-all;white-space:normal}.unit-hint[data-v-ba84b3a2]{margin:0 0 12px;font-size:.9rem}.analysis-table-wrap[data-v-ba84b3a2]{overflow-x:auto;margin-bottom:16px}.analysis-table[data-v-ba84b3a2]{width:100%;border-collapse:collapse;font-size:.9rem}.analysis-table th[data-v-ba84b3a2],.analysis-table td[data-v-ba84b3a2]{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left}.analysis-table th[data-v-ba84b3a2]{color:var(--text-muted);font-weight:500}.chart-container[data-v-ba84b3a2]{width:100%;height:400px;margin:16px 0}.export-row[data-v-ba84b3a2]{margin-top:12px;display:flex;align-items:center;gap:12px}.sortable-table .sortable-th[data-v-ba84b3a2]{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sortable-table .sortable-th[data-v-ba84b3a2]:hover{color:var(--text)}.sortable-table .sortable-th.active[data-v-ba84b3a2]{color:var(--primary)}.sort-indicator[data-v-ba84b3a2]{margin-left:4px;font-size:.75rem;color:var(--text-muted)}.sortable-th.active .sort-indicator[data-v-ba84b3a2]{color:var(--primary)}@media (max-width: 767px){.blocks[data-v-ba84b3a2]{grid-template-columns:1fr;gap:12px}.realtime-toolbar[data-v-ba84b3a2]{width:100%}.realtime-header[data-v-ba84b3a2]{flex-direction:column;align-items:flex-start}.chart-container[data-v-ba84b3a2]{height:280px}.device-checks[data-v-ba84b3a2]{grid-template-columns:1fr;max-height:none}}.form-inline[data-v-f13f0e9d]{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.form-inline .form-group[data-v-f13f0e9d]{margin-bottom:0}.hint[data-v-f13f0e9d]{margin:0 0 12px;font-size:.9rem}.group-table[data-v-f13f0e9d]{width:100%}.expandable[data-v-f13f0e9d]{cursor:pointer}.expandable[data-v-f13f0e9d]:hover{background:#ffffff08}.group-row.expanded[data-v-f13f0e9d]{background:#58a6ff14}.device-row.expanded[data-v-f13f0e9d]{background:#ffffff0a}.expand-icon[data-v-f13f0e9d]{display:inline-block;width:18px;margin-right:6px;color:var(--text-muted);font-size:.75rem}.indent-1[data-v-f13f0e9d]{padding-left:24px}.indent-2[data-v-f13f0e9d]{padding-left:48px}.device-name[data-v-f13f0e9d]{font-weight:500;margin-right:8px}.device-meta[data-v-f13f0e9d]{font-size:.85rem}.nested-empty[data-v-f13f0e9d]{padding:10px 12px;font-size:.9rem}.sensor-row td[data-v-f13f0e9d]{padding-top:8px;padding-bottom:8px}.sensor-link[data-v-f13f0e9d]{background:none;border:none;padding:0;margin:0;color:var(--primary);cursor:pointer;font:inherit;text-align:left}.sensor-link[data-v-f13f0e9d]:hover{text-decoration:underline}.sensor-value[data-v-f13f0e9d]{margin-left:16px;color:var(--text-muted);font-size:.9rem}.actions-cell[data-v-f13f0e9d]{white-space:nowrap}.actions-cell .btn[data-v-f13f0e9d]{margin-right:4px}.form-grid[data-v-22425236]{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.form-group.full[data-v-22425236]{grid-column:1 / -1}.field-label[data-v-22425236]{display:block;margin-bottom:8px;color:var(--text-muted);font-size:.95rem}.checkbox-label[data-v-22425236]{display:flex;align-items:center;gap:8px;cursor:pointer}.device-checks[data-v-22425236]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px 16px;max-height:160px;overflow-y:auto;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.device-check-item[data-v-22425236]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;margin:0;color:var(--text);line-height:1.45}.device-check-item input[type=checkbox][data-v-22425236]{width:16px;height:16px;min-width:16px;margin:2px 0 0;padding:0;flex-shrink:0;cursor:pointer}.device-check-text[data-v-22425236]{flex:1;min-width:0;word-break:break-word}.device-check-code[data-v-22425236]{color:var(--text-muted);font-size:.9em}.limits-table[data-v-22425236]{width:100%;margin:12px 0}.limits-table input[data-v-22425236]{width:100px;padding:4px 8px}.limits-table .center[data-v-22425236]{text-align:center}.actions[data-v-22425236]{margin-top:16px;display:flex;gap:8px}.small-hint[data-v-22425236]{font-size:.85rem;margin-top:4px}.cond-cell[data-v-90cdd12f]{max-width:180px;overflow:hidden;text-overflow:ellipsis}.recipient-cell[data-v-90cdd12f]{max-width:140px}.recipient-checks[data-v-90cdd12f]{max-height:140px}.batch-recipient-toggle[data-v-90cdd12f]{display:inline-flex;align-items:center;gap:6px;margin-left:8px;cursor:pointer}.batch-recipient-bar[data-v-90cdd12f]{margin:10px 0 0;padding:12px;border:1px dashed var(--border);border-radius:8px}.batch-recipient-bar .muted[data-v-90cdd12f]{display:block;margin-bottom:8px}.cond-row[data-v-90cdd12f]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}.cond-row select[data-v-90cdd12f],.cond-row input[data-v-90cdd12f]{min-width:100px}.cond-hint[data-v-90cdd12f]{color:var(--text-muted);font-size:.9em;margin-left:4px}.form-inline[data-v-90cdd12f]{display:flex;flex-wrap:wrap;gap:16px}.form-inline .form-group[data-v-90cdd12f]{margin-bottom:0}.rule-form .form-group[data-v-90cdd12f]{margin-bottom:12px}.rule-form .hint[data-v-90cdd12f]{margin:6px 0 0;font-size:.9rem}.checkbox-label[data-v-90cdd12f]{display:flex;align-items:center;gap:8px;cursor:pointer}.field-label[data-v-90cdd12f]{display:block;margin-bottom:8px;color:var(--text-muted);font-size:.95rem}.device-checks[data-v-90cdd12f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px 16px;max-height:160px;overflow-y:auto;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.device-check-item[data-v-90cdd12f]{display:flex;align-items:flex-start;gap:10px;cursor:pointer;margin:0;color:var(--text);line-height:1.45}.device-check-item input[type=checkbox][data-v-90cdd12f]{width:16px;height:16px;min-width:16px;margin:2px 0 0;padding:0;flex-shrink:0;cursor:pointer}.device-check-text[data-v-90cdd12f]{flex:1;min-width:0;word-break:break-word}.toolbar[data-v-90cdd12f]{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.batch-update-bar[data-v-90cdd12f]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px;padding:10px;background:var(--bg);border-radius:6px}.recipient-form-card select[data-v-90cdd12f],.recipient-form-card .channel-select[data-v-90cdd12f]{width:100%;max-width:480px;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.recipient-form-card select option[data-v-90cdd12f]{background:var(--card);color:var(--text)}.warn-box[data-v-90cdd12f]{border-left-color:#f85149;color:var(--text-muted)}.email-smtp-row[data-v-90cdd12f]{margin-top:0}.recipient-form-card .form-actions[data-v-90cdd12f]{margin-top:20px}.recipient-form-card .channel-tip.tip-box[data-v-90cdd12f]{padding:10px 12px;background:var(--bg);border-radius:6px;border-left:3px solid var(--primary);font-size:.9rem;color:var(--text-muted)}.recipient-form-card .tip-text[data-v-90cdd12f]{display:block}.form-inline[data-v-f7b0bf16]{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-bottom:16px}.form-inline .form-group[data-v-f7b0bf16]{margin-bottom:0}.form-inline .form-group label[data-v-f7b0bf16]{margin-bottom:4px;display:block}.form-inline select[data-v-f7b0bf16],.form-inline input[data-v-f7b0bf16]{min-width:160px}.sortable-table .sortable-th[data-v-f7b0bf16]{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sortable-table .sortable-th[data-v-f7b0bf16]:hover{color:var(--text)}.sortable-table .sortable-th.active[data-v-f7b0bf16]{color:var(--primary)}.sort-indicator[data-v-f7b0bf16]{margin-left:4px;font-size:.75rem;color:var(--text-muted)}.sortable-th.active .sort-indicator[data-v-f7b0bf16]{color:var(--primary)}.msg-cell[data-v-f7b0bf16]{max-width:280px;word-break:break-word}.level-tag[data-v-f7b0bf16]{padding:2px 8px;border-radius:4px;font-size:.85rem}.level-1[data-v-f7b0bf16]{background:#e3f2fd;color:#1565c0}.level-2[data-v-f7b0bf16]{background:#fff3e0;color:#e65100}.level-3[data-v-f7b0bf16]{background:#ffebee;color:#c62828}.form-grid[data-v-f3bababf]{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.form-group.full[data-v-f3bababf]{grid-column:1 / -1}.field-label[data-v-f3bababf]{display:block;margin-bottom:6px;color:var(--text-muted)}.active-toggle[data-v-f3bababf]{display:flex;flex-direction:column;justify-content:flex-end}.active-toggle .checkbox-row[data-v-f3bababf]{display:flex;align-items:center;gap:8px;min-height:38px}.active-toggle .checkbox-row input[type=checkbox][data-v-f3bababf]{width:auto;margin:0;flex-shrink:0}.active-toggle .checkbox-row label[data-v-f3bababf]{display:inline;margin:0;white-space:nowrap;cursor:pointer;color:var(--text)}.sms-quota-block .hint[data-v-f3bababf]{margin-top:6px;font-size:13px}.quota-stat[data-v-f3bababf]{margin:8px 0 12px}.sms-exhausted[data-v-f3bababf]{color:#e74c3c;font-weight:600}.sms-warning[data-v-f3bababf]{color:#e67e22}.sms-disabled[data-v-f3bababf]{color:#95a5a6}.form-grid[data-v-eabb16d3]{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.form-group.full[data-v-eabb16d3]{grid-column:1 / -1}.form-inline[data-v-eabb16d3]{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-bottom:16px}.form-inline .form-group[data-v-eabb16d3]{margin-bottom:0}.small-hint[data-v-eabb16d3]{font-size:.85rem;margin-top:4px}.sensor-editor[data-v-eabb16d3]{margin-top:4px}.sensor-editor select[data-v-eabb16d3],.sensor-editor input[type=text][data-v-eabb16d3]{width:100%;min-width:80px;padding:6px 8px}.actions[data-v-eabb16d3]{margin-top:16px;display:flex;gap:8px}.small[data-v-eabb16d3]{font-size:.85rem;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensor-table[data-v-eabb16d3]{width:100%;margin-top:8px;margin-bottom:8px}.readonly-input[data-v-eabb16d3]{background:var(--card);color:var(--text-muted);cursor:not-allowed}.form-inline[data-v-2ac732dc]{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.form-inline .form-group[data-v-2ac732dc]{margin-bottom:0}.assign-list[data-v-2ac732dc]{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.assign-item[data-v-2ac732dc]{display:flex;align-items:center;gap:8px;cursor:pointer}.form-grid[data-v-85635b63]{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.form-group.full[data-v-85635b63]{grid-column:1 / -1}.url-cell[data-v-85635b63]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error[data-v-85635b63]{border-color:var(--danger)}.error .error[data-v-85635b63]{color:var(--danger)}.toolbar[data-v-87688d24]{display:flex;flex-wrap:wrap;gap:16px 24px;margin-bottom:16px;padding:14px 16px}.toolbar .inline[data-v-87688d24]{margin:0;display:flex;align-items:center;gap:8px}.toolbar select[data-v-87688d24]{padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);min-width:140px}.mode-tabs[data-v-87688d24]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.tab[data-v-87688d24]{padding:8px 16px;border:1px solid var(--border);border-radius:6px;background:var(--bg);cursor:pointer;color:#fff}.tab.active[data-v-87688d24]{border-color:var(--primary);color:#fff;background:var(--primary)}.llm-card[data-v-87688d24]{display:flex;flex-direction:column}.chat-messages[data-v-87688d24]{max-height:400px;overflow-y:auto;margin-bottom:16px;padding:12px;background:var(--bg);border-radius:8px}.empty-hint[data-v-87688d24]{padding:24px 8px;text-align:center}.msg[data-v-87688d24]{margin-bottom:12px}.msg.user .msg-content[data-v-87688d24]{color:var(--primary)}.msg-role[data-v-87688d24]{font-size:.85rem;color:var(--text-muted);margin-right:8px}.msg-content[data-v-87688d24]{white-space:pre-wrap}.chat-input[data-v-87688d24]{border-top:1px solid var(--border);padding-top:16px}.chat-input .checkbox-label[data-v-87688d24]{margin-bottom:10px;font-size:.9rem;color:var(--text-muted)}.input-row[data-v-87688d24]{display:flex;gap:8px}.input-row input[data-v-87688d24]{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}.result-block[data-v-87688d24]{margin-top:16px;padding:14px;background:var(--bg);border-radius:8px;border:1px solid var(--border)}.ctx-chips[data-v-87688d24]{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.chip[data-v-87688d24]{font-size:12px;padding:4px 10px;border-radius:999px;background:var(--card, #fff);border:1px solid var(--border);color:var(--text-muted)}.result-pre[data-v-87688d24]{white-space:pre-wrap;margin:10px 0 0;font-family:inherit;font-size:14px;line-height:1.65}.html-report-card[data-v-87688d24]{overflow:hidden}.loading-hint[data-v-87688d24]{margin-top:12px}.req[data-v-87688d24]{color:#dc2626}.wrap-chips[data-v-87688d24]{margin-top:14px}.html-actions[data-v-87688d24]{display:flex;gap:8px;margin:12px 0}.html-preview[data-v-87688d24]{width:100%;min-height:520px;height:70vh;border:1px solid var(--border);border-radius:8px;background:#fff;margin-top:8px}.form .btn[data-v-8de8b3aa]{margin-top:8px}.success[data-v-8de8b3aa]{color:var(--success, #0a0);margin-top:8px}.channel-tabs[data-v-b305a10d]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.tab[data-v-b305a10d]{padding:8px 14px;border:1px solid var(--border);border-radius:6px;background:var(--bg);cursor:pointer;color:#fff}.tab.active[data-v-b305a10d]{border-color:var(--primary);color:#fff;background:var(--primary)}.badge-off[data-v-b305a10d]{margin-left:6px;font-size:12px;color:#999}.channel-header[data-v-b305a10d]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.enable-toggle[data-v-b305a10d]{font-size:14px;white-space:nowrap}.form-grid[data-v-b305a10d]{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.form-group.full[data-v-b305a10d]{grid-column:1 / -1}.test-box[data-v-b305a10d]{margin-top:16px;padding-top:12px;border-top:1px dashed var(--border, #ddd)}.test-box label[data-v-b305a10d]{display:block;margin-bottom:6px}.test-box input[data-v-b305a10d]{width:100%;max-width:420px}.form-actions[data-v-b305a10d]{margin-top:16px;display:flex;gap:8px}.ok-msg[data-v-b305a10d]{color:#15803d;margin-top:8px}.err-msg[data-v-b305a10d]{color:#b91c1c;margin-top:8px}.template-preview[data-v-b305a10d]{margin:12px 0 16px;padding:12px;background:var(--bg, #f8fafc);border-radius:8px;border:1px solid var(--border, #e5e7eb);font-size:13px;line-height:1.6}.template-preview p[data-v-b305a10d]{margin:6px 0 0}.template-list[data-v-b305a10d]{display:grid;gap:12px;margin-bottom:16px}.template-preview code[data-v-b305a10d]{display:inline-block;margin:4px 0;font-size:12px}.test-box select[data-v-b305a10d]{width:100%;max-width:420px;padding:8px;border:1px solid var(--border);border-radius:6px}.hint[data-v-b305a10d]{margin-top:8px;font-size:13px}.hint.warn[data-v-b305a10d]{color:#b45309}.hint code[data-v-b305a10d],.muted code[data-v-b305a10d]{background:var(--bg, #f3f4f6);padding:1px 4px;border-radius:3px}@media (max-width: 640px){.form-grid[data-v-b305a10d]{grid-template-columns:1fr}.channel-header[data-v-b305a10d]{flex-direction:column;align-items:flex-start}}.tabs[data-v-271b87c9]{display:flex;gap:8px;margin-bottom:20px}.tab[data-v-271b87c9]{padding:8px 16px;border:1px solid var(--border);background:var(--bg);border-radius:6px;cursor:pointer;color:#fff}.tab.active[data-v-271b87c9]{background:var(--primary);color:#fff;border-color:var(--primary)}.toolbar-row[data-v-271b87c9]{margin-bottom:16px}.form-inline[data-v-271b87c9]{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-bottom:12px}.form-inline .form-group[data-v-271b87c9]{margin-bottom:0}.form-inline .form-group label[data-v-271b87c9]{margin-bottom:4px;display:block}.form-inline select[data-v-271b87c9],.form-inline input[data-v-271b87c9]{min-width:160px}.action-row[data-v-271b87c9]{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.import-btn[data-v-271b87c9]{cursor:pointer;margin:0}.actions-cell[data-v-271b87c9]{white-space:nowrap}.msg-cell[data-v-271b87c9]{max-width:220px;word-break:break-word}.map-page[data-v-d64a8819]{padding:16px 20px;height:100%;min-height:0;display:flex;flex-direction:column;box-sizing:border-box;max-width:none}.map-toolbar[data-v-d64a8819]{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;flex-shrink:0}.map-toolbar h1[data-v-d64a8819]{margin:0 0 4px;font-size:1.35rem}.toolbar-actions[data-v-d64a8819]{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.tabs[data-v-d64a8819]{display:flex;gap:8px;margin-bottom:12px;flex-shrink:0}.tab[data-v-d64a8819]{padding:8px 16px;border:1px solid var(--border);background:var(--bg);border-radius:6px;cursor:pointer;color:#fff}.tab.active[data-v-d64a8819]{background:var(--primary);color:#fff;border-color:var(--primary)}.track-filters[data-v-d64a8819]{margin-bottom:12px;padding:14px 16px;flex-shrink:0}.filter-row[data-v-d64a8819]{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.filter-row label[data-v-d64a8819]{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--text-muted)}.filter-input[data-v-d64a8819]{min-width:180px;padding:8px 10px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text)}.refresh-label[data-v-d64a8819]{display:flex;align-items:center;gap:6px;font-size:.9rem}.refresh-hint[data-v-d64a8819]{font-size:.85rem}.map-error[data-v-d64a8819]{color:#f87171;margin-bottom:12px}.map-body[data-v-d64a8819]{flex:1;min-height:0;display:flex;gap:12px}.device-panel[data-v-d64a8819]{width:300px;flex-shrink:0;margin-bottom:0;overflow:hidden;display:flex;flex-direction:column}.device-panel h2[data-v-d64a8819]{margin:0 0 12px;font-size:1rem}.device-list[data-v-d64a8819]{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1}.device-item[data-v-d64a8819]{padding:10px 12px;border-radius:6px;border:1px solid var(--border);margin-bottom:8px;cursor:pointer;transition:border-color .15s,background .15s}.device-item[data-v-d64a8819]:hover{border-color:var(--primary)}.device-item.active[data-v-d64a8819]{border-color:var(--primary);background:#388bfd14}.device-item.no-location[data-v-d64a8819]{opacity:.75;cursor:default}.device-item-name[data-v-d64a8819]{font-weight:600;margin-bottom:4px}.device-item-coord[data-v-d64a8819]{font-size:.82rem;font-family:ui-monospace,monospace}.device-item-meta[data-v-d64a8819]{font-size:.8rem;margin-top:4px}.device-item-downtime[data-v-d64a8819]{font-size:.78rem;margin-top:2px}.track-summary p[data-v-d64a8819]{margin:6px 0;font-size:.9rem}.track-legend[data-v-d64a8819]{display:flex;align-items:center;gap:12px;margin-top:12px!important;font-size:.85rem!important}.legend-dot[data-v-d64a8819]{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}.legend-dot.start[data-v-d64a8819]{background:#22c55e}.legend-dot.end[data-v-d64a8819]{background:#ef4444}.map-container[data-v-d64a8819]{flex:1;min-width:0;min-height:420px;border-radius:8px;border:1px solid var(--border);overflow:hidden;background:#0d1117}.warn-text[data-v-d64a8819]{color:#fbbf24}.ok-text[data-v-d64a8819]{color:#4ade80}@media (max-width: 767px){.map-page[data-v-d64a8819]{padding:12px;height:auto}.map-toolbar h1[data-v-d64a8819]{font-size:1.2rem}.map-body[data-v-d64a8819]{flex-direction:column}.device-panel[data-v-d64a8819]{width:100%;max-height:220px}.map-container[data-v-d64a8819]{min-height:300px;height:52vh;flex:none}.filter-row[data-v-d64a8819]{flex-direction:column;align-items:stretch}.filter-row label[data-v-d64a8819]{width:100%}.filter-input[data-v-d64a8819]{width:100%;min-width:0;font-size:16px}}.map-info h3{margin:0 0 8px;font-size:1rem}.map-info p{margin:4px 0;font-size:.85rem;color:#333}.map-info .warn{color:#c2410c}.map-info .ok{color:#15803d}:root{--bg: #0f1419;--card: #1a2332;--border: #2d3a4d;--text: #e6edf3;--text-muted: #8b949e;--primary: #58a6ff;--primary-hover: #79b8ff;--danger: #f85149;--success: #3fb950}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}input,select,button,textarea{font:inherit}.btn{display:inline-block;padding:8px 16px;border-radius:6px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer}.btn:hover{background:var(--border)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.page{padding:24px;max-width:1200px;margin:0 auto;width:100%}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:20px}.card h2{margin:0 0 16px;font-size:1.1rem}table{width:100%;border-collapse:collapse}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}th{color:var(--text-muted);font-weight:600}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;color:var(--text-muted)}.form-group input:not([type=checkbox]):not([type=radio]),.form-group select,.form-group textarea{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}input[type=checkbox],input[type=radio]{width:16px;height:16px;min-width:16px;margin:0;padding:0;flex-shrink:0;accent-color:var(--primary);cursor:pointer;vertical-align:middle}label.checkbox-label,label.enable-label,label.enable-toggle,label.checkbox,label.batch-recipient-toggle,label.device-check-item,label.assign-item,.form-group>label:has(>input[type=checkbox]),.form-group>label:has(>input[type=radio]){display:inline-flex;align-items:center;gap:8px;width:fit-content;max-width:100%;margin-bottom:0;color:var(--text);cursor:pointer;line-height:1.4}.checkbox-row{display:flex;align-items:center;gap:8px}.checkbox-row>label{display:inline;margin-bottom:0;color:var(--text);cursor:pointer;white-space:nowrap}th input[type=checkbox],td input[type=checkbox],td.center input[type=checkbox]{width:16px;min-width:16px;height:16px}.error{color:var(--danger);font-size:.9rem;margin-top:8px}.muted{color:var(--text-muted);font-size:.9rem}.tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.tab{padding:8px 16px;border:1px solid var(--border);background:var(--bg);border-radius:6px;cursor:pointer;color:#fff}.tab:hover{border-color:var(--primary)}.tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}@media (max-width: 767px){.card{overflow-x:auto;padding:14px 12px;margin-bottom:14px;border-radius:10px}.page{padding:14px 12px;max-width:none}h1{font-size:1.25rem;margin:0 0 10px}.card h2{font-size:1rem}th,td{padding:8px 10px;font-size:.88rem;white-space:nowrap}.btn{padding:10px 14px;min-height:40px}.tabs{gap:6px;margin-bottom:14px}.tab{padding:8px 12px;font-size:.9rem}.form-group input:not([type=checkbox]):not([type=radio]),.form-group select,.form-group textarea{min-height:40px;font-size:16px}}
