.ht-buffer-figure{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;display:flex}.ht-buffer-svg-wrap{flex:none;max-width:100%}.ht-buffer-svg-wrap svg{max-width:100%;height:auto;display:block}.ht-buffer-facts{flex-direction:column;flex:16rem;gap:.7rem;min-width:14rem;display:flex}.ht-fact-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.55rem;font-size:.85rem;display:flex}.ht-fact-row .ht-fact-label{color:var(--fg-muted)}.ht-fact-row .ht-fact-value{font-weight:650}.ht-connections{grid-template-columns:1fr auto 1fr;align-items:stretch;gap:.5rem 1rem;margin-top:1rem;display:grid}.ht-conn-col{flex-direction:column;gap:.5rem;display:flex}.ht-conn-col.is-right{align-items:flex-end}.ht-conn-mid{color:var(--fg-faint);justify-content:center;align-items:center;display:flex}.ht-conn-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-sunken);color:var(--fg-muted);align-items:center;gap:.5rem;min-width:9rem;padding:.5rem .7rem;font-size:.8rem;text-decoration:none;display:flex}a.ht-conn-item:hover,a.ht-conn-item:focus-visible{color:var(--fg);border-color:var(--fg-faint)}.ht-conn-item.is-on{color:var(--fg);border-color:var(--line-strong)}.ht-conn-item .icon-symbol{flex:none;width:1.2rem;height:1.2rem}.ht-boiler-figure{flex-wrap:wrap;align-items:center;gap:1.5rem;display:flex}.ht-boiler-svg-wrap{flex:none;width:12rem;max-width:100%}.ht-boiler-svg-wrap svg{width:100%;height:auto;display:block}.ht-flame{transform-box:fill-box;transform-origin:50%;transition:opacity .25s var(--ease)}@media (prefers-reduced-motion:no-preference){.ht-flame.is-burning{animation:1.4s ease-in-out infinite ht-flame-flicker}}@keyframes ht-flame-flicker{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.08)}}.ht-note{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-sunken);color:var(--fg-muted);align-items:flex-start;gap:.5rem;margin-top:1rem;padding:.75rem .9rem;font-size:.8rem;display:flex}.ht-note svg{width:1.1rem;height:1.1rem;color:var(--c-kessel);flex:none;margin-top:.1rem}.ht-chart-now-label{fill:var(--fg-muted);font-size:.68rem}@media (width<=720px){.ht-connections{grid-template-columns:1fr}.ht-conn-col.is-right{align-items:stretch}.ht-conn-mid{display:none}.ht-buffer-figure,.ht-boiler-figure{flex-direction:column}}.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}.plant-schema-svg{width:100%;height:auto;font-family:inherit;display:block}.plant-component{cursor:default}.plant-component[tabindex]{cursor:pointer}.plant-component[tabindex]:focus-visible .plant-box{outline:2px solid var(--focus-ring);outline-offset:2px}.plant-box{fill:var(--bg-sunken);stroke:var(--line-strong);stroke-width:1.4px}.plant-component.is-off .plant-box{stroke-dasharray:4 4;opacity:.7}.plant-label{fill:var(--fg);font-size:12px;font-weight:650}.plant-sub{fill:var(--fg-muted);font-size:10.5px}.plant-sub.is-dim{fill:var(--fg-faint)}.plant-sub.is-missing{fill:var(--fg-faint);font-style:italic}.plant-pipe{fill:none;stroke-linecap:round;stroke-linejoin:round}.plant-pipe.is-flowing{stroke-dasharray:26 6;animation:1s linear infinite plant-flow-move}.plant-pipe.is-idle{stroke-dasharray:3 7;opacity:.4}@keyframes plant-flow-move{to{stroke-dashoffset:-32px}}.plant-rotor{transform-box:fill-box;transform-origin:50%}.plant-component.is-running .plant-rotor{animation:2.4s linear infinite plant-rotor-spin}@keyframes plant-rotor-spin{to{transform:rotate(360deg)}}.plant-pump-icon.is-running{animation:plant-rotor-spin var(--plant-pump-speed,2.4s) linear infinite}.plant-flame{transform-box:fill-box;transform-origin:50%}.plant-flame.is-burning{animation:1.4s ease-in-out infinite plant-flame-flicker}@keyframes plant-flame-flicker{0%,to{opacity:.85;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.08)}}.plant-status-grid{grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.9rem;display:grid}.plant-status-item .eyebrow{margin-bottom:.25rem;display:block}.plant-status-item .value{font-size:1.05rem;font-weight:650}.plant-simple-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-elevated);max-width:22rem;padding:.9rem 1rem}.plant-simple-card[tabindex]{cursor:pointer}.plant-simple-card[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.plant-simple-card.is-off{opacity:.75}.plant-simple-card-head{align-items:center;gap:.5rem;margin-bottom:.6rem;display:flex}.plant-simple-card-icon{width:1.4rem;height:1.4rem;color:var(--fg-muted);flex:none;display:inline-flex}.plant-simple-card-name{flex:1;font-weight:650}.plant-simple-card-state{color:var(--fg-faint);font-size:.78rem}.plant-simple-card-state.is-running{color:var(--ok)}.plant-simple-card-meta{grid-template-columns:1fr auto;gap:.25rem 1rem;margin:0;font-size:.85rem;display:grid}.plant-simple-card-meta dt{color:var(--fg-muted)}.plant-simple-card-meta dd{text-align:right;margin:0}.plant-extra-list{grid-template-columns:1fr auto;gap:.3rem 1rem;font-size:.85rem;display:grid}.plant-extra-list dt{color:var(--fg-muted)}.plant-extra-list dd{text-align:right;justify-content:flex-end;align-items:baseline;gap:.5rem;margin:0;display:flex}.plant-extra-list .plant-extra-age{color:var(--fg-faint);font-size:.78rem}.plant-extra-list .plant-extra-stale{color:var(--fg-faint)}.gn-kpi-row{flex-wrap:wrap;gap:.85rem;margin-bottom:1.25rem;display:flex}.gn-kpi-row .kpi-card{flex:10.5rem}.gn-chart-title{color:var(--fg-muted);margin-bottom:.5rem;font-size:.85rem;font-weight:650}.gn-chart-note{color:var(--fg-faint);margin-top:.4rem;font-size:.74rem}.gn-roof-grid{grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.1rem;display:grid}@media (width<=720px){.gn-roof-grid{grid-template-columns:1fr}}.gn-roof-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-sunken);padding:.65rem .75rem}.gn-roof-card h4{color:var(--fg-muted);margin:0 0 .5rem;font-size:.78rem;font-weight:650}.gn-inverter-row{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:.6rem;padding:.25rem 0;font-size:.78rem;display:flex}.gn-inverter-row:first-of-type{border-top:none}.gn-inverter-row.is-off{opacity:.62}.gn-inverter-name{align-items:center;font-weight:650;display:inline-flex}.gn-inverter-values{text-align:right;color:var(--fg-muted)}.gn-dot{background:var(--fg-faint);border-radius:50%;flex:none;width:.5rem;height:.5rem;margin-right:.4rem;display:inline-block}.gn-dot.is-running{background:var(--ok)}.gn-dot.is-ready{background:var(--c-pv)}.gn-irr-row{align-items:center;gap:.75rem;margin-bottom:.9rem;display:flex}.gn-irr-bar-track{background:var(--bg-sunken);border-radius:999px;flex:auto;height:.65rem;overflow:hidden}.gn-irr-bar-fill{background:var(--c-pv);border-radius:999px;height:100%}.gn-calm-note{color:var(--fg-muted);padding:.5rem 0 .9rem;font-size:.85rem}.gn-flow-note{color:var(--fg-faint);text-align:center;margin-top:.4rem;font-size:.78rem}.gn-pv-east-fill{fill:var(--pipe-zul)}.gn-pv-south-fill{fill:var(--c-pv)}.gn-pv-west-fill{fill:var(--pipe-abl)}.gn-pv-east-swatch{background:var(--pipe-zul)}.gn-pv-south-swatch{background:var(--c-pv)}.gn-pv-west-swatch{background:var(--pipe-abl)}.gn-maint-warn{color:var(--c-pv);align-items:center;gap:.3rem;font-weight:650;display:inline-flex}.gn-maint-warn svg{flex:none}:root{--pipe-abwasser:#9c7a52}.cs-unit-switch{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.cs-unit-switch-item{border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--fg-muted);background:var(--bg-sunken);transition:background .12s var(--ease), color .12s var(--ease), border-color .12s var(--ease);align-items:center;gap:.4rem;padding:.5rem .85rem;font-size:.82rem;font-weight:600;text-decoration:none;display:inline-flex}.cs-unit-switch-item:hover{border-color:var(--fg-faint);color:var(--fg)}.cs-unit-switch-item[aria-current=page]{background:var(--accent);border-color:var(--accent);color:#0c1420}.cs-mode-pill{background:var(--bg-sunken);border:1px solid var(--line-strong);color:var(--fg-muted);border-radius:999px;align-items:center;gap:.3rem;padding:.15rem .55rem;font-size:.72rem;font-weight:650;display:inline-flex}.cs-mode-pill.is-active{color:var(--ok);border-color:var(--ok)}.cs-kpi-grid{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1rem;display:grid}.cs-card-grid{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;display:grid}.cs-card{text-align:left;font:inherit;color:inherit;background:var(--bg-sunken);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;transition:background .12s var(--ease), border-color .12s var(--ease);flex-direction:column;gap:.5rem;padding:.85rem .95rem;display:flex}.cs-card:hover{border-color:var(--fg-faint)}.cs-card:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.cs-card.is-ready,.cs-card.is-off{opacity:.78}.cs-card-head{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.cs-card-name{font-size:.92rem;font-weight:650}.cs-card-sub{color:var(--fg-muted);min-height:1.1em;font-size:.82rem}.cs-card-meta{grid-template-columns:1fr 1fr;gap:.3rem .75rem;margin:0;display:grid}.cs-card-meta div{flex-direction:column;display:flex}.cs-card-meta dt{color:var(--fg-faint);font-size:.66rem}.cs-card-meta dd{color:var(--fg);margin:0;font-size:.8rem;font-weight:600}.cs-card-hint{color:var(--c-pv);border-top:1px dashed var(--line);align-items:center;gap:.35rem;margin-top:.1rem;padding-top:.4rem;font-size:.74rem;display:flex}.cs-util-track{background:var(--bg-sunken);border-radius:999px;height:.5rem;margin:.5rem 0 .6rem;overflow:hidden}.cs-util-fill{background:var(--c-verbraucher);border-radius:999px;height:100%}.cs-util-fill.is-low{background:var(--c-netz-bezug)}.cs-card-meta dd.is-low{color:var(--c-netz-bezug)}.cs-card-hint svg{flex:none;width:.8rem;height:.8rem}.cs-chip{letter-spacing:.02em;white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:.3rem;padding:.18rem .55rem;font-size:.68rem;font-weight:700;display:inline-flex}.cs-chip svg{flex:none;width:.7rem;height:.7rem}.cs-chip.is-running{color:var(--ok);background:#3ee07a29}.cs-chip.is-ready{color:var(--fg-muted);background:#b7aea229}.cs-chip.is-fault{color:var(--c-alarm);background:#ff6b5b2e}.cs-chip.is-off{color:var(--fg-faint);background:#8e857924}.cs-temp-band{--cs-band-track:var(--bg-recessed);background:var(--cs-band-track);border:1px solid var(--line);border-radius:999px;height:.9rem;position:relative;overflow:hidden}.cs-temp-band-limit{background:#ff6b5b38;position:absolute;top:0;bottom:0}.cs-temp-band-marker{background:var(--fg);width:2px;position:absolute;top:-2px;bottom:-2px}.cs-temp-band-marker.is-ok{background:var(--ok)}.cs-temp-band-marker.is-alarm{background:var(--c-alarm)}.cs-sawtooth{width:100%;height:3.2rem;display:block}.cs-sawtooth-track{fill:none;stroke:var(--line-strong);stroke-width:1.4px}.cs-sawtooth-wave{fill:none;stroke:var(--fg-faint);stroke-width:1.3px;opacity:.7}.cs-sawtooth-marker{stroke:var(--c-pv);stroke-width:2px}.cs-shift-note{color:var(--fg-faint);padding:.5rem .2rem 0;font-size:.78rem}.cs-infobox{inset:auto 1rem 1rem auto}@media (width<=480px){.cs-card-grid,.cs-kpi-grid{grid-template-columns:1fr}.cs-infobox{max-width:none;bottom:.5rem;left:.5rem;right:.5rem}}:root{--bg:#0c0b09;--bg-elevated:#141210;--bg-sunken:#0a0908;--bg-recessed:#080706;--fg:#f4f1ea;--fg-muted:#b7aea2;--fg-faint:#8e8579;--line:#f4f1ea24;--line-strong:#f4f1ea4d;--accent:#7eb4ff;--accent-hover:#9ec8ff;--ok:#3ee07a;--focus-ring:#ffd479;--c-now:#f4f1ea;--c-pv:#f0b13d;--c-bhkw-el:#d9a76b;--c-netz-bezug:#7eb4ff;--c-netz-ein:#c3dcff;--c-speicher:#3ee07a;--c-waerme:#ef8659;--c-waerme-2:#f4a978;--c-kessel:#c96a4a;--c-verbraucher:#b7aea2;--c-alarm:#ff6b5b;--pipe-vl:#ff5a3c;--pipe-rl:#3aa0d8;--pipe-tww:#ffb020;--pipe-kw:#52d1c8;--pipe-aul:#7bd66a;--pipe-zul:#5fb8ff;--pipe-abl:#d9c15a;--pipe-fol:#9c9183;--pipe-kmr-heiss:#ff8a3d;--pipe-kmr-fluessig:#c9a6ff;--pipe-kmr-sauggas:#7ec4ff;--pipe-off:var(--line-strong);--state-running:var(--ok);--state-off:var(--fg-faint);--state-ready:var(--accent);--state-fault:var(--c-alarm);--radius-sm:2px;--radius:4px;--radius-lg:6px;--ease:cubic-bezier(.22, .61, .36, 1);--tap:2.75rem;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;min-width:320px;font-family:ui-sans-serif,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.45;overflow-x:hidden}h1,h2,h3{letter-spacing:-.015em;margin:0;font-weight:650}p{margin:0}button{font:inherit;color:inherit}a{color:inherit}svg{display:block}.tabular{font-variant-numeric:tabular-nums;letter-spacing:-.02em}.icon-symbol{flex:none;width:1.4rem;height:1.4rem}.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}.skip-link{background:var(--fg);color:var(--bg);border-radius:var(--radius);z-index:100;transition:top .15s var(--ease);padding:.6rem 1rem;font-weight:600;position:absolute;top:-3rem;left:1rem}.skip-link:focus{top:1rem}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);font-size:.6875rem;font-weight:600}.rotor{transform-box:fill-box;transform-origin:50%}.is-on .rotor{animation:2.4s linear infinite rotor-spin}@keyframes rotor-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.demo-banner{background:var(--bg-sunken);border-bottom:1px solid var(--line);color:var(--fg-muted);align-items:center;gap:.6rem;padding:.55rem clamp(1rem,4vw,2rem);font-size:.8rem;display:flex}.demo-banner strong{color:var(--fg);font-weight:650}.demo-banner svg{color:var(--c-waerme);flex:none}.masthead{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 1.5rem;max-width:1600px;margin-inline:auto;padding:clamp(1.1rem,3vw,1.6rem) clamp(1rem,4vw,2rem) .9rem;display:flex}.masthead h1{font-size:clamp(1.35rem,2.4vw,1.75rem)}.masthead .subtitle{color:var(--fg-muted);margin-top:.3rem;font-size:.875rem}.status-line{color:var(--fg-muted);white-space:nowrap;align-items:center;gap:.55rem;font-size:.8rem;display:flex}.live-dot{background:var(--ok);border-radius:50%;flex:none;width:.55rem;height:.55rem;box-shadow:0 0 0 3px #3ee07a2e}.status-line.is-playing .live-dot{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 0 3px #3ee07a2e}50%{box-shadow:0 0 0 6px #3ee07a0d}}.site-nav{-ms-overflow-style:none;scrollbar-width:thin;gap:.3rem;max-width:1600px;margin-inline:auto;padding:0 clamp(1rem,4vw,2rem);display:flex;overflow-x:auto}.site-nav a{color:var(--fg-muted);white-space:nowrap;transition:color .12s var(--ease), border-color .12s var(--ease);border-bottom:2px solid #0000;align-items:center;gap:.4rem;margin-bottom:-1px;padding:.6rem .9rem;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.site-nav a:hover{color:var(--fg)}.site-nav a[aria-current=page]{color:var(--fg);border-bottom-color:var(--accent)}.site-nav a svg{flex:none;width:1rem;height:1rem}.plant-subnav{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.3rem 1.1rem;max-width:1600px;margin-inline:auto;padding:.4rem clamp(1rem,4vw,2rem) .6rem;font-size:.78rem;display:flex}.plant-subnav-group{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.plant-subnav-group-label{color:var(--fg-faint);letter-spacing:.08em;text-transform:uppercase;margin-right:.1rem;font-size:.68rem}.plant-subnav a{border-radius:var(--radius-sm);color:var(--fg-muted);transition:color .12s var(--ease), border-color .12s var(--ease), background .12s var(--ease);border:1px solid #0000;padding:.3rem .55rem;font-weight:600;text-decoration:none}.plant-subnav a:hover{color:var(--fg);border-color:var(--line-strong)}.plant-subnav a[aria-current=page]{color:var(--fg);background:var(--bg-elevated);border-color:var(--line-strong)}.plant-subnav-select{display:none}@media (width<=720px){.plant-subnav-list{display:none}.plant-subnav-select{background:var(--bg-elevated);width:100%;color:var(--fg);border:1px solid var(--line-strong);border-radius:var(--radius-sm);margin:0 clamp(1rem,4vw,2rem) .5rem;padding:.55rem .7rem;font-size:.85rem;display:block}.plant-subnav{border-bottom:none;padding-inline:0}}.breadcrumb{max-width:1600px;color:var(--fg-faint);align-items:center;gap:.35rem;margin-inline:auto;padding:.9rem clamp(1rem,4vw,2rem) 0;font-size:.8rem;display:flex}.breadcrumb a{color:var(--fg-muted);text-decoration:none}.breadcrumb a:hover{color:var(--fg);text-decoration:underline}.breadcrumb .current{color:var(--fg);font-weight:600}.controlbar{z-index:20;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-block:1px solid var(--line);background:#141210eb;padding:.7rem clamp(1rem,4vw,2rem);position:sticky;top:0}.controlbar-inner{flex-wrap:wrap;align-items:center;gap:.9rem 1.6rem;max-width:1600px;margin-inline:auto;display:flex}.control-group{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.control-label{letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);margin-right:.15rem;font-size:.6875rem;font-weight:600}.preset-row{gap:.3rem;display:flex}.preset-row input{opacity:0;pointer-events:none;position:absolute}.preset-row label{border:1px solid var(--line-strong);border-radius:var(--radius-sm);min-width:2.6rem;height:2.1rem;color:var(--fg-muted);cursor:pointer;background:var(--bg-elevated);transition:background .12s var(--ease), color .12s var(--ease), border-color .12s var(--ease);justify-content:center;align-items:center;font-size:.82rem;display:flex}.preset-row input:checked+label{background:var(--accent);border-color:var(--accent);color:#0c1420;font-weight:650}.preset-row label:hover{border-color:var(--fg-faint)}.preset-row input:focus-visible+label{outline:2px solid var(--focus-ring);outline-offset:2px}.time-slider{appearance:none;cursor:pointer;background:0 0;width:clamp(9rem,16vw,13rem);height:1.8rem}.time-slider::-webkit-slider-runnable-track{background:var(--line-strong);border-radius:2px;height:4px}.time-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);border:2px solid var(--bg);width:16px;height:16px;box-shadow:0 0 0 1px var(--accent);border-radius:50%;margin-top:-6px}.time-slider::-moz-range-track{background:var(--line-strong);border-radius:2px;height:4px}.time-slider::-moz-range-thumb{background:var(--accent);border:2px solid var(--bg);border-radius:50%;width:14px;height:14px}.time-output{min-width:5.4rem;color:var(--fg);font-size:.85rem}.icon-btn{background:var(--bg-elevated);border:1px solid var(--line-strong);border-radius:var(--radius-sm);height:2.25rem;color:var(--fg);cursor:pointer;transition:background .12s var(--ease), border-color .12s var(--ease);align-items:center;gap:.45rem;padding:0 .8rem;font-size:.82rem;font-weight:600;display:inline-flex}.icon-btn:hover{border-color:var(--fg-faint)}.icon-btn[aria-pressed=true]{background:var(--c-speicher);border-color:var(--c-speicher);color:#04220f}.icon-btn svg{flex:none;width:1rem;height:1rem}.segmented{border:0;gap:.3rem;margin:0;padding:0;display:flex}.segmented input{opacity:0;pointer-events:none;position:absolute}.segmented label{border:1px solid var(--line-strong);border-radius:var(--radius-sm);height:2.25rem;color:var(--fg-muted);cursor:pointer;background:var(--bg-elevated);transition:background .12s var(--ease), color .12s var(--ease), border-color .12s var(--ease);align-items:center;gap:.35rem;padding:0 .7rem;font-size:.8rem;display:flex}.segmented label svg{width:.95rem;height:.95rem}.segmented input:checked+label{background:var(--fg);color:var(--bg-sunken);border-color:var(--fg);font-weight:650}.segmented input:focus-visible+label{outline:2px solid var(--focus-ring);outline-offset:2px}.segmented.speed label{justify-content:center;min-width:2.6rem;padding:0 .6rem}.controlbar-toggle{width:100%;max-width:1600px;color:var(--fg);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:.6rem;margin-inline:auto;padding:.3rem 0;font-size:.85rem;font-weight:600;display:flex}.controlbar-toggle:hover{color:var(--accent)}.controlbar-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.controlbar-toggle .chevron{color:var(--fg-faint);transition:transform .15s var(--ease);flex:none}.controlbar-toggle .chevron.is-open{transform:rotate(180deg)}.controlbar-note{max-width:1600px;color:var(--fg-faint);margin:.5rem auto 0;padding-inline:clamp(1rem,4vw,2rem);font-size:.74rem}.shell{flex-direction:column;gap:1.5rem;max-width:1600px;margin-inline:auto;padding:1.5rem clamp(1rem,4vw,2rem) 3rem;display:flex}.panel{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-lg);padding:clamp(1rem,2vw,1.4rem)}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem;display:flex}.panel-head h2{font-size:1.05rem}.panel-question{color:var(--fg-faint);max-width:32rem;font-size:.78rem}.link-card{color:inherit;border-radius:var(--radius);transition:background .12s var(--ease), border-color .12s var(--ease);text-decoration:none;display:block}.link-card:hover,.link-card:focus-visible{background:var(--bg-sunken)}.link-card .chevron{color:var(--fg-faint);flex:none;margin-left:auto}.main-grid{grid-template-columns:240px 1fr;align-items:start;gap:1.5rem;display:grid}.kpi-rail{flex-direction:column;gap:.85rem;display:flex}.kpi-card{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-lg);padding:.9rem 1rem}.kpi-card .eyebrow{margin-bottom:.35rem;display:block}.kpi-value-row{justify-content:space-between;align-items:flex-end;gap:.6rem;display:flex}.kpi-value{font-size:1.6rem;font-weight:650}.kpi-value .unit{color:var(--fg-muted);margin-left:.2rem;font-size:.8rem;font-weight:500}.kpi-sub{color:var(--fg-muted);margin-top:.3rem;font-size:.74rem}.kpi-ring{flex:none}.kpi-spark{width:100%;height:26px;margin-top:.5rem;display:block}.kpi-split{flex-direction:column;gap:.3rem;margin-top:.15rem;display:flex}.kpi-split-row{justify-content:space-between;align-items:center;font-size:.82rem;display:flex}.kpi-split-row .dot{border-radius:50%;width:.5rem;height:.5rem;margin-right:.4rem;display:inline-block}.flow-panel{min-width:0}.flow-canvas{grid-template-rows:repeat(3,auto);grid-template-columns:repeat(3,1fr);grid-template-areas:"pv.netz""batterie hub.""bhkw wp puffer";gap:1.75rem 1rem;min-height:22rem;padding:1.5rem clamp(.5rem,2vw,2.5rem);display:grid;position:relative}.flow-lines{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.flow-line{fill:none;stroke-linecap:round}.flow-line.is-active{stroke-dasharray:10 8;animation:1.1s linear infinite flow-move}.flow-line.is-inactive{stroke-dasharray:3 6;opacity:.55}@keyframes flow-move{to{stroke-dashoffset:-36px}}@media (prefers-reduced-motion:reduce){.flow-line.is-active{animation:none}}.node{z-index:1;text-align:center;flex-direction:column;align-items:center;gap:.5rem;display:flex;position:relative}.node-link{color:inherit;border-radius:var(--radius-lg);text-decoration:none}.node-link:hover .node-circle,.node-link:focus-visible .node-circle{border-color:var(--fg)}.node-pv{grid-area:pv}.node-netz{grid-area:netz}.node-hub{grid-area:hub}.node-bhkw{grid-area:bhkw}.node-wp{grid-area:wp}.node-puffer{grid-area:puffer}.node-batterie{grid-area:batterie}.node-circle{background:var(--bg-sunken);border:2px solid var(--ring-color,var(--line-strong));width:5.5rem;height:5.5rem;color:var(--ring-color,var(--fg-muted));border-radius:50%;justify-content:center;align-items:center;display:flex;box-shadow:0 0 0 6px #00000026}.node-hub .node-circle{background:var(--bg-recessed);width:7rem;height:7rem;box-shadow:0 0 22px -4px var(--ring-glow,transparent), 0 0 0 6px #0003}.node.is-off .node-circle{opacity:.6;border-style:dashed}.node-circle svg{width:2.1rem;height:2.1rem}.node-hub .node-circle svg{width:2.6rem;height:2.6rem}.node-label{color:var(--fg);background:var(--bg-elevated);border-radius:var(--radius-sm);padding:.05rem .35rem;font-size:.78rem;font-weight:650}.node-value{color:var(--fg-muted);background:var(--bg-elevated);border-radius:var(--radius-sm);padding:.05rem .35rem;font-size:.95rem}.node-value strong{color:var(--fg);font-weight:650}.node.is-off .node-value{color:var(--fg-faint)}.node-hub .node-label{font-size:.85rem}.node-hub .node-value{font-size:1.15rem}.flow-legend{border-top:1px solid var(--line);color:var(--fg-muted);flex-wrap:wrap;gap:.5rem 1.1rem;margin-top:1rem;padding-top:1rem;font-size:.74rem;display:flex}.flow-legend li{align-items:center;gap:.4rem;list-style:none;display:flex}.flow-legend ul{display:contents}.swatch{border-radius:2px;flex:none;width:.7rem;height:.7rem}.swatch.line{border-radius:999px;width:1.1rem;height:3px}.secondary-grid{grid-template-columns:1fr 1fr;align-items:start;gap:1.5rem;display:grid}.waerme-summary{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:1.25rem;margin-bottom:1rem;padding-bottom:1rem;display:flex}.stat-pill{align-items:center;gap:.6rem;display:flex}.stat-pill .icon-symbol{width:1.7rem;height:1.7rem;color:var(--c-waerme);flex:none}.stat-pill .icon-symbol.is-cool{color:var(--c-netz-bezug)}.stat-pill .text{flex-direction:column;gap:.1rem;display:flex}.stat-pill .eyebrow{font-size:.64rem}.stat-pill .value{font-size:1.15rem;font-weight:650}.puffer-gauge{align-items:center;gap:1rem;margin-bottom:1.1rem;display:flex}.puffer-tank{border:2px solid var(--line-strong);border-radius:var(--radius);background:var(--bg-sunken);flex:none;width:2.4rem;height:5.2rem;position:relative;overflow:hidden}.puffer-fill{background:linear-gradient(180deg, var(--c-waerme), var(--c-speicher));position:absolute;bottom:0;left:0;right:0}.puffer-text .value{font-size:1.3rem;font-weight:650}.puffer-text .sub{color:var(--fg-muted);font-size:.78rem}.hk-list{flex-direction:column;gap:.6rem;display:flex}.hk-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-sunken);grid-template-columns:1fr auto auto auto;align-items:center;gap:.5rem 1rem;padding:.6rem .75rem;display:grid}.hk-row.is-off{opacity:.68}.hk-name{font-size:.85rem;font-weight:600}.hk-temps{color:var(--fg-muted);text-align:right;font-size:.78rem}.hk-temps .vl{color:var(--c-waerme)}.hk-temps .rl{color:var(--c-netz-bezug)}.hk-power{text-align:right;min-width:4.2rem;font-size:.85rem}.hk-state{color:var(--fg-faint);text-align:right;font-size:.78rem}.pump-state{color:var(--fg-faint);grid-column:1/-1;align-items:center;gap:.35rem;font-size:.72rem;display:flex}.pump-state .dot{background:var(--fg-faint);border-radius:50%;width:.4rem;height:.4rem}.pump-state.is-on .dot{background:var(--c-speicher)}.pump-state.is-on{color:var(--fg-muted)}.consumer-bars{flex-direction:column;gap:.8rem;display:flex}.consumer-row{grid-template-columns:11rem 1fr 4rem;align-items:center;gap:.75rem;display:grid}.consumer-name{align-items:center;gap:.5rem;min-width:0;font-size:.85rem;line-height:1.2;display:flex}.consumer-name svg{width:1.1rem;height:1.1rem;color:var(--c-verbraucher);flex:none}.consumer-name-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.consumer-track{background:var(--bg-sunken);border-radius:999px;height:.6rem;overflow:hidden}.consumer-fill{background:var(--c-verbraucher);border-radius:999px;height:100%}.consumer-value{text-align:right;font-size:.85rem;font-weight:600}.consumer-total{border-top:1px solid var(--line);color:var(--fg-muted);justify-content:space-between;margin-top:.9rem;padding-top:.8rem;font-size:.85rem;display:flex}.consumer-total strong{color:var(--fg)}.area-tiles{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem;display:grid}.area-tile{color:inherit;background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1rem 1.1rem;text-decoration:none;display:block}.area-tile:hover,.area-tile:focus-visible{border-color:var(--line-strong);background:var(--bg-sunken)}.area-tile-head{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.7rem;display:flex}.area-tile-head h3{font-size:.95rem}.area-tile-head .chevron{color:var(--fg-faint)}.area-tile-values{flex-wrap:wrap;gap:.9rem 1.5rem;display:flex}.area-tile-value .eyebrow{margin-bottom:.2rem;display:block}.area-tile-value .value{font-size:1.1rem;font-weight:650}.plant-grid{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem;display:grid}.plant-card{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-lg);color:inherit;flex-direction:column;gap:.6rem;padding:1rem 1.1rem;text-decoration:none;display:flex}.plant-card:hover,.plant-card:focus-visible{border-color:var(--line-strong);background:var(--bg-sunken)}.plant-card-head{justify-content:space-between;align-items:flex-start;gap:.6rem;display:flex}.plant-card-name{font-size:.92rem;font-weight:650}.plant-card-category{color:var(--fg-faint);text-transform:uppercase;letter-spacing:.06em;font-size:.72rem}.plant-card-value{margin-top:auto;font-size:1.05rem;font-weight:650}.plant-card-value .unit{color:var(--fg-muted);margin-left:.2rem;font-size:.78rem;font-weight:500}.state-badge{align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;display:inline-flex}.state-badge .dot{border-radius:50%;flex:none;width:.5rem;height:.5rem}.state-badge.is-running{color:var(--state-running)}.state-badge.is-running .dot{background:var(--state-running)}.state-badge.is-off{color:var(--state-off)}.state-badge.is-off .dot{background:var(--state-off)}.state-badge.is-ready{color:var(--state-ready)}.state-badge.is-ready .dot{background:var(--state-ready)}.state-badge.is-fault{color:var(--state-fault)}.state-badge.is-fault .dot{background:var(--state-fault)}.plant-category-group{flex-direction:column;gap:.8rem;display:flex}.plant-category-heading{color:var(--fg-faint);text-transform:uppercase;letter-spacing:.08em;font-size:.78rem}.not-found-panel{border:1px dashed var(--line-strong);border-radius:var(--radius-lg);color:var(--fg-muted);flex-direction:column;align-items:flex-start;gap:.8rem;padding:clamp(2rem,6vw,4rem);display:flex}.not-found-panel a{color:var(--accent);font-weight:600;text-decoration:none}.not-found-panel a:hover{color:var(--accent-hover)}.charts-grid{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.charts-grid.single{grid-template-columns:1fr}.chart-svg{width:100%;height:auto;display:block}.chart-legend{color:var(--fg-muted);flex-wrap:wrap;gap:.4rem 1rem;margin-top:.6rem;font-size:.74rem;display:flex}.chart-legend li{align-items:center;gap:.35rem;list-style:none;display:flex}.chart-legend ul{display:contents}.demo-uplot{width:100%;color:var(--fg-muted)}.demo-uplot .u-legend{color:var(--fg-muted);text-align:left;margin-top:.4rem;font-size:.74rem}.demo-uplot .u-legend th{padding:2px 8px 2px 0;font-weight:600}.demo-uplot .u-series>*{padding:2px 8px 2px 0}.footnote{color:var(--fg-faint);text-align:center;padding-block:.5rem 1rem;font-size:.74rem}.notice-empty{color:var(--fg-faint);font-size:.85rem}.notice-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.notice-row{border-radius:var(--radius);border:1px solid var(--line);border-left:3px solid var(--line-strong);background:var(--bg-sunken);align-items:flex-start;gap:.7rem;padding:.7rem .8rem;display:flex}.notice-row.is-alarm{border-left-color:var(--c-alarm)}.notice-row.is-warning{border-left-color:var(--c-pv)}.notice-row.is-info{border-left-color:var(--accent)}.notice-icon{flex:none;margin-top:.1rem}.notice-row.is-alarm .notice-icon{color:var(--c-alarm)}.notice-row.is-warning .notice-icon{color:var(--c-pv)}.notice-row.is-info .notice-icon{color:var(--accent)}.notice-body{min-width:0}.notice-text{color:var(--fg);margin:0 0 .3rem;font-size:.85rem}.notice-meta{color:var(--fg-muted);margin:0;font-size:.74rem}.notice-meta a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.notice-meta a:hover{color:var(--fg)}.notice-status{color:var(--fg);font-weight:650}.stub-panel{border:1px dashed var(--line-strong);border-radius:var(--radius-lg);color:var(--fg-faint);flex-direction:column;align-items:flex-start;gap:.6rem;padding:clamp(2rem,6vw,4rem);display:flex}.stub-panel strong{color:var(--fg-muted)}.hz-scroll-hint{color:var(--fg-faint);align-items:center;gap:.4rem;padding:.4rem .2rem .7rem;font-size:.74rem;display:none}.hz-scroll-hint svg{flex:none;width:1rem;height:1rem}.hz-scroll-frame{-webkit-overflow-scrolling:touch;touch-action:pan-x pinch-zoom;border-radius:var(--radius);overflow:auto hidden}.hz-schema{width:100%;min-width:1180px;height:auto;display:block}.hz-component{cursor:pointer}.hz-component:focus-visible .hz-component-box{outline:2px solid var(--focus-ring);outline-offset:2px}.hz-component-box{fill:var(--bg-sunken);stroke:var(--line-strong);stroke-width:1.4px}.hz-component.is-off .hz-component-box{stroke-dasharray:4 4;opacity:.7}.hz-component-label{fill:var(--fg);font-size:12px;font-weight:650}.hz-component-sub{fill:var(--fg-muted);font-size:10.5px}.hz-component-sub.is-dim{fill:var(--fg-faint)}.hz-pipe{fill:none;stroke-linecap:round;stroke-linejoin:round}.hz-pipe.is-flowing{stroke-dasharray:26 6;animation:1s linear infinite flow-move-pipe}.hz-pipe.is-idle{stroke-dasharray:3 7;opacity:.4}@keyframes flow-move-pipe{to{stroke-dashoffset:-32px}}.hz-pipe-arrow{fill:currentColor}.hz-valve,.hz-sensor,.hz-meter{color:var(--fg-muted)}.hz-valve.is-open,.hz-sensor.is-active{color:var(--fg)}.hz-legend-toggle{border:1px solid var(--line-strong);border-radius:var(--radius-sm);color:var(--fg-muted);cursor:pointer;background:0 0;align-items:center;gap:.4rem;padding:.4rem .7rem;font-size:.78rem;display:inline-flex}.hz-legend-toggle:hover{border-color:var(--fg-faint);color:var(--fg)}.hz-legend-panel{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.5rem .9rem;margin-top:.8rem;padding-top:.8rem;display:grid}.hz-legend-panel[hidden]{display:none}.hz-legend-panel li{color:var(--fg-muted);align-items:center;gap:.5rem;font-size:.76rem;list-style:none;display:flex}.hz-legend-panel .icon-symbol{width:1.3rem;height:1.3rem;color:var(--fg-muted);flex:none}.hz-legend-panel .pipe-swatch{border-radius:999px;flex:none;width:1.2rem;height:3px}.hz-status-grid{grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.9rem;display:grid}.hz-status-item .eyebrow{margin-bottom:.25rem;display:block}.hz-status-item .value{font-size:1.05rem;font-weight:650}.hz-status-item .value.is-ok{color:var(--ok)}.hz-status-item .value.is-alarm{color:var(--c-alarm)}.hz-infobox{z-index:40;background:var(--bg-elevated);border:1px solid var(--line-strong);border-radius:var(--radius-lg);max-width:20rem;padding:.9rem 1rem;position:fixed;box-shadow:0 10px 30px -8px #0009}.hz-infobox[hidden]{display:none}.hz-infobox-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.5rem;display:flex}.hz-infobox-head h3{font-size:.95rem}.hz-infobox-close{color:var(--fg-faint);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;justify-content:center;align-items:center;width:1.6rem;height:1.6rem;display:flex}.hz-infobox-close:hover{color:var(--fg);background:var(--bg-sunken)}.hz-infobox dl{grid-template-columns:auto 1fr;gap:.25rem .75rem;margin:0 0 .6rem;font-size:.82rem;display:grid}.hz-infobox dt{color:var(--fg-faint)}.hz-infobox dd{color:var(--fg);text-align:right;margin:0}.hz-infobox a.detail-link{color:var(--accent);align-items:center;gap:.35rem;font-size:.8rem;font-weight:600;text-decoration:none;display:inline-flex}.hz-infobox a.detail-link:hover{color:var(--accent-hover)}.hz-infobox a.detail-link[hidden],.hz-mobile-list{display:none}.hz-mobile-list .hk-row{margin-bottom:.6rem}@media (width<=1100px){.main-grid{grid-template-columns:1fr}.kpi-rail{flex-flow:wrap}.kpi-card{flex:11rem}.secondary-grid,.charts-grid{grid-template-columns:1fr}.flow-canvas{grid-template-rows:repeat(5,auto);grid-template-columns:1fr 1fr;grid-template-areas:"pv netz""hub hub""batterie batterie""bhkw wp""puffer puffer";gap:1.6rem 1rem;padding:1.5rem .75rem}}@media (width<=1220px){.hz-scroll-hint{display:flex}}@media (width<=720px){.masthead{flex-direction:column;align-items:flex-start}.controlbar-inner{gap:.75rem 1rem}.consumer-row{grid-template-columns:1fr;row-gap:.3rem}.consumer-value{text-align:left}.hk-row{text-align:left;grid-template-columns:1fr}.hk-temps,.hk-power,.hk-state{text-align:left}.kpi-card{flex:100%}.preset-row label,.icon-btn,.segmented label{min-height:var(--tap)}.hz-mobile-list{display:block}}@media (width<=480px){.node-circle{width:4.2rem;height:4.2rem}.node-hub .node-circle{width:5rem;height:5rem}.node-circle svg{width:1.6rem;height:1.6rem}.node-hub .node-circle svg{width:2rem;height:2rem}.node-label{font-size:.72rem}.node-value{font-size:.8rem}.node-hub .node-value{font-size:1rem}.flow-canvas{gap:1.25rem .6rem;padding:1.25rem .5rem}}
