:root{--primary:#55b949;--primary-dark:#35952e;--ink:#25332f;--muted:#6c7975;--bg:#f3f7f5;--card:#fff;--border:#dfe8e4;--orange:#f5a623;--cyan:#00a6c8;--battery:#7cb342;--rose:#efaaaa;--petrol:#087f94;--shadow:0 18px 50px rgba(31,67,56,.09)}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;line-height:1.5}
a{color:var(--primary-dark);text-decoration:none}
button,input{font:inherit}
.topbar{height:76px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 clamp(20px,4vw,64px);gap:36px;position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:11px;color:var(--ink);font-weight:760;letter-spacing:-.02em;white-space:nowrap}
.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:white}
.brand-mark img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.plant-switcher{position:relative}
.brand-switcher{border:0;background:transparent;padding:0;cursor:pointer}
.brand-copy{display:grid;line-height:1.15;text-align:left}
.brand-copy small{font-size:11px;font-weight:600;color:var(--muted);max-width:180px;overflow:hidden;text-overflow:ellipsis}
.switcher-chevron{color:var(--muted);font-size:18px;transition:transform .2s ease}
.brand-switcher[aria-expanded="true"] .switcher-chevron{transform:rotate(180deg)}
.plant-switcher-menu{position:absolute;left:0;top:calc(100% + 12px);width:320px;padding:12px;background:white;border:1px solid var(--border);border-radius:16px;box-shadow:0 18px 50px rgba(31,67,56,.18);z-index:60}
.plant-switcher-menu[hidden]{display:none}
.plant-switcher-menu>strong{display:block;padding:5px 8px 9px;font-size:13px}
.plant-switcher-menu form,.plant-actions form{display:block;margin:0}
.plant-choice{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;background:transparent;border-radius:11px;padding:10px 9px;text-align:left;color:var(--ink);cursor:pointer}
.plant-choice:hover,.plant-choice:focus-visible,.plant-choice.active{background:#edf8eb}
.plant-choice span{display:grid;min-width:0}
.plant-choice b{overflow:hidden;text-overflow:ellipsis}
.plant-choice small{color:var(--muted);font-weight:400}
.plant-choice i{font-style:normal;color:var(--primary-dark);font-weight:800}
.manage-plants-link{display:block;border-top:1px solid var(--border);margin-top:7px;padding:11px 9px 4px;font-size:13px;font-weight:700}
.nav{display:flex;align-self:stretch;gap:6px}
.nav a{display:grid;place-items:center;padding:0 15px;color:var(--muted);position:relative}
.nav form{display:flex;margin:0;gap:0}
.nav button{border:0;background:transparent;padding:0 15px;color:var(--muted);cursor:pointer}
.nav button:hover,.nav button:focus-visible{color:var(--ink)}
.nav a.active{color:var(--ink);font-weight:650}
.nav a.active:after{content:"";height:3px;background:var(--primary);border-radius:9px;position:absolute;left:14px;right:14px;bottom:0}
.user-chip{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px}
.user-chip:hover,.user-chip:focus-visible,.user-chip.active{color:var(--ink)}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e8f6e6;color:var(--primary-dark);font-weight:800}
.avatar img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit}
.avatar-large{width:82px;height:82px;font-size:26px;flex:0 0 auto}
.avatar-upload-preview{display:flex;align-items:center;gap:18px;margin:20px 0 4px}
.avatar-upload-preview p{margin:0;color:var(--muted)}
.profile-image-actions{display:flex;gap:10px;flex-wrap:wrap}
.plant-image-editor{display:flex;align-items:center;gap:18px;margin:20px 0 4px}
.plant-image-editor p{margin:0;color:var(--muted)}
.plant-image-preview{width:92px;height:72px;border-radius:16px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:white;font-size:28px;font-weight:800;flex:0 0 auto}
.plant-image-preview img{width:100%;height:100%;object-fit:cover}
.menu-button{display:none;margin-left:auto;border:0;background:#eef5f1;border-radius:10px;width:40px;height:40px}
.shell{max-width:1240px;margin:auto;padding:42px 28px 80px}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px}
.page-head h1{font-size:clamp(30px,4vw,46px);letter-spacing:-.045em;margin:4px 0}
.page-head p{color:var(--muted);margin:0}
.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:12px;color:var(--primary-dark);font-weight:800}
.online-badge{display:flex;align-items:center;gap:9px;padding:10px 14px;background:white;border:1px solid var(--border);border-radius:999px;font-weight:650}
.online-badge i,.online-dot{width:9px;height:9px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px #55b94920;display:inline-block}
.online-badge.offline i{background:#dc6a62;box-shadow:0 0 0 4px #dc6a6220}
.live-card,.chart-card,.status-card,.settings-card{background:var(--card);border:1px solid var(--border);border-radius:24px;box-shadow:var(--shadow)}
.live-card{padding:28px}
.section-title{display:flex;justify-content:space-between;align-items:start}
.section-title h2,.status-card h2,.settings-card h2,.chart-card h2{margin:0;font-size:20px;letter-spacing:-.02em}
.section-title p,.status-card p{margin:4px 0;color:var(--muted);font-size:14px}
.icon-button{border:1px solid var(--border);background:white;border-radius:10px;width:40px;height:40px;font-size:21px;color:var(--primary-dark);cursor:pointer}
.energy-flow{width:min(700px,100%);height:520px;margin:0 auto;display:grid;grid-template:1fr 1.1fr 1fr/1fr 1.2fr 1fr;position:relative}
.node{z-index:2;align-self:center;justify-self:center;text-align:center;display:flex;flex-direction:column;align-items:center}
.node.pv{grid-area:1/1}
.node.grid{grid-area:1/3}
.node.battery{grid-area:3/1}
.node.house{grid-area:3/3}
.node span{font-size:14px;color:var(--muted);margin-top:7px}
.node strong{font-size:21px;letter-spacing:-.03em}
.node small{color:var(--muted)}
.node-icon,.battery-icon{width:64px;height:64px;border:2px solid var(--primary);border-radius:18px;background:#fafff9;display:grid;place-items:center;font-size:31px}
.pv .node-icon{color:var(--orange)}
.house .node-icon{color:#8f625f;font-size:39px}
.grid-icon{font-size:39px;color:var(--petrol)}
.node-svg{display:block;width:44px;height:44px;overflow:visible}
.icon-sun{width:46px;height:46px}
.icon-tower{width:48px;height:48px}
.icon-house{width:45px;height:45px}
.battery-icon{position:relative;overflow:hidden;padding:7px}
.battery-icon:after{content:"";position:absolute;right:-5px;width:5px;height:20px;background:var(--primary);border-radius:0 3px 3px 0}
.battery-icon:before{content:"";position:absolute;inset:10px;border:2px solid #53625d;border-radius:6px;z-index:2}
.battery-icon span{position:absolute;left:12px;right:12px;top:12px;bottom:12px;background:#b8dc8b;margin:0;transform:scaleY(var(--battery-level,0));transform-origin:bottom;transition:transform .45s ease}
.autarky{grid-area:2/2;align-self:center;justify-self:center;width:150px;height:150px;border-radius:50%;border:12px solid #e2f0e6;box-shadow:inset 0 0 0 7px var(--primary-dark),0 12px 32px #18332b18;display:grid;place-content:center;text-align:center;z-index:3;background:white}
.autarky strong{font-size:31px;line-height:1}
.autarky span{font-size:13px;color:var(--muted);margin-top:6px}
.flow-line{position:absolute;z-index:1;border-color:#b7c4bf}
.flow-line:after{content:"";position:absolute;width:8px;height:8px;border-top:2px solid var(--primary);border-right:2px solid var(--primary);transform:rotate(45deg)}
.flow-line i{position:absolute;width:10px;height:10px;background:var(--primary);border-radius:50%;animation:flow 2.8s linear infinite}
.pv-center{left:19%;top:24%;width:25%;height:24%;border-bottom:2px solid #b7c4bf;border-right:2px solid #b7c4bf;border-radius:0 0 22px}
.pv-center:after{right:-5px;bottom:-5px}
.center-grid{right:19%;top:24%;width:25%;height:24%;border-bottom:2px solid #b7c4bf;border-left:2px solid #b7c4bf;border-radius:0 0 0 22px}
.center-grid:after{right:-5px;bottom:-5px}
.center-battery{left:19%;bottom:24%;width:25%;height:24%;border-top:2px solid #b7c4bf;border-right:2px solid #b7c4bf;border-radius:0 22px 0 0}
.center-battery:after{left:-5px;top:-5px;transform:rotate(225deg)}
.center-house{right:19%;bottom:24%;width:25%;height:24%;border-top:2px solid #b7c4bf;border-left:2px solid #b7c4bf;border-radius:22px 0 0}
.center-house:after{right:-5px;top:-5px}
.flow-line i{left:45%;bottom:-6px}
.center-battery i,.center-house i{top:-6px}
.energy-flow[data-grid="import"] .center-grid:after{transform:rotate(225deg);left:-5px;right:auto}
.energy-flow[data-battery="charging"] .center-battery:after{transform:rotate(225deg)}
@keyframes flow{0%{opacity:0;transform:translateX(-30px)}
50%{opacity:1}
100%{opacity:0;transform:translateX(35px)}
}
@media(prefers-reduced-motion:reduce){.flow-line i{animation:none}
}
.flow-map{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:visible}
.flow-track,.flow-active{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.flow-track{stroke:#d7e1dd;stroke-width:3}
.flow-active{stroke:var(--flow-color);stroke-width:4;stroke-dasharray:3 13;animation:flow-dash var(--flow-speed,1.4s) linear infinite}
.pv-flow{--flow-color:#e6a400}
.grid-flow{--flow-color:#087f94}
.battery-flow{--flow-color:#7cb342}
.house-flow{--flow-color:#8f625f}
.flow-group.reverse .flow-active{animation-direction:reverse}
.flow-group.inactive .flow-active{display:none}
.energy-flow.stale .flow-active{animation-play-state:paused;opacity:.35}
@keyframes flow-dash{to{stroke-dashoffset:-32}}
@media(prefers-reduced-motion:reduce){.flow-active{animation:none}}
.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:18px 0}
.metric-grid article,.summary-grid article{background:white;border:1px solid var(--border);border-radius:18px;padding:20px;position:relative;overflow:hidden}
.soc-metric canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.soc-metric .metric-content{position:relative;z-index:1}
.metric-grid article:before,.summary-grid article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--primary)}
.metric-grid span,.summary-grid span{display:block;color:var(--muted);font-size:14px}
.metric-grid strong,.summary-grid strong{display:block;font-size:25px;margin:5px 0}
.metric-grid small{color:var(--muted)}
.status-card{padding:24px 28px;display:flex;justify-content:space-between;align-items:center}
.status-list{display:flex;gap:12px}
.status-list span{padding:11px 14px;border:1px solid var(--border);border-radius:12px;color:var(--muted)}
.status-list span:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#aaa;margin-right:8px}
.status-list span.ok:before{background:var(--primary)}
.status-list b{color:var(--ink);margin-left:4px}
.auth-shell{min-height:100vh;display:grid;place-items:center;padding:30px;background:radial-gradient(circle at 15% 15%,#dff2dc,transparent 30%),radial-gradient(circle at 90% 80%,#d8eef0,transparent 32%),#f5f8f6}
.auth-card{width:min(960px,100%);min-height:600px;background:white;border:1px solid var(--border);border-radius:30px;box-shadow:0 30px 90px #26453b1a;display:grid;grid-template-columns:.92fr 1.08fr;overflow:hidden}
.auth-card.compact{display:block;width:min(680px,100%);min-height:0}
.auth-visual{background:linear-gradient(150deg,#173b32,#2e6554);color:white;padding:52px;display:flex;flex-direction:column;justify-content:space-between}
.auth-visual p{font-size:31px;line-height:1.15;letter-spacing:-.04em}
.sun-orbit{width:180px;height:180px;border:1px solid #ffffff40;border-radius:50%;display:grid;place-items:center;position:relative}
.sun-orbit:after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:#9adc89;top:12px;right:27px}
.sun-orbit span{font-size:66px;color:#ffd86b}
.auth-form{padding:clamp(30px,6vw,64px)}
.auth-form h1{font-size:38px;letter-spacing:-.045em;margin:5px 0}
.muted{color:var(--muted)}
form{display:grid;gap:16px;margin-top:24px}
label{display:grid;gap:7px;font-weight:650;font-size:14px}
input{width:100%;border:1px solid #cfd9d5;background:#fbfdfc;border-radius:12px;padding:13px 14px;color:var(--ink);outline:none}
input:focus{border-color:var(--primary);box-shadow:0 0 0 4px #55b94920}
.button{border:0;border-radius:12px;padding:13px 18px;font-weight:750;cursor:pointer;display:inline-flex;justify-content:center;align-items:center}
.primary{background:var(--primary-dark);color:white}
.secondary{background:white;color:var(--ink);border:1px solid var(--border)}
.danger{background:#fff1f0;color:#b64038;border:1px solid #f0cbc7}
.form-links{display:flex;justify-content:space-between;margin-top:20px;font-size:14px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.check{display:flex;grid-template-columns:auto 1fr;align-items:start}
.check input{width:auto;margin-top:5px}
.optional,.hint{font-weight:400;color:var(--muted);font-size:12px}
.alert{padding:13px 16px;border-radius:12px;margin:18px 0}
.alert.error{background:#fff0ef;color:#9b352f;border:1px solid #f2cecb}
.alert.success{background:#eef9ec;color:#2c7427;border:1px solid #cce8c8}
.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.settings-card{padding:28px}
.settings-card form{margin-top:20px}
.step-icon{width:42px;height:42px;border-radius:12px;background:#e8f6e6;color:var(--primary-dark);font-weight:800;display:grid;place-items:center;margin-bottom:20px}
.button-row{display:flex;gap:10px;justify-content:flex-end}
.plant-status dl{margin:20px 0}
.plant-list{display:grid;gap:12px;margin-top:20px}
.plant-list-item{border:1px solid var(--border);border-radius:15px;padding:16px;background:#fbfdfc}
.plant-list-item.active{border-color:#94cf8d;background:#f4fbf2;box-shadow:inset 4px 0 0 var(--primary)}
.plant-list-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.plant-list-head>div{display:grid}
.plant-list-identity{display:flex!important;grid-template-columns:none!important;align-items:center;gap:11px;min-width:0}
.plant-list-identity>span:last-child{display:grid;min-width:0}
.plant-list-image{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:white;font-weight:800;flex:0 0 auto}
.plant-list-image img{width:100%;height:100%;object-fit:cover}
.plant-list-head small,.plant-list-item p{color:var(--muted);font-size:12px}
.plant-list-item p{margin:9px 0 13px}
.active-plant-badge{padding:4px 8px;border-radius:999px;background:#dff2dc;color:var(--primary-dark);font-size:11px;font-weight:800}
.plant-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.plant-actions .button{padding:8px 11px;font-size:12px}
.hager-multi-form{margin:0}
.hager-installation-option{cursor:pointer;position:relative;display:grid;gap:10px;transition:border-color .18s ease,box-shadow .18s ease}
.hager-installation-option:has(input:checked){border-color:var(--primary);box-shadow:0 0 0 3px #55b94920,var(--shadow)}
.hager-installation-option.disabled{cursor:not-allowed;opacity:.62}
.hager-installation-heading{display:flex;align-items:center;justify-content:space-between}
.hager-installation-heading input{width:22px;height:22px;margin:0;accent-color:var(--primary-dark)}
.hager-installation-heading .step-icon{margin:0}
.hager-installation-name{font-size:18px}
.hager-selection-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.plant-status dl div{display:flex;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid var(--border)}
dt{color:var(--muted)}
dd{margin:0;font-weight:650}
.empty-mini,.connection-result{text-align:center;padding:45px 20px;color:var(--muted)}
.empty-mini span{font-size:50px}
.danger-zone{grid-column:1/-1;border-color:#f0d3d0}
.range-tabs{display:flex;background:#e9efec;padding:4px;border-radius:13px}
.range-tabs button{border:0;background:transparent;padding:9px 15px;border-radius:10px;color:var(--muted);cursor:pointer}
.range-tabs button.active{background:white;color:var(--ink);box-shadow:0 4px 12px #18332b12}
.date-picker{display:flex;justify-content:center;align-items:center;gap:10px;margin:20px auto 26px}
.date-picker input{width:170px}
.date-picker button{width:42px;height:42px;border:1px solid var(--border);border-radius:11px;background:white}
.chart-card{padding:26px;margin-bottom:20px}
.chart-wrap{height:340px;margin-top:18px}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:18px}
.summary-grid article:before{top:auto;right:0;width:auto;height:4px;background:var(--accent)}
.summary-grid strong{font-size:18px}
.donut-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.donut-grid article{background:white;border:1px solid var(--border);border-radius:24px;padding:24px;text-align:center}
.donut-grid canvas{max-height:220px;margin:20px auto}
.calculation-note{text-align:center;color:var(--muted);font-size:13px}
.empty-state{text-align:center;background:white;border:1px solid var(--border);border-radius:24px;padding:70px 20px}
.empty-state span{font-size:48px;color:var(--primary)}
.bottom-nav{display:none}

@media(max-width:850px){.topbar{height:66px;padding:0 18px}
.menu-button{display:block}
.nav{display:none;position:absolute;top:66px;left:12px;right:12px;height:auto;background:white;border:1px solid var(--border);border-radius:14px;padding:8px;box-shadow:var(--shadow)}
.nav.open{display:grid}
.nav a,.nav button{padding:12px}
.nav form{display:grid}
.nav a.active:after{display:none}
.user-chip{margin-left:0}
.user-chip>span:last-child{display:none}
.shell{padding:26px 16px 88px}
.metric-grid{grid-template-columns:repeat(2,1fr)}
.status-card,.page-head{align-items:flex-start}
.status-list{flex-direction:column}
.settings-grid{grid-template-columns:1fr}
.danger-zone{grid-column:auto}
.summary-grid{grid-template-columns:repeat(2,1fr)}
.bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;bottom:0;left:0;right:0;background:#ffffffed;backdrop-filter:blur(16px);border-top:1px solid var(--border);z-index:30}
.bottom-nav a{text-align:center;padding:14px 5px;color:var(--muted);font-size:13px}
.bottom-nav form{display:grid;margin:0}
.bottom-nav button{border:0;background:transparent;color:var(--muted);font-size:13px;padding:14px 5px;cursor:pointer}
.energy-flow{height:480px}
.plant-switcher-menu{top:calc(100% + 8px)}
.auth-card{grid-template-columns:1fr}
.auth-visual{display:none}
}

.live-connection-message{margin-top:6px;color:#b42318;font-size:13px;font-weight:700}
.settings-card hr{border:0;border-top:1px solid var(--border);margin:22px 0}

@media(max-width:560px){.page-head{display:grid}
.brand-copy>span{display:none}
.brand-copy small{max-width:145px;font-size:12px}
.plant-switcher-menu{width:min(320px,calc(100vw - 32px))}
.history-head .range-tabs{width:100%;justify-content:space-between}
.range-tabs button{padding:8px 10px}
.live-card{padding:20px 12px}
.energy-flow{height:470px;grid-template:1fr 1fr 1fr/1fr 1fr 1fr}
.autarky{width:126px;height:126px;border-width:9px}
.node-icon,.battery-icon{width:54px;height:54px}
.metric-grid{gap:10px}
.metric-grid article{padding:16px}
.metric-grid strong{font-size:20px}
.status-card{display:block}
.status-list{margin-top:15px}
.auth-shell{padding:12px}
.auth-card{border-radius:20px}
.auth-form{padding:28px 22px}
.form-grid{grid-template-columns:1fr}
.form-links{display:grid;gap:10px}
.button-row{display:grid}
.hager-selection-actions{display:grid}
.donut-grid{grid-template-columns:1fr}
}


