:root{
  --bg:#07101d;
  --bg2:#0b1728;
  --panel:#101c2e;
  --panel2:#14233a;
  --border:#233955;
  --text:#eef5ff;
  --muted:#91a6bf;
  --solar:#ffc857;
  --house:#69b8ff;
  --battery:#60d49a;
  --grid:#b39cff;
  --bad:#ff6b6b;
  --good:#60d49a;
}
*{box-sizing:border-box}
html{color-scheme:dark}
body{
  margin:0;
  min-height:100vh;
  color:var(--text);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:
    radial-gradient(circle at 50% -15%,#1d4268 0,#0d1a2c 34%,var(--bg) 68%);
}
.hidden{display:none!important}
.muted{color:var(--muted)}
.small{font-size:.82rem}
.container{width:min(1180px,calc(100% - 28px));margin:0 auto;padding:24px 0 42px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.topbar h1{font-size:clamp(2rem,5vw,3rem);letter-spacing:-.04em;margin:.1rem 0}
.eyebrow{text-transform:uppercase;letter-spacing:.18em;color:var(--muted);font-size:.72rem;font-weight:700}
.subtitle{color:var(--muted)}
.top-actions{display:flex;align-items:center;gap:10px}
.status-pill,.ghost-button{
  border:1px solid var(--border);background:rgba(16,28,46,.9);border-radius:999px;
  color:var(--muted);padding:9px 13px;font:inherit
}
.status-pill{display:flex;align-items:center;gap:8px}
.ghost-button{cursor:pointer}
.dot{width:9px;height:9px;border-radius:50%;background:var(--bad)}
.dot.ok{background:var(--good);box-shadow:0 0 11px rgba(96,212,154,.75)}
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.card,.panel{
  border:1px solid var(--border);border-radius:19px;
  background:linear-gradient(145deg,rgba(20,35,58,.98),rgba(12,23,39,.98));
  box-shadow:0 16px 45px rgba(0,0,0,.12)
}
.card{min-height:152px;padding:18px;position:relative;overflow:hidden}
.card:after{
  content:"";position:absolute;right:-42px;top:-42px;width:125px;height:125px;
  border-radius:50%;background:currentColor;opacity:.1
}
.card.solar{color:var(--solar)} .card.house{color:var(--house)}
.card.battery{color:var(--battery)} .card.grid{color:var(--grid)}
.label{color:var(--muted);font-size:.86rem}
.value{color:var(--text);font-size:clamp(2rem,4.5vw,3.25rem);font-weight:780;line-height:1;margin-top:12px;letter-spacing:-.05em}
.detail{color:var(--muted);font-size:.86rem;margin-top:13px}
.panel{padding:18px}
.flow-panel,.chart-panel,.bottom-grid{margin-top:12px}
.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:15px}
.panel-heading>div:first-child{display:flex;flex-direction:column;gap:3px}
.panel-heading strong{font-size:1.08rem}
.flow-grid{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;gap:10px;align-items:center}
.flow-node{
  min-height:105px;display:flex;flex-direction:column;justify-content:center;align-items:center;
  border:1px solid var(--border);background:rgba(7,16,29,.45);border-radius:15px;text-align:center
}
.flow-node .flow-icon{font-size:1.45rem}
.flow-node strong{font-size:1.25rem;margin-top:5px}
.flow-node span:last-child{color:var(--muted);font-size:.8rem;margin-top:2px}
.flow-arrow{font-size:1.45rem;color:var(--muted)}
.chart-heading{flex-wrap:wrap}
.range-switch{display:flex;gap:5px;padding:4px;border-radius:12px;background:rgba(7,16,29,.52);border:1px solid var(--border)}
.range-button{
  border:0;background:transparent;color:var(--muted);font:inherit;font-size:.83rem;
  padding:7px 10px;border-radius:9px;cursor:pointer
}
.range-button.active{background:var(--panel2);color:var(--text)}
.chart-wrap{height:330px;position:relative}
.small-chart{height:280px}
.bottom-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:12px}
.metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.metrics>div{border:1px solid var(--border);border-radius:13px;padding:13px;background:rgba(7,16,29,.38)}
.metrics span{display:block;color:var(--muted);font-size:.76rem}
.metrics strong{display:block;font-size:1.05rem;margin-top:5px}
.inline-error,.form-error{color:#ff9c9c;font-size:.86rem;min-height:1.2em;margin-top:7px}
footer{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:.75rem;margin-top:15px;padding:0 3px}

.login-shell{min-height:100vh;display:grid;place-items:center;padding:22px}
.login-card{
  width:min(410px,100%);padding:28px;border:1px solid var(--border);border-radius:22px;
  background:linear-gradient(145deg,rgba(20,35,58,.98),rgba(12,23,39,.98));
  box-shadow:0 30px 90px rgba(0,0,0,.3)
}
.brand-mark{font-size:2.2rem}
.login-card h1{margin:8px 0 0;font-size:2rem;letter-spacing:-.04em}
.login-card>p{margin:4px 0 24px}
.login-card label{display:block;color:var(--muted);font-size:.82rem;margin-top:14px}
.login-card input{
  width:100%;margin-top:6px;border:1px solid var(--border);border-radius:12px;
  background:#091421;color:var(--text);padding:12px 13px;font:inherit;outline:none
}
.login-card input:focus{border-color:#4f7198;box-shadow:0 0 0 3px rgba(105,184,255,.08)}
.login-card button{
  width:100%;border:0;border-radius:12px;margin-top:20px;padding:12px;
  background:#e9f3ff;color:#07101d;font:inherit;font-weight:750;cursor:pointer
}
.login-card button:disabled{opacity:.55;cursor:wait}

@media(max-width:920px){
  .cards{grid-template-columns:repeat(2,1fr)}
  .bottom-grid{grid-template-columns:1fr}
}
@media(max-width:650px){
  .cards{grid-template-columns:1fr}
  .flow-grid{grid-template-columns:1fr}
  .flow-arrow{transform:rotate(90deg);text-align:center}
  .chart-wrap{height:280px}
  .metrics{grid-template-columns:1fr}
  .top-actions{width:100%;justify-content:space-between}
}
