:root{--bg: #0c0f14;--bg-card: #141a24;--bg-elevated: #1a2230;--border: #2a3548;--text: #e8ecf4;--text-muted: #8b9ab5;--accent: #3d9cf0;--accent-dim: #2563a8;--success: #34d399;--warning: #fbbf24;--danger: #f87171;--font: "DM Sans", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--radius: 12px;--shadow: 0 8px 32px rgba(0, 0, 0, .35)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.5;background-image:radial-gradient(ellipse 120% 80% at 50% -30%,rgba(61,156,240,.12),transparent),radial-gradient(ellipse 80% 50% at 100% 100%,rgba(52,211,153,.06),transparent);background-attachment:fixed}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;border-radius:8px;padding:.55rem 1rem;font-weight:600;transition:background .15s,transform .1s}button:active{transform:scale(.98)}.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-dim));color:#fff}.btn-primary:hover{filter:brightness(1.08)}.btn-ghost{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text)}.btn-ghost:hover{background:var(--border)}input,select,textarea{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;width:100%}select[multiple]{overflow:auto;white-space:nowrap}select[multiple] option{padding:.2rem .35rem}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}label{display:block;font-size:.8rem;font-weight:600;color:var(--text-muted);margin-bottom:.35rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.card h2{margin:0 0 1rem;font-size:1.05rem;font-weight:600;color:var(--text);display:flex;align-items:center;gap:.5rem}.mono{font-family:var(--mono);font-size:.85em}.table-wrap{overflow-x:auto;margin:0 -.25rem}.table-wrap.table-scroll{max-height:calc(2.65rem + 6 * 2.65rem);overflow-y:auto;border-radius:8px;border:1px solid var(--border)}.table-wrap.table-scroll table{margin:0}.table-wrap.table-scroll thead th{position:sticky;top:0;z-index:1;background:var(--bg-card);box-shadow:0 1px 0 var(--border)}table{width:100%;border-collapse:collapse;font-size:.875rem}th,td{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border)}th{color:var(--text-muted);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}tr:hover td{background:#3d9cf00a}.error-banner{background:#f871711f;border:1px solid var(--danger);color:#fecaca;padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.9rem}.grid-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.metric{background:var(--bg-elevated);border-radius:10px;padding:1rem;border:1px solid var(--border)}.metric .value{font-size:1.5rem;font-weight:700;font-family:var(--mono);color:var(--accent)}.metric .label{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.segmented{display:inline-flex;flex-wrap:wrap;background:var(--bg-elevated);border-radius:10px;padding:4px;gap:4px;border:1px solid var(--border)}.segmented button{background:transparent;border:none;padding:.5rem 1rem;border-radius:8px;color:var(--text-muted);font-weight:600;font-size:.85rem}.segmented button:hover{color:var(--text);background:#3d9cf014}.segmented button[data-active=true]{background:linear-gradient(135deg,var(--accent),var(--accent-dim));color:#fff}.chart-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.chart-meta{font-size:.8rem;color:var(--text-muted)}.form-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;align-items:end;margin-bottom:1rem}.panel-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,240px));gap:.75rem;align-items:end}.sensor-panels-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}.sensor-panel-card{background:var(--bg-elevated);border-radius:10px;padding:1rem;border:1px solid var(--border)}@media (max-width: 640px){.form-row,.panel-controls{grid-template-columns:1fr}}
