/*
 * Cap Excellence — correctif accessibilité 1.0
 * Préparés le 22 octobre 2026 à partir du site public.
 * À charger APRÈS les styles de Flex et de SP Page Builder.
 * Lire INSTALLATION.txt avant intégration.
 * Ce fichier ne constitue pas une mise en conformité RGAA complète.
 */

/* 1. Focus clavier. Le double contour facilite le repérage sur fond clair
 * ou foncé. Vérifier qu'aucun parent ne rogne le contour.
 * Les !important compensent notamment la suppression locale du focus
 * dans l'addon de recherche de la page d'accueil.
 */
#sppb-addon-1700451745140 .form-search input:focus-visible,
body a[href]:focus-visible,
body button:focus-visible,
body input:focus-visible,
body select:focus-visible,
body textarea:focus-visible,
body [tabindex]:focus-visible {
  outline: 3px solid #111111 !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 6px #ffffff !important;
}

/* 2. Recherche centrale : #595959 sur #fff donne environ 7:1.
 * Ciblage volontaire du champ dont le fond blanc a été vérifié.
 * Une étiquette HTML reste nécessaire : le placeholder ne la remplace pas.
 */
#mod-finder-searchword209::placeholder {
  color: #595959 !important;
  opacity: 1 !important;
}

/* 3. Classe utilitaire pour un texte destiné aux lecteurs d'écran.
 * Préférer une étiquette visible pour les formulaires quand la place le permet.
 */
.ce-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* 4. Présentation du lien d'évitement à ajouter au début de <body>.
 * Cette feuille ne crée ni le lien ni son point d'arrivée HTML.
 */
a.ce-skip-link {
  position: fixed;
  top: 0.75rem;
  left: 0.75rem;
  z-index: 100000;
  max-width: calc(100vw - 1.5rem);
  padding: 0.75rem 1rem;
  background: #5f308c;
  color: #ffffff;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  text-decoration: underline;
  border-radius: 0.25rem;
  transform: translateY(calc(-100% - 2rem));
}

a.ce-skip-link:focus,
a.ce-skip-link:focus-visible {
  transform: none;
  background: #5f308c;
  color: #ffffff;
}

/* Ajuster 8rem si l'en-tête fixe occupe davantage de place après zoom. */
#sp-component {
  scroll-margin-top: 8rem;
}

@media (forced-colors: active) {
  #sppb-addon-1700451745140 .form-search input:focus-visible,
  body a[href]:focus-visible,
  body button:focus-visible,
  body input:focus-visible,
  body select:focus-visible,
  body textarea:focus-visible,
  body [tabindex]:focus-visible {
    outline: 3px solid Highlight !important;
    box-shadow: none !important;
  }
}


/* Cap Excellence — styles du module menu.js, version 1.
 * Ajouter après les styles Flex. Aucune modification des menus sans JS associé.
 */
:root { --ce-menu-a11y-styles: ready; }

/* hidden doit primer sur les animations :hover historiques de Flex. */
#sp-header .ce-desktop-menu .ce-menu-panel[hidden],
.offcanvas-menu[data-ce-mobile-menu][hidden] {
  display: none !important;
}
#sp-header .ce-desktop-menu .ce-menu-branch.ce-menu-open > .ce-menu-panel {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
}

/* Les liens réels restent des liens ; le bouton adjacent gère le sous-menu. */
#sp-header .ce-desktop-menu .ce-menu-split {
  display: flex;
  align-items: stretch;
}
#sp-header .ce-desktop-menu .ce-menu-split > .ce-menu-parent-link {
  display: block !important;
  flex: 1 1 auto;
  min-width: 0;
}
#sp-header .ce-desktop-menu .ce-menu-branch > a::after {
  display: none !important;
}
#sp-header .ce-desktop-menu .ce-menu-toggle {
  appearance: none;
  border: 0;
  border-radius: 0.2rem;
  margin: 0;
  background: transparent;
  color: #252230;
  font: inherit;
  font-size: inherit;
  line-height: 1.4;
  cursor: pointer !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  min-height: 2.75rem;
  padding: 0.5rem 0.65rem;
  vertical-align: middle;
  box-sizing: border-box;
}
#sp-header .ce-desktop-menu > .ce-menu-branch > .ce-menu-label {
  height: 100%;
  padding: 0 12px;
}
#sp-header .ce-desktop-menu .ce-menu-icon-only {
  flex: 0 0 2rem;
  width: 2rem;
  padding: 0;
}
#sp-header .ce-desktop-menu .ce-menu-toggle:hover,
#sp-header .ce-desktop-menu .ce-menu-toggle[aria-expanded="true"] {
  background: #f0e8f6;
  color: #5f308c;
}
#sp-header .ce-desktop-menu .ce-menu-chevron {
  display: inline-block;
  width: 0.45rem;
  height: 0.45rem;
  border: solid currentColor;
  border-width: 0 0.12rem 0.12rem 0;
  transform: translateY(-0.1rem) rotate(45deg);
  flex-shrink: 0;
}
#sp-header .ce-desktop-menu .ce-menu-toggle[aria-expanded="true"] .ce-menu-chevron {
  transform: translateY(0.1rem) rotate(225deg);
}
#sp-header .ce-desktop-menu .ce-menu-group-title,
#sp-header .ce-desktop-menu .ce-menu-text {
  display: block;
  padding: 5px 10px;
  margin-bottom: 2px;
  color: #333333;
  font-size: 90%;
}
#sp-header .ce-desktop-menu .ce-menu-group-title {
  text-transform: uppercase;
  font-weight: 700;
}

/* Menu mobile slidetop : panneau réellement retiré du parcours quand fermé. */
body.ce-mobile-menu-open { overflow: hidden; }
.offcanvas-menu[data-ce-mobile-menu] {
  width: min(320px, 100vw);
  max-width: 100vw;
  height: 100vh;
  height: 100dvh;
  overscroll-behavior: contain;
}
.offcanvas-menu[data-ce-mobile-menu] .offcanvas-inner {
  padding-top: 3.5rem;
}
button#offcanvas-toggler.ce-mobile-menu-trigger {
  appearance: none;
  border: 0;
  padding: 0;
  background: transparent;
  color: #5f308c;
  font: inherit;
  cursor: pointer;
}
.offcanvas-menu[data-ce-mobile-menu] button.ce-mobile-menu-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  width: 44px;
  height: 44px;
  padding: 0;
  top: 0.5rem;
  right: 0.5rem;
  background: #ffffff;
  color: #5f308c;
  border: 1px solid #5f308c;
  font-size: 1rem;
  cursor: pointer;
}
.offcanvas-menu[data-ce-mobile-menu] .accordion-menu .ce-mobile-parent-link {
  padding-right: 3.25rem !important;
}
.offcanvas-menu[data-ce-mobile-menu] .accordion-menu .ce-mobile-menu-text {
  display: block;
  padding: 10px 20px;
  line-height: 28px;
  color: #ffffff;
}
.offcanvas-menu[data-ce-mobile-menu] .accordion-menu ul > li > .ce-mobile-menu-text {
  text-indent: 10px;
}
.offcanvas-menu[data-ce-mobile-menu] .accordion-menu ul > li > ul > li > .ce-mobile-menu-text {
  text-indent: 20px;
}
.offcanvas-menu[data-ce-mobile-menu] .accordion-menu button.ce-mobile-submenu-toggle {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0 !important;
  margin: 0;
  border: 1px solid transparent;
  border-radius: 0.2rem;
  background: transparent;
  color: #ffffff;
  font: inherit;
  text-indent: 0;
  cursor: pointer;
}
.offcanvas-menu[data-ce-mobile-menu] .accordion-menu button.ce-mobile-submenu-toggle:hover {
  background: #f0e8f6;
  color: #5f308c;
}

/* Le panneau observé utilise le fond violet #5f308c des options Flex. */
.offcanvas-menu[data-ce-mobile-menu] input[id^="mod-finder-searchword"] {
  color: #ffffff;
}
.offcanvas-menu[data-ce-mobile-menu] input[id^="mod-finder-searchword"]::placeholder {
  color: #ffffff;
  opacity: 1;
}

/* Ciblage exclusif des commandes créées ici ; conserver la feuille de focus globale. */
#sp-header .ce-desktop-menu button:focus-visible,
button#offcanvas-toggler.ce-mobile-menu-trigger:focus-visible,
.offcanvas-menu[data-ce-mobile-menu] button:focus-visible {
  outline: 3px solid #111111 !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 5px #ffffff !important;
}
@media (forced-colors: active) {
  #sp-header .ce-desktop-menu button:focus-visible,
  button#offcanvas-toggler.ce-mobile-menu-trigger:focus-visible,
  .offcanvas-menu[data-ce-mobile-menu] button:focus-visible {
    outline-color: Highlight !important;
    box-shadow: none !important;
  }
}
@media (prefers-reduced-motion: reduce) {
  .offcanvas-menu[data-ce-mobile-menu] { transition: none !important; }
}
