/* Cabin Power — Apple-inspired dark UI */
:root{
  color-scheme:dark;
  --bg:#000000;
  --card:#1c1c1e;
  --card-2:#2c2c2e;
  --fill:rgba(120,120,128,.22);
  --separator:rgba(84,84,88,.55);
  --label:#ffffff;
  --label-2:rgba(235,235,245,.6);
  --label-3:rgba(235,235,245,.34);
  --green:#30d158;
  --orange:#ff9f0a;
  --red:#ff453a;
  --yellow:#ffd60a;
  --blue:#0a84ff;
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--label);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Inter,system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button,input{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.5}
[hidden]{display:none!important}
p{margin:0}
h1,h2{margin:0;font-weight:700}

.app-shell{max-width:640px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 14px) 16px calc(env(safe-area-inset-bottom) + 110px)}

/* --- header --- */
.top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:0 4px}
.top-title h1{font-size:30px;letter-spacing:-.02em;line-height:1.15}
.subtitle{font-size:13px;color:var(--label-3);margin-top:3px}
.top-actions{display:flex;align-items:center;gap:14px;padding-top:6px}
.live{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--green)}
.live i{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 7px rgba(48,209,88,.7)}
.live.stale{color:var(--orange)}
.live.stale i{box-shadow:none}
.live.offline{color:var(--red)}
.live.offline i{box-shadow:none}
.text-button{background:none;border:0;color:var(--blue);font-size:17px;padding:0}

.banner{background:rgba(255,159,10,.14);color:var(--orange);border-radius:12px;padding:12px 14px;
  font-size:14px;line-height:1.45;margin-top:14px}

/* --- cards & sections --- */
.view{display:none}
.view.active{display:block}
.section{margin-top:24px}
.card{background:var(--card);border-radius:14px;padding:16px;margin-top:12px}
.card.list{padding:4px 16px}
.group-title{font-size:13px;font-weight:600;color:var(--label-2);margin:0 4px;display:flex;align-items:baseline;justify-content:space-between}
.group-title.page-title{font-size:22px;font-weight:700;color:var(--label);margin:6px 4px 0}
.group-note{font-size:13px;font-weight:500;color:var(--label-3)}
.caption{font-size:13px;color:var(--label-2)}
.body-text{font-size:15px;line-height:1.5;color:var(--label-2)}
.footnote{font-size:12px;line-height:1.45;color:var(--label-3);margin-top:10px}
.empty{font-size:15px;color:var(--label-3);padding:12px 0}

/* --- hero --- */
.hero-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.hero-value{display:flex;align-items:baseline;gap:2px;margin:10px 0 0}
#battery{font-size:64px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.hero-unit{font-size:26px;font-weight:600;color:var(--label-2)}
#battery-subtitle{margin-top:10px}
.meter{height:8px;border-radius:4px;background:var(--fill);overflow:hidden;margin-top:16px}
.meter-fill{height:100%;width:0;border-radius:4px;background:var(--green);transition:width .5s ease,background-color .3s ease}
.meter-fill.warn{background:var(--orange)}
.meter-fill.low{background:var(--red)}

.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;
  padding:5px 11px;border-radius:999px;background:var(--fill);color:var(--label-2);white-space:nowrap}
.status-pill i{width:7px;height:7px;border-radius:50%;background:currentColor}
.gen-running{color:var(--orange)}
.gen-stopped{color:var(--label-2)}
.gen-unknown{color:var(--red)}

/* --- stats --- */
.stats{display:grid;grid-template-columns:1fr 1fr 1fr;padding:15px 0}
.stat{padding:0 16px;border-left:1px solid var(--separator)}
.stat:first-child{border-left:0}
.stat-value{display:flex;align-items:baseline;gap:4px;margin-top:5px;font-variant-numeric:tabular-nums}
.stat-value b{font-size:24px;font-weight:600}
.stat-value i{font-style:normal;font-size:14px;color:var(--label-3)}
.stat-value.negative b{color:var(--red)}

/* --- solar list --- */
.solar-row{padding:13px 0;border-bottom:1px solid var(--separator)}
.solar-row:last-child{border-bottom:0}
.solar-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.solar-day{font-size:17px}
.solar-day .sub{font-size:13px;color:var(--label-3);margin-left:6px}
.solar-value{font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.solar-value i{font-style:normal;font-size:13px;font-weight:500;color:var(--label-2);margin-left:3px}
.solar-bar{height:6px;border-radius:3px;background:var(--fill);overflow:hidden;margin-top:9px}
.solar-bar div{height:100%;width:0;border-radius:3px;background:var(--yellow);transition:width .6s ease}

/* --- stations --- */
.station{padding:13px 0;border-bottom:1px solid var(--separator)}
.station:last-child{border-bottom:0}
.station-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.station-name{font-size:17px}
.station-pct{font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}
.station-pct.low{color:var(--red)}
.station-pct.warn{color:var(--orange)}
.station .meter{height:6px;margin-top:9px}
.station-meta{font-size:13px;color:var(--label-2);margin-top:9px}
.station-note{font-size:13px;color:var(--orange);margin-top:8px}

/* --- settings-style rows --- */
.rows .row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding:11px 0;border-bottom:1px solid var(--separator);font-size:17px}
.rows .row:last-child{border-bottom:0}
.row-label{color:var(--label)}
.row-value{color:var(--label-2);font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.rows+.body-text{margin-top:12px}

/* --- buttons & forms --- */
.button-primary{display:block;width:100%;background:var(--green);color:#000;border:0;border-radius:999px;
  padding:13px 18px;font-size:16px;font-weight:600;min-height:48px;margin-top:14px;
  text-align:center;text-decoration:none}
.button-primary:active{filter:brightness(.9)}
.button-secondary{background:var(--card-2);color:var(--label);border:0;border-radius:999px;
  padding:12px 18px;font-size:15px;font-weight:600;min-height:44px;flex:1}
.button-secondary:active{filter:brightness(1.2)}
.button-tinted{background:rgba(48,209,88,.16);color:var(--green);border:0;border-radius:999px;
  padding:12px 18px;font-size:15px;font-weight:600;min-height:44px;flex:1}
.button-tinted.stop{background:rgba(255,69,58,.16);color:var(--red)}
.button-row{display:flex;gap:10px;margin-top:14px}
.card>.button-secondary{width:100%;margin-top:14px}
input[type=password],input[type=tel]{display:block;width:100%;background:var(--fill);border:0;border-radius:10px;
  color:var(--label);padding:13px 14px;font-size:17px;outline:none;min-height:48px;margin-top:14px}
input::placeholder{color:var(--label-3)}
input:focus{box-shadow:0 0 0 2px rgba(48,209,88,.55)}
.switch-row{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--label);margin-top:14px}
.switch-row input{width:20px;height:20px;accent-color:var(--green)}
.form-message{font-size:14px;color:var(--orange);margin-top:10px;min-height:1em}

/* --- admin --- */
.admin-lock{text-align:center;padding:30px 18px}
.admin-lock h2{font-size:20px}
.admin-lock .body-text{margin-top:8px}
.admin-lock form{max-width:240px;margin:6px auto 0}
.admin-lock input{text-align:center;font-size:22px;font-weight:600;letter-spacing:.3em;padding-left:calc(14px + .3em)}
.system-log{overflow:auto;max-height:320px;font:12px/1.55 ui-monospace,"SF Mono",SFMono-Regular,Menlo,monospace;
  color:rgba(235,235,245,.72);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}

/* --- notifications --- */
.notification{padding:13px 0;border-bottom:1px solid var(--separator)}
.notification:last-child{border-bottom:0}
.notification-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.notification-title{font-size:15px;font-weight:600}
.notification-time{font-size:13px;color:var(--label-3);white-space:nowrap}
.notification-body{font-size:14px;line-height:1.5;color:var(--label-2);margin-top:5px;white-space:pre-wrap}
.notification.urgent .notification-title{color:var(--orange)}

/* --- tab bar --- */
.tab-bar{position:fixed;z-index:20;bottom:0;left:0;right:0;display:flex;justify-content:center;
  background:rgba(10,10,10,.82);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  border-top:.5px solid var(--separator);
  padding:6px max(8px,env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 4px) max(8px,env(safe-area-inset-left))}
.tab{flex:1;max-width:150px;background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:3px;
  color:rgba(235,235,245,.5);padding:4px 0}
.tab svg{width:24px;height:24px}
.tab span{font-size:10px;font-weight:500}
.tab.active{color:var(--green)}

.toast{position:fixed;z-index:40;left:50%;bottom:calc(env(safe-area-inset-bottom) + 92px);transform:translateX(-50%);
  background:rgba(44,44,46,.97);color:var(--label);padding:12px 16px;border-radius:12px;font-size:14px;font-weight:500;
  max-width:calc(100vw - 40px);text-align:center;box-shadow:0 16px 40px rgba(0,0,0,.6)}

/* --- login --- */
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}
.login-card{width:min(100%,340px);text-align:center}
.login-card img{width:88px;height:88px;border-radius:20px;box-shadow:0 12px 32px rgba(0,0,0,.55)}
.login-card h1{font-size:28px;letter-spacing:-.02em;margin:22px 0 6px}
.login-copy{font-size:15px;color:var(--label-2);line-height:1.5}
.login-card form{margin-top:8px}
.login-card input{text-align:center;font-size:24px;font-weight:600;letter-spacing:.35em;padding-left:calc(14px + .35em)}
.login-card .button-primary{margin-top:12px}
.login-foot{font-size:12px;color:var(--label-3);margin-top:30px;display:flex;align-items:center;justify-content:center;gap:8px}
.login-foot .dot{width:8px;height:8px;border-radius:50%;background:var(--green)}

@media(max-width:390px){
  #battery{font-size:56px}
  .stat{padding:0 12px}
  .stat-value b{font-size:21px}
}
