/* =========================================
   _shared/css/bootstrap-overrides.css
   Neutralise le bleu Bootstrap (#0d6efd) sur les composants qui
   ne sont pas couverts par les utilities text-*/bg-* :
   pagination, breadcrumb, alert, dropdown, list-group, nav-pills,
   form-check, accordion.

   Stratégie : on n'impose pas de couleur dure ; on s'appuie sur
   var(--bs-primary) qui est SOIT overridée par le thème dans son
   main.css, SOIT prend ici le fallback brand NAMES LEGAL #337e16
   (vert) pour qu'aucun thème ne sorte du #0d6efd Bootstrap par défaut.

   Chargé par TOUS les base.html des thèmes, APRÈS bootstrap.min.css
   et APRÈS le main.css du thème (donc les thèmes ont le dernier mot).
   ========================================= */

/* ---------- Fallback brand au cas où un thème n'override pas --bs-primary
   (NAMES LEGAL palette : vert #337e16). Si le thème définit déjà
   --bs-primary dans son :root, sa valeur écrase celle-ci.
   On ne met PAS de !important pour ne pas casser les overrides
   spécifiques au thème. ---------- */
:root {
    --bs-primary-fallback:      #337e16;
    --bs-primary-rgb-fallback:  51, 126, 22;
}

/* ---------- Pagination ----------
   Couleur du lien = primary du thème (laiton steampunk, vert corporate,
   etc.). Active = même couleur en background.
*/
.pagination .page-link {
    color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    background-color: transparent;
    border-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.25);
}
.pagination .page-link:hover {
    color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    background-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.1) !important;
    border-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.4);
}
.pagination .page-item.active .page-link,
.pagination .page-link.active {
    background-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    border-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    color: #fff !important;
}
.pagination .page-item.disabled .page-link {
    color: rgba(var(--bs-body-color-rgb, 33, 37, 41), 0.4) !important;
    background-color: transparent;
    border-color: rgba(var(--bs-body-color-rgb, 33, 37, 41), 0.15);
}

/* ---------- Breadcrumb ---------- */
.breadcrumb .breadcrumb-item a {
    color: var(--bs-primary, var(--bs-primary-fallback)) !important;
}
.breadcrumb .breadcrumb-item.active {
    color: var(--bs-body-color, #333) !important;
}

/* ---------- Liens "génériques" sans classe explicite ----------
   Les <a> dans le contenu qui n'ont pas .text-*, .btn, .nav-link, etc.
   héritent souvent du bleu Bootstrap natif. On force le primary thème.
   Les exclusions sont enveloppées dans :where() (spécificité 0) : la règle bat
   les liens nus (a) mais PERD face à toute règle de composant du thème (chips,
   filtres, pastilles .is-active…) qui définit sa propre couleur. Sinon ces
   composants à fond coloré héritaient du primary -> texte primary sur fond
   primary (invisible). */
main a:where(:not([class*="btn"]):not([class*="text-"]):not(.nav-link):not(.navbar-brand):not(.dropdown-item):not(.page-link):not(.breadcrumb-item):not(.is-active)) {
    color: var(--bs-primary, var(--bs-primary-fallback));
}
main a:where(:not([class*="btn"]):not([class*="text-"]):not(.nav-link):not(.navbar-brand):not(.dropdown-item):not(.page-link):not(.breadcrumb-item):not(.is-active)):hover {
    color: var(--bs-primary, var(--bs-primary-fallback));
    opacity: 0.8;
}

/* ---------- Alerts ---------- */
.alert-primary {
    color: var(--bs-primary-text-emphasis, var(--bs-primary, var(--bs-primary-fallback))) !important;
    background-color: var(--bs-primary-bg-subtle, rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.1)) !important;
    border-color: var(--bs-primary-border-subtle, rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.25)) !important;
}

/* ---------- Dropdown : items actifs/hover ---------- */
.dropdown-item.active,
.dropdown-item:active {
    background-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    color: #fff !important;
}
.dropdown-item:hover,
.dropdown-item:focus {
    background-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.1);
    color: var(--bs-primary, var(--bs-primary-fallback));
}

/* ---------- list-group : items actifs ---------- */
.list-group-item.active {
    background-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    border-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    color: #fff !important;
}
.list-group-item-action:hover,
.list-group-item-action:focus {
    background-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.08);
    color: var(--bs-primary, var(--bs-primary-fallback));
}

/* ---------- nav-pills : pill active ---------- */
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
    background-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    color: #fff !important;
}
.nav-pills .nav-link {
    color: var(--bs-primary, var(--bs-primary-fallback));
}

/* ---------- Form check : input coché ---------- */
.form-check-input:checked {
    background-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
    border-color: var(--bs-primary, var(--bs-primary-fallback)) !important;
}
.form-check-input:focus {
    border-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.5);
    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.2);
}

/* ---------- Accordion : item ouvert ---------- */
.accordion-button:not(.collapsed) {
    color: var(--bs-primary, var(--bs-primary-fallback));
    background-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.08);
}
.accordion-button:focus {
    border-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.35);
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.2);
}

/* ---------- Spinner ---------- */
.spinner-border.text-primary,
.spinner-grow.text-primary {
    color: var(--bs-primary, var(--bs-primary-fallback)) !important;
}

/* ---------- Form focus state ---------- */
.form-control:focus,
.form-select:focus {
    border-color: rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.5);
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb, var(--bs-primary-rgb-fallback)), 0.15);
}


/* ---------- Nuit : liens de contenu & fil d'Ariane lisibles ----------
   Les règles ci-dessus forcent les liens (main a, breadcrumb) à --bs-primary,
   qui est souvent SOMBRE en mode nuit (vert/violet de marque) -> peu lisible
   sur fond sombre. En nuit on bascule sur --bs-primary-text-emphasis (teinte
   claire ; les thèmes qui la définissent gardent leur teinte de marque, sinon
   Bootstrap fournit une valeur claire par défaut). */
[data-bs-theme="dark"] .breadcrumb .breadcrumb-item a {
    color: var(--bs-primary-text-emphasis, #8ab4ff) !important;
}
[data-bs-theme="dark"] main a:where(:not([class*="btn"]):not([class*="text-"]):not(.nav-link):not(.navbar-brand):not(.dropdown-item):not(.page-link):not(.breadcrumb-item):not(.is-active)) {
    color: var(--bs-primary-text-emphasis, #8ab4ff);
}


/* ---------- Boutons primaires ----------
   Bootstrap compile .btn-primary avec des couleurs EN DUR (--bs-btn-bg:#0d6efd)
   qui n'écoutent PAS var(--bs-primary). Un thème qui redéfinit --bs-primary voit
   donc .bg-primary/.badge suivre, mais ses BOUTONS restent bleus Bootstrap
   (constaté : boutons sociaux/lang switcher hors charte sur web-designer & co).
   On mappe les --bs-btn-* du bouton sur le primary du thème (hover/active en
   color-mix). Même sélecteur que Bootstrap + chargé APRÈS le CSS du thème -> on
   gagne sans !important, et un thème peut toujours surcharger sa propre règle. */
.btn-primary {
    --bs-btn-bg: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-border-color: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-hover-bg: color-mix(in srgb, var(--bs-primary, var(--bs-primary-fallback)) 88%, #000);
    --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-primary, var(--bs-primary-fallback)) 85%, #000);
    --bs-btn-active-bg: color-mix(in srgb, var(--bs-primary, var(--bs-primary-fallback)) 82%, #000);
    --bs-btn-active-border-color: color-mix(in srgb, var(--bs-primary, var(--bs-primary-fallback)) 80%, #000);
    --bs-btn-disabled-bg: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-disabled-border-color: var(--bs-primary, var(--bs-primary-fallback));
}
.btn-outline-primary {
    --bs-btn-color: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-border-color: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-hover-bg: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-hover-border-color: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-active-bg: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-active-border-color: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-disabled-color: var(--bs-primary, var(--bs-primary-fallback));
    --bs-btn-disabled-border-color: var(--bs-primary, var(--bs-primary-fallback));
}
