:root{
  --brand:#0d6efd;           /* primaire */
  --brand-2:#6c5ce7;         /* accent dégradé */
  --ink:#111827;             /* texte principal */
  --muted:#6b7280;           /* texte secondaire */
  --card-bg:#ffffff;
  --bg:#f6f7fb;              /* fond app */
  --ring: rgba(13,110,253,.25);
  --radius:1rem;             /* 16px */
}

/* Layout global */
body{ background:var(--bg); color:var(--ink); }
.container-narrow{ max-width:1080px; }

/* App bar (navbar) */
.navbar.appbar{
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
  box-shadow: 0 10px 30px rgba(13,110,253,.25);
}
.navbar .navbar-brand{ letter-spacing:.2px; }

/* Cartes + ombres douces */
.card.shadow-soft{
  border:0;
  border-radius: var(--radius);
  background: var(--card-bg);
  box-shadow: 0 10px 30px rgba(17,24,39,.07);
}
.card-header{
  border:0;
  background: transparent;
  font-weight: 600;
}

/* Boutons “pill” */
.btn{ border-radius: 999px; }
.btn-outline-secondary{ color:var(--ink); }

/* Inputs */
.form-control, .form-select{
  border-radius: .8rem;
  border-color:#E5E7EB;
}
.form-control:focus, .form-select:focus{
  border-color:var(--brand);
  box-shadow: 0 0 0 .25rem var(--ring);
}

/* Table */
.table{
  --bs-table-striped-bg: #fafbff;
  --bs-table-hover-bg: #f3f6ff;
  border-radius: .8rem;
  overflow: hidden;
}
.table thead th{
  font-weight:600; color:#374151; background:#f8fafc !important;
}
.badge-soft{
  background: #eef2ff; color:#4338ca; border-radius:999px; padding:.35rem .6rem;
}

/* Toolbar haut de page */
.page-toolbar{
  display:flex; gap:.75rem; flex-wrap:wrap; align-items:center; justify-content:space-between;
}

/* Petits chips d’info */
.chip{
  display:inline-flex; align-items:center; gap:.35rem;
  padding:.25rem .6rem; border-radius:999px; background:#f3f4f6; color:#374151; font-size:.85rem;
}

/* Footer light */
footer{ background:transparent; color:var(--muted); }

/* Empty state */
.empty{
  border:2px dashed #e5e7eb; border-radius: var(--radius); padding:2rem; text-align:center; color:var(--muted);
}