/* ==========================================================================
   wsm-theme.css — charte graphique WSM-GED
   --------------------------------------------------------------------------
   Couleur de marque #348979, prélevée sur wsm-logo.png (99,1 % des pixels
   non transparents). L'échelle conserve la teinte 169° et la saturation 45 %,
   seule la luminosité varie : les nuances restent donc perçues comme une même
   couleur, ce qui n'est pas le cas si l'on éclaircit vers le blanc.

   Chargé après Bootstrap 5.3 pour en surcharger les variables.
   ========================================================================== */

:root {
  --wsm-50:  #F0F9F8;
  --wsm-100: #DAF1ED;
  --wsm-200: #B5E3DB;
  --wsm-300: #89D2C5;
  --wsm-400: #4EBCA7;
  --wsm-500: #348979;   /* couleur exacte du logo */
  --wsm-600: #2B7366;
  --wsm-700: #235C52;
  --wsm-800: #1B463E;
  --wsm-900: #12302B;

  /* Couleur d'action et de fond : la teinte exacte du logo, partout.
     Choix explicite de l'utilisateur, l'écart d'accessibilité étant assumé :
     le blanc n'atteint que 4,2:1 sur #348979, sous le seuil WCAG AA de 4,5:1
     pour du texte de taille courante. La fidélité à la charte l'emporte ici
     sur la marge de contraste.
     Le survol descend d'un cran : sans cet écart, un bouton survolé ne
     donnerait plus aucun retour visuel. */
  --wsm-action: #348979;
  --wsm-action-hover: #2B7366;

  /* --- Barre latérale ---
     Elle porte désormais la couleur du logo.
     L'élément actif ne peut donc plus être #348979, il se confondrait avec son
     fond : il passe à un voile blanc, seul moyen de le distinguer sans
     réintroduire un vert sombre. */
  --wsm-sidebar-bg: var(--wsm-500);
  --wsm-sidebar-entete: rgba(0, 0, 0, .16);
  --wsm-sidebar-actif: rgba(255, 255, 255, .22);
  --wsm-sidebar-survol: rgba(255, 255, 255, .12);

  /* --- Surcharge des variables Bootstrap 5.3 --- */
  --bs-primary: #348979;
  --bs-primary-rgb: 52, 137, 121;
  --bs-link-color: #348979;
  --bs-link-color-rgb: 52, 137, 121;
  --bs-link-hover-color: #2B7366;
  --bs-link-hover-color-rgb: 43, 115, 102;
  --bs-focus-ring-color: rgba(52, 137, 121, .28);
  --bs-border-radius: .5rem;
}

/* --------------------------------------------------------------------------
   Boutons
   Bootstrap 5.3 pilote chaque bouton par ses propres variables locales :
   surcharger --bs-primary ne suffit pas, il faut reprendre --bs-btn-*.
   -------------------------------------------------------------------------- */

.btn-primary {
  --bs-btn-bg: var(--wsm-action);
  --bs-btn-border-color: var(--wsm-action);
  --bs-btn-hover-bg: var(--wsm-action-hover);
  --bs-btn-hover-border-color: var(--wsm-action-hover);
  --bs-btn-active-bg: var(--wsm-800);
  --bs-btn-active-border-color: var(--wsm-800);
  --bs-btn-disabled-bg: var(--wsm-300);
  --bs-btn-disabled-border-color: var(--wsm-300);
  --bs-btn-focus-shadow-rgb: 52, 137, 121;
}

.btn-outline-primary {
  --bs-btn-color: var(--wsm-500);
  --bs-btn-border-color: var(--wsm-500);
  --bs-btn-hover-bg: var(--wsm-action);
  --bs-btn-hover-border-color: var(--wsm-action);
  --bs-btn-active-bg: var(--wsm-action-hover);
  --bs-btn-active-border-color: var(--wsm-action-hover);
  --bs-btn-focus-shadow-rgb: 52, 137, 121;
}

/* --------------------------------------------------------------------------
   Utilitaires de couleur
   -------------------------------------------------------------------------- */

.text-primary { color: var(--wsm-500) !important; }
.bg-primary   { background-color: var(--wsm-500) !important; }
.border-primary { border-color: var(--wsm-500) !important; }

.badge.bg-primary { background-color: var(--wsm-action) !important; }

/* Fond très clair pour les zones d'information, en remplacement du bleu */
.alert-primary,
.bg-primary-subtle {
  background-color: var(--wsm-50) !important;
  border-color: var(--wsm-200) !important;
  color: var(--wsm-900) !important;
}

/* --------------------------------------------------------------------------
   Menus contextuels
   Un menu blanc ouvert au-dessus d'une vignette blanche ne se distingue que par
   son ombre : sur les cartes de dossiers on ne voit plus où finit le menu et où
   reprend la carte. Un fond teinté le détache franchement.

   La teinte reste claire, et non un aplat sombre : sur fond foncé l'entrée
   « Supprimer » perdrait son rouge, seul signal indiquant qu'elle est
   destructrice.
   -------------------------------------------------------------------------- */

.dropdown-menu {
  --bs-dropdown-bg: var(--wsm-100);
  --bs-dropdown-border-color: var(--wsm-300);
  --bs-dropdown-link-color: var(--wsm-900);
  --bs-dropdown-link-hover-bg: var(--wsm-200);
  --bs-dropdown-link-hover-color: var(--wsm-900);
  --bs-dropdown-link-active-bg: var(--wsm-300);
  --bs-dropdown-link-active-color: var(--wsm-900);
  --bs-dropdown-divider-bg: var(--wsm-300);
  --bs-dropdown-header-color: var(--wsm-500);
  box-shadow: 0 .5rem 1.5rem rgba(18, 48, 43, .25);
}

.dropdown-item i { color: var(--wsm-500); }

/* L'entrée destructrice garde son rouge, icône comprise, jusque sur le survol. */
.dropdown-item.text-danger i { color: inherit; }
.dropdown-item.text-danger:hover,
.dropdown-item.text-danger:focus {
  background-color: #F5C2C7;
  color: #842029 !important;
}

/* --------------------------------------------------------------------------
   Formulaires
   -------------------------------------------------------------------------- */

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  border-color: var(--wsm-400);
  box-shadow: 0 0 0 .25rem rgba(52, 137, 121, .22);
}

.form-check-input:checked {
  background-color: var(--wsm-action);
  border-color: var(--wsm-action);
}

/* --------------------------------------------------------------------------
   Tableaux, onglets, pagination
   -------------------------------------------------------------------------- */

/* --- Zébrure ---
   Appliquée à toutes les listes, y compris celles qui n'ont pas reçu la classe
   .table-striped : les tableaux de l'application ont été écrits à des moments
   différents et n'étaient pas homogènes. Une ligne sur deux teintée suffit à
   suivre une ligne du regard jusqu'à la colonne Actions, ce qui devient
   nécessaire dès qu'un tableau dépasse la dizaine de lignes. */
.table {
  --bs-table-striped-bg: var(--wsm-50);
  --bs-table-striped-color: inherit;
}

.table > tbody > tr:nth-of-type(odd) > * {
  background-color: var(--wsm-50);
}

/* Le survol doit rester perceptible PAR-DESSUS la zébrure : il prend donc la
   nuance suivante, et une spécificité supérieure à la règle ci-dessus. */
.table.table-hover > tbody > tr:hover > *,
.table-hover > tbody > tr:hover > * {
  --bs-table-accent-bg: var(--wsm-100);
  background-color: var(--wsm-100);
}

/* Même principe pour les listes qui ne sont pas des tableaux. */
.list-group-flush > .list-group-item:nth-of-type(even) {
  background-color: var(--wsm-50);
}

/* --- Listes présentées sur deux colonnes ---
   Deux tableaux côte à côte se lisent comme un seul tableau à dix colonnes si
   rien ne les sépare : le regard passe de la colonne « Actions » de gauche au
   « Nom » de droite sans s'arrêter. Un filet vertical et une respiration
   suffisent à rétablir la frontière.
   Le filet ne s'affiche qu'à partir de « lg » : en dessous, les deux moitiés
   se remettent l'une sous l'autre et il deviendrait un trait en travers. */
@media (min-width: 992px) {
  .colonnes-partenaires > [class*="col-"] + [class*="col-"] {
    border-left: 2px solid var(--wsm-200);
    padding-left: calc(var(--bs-gutter-x) * .5 + .75rem);
  }
}

.nav-tabs .nav-link.active {
  color: var(--wsm-500);
  border-bottom-color: transparent;
}
.nav-tabs .nav-link:hover { color: var(--wsm-600); }

.page-link { color: var(--wsm-500); }
.page-item.active .page-link {
  background-color: var(--wsm-action);
  border-color: var(--wsm-action);
}

/* --------------------------------------------------------------------------
   Le logo
   Le fichier est en #348979 sur fond transparent. Posé sur la barre latérale,
   qui est de cette même couleur, il disparaîtrait : le filtre le rend blanc.
   « brightness(0) » écrase toutes les couleurs en noir, « invert(1) » retourne
   ce noir en blanc — la transparence, elle, est préservée.
   -------------------------------------------------------------------------- */

.wsm-logo-blanc {
  filter: brightness(0) invert(1);
}

/* --------------------------------------------------------------------------
   Accessibilité
   Restaure un anneau de focus visible au clavier, que le thème par défaut
   rend parfois trop discret sur fond coloré.
   -------------------------------------------------------------------------- */

a:focus-visible,
button:focus-visible,
.nav-link:focus-visible {
  outline: 3px solid var(--wsm-300);
  outline-offset: 2px;
}
