:root{
  --bg:#0b0f17; --bg2:#121826; --card:#161e2e; --line:#243049;
  --txt:#e6edf6; --muted:#8a97ad; --accent:#4f8cff;
  --ok:#22c55e; --warn:#f59e0b; --bad:#ef4444;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:15px; line-height:1.45;
  padding-bottom:env(safe-area-inset-bottom);
}
.hidden{display:none !important}
.muted{color:var(--muted)}
.small{font-size:12px}
.center{text-align:center}

/* LOGIN */
.login{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(120% 120% at 50% 0%,#16203a 0%,var(--bg) 60%)}
.login-card{width:100%;max-width:340px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px 22px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.login-logo{font-size:40px}
.login-card h1{font-size:20px;margin:6px 0 2px}
.login-card input{width:100%;margin-top:16px;padding:13px 14px;border-radius:12px;border:1px solid var(--line);background:var(--bg2);color:var(--txt);font-size:16px}
.login-card button{width:100%;margin-top:12px;padding:13px;border:0;border-radius:12px;background:var(--accent);color:#fff;font-size:16px;font-weight:600}
.login-card button:disabled{opacity:.6}
.login-err{color:var(--bad);margin-top:10px;min-height:18px;font-size:13px}

/* TOPBAR */
.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;padding-top:calc(14px + env(safe-area-inset-top));
  background:rgba(11,15,23,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:9px;font-weight:600}
.dot{width:10px;height:10px;border-radius:50%;background:var(--muted)}
.dot.ok{background:var(--ok);animation:pulse 2s infinite}
.dot.bad{background:var(--bad)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.topbar-right{display:flex;align-items:center;gap:10px}
.icon-btn{background:var(--bg2);border:1px solid var(--line);color:var(--txt);width:34px;height:34px;border-radius:9px;font-size:15px}

/* ALERT */
.alert{margin:12px 16px 0;padding:11px 14px;border-radius:12px;background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.4);color:#ffd9d9;font-size:13px}

/* LAYOUT */
main{padding:16px;max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.metric .metric-top{display:flex;align-items:baseline;justify-content:space-between}
.label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.val{font-size:26px;font-weight:700}
.val.small{font-size:15px;font-weight:600}
.sub{margin-top:6px}
#s-forecast{color:var(--warn)}
.bar{height:7px;background:var(--bg2);border-radius:99px;overflow:hidden;margin-top:10px}
.bar-fill{height:100%;width:0;border-radius:99px;background:var(--ok);transition:width .5s ease,background .3s}
.hint{margin-top:10px;text-align:center}

/* TABS + CHART */
.tabs{display:flex;gap:6px;margin-bottom:12px}
.tab{flex:1;padding:8px;border:1px solid var(--line);background:var(--bg2);color:var(--muted);border-radius:10px;font-size:13px;font-weight:600}
.tab.active{background:rgba(79,140,255,.15);color:#9cc0ff;border-color:rgba(79,140,255,.4)}
.chart-wrap{position:relative;height:160px;width:100%}
.chart-wrap canvas{width:100% !important;height:100% !important}

/* LISTS */
.list{display:flex;flex-direction:column;gap:8px}
.row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg2);border:1px solid var(--line);border-radius:12px}
.row.tappable:active{background:#1b2740}
.row .name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .rdot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.rdot.ok{background:var(--ok)}.rdot.bad{background:var(--bad)}.rdot.idle{background:var(--muted)}
.row .meta{font-size:12px;color:var(--muted);flex:0 0 auto;text-align:right}
.row .chev{color:var(--muted);flex:0 0 auto}
footer{padding:6px 0 24px}

/* SHEET */
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;z-index:20}
.sheet{width:100%;max-width:760px;margin:0 auto;background:var(--card);border:1px solid var(--line);border-radius:20px 20px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));max-height:88vh;overflow:auto;animation:slideup .2s ease}
@keyframes slideup{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}
.sheet-title{font-size:18px;font-weight:700;word-break:break-all}
.sheet-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.act{padding:12px 6px;border:1px solid var(--line);border-radius:12px;background:var(--bg2);color:var(--txt);font-size:14px;font-weight:600}
.act:disabled{opacity:.4}
.act-restart{color:#9cc0ff}.act-stop{color:#ffb4b4}.act-start{color:#9af0c0}
.act.busy{opacity:.6}
.logs-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.small-btn{width:30px;height:30px;font-size:13px}
.logs{background:#0a0e16;border:1px solid var(--line);border-radius:12px;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:48vh;overflow:auto;margin:0;color:#cdd9ea}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#1b2740;border:1px solid var(--line);color:var(--txt);padding:10px 16px;border-radius:12px;z-index:40;font-size:14px;box-shadow:0 10px 30px rgba(0,0,0,.5)}
