/* FinanceEBC v2 — Utilitaires. Complètent Bootstrap sans le remplacer.
   Aucune couleur en dur : uniquement var(--fin-*). */

.fin-muted, .text-muted { color: var(--fin-text-muted) !important; }
.fin-fort { font-weight: 700; }
.fin-petit { font-size: .85rem; }
.fin-mono, .font-mono { font-family: var(--fin-font-mono); font-variant-numeric: tabular-nums; }
.droite { text-align: right; }
.centre { text-align: center; }
.fin-nowrap { white-space: nowrap; }
.fin-couper { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.sr-only, .visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* Marges verticales */
.mt-0 { margin-top: 0 !important; }
.mt-1 { margin-top: var(--fin-space-1) !important; }
.mt-2 { margin-top: var(--fin-space-2) !important; }
.mt-3 { margin-top: var(--fin-space-3) !important; }
.mt-4 { margin-top: var(--fin-space-4) !important; }
.mt-5 { margin-top: var(--fin-space-5) !important; }
.mt-6 { margin-top: var(--fin-space-6) !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-1 { margin-bottom: var(--fin-space-1) !important; }
.mb-2 { margin-bottom: var(--fin-space-2) !important; }
.mb-3 { margin-bottom: var(--fin-space-3) !important; }
.mb-4 { margin-bottom: var(--fin-space-4) !important; }
.mb-5 { margin-bottom: var(--fin-space-5) !important; }
.mb-6 { margin-bottom: var(--fin-space-6) !important; }

/* Grilles simples (auto-responsives, sans media query) */
.fin-g-2, .fin-g-3, .fin-g-4 { display: grid; gap: var(--fin-space-4); }
.fin-g-2 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.fin-g-3 { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.fin-g-4 { grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); }

/* Deux colonnes principal / latéral (A1) */
.fin-colonnes { display: grid; gap: var(--fin-space-5); grid-template-columns: 1fr; }
@media (min-width: 1024px) {
  .fin-colonnes { grid-template-columns: 2fr 1fr; align-items: start; }
}
/* Sans min-width:0, une piste de grille ne descend pas sous la largeur
   intrinsèque de son contenu (une table large déborde alors la page). */
.fin-colonnes > * { min-width: 0; }
.fin-g-2 > *, .fin-g-3 > *, .fin-g-4 > * { min-width: 0; }

/* Alignements ponctuels */
.fin-flex { display: flex; gap: var(--fin-space-3); }
.fin-flex-entre { display: flex; gap: var(--fin-space-3); justify-content: space-between; align-items: center; flex-wrap: wrap; }
.fin-flex-centre { display: flex; gap: var(--fin-space-3); align-items: center; }
.fin-flex-fin { display: flex; gap: var(--fin-space-3); justify-content: flex-end; align-items: center; flex-wrap: wrap; }
.fin-wrap { flex-wrap: wrap; }
.fin-liste-nue { list-style: none; padding: 0; margin: 0; }
.fin-pile { display: flex; flex-direction: column; gap: var(--fin-space-4); }
.fin-pile-sm { display: flex; flex-direction: column; gap: var(--fin-space-2); }

/* Barre d'outils au-dessus d'une liste */
.fin-outils {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--fin-space-3);
  margin-bottom: var(--fin-space-4);
}
.fin-outils .fin-champ { margin-bottom: 0; }

/* Masquages responsives */
@media (max-width: 719.98px) { .fin-cacher-mobile { display: none !important; } }
@media (min-width: 720px) { .fin-cacher-bureau { display: none !important; } }
