/* Charte du site NEXO — mise en page et habillage du site public.

   Les déclarations @font-face vivent dans polices.css, chargée partout ; cette
   feuille-ci ne l'est que sur le site et dans l'aperçu d'Elementor, jamais dans
   l'administration. */

/* Listes du contenu migré.
   Le site d'origine utilise padding-left: 20px et 8 px entre les puces
   (.usp-description ul) ; WordPress applique 40 px par défaut, ce qui décale
   visiblement les listes par rapport au titre de la carte. */
.elementor-widget-text-editor ul,
.elementor-widget-text-editor ol {
  margin: 0;
  padding-left: 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.elementor-widget-text-editor p {
  margin: 0 0 8px;
}

.elementor-widget-text-editor p:last-child {
  margin-bottom: 0;
}

/* Le contenu d'un éditeur de texte doit hériter de la couleur de son conteneur.
   Sans cela, un libellé posé sur un bouton à fond foncé reste sombre : la couleur
   réglée sur le bloc parent n'atteint jamais le paragraphe.

   Le préfixe « .elementor » n'est pas décoratif : Elementor pose ses propres
   couleur et graisse sur .elementor-widget-text-editor, et cette feuille est
   chargée avant la sienne. À sélectivité égale, c'est donc la sienne qui
   l'emporterait. */
.elementor .elementor-widget-text-editor,
.elementor .elementor-widget-text-editor p,
.elementor .elementor-widget-text-editor li {
  color: inherit;
}

/* Puces cochées des cartes « Détail de notre solution ».
   Sur le site d'origine, le composant Angular insère une image de coche devant
   chaque ligne. La coche est ici en SVG intégré : aucun fichier à résoudre, et
   rien à casser si la médiathèque change. */
.nx-liste-cochee ul,
.nx-liste-cochee ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.nx-liste-cochee p,
.nx-liste-cochee li {
  position: relative;
  padding-left: 24px;   /* .solution-pre-list li */
  margin: 0 0 8px;
  list-style: none;
}

.nx-liste-cochee li {
  margin-bottom: 0;
}

.nx-liste-cochee p:last-child {
  margin-bottom: 0;
}

.nx-liste-cochee p::before,
.nx-liste-cochee li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.3em;
  width: 16px;
  height: 16px;
  background: no-repeat center/contain
    url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="%23005057" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.5 3.5L13 5"/></svg>');
}

/* Même raison que pour la couleur : le widget Éditeur de texte impose sa graisse
   par un sélecteur plus spécifique que le bloc parent. Sans cette règle, la
   graisse réglée sur un conteneur — 500 pour le texte courant du site — n'atteint
   jamais le paragraphe. Le gras reste géré par <strong>, que le navigateur
   calcule relativement à la graisse héritée. */
.elementor .elementor-widget-text-editor,
.elementor .elementor-widget-text-editor p,
.elementor .elementor-widget-text-editor li {
  font-weight: inherit;
}

/* Le widget SVG insère le fichier tel quel dans une div dimensionnée par les
   styles ; le <svg> conserve alors sa taille intrinsèque et n'occupe pas sa
   boîte. Résultat : un glyphe de 8 px là où le site en affiche 14, à pastille
   identique. On le force à remplir son conteneur. */
.e-svg-base > svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* Les liens du contenu restent soulignés, comme sur le site d'origine.
   Elementor les neutralise avec « .elementor a { text-decoration: none } » :
   il faut donc une sélectivité au moins équivalente pour reprendre la main. */
.elementor .elementor-widget-text-editor a {
  text-decoration: underline;
  color: var(--Bleu-moyen);   /* « a { color: #97b9ff } », règle globale du site */
}

/* FAQ — accordéon imbriqué habillé comme la liste du site (.faq-item).
   Elementor génère ses propres règles préfixées par la classe du widget ; il
   faut donc au moins la même sélectivité pour reprendre la main, sinon rien
   ne s'applique. */
.nx-faq .elementor-widget-n-accordion .e-n-accordion,
.nx-faq .elementor-widget-n-accordion .e-n-accordion-item,
.nx-faq .elementor-widget-n-accordion .e-n-accordion-item > .e-con {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

/* un simple filet de séparation, comme .faq-item sur le site */
.nx-faq .elementor-widget-n-accordion .e-n-accordion-item {
  border-bottom: 1px solid var(--Bleu-pale);
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title {
  padding: 24px 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  cursor: pointer;
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-header {
  order: 0;
  flex: 1;
}

/* L'indicateur : chevron dans une pastille bleue arrondie, à droite — c'est le
   button.faq-toggle du site. Elementor le rend en +/− nu par défaut. */
.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon {
  order: 1;
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--Bleu-moyen);
  border-radius: 8px;
  color: var(--Teal);
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon span {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Le SVG d'icône d'Elementor porte sa propre couleur de remplissage : hériter
   de currentColor ne suffit pas, il faut la lui imposer. */
.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon svg,
.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon svg path {
  width: 16px;
  height: 16px;
  fill: var(--Teal);
}

/* Rotation du chevron à l'ouverture — la flèche seule, la pastille ne bouge pas.
   Elementor affiche deux <span> distincts, .e-closed et .e-opened, et bascule de
   l'un à l'autre : une transition posée sur un élément qui disparaît ne joue
   jamais. On n'en garde donc qu'un seul à l'écran, toujours le même, et c'est
   son SVG — qui persiste — que l'on fait pivoter. */
.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon .e-opened {
  display: none !important;
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon .e-closed {
  display: flex !important;
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon svg {
  transition: transform 0.3s ease;
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon svg {
  transform: rotate(180deg);
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon {
  transition: background-color 0.3s ease;
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title:hover .e-n-accordion-item-title-icon {
  background: var(--Bleu-vif);
}

/* Respect du réglage système « réduire les animations ». */
@media (prefers-reduced-motion: reduce) {
  .nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon,
  .nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-icon svg {
    transition: none;
  }
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item-title-text {
  margin: 0;
  font-family: "Satoshi", sans-serif;
  font-weight: 700;
  font-size: 20px;
  line-height: 130%;
  color: var(--Teal);
}

.nx-faq .elementor-widget-n-accordion .e-n-accordion-item > .e-con {
  padding: 0 0 24px;
  background: transparent;
}

/* Visuel du hero : l'image doit remplir son cadre arrondi sans se déformer.
   Le widget Image rend une <figure> à la taille naturelle du fichier.

   Le préfixe « .elementor » sur la règle de l'image n'est pas cosmétique :
   Elementor écrit « .elementor img { height: auto } », de même poids que
   « .nx-visuel-couvrant img », et sa feuille est chargée après celle-ci. Sans ce
   préfixe la hauteur retombe à celle du fichier — visible partout où le cadre
   est plus haut que l'image ne l'est naturellement, le hero des pages Solutions
   en premier, où 275 px de fond restaient nus sous la photo. */
.nx-visuel-couvrant,
.nx-visuel-couvrant .elementor-widget-image,
.nx-visuel-couvrant figure {
  width: 100%;
  height: 100%;
  margin: 0;
}

.elementor .nx-visuel-couvrant img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Contenu long : pages légales et pages statiques reprises du site Angular.
   Leur HTML porte ses propres titres et listes, il ne reste qu'à leur donner
   une hiérarchie et un rythme de lecture. */
.nx-contenu-long h2 {
  margin: 40px 0 16px;
  font-size: 32px;
  line-height: 110%;
  font-weight: 700;
  color: var(--Teal);
}

.nx-contenu-long h3 {
  margin: 32px 0 12px;
  font-size: 24px;
  line-height: 110%;
  font-weight: 700;
  color: var(--Teal);
}

.nx-contenu-long h4 {
  margin: 24px 0 8px;
  font-size: 20px;
  line-height: 130%;
  font-weight: 700;
  color: var(--Teal);
}

.nx-contenu-long > *:first-child {
  margin-top: 0;
}

/* Marqueur laissé par la migration là où un composant applicatif ne pouvait pas
   être transposé — le formulaire de contact. Visible en recette, à retirer une
   fois le formulaire reconstruit. */
.a-reconstruire::before {
  content: "À reconstruire : " attr(data-note);
  display: block;
  padding: 16px 24px;
  border: 2px dashed var(--Bleu-moyen);
  border-radius: 8px;
  font-weight: 700;
  color: var(--Teal);
}

/* Le pied de page reprend les deux fichiers que le site y met : le pictogramme
   « nexo.svg », déjà bleu et blanc, et le mot-symbole « Nexo-titre.svg », déjà
   livré en #F9FEFF. Aucun des deux ne demande de filtre — celui qui blanchissait
   l'ancien logo teal les aurait aplatis en un carré blanc. */

/* Le widget Menu génère ses couleurs avec .elementor-widget-nav-menu
   .elementor-nav-menu--main .elementor-item : il faut la même chaîne pour
   reprendre la main, un simple « a » ne suffit pas. */
.elementor-location-footer .elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item,
.elementor-location-footer .elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item:focus,
.elementor-location-footer .elementor-widget-nav-menu .elementor-nav-menu a {
  color: var(--Fond-de-page);
  font-weight: 500;
}

.elementor-location-footer .elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item:hover {
  color: var(--Bleu-moyen);
}

/* Liens du bloc de contact et des mentions, sur le même fond foncé. */
.elementor-location-footer .elementor-widget-text-editor a {
  color: var(--Fond-de-page);
}

.elementor-location-footer .elementor-widget-text-editor a:hover {
  color: var(--Bleu-moyen);
}

/* En-tête : le menu reprend la typographie du site — Satoshi Bold, teal. */
.elementor-location-header .elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item,
.elementor-location-header .elementor-nav-menu a {
  font-family: "Satoshi", sans-serif;
  font-weight: 700;
  font-size: 16px;
  color: var(--Teal);
}

/* Sous-menus déroulants : un panneau teal foncé, pas une liste claire — le
   .dropdown-content du site : fond #005057, largeur 589, marge 40, rayon bas
   16, ombre portée, et des entrées de 12/16 espacées de 12 px.

   Deux sélecteurs partout : le panneau du menu de bureau, un <ul> ouvert sous
   son entrée, et le volet du menu burger, un <nav> déplié sous le bouton. Ils
   partagent l'habillage mais pas la géométrie.

   Le préfixe « .elementor-nav-menu--main .elementor-nav-menu » n'est pas
   décoratif du côté bureau. Elementor Pro écrit ses propres valeurs sur
   exactement cette chaîne — « padding: 0 » sur le panneau, « padding: 13px
   20px » sur les entrées — et sur « ul.elementor-nav-menu--dropdown a » pour
   une bordure gauche transparente de 8 px. À une classe de moins, aucune des
   règles ci-dessous ne s'appliquait : le panneau s'affichait sans ses 40 px de
   marge, à la largeur que SmartMenus lui calculait. Le volet burger, lui,
   n'est pas dans « --main » : ces règles d'Elementor ne l'atteignent pas.

   Le site ne change pas la couleur du libellé au survol, ni dans la barre ni
   dans le panneau : il ne pose qu'un fond. */
.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown,
.elementor-location-header nav.elementor-nav-menu--dropdown {
  background: var(--Teal);
  border: 0;
  border-radius: 0 0 16px 16px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
  padding: 40px;
  font-size: 16px;
}

/* Géométrie propre au panneau de bureau : le volet burger occupe la largeur de
   l'écran et se place dans le flux, ces deux valeurs lui nuiraient. */
.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown {
  /* SmartMenus écrit « min-width: 10em » dans l'attribut style de l'élément :
     devant un style en ligne, seul « !important » passe. */
  min-width: 589px !important;
  /* Le panneau se pose sous la barre entière, comme le .dropdown-container du
     site, et non sous la seule entrée. L'en-tête laisse 16 px sous les 54 px de
     l'entrée, et « top: 100% » s'arrête à 54. Le « !important » répond à celui
     qu'Elementor pose sur « .elementor-nav-menu > li ul ». */
  top: calc(100% + 16px) !important;
}

.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown li,
.elementor-location-header nav.elementor-nav-menu--dropdown li {
  margin-bottom: 12px;
}

.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown li:last-child,
.elementor-location-header nav.elementor-nav-menu--dropdown li:last-child {
  margin-bottom: 0;
}

.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown a,
.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown a:focus,
.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown a:hover,
.elementor-location-header nav.elementor-nav-menu--dropdown a,
.elementor-location-header nav.elementor-nav-menu--dropdown a:focus,
.elementor-location-header nav.elementor-nav-menu--dropdown a:hover {
  background: transparent;
  color: var(--Fond-secondaire);
  font-family: "Satoshi", sans-serif;
  font-weight: 500;
  font-size: 16px;
  line-height: 150%;
  padding: 12px 16px;
  /* Elementor décale les sous-entrées d'une bordure gauche transparente de
     8 px ; le site n'en a pas. */
  border: 0;
  border-radius: 8px;
  transition: background-color 0.2s ease;
}

.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown a:hover,
.elementor-location-header nav.elementor-nav-menu--dropdown a:hover {
  background: rgba(151, 185, 255, 0.15);
}

/* Pages filles du menu Solutions : le site les décale d'un « └─ » dans une
   liste à plat, plutôt que de les enfermer dans un troisième niveau de
   sous-menu. Le préfixe est ici, pas dans le libellé enregistré en base :
   l'intitulé reste propre dans l'administration comme dans le fil d'Ariane. */
.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown .nx-sous-item > a::before,
.elementor-location-header nav.elementor-nav-menu--dropdown .nx-sous-item > a::before,
.elementor-location-footer .nx-sous-item > a::before {
  /* espace insécable : un espace ordinaire en fin de « content » est réduit à
     rien, et le glyphe se colle au libellé */
  content: "└─\00A0";
  opacity: 0.85;
}

.elementor-location-header .elementor-nav-menu--main
  .elementor-nav-menu ul.elementor-nav-menu--dropdown .nx-sous-item > a,
.elementor-location-header nav.elementor-nav-menu--dropdown .nx-sous-item > a {
  padding-left: 24px;
}

/* Listes des cartes « Nos services » de l'accueil (.service-features).
   Le site les rend sans coche : chaque entrée y est un <ul> imbriqué dans un
   autre, et le navigateur donne au second niveau une puce en cercle creux.
   On reproduit le résultat directement, sans l'imbrication. La règle générale
   des éditeurs de texte passe les <ul> en flex, ce qui supprime les puces —
   d'où le retour explicite à un affichage de bloc. */
.nx-liste-cercle .elementor-widget-text-editor ul {
  display: block;
  list-style: circle outside;
  padding-left: 40px;
  margin: 0;
}

.nx-liste-cercle .elementor-widget-text-editor li {
  display: list-item;
}

.nx-liste-cercle .elementor-widget-text-editor li + li {
  margin-top: 8px;
}

/* .service-links : les liens de bas de carte, soulignés et suivis d'une flèche.
   La flèche est une image sur le site ; ici c'est un pseudo-élément, ce qui
   évite un fichier de plus dans la médiathèque. Le soulignement porte sur le
   libellé seul — posé sur le lien entier, il passerait aussi sous la flèche. */
.nx-liens-fleches .elementor-widget-text-editor p {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  margin: 0;
}

.nx-liens-fleches .elementor-widget-text-editor a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  color: var(--Teal);
  text-decoration: none;
}

.nx-liens-fleches .elementor-widget-text-editor a > span {
  text-decoration: underline;
}

.nx-liens-fleches .elementor-widget-text-editor a::after {
  content: "";
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
  margin-left: 4px;
  background: no-repeat center/contain
    url("data:image/svg+xml;utf8,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.5878 2.24333C8.26337 1.91889 7.73735 1.91889 7.41292 2.24333C7.08848 2.56776 7.08848 3.09378 7.41292 3.41821L11.164 7.16932H2.83077C2.37195 7.16932 2 7.54127 2 8.00009C2 8.45891 2.37195 8.83086 2.83077 8.83086H11.1638L7.41292 12.5818C7.08848 12.9062 7.08848 13.4322 7.41292 13.7567C7.73735 14.0811 8.26337 14.0811 8.5878 13.7567L13.757 8.58744C14.0815 8.26301 14.0815 7.73699 13.757 7.41256L8.5878 2.24333Z' fill='%23005057'/%3E%3C/svg%3E");
}


/* Listes à puces du contenu migré, là où le site laisse au navigateur ses
   marqueurs par défaut — les étapes du processus, par exemple. La règle
   générale des éditeurs de texte passe les <ul> en flex pour maîtriser
   l'espacement, ce qui fait disparaître les puces : on revient donc ici à un
   affichage de bloc, et l'espacement passe par les marges. */
.nx-liste-puces .elementor-widget-text-editor ul {
  display: block;
  list-style: disc outside;
  padding-left: 40px;
  margin: 0;
}

.nx-liste-puces .elementor-widget-text-editor li {
  display: list-item;
}

.nx-liste-puces .elementor-widget-text-editor li + li {
  margin-top: 8px;
}

/* Pictogramme du téléphone de l'en-tête. Le site le dessine en SVG dans son
   gabarit Angular : le fichier n'existe pas dans la médiathèque, et l'importer
   pour un seul glyphe n'apporterait rien. */
.nx-picto-tel {
  background: no-repeat center/24px 24px url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24' viewBox='0 -960 960 960' fill='%23003034'%3E%3Cpath d='M798-120q-125 0-247-54.5T329-329Q229-429 174.5-551T120-798q0-18 12-30t30-12h162q14 0 25 9.5t13 22.5l26 140q2 16-1 27t-11 19l-97 98q20 37 47.5 71.5T387-387q31 31 65 57.5t72 48.5l94-94q9-9 23.5-13.5T670-393l138 28q14 4 23 14.5t9 23.5v162q0 18-12 30t-30 12Z'/%3E%3C/svg%3E");
}

/* Logo de la bannière large : il doit tenir dans son cadre sans être rogné,
   contrairement aux photos qui, elles, le remplissent. */
.nx-visuel-contenu,
.nx-visuel-contenu .elementor-widget-image,
.nx-visuel-contenu figure {
  width: 100%;
  height: 100%;
  margin: 0;
}

/* Même précaution que pour .nx-visuel-couvrant : sans le préfixe, la hauteur
   d'Elementor l'emporte. */
.elementor .nx-visuel-contenu img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left center;
  display: block;
}

/* .large-info-banner-description : paragraphes plus aérés qu'ailleurs — 16 px
   entre eux au lieu de 8. */
.nx-paragraphes-aeres .elementor-widget-text-editor p {
  margin: 0 0 16px;
}

.nx-paragraphes-aeres .elementor-widget-text-editor p:last-child {
  margin-bottom: 0;
}

/* .focus-card-content : mêmes puces disques, mais retrait de 24 px et non 40 —
   le site les habille là où il laisse ailleurs le retrait par défaut. */
.nx-liste-puces-compacte .elementor-widget-text-editor ul {
  display: block;
  list-style: disc outside;
  padding-left: 24px;
  margin: 0;
}

.nx-liste-puces-compacte .elementor-widget-text-editor li {
  display: list-item;
  margin-bottom: 8px;
}

.nx-liste-puces-compacte .elementor-widget-text-editor li:last-child {
  margin-bottom: 0;
}

/* Cartes « Réglementations / Défis » des pages Secteur : chaque ligne — <li> ou
   <p> selon la page — est précédée d'une coche, et la liste perd ses puces.
   Le composant Angular pose ces styles en attribut style sur chaque ligne ; ici
   ils sont regroupés sur la classe du bloc. */
.nx-puces-cochees .elementor-widget-text-editor ul,
.nx-puces-cochees .elementor-widget-text-editor ol {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.nx-puces-cochees .elementor-widget-text-editor li,
.nx-puces-cochees .elementor-widget-text-editor p {
  position: relative;
  list-style: none;
  padding-left: 24px;
  margin: 0 0 8px;
}

.nx-puces-cochees .elementor-widget-text-editor li:last-child,
.nx-puces-cochees .elementor-widget-text-editor p:last-child {
  margin-bottom: 0;
}

.nx-puces-cochees .elementor-widget-text-editor li::before,
.nx-puces-cochees .elementor-widget-text-editor p::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.25em;
  width: 16px;
  height: 16px;
  background: no-repeat center/contain
    url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="%23003034" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13.3334 4L6 11.3333L2.66669 8"/></svg>');
}

/* Listes des blocs longs des pages Solutions (.long-info-card-desc-full,
   .large-card-note-box, .defis-card-desc) : puces disques, retrait 20 px, et
   une respiration de 12 px avant et après la liste. */
.nx-liste-puces-serree .elementor-widget-text-editor ul {
  display: block;
  list-style: disc outside;
  padding-left: 20px;
  margin: 12px 0;
}

.nx-liste-puces-serree .elementor-widget-text-editor ul:first-child {
  margin-top: 0;
}

.nx-liste-puces-serree .elementor-widget-text-editor ul:last-child {
  margin-bottom: 0;
}

.nx-liste-puces-serree .elementor-widget-text-editor li {
  display: list-item;
  margin-bottom: 8px;
}

.nx-liste-puces-serree .elementor-widget-text-editor li:last-child {
  margin-bottom: 0;
}

/* Colonnes de navigation du pied de page (.footer-nav-section) : un intitulé de
   rubrique en 24 gras bleu moyen, puis ses liens en 14, sans puces. */
.elementor-location-footer .nx-liens-pied .elementor-widget-text-editor ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.elementor-location-footer .nx-liens-pied .elementor-widget-text-editor li {
  margin: 0;
  padding: 0;
  list-style: none;
}

.elementor-location-footer .nx-liens-pied .elementor-widget-text-editor a {
  color: var(--Fond-secondaire);
  font-size: 14px;
  line-height: 100%;   /* .nav-link : les liens se suivent de près */
  font-weight: 500;
  text-decoration: none;
}

.elementor-location-footer .nx-liens-pied .elementor-widget-text-editor a:hover {
  color: var(--Bleu-moyen);
}

/* .footer-bottom : un filet clair sépare les mentions du reste du pied de page.
   Le schéma d'Elementor ne sait poser une bordure que sur les quatre côtés à la
   fois — d'où cette règle pour n'en garder qu'un. */
.elementor-location-footer .nx-filet-haut {
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  margin-top: 30px;
  padding-top: 20px;
}


/* .legal-links : les mentions se suivent sur une ligne centrée, à 20 px les unes
   des autres, en blanc pur — et non dans le blanc bleuté du reste du pied de
   page. Elles ne sont soulignées qu'au survol. */
.elementor-location-footer .nx-liens-legaux .elementor-widget-text-editor p {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 20px;
  margin: 0;
}

.elementor-location-footer .nx-liens-legaux .elementor-widget-text-editor a,
.elementor-location-footer .nx-liens-legaux .elementor-widget-text-editor button {
  font-family: "Satoshi", sans-serif;
  font-weight: 500;
  font-size: 14px;
  line-height: 100%;
  letter-spacing: normal;
  color: #fff;
  text-decoration: none;
  padding: 5px 0;
  background: none;
  border: 0;
  cursor: pointer;
}

.elementor-location-footer .nx-liens-legaux .elementor-widget-text-editor a:hover,
.elementor-location-footer .nx-liens-legaux .elementor-widget-text-editor button:hover {
  text-decoration: underline;
  background: none;
}

/* Le libellé « Linkedin » du pied de page est souligné, celui du téléphone non :
   le premier est un <a> que le site laisse à sa décoration par défaut, le second
   porte « text-decoration: none ». */
.elementor-location-footer .nx-souligne .elementor-widget-text-editor p {
  text-decoration: underline;
}

/* ------------------------------------------------------------- en-tête -----
   Le site pose son en-tête en position fixe au-dessus du contenu, et compense
   par une marge haute sur la page. Trois peaux, choisies par la classe que
   nexo_charte_peau_entete() met sur le <body>. */

.elementor-location-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

body.admin-bar .elementor-location-header {
  top: 32px;
}

/* Dans l'éditeur Elementor, l'en-tête ne doit pas flotter.
   L'aperçu est une iframe : « position: fixed » s'y ancre au cadre, ou au
   premier ancêtre transformé qu'Elementor pose autour de la zone d'édition —
   et la marge haute du corps, qui n'est là que pour compenser un en-tête
   flottant, se retrouvait alors visible, en bande blanche au-dessus de lui.
   On rend donc l'en-tête au flux le temps de l'édition, et on retire la
   compensation. La classe n'existe que dans l'aperçu : le site n'est pas
   concerné. */
body.elementor-editor-active {
  padding-top: 0;
}

body.elementor-editor-active .elementor-location-header {
  position: static;
}

/* Voile sombre derrière le sous-menu ouvert — le .dropdown-backdrop du site :
   un rectangle plein écran sous l'en-tête, assombri et flouté, qui détache le
   panneau du contenu. Le site le crée en JS à l'ouverture ; ici c'est menu.js
   qui pose « nx-menu-ouvert » sur le <body> et mesure le bas de l'en-tête —
   86 px, ou 118 avec la barre d'administration.

   « pointer-events: none » : SmartMenus referme déjà au clic extérieur, et un
   voile qui capte les clics l'en empêcherait. z-index 999, juste sous
   l'en-tête (1000), dont le panneau ouvert fait partie. */
body.nx-menu-ouvert::after {
  content: "";
  position: fixed;
  inset: var(--nx-entete-bas, 86px) 0 0;
  z-index: 999;
  background-color: rgba(0, 0, 0, 0.3);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  pointer-events: none;
  animation: nx-fondu 0.3s ease-out;
}

@keyframes nx-fondu {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* « html body » et non « body » : le thème pose lui aussi une marge sur le
   corps, et cette feuille est chargée avant la sienne — à sélectivité égale
   c'est la sienne qui l'emporterait, et le contenu passerait sous l'en-tête. */
html body {
  padding-top: 86px;   /* hauteur de l'en-tête : 54 + 16 × 2 */

  /* Fond de page. Le site pose « body { background-color: #f9feff } » ; le thème
     WordPress, lui, laisse du blanc pur. La nuance est ténue mais elle se voit
     partout où aucune section ne peint : sous le contenu, derrière l'en-tête, et
     dans l'éditeur. Le réglage existe dans le kit Elementor mais cette version
     ne le compile en aucune règle — d'où la valeur ici. */
  background-color: #F9FEFF;
}

/* Le logo tient en deux fichiers, hauts de 42 px : le pictogramme puis le
   mot-symbole. Le widget Image ne règle qu'une largeur, d'où la hauteur ici. */
.nx-logo img {
  height: 42px;
  width: auto;
  display: block;
}

/* L'habillage — fond, couleur du logo, couleur du menu — vit désormais dans les
   deux modèles d'en-tête du Theme Builder, pas ici : il reste ainsi visible et
   modifiable dans l'éditeur. Ne restent que les deux réglages qu'Elementor ne
   sait pas exprimer. */

/* Le mot-symbole est livré en teal ; le site le blanchit sur l'en-tête sombre. */
.nx-logo-blanc img[src*="logoNew"] {
  filter: brightness(0) invert(1);
}

/* Filet sous l'en-tête clair. Le schéma d'Elementor ne pose une bordure que sur
   les quatre côtés à la fois. */
.elementor-location-header .nx-filet-bas {
  border-bottom: 1px solid #afb2b2;
}

/* Les pages Vision et Impact environnemental ont le même en-tête clair, teinté
   d'un bleu très pâle. Une nuance de fond sur deux pages ne justifiait pas un
   troisième modèle. */
body.nx-entete-bleutee .elementor-location-header > .e-con {
  background: #e0ebff;
}

/* .menu-item du site : 54 de haut, marge 8/16, coin arrondi.

   Les quatre états sont dans le même sélecteur, et ce n'est pas de la
   redondance. Elementor Pro écrit :

     .elementor-nav-menu--main .elementor-nav-menu a,
     .elementor-nav-menu--main .elementor-nav-menu a.highlighted,
     .elementor-nav-menu--main .elementor-nav-menu a:focus,
     .elementor-nav-menu--main .elementor-nav-menu a:hover { padding: 13px 20px }

   Sa forme « :hover » pèse (0,3,1) et battait la nôtre, (0,3,0) : au survol,
   l'entrée gagnait 8 px de large et poussait le reste du menu. Il faut donc
   répondre état par état, à sélectivité supérieure. */
.elementor-location-header .elementor-nav-menu--main .elementor-nav-menu .elementor-item,
.elementor-location-header .elementor-nav-menu--main .elementor-nav-menu .elementor-item:hover,
.elementor-location-header .elementor-nav-menu--main .elementor-nav-menu .elementor-item:focus,
.elementor-location-header .elementor-nav-menu--main .elementor-nav-menu .elementor-item.highlighted,
.elementor-location-header .elementor-nav-menu--main .elementor-nav-menu .elementor-item.elementor-item-active {
  height: 54px;
  padding: 8px 16px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  transition: background-color 0.2s ease;
  /* les entrées du site sont des boutons Material : elles portent son
     interlettrage, et sans lui les libellés sont sensiblement plus courts */
  letter-spacing: 0.0892857143em;
}

/* Elementor répartit l'écart entre entrées par une variable, moitié de chaque
   côté du lien : 20 px donnent les 40 du site. Une marge posée sur le <li> ne
   sert à rien — le <ul> n'est pas l'enfant direct de .elementor-nav-menu--main. */
.elementor-location-header .elementor-nav-menu--main {
  --e-nav-menu-horizontal-menu-item-margin: 20px;
}

/* Liste des engagements des piliers de /vision : mêmes coches que les autres
   listes, mais en bleu moyen — c'est le check-blue.svg du site. */
.nx-liste-cochee-bleue .elementor-widget-text-editor p {
  position: relative;
  padding-left: 28px;
  margin: 0 0 12px;
}

.nx-liste-cochee-bleue .elementor-widget-text-editor p:last-child {
  margin-bottom: 0;
}

.nx-liste-cochee-bleue .elementor-widget-text-editor p::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.25em;
  width: 16px;
  height: 16px;
  background: no-repeat center/contain
    url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="%2397B9FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.5 3.5L13 5"/></svg>');
}

/* ------------------------------------------------------- interlettrage -----
   Le <body> du site porte « class="mat-typography" » : tout son texte hérite de
   l'interlettrage d'Angular Material, et chaque niveau de titre du sien. Ce
   n'est pas un choix graphique explicite, mais c'est ce que le site affiche —
   sans ces valeurs, chaque ligne est sensiblement plus courte que l'originale.

   Les éléments qui déclarent leur propre interlettrage — boutons (0.0893em, la
   valeur des boutons Material) et quelques titres à -0.02em — le posent dans
   leurs styles Elementor et l'emportent donc sur ces règles. */

html body {
  letter-spacing: 0.0178571429em;
}

.elementor h1 {
  letter-spacing: normal;
}

.elementor h2 {
  letter-spacing: 0.0125em;
}

.elementor h3 {
  letter-spacing: 0.009375em;
}

.elementor h4 {
  letter-spacing: 0.03125em;
}

/* Les trois états d'une entrée de menu.

   Le site en distingue trois, et pas seulement au survol :
     repos    fond transparent
     survol   un fond léger — 10 % de teal sur les en-têtes clairs,
              15 % de bleu moyen sur l'en-tête teal de l'accueil
     ouvert   fond teal plein et libellé clair sur les en-têtes clairs ;
              retour au transparent sur l'en-tête teal, où un pavé teal
              serait invisible de toute façon

   Elementor ne règle qu'une couleur de texte au survol, jamais de fond, d'où
   ces règles. « .highlighted » est la classe que SmartMenus pose sur l'entrée
   dont le sous-menu est déplié : c'est notre état « ouvert ». Elle est répétée
   avec « :hover » pour que l'ouvert l'emporte quand la souris est encore
   dessus, comme le fait le « !important » du site.

   La chaîne de sélecteurs est longue à dessein : Elementor écrit la couleur du
   menu avec « .elementor-361 .elementor-element.elementor-element-nxhdrmenu
   .elementor-nav-menu--main .elementor-item », soit cinq classes, et cette
   feuille est chargée avant la sienne. En dessous de six classes, le libellé
   de l'entrée ouverte resterait teal sur fond teal — donc invisible. */

.elementor-location-header .nx-entete-claire .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item:hover,
.elementor-location-header .nx-entete-claire .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item:focus-visible {
  background-color: rgba(0, 80, 87, 0.1);
}

.elementor-location-header .nx-entete-teal .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item:hover,
.elementor-location-header .nx-entete-teal .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item:focus-visible {
  background-color: rgba(151, 185, 255, 0.15);
}

.elementor-location-header .nx-entete-claire .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item.highlighted,
.elementor-location-header .nx-entete-claire .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item.highlighted:hover,
.elementor-location-header .nx-entete-claire .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item.highlighted:focus-visible {
  background-color: var(--Teal);
  /* « !important » à contrecœur, mais il n'y a pas d'autre voie propre :
     après un clic l'entrée a le focus, et Elementor écrit la couleur de son
     menu sur « .elementor-item:hover, .elementor-item:focus » — même poids que
     cette règle, mais plus loin dans la cascade, puisque cette feuille est
     chargée avant la sienne. Sans cela le libellé reste teal sur fond teal,
     donc illisible. Le site d'origine fait de même sur toutes ses règles de
     menu. */
  color: var(--Fond-de-page) !important;
  fill: var(--Fond-de-page) !important;
}

.elementor-location-header .nx-entete-teal .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item.highlighted,
.elementor-location-header .nx-entete-teal .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item.highlighted:hover,
.elementor-location-header .nx-entete-teal .elementor-nav-menu--main
  .elementor-nav-menu .elementor-item.highlighted:focus-visible {
  /* Sur l'en-tête teal, le site garde la teinte du survol pour l'entrée
     ouverte : « .menu-item.active{background-color:#97b9ff26!important} », la
     dernière de deux règles à sélectivité égale. Un pavé teal plein y serait de
     toute façon invisible. */
  background-color: rgba(151, 185, 255, 0.15);
}

/* ============================================================================
   RESPONSIVE — page d'accueil et éléments partagés
   ============================================================================
   Le site garde son menu horizontal jusqu'en tablette et ne passe en barre
   compacte (logo + burger) qu'au mobile. On aligne la recette sur ce
   comportement, et on répare l'en-tête qui s'empilait en colonne. */

/* -------------------------------------------------- en-tête mobile (≤ 767) --- */
@media (max-width: 1024px) {

  /* La barre reste une ligne : logo à gauche, burger à droite — et non une
     colonne qui empile logo, menu, téléphone et bouton sur 357 px de haut. */
  .elementor-location-header [class*="nxhdrin"] {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 16px !important;
    padding: 12px 20px !important;
  }

  .elementor-location-header [class*="nxhdrnav"] {
    flex-direction: row !important;
    align-items: center !important;
    flex: 0 0 auto !important;
    width: auto !important;
    gap: 0 !important;
  }

  /* Téléphone et bouton « Nous contacter » vivent dans le tiroir du site, pas
     dans la barre. Faute de tiroir en MVP, on les retire de la barre mobile
     pour garder un en-tête propre — logo + menu burger, comme l'original. */
  .elementor-location-header [class*="nxhdract"] {
    display: none !important;
  }

  /* Le bouton burger, calé à droite et lisible sur les deux fonds. Elementor
     colore l'icône avec « fill: #33373d » : il faut donc viser le SVG, pas
     seulement « color ». Teal sur en-tête clair, clair sur en-tête teal. */
  .elementor-location-header .elementor-menu-toggle {
    margin: 0 !important;
    background: transparent !important;
  }
  .elementor-location-header .elementor-menu-toggle svg,
  .elementor-location-header .elementor-menu-toggle .e-font-icon-svg {
    fill: var(--Teal) !important;
    width: 28px;
    height: 28px;
  }
  .elementor-location-header .nx-entete-teal .elementor-menu-toggle svg,
  .elementor-location-header .nx-entete-teal .elementor-menu-toggle .e-font-icon-svg {
    fill: var(--Fond-secondaire) !important;
  }

  /* Le panneau du menu déplié occupe la largeur, sans la largeur minimale de
     589 px héritée du sous-menu de bureau, qui déborderait l'écran. */
  .elementor-location-header .elementor-nav-menu--dropdown,
  .elementor-location-header .elementor-nav-menu--main
    .elementor-nav-menu ul.elementor-nav-menu--dropdown {
    min-width: 0 !important;
    width: 100% !important;
    padding: 16px !important;
    border-radius: 0 0 16px 16px;
  }

  /* L'en-tête compact fait environ 66 px : on ajuste la marge haute du corps
     (86 px en bureau) pour ne pas laisser de bande vide sous la barre fixe. */
  html body {
    padding-top: 66px;
  }
}
