*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}body{min-height:100vh;line-height:var(--line-height-normal)}img,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:inherit;text-decoration:none}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#0a0a0a;--color-surface:#141416;--color-surface-raised:#1c1c1f;--color-border:#2a2a2e;--color-border-subtle:#222226;--color-text:#ededec;--color-text-muted:#a1a09a;--color-text-subtle:#706f6c;--color-accent-blue:#5b8def;--color-accent-blue-muted:#5b8def26;--color-accent-green:#4ade80;--color-accent-green-muted:#4ade801f;--color-danger:#f87171;--color-danger-muted:#f871711f;--color-accent-red:#f87171;--color-accent-red-muted:#f8717126;--color-accent-orange:#fb923c;--color-accent-orange-muted:#fb923c26;--color-import:#5b8def;--color-export:#4ade80;--color-source-solar:#facc15;--color-source-solar-muted:#facc1538;--color-source-grid:#5b8def;--color-source-grid-muted:#5b8def40;--color-source-battery:#4ade80;--color-source-battery-muted:#4ade8040;--color-source-ev:#f87171;--color-source-ev-muted:#f8717138;--font-family-sans:Instrument Sans, ui-sans-serif, system-ui, sans-serif;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.25rem;--font-size-xl:1.875rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.625;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-full:9999px;--shadow-sm:0 1px 2px #0006;--duration-fast:.12s;--duration-normal:.2s;--ease-default:ease}body{font-family:var(--font-family-sans);font-size:var(--font-size-base);font-weight:var(--font-weight-normal);color:var(--color-text);background-color:var(--color-bg)}body.drawer-open{overflow:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus{outline:none}:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.container{width:100%;max-width:72rem;padding-inline:var(--space-6);margin-inline:auto}.container--narrow{max-width:40rem}.container--wide{max-width:90rem}@media (width<=47.99rem){.container{padding-inline:var(--space-4)}}@media (width<=23.99rem){.container{padding-inline:var(--space-3)}}.stack{flex-direction:column;display:flex}.stack--xs{gap:var(--space-2)}.stack--sm{gap:var(--space-3)}.stack--md{gap:var(--space-4)}.stack--lg{gap:var(--space-6)}.stack--xl{gap:var(--space-8)}@media (width<=47.99rem){.stack--lg{gap:var(--space-4)}.stack--xl{gap:var(--space-6)}}.grid{gap:var(--space-4);display:grid}.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=48rem){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}}.cluster{flex-wrap:wrap;align-items:center;display:flex}.cluster--xs{gap:var(--space-2)}.cluster--sm{gap:var(--space-3)}.cluster--md{gap:var(--space-4)}.cluster--between{justify-content:space-between}.heading{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);margin:0}.heading--xl{font-size:var(--font-size-xl)}.heading--lg{font-size:var(--font-size-lg)}.heading--md{font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}.text{line-height:var(--line-height-normal);color:var(--color-text);margin:0}.text--sm{font-size:var(--font-size-sm)}.text--muted{color:var(--color-text-muted)}.text--subtle{color:var(--color-text-subtle)}.text--error{color:var(--color-danger);font-size:var(--font-size-sm)}.text--success{color:var(--color-accent-green);font-size:var(--font-size-sm)}.link{color:var(--color-accent-blue);text-underline-offset:.15em;transition:opacity var(--duration-fast) var(--ease-default);text-decoration:underline}.link:hover{opacity:.85}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:background-color var(--duration-fast) var(--ease-default), border-color var(--duration-fast) var(--ease-default), opacity var(--duration-fast) var(--ease-default);border:1px solid #0000;line-height:1;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.btn--lg{padding:var(--space-3) var(--space-6)}.btn--primary{color:var(--color-text);background-color:var(--color-accent-blue-muted);border-color:#5b8def59}.btn--primary:hover:not(:disabled){background-color:#5b8def38}.btn--ghost{color:var(--color-text-muted);border-color:var(--color-border);background-color:#0000}.btn--ghost:hover:not(:disabled){color:var(--color-text);border-color:var(--color-border);background-color:var(--color-surface)}.btn--success{color:var(--color-accent-green);background-color:var(--color-accent-green-muted);border-color:#4ade8040}.btn--success:hover:not(:disabled){background-color:#4ade802e}.input{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--duration-fast) var(--ease-default);display:block}.input::placeholder{color:var(--color-text-subtle)}.input:hover:not(:disabled){border-color:var(--color-border)}.input:focus{border-color:var(--color-accent-blue)}.input:disabled{opacity:.5;cursor:not-allowed}.input--error{border-color:var(--color-danger)}.field{gap:var(--space-2);flex-direction:column;display:flex}.field__hint,.field__error{margin-top:calc(var(--space-1) * -1)}.label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted)}.card{background-color:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg)}.card--padding-sm{padding:var(--space-4)}.card--padding-md{padding:var(--space-6)}.card--padding-lg{padding:var(--space-8)}.card__header{margin-bottom:var(--space-4)}.card__footer{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-subtle)}.alert{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);font-size:var(--font-size-sm);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background-color:var(--color-surface);display:flex}.alert__content{flex:1;min-width:0}.alert__dismiss{padding:var(--space-1);color:var(--color-text-muted);border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease-default);flex-shrink:0}.alert__dismiss:hover{color:var(--color-text)}.alert--info{background-color:var(--color-accent-blue-muted);border-color:#5b8def40}.alert--success{background-color:var(--color-accent-green-muted);border-color:#4ade8033}.alert--error{background-color:var(--color-danger-muted);border-color:#f8717140}.badge{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);font-size:.75rem;font-weight:var(--font-weight-medium);color:var(--color-text-muted);background-color:var(--color-surface-raised);border:1px solid var(--color-border-subtle);border-radius:var(--radius-full);line-height:1;display:inline-flex}.badge__dot{border-radius:var(--radius-full);background-color:var(--color-text-subtle);width:.375rem;height:.375rem}.badge--info{color:var(--color-accent-blue);background-color:var(--color-accent-blue-muted);border-color:#5b8def33}.badge--info .badge__dot{background-color:var(--color-accent-blue)}.badge--success{color:var(--color-accent-green);background-color:var(--color-accent-green-muted);border-color:#4ade8033}.badge--success .badge__dot{background-color:var(--color-accent-green)}.badge--danger{color:var(--color-accent-red);background-color:var(--color-accent-red-muted);border-color:#f8717133}.badge--danger .badge__dot{background-color:var(--color-accent-red)}.badge--muted{color:var(--color-text-muted)}.divider{border:none;border-top:1px solid var(--color-border-subtle);margin:0}.table-wrap{border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.table th,.table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border-subtle)}.table th{font-weight:var(--font-weight-medium);color:var(--color-text-muted);background-color:var(--color-surface)}.table tr:last-child td{border-bottom:none}.table td{color:var(--color-text)}.table__cell--muted{color:var(--color-text-muted)}.table__cell--import{color:var(--color-import)}.table__cell--export{color:var(--color-export)}.spinner{border:2px solid var(--color-border);border-top-color:var(--color-accent-blue);border-radius:var(--radius-full);width:1rem;height:1rem;animation:.7s linear infinite spinner-rotate;display:inline-block}.spinner--lg{width:1.5rem;height:1.5rem}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.icon{vertical-align:-.125em;flex-shrink:0;width:1em;height:1em;display:inline-block}.icon--sm{width:.875rem;height:.875rem}.icon--lg{width:1.25rem;height:1.25rem}.metric{gap:var(--space-1);flex-direction:column;display:flex}.metric__label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.metric__value-row{align-items:baseline;gap:var(--space-2);display:flex}.metric__value{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text)}.metric__unit{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-muted)}.metric__trend{font-size:var(--font-size-sm);color:var(--color-text-muted)}.metric__trend--up{color:var(--color-accent-green)}.metric__trend--down{color:var(--color-accent-blue)}.price-tier--low{color:var(--color-accent-green);--price-tier-fill:var(--color-accent-green)}.price-tier--medium{color:var(--color-accent-blue);--price-tier-fill:var(--color-accent-blue)}.price-tier--high{color:var(--color-danger);--price-tier-fill:var(--color-danger)}.epf{--epf-color-solar:var(--color-source-solar);--epf-color-solar-muted:var(--color-source-solar-muted);--epf-color-grid:var(--color-source-grid);--epf-color-grid-muted:var(--color-source-grid-muted);--epf-color-battery:var(--color-source-battery);--epf-color-battery-muted:var(--color-source-battery-muted);--epf-color-ev:var(--color-source-ev);--epf-color-ev-muted:var(--color-source-ev-muted);gap:var(--space-6);flex-direction:column;max-width:36rem;margin-inline:auto;display:flex}.epf__stage{--epf-orb-size:7.25rem;--epf-home-size:6.25rem;gap:var(--space-3);aspect-ratio:1;width:min(100%,36rem);min-height:24rem;padding:var(--space-6);background:radial-gradient(circle at 50% 50%, #5b8def1f, transparent 62%), radial-gradient(circle at 50% 12%, #facc151a, transparent 45%), radial-gradient(circle at 50% 88%, #4ade801a, transparent 45%), var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);grid-template:".solar."1fr"grid home ev"1.15fr".storage."1fr/1fr 1.15fr 1fr;margin-inline:auto;display:grid;position:relative;box-shadow:inset 0 0 0 1px #ffffff08,0 24px 48px #00000073}.epf__stage .epf__orb-link{z-index:5}.epf__canvas{z-index:4;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.epf__particle{filter:drop-shadow(0 0 6px);transition:opacity .28s ease-out}.epf__particle--out{opacity:0!important}.epf__particle--solar{fill:var(--epf-color-solar);color:var(--epf-color-solar)}.epf__particle--grid{fill:var(--epf-color-grid);color:var(--epf-color-grid)}.epf__particle--storage{fill:var(--epf-color-battery);color:var(--epf-color-battery)}.epf__cell{z-index:2;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex;position:relative}.epf__orb-link{z-index:3;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:var(--radius-full);touch-action:manipulation;justify-content:center;align-items:center;text-decoration:none;display:flex;position:relative}.epf__orb-link:hover .epf__orb{border-color:var(--color-text-muted)}.epf__orb-link:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:4px}.epf__cell--solar{grid-area:solar}.epf__cell--grid{grid-area:grid}.epf__cell--home{grid-area:home}.epf__cell--ev{grid-area:ev}.epf__cell--storage{grid-area:storage}.epf__orb{width:var(--epf-orb-size);height:var(--epf-orb-size);box-sizing:border-box;background:radial-gradient(circle at 32% 28%, var(--color-surface-raised), var(--color-surface));border:2px solid var(--color-border);border-radius:var(--radius-full);flex-shrink:0;justify-content:center;align-items:center;transition:box-shadow .35s,border-color .35s;display:flex;position:relative;box-shadow:0 8px 24px #0006}.epf__orb-body{z-index:1;width:100%;max-width:calc(var(--epf-orb-size) - 1.25rem);padding-inline:var(--space-1);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;display:flex;position:relative}.epf__orb-halo{z-index:0;border-radius:inherit;opacity:.12;pointer-events:none;position:absolute;inset:-18%}.epf__orb--solar .epf__orb-halo{background:radial-gradient(circle, var(--epf-color-solar), transparent 70%)}.epf__orb--grid .epf__orb-halo{background:radial-gradient(circle, var(--epf-color-grid), transparent 70%)}.epf__orb--storage .epf__orb-halo{background:radial-gradient(circle, var(--epf-color-battery), transparent 70%)}.epf__orb-halo--home{opacity:.2;background:radial-gradient(circle,#ffffff59,#0000 70%)}.epf__orb--active .epf__orb-halo{opacity:.55}.epf__orb--solar.epf__orb--active{border-color:var(--epf-color-solar);box-shadow:0 0 0 1px var(--epf-color-solar-muted), 0 0 36px #facc1559}.epf__orb--grid.epf__orb--active{border-color:var(--epf-color-grid);box-shadow:0 0 0 1px var(--epf-color-grid-muted), 0 0 36px #5b8def4d}.epf__orb--storage.epf__orb--active{border-color:var(--epf-color-battery);box-shadow:0 0 0 1px var(--epf-color-battery-muted), 0 0 36px #4ade804d}.epf__orb--ev.epf__orb--active{opacity:1;filter:none;border-color:var(--epf-color-ev);box-shadow:0 0 0 1px var(--epf-color-ev-muted), 0 0 36px #f871714d}.epf__orb--ev.epf__orb--active .epf__orb-halo{background:radial-gradient(circle, var(--epf-color-ev), transparent 70%);opacity:.55}.epf__orb--ev.epf__orb--active .epf__orb-icon{color:var(--epf-color-ev)}.epf__orb--ev.epf__orb--active .epf__orb-label{color:color-mix(in srgb, var(--epf-color-ev) 70%, var(--color-text-muted))}.epf__orb--ev.epf__orb--active .epf__orb-value--ev{color:var(--epf-color-ev)}.epf__orb--home{z-index:3;width:var(--epf-home-size);height:var(--epf-home-size);border-color:var(--color-text-muted);box-shadow:0 0 0 1px #ffffff0f,0 0 48px #ffffff14,0 16px 40px #0000000d}.epf__orb--home .epf__orb-body{max-width:calc(var(--epf-home-size) - 1.25rem);gap:.15rem}.epf__orb-spin{z-index:0;border-radius:var(--radius-full);pointer-events:none;border:1px solid #ffffff1f;animation:20s linear infinite epf-spin;position:absolute;inset:-8px}@keyframes epf-spin{to{transform:rotate(360deg)}}.epf__orb--idle{opacity:.6;filter:grayscale(.3)}.epf__orb-icon{color:var(--color-text);flex-shrink:0;display:flex}.epf__orb-icon .icon{width:1.35rem;height:1.35rem}.epf__orb-value{width:100%;font-size:.8125rem;font-weight:var(--font-weight-semibold);color:var(--color-text);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;line-height:1.15;overflow:hidden}.epf__orb-value--solar{color:var(--epf-color-solar)}.epf__orb-value--grid{color:var(--epf-color-grid)}.epf__orb-value--storage{color:var(--epf-color-battery)}.epf__orb-value--ev{color:var(--epf-color-ev)}.epf__orb-value--muted{color:var(--color-text-subtle)}.epf__orb-label{width:100%;font-size:.625rem;font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;line-height:1.2;overflow:hidden}@media (prefers-reduced-motion:reduce){.epf__orb-spin{animation:none}.epf__particle{transition:none;display:none}}@media (width<=47.99rem){.epf{gap:var(--space-4);max-width:100%}.epf__stage{width:100%;min-height:0;padding:var(--space-4)}}@media (width<=28rem){.epf__stage{--epf-orb-size:6.25rem;--epf-home-size:5.5rem;padding:var(--space-3)}}.home-bento{gap:var(--space-4);grid-template-rows:repeat(2,auto);grid-template-columns:repeat(4,minmax(0,1fr));width:100%;min-width:0;display:grid}.home-bento__main{aspect-ratio:1;grid-area:1/1/3/3;min-width:0;min-height:0}.home-bento__main .epf{width:100%;max-width:none;height:100%;margin-inline:0}.home-bento__main .epf__stage{aspect-ratio:1;width:100%;max-width:none;height:100%;min-height:0;margin-inline:0}.home-bento__panes{display:contents}.home-bento-pane{gap:var(--space-2);aspect-ratio:1;flex-direction:column;min-width:0;display:flex}.home-bento-pane__label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.home-bento-pane__body{flex-direction:column;flex:1;justify-content:center;min-height:0;display:flex}.home-bento-pane__placeholder{font-size:var(--font-size-sm);color:var(--color-text-muted)}.home-bento-main-empty{background-color:var(--color-surface);height:100%;min-height:0}.battery-bento-pane--unavailable{opacity:.6}.battery-bento-pane--active{border-color:color-mix(in srgb, var(--color-source-battery) 35%, transparent)}.battery-bento-pane__metrics{gap:var(--space-3);flex-direction:column;height:100%;display:flex}.battery-bento-pane__soc{gap:var(--space-2);flex-direction:column;display:flex}.battery-bento-pane__soc-value{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text)}.battery-bento-pane__soc-bar{background-color:var(--color-bg);border-radius:var(--radius-full);height:.375rem;overflow:hidden}.battery-bento-pane__soc-fill{background:linear-gradient(90deg, #22c55e, var(--color-source-battery));border-radius:inherit;height:100%;transition:width .4s;display:block}.battery-bento-pane__power-row{align-items:flex-start;gap:var(--space-2);flex-direction:column;margin-top:auto;display:flex}.battery-bento-pane__power{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text)}.battery-bento-pane__power--charge,.battery-bento-pane__power--discharge{color:var(--color-source-battery)}.battery-bento-pane__power--idle{color:var(--color-text-muted)}.battery-bento-pane__empty-in{font-size:var(--font-size-sm);line-height:var(--line-height-tight);color:var(--color-text-muted);margin:0}.home-battery-bento-pane--active{border-color:color-mix(in srgb, var(--color-source-battery) 35%, transparent)}.home-battery-bento-pane__metrics{gap:var(--space-2);flex-direction:column;height:100%;display:flex}.home-battery-bento-pane__soc{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);font-variant-numeric:tabular-nums}.home-battery-bento-pane__power{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);font-variant-numeric:tabular-nums}.home-battery-bento-pane__power--charge,.home-battery-bento-pane__power--discharge{color:var(--color-source-battery)}.home-battery-bento-pane__power--idle{color:var(--color-text-muted)}.home-battery-bento-pane__target{color:var(--color-text-muted);font-size:.75rem}.home-battery-bento-pane__badges{gap:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}@media (width<=47.99rem){.home-bento{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}.home-bento__main{width:100%;max-width:100%;aspect-ratio:unset;grid-area:auto/1/auto/-1;min-height:0;margin-inline:0}.home-bento__main .epf{width:100%;max-width:100%;height:auto;margin-inline:0}.home-bento__main .epf__stage{aspect-ratio:1;width:100%;max-width:100%;height:auto;min-height:0;margin-inline:0}.home-bento-pane{aspect-ratio:unset;min-height:5.5rem}}.device-usage-bento-pane__body{flex-direction:column;flex:1;justify-content:center;width:100%;min-height:0;display:flex}.device-usage-bento-pane--active{border-color:color-mix(in srgb, var(--color-text-muted) 35%, transparent)}.device-usage-bento-pane__list{gap:var(--space-2);flex-direction:column;width:100%;margin:0;padding:0;list-style:none;display:flex}.device-usage-bento-pane__item-wrap{list-style:none}.device-usage-bento-pane__item{justify-content:space-between;align-items:center;gap:var(--space-2);min-width:0;display:flex}.device-usage-bento-pane__item--toggleable{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;padding:0;transition:background-color .15s}.device-usage-bento-pane__item--toggleable:hover,.device-usage-bento-pane__item--toggleable:focus-visible{background-color:color-mix(in srgb, var(--color-text) 6%, transparent)}.device-usage-bento-pane__item--toggleable:disabled{cursor:wait;opacity:.7}.device-usage-bento-pane__name{font-size:var(--font-size-sm);color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.device-usage-bento-pane__action{width:1.25rem;color:var(--color-text-muted);opacity:0;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s,color .15s;display:flex}.device-usage-bento-pane__item--toggleable:hover .device-usage-bento-pane__action,.device-usage-bento-pane__item--toggleable:focus-visible .device-usage-bento-pane__action{opacity:1;color:var(--color-text)}.device-usage-bento-pane__watts{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);font-variant-numeric:tabular-nums;flex-shrink:0}.current-price-pane--active{border-color:color-mix(in srgb, var(--color-source-grid) 35%, transparent)}.current-price-pane__metrics{gap:var(--space-2);flex-direction:column;height:100%;display:flex}.current-price-pane__metrics--compact{gap:var(--space-1);margin-top:auto}.current-price-pane__current{align-items:baseline;gap:var(--space-1);flex-wrap:wrap;display:flex}.current-price-pane__value,.current-price-pane__cents{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.current-price-pane__cents{font-size:var(--font-size-xl)}.current-price-pane__unit,.current-price-pane__period,.current-price-pane__euro{font-size:var(--font-size-xs);color:var(--color-text-muted)}.current-price-pane__euro{font-size:var(--font-size-sm);color:var(--color-text)}.current-price-pane__next{justify-content:space-between;align-items:center;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-border-subtle);margin-top:auto;display:flex}.current-price-pane__trend{align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-muted);display:inline-flex}.current-price-pane__trend--up{color:var(--color-accent-blue)}.current-price-pane__trend--down{color:var(--color-accent-green)}.current-price-pane__next-value{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.home-planning{gap:var(--space-4);flex-direction:column;width:100%;display:flex}.home-planning__header{justify-content:space-between;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;display:flex}.home-planning__dates{gap:var(--space-2);flex-wrap:wrap;display:flex}.detail-bento{gap:var(--space-4);grid-template-rows:repeat(2,auto);grid-template-columns:repeat(4,minmax(0,1fr));width:100%;min-width:0;display:grid}.detail-bento__panes{gap:var(--space-4);grid-area:1/1/3/3;grid-template-rows:repeat(2,auto);grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.detail-bento__main{aspect-ratio:1;grid-area:1/3/3/5;min-width:0;min-height:0}.detail-bento__charts{gap:var(--space-4);flex-direction:column;height:100%;min-height:0;display:flex}.detail-bento__charts--dual .grid-day-chart-pane{flex:1;min-height:0}.detail-bento__charts--dual .grid-day-chart-pane__chart{min-height:6rem}.detail-bento__charts--dual .grid-day-chart-pane__column{height:6rem}.detail-bento__charts--dual .grid-day-chart-pane__bar-track{height:5rem}@media (width<=47.99rem){.detail-bento{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.detail-bento__main{width:100%;max-width:100%;aspect-ratio:unset;order:1;min-height:16rem;margin-inline:0}.detail-bento__panes{gap:var(--space-3);order:2;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0;display:grid}.detail-bento__charts--dual{min-height:0}}.solar-live-metrics--pane{align-items:flex-start;gap:var(--space-2);flex-direction:column;height:100%;margin-top:auto;display:flex}.solar-live-metrics--detail{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.solar-live-metrics__main{min-width:0}.solar-live-metrics__power{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);font-variant-numeric:tabular-nums}.solar-live-metrics--pane .solar-live-metrics__power{font-size:var(--font-size-lg)}.solar-live-metrics--detail .solar-live-metrics__power{margin-top:var(--space-1);font-size:var(--font-size-2xl);display:block}.solar-live-metrics__power--producing{color:var(--color-source-solar)}.solar-live-metrics__power--idle{color:var(--color-text-muted)}.solar-segment-hour-stats{gap:var(--space-1);margin-top:var(--space-2);flex-direction:column;display:flex}.solar-segment-hour-stats--start{align-items:flex-start;margin-top:0}.solar-segment-hour-stats--center{align-items:center;width:100%}.solar-segment-hour-stats .solar-segment-forecast-stats__stat{font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;color:var(--color-text-muted);line-height:1.2}.solar-segment-hour-stats--detail .solar-segment-forecast-stats__stat{display:block}.solar-segment-hour-stats .solar-segment-forecast-stats__stat--adjusted{color:var(--color-source-solar)}.solar-segment-hour-stats .solar-segment-forecast-stats__correction{color:inherit;opacity:.85}.solar-bento-pane__link{color:inherit;border-radius:inherit;transition:transform var(--motion-duration-fast) var(--motion-ease-standard);text-decoration:none;display:block}.solar-bento-pane__link:hover .solar-bento-pane,.solar-bento-pane__link:focus-visible .solar-bento-pane{border-color:color-mix(in srgb, var(--color-source-solar) 45%, transparent)}.solar-bento-pane__link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.solar-bento-pane--active{border-color:color-mix(in srgb, var(--color-source-solar) 35%, transparent)}.solar-total-pane{flex-direction:column;height:100%;min-height:0;display:flex}.solar-total-pane--active{border-color:color-mix(in srgb, var(--color-source-solar) 40%, transparent);box-shadow:0 0 36px color-mix(in srgb, var(--color-source-solar) 12%, transparent)}.solar-total-pane__content{justify-content:center;align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;flex:1;min-height:0;display:flex}.solar-total-pane__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.solar-total-pane__icon{color:var(--color-source-solar)}.solar-total-pane__value{font-size:clamp(2rem,8vw,3rem);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);font-variant-numeric:tabular-nums}.solar-total-pane__value--producing{color:var(--color-source-solar)}.solar-irradiance{gap:var(--space-4);flex-direction:column;width:100%;display:flex}.solar-irradiance__header{gap:var(--space-1);flex-direction:column;display:flex}.solar-irradiance__days{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (width<48rem){.solar-irradiance__days{grid-template-columns:minmax(0,1fr)}}.solar-irradiance-day-pane{flex-direction:column;min-height:0;display:flex}.solar-irradiance-day-pane__header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.solar-irradiance-day-pane__stats{gap:var(--space-5);display:flex}.solar-irradiance-day-pane__stat{gap:var(--space-1);text-align:right;flex-direction:column;display:flex}.solar-irradiance-day-pane__stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.solar-irradiance-day-pane__stat-value{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;color:var(--color-text)}.solar-irradiance-day-pane__stat-value--peak{color:var(--color-source-solar)}.solar-irradiance-day-pane__chart{padding-bottom:var(--space-1);align-items:flex-end;gap:2px;display:flex;overflow-x:auto}.solar-irradiance-day-pane__column{align-items:center;gap:var(--space-1);flex-direction:column;flex:1 0 0;min-width:1.25rem;display:flex}.solar-irradiance-day-pane__value{color:var(--color-text-muted);font-variant-numeric:tabular-nums;opacity:0;font-size:.5625rem;line-height:1}.solar-irradiance-day-pane__column--active .solar-irradiance-day-pane__value{opacity:1}.solar-irradiance-day-pane__bar-track{align-items:flex-end;width:100%;height:6.25rem;display:flex}.solar-irradiance-day-pane__bar{border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:color-mix(in srgb, var(--color-source-solar) 25%, transparent);width:100%;min-height:2px}.solar-irradiance-day-pane__column--active .solar-irradiance-day-pane__bar{background:linear-gradient(to top, color-mix(in srgb, var(--color-source-solar) 55%, transparent), var(--color-source-solar))}.solar-irradiance-day-pane__hour{font-size:var(--font-size-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.solar-yield{gap:var(--space-4);flex-direction:column;width:100%;display:flex}.solar-yield__header{gap:var(--space-1);flex-direction:column;display:flex}.solar-yield__days{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (width<48rem){.solar-yield__days{grid-template-columns:minmax(0,1fr)}}.solar-yield-day-pane__header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.solar-yield-day-pane__total{gap:var(--space-1);text-align:right;flex-direction:column;display:flex}.solar-yield-day-pane__total-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.solar-yield-day-pane__total-value{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-source-solar);font-variant-numeric:tabular-nums}.solar-yield-day-pane__chart{margin-bottom:var(--space-2);padding-bottom:var(--space-1);align-items:flex-end;gap:2px;display:flex;overflow-x:auto}.solar-yield-day-pane__chart-caption{margin-bottom:var(--space-4);display:block}.solar-yield-day-pane__column{align-items:center;gap:var(--space-1);flex-direction:column;flex:1 0 0;min-width:1.25rem;display:flex}.solar-yield-day-pane__value{color:var(--color-text-muted);font-variant-numeric:tabular-nums;opacity:0;font-size:.5625rem;line-height:1}.solar-yield-day-pane__column--active .solar-yield-day-pane__value{opacity:1}.solar-yield-day-pane__column--current .solar-yield-day-pane__value{color:var(--color-source-solar);font-weight:var(--font-weight-semibold);opacity:1}.solar-yield-day-pane__bar-track{align-items:flex-end;width:100%;height:6.25rem;display:flex}.solar-yield-day-pane__bar{border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:color-mix(in srgb, var(--color-source-solar) 25%, transparent);width:100%;min-height:2px}.solar-yield-day-pane__column--active .solar-yield-day-pane__bar{background:linear-gradient(to top, color-mix(in srgb, var(--color-source-solar) 55%, transparent), var(--color-source-solar))}.solar-yield-day-pane__column--current .solar-yield-day-pane__bar{box-shadow:0 0 0 1px color-mix(in srgb, var(--color-source-solar) 60%, transparent)}.solar-yield-day-pane__hour{font-size:var(--font-size-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.solar-yield-day-pane__column--current .solar-yield-day-pane__hour{color:var(--color-source-solar);font-weight:var(--font-weight-medium)}.solar-yield-day-pane__details{margin-top:var(--space-3);border-top:1px solid var(--color-border);padding-top:var(--space-3)}.solar-yield-day-pane__details+.solar-yield-day-pane__details{margin-top:var(--space-2)}.solar-yield-day-pane__summary{cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);list-style:none}.solar-yield-day-pane__summary::-webkit-details-marker{display:none}.solar-yield-day-pane__segments,.solar-yield-day-pane__converters,.solar-yield-day-pane__panels{margin:var(--space-3) 0 0;padding:0;list-style:none}.solar-yield-day-pane__segment-row,.solar-yield-day-pane__converters li,.solar-yield-day-pane__panels li{justify-content:space-between;gap:var(--space-3);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;display:flex}.solar-yield-day-pane__segment{padding:var(--space-2) 0}.solar-yield-day-pane__segment-row{font-weight:var(--font-weight-medium)}.solar-yield-day-pane__kwh{color:var(--color-source-solar)}.solar-yield-day-pane__converters{margin-top:var(--space-2);padding-left:var(--space-3);color:var(--color-text-muted)}.solar-yield-day-pane__panels li{padding:var(--space-1) 0;color:var(--color-text-muted)}.solar-segment-installation,.solar-segment-installation__converters{gap:var(--space-4);flex-direction:column;display:flex}.solar-segment-installation__converter-header{justify-content:space-between;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.solar-segment-installation__panels{margin:0;padding:0;list-style:none}.solar-segment-installation__panel{justify-content:space-between;gap:var(--space-2);padding:var(--space-2) 0;font-size:var(--font-size-sm);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}.solar-segment-installation__panel:first-child{border-top:none;padding-top:0}.solar-segment-installation__panel-title{font-weight:var(--font-weight-medium)}.solar-segment-installation__panel-spec{color:var(--color-text-muted);font-variant-numeric:tabular-nums}.drawer{z-index:200;pointer-events:none;visibility:hidden;position:fixed;inset:0}.drawer--open{pointer-events:auto;visibility:visible}.drawer__backdrop{opacity:0;cursor:pointer;background:#0000008c;border:0;transition:opacity .2s;position:absolute;inset:0}.drawer--open .drawer__backdrop{opacity:1}.drawer__panel{background:var(--color-surface-raised);border-left:1px solid var(--color-border-subtle);width:min(100%,22rem);max-width:100%;padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0);flex-direction:column;transition:transform .25s;display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #00000073}.drawer--open .drawer__panel{transform:translate(0)}.drawer__header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--color-border-subtle);flex-shrink:0;display:flex}.drawer__close{width:2.25rem;height:2.25rem;color:var(--color-text-muted);border-radius:var(--radius-md);cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.drawer__close:hover{color:var(--color-text);background:var(--color-bg)}.drawer__body{min-height:0;padding:var(--space-4);-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}@media (prefers-reduced-motion:reduce){.drawer__backdrop,.drawer__panel{transition:none}}@media (width<30rem){.drawer__panel{width:100%}}.battery-main-pane{justify-content:space-between;gap:var(--space-4);flex-direction:column;height:100%;min-height:0;display:flex}.battery-main-pane--active{border-color:color-mix(in srgb, var(--color-source-battery) 40%, transparent);box-shadow:0 0 36px color-mix(in srgb, var(--color-source-battery) 12%, transparent)}.battery-main-pane__summary{justify-content:center;align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;flex:1;min-height:0;display:flex}.battery-main-pane__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.battery-main-pane__icon{color:var(--color-source-battery)}.battery-main-pane__soc{font-size:clamp(2rem,8vw,3rem);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);font-variant-numeric:tabular-nums}.battery-main-pane__soc--muted{color:var(--color-text-subtle)}.battery-main-pane__power{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);font-variant-numeric:tabular-nums}.battery-main-pane__power--charge,.battery-main-pane__power--discharge{color:var(--color-source-battery)}.battery-main-pane__power--idle{color:var(--color-text-muted)}.battery-main-pane__control{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle);flex-wrap:wrap;display:flex}.battery-main-pane__control-status{align-items:flex-start;gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.battery-main-pane__control-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.battery-override-drawer{gap:var(--space-4);flex-direction:column;display:flex}.battery-override-drawer__mode{gap:var(--space-3);border:0;flex-wrap:wrap;margin:0;padding:0;display:flex}.battery-override-drawer__mode-option{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text);cursor:pointer;display:inline-flex}.battery-override-drawer__watts--hidden{display:none}.battery-override-drawer__submit{width:100%;margin-top:var(--space-2)}.solar-page{gap:var(--space-4);flex-direction:column;width:100%;min-width:0;display:flex}.solar-page__total{width:100%;min-width:0}.solar-page__total .solar-total-pane{height:auto;min-height:0}.solar-page__grid{gap:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr));min-width:0;display:grid}.solar-page__grid .solar-bento-pane__link{height:100%;display:block}.solar-page__grid .home-bento-pane{aspect-ratio:1;min-width:0;height:100%}.battery-solar-pane--active{border-color:color-mix(in srgb, var(--color-source-solar) 35%, transparent)}.battery-solar-pane--unavailable{opacity:.6}.battery-solar-pane__metrics{justify-content:center;gap:var(--space-1);flex-direction:column;flex:1;min-height:0;margin-top:auto;display:flex}.battery-solar-pane__power{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.battery-solar-pane__power--producing{color:var(--color-source-solar)}.battery-solar-pane__mppt{flex-direction:column;gap:.125rem;display:flex}.battery-solar-pane__mppt-line{color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:.625rem;line-height:1.2}@media (width<=47.99rem){.solar-page{gap:var(--space-3)}.solar-page__grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr))}.battery-solar-pane__power{font-size:var(--font-size-base)}}.grid-consumption-pane--active{border-color:color-mix(in srgb, var(--color-source-grid) 35%, transparent)}.grid-consumption-pane__metrics{align-items:flex-start;gap:var(--space-2);flex-direction:column;height:100%;margin-top:auto;display:flex}.grid-consumption-pane__power{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);font-variant-numeric:tabular-nums}.grid-consumption-pane__power--import{color:var(--color-source-grid)}.grid-consumption-pane__power--export{color:var(--color-export)}.grid-consumption-pane__power--idle{color:var(--color-text-muted)}.grid-tariff-stat-pane__metrics{gap:var(--space-1);flex-direction:column;height:100%;margin-top:auto;display:flex}.grid-tariff-stat-pane__time{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text)}.grid-tariff-stat-pane__price{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.grid-tariff-stat-pane__euro{font-size:var(--font-size-xs);color:var(--color-text-muted)}.grid-day-chart-pane{flex-direction:column;height:100%;min-height:0;display:flex}.grid-day-chart-pane__header{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.grid-day-chart-pane__chart{min-height:8.5rem;padding-block:var(--space-2);flex:1;align-items:flex-end;gap:2px;display:flex}.grid-day-chart-pane__column{justify-content:flex-end;align-items:center;gap:var(--space-1);flex-direction:column;flex:1;min-width:0;height:8.5rem;display:flex}.grid-day-chart-pane__column--current .grid-day-chart-pane__hour{color:var(--color-accent-blue);font-weight:var(--font-weight-semibold)}.grid-day-chart-pane__column--current .grid-day-chart-pane__value{font-weight:var(--font-weight-semibold)}.grid-day-chart-pane__value{color:var(--color-text-subtle);font-variant-numeric:tabular-nums;font-size:.5625rem;line-height:1}.grid-day-chart-pane__bar-track{flex-shrink:0;justify-content:center;align-items:flex-end;width:100%;height:7.5rem;display:flex}.grid-day-chart-pane__bar{border-radius:var(--radius-sm) var(--radius-sm) 0 0;opacity:.7;flex-shrink:0;width:100%;max-width:1.25rem;height:4px;min-height:4px;transition:height .35s}.grid-day-chart-pane__bar[class*=price-tier--]{background:var(--price-tier-fill)}.grid-day-chart-pane__bar.price-tier--low{opacity:.85}.grid-day-chart-pane__bar.price-tier--medium{opacity:.8}.grid-day-chart-pane__bar.price-tier--high{opacity:.85}.grid-day-chart-pane__column--current .grid-day-chart-pane__bar{opacity:1;box-shadow:0 0 12px #5b8def73}.grid-day-chart-pane__hour{color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:.5625rem}.grid-day-chart-pane__legend{gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle);font-size:var(--font-size-xs);color:var(--color-text-muted);flex-wrap:wrap;display:flex}.grid-day-chart-pane__legend-item{align-items:center;gap:var(--space-2);display:inline-flex}.grid-day-chart-pane__swatch{border-radius:var(--radius-sm);width:.625rem;height:.625rem}.grid-day-chart-pane__swatch--current{background:var(--color-accent-blue)}.grid-day-chart-pane__swatch[class*=price-tier--]{background:var(--price-tier-fill)}@media (width<48rem){.grid-day-chart-pane__chart{padding-bottom:var(--space-2);overflow-x:auto}.grid-day-chart-pane__column{flex:0 0 1.75rem}}.planning-page{gap:var(--space-4);flex-direction:column;width:100%;display:flex}.planning-page__summary{gap:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.planning-kpi-card__metrics{gap:var(--space-1);flex-direction:column;height:100%;margin-top:auto;display:flex}.planning-kpi-card__value{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);font-variant-numeric:tabular-nums}.planning-kpi-card__value--muted{color:var(--color-text-muted)}.planning-kpi-card__hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}@media (width<=47.99rem){.planning-page{gap:var(--space-3);min-width:0}.planning-page__summary{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr))}.planning-page__summary .home-bento-pane{aspect-ratio:unset;min-height:5.5rem}}.planning-hourly-timeline{gap:var(--space-4);flex-direction:column;width:100%;display:flex}.planning-hourly-timeline__header{gap:var(--space-1);flex-direction:column;display:flex}.planning-hourly-timeline__filter{align-items:center;gap:var(--space-2);cursor:pointer;-webkit-user-select:none;user-select:none;width:fit-content;font-size:var(--font-size-sm);color:var(--color-text-muted);display:inline-flex}.planning-hourly-timeline__hide-past{width:1rem;height:1rem;accent-color:var(--color-accent-blue);cursor:pointer;flex-shrink:0;margin:0}.planning-hourly-timeline:has(.planning-hourly-timeline__hide-past:checked) .planning-hourly-timeline__hour--past{display:none}.planning-hourly-timeline__hours{gap:var(--space-4);flex-direction:column;width:100%;display:flex}.planning-hourly-timeline__hour{gap:var(--space-2);flex-direction:column;width:100%;display:flex}.planning-hourly-timeline__hour--current .planning-hourly-timeline__time{color:var(--color-accent-blue)}.planning-hourly-timeline__hour-heading{justify-content:space-between;align-items:baseline;gap:var(--space-2);padding-inline:var(--space-1);flex-wrap:wrap;display:flex}.planning-hourly-timeline__hour-title{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.planning-hourly-timeline__time{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.planning-hourly-timeline__hour-badges{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.planning-hourly-timeline__bento{width:100%;min-width:0}.planning-hourly-timeline__events{gap:var(--space-2);flex-direction:column;min-width:0;margin:0;padding:0;list-style:none;display:flex}.planning-hourly-timeline__event-pane{gap:var(--space-3);padding:var(--space-3);background:var(--color-surface-raised);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);grid-template-columns:5.5rem minmax(0,1fr);align-items:baseline;min-width:0;display:grid}.planning-hourly-timeline__event-pane--energy{border-left:3px solid var(--color-accent-blue)}.planning-hourly-timeline__event-pane--solar{border-left:3px solid var(--color-source-solar)}.planning-hourly-timeline__energy-sep{color:var(--color-text-muted)}.planning-hourly-timeline__energy-part--neutral{color:var(--color-text)}.planning-hourly-timeline__energy-part--solar{color:var(--color-source-solar)}.planning-hourly-timeline__energy-part--grid{color:var(--color-accent-blue)}.planning-hourly-timeline__event-pane--battery{border-left:3px solid var(--color-source-battery);grid-template-columns:5.5rem minmax(0,1fr) auto;align-items:center}.planning-hourly-timeline__battery-text{grid-column:2;min-width:0}.planning-hourly-timeline__battery-mode{flex-shrink:0;grid-column:3;justify-self:end}.planning-hourly-timeline__event-pane--action{border-left:3px solid var(--color-accent-orange)}.planning-hourly-timeline__event-pane--trigger{border-left-color:var(--color-accent-orange);background:color-mix(in srgb, var(--color-accent-orange) 8%, var(--color-surface-raised))}.planning-hourly-timeline__event-pane--pending{opacity:.7}.planning-hourly-timeline__event-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.planning-hourly-timeline__event-text{font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);color:var(--color-text)}.planning-hourly-timeline__event-pane--trigger .planning-hourly-timeline__event-text{font-weight:var(--font-weight-semibold)}.planning-hourly-timeline__event-pane--pending .planning-hourly-timeline__event-text{color:var(--color-text-muted);font-style:italic}@media (width<=47.99rem){.planning-hourly-timeline__event-pane{gap:var(--space-1);grid-template-columns:1fr}.planning-hourly-timeline__event-pane--battery{grid-template-columns:minmax(0,1fr) auto}.planning-hourly-timeline__event-pane--battery .planning-hourly-timeline__event-label{grid-column:1/-1}.planning-hourly-timeline__event-pane--battery .planning-hourly-timeline__battery-text{grid-column:1}.planning-hourly-timeline__event-pane--battery .planning-hourly-timeline__battery-mode{grid-column:2}}.ev-stat-pane--active{border-color:color-mix(in srgb, var(--color-source-ev) 35%, transparent)}.ev-stat-pane__metrics{align-items:flex-start;gap:var(--space-2);flex-direction:column;height:100%;margin-top:auto;display:flex}.ev-stat-pane__value{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.ev-stat-pane--active .ev-stat-pane__value{color:var(--color-source-ev)}.ev-stat-pane__detail{font-size:var(--font-size-xs);color:var(--color-text-muted)}.ev-main-pane{flex-direction:column;height:100%;min-height:0;display:flex}.ev-main-pane--active{border-color:color-mix(in srgb, var(--color-source-ev) 35%, transparent);box-shadow:0 0 36px color-mix(in srgb, var(--color-source-ev) 10%, transparent)}.ev-main-pane__content{justify-content:center;align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;flex:1;min-height:0;display:flex}.ev-main-pane__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.ev-main-pane__icon{color:var(--color-text-muted)}.ev-main-pane--active .ev-main-pane__icon{color:var(--color-source-ev)}.page-shell{max-width:100%;min-height:100dvh;overflow-x:clip}.page{flex-direction:column;min-height:100dvh;display:flex}.page__main{padding-block:var(--space-8);flex:1}@media (width<=47.99rem){.page__main{padding-block:var(--space-4);min-width:0}.page-header{margin-bottom:var(--space-4)}}@media (display-mode:standalone){.app-header{padding-top:env(safe-area-inset-top,0)}.page__main{padding-bottom:max(var(--space-6), env(safe-area-inset-bottom,0px))}}.page--centered{justify-content:center;align-items:center}.page--centered .page__main{padding-block:var(--space-6);justify-content:center;align-items:center;display:flex}.page-header{margin-bottom:var(--space-8)}.page-header--centered{text-align:center}.page-header__actions{margin-top:var(--space-4)}.empty-state{text-align:center;align-items:center;gap:var(--space-4);padding:var(--space-8);flex-direction:column;display:flex}.empty-state__icon{color:var(--color-text-subtle)}.form-section__title{margin-bottom:var(--space-4)}.app-header{border-bottom:1px solid var(--color-border-subtle)}.app-header__inner{align-items:center;gap:var(--space-6);padding-block:var(--space-4);display:flex}.app-header__logo{align-items:center;gap:var(--space-2);color:var(--color-text);transition:opacity var(--duration-fast) var(--ease-default);text-decoration:none;display:inline-flex}.app-header__logo:hover{opacity:.85}.app-header__logo:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px;border-radius:var(--radius-sm)}.app-header__logo-icon{color:var(--color-accent-blue)}.app-header__logo-text{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}.app-header__actions{flex:1;min-width:0}.app-header__logout{flex-shrink:0;margin-left:auto}.page__main{touch-action:pan-y pinch-zoom;-webkit-overflow-scrolling:touch}@supports (view-transition-name:none){::view-transition-old(root){animation-duration:var(--duration-normal);animation-timing-function:var(--ease-default)}::view-transition-new(root){animation-duration:var(--duration-normal);animation-timing-function:var(--ease-default)}}.auth-panel{width:24rem;max-width:100%;margin-inline:auto}.styleguide{padding-block:var(--space-8)}.styleguide__section{margin-bottom:var(--space-12)}.styleguide__title{margin-bottom:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.styleguide__desc{margin-bottom:var(--space-6)}.styleguide__row{align-items:center;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.styleguide__swatches{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(8rem,1fr));display:grid}.styleguide__swatch{gap:var(--space-2);flex-direction:column;display:flex}.styleguide__swatch-color{border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);height:3rem}.styleguide__swatch-label{color:var(--color-text-muted);font-size:.75rem}.styleguide__code{margin-top:var(--space-2);padding:var(--space-3);color:var(--color-text-muted);background-color:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);font-family:ui-monospace,monospace;font-size:.75rem;overflow-x:auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
