.hse{display: flex;flex-direction: column;gap: 20px}.hse-controls{display: flex;flex-wrap: wrap;align-items: center;gap: 12px 16px;justify-content: space-between}.hse-seg{display: inline-flex;gap: 8px;border-radius: 14px;padding: 4px;background: var(--surface2);border: 1px solid var(--border)}.hse-seg-btn{border: 1.5px solid transparent;background: transparent;color: var(--ink);padding: 12px 20px;min-height: 56px;border-radius: 11px;font-size: 1.0625rem;line-height: 1.5;font-weight: 700;font-family: inherit;cursor: pointer}.hse-seg-btn[aria-pressed="true"]{background: var(--gold);color: var(--gold-ink);border-color: var(--gold)}.hse-seg-btn:not([aria-pressed="true"]):hover{background: var(--surface)}.hse-outage-btn{display: inline-flex;align-items: center;gap: 8px;border: 1.5px solid var(--boundary);background: var(--surface2);color: var(--ink);padding: 12px 18px;min-height: 56px;border-radius: 12px;font-size: 1rem;font-weight: 700;font-family: inherit;cursor: pointer}.hse-outage-btn[aria-pressed="true"]{border-color: var(--danger);background: var(--danger);color: #fff;}.hse-outage-btn .hse-ico{width: 20px;height: 20px;flex: none}.hse-stage{max-width: 900px;margin-inline: auto;width: 100%}.hse-svg{display: block;width: 100%;height: auto;overflow: visible;}@media (max-width: 879px){.hse-stage{overflow-x: auto;-webkit-overflow-scrolling: touch}.hse-svg{width: 720px;min-width: 720px}}.hse-cap{margin: 0;min-height: calc(1.8em * 2);padding: 14px 18px;border-radius: 12px;background: var(--surface2);border: 1px solid var(--border);font-size: 1rem;line-height: 1.8;color: var(--ink)}.hse-cap .hse-cap-t{display: block;font-weight: 700;margin-bottom: 2px}.hse-scene{transition: opacity var(--dur-enter-lg, 600ms) var(--ease-entrance, ease-out), transform var(--dur-enter-lg, 600ms) var(--ease-entrance, ease-out);transform-origin: center}.hse[data-mode="before"] .hse-scene--after, .hse[data-mode="after"] .hse-scene--before{opacity: 0;transform: translateY(10px);pointer-events: none}.hse[data-mode="before"] .hse-scene--before, .hse[data-mode="after"] .hse-scene--after{opacity: 1;transform: translateY(0)}.hse[data-mode="after"] .hse-scene--before{transform: translateY(-10px)}.hse[data-mode="before"] .hse-scene--after{transform: translateY(-10px)}.hse-n-grid{color: var(--primary)}.hse-n-gen{color: var(--boundary)}.hse-n-panel{color: var(--gold)}.hse-n-inverter{color: var(--secondary)}.hse-n-battery{color: var(--secondary)}.hse-n-board{color: var(--secondary)}.hse-n-house{color: var(--ink)}.hse-n-bad{color: var(--danger)}.hse-ico{width: 100%;height: 100%;fill: none;stroke: currentColor;stroke-width: 1.8;stroke-linecap: round;stroke-linejoin: round}.hse-ico-fill{fill: currentColor;stroke: none}.hse-hit{fill: none;stroke: transparent;stroke-width: 40;cursor: pointer}.hse-hot circle.hse-hit, .hse-hot rect.hse-hit{fill: transparent;stroke: none}.hse-hot{cursor: pointer}.hse-hot .hse-mark{transition: stroke var(--dur-hover, 160ms) ease, filter var(--dur-hover, 160ms) ease, opacity var(--dur-hover, 160ms) ease}@media (hover: hover){.hse-hot:hover .hse-mark{filter: drop-shadow(0 0 3px currentColor)}}.hse-hot:focus-visible{outline: none;}.hse-hot:focus-visible .hse-mark{filter: drop-shadow(0 0 0 transparent);outline: 3px solid var(--gold);outline-offset: 2px}.hse-hot.is-active .hse-mark{filter: drop-shadow(0 0 4px currentColor);stroke-width: 3.2}.hse[data-outage="1"] .hse-scene--before .hse-cable-grid, .hse[data-outage="1"] .hse-scene--before .hse-cable-gen{opacity: .18}.hse[data-outage="1"] .hse-scene--before .hse-loads{color: var(--boundary)}.hse[data-outage="1"] .hse-scene--after .hse-cable-grid{opacity: .18}.hse[data-outage="1"] .hse-scene--after .hse-flow-battery .hse-flow-dot{opacity: .9}.hse-cable-grid, .hse-cable-gen{transition: opacity var(--dur-state, 200ms) ease}html[dir="ltr"] .hse-svg{transform: scaleX(-1)}.hse-flow-dot{opacity: .55;animation: hse-flow var(--loop-spark, 2.8s) var(--ease-loop, linear) infinite;animation-play-state: var(--ambient-play, running)}@keyframes hse-flow{0%{opacity: .55}50%{opacity: .9}100%{opacity: .55}}.hse:not(.is-onscreen) .hse-flow-dot{animation-play-state: paused}.hse-scene--before .hse-flow-dot{display: none}@media (prefers-reduced-motion: reduce){.hse-flow-dot{animation: none;opacity: .7}}:root[data-power="save"] .hse-flow-dot{animation: none;opacity: .7}