@charset "UTF-8";@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-500.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans-600.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ibm-plex-sans-700.woff2) format("woff2")}:root,:root[data-theme=light]{--bg: #f3f6fa;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f2f5f9;--line2: #f0f2f5;--chip-bg: #e2e8f0;--chip-border: #cbd5e1;--text: #0f172a;--text-muted: #475569;--text-subtle: #5b6576;--nav-text: #334155;--border: #e3e8ef;--border-strong: #8a94a3;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-fill: #2563eb;--accent-fill-hover: #1d4ed8;--accent-contrast: #ffffff;--accent-soft: #eef4ff;--accent-on-soft: #1d4ed8;--accent-ring: rgba(37, 99, 235, .28);--accent-grad: linear-gradient(135deg, var(--accent), var(--wind));--ok: #12703a;--ok-soft: #e6f6ec;--warn: #9a4a06;--warn-soft: #fdf1e0;--danger: #b91c1c;--danger-soft: #fdeceb;--danger-border: #f3b4ac;--solar: #f59e0b;--solar-soft: #fff4e2;--wind: #0d9488;--wind-soft: #d7f2ee;--grid: #94a3b8;--grid-soft: #eef1f5;--consumption-tint: #eaf1ff;--consumption-tint-border: #c9dafc;--generation-tint: #fff4e2;--generation-tint-border: #fbd9a1;--demand-tint-border: #dccbfb;--cons: #2563eb;--cons-ink: #1d4ed8;--cons-soft: #eaf1ff;--cons-line: #c9dafc;--solar-line: #fbd9a1;--solar-ink: #a14b04;--wind-ink: #0f766e;--emerald: #059669;--emerald-ink: #047857;--emerald-soft: #dff5ec;--violet: #7c3aed;--cons-top: #3b82f6;--solar-top: #fbbf24;--wind-top: #14b8a6;--violet-top: #a78bfa;--emerald-top: #34d399;--violet-ink: #6d28d9;--violet-soft: #f1ebfe;--tod-peak: #ea580c;--tod-peak-soft: #fff1e8;--tod-normal: #3b82f6;--tod-offpeak: #8b5cf6;--tod-offpeak-soft: #f3eefe;--ok-fill: #16a34a;--warn-fill: #f59e0b;--neutral-edge: #64748b;--hero-from: #1e3a8a;--hero-mid: #1d4ed8;--hero-to: #0f766e;--scrim: rgba(15, 23, 42, .5);--radius-sm: 8px;--radius-md: 10px;--radius: 12px;--radius-lg: 16px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow-md: 0 1px 2px rgba(15, 23, 42, .04), 0 4px 16px rgba(15, 23, 42, .05);--shadow-raised: 0 1px 3px rgba(15, 23, 42, .12);--shadow-lg: 0 18px 40px rgba(15, 23, 42, .22);--sidebar-w: 244px;--sidebar-w-collapsed: 72px;--topbar-h: 80px;--main-pad-x: 2rem;--screen-header-h: 4.5rem;--font-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;color-scheme:light}:root[data-theme=dark]{--bg: #0a0f1c;--surface: #111a2e;--surface-2: #16203a;--surface-hover: #1b2740;--line2: #1b2740;--chip-bg: #24304c;--chip-border: #33425e;--text: #e7edf6;--text-muted: #9aa7bd;--text-subtle: #8b98ad;--nav-text: #c3cddc;--border: #26324a;--border-strong: #586a8a;--accent: #3b82f6;--accent-hover: #5b9bff;--accent-fill: #2f6fe0;--accent-fill-hover: #2563eb;--accent-contrast: #ffffff;--accent-soft: rgba(59, 130, 246, .16);--accent-on-soft: #7ab0ff;--accent-ring: rgba(59, 130, 246, .34);--accent-grad: linear-gradient(135deg, var(--accent), var(--wind));--ok: #22c55e;--ok-soft: rgba(34, 197, 94, .15);--warn: #f59e0b;--warn-soft: rgba(245, 158, 11, .15);--danger: #f2705f;--danger-soft: rgba(242, 112, 95, .16);--danger-border: rgba(242, 112, 95, .5);--solar: #fbbf24;--solar-soft: rgba(251, 191, 36, .15);--wind: #2dd4bf;--wind-soft: rgba(45, 212, 191, .15);--grid: #64748b;--grid-soft: rgba(100, 116, 139, .15);--consumption-tint: rgba(59, 130, 246, .12);--consumption-tint-border: rgba(59, 130, 246, .4);--generation-tint: rgba(251, 191, 36, .12);--generation-tint-border: rgba(251, 191, 36, .4);--demand-tint-border: rgba(167, 139, 250, .4);--cons: #3b82f6;--cons-ink: #7ab0ff;--cons-soft: rgba(59, 130, 246, .16);--cons-line: rgba(59, 130, 246, .4);--solar-line: rgba(251, 191, 36, .4);--solar-ink: #fbbf24;--wind-ink: #2dd4bf;--emerald: #34d399;--emerald-ink: #34d399;--emerald-soft: rgba(52, 211, 153, .15);--violet: #a78bfa;--violet-ink: #b9a3ff;--cons-top: #60a5fa;--solar-top: #fcd34d;--wind-top: #5eead4;--violet-top: #c4b5fd;--emerald-top: #6ee7b7;--violet-soft: rgba(167, 139, 250, .16);--tod-peak: #fb923c;--tod-peak-soft: rgba(251, 146, 60, .14);--tod-normal: #60a5fa;--tod-offpeak: #a78bfa;--tod-offpeak-soft: rgba(167, 139, 250, .14);--ok-fill: #22c55e;--warn-fill: #f59e0b;--neutral-edge: #8b98ad;--hero-from: #1e3a8a;--hero-mid: #1d4ed8;--hero-to: #0f766e;--scrim: rgba(0, 0, 0, .6);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 1px 2px rgba(0, 0, 0, .45), 0 4px 16px rgba(0, 0, 0, .25);--shadow-raised: 0 1px 3px rgba(0, 0, 0, .5);--shadow-lg: 0 18px 40px rgba(0, 0, 0, .6);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .2s ease,color .2s ease}h1,h2,h3{color:var(--text);font-weight:600;letter-spacing:-.01em;margin:0 0 .75rem}h1{font-size:1.5rem;font-weight:600;letter-spacing:-.01em}h2{font-size:1.125rem}.card h2,.card h3{font-size:.9688rem}h3{font-size:1rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.mono,.tnum{font-family:var(--font-mono);font-variant-numeric:tabular-nums}button{font:inherit;font-size:.8125rem;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.375rem;padding:0 .875rem;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);color:var(--text);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .05s ease}button:hover:not(:disabled){background:var(--surface-hover);border-color:var(--accent);color:var(--accent)}button:active:not(:disabled){transform:translateY(1px)}a.btn{display:inline-flex;align-items:center;gap:.5rem;min-height:2.375rem;padding:0 .875rem;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-size:.8125rem;font-weight:500;white-space:nowrap}a.btn:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}button:disabled{opacity:.55;cursor:not-allowed}button[type=submit],button.btn--primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--accent-contrast);box-shadow:0 4px 14px color-mix(in srgb,var(--accent-fill) 28%,transparent)}button[type=submit]:hover:not(:disabled),button.btn--primary:hover:not(:disabled){background:var(--accent-fill-hover);border-color:var(--accent-fill-hover);color:var(--accent-contrast)}button.btn--danger,button.btn--primary.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}button.btn--danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 85%,#000);border-color:color-mix(in srgb,var(--danger) 85%,#000)}input,select,textarea{font:inherit;width:100%;min-height:2.375rem;padding:.4rem .75rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}input::placeholder,textarea::placeholder{color:var(--text-subtle)}input:not([type=checkbox],[type=radio]):focus-within,input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible,summary:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--danger)}input[aria-invalid=true]:focus-visible,select[aria-invalid=true]:focus-visible,textarea[aria-invalid=true]:focus-visible{border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 30%,transparent)}input[type=checkbox],input[type=radio]{width:auto;min-height:0;margin:0;padding:0;accent-color:var(--accent)}label{color:var(--text-muted);font-size:.88rem}.form__row{display:flex;flex-direction:column;gap:.35rem}.form__actions{display:flex;gap:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}.card{border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.125rem 1.25rem 1.25rem;margin-bottom:1rem;background:var(--surface);box-shadow:var(--shadow-md)}.screen{max-width:80rem}.screen--wide{max-width:90rem}.screen__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.35rem}.screen__header h1,.screen__header h2,.screen__header h3{margin:0}.screen>.screen__header{position:sticky;top:var(--topbar-h);z-index:10;margin:0 calc(-1 * var(--main-pad-x)) .35rem;padding:.7rem var(--main-pad-x);background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.screen__intro{color:var(--text-muted);margin:0 0 1.4rem;max-width:56rem}.toolbar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:1rem}.toolbar select,.toolbar input[type=date]{width:auto;min-width:12rem}.toolbar--bar{gap:.875rem;margin-bottom:1.25rem;padding:.75rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm)}.toolbar--bar>label,.toolbar--bar .toolbar__label{color:var(--text-subtle);font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.toolbar--bar select,.toolbar--bar input[type=date]{min-width:0;min-height:2.25rem;border-radius:9px;font-size:.8125rem}.toolbar--bar select{max-width:12rem}@media(pointer:coarse){.toolbar--bar select,.toolbar--bar input[type=date]{min-height:2.75rem}}.toolbar--bar .freshness:not(.tag){color:var(--text-muted);font-size:.7813rem}.toolbar__end{margin-left:auto}table{width:100%;border-collapse:separate;border-spacing:0;margin:.875rem 0 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:.8125rem}thead th{position:sticky;top:calc(var(--topbar-h) + var(--screen-header-h));z-index:1;background:var(--surface-2);font-weight:600;font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);white-space:nowrap;border-bottom:1px solid var(--border)}thead tr:first-child th:first-child{border-top-left-radius:var(--radius)}thead tr:first-child th:last-child{border-top-right-radius:var(--radius)}table tr:last-child>td:first-child{border-bottom-left-radius:var(--radius)}table tr:last-child>td:last-child{border-bottom-right-radius:var(--radius)}th,td{text-align:left;padding:.6875rem .875rem;border-bottom:1px solid var(--border);vertical-align:middle}th,thead th{padding-block:.625rem}td{overflow-wrap:break-word}tbody td:first-child:not(:has(input,select,textarea)){font-weight:500;color:var(--text)}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background-color .12s ease}tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 65%,var(--surface))}td.numeric,th.numeric{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;overflow-wrap:normal}tbody td.numeric:first-child{font-weight:400}td.numeric input{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}@media(max-width:1279.98px){.table-scroll{overflow-x:auto;position:relative}.table-scroll thead th{position:static}}.actions{text-align:right;white-space:nowrap}.actions button{gap:.375rem;min-height:1.875rem;padding:0 .625rem;border-radius:8px;font-size:.7813rem}.actions button+button{margin-left:.5rem}.actions button.btn--delete{border-color:color-mix(in srgb,var(--danger) 70%,var(--surface));color:var(--danger)}@media(pointer:coarse){button,select,input:not([type=checkbox],[type=radio]),summary,.actions a{min-height:44px}button{min-width:44px}.actions button{min-height:44px;padding-block:.55rem}}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.875rem;margin-bottom:1.25rem}.kpi{position:relative;overflow:hidden;display:flex;flex-direction:column;margin-bottom:0;padding:1rem 1.125rem;border-radius:var(--radius);box-shadow:var(--shadow-sm);gap:.375rem}.kpi:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--kpi-accent, var(--accent))}.kpi__head{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.kpi__head .icon--chip{width:2.125rem;height:2.125rem;border-radius:var(--radius-md)}.kpi__label{color:var(--text-subtle);font-size:.7188rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.kpi__unit{margin-left:.25rem;font-family:var(--font-sans);font-size:.875rem;font-weight:500;letter-spacing:0;color:var(--text-muted)}.kpi>.muted,.kpi>.hint{color:var(--text-muted);font-size:.7812rem}.kpi__value{font-family:var(--font-mono);font-size:1.75rem;font-weight:600;line-height:1.15;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--kpi-ink, var(--text))}.kpi__value em{margin-left:.25rem;font-family:var(--font-sans);font-style:normal;font-size:.875rem;font-weight:500;letter-spacing:0;color:var(--text-muted)}.kpi__value--surplus{color:var(--ok)}.kpi__value--deficit{color:var(--warn)}.kpi__value--danger{color:var(--danger)}.kpi__value--muted{color:var(--text-subtle)}.kpi__meter{height:6px;margin-top:.25rem;border-radius:var(--radius-pill);background:var(--grid-soft);overflow:hidden}.kpi__meter>span{display:block;height:100%;border-radius:inherit;background:var(--kpi-accent, var(--accent))}.kpi--cons{--kpi-accent: var(--cons);--kpi-ink: var(--cons-ink)}.kpi--solar{--kpi-accent: var(--solar);--kpi-ink: var(--solar-ink)}.kpi--wind{--kpi-accent: var(--wind);--kpi-ink: var(--wind-ink)}.kpi--gen{--kpi-accent: linear-gradient(90deg, var(--solar), var(--wind));--kpi-ink: var(--solar-ink)}.kpi--emerald{--kpi-accent: var(--emerald);--kpi-ink: var(--emerald-ink)}.kpi--violet{--kpi-accent: var(--violet);--kpi-ink: var(--violet-ink)}.kpi--ok{--kpi-accent: var(--ok-fill);--kpi-ink: var(--ok)}.kpi--warn{--kpi-accent: var(--warn-fill);--kpi-ink: var(--warn)}.kpi--danger{--kpi-accent: var(--danger);--kpi-ink: var(--danger)}.kpi--neutral{--kpi-accent: var(--neutral-edge)}.icon{display:inline-grid;place-items:center;flex:none;color:inherit}.icon svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon[data-size=sm] svg{width:1rem;height:1rem}.icon[data-size=lg] svg{width:1.35rem;height:1.35rem}.icon--chip{width:2rem;height:2rem;border-radius:var(--radius-sm);background:var(--icon-soft, var(--accent-soft));color:var(--icon-ink, var(--accent-on-soft))}.icon--chip[data-size=sm]{width:1.875rem;height:1.875rem}.icon--chip[data-size=lg]{width:2.75rem;height:2.75rem;border-radius:var(--radius)}.icon[data-tone=cons]{--icon-soft: var(--cons-soft);--icon-ink: var(--cons-ink)}.icon[data-tone=solar]{--icon-soft: var(--solar-soft);--icon-ink: var(--solar-ink)}.icon[data-tone=wind]{--icon-soft: var(--wind-soft);--icon-ink: var(--wind-ink)}.icon[data-tone=emerald]{--icon-soft: var(--emerald-soft);--icon-ink: var(--emerald-ink)}.icon[data-tone=violet]{--icon-soft: var(--violet-soft);--icon-ink: var(--violet-ink)}.icon[data-tone=ok]{--icon-soft: var(--ok-soft);--icon-ink: var(--ok)}.icon[data-tone=warn]{--icon-soft: var(--warn-soft);--icon-ink: var(--warn)}.icon[data-tone=danger]{--icon-soft: var(--danger-soft);--icon-ink: var(--danger)}.icon[data-tone=neutral]{--icon-soft: var(--grid-soft);--icon-ink: var(--text-muted)}.with-icon{display:flex;align-items:center;gap:.625rem}h2.with-icon+.card__sub,h3.with-icon+.card__sub,.card__headrow+.card__sub{margin-left:2.5rem}h2.with-icon+.card__sub,h3.with-icon+.card__sub{margin-top:-.875rem}.card__headrow+.card__sub{margin-top:-.25rem}.card__headrow h2.with-icon+.card__sub,.card__headrow h3.with-icon+.card__sub{margin-top:.125rem}.screen__header h1.with-icon{gap:.875rem}.screen__header+.screen__intro{margin-left:3.625rem;margin-top:-.6rem;font-size:.8438rem}.flow-head{display:flex;align-items:center;gap:.75rem;margin:1.75rem 0 .875rem;padding-bottom:.625rem;border-bottom:2px solid var(--flow-line, var(--border))}.flow-head>.icon--chip{width:2.25rem;height:2.25rem;border-radius:var(--radius-md)}.flow-head h2{margin:0}.flow-head p{margin:0;color:var(--text-muted);font-size:.7813rem}.flow-head--consumption{--flow-line: var(--cons-line)}.flow-head--generation{--flow-line: var(--solar-line)}.crumbs{display:flex;align-items:center;gap:.375rem;margin:0 0 -.25rem 3.625rem;color:var(--text-subtle);font-size:.7813rem}.point-facts{display:flex;flex-wrap:wrap;gap:.5rem;margin:-.5rem 0 1.25rem;padding:0;list-style:none}.point-facts .tag{display:inline-flex;align-items:center;gap:.3125rem}.point-facts .icon svg{width:.875rem;height:.875rem}.header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.meter{display:block;height:8px;border-radius:var(--radius-pill);background:var(--grid-soft);overflow:hidden}.meter>span{display:block;height:100%;border-radius:inherit;background:var(--accent)}.meter--ok>span{background:var(--ok-fill)}.meter--warn>span{background:var(--warn-fill)}.meter--cons>span{background:var(--cons)}.meter--solar>span{background:var(--solar)}.meter--wind>span{background:var(--wind)}.meter--violet>span{background:var(--violet)}.splitbar{display:flex;gap:2px;height:14px;margin:.25rem 0 .75rem;border-radius:var(--radius-pill);overflow:hidden;background:var(--grid-soft)}.splitbar>span{display:block;height:100%}.swatch{display:inline-block;flex:none;width:.65rem;height:.65rem;margin-right:.45rem;border-radius:3px;vertical-align:baseline;background:var(--grid)}.fill--peak{background:var(--tod-peak)}.fill--normal{background:var(--tod-normal)}.fill--offpeak{background:var(--tod-offpeak)}.fill--cons{background:var(--cons)}.fill--solar{background:var(--solar)}.fill--wind{background:var(--wind)}.fill--grid{background:var(--grid)}.fill--emerald{background:var(--emerald)}.fill--ok{background:var(--ok-fill)}.fill--warn{background:var(--warn-fill)}.fill--danger{background:var(--danger)}.fill--pending{background:var(--chip-border)}.legend{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.375rem .875rem;color:var(--text-muted);font-size:.75rem}.legend>span{display:inline-flex;align-items:center;gap:.375rem}.legend__line,.legend__box{display:inline-block;flex:none}.legend__line{width:14px;height:3px;border-radius:2px}.legend__box{width:10px;height:10px;border-radius:3px}.legend__box--peak{background:var(--tod-peak-soft)}.legend__box--offpeak{background:var(--tod-offpeak-soft)}.strip{display:flex;flex-wrap:wrap;align-items:center;gap:.875rem 1.375rem;margin:0 0 1.25rem;padding:.75rem 1rem;border:1px solid color-mix(in srgb,var(--ok) 30%,transparent);border-radius:var(--radius);background:var(--ok-soft);color:var(--ok)}.strip__title{display:inline-flex;align-items:center;gap:.5rem;font-size:.8438rem;font-weight:600}.strip__bar{flex:1 1 12rem;display:flex;height:8px;border-radius:var(--radius-pill);overflow:hidden;background:color-mix(in srgb,var(--surface) 70%,transparent)}.strip__bar>span{display:block;height:100%}.strip__title+.strip__text{flex:1 1 20rem;min-width:0}.strip__text{color:var(--text-muted);font-size:.7813rem}.strip__text b{font-family:var(--font-mono);color:var(--text)}.strip--warn{border-color:color-mix(in srgb,var(--warn) 30%,transparent);background:var(--warn-soft);color:var(--warn)}.strip--info{border-color:color-mix(in srgb,var(--cons) 25%,transparent);background:var(--cons-soft);color:var(--cons-ink)}.empty{display:flex;align-items:center;gap:.875rem;margin:0;padding:1.125rem;border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--text-muted)}.empty--ok{border:1px solid color-mix(in srgb,var(--ok) 30%,transparent);background:var(--ok-soft);color:var(--ok)}.empty--ok .icon--chip{--icon-soft: var(--surface)}.live-badge{display:inline-flex;align-items:center;gap:.375rem;font-size:.75rem;font-weight:700;letter-spacing:.04em;color:var(--ok)}.live-badge:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ok-fill);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok-fill) 18%,transparent)}.dot{display:inline-block;flex:none;width:.55rem;height:.55rem;margin-right:.45rem;border-radius:50%;background:var(--grid)}.avatar{display:inline-grid;place-items:center;flex:none;width:2rem;height:2rem;border-radius:50%;background:var(--accent-grad);color:var(--accent-contrast);font-size:.75rem;font-weight:600}.cell-name{display:inline-flex;align-items:center;gap:.625rem;font-weight:500}.cell-name .mono{white-space:nowrap}.cell-sub{display:block;color:var(--text-subtle);font-size:.7188rem}.chart-host{display:block;width:100%;height:100%}.chart-frame{position:relative;height:209px;margin-top:.25rem}.chart-frame canvas{max-width:100%}.segmented{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.segmented button{min-height:1.8rem;padding:0 .875rem;border:0;border-radius:7px;background:transparent;color:var(--text-muted);box-shadow:none;font-weight:500}.segmented button:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.segmented button:focus-visible{box-shadow:0 0 0 3px var(--accent-ring)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--accent-on-soft);font-weight:600;box-shadow:var(--shadow-raised)}.segmented button[aria-pressed=true]:focus-visible{box-shadow:var(--shadow-raised),0 0 0 3px var(--accent-ring)}@media(pointer:coarse){.segmented button{min-height:44px}}.card__sub{margin:.125rem 0 .875rem;color:var(--text-muted);font-size:.7812rem;line-height:1.45}.chart-unit{margin:.875rem 0 0;color:var(--text-subtle);font-size:.7188rem}.readouts{display:flex;flex-wrap:wrap;gap:.6rem}.readout{display:flex;flex-direction:column;width:11rem;padding:.5625rem .75rem;border:1px solid var(--consumption-tint-border);border-radius:var(--radius-md);background:var(--consumption-tint)}.readout--generation{border-color:var(--generation-tint-border);background:var(--generation-tint)}.readout__label{color:var(--text-subtle);font-size:.6875rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.readout__value{font-family:var(--font-mono);font-size:1.0625rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--cons-ink)}.readout--generation .readout__value{color:var(--solar-ink)}.readout.readout--neutral{border-color:var(--border);background:var(--surface-2)}.readout.readout--neutral .readout__value{color:var(--text)}.readout.readout--ok{border-color:color-mix(in srgb,var(--ok) 30%,transparent);background:var(--ok-soft)}.readout.readout--ok .readout__value{color:var(--ok)}.readout.readout--warn{border-color:color-mix(in srgb,var(--warn) 30%,transparent);background:var(--warn-soft)}.readout.readout--warn .readout__value{color:var(--warn)}.readout--demand{border-color:var(--demand-tint-border);background:var(--violet-soft)}.readout--demand .readout__value{color:var(--violet-ink)}.readout__note{min-height:1rem;color:var(--text-muted);font-size:.7188rem}.tag{display:inline-flex;align-items:center;gap:.3125rem;font-size:.75rem;font-weight:600;padding:.125rem .5625rem;border-radius:var(--radius-pill);color:var(--accent-on-soft);background:var(--accent-soft);border:1px solid currentColor;vertical-align:middle;white-space:nowrap}.tag--cons{color:var(--cons-ink);background:var(--cons-soft)}.tag--solar{color:var(--solar-ink);background:var(--solar-soft)}.tag--wind{color:var(--wind-ink);background:var(--wind-soft)}.tag--violet{color:var(--violet-ink);background:var(--violet-soft)}.tag--ok{color:var(--ok);background:var(--ok-soft)}.tag--warn{color:var(--warn);background:var(--warn-soft)}.tag--danger{color:var(--danger);background:var(--danger-soft)}.tag--neutral{color:var(--text-muted);background:var(--grid-soft)}.tag--small{padding:0 .375rem;font-size:.6563rem}.gauge__readouts .readouts{flex-direction:column;gap:.625rem}.status{display:inline-flex;align-items:center;gap:.38rem;font-size:.8rem;font-weight:550;color:var(--ok);background:var(--ok-soft);padding:.14rem .6rem;border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,currentColor 30%,transparent)}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 18%,transparent)}.status--muted{color:var(--text-muted);background:var(--chip-bg);border:1px solid var(--chip-border)}.status--warn{color:var(--warn);background:var(--warn-soft)}.status--danger{color:var(--danger);background:var(--danger-soft)}.muted{color:var(--text-muted)}.hint{color:var(--text-subtle);font-size:.8rem}.error{color:var(--danger);font-size:.86rem}.field-error{margin:.15rem 0 0;font-size:.83rem;color:var(--danger)}.form-error{margin:0 0 .75rem;padding:.55rem .7rem;font-size:.87rem;color:var(--danger);background:var(--danger-soft);border:1px solid var(--danger-border);border-radius:var(--radius-sm)}.banner{border:1px solid var(--danger-border);border-radius:var(--radius-sm);padding:.7rem .85rem;margin:.75rem 0;color:var(--danger);background:var(--danger-soft)}.banner button{margin-top:.5rem}.banner--info{border-color:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--text-muted);background:color-mix(in srgb,var(--accent-soft) 55%,var(--surface))}.banner--warn{border-color:color-mix(in srgb,var(--warn) 30%,transparent);color:var(--warn);background:var(--warn-soft)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px;border:3px solid transparent;background-clip:content-box}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.analytics-grid>:not(.card){display:flex;flex-direction:column}.analytics-grid>:not(.card)>.card{flex:1}
