/* -- DIAGRAM WRAPPER ---------------------------------------------------------- */
.diag-wrap{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:.5rem;backdrop-filter:blur(8px);margin-bottom:.85rem;overflow:hidden}
.diag-wrap svg{display:block;width:100%;height:auto}
/* SVG node cards */
.nc{fill:var(--node-bg);stroke-width:2;filter:drop-shadow(0 2px 8px var(--shadow));
    transition:filter .6s ease, stroke .6s ease}
.nc-solar  {stroke:var(--solar)}
.nc-grid   {stroke:var(--grid-in)}
.nc-ev     {stroke:var(--ev)}
.nc-house  {stroke:var(--house);transition:filter .6s ease, stroke .6s ease}
.nc-bat    {stroke:var(--bat-chg);transition:filter .6s ease, stroke .6s ease}
.nc-bathub {stroke:var(--bat-chg);transition:filter .6s ease, stroke .6s ease}
/* glow when active — vloeiende overgang via transition op filter */
.nc-solar.glow   {filter:drop-shadow(0 0 10px var(--solar))    drop-shadow(0 2px 4px var(--shadow))}
.nc-grid.glow    {filter:drop-shadow(0 0 10px var(--grid-in))  drop-shadow(0 2px 4px var(--shadow))}
.nc-ev.glow      {filter:drop-shadow(0 0 10px var(--ev))       drop-shadow(0 2px 4px var(--shadow))}
.nc-house.glow   {filter:drop-shadow(0 0 14px var(--house))    drop-shadow(0 2px 4px var(--shadow))}
.nc-house.glow-lo{filter:drop-shadow(0 0 14px var(--house-lo)) drop-shadow(0 2px 4px var(--shadow))}
.nc-house.glow-hi{filter:drop-shadow(0 0 14px var(--house-hi)) drop-shadow(0 2px 4px var(--shadow))}
.nc-bat.glow     {filter:drop-shadow(0 0 12px var(--bat-chg))  drop-shadow(0 2px 4px var(--shadow))}
.nc-bat.glow-dis {filter:drop-shadow(0 0 12px var(--bat-dis))  drop-shadow(0 2px 4px var(--shadow))}
.nc-bathub.glow  {filter:drop-shadow(0 0 12px var(--bat-chg))  drop-shadow(0 2px 4px var(--shadow))}
.nc-bathub.glow-dis{filter:drop-shadow(0 0 12px var(--bat-dis)) drop-shadow(0 2px 4px var(--shadow))}
/* node text */
.nt-lbl{font-family:'Inter',sans-serif;font-size:12px;font-weight:600;fill:var(--txt2);text-anchor:middle}
.nt-val{font-family:'Roboto Mono',monospace;font-size:16px;font-weight:700;text-anchor:middle}
.nt-sub{font-family:'Inter',sans-serif;font-size:11px;fill:var(--txt2);text-anchor:middle}
.nt-ico{font-size:22px;text-anchor:middle;dominant-baseline:central}
/* flow base lines */
.fl-base{fill:none;stroke:var(--line-idle);stroke-width:2;stroke-linecap:round}
.fl-solid{fill:none;stroke-width:3;stroke-linecap:round;opacity:0;transition:opacity .5s,stroke .3s}
/* -- STALE NODE --------------------------------------------------------------- */
.nc-stale { stroke:#f59e0b !important; opacity:.55 }
/* -- KEYFRAMES ---------------------------------------------------------------- */
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
@keyframes bat-chg-pulse {
  0%,100%{ opacity:.72 }
  50%    { opacity:1   }
}
@keyframes bat-dis-pulse {
  0%,100%{ opacity:.72 }
  50%    { opacity:.18 }
}
