/* V26: Arial typography normalization */
.pm-section,.pm-section *{font-family:Arial,Helvetica,sans-serif}
.pm-flow-svg text{font-family:Arial,Helvetica,sans-serif!important}
/* DHA Solar · Project Monitor V24 — clean light UI */
.pm-section{padding:72px 0;background:linear-gradient(180deg,rgba(238,248,241,.7),rgba(251,250,244,.94));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pm-shell{background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:26px;padding:26px;box-shadow:0 18px 48px rgba(28,43,36,.065);backdrop-filter:blur(6px)}
.pm-head{display:flex;justify-content:space-between;gap:22px;align-items:flex-start;margin-bottom:20px}
.pm-title h2{margin:6px 0 8px;font-size:clamp(28px,3.2vw,46px);line-height:1.08}
.pm-title p{max-width:800px;color:var(--muted);font-size:15px;line-height:1.68}
.pm-status-wrap{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.pm-status,.pm-badge{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;padding:8px 12px;border-radius:999px;white-space:nowrap}
.pm-status{background:#E7F6ED;color:var(--green)}
.pm-badge{background:#FFF3DC;color:#8A5D00}
.pm-dot{width:8px;height:8px;border-radius:50%;background:#2FA968;animation:pmPulse 1.8s ease-in-out infinite}
@keyframes pmPulse{0%,100%{opacity:.55;transform:scale(.9)}50%{opacity:1;transform:scale(1.25)}}
.pm-update{font-variant-numeric:tabular-nums}
.pm-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}
.pm-kpi{background:#fff;border:1px solid var(--line);border-radius:17px;padding:16px;min-width:0;transition:transform .25s ease,box-shadow .25s ease}
.pm-kpi:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(28,43,36,.055)}
.pm-kpi-label{font-size:11.5px;color:var(--muted);font-weight:700;display:flex;align-items:center;gap:7px;line-height:1.35}
.pm-kpi-value{font-size:24px;font-weight:700;margin-top:9px;line-height:1.05;overflow-wrap:anywhere}
.pm-kpi-sub{font-size:10.5px;color:var(--muted);margin-top:6px;line-height:1.45}
.pm-kpi.pv .pm-kpi-value{color:var(--sun)}
.pm-kpi.load .pm-kpi-value{color:var(--ink)}
.pm-kpi.store .pm-kpi-value{color:var(--green)}
.pm-kpi.save .pm-kpi-value{color:#2FA968}
.pm-kpi.co2 .pm-kpi-value{color:#2E9BC0}
.pm-grid2{display:grid;grid-template-columns:1.35fr 1fr;gap:16px;margin-bottom:16px}
.pm-panel{background:#fff;border:1px solid var(--line);border-radius:19px;padding:20px;min-width:0}
.pm-panel h3{font-size:17px;margin:0 0 5px;line-height:1.3}
.pm-panel-sub{font-size:12px;color:var(--muted);line-height:1.55;margin-bottom:14px}
.pm-flow-panel{background:linear-gradient(180deg,#FBFEFC 0%,#F4FAF6 100%);border-color:#DCEAE1}
.pm-flow-wrap{display:flex;justify-content:center;overflow:hidden;border-radius:16px;background:radial-gradient(circle at 50% 46%,rgba(47,169,104,.08),transparent 42%)}
.pm-flow-svg{width:100%;max-width:650px;height:auto;display:block}
.pm-flow-line{stroke-width:3;fill:none;stroke-dasharray:7 12;stroke-linecap:round;opacity:.14;transition:opacity .35s ease}
.pm-flow-line.active{opacity:.92}
.pm-flow-line.flow-forward{animation:pmDash 1.25s linear infinite}
.pm-flow-line.flow-reverse{animation:pmDashRev 1.25s linear infinite}
@keyframes pmDash{to{stroke-dashoffset:-38}}
@keyframes pmDashRev{to{stroke-dashoffset:38}}
.pm-flow-particle{opacity:0;pointer-events:none}
.pm-flow-particle.active{opacity:1}
.pm-flow-particle.forward{animation:pmFloat 2.35s linear infinite}
.pm-flow-particle.reverse{animation:pmFloatReverse 2.35s linear infinite}
.pm-flow-particle.delay1{animation-delay:.72s}
.pm-flow-particle.delay2{animation-delay:1.44s}
@keyframes pmFloat{0%{transform:translate(var(--sx),var(--sy));opacity:0}15%{opacity:.95}82%{opacity:.95}100%{transform:translate(calc(var(--sx) + var(--tx)),calc(var(--sy) + var(--ty)));opacity:0}}
@keyframes pmFloatReverse{0%{transform:translate(calc(var(--sx) + var(--tx)),calc(var(--sy) + var(--ty)));opacity:0}15%{opacity:.95}82%{opacity:.95}100%{transform:translate(var(--sx),var(--sy));opacity:0}}
.pm-node-halo{fill:#fff;stroke:#E0EAE4;stroke-width:1.3}
.pm-node-ripple{fill:none;stroke:rgba(31,122,77,.11);stroke-width:1.4;transform-origin:center;animation:pmRipple 3.2s ease-in-out infinite}
.pm-node-ripple.delay{animation-delay:1.3s}
@keyframes pmRipple{0%,100%{transform:scale(1);opacity:.18}50%{transform:scale(1.07);opacity:.55}}
.pm-node-disc{fill:#fff}
.pm-node-ring{fill:none;stroke-width:3;stroke-linecap:round;stroke-dasharray:132;stroke-dashoffset:0}
.pm-node-core.active .pm-node-ring{animation:pmRing 5.5s linear infinite}
.pm-node-core.active{animation:pmNodeBreath 3.8s ease-in-out infinite}
.pm-node-core.inactive{opacity:.55}
@keyframes pmRing{to{stroke-dashoffset:-264}}
@keyframes pmNodeBreath{0%,100%{filter:drop-shadow(0 5px 10px rgba(28,43,36,.06));transform-box:fill-box;transform-origin:center;scale:1}50%{filter:drop-shadow(0 8px 16px rgba(31,122,77,.13));scale:1.02}}
.pm-node-accent-solar .pm-node-ring{stroke:#F5A623}
.pm-node-accent-grid .pm-node-ring{stroke:#2E9BC0}
.pm-node-accent-load .pm-node-ring,.pm-node-accent-battery .pm-node-ring{stroke:#1F7A4D}
.pm-node-icon{font-size:17px;font-weight:700;text-anchor:middle;dominant-baseline:middle}
.pm-node-label{font-size:12.5px;font-weight:700;fill:#1C2B24;text-anchor:middle}
.pm-node-value{font-size:17px;font-weight:700;fill:#1C2B24;text-anchor:middle}
.pm-node-sub{font-size:10.5px;fill:#68786F;text-anchor:middle}
.pm-node-accent-solar .pm-node-icon,.pm-node-accent-solar .pm-node-value{fill:#F5A623}
.pm-node-accent-grid .pm-node-icon,.pm-node-accent-grid .pm-node-value{fill:#2E9BC0}
.pm-node-accent-load .pm-node-icon,.pm-node-accent-load .pm-node-value,.pm-node-accent-battery .pm-node-icon,.pm-node-accent-battery .pm-node-value{fill:#1F7A4D}
.pm-donut-wrap{display:grid;grid-template-columns:160px 1fr;gap:18px;align-items:center}
.pm-donut{width:150px;height:150px;border-radius:50%;position:relative;margin:auto;background:conic-gradient(var(--green) 0 60%,#2FA968 60% 80%,var(--sun) 80% 100%);transition:background .5s ease}
.pm-donut:after{content:"";position:absolute;inset:23px;background:#fff;border-radius:50%}
.pm-donut-center{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none}
.pm-donut-center b{font-size:19px;line-height:1}
.pm-donut-center span{font-size:10px;color:var(--muted);margin-top:4px}
.pm-legend{display:flex;flex-direction:column;gap:10px;font-size:12px}
.pm-legend-row{display:flex;gap:8px;align-items:center}
.pm-legend-row b{margin-left:auto}
.pm-swatch{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.pm-rate{display:flex;justify-content:space-between;gap:10px;align-items:center;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-top:5px}
.pm-rate b{color:var(--green)}
.pm-chart{width:100%;height:auto;display:block;min-height:190px}
.pm-row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pm-save-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pm-save-card{background:var(--soft);border:1px solid var(--line);border-radius:13px;padding:13px;text-align:center}
.pm-save-card b{display:block;font-size:17px;color:var(--green);line-height:1.25}
.pm-save-card span{display:block;font-size:10.5px;color:var(--muted);margin-top:4px}
.pm-alert{display:flex;gap:10px;align-items:flex-start;padding:11px 0;border-top:1px solid var(--line)}
.pm-alert:first-of-type{border-top:0}
.pm-alert-icon{width:31px;height:31px;display:grid;place-items:center;border-radius:9px;flex:0 0 auto;background:#E7F6ED;color:var(--green);font-weight:700}
.pm-alert-icon.info{background:#E4F3F8;color:#2E9BC0}
.pm-progress{margin-top:12px;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.pm-progress-head{display:flex;justify-content:space-between;gap:10px;font-size:12px}
.pm-progress-head b{color:var(--green)}
.pm-progress-track{height:8px;background:#E6EFE9;border-radius:999px;margin-top:8px;overflow:hidden}
.pm-progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--green),#2FA968);border-radius:inherit;transition:width .8s ease}
@media(max-width:1050px){.pm-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.pm-grid2,.pm-row2{grid-template-columns:1fr}}
@media(max-width:720px){.pm-section{padding:48px 0}.pm-shell{padding:16px;border-radius:20px}.pm-head{flex-direction:column}.pm-status-wrap{justify-content:flex-start}.pm-kpis{grid-template-columns:1fr 1fr;gap:9px}.pm-kpi{padding:13px}.pm-kpi-value{font-size:20px}.pm-donut-wrap{grid-template-columns:1fr}.pm-save-grid{grid-template-columns:1fr}.pm-panel{padding:15px}.pm-flow-svg{min-width:540px;transform:scale(.78);transform-origin:center top;margin-bottom:-64px}}
@media(max-width:430px){.pm-kpis{grid-template-columns:1fr}.pm-flow-svg{min-width:530px;transform:scale(.68);margin-bottom:-95px}.pm-title h2{font-size:28px}}


/* TYPOGRAPHY V27 */
.pm-section,.pm-section *,.pm-flow-svg text{font-family:Arial,Helvetica,"Nimbus Sans L",sans-serif!important}
.pm-title h2,.pm-panel h3,.pm-kpi-value,.pm-node-value,.pm-node-label,.pm-save-card b{font-weight:700!important;letter-spacing:0!important}
.pm-kpi-label,.pm-status,.pm-badge,.pm-node-card-title{font-weight:600!important;letter-spacing:0!important}


/* ===== V28 — Demo-inspired real-time monitor interface ===== */
.pm-flow-panel{background:#fff!important;border-color:var(--line)!important}
.pm-flow-wrap{background:linear-gradient(180deg,#FBFDFC,#F5FAF6)!important;border:1px solid #E4EDE6;border-radius:18px;padding:8px}
.pm-flow-line{stroke-width:3!important;stroke-dasharray:4 9!important;stroke-linecap:round;opacity:.16;transition:opacity .3s ease}
.pm-flow-line.active{opacity:1}
.pm-flow-line.flow-forward{animation:pmDash 1s linear infinite!important}
.pm-flow-line.flow-reverse{animation:pmDashRev 1s linear infinite!important}
.pm-flow-node{transition:opacity .3s ease,filter .3s ease}
.pm-flow-node.inactive{opacity:1;filter:none}
.pm-flow-node.inactive>.pm-flow-node-box{opacity:1;fill:#fff}
.pm-flow-node.inactive>:not(.pm-flow-node-box){opacity:.58}
.pm-flow-node.active{opacity:1;filter:drop-shadow(0 9px 16px rgba(28,43,36,.10))}
.pm-flow-node-box{fill:#fff;stroke:#E4EDE6;stroke-width:1.2}
.pm-flow-node-box.load{fill:#12603B;stroke:#12603B}
.pm-flow-title{font:700 12px Arial,Helvetica,sans-serif;fill:#1C2B24}
.pm-flow-title.light{fill:#fff}
.pm-flow-value{font:700 15px Arial,Helvetica,sans-serif;fill:#1C2B24}
.pm-flow-value.solar{fill:#F5A623}.pm-flow-value.grid{fill:#2E9BC0}.pm-flow-value.storage{fill:#1F7A4D}.pm-flow-value.light{fill:#fff}
.pm-flow-sub{font:400 10.5px Arial,Helvetica,sans-serif;fill:#5A6B62}
.pm-flow-card-copy{box-sizing:border-box;width:100%;height:100%;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0;padding:4px 7px;font-family:Arial,Helvetica,sans-serif;color:#1C2B24;line-height:1.12}
.pm-flow-card-copy.light{color:#fff}.pm-flow-card-label{display:block;width:100%;max-width:100%;font-size:10.8px;font-weight:700;line-height:1.18;white-space:normal;overflow-wrap:normal;word-break:normal}.pm-flow-card-value{display:block;max-width:100%;margin-top:6px;font-size:14.5px;font-weight:700;line-height:1;white-space:nowrap}.pm-flow-card-value.solar{color:#F5A623}.pm-flow-card-value.grid{color:#2E9BC0}.pm-flow-card-value.storage{color:#1F7A4D}.pm-flow-card-copy.light .pm-flow-card-value{color:#fff}
.pm-flow-particle circle{filter:drop-shadow(0 0 4px currentColor)}
@media(max-width:720px){.pm-flow-svg{min-width:620px;transform:scale(.78);transform-origin:center top;margin-bottom:-66px}}
@media(max-width:430px){.pm-flow-svg{min-width:610px;transform:scale(.68);margin-bottom:-98px}}

/* V29 box alignment */
.pm-flow-sub{display:none!important}.pm-flow-node-box{vector-effect:non-scaling-stroke}.pm-flow-title,.pm-flow-value{dominant-baseline:middle}
