:root{
  --bg:#f7f8fa; --fg:#0f172a; --muted:#475569; --panel:#ffffff; --border:#e2e8f0;
  --primary:#2563eb; --primary-600:#1d4ed8; --secondary:#10b981; --accent:#f59e0b; --danger:#dc2626;
  --gray-50:#f9fafb; --gray-100:#f1f5f9; --gray-200:#e2e8f0; --gray-700:#334155;

  --radius:14px; --shadow:0 8px 28px rgba(2,6,23,.08);
  --container:1100px;

  --fs-700:28px; --fs-600:22px; --fs-500:18px; --fs-400:16px; --fs-300:14px;
  --space-1:6px; --space-2:10px; --space-3:14px; --space-4:18px; --space-5:24px; --space-6:32px; --space-7:48px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:var(--fs-400); line-height:1.6; color:var(--fg); background:var(--bg);
  text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased;
}
.container{max-width:var(--container);margin:0 auto;padding:var(--space-5)}

h1{font-size:var(--fs-700);margin:0 0 var(--space-4)}
h2{font-size:var(--fs-600);margin:0 0 var(--space-3)}
h3{font-size:var(--fs-500);margin:0 0 var(--space-3)}
p{margin:0 0 var(--space-4)} small{font-size:var(--fs-300);color:var(--muted)}

/* Header */
.site-header{
  position:sticky; top:0; z-index:100;
  border-bottom:1px solid var(--border); background:rgba(255,255,255,.9); backdrop-filter:saturate(180%) blur(8px);
  transition:box-shadow .2s ease;
}
.site-header.scrolled{box-shadow:0 6px 18px rgba(2,6,23,.08)}
.nav-wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}
.logo{font-weight:700;text-decoration:none;color:var(--fg);letter-spacing:.2px}
.nav{display:flex;gap:var(--space-3)}
.nav a{color:var(--gray-700);text-decoration:none;padding:10px 12px;border-radius:10px}
.nav a:hover,.nav a.active{background:var(--gray-100);color:var(--fg)}
.hamburger{display:none;font-size:20px;background:none;border:1px solid var(--border);border-radius:10px;padding:8px 10px}

/* Footer */
.site-footer{border-top:1px solid var(--border);background:var(--gray-50);padding:16px 0;text-align:center}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:10px 14px;border-radius:12px;border:1px solid transparent;cursor:pointer;font-weight:600;white-space:nowrap}
.btn:hover{filter:brightness(.98)} .btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:3px solid rgba(37,99,235,.3);outline-offset:2px}
.btn-primary{background:var(--primary);color:#fff} .btn-primary:hover{background:var(--primary-600)}
.btn-secondary{background:var(--secondary);color:#062}
.btn-outline{background:#fff;color:var(--fg);border-color:var(--border)}
.btn-danger{background:var(--danger);color:#fff}

/* Inputs */
.input,.select{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fff}
.input:focus,.select:focus{outline:3px solid rgba(37,99,235,.25);border-color:var(--primary)}
.check{width:16px;height:16px}

/* Grid / Cards */
.row{display:flex;gap:var(--space-4);flex-wrap:wrap}
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.card h3{margin-bottom:8px}

/* Badges / Alerts */
.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;background:var(--gray-100);border:1px solid var(--border)}
.badge.primary{background:rgba(37,99,235,.1);border-color:rgba(37,99,235,.25);color:#1d4ed8}
.alert{padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--gray-50)}
.alert.ok{border-color:rgba(16,185,129,.35);background:rgba(16,185,129,.12)}
.alert.err{border-color:rgba(220,38,38,.35);background:rgba(220,38,38,.12)}

/* Table */
.table-wrap{overflow:auto;max-height:60vh;border-radius:14px;border:1px solid var(--border);background:#fff}
.table{width:100%;border-collapse:separate;border-spacing:0}
.table th,.table td{padding:12px 14px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}
.table thead th{position:sticky;top:0;z-index:1;background:var(--gray-100);font-weight:700}
.table tbody tr:nth-child(even){background:var(--gray-50)}
.table tbody tr:hover{background:#eef2ff}
.num{text-align:right;font-variant-numeric:tabular-nums}
.center{text-align:center}

/* Utilities */
.muted{color:var(--muted)}
.mt-0{margin-top:0}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-5{margin-top:var(--space-5)}
.mb-0{margin-bottom:0}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-5{margin-bottom:var(--space-5)}
.p-0{padding:0}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-5{padding:var(--space-5)}

/* Responsive */
@media (max-width:1024px){ .container{padding:var(--space-4)} }
@media (max-width:768px){
  .hamburger{display:block}
  .nav{display:none;flex-direction:column;gap:0}
  .nav.open{display:flex}
  .nav a{padding:12px}
}
@media (prefers-color-scheme:dark){
  :root{ --bg:#0b1220; --fg:#e5e7eb; --muted:#93a3b8; --panel:#0f172a; --border:#1f2a3b; --gray-100:#0f172a; --gray-50:#0b1220; }
  .table thead th{background:#0f2038}
  .nav a:hover,.nav a.active{background:#142039}
}
/* ===== Density Switch ===== */
.right-tools{display:flex;gap:10px;align-items:center}
.density-group{display:inline-flex;border:1px solid var(--border);border-radius:12px;background:#fff;overflow:hidden}
.density-group .btn{border:0;border-radius:0;padding:8px 12px}
.density-group .btn[aria-pressed="true"]{background:var(--primary);color:#fff}

/* Compact overrides */
html[data-density="compact"] .container{padding:var(--space-4)}
html[data-density="compact"] h1{margin-bottom:var(--space-3)}
html[data-density="compact"] h2{margin-bottom:var(--space-2)}
html[data-density="compact"] .card{padding:14px;border-radius:12px}
html[data-density="compact"] .btn{padding:8px 10px;border-radius:10px}
html[data-density="compact"] .input,
html[data-density="compact"] .select{padding:8px 10px;border-radius:10px}
html[data-density="compact"] .table th,
html[data-density="compact"] .table td{padding:8px 10px}
html[data-density="compact"] .table-wrap{max-height:70vh}
