:root{
  --bg:#f6f8fc;
  --card:#ffffff;
  --text:#0f172a;
  --muted:#64748b;
  --primary:#2563eb;
  --primary2:#1d4ed8;
  --border:#e5e7eb;
  --shadow:0 10px 25px rgba(2,6,23,.08);
  --r:16px;

  --sb:#0b1220;
  --sb2:#0f1a33;
  --sbText:#e2e8f0;
  --sbMuted:#94a3b8;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;background:var(--bg);color:var(--text)}
a{color:inherit;text-decoration:none}
.container{max-width:1200px;margin:0 auto;padding:18px}
.appShell{display:flex;min-height:100vh}

/* Sidebar */
.sidebar{
  width:280px;
  background:linear-gradient(180deg,var(--sb),var(--sb2));
  color:var(--sbText);
  padding:18px;
  position:sticky; top:0; height:100vh;
  border-right:1px solid rgba(255,255,255,.06);
}
.sbBrand{
  display:flex;align-items:center;gap:10px;
  padding:10px 10px 14px;
  border-bottom:1px solid rgba(255,255,255,.08);
  margin-bottom:12px;
}
.sbLogo{
  width:38px;height:38px;border-radius:12px;
  display:grid;place-items:center;
  background:rgba(37,99,235,.22);
  font-weight:900;
}
.sbTitle b{display:block;font-size:15px;line-height:1.1}
.sbTitle small{color:var(--sbMuted);font-size:12px}
.badge{
  margin-left:auto;
  background:rgba(37,99,235,.18);
  border:1px solid rgba(37,99,235,.25);
  color:#bfdbfe;
  font-size:12px;
  padding:4px 8px;
  border-radius:999px;
}
.sbNav{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.sbLink{
  padding:12px;border-radius:14px;
  display:flex;justify-content:space-between;align-items:center;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.06);
}
.sbLink:hover{background:rgba(255,255,255,.08)}
.sbLink .meta{display:flex;flex-direction:column;gap:2px}
.sbLink .meta span{font-weight:700;font-size:14px}
.sbLink .meta small{color:var(--sbMuted);font-size:12px}

/* Main + topbar */
.main{flex:1;display:flex;flex-direction:column}
.topbar{
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:30;
}
.topbarInner{
  display:flex;align-items:center;justify-content:space-between;
  gap:10px;padding:12px 18px;
}
.tbLeft{display:flex;align-items:center;gap:10px}
.tbBtn{
  border:1px solid var(--border);
  background:#fff;
  padding:10px 12px;border-radius:12px;
  cursor:pointer;
}
.tbBtn:hover{background:#f8fafc}
.tbTitle b{display:block;font-size:15px;line-height:1.1}
.tbTitle small{color:var(--muted);font-size:12px}
.tbRight{display:flex;align-items:center;gap:10px}
.pill{
  background:#fff;border:1px solid var(--border);
  padding:9px 12px;border-radius:999px;
  font-size:13px;color:var(--muted);
}

/* Content + cards */
.content{padding:18px}
.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--r);
  box-shadow:var(--shadow);
}
.cardHd{padding:16px 16px 10px;display:flex;justify-content:space-between;align-items:flex-end;gap:10px}
.cardHd h2{margin:0;font-size:16px}
.cardHd p{margin:0;color:var(--muted);font-size:13px}
.cardBd{padding:16px}

.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.col-12{grid-column:span 12}
.col-4{grid-column:span 4}
.col-6{grid-column:span 6}
.col-3{grid-column:span 3}

.kpi{
  padding:16px;border-radius:var(--r);
  background:linear-gradient(180deg,#fff,#f8fafc);
  border:1px solid var(--border);
}
.kpi .label{color:var(--muted);font-size:12px}
.kpi .value{font-size:22px;font-weight:900;margin-top:6px}
.kpi .hint{color:var(--muted);font-size:12px;margin-top:6px}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--border);
  background:#fff;
  padding:10px 12px;border-radius:12px;
  cursor:pointer;font-weight:700;font-size:13px;
}
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary2)}
.btn-soft{background:#eef2ff;border-color:#c7d2fe;color:#3730a3}

.alert{padding:12px 14px;border-radius:14px;border:1px solid var(--border);background:#fff;margin-bottom:14px}
.alert-success{border-color:rgba(22,163,74,.25);background:rgba(22,163,74,.07)}
.alert-danger{border-color:rgba(239,68,68,.25);background:rgba(239,68,68,.07)}

.tableWrap{overflow:auto;border-radius:14px;border:1px solid var(--border)}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:12px;border-bottom:1px solid var(--border);text-align:left;font-size:13px}
th{color:var(--muted);font-weight:800;background:#f8fafc;position:sticky;top:0}
tr:hover td{background:#fbfdff}

/* Mobile */
@media (max-width:980px){
  .sidebar{position:fixed;left:-310px;transition:left .2s ease;z-index:50}
  .sidebar.open{left:0}
  .col-6,.col-4{grid-column:span 12}
  .col-3{grid-column:span 6}
}
@media (max-width:540px){
  .col-3{grid-column:span 12}
  .tbRight{display:none}
}