/* ===== Panel theme — clean, large, high contrast ===== */
:root{
  --bg:#f4f6fb;
  --surface:#ffffff;
  --line:#e6e9f2;
  --line-soft:#eef1f7;
  --ink:#0f172a;
  --ink-2:#475569;
  --ink-3:#7c8aa3;
  --brand:#3b5bfd;
  --brand-2:#6d4bfb;
  --brand-ink:#ffffff;
  --ok:#0e9f6e;
  --ok-bg:#e7f8f1;
  --warn:#b45309;
  --warn-bg:#fef3c7;
  --hot:#e11d48;
  --hot-bg:#ffe8ee;
  --cold:#0284c7;
  --cold-bg:#e4f4fe;
  --shadow:0 1px 2px rgba(15,23,42,.05), 0 8px 24px rgba(15,23,42,.06);
  --shadow-lg:0 2px 6px rgba(15,23,42,.06), 0 18px 44px rgba(15,23,42,.10);
  --r:16px;
  --r-sm:11px;
}

html,body{background:var(--bg);color:var(--ink);}
body{
  font-family:"Rubik","Assistant",-apple-system,"Segoe UI",Arial,sans-serif;
  font-size:16.5px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

/* ---------- sidebar ---------- */
aside{
  background:linear-gradient(180deg,#1b2559 0%,#232e6b 55%,#2a2f7a 100%);
  color:#e8ecff;
  width:262px;
  padding:22px 16px;
  border:0;
  box-shadow:2px 0 24px rgba(15,23,42,.10);
}
.brand{padding:6px 8px 20px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:16px;}
.brand .logo{font-size:20px;font-weight:800;letter-spacing:-.2px;color:#fff;}
.brand .sub{font-size:13px;color:#a9b4e6;margin-top:2px;}
nav a{
  display:flex;align-items:center;gap:11px;
  padding:12px 14px;margin:3px 0;
  border-radius:12px;
  color:#c7cff5;font-size:16px;font-weight:500;
  text-decoration:none;
  transition:background .15s ease,color .15s ease,transform .15s ease;
}
nav a:hover{background:rgba(255,255,255,.09);color:#fff;transform:translateX(-2px);}
nav a.active{background:#fff;color:#1b2559;font-weight:700;box-shadow:0 6px 18px rgba(0,0,0,.18);}
nav .icon{font-size:19px;width:24px;text-align:center;}
.side-foot{color:#8f9bd6;font-size:12.5px;border-top:1px solid rgba(255,255,255,.12);padding-top:14px;}

/* ---------- page ---------- */
main{padding:30px 36px 60px;}
.pagehead{margin-bottom:24px;}
.pagehead h1{font-size:32px;font-weight:800;letter-spacing:-.5px;margin:0 0 4px;color:var(--ink);}
.pagehead .sub{font-size:15.5px;color:var(--ink-3);}

.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow);
  padding:24px 26px;
  margin-bottom:22px;
}

/* ---------- stat tiles ---------- */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;}
.tile{
  position:relative;overflow:hidden;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow);
  padding:20px 22px 18px;
  transition:transform .15s ease,box-shadow .15s ease;
}
.tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);}
.tile::before{
  content:"";position:absolute;inset-block-start:0;inset-inline-start:0;
  width:100%;height:4px;
  background:linear-gradient(90deg,var(--brand),var(--brand-2));
  opacity:.9;
}
.tile .lbl{font-size:13.5px;font-weight:600;color:var(--ink-3);letter-spacing:.2px;margin-bottom:6px;}
.tile .val{font-size:40px;line-height:1.1;font-weight:800;color:var(--ink);letter-spacing:-1px;}

/* ---------- tables ---------- */
table{width:100%;border-collapse:separate;border-spacing:0;font-size:15.5px;}
th{
  background:#f7f9fd;color:var(--ink-2);
  font-size:13.5px;font-weight:700;letter-spacing:.3px;
  padding:13px 14px;border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:2;
}
td{padding:15px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink);vertical-align:middle;}
tbody tr{transition:background .12s ease;}
tbody tr:hover td{background:#f8faff;}
tr:last-child td{border-bottom:0;}
td.num,th.num{font-variant-numeric:tabular-nums;}

/* ---------- badges ---------- */
.pill,.chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 12px;border-radius:999px;
  font-size:13.5px;font-weight:700;line-height:1.4;
  background:#eef1f7;color:var(--ink-2);border:0;
}
.pill.hot{background:var(--hot-bg);color:var(--hot);}
.pill.cold{background:var(--cold-bg);color:var(--cold);}
.pill.ok,.pill.sched{background:var(--ok-bg);color:var(--ok);}
.pill.miss{background:var(--warn-bg);color:var(--warn);}
.pill.unknown{background:#eef1f7;color:var(--ink-3);}

/* ---------- controls ---------- */
button,.btn{
  font-family:inherit;font-size:15.5px;font-weight:600;
  padding:11px 20px;border-radius:12px;border:0;
  background:var(--brand);color:var(--brand-ink);
  cursor:pointer;
  box-shadow:0 2px 8px rgba(59,91,253,.28);
  transition:transform .12s ease,box-shadow .12s ease,background .12s ease;
}
button:hover,.btn:hover{background:#2f4ce8;transform:translateY(-1px);box-shadow:0 6px 18px rgba(59,91,253,.34);}
button:active,.btn:active{transform:translateY(0);}
button.ghost{background:#fff;color:var(--ink-2);border:1px solid var(--line);box-shadow:none;}
button.ghost:hover{background:#f4f6fb;color:var(--ink);border-color:#d6dbe8;transform:none;}

input,select,textarea{
  font-family:inherit;font-size:15.5px;color:var(--ink);
  padding:11px 14px;border-radius:12px;
  border:1px solid var(--line);background:#fff;
  transition:border-color .12s ease,box-shadow .12s ease;
}
input:focus,select:focus,textarea:focus{
  outline:0;border-color:var(--brand);
  box-shadow:0 0 0 4px rgba(59,91,253,.15);
}
label{font-size:13.5px;font-weight:600;color:var(--ink-2);margin-bottom:5px;display:block;}

.filters{gap:14px;}
.filters > div{min-width:150px;}
.grid2{gap:20px;}

/* ---------- misc ---------- */
.muted{color:var(--ink-3);}
.ok{color:var(--ok);}
.msg{border-radius:12px;padding:12px 16px;font-size:15px;}
.demo-badge{border-radius:999px;font-size:12.5px;font-weight:700;padding:4px 12px;}
.bar{border-radius:6px 6px 0 0;transition:opacity .12s ease;}
.bar:hover{opacity:.82;}
.chart-tip{border-radius:10px;font-size:13px;box-shadow:var(--shadow);}

/* ---------- login ---------- */
.login-wrap{background:linear-gradient(160deg,#1b2559 0%,#2a2f7a 60%,#3b5bfd 140%);}
.login-box{
  border-radius:20px;border:0;
  box-shadow:0 24px 70px rgba(10,15,45,.35);
  padding:34px 32px;min-width:340px;
}
.login-box h1,.login-box .logo{font-size:22px;font-weight:800;}
.login-box button{width:100%;padding:13px 20px;font-size:16.5px;}
.err{color:var(--hot);font-size:14px;}

/* ---------- modal ---------- */
.modal-bg{background:rgba(10,15,45,.55);backdrop-filter:blur(3px);}
.modal{border-radius:18px;box-shadow:var(--shadow-lg);padding:26px 28px;border:0;}
.modal h2{font-size:22px;font-weight:800;margin-bottom:14px;}

/* ---------- responsive ---------- */
@media(max-width:900px){
  aside{width:100%;padding:14px;}
  main{padding:20px 16px 48px;}
  .pagehead h1{font-size:26px;}
  .tile .val{font-size:34px;}
  table{font-size:14.5px;}
  th,td{padding:11px 10px;}
}
