:root{--tap-target-min:44px;--bottom-nav-height:76px;--mobile-content-padding:16px;--radius-sm:6px;--radius-md:8px;--radius-lg:11px;--radius-xl:16px;--radius-pill:999px;--mobile-card-radius:var(--radius-xl);--text-2xs:9px;--text-xs:10px;--text-sm:11px;--text-md:12px;--text-base:13px;--text-lg:14px;--text-display:28px}[data-theme=dark]{--bg:#0f1117;--bg-surface:#1a1d27;--bg-surface-hover:#22263a;--bg-surface-raised:#242838;--border:#2d3148;--text:#e2e4eb;--text-muted:#8b8fa4;--text-dim:#5c6078;--status-active:#22c55e;--status-active-bg:#22c55e1f;--status-late:#eab308;--status-late-bg:#eab3081f;--status-inactive:#f97316;--status-inactive-bg:#f973161f;--status-down:#ef4444;--status-down-bg:#ef44441f;--status-warn:#d97706;--status-warn-bg:#d977061f;--status-unknown:#6b7280;--status-unknown-bg:#6b72801f;--status-paused:#6366f1;--status-paused-bg:#6366f11f;--status-gateway:#a855f7;--status-gateway-bg:#a855f71f;--status-resync:#7c3aed;--status-resync-bg:#7c3aed1f;--chart-temp:#dc2626;--chart-humidity:#2563eb;--chart-z2temp:#d97706;--chart-z2humidity:#0891b2;--chart-z3temp:#7c3aed;--chart-z3humidity:#db2777;--chart-wind:#475569;--chart-rain:#0d9488;--chart-vent:#34d399;--chart-fan:#818cf8;--chart-heater:#fb923c;--primary:#4285f4;--primary-bg:#4285f41a;--danger:#ef4444;--success:#22c55e;--source-mqtt:#4caf5033;--source-mqtt-text:#6dd670;--bar-track:#ffffff0f;--wind-accent:#14b8a6}[data-theme=light]{--bg:#f5f6f8;--bg-surface:#fff;--bg-surface-hover:#fafafa;--bg-surface-raised:#f0f0f2;--border:#e8e8ec;--text:#1a1a2e;--text-muted:#6b7280;--text-dim:#9ca3af;--status-active:#16a34a;--status-active-bg:#22c55e14;--status-late:#ca8a04;--status-late-bg:#eab30814;--status-inactive:#ea580c;--status-inactive-bg:#f9731614;--status-down:#dc2626;--status-down-bg:#ef444414;--status-warn:#b45309;--status-warn-bg:#b4530914;--status-unknown:#4b5563;--status-unknown-bg:#6b728014;--status-paused:#4f46e5;--status-paused-bg:#6366f114;--status-gateway:#7c3aed;--status-gateway-bg:#7c3aed14;--status-resync:#7c3aed;--status-resync-bg:#7c3aed14;--chart-temp:#dc2626;--chart-humidity:#2563eb;--chart-z2temp:#d97706;--chart-z2humidity:#0891b2;--chart-z3temp:#7c3aed;--chart-z3humidity:#db2777;--chart-wind:#475569;--chart-rain:#0d9488;--chart-vent:#34d399;--chart-fan:#818cf8;--chart-heater:#fb923c;--primary:#4285f4;--primary-bg:#4285f414;--danger:#dc2626;--success:#16a34a;--source-mqtt:#22c55e14;--source-mqtt-text:#16a34a;--bar-track:#00000014;--wind-accent:#14b8a6}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}@keyframes pulse-red{0%,to{opacity:1}50%{opacity:.3}}@keyframes pulse-yellow{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-alarm-red{0%,to{box-shadow:inset 0 0 0 200px #ef44441a}50%{box-shadow:inset 0 0 0 200px #ef44444d}}@keyframes pulse-alarm-orange{0%,to{box-shadow:inset 0 0 0 200px #f9731614}50%{box-shadow:inset 0 0 0 200px #f9731640}}.pulse-alarm-red{animation:1.5s ease-in-out infinite pulse-alarm-red}.pulse-alarm-orange{animation:2s ease-in-out infinite pulse-alarm-orange}@keyframes highlight-fade{0%{border-color:var(--primary);box-shadow:0 0 12px #4285f466}to{border-color:var(--border);box-shadow:none}}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;transition:background-color .2s,color .2s}a{color:inherit;text-decoration:none}a:hover{color:var(--text)}.ant-table-thead>tr>th,.ant-table-thead>tr>td{background:var(--bg)!important;padding-top:6px!important;padding-bottom:6px!important}.ant-table-sticky-holder{z-index:5!important;background:var(--bg)!important}.ant-table-body{z-index:0;position:relative}.ant-table-tbody>tr>td{background:var(--bg-surface)}.ant-typography a,.ant-table a,.ant-breadcrumb a{color:inherit}.ant-typography a:hover,.ant-table a:hover,.ant-breadcrumb a:hover{color:var(--text)}@media (width>=1920px){:root{--status-card-num-size:52px;--status-card-label-size:15px;--content-padding:32px 48px}}@media (width<=900px){:root{--status-card-num-size:28px;--status-card-label-size:11px;--content-padding:12px}}
