/* ============================================================================
   CETARCH — shared design system
   Single source of truth for design tokens + shared UI components, consumed by
   BOTH the public portal (layouts/portal.php) and the admin panel
   (layouts/admin.php). Layout-specific rules (sidebar, header, hero, tables,
   forms, …) still live inline in each layout.

   Brand colour is navy (#0F2B4E). The canonical token is --primary; the older
   --teal / .btn-teal / .badge-teal names are kept as ALIASES so existing markup
   keeps working — prefer --primary / .btn-primary / .badge-primary in new code.
   ============================================================================ */

:root{
  /* Brand */
  --primary:#0F2B4E;
  --primary-hover:#1B4576;
  --primary-light:rgba(15,43,78,.08);
  /* Legacy aliases (do not use in new code) */
  --teal:#0F2B4E;
  --teal-light:rgba(15,43,78,.1);
  /* Status */
  --success:#10b981;
  --danger:#ef4444;
  --warning:#f59e0b;
  --info:#3b82f6;
  /* Neutrals / surfaces */
  --dark:#0f172a;
  --darker:#111827;
  --border:#e5e7eb;
  --text:#1f2937;
  --text-dim:#6b7280;
  --text-muted:#9ca3af;
  --card:#fff;
  --bg:#f8f9fb;
  --sidebar:#fff;
  --card-hover:#f8f9fb;
  --shadow:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
}

/* Reset + base */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:'DM Sans',-apple-system,sans-serif;background:var(--bg);color:var(--text)}
a{color:inherit;text-decoration:none}

/* Cards — base only (no padding; callers pad as needed) */
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:8px;font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all .2s;font-family:inherit;text-decoration:none;white-space:nowrap}
.btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-primary,.btn-teal{background:var(--primary);color:#fff;box-shadow:0 1px 2px rgba(15,43,78,.3)}
.btn-primary:hover,.btn-teal:hover{background:var(--primary-hover)}
.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:#059669}
.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}
.btn-warning{background:var(--warning);color:#fff}.btn-warning:hover{background:#d97706}
.btn-outline{background:#fff;color:var(--text-dim);border:1px solid var(--border)}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}
.btn-ghost{background:transparent;color:var(--text-dim)}.btn-ghost:hover{color:var(--primary)}

/* Badges */
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600}
.badge-primary,.badge-teal,.badge-indigo{background:rgba(15,43,78,.1);color:#0F2B4E}
.badge-success{background:rgba(16,185,129,.1);color:#10b981}
.badge-danger{background:rgba(239,68,68,.1);color:#ef4444}
.badge-warning{background:rgba(245,158,11,.1);color:#f59e0b}
.badge-info{background:rgba(59,130,246,.1);color:#3b82f6}
.badge-gray{background:rgba(156,163,175,.12);color:#6b7280}

/* Flash messages */
.flash{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;font-size:14px;margin:16px 0}
.flash svg{flex-shrink:0;width:16px;height:16px}
.flash-success{background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.2);color:#047857}
.flash-error{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2);color:#b91c1c}
.flash-warning{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.2);color:#92400e}
.flash-info{background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.2);color:#1d4ed8}

/* Pagination */
.pagination{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:20px}
.page-btn{padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;border:1px solid var(--border);background:#fff;color:var(--text-dim);cursor:pointer;text-decoration:none;transition:all .15s}
.page-btn:hover{border-color:var(--primary);color:var(--primary)}
.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.page-btn.disabled{opacity:.4;cursor:not-allowed}
