/* ═══ Rapports & statistiques — styles communs ═══ */
.rpt {
  --rpt-card: var(--bs-body-bg, #fff);
  --rpt-border: var(--bs-border-color, #e5e9f0);
  --rpt-ink: var(--bs-emphasis-color, #1a1f36);
  --rpt-ink2: var(--bs-body-color, #4a5568);
  --rpt-muted: var(--bs-secondary-color, #8896ab);
  --rpt-track: var(--bs-tertiary-bg, #eef1f6);
  --rpt-accent: #2a78d6;
  --rpt-good: #0f8a5f;
  --rpt-bad: #c93b3b;
  --s1: #2a78d6; --s2: #eb6834; --s3: #1baf7a; --s4: #eda100;
}
:root[data-bs-theme="dark"] .rpt {
  --rpt-accent: #3987e5;
  --rpt-good: #3fbf8a;
  --rpt-bad: #e66767;
  --s1: #3987e5; --s2: #d95926; --s3: #199e70; --s4: #c98500;
}

.rpt-head { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:1rem; margin-bottom:1rem; }
.rpt-head h4 { margin:0; font-weight:700; color:var(--rpt-ink); }
.rpt-head p { margin:.2rem 0 0; color:var(--rpt-muted); font-size:.875rem; }

/* Filtres : une seule ligne au-dessus des graphiques */
.rpt-filters { display:flex; flex-wrap:wrap; align-items:flex-end; gap:.75rem; background:var(--rpt-card);
  border:1px solid var(--rpt-border); border-radius:12px; padding:.85rem 1rem; margin-bottom:1.25rem; }
.rpt-filters label { display:block; font-size:.72rem; font-weight:600; text-transform:uppercase;
  letter-spacing:.4px; color:var(--rpt-muted); margin-bottom:.25rem; }
.rpt-filters .form-control, .rpt-filters .form-select { min-width:140px; font-size:.875rem; }
.rpt-filters .rpt-actions { margin-left:auto; display:flex; gap:.5rem; flex-wrap:wrap; }

/* Indicateurs */
.rpt-kpis { display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:.85rem; margin-bottom:1.25rem; }
.rpt-kpi { background:var(--rpt-card); border:1px solid var(--rpt-border); border-radius:12px; padding:1rem 1.1rem; }
.rpt-kpi .lbl { font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:.4px; color:var(--rpt-muted); }
.rpt-kpi .val { font-size:1.55rem; font-weight:700; color:var(--rpt-ink); line-height:1.2; margin-top:.35rem;
  font-variant-numeric:tabular-nums; }
.rpt-kpi .sub { font-size:.78rem; color:var(--rpt-muted); margin-top:.3rem; }
.rpt-evo { display:inline-flex; align-items:center; gap:2px; font-weight:600; font-size:.75rem; }
.rpt-evo.up { color:var(--rpt-good); }
.rpt-evo.down { color:var(--rpt-bad); }
.rpt-evo.neutral { color:var(--rpt-muted); }

/* Cartes */
.rpt-card { background:var(--rpt-card); border:1px solid var(--rpt-border); border-radius:12px; margin-bottom:1.25rem; overflow:hidden; }
.rpt-card-head { display:flex; align-items:center; justify-content:space-between; gap:.5rem;
  padding:.85rem 1.1rem; border-bottom:1px solid var(--rpt-border); }
.rpt-card-head h6 { margin:0; font-size:.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--rpt-ink2); }
.rpt-card-head small { color:var(--rpt-muted); }
.rpt-card-body { padding:1rem 1.1rem; }
.rpt-chart { position:relative; height:280px; }
.rpt-chart.sm { height:220px; }
.rpt-empty { color:var(--rpt-muted); font-size:.85rem; margin:0; padding:.5rem 0; }
.rpt-note { color:var(--rpt-muted); font-size:.75rem; margin:.5rem 0 0; }

/* Listes à barres horizontales */
.rpt-bars { display:flex; flex-direction:column; gap:.6rem; }
.rpt-bar-row .top { display:flex; justify-content:space-between; gap:.75rem; font-size:.84rem; margin-bottom:.2rem; }
.rpt-bar-row .name { color:var(--rpt-ink2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rpt-bar-row .num { color:var(--rpt-ink); font-weight:600; white-space:nowrap; font-variant-numeric:tabular-nums; }
.rpt-bar-row .num span { color:var(--rpt-muted); font-weight:400; margin-left:.3rem; }
.rpt-bar-track { height:8px; background:var(--rpt-track); border-radius:4px; overflow:hidden; }
.rpt-bar-fill { height:100%; background:var(--rpt-accent); border-radius:0 4px 4px 0; min-width:2px; }

/* Tableaux */
.rpt-table { width:100%; border-collapse:collapse; font-size:.845rem; }
.rpt-table th { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--rpt-muted);
  padding:.55rem .75rem; border-bottom:2px solid var(--rpt-border); white-space:nowrap; text-align:left; }
.rpt-table td { padding:.55rem .75rem; border-bottom:1px solid var(--rpt-border); color:var(--rpt-ink2); vertical-align:middle; }
.rpt-table tbody tr:hover { background:var(--rpt-track); }
.rpt-table .n { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.rpt-table tfoot td { font-weight:700; color:var(--rpt-ink); border-top:2px solid var(--rpt-border); border-bottom:none; }

/* Carte de chaleur */
.rpt-heat td.cell { text-align:center; font-size:.75rem; min-width:34px; padding:.4rem .2rem; border:2px solid var(--rpt-card);
  font-variant-numeric:tabular-nums; }
.rpt-heat th { text-align:center; padding:.3rem .2rem; }
.rpt-heat td.day { font-weight:600; white-space:nowrap; }

.rpt-print-head { display:none; }
.rpt-loader { text-align:center; padding:3rem 0; color:var(--rpt-muted); }

@media (max-width: 576px) {
  .rpt-filters .rpt-actions { margin-left:0; }
  .rpt-kpi .val { font-size:1.3rem; }
}

/* Impression : seul le rapport est imprimé */
@media print {
  .sidebar, .navbar-header, .footer, .rpt-filters, .rpt-noprint, #toggle_btn { display:none !important; }
  .page-wrapper { margin:0 !important; padding:0 !important; }
  .rpt-print-head { display:block; margin-bottom:1rem; border-bottom:2px solid #000; padding-bottom:.5rem; }
  .rpt-card, .rpt-kpi { break-inside:avoid; border-color:#bbb; }
  .rpt-chart { height:240px; }
  body { background:#fff !important; }
}
