/* 
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Elementor Team
Author URI: https://elementor.com/
Template: hello-elementor
Version: 2.0.37
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/* Add your custom styles here */

/* logia-ok: le kit ne charge que les romains deja utilises (300, 500).
   La citation 2755:269 est en Light Italic, les roles de l equipe en
   SemiBold 600, le chapo des valeurs 2755:114 en Bold 700, le telephone
   et l e-mail du CTA en Regular 400. Sans ces fichiers le navigateur
   synthetise. */
@import url("https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,600;0,700;1,300&display=swap");

/* ==========================================================================
   HERO — a coller dans le style.css du child theme, avec les autres tokens.
   Livre par le plugin logia-elementor (starter/socle-hero.css).
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Hauteur du header
   --------------------------------------------------------------------------
   Ces valeurs sont un REPLI, pas la verite. logia-header-h.js les ecrase avec
   la hauteur reellement mesuree des le premier passage.

   A MESURER sur le live aux trois largeurs, header COMPRIS BANDEAU PROMO, puis
   ARRONDIR VERS LE HAUT. Se tromper vers le haut fait un hero un peu court
   pendant un frame ; se tromper vers le bas le fait deborder puis sauter.

   Attention a l'intervalle 1024-1200 : c'est la que le bandeau promo passe
   souvent sur deux lignes. Mesure DANS cet intervalle, pas seulement aux
   breakpoints.
   -------------------------------------------------------------------------- */
:root {
  --logia-header-h: 80px;          /* mesure 1440 et 1200 : 80 */
  /* DEUX valeurs distinctes : rien ne garantit que l'espacement sous le header
     egale la marge laterale. Sur Bollard, Figma donne 29 en haut et 39 sur les
     cotes. Ne les fusionne pas.
     La marge laterale vaut souvent la gouttiere du kit a un pixel pres : si
     c'est le cas, REFERENCE le token de gouttiere au lieu d'en creer un
     doublon qui se desynchronisera. */
  --logia-hero-gap-block: 0px;     /* espacement header -> hero encadre */
  --logia-hero-gap-inline: 0px;    /* marge laterale du hero encadre */
  --logia-hero-radius: 0px;        /* rayon du hero encadre */
}

@media (max-width: 1024px) {
  :root {
    --logia-header-h: 96px;        /* mesure 1024 et 768 : 96 */
  }
}

@media (max-width: 767px) {
  :root {
    --logia-header-h: 72px;        /* mesure 390 : 72 */
  }
}

/* --------------------------------------------------------------------------
   2. Hero pleine hauteur
   --------------------------------------------------------------------------
   Les deux min-height ne sont pas une erreur : un navigateur qui ignore svh
   garde la premiere ligne. Pas de @supports a ecrire.

   svh et non dvh : le dynamique redimensionne le hero PENDANT le defilement,
   donc saut de mise en page a chaque apparition de la barre d'URL. Le small
   donne la plus petite hauteur, donc stable.

   Une seule expression pour tous les paliers : svh vaut vh la ou il n'y a pas
   de barre retractable. Ce qui change entre paliers, c'est --logia-header-h.

   NE POSE AUCUNE HAUTEUR DANS LE PANNEAU ELEMENTOR sur un element qui porte
   cette classe : deux sources pour une meme valeur, et l'ordre de chargement
   decide laquelle gagne.
   -------------------------------------------------------------------------- */
/* _css_classes est une chaine unique : Elementor ne sait pas conditionner une
   classe par palier. La classe reste donc posee partout, et c'est le socle qui
   decide ou elle agit. En mobile la hauteur redevient celle du contenu -- un
   header de 704 px sur un ecran de 800 ne laisse rien a soustraire (regle hero,
   seuil des 40 %). */
@media (min-width: 768px) {
  .logia-hero-plein {
    min-height: calc(100vh - var(--logia-header-h));
    min-height: calc(100svh - var(--logia-header-h));
  }
}

/* --------------------------------------------------------------------------
   3. Hero encadre
   --------------------------------------------------------------------------
   L'espacement sous le header n'est pas une option qu'on ajoute : il fait
   partie de ce pattern, au meme titre que la marge laterale et le rayon. C'est
   pour ca qu'ils sont dans la MEME classe.

   margin et non padding : le hero a son propre fond, un padding ferait
   descendre ce fond dans l'espacement au lieu de laisser respirer.
   -------------------------------------------------------------------------- */
.logia-hero-encadre {
  margin-block-start: var(--logia-hero-gap-block);
  margin-inline: var(--logia-hero-gap-inline);
  border-radius: var(--logia-hero-radius);
  overflow: hidden;                /* pour que le fond suive les coins */
}

/* Hero encadre qui doit AUSSI tenir dans l'ecran : la marge haute et la marge
   basse se soustraient en plus du header. */
@media (min-width: 768px) {
  .logia-hero-encadre.logia-hero-plein {
    min-height: calc(100vh - var(--logia-header-h) - (var(--logia-hero-gap-block) * 2));
    min-height: calc(100svh - var(--logia-header-h) - (var(--logia-hero-gap-block) * 2));
  }
}

/* ==========================================================================
   Socle Logia — formulaires Elementor : libellé flottant
   --------------------------------------------------------------------------
   Activation : widget Formulaire > Avancé > Classes CSS : logia-form-flottant
                + Contenu > Libellé : Afficher
                + un placeholder sur CHAQUE champ texte (sans placeholder,
                  :placeholder-shown ne s'applique jamais et le libellé reste visible)
   Réglages par projet : surcharger les variables sur .logia-form-flottant
   (child theme ou classe de variante), jamais dans le widget.
   ========================================================================== */

.logia-form-flottant {
  --logia-label-bg: var(--e-global-color-primary);
  --logia-label-color: var(--e-global-color-blanc, #fff);
  --logia-label-size: 0.7rem;
  --logia-label-x: 1.25rem;      /* aligné sur le padding gauche des champs */
  --logia-label-y: -4px;         /* le libellé chevauche la bordure haute */
  --logia-label-radius: 5px;
  --logia-label-duree: 300ms;
}

/* Seuls les champs de saisie ont un libellé flottant. Cases, boutons radio,
   acceptation, envoi de fichier, HTML et captcha gardent leur libellé normal. */
.logia-form-flottant :is(
  .elementor-field-type-text,
  .elementor-field-type-email,
  .elementor-field-type-tel,
  .elementor-field-type-url,
  .elementor-field-type-number,
  .elementor-field-type-password,
  .elementor-field-type-date,
  .elementor-field-type-time,
  .elementor-field-type-textarea,
  .elementor-field-type-select
) {
  position: relative;
}

/* logia-ok: aucun reglage natif ne positionne le libelle par-dessus le champ ;
   !important sur le padding : le widget pose l'espacement du libelle en padding */
.logia-form-flottant :is(
  .elementor-field-type-text,
  .elementor-field-type-email,
  .elementor-field-type-tel,
  .elementor-field-type-url,
  .elementor-field-type-number,
  .elementor-field-type-password,
  .elementor-field-type-date,
  .elementor-field-type-time,
  .elementor-field-type-textarea,
  .elementor-field-type-select
) > .elementor-field-label {
  position: absolute;
  top: var(--logia-label-y);
  left: var(--logia-label-x);
  z-index: 2;
  transform: translateY(-50%);
  padding: 2px 5px !important;
  border-radius: var(--logia-label-radius);
  background-color: var(--logia-label-bg);
  color: var(--logia-label-color);
  font-size: var(--logia-label-size);
  line-height: 1;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--logia-label-duree) ease;
}

/* Visible dès que le champ a le focus ou une valeur */
.logia-form-flottant .elementor-field-group:focus-within > .elementor-field-label,
.logia-form-flottant .elementor-field-group:has(input:not(:placeholder-shown)) > .elementor-field-label,
.logia-form-flottant .elementor-field-group:has(textarea:not(:placeholder-shown)) > .elementor-field-label,
.logia-form-flottant .elementor-field-group:has(select option:checked:not([value=""])) > .elementor-field-label {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .logia-form-flottant .elementor-field-label,
  .logia-form-flottant .elementor-button-icon,
  .logia-btn-fleche .elementor-button-icon { transition: none; }
}

/* ==========================================================================
   Mention reCAPTCHA (champ « Confirmation de Captcha invisible », Logia Helper)
   --------------------------------------------------------------------------
   captcha-mandatory masque le badge Google et affiche la mention obligatoire
   dans .texte-captcha. Sans reglage elle prend la taille du corps (16px sur
   Bollard) et pousse le bouton hors maquette (+73px). Toujours en rem.
   S'applique a TOUS les formulaires Elementor, flottants ou non.
   Reglage par projet : surcharger les variables sur .elementor-form.
   ========================================================================== */

.elementor-form {
  --logia-captcha-size: 0.75rem;  /* 12px ; plage des sites livres : 0.65-0.8rem */
  --logia-captcha-lh: 1.3em;
}

/* logia-ok: texte injecte par Logia Helper, aucun reglage natif du widget
   Formulaire ne l'atteint */
.elementor-form .texte-captcha,
.elementor-form .texte-captcha a {
  font-size: var(--logia-captcha-size);
  line-height: var(--logia-captcha-lh);
}

/* --------------------------------------------------------------------------
   Header Atout -- icones SVG (2026-10-01)
   -------------------------------------------------------------------------- */
/* logia-ok: le widget Menu n'a qu'une typographie pour tous les liens, et une
   couleur pour l'actif. Uniform-Bold est la graisse 700 de la famille Uniform
   (le fichier separe n'existe pas : 300 et 700 seulement). */
.elementor-location-header .elementor-element.logia-menu-actif-gras .elementor-item.elementor-item-active {
	font-weight: 700;
}

/* logia-ok: le widget Bouton n'expose aucune taille d'icone (le SVG suit 1em = 16 px) ;
   la fleche Figma 2755:7336 fait 26 x 12. */
.logia-btn-fleche .elementor-button-icon svg {
  width: 26px;
  height: auto;
}

/* logia-ok: le SVG porte un fill fige. Le bouton du kit change la couleur du
   texte au survol, pas celle du trace. currentColor suit le texte.
   logia-btn-icone : meme suivi, sans la largeur 26 px reservee a la fleche
   (le picto lecture 2755 reste carre). */
.logia-btn-fleche .elementor-button-icon svg path,
.logia-btn-icone .elementor-button-icon svg path {
  fill: currentColor;
}

/* logia-ok: le widget Bouton n'a pas de decalage d'icone au survol.
   Meme mouvement que le bouton du formulaire : la fleche avance de 4 px. */
.logia-btn-fleche .elementor-button-icon {
  transition: transform 0.3s ease;
}

.logia-btn-fleche .elementor-button:hover .elementor-button-icon,
.logia-btn-fleche .elementor-button:focus-visible .elementor-button-icon {
  transform: translateX(4px);
}

/* logia-ok: le widget Formulaire ne propose que des paliers (33, 40, 47, 59, 72 px).
   La maquette est a 51, la hauteur demandee est 50. Le textarea n'a pas de
   padding a lui : les 5 px du palier collent le texte contre le bord haut. */
.logia-form-flottant :is(input, select).elementor-field-textual {
  box-sizing: border-box;
  height: 50px;
  min-height: 50px;
  padding: 0 16px;
}

/* logia-ok: pas de padding de champ dans le formulaire. La marge interieure
   du widget entoure tout le formulaire, pas le texte du message. */
.logia-form-flottant textarea.elementor-field-textual {
  box-sizing: border-box;
  padding: 15px 16px;
}

/* logia-ok: le formulaire n'a pas de decalage d'icone au survol, seulement
   une liste d'animations predefinies. La fleche avance de 4 px. */
.logia-form-flottant .elementor-button-icon {
  transition: transform 0.3s ease;
}

.logia-form-flottant .elementor-button:hover .elementor-button-icon,
.logia-form-flottant .elementor-button:focus-visible .elementor-button-icon {
  transform: translateX(4px);
}

/* logia-ok: le role d Alison (2755:191) tient sur une ligne dans 292 px.
   Le widget heading passe a la ligne un pixel plus tot. */
.qs-role .elementor-heading-title {
  white-space: nowrap;
}

/* logia-ok: les titres de valeurs (2755:122, 137, 141, 151, 158) tiennent
   sur une ligne dans leur colonne. Le widget heading passe a la ligne
   un pixel plus tot. */
.qs-valeur-titre .elementor-heading-title {
  white-space: nowrap;
}

/* logia-ok: le widget Titre n'a pas de white-space. La ligne 2795:261
   mesure 601 px, la place a cote de la puce dans la colonne de 620 en
   laisse 597. Le titre 2795:34 mesure 989 px dans la boite de 985.
   La maquette garde ces lignes entieres. En dessous, la colonne
   se resserre et la ligne peut couper. */
@media (min-width: 1440px) {
  .elementor-widget-heading.logia-une-ligne .elementor-heading-title {
    white-space: nowrap;
  }
}

/* logia-ok: le wrapper du widget Icone garde l'interligne du texte et ajoute
   ~7 px sous un SVG seul ; aucun reglage natif ne le retire. */
.logia-icone-nue .elementor-icon-wrapper {
  line-height: 0;
}

/* logia-ok: le widget Icone pose la couleur du kit en fill sur le SVG.
   Les pictogrammes en trait (attribut stroke, pas de fill) se bouchent :
   palette, molécule, cadre. Aucun réglage natif ne distingue un trait d'un
   aplat. On retire le fill seulement sur un trait qui n'a pas le sien.
   Les ciseaux ont un aplat #3E4B5B et un filet blanc de 0,4 px : ce filet
   ne doit pas effacer l'aplat. */
body .elementor .elementor-widget-icon.logia-icone-nue .elementor-icon svg path[stroke]:not([fill]),
body .elementor .elementor-widget-icon.logia-icone-nue .elementor-icon svg path[stroke][fill="none"] {
  fill: none;
}

/* logia-ok: le widget Icone ecrit largeur ET hauteur dans le CSS du post
   (.elementor-N .elementor-element.elementor-element-ID .elementor-icon svg),
   specificite 0,4,1, qui bat un selecteur a deux classes. Un wordmark
   (Google du hero 2755:7363, 114 x 38) doit garder la proportion :
   la largeur reste le reglage natif « Taille », la hauteur suit le viewBox. */
body .elementor .elementor-widget-icon.logia-icone-large .elementor-icon svg {
  height: auto;
}

/* logia-ok: Figma rogne la boite de ligne (cap vers la ligne de base).
   Ni le widget Titre ni le widget Texte n'ont de champ pour ca. Le leading
   1.7 et 25 px reste, mais il ne doit pas gonfler le bloc : sinon l'icone
   de 64 px se centre sur une boite trop haute (2755:1218, 2755:1227, 2755:1233). */
.logia-texte-rogne .elementor-heading-title,
.logia-texte-rogne.elementor-widget-text-editor > p,
.logia-texte-rogne .elementor-widget-text-editor > p {
  text-box-trim: trim-both;
  text-box-edge: cap alphabetic;
}

/* logia:gutter — genere par `logia gutter --write`, ne pas editer a la main.
   logia-ok: aucun champ natif pour une marge minimale autour de la colonne du
   kit, ni pour aligner l'enfant d'une bande pleine largeur sur cette colonne.
   Regle containers : la colonne vient du kit (Largeur du contenu), une seule
   fois pour tout le site. Aucune section ne la reproduit en pixels.
   Convention Logia : meme gouttiere desktop et tablette, reduite en mobile. */
:root {
	--logia-gutter: 40px;
}

/* Gouttiere = marge MINIMALE autour de la colonne, posee sur le container et
   non sur .e-con-inner : la colonne garde la largeur du kit (celle du texte
   sur la maquette) tant que l'ecran le permet, et ne colle jamais aux bords
   en dessous. Racine encadree, ou enfant encadre d'une racine pleine largeur.
   Un encadre imbrique dans un encadre est deja borne : rien de plus. */
.e-con.e-con-boxed.e-parent,
.e-con.e-con-full.e-parent > .e-con.e-con-boxed {
	padding-inline: var(--logia-gutter);
}

/* Bande dont un enfant touche un bord de l'ecran (photo, carrousel) : racine
   pleine largeur a padding 0, et l'enfant qui reste dans la colonne porte la
   classe. 100 % = largeur de la racine, donc de l'ecran.
   logia-col-gauche / -droite : colonne de texte a cote d'une photo collee au
   bord ; son bord gauche (droit) tombe sur la colonne. En mobile, empilee,
   elle prend la gouttiere des deux cotes.
   logia-deborde-droite / -gauche (2.54) : carrousel qui part de la colonne et
   file jusqu'au bord de l'ecran, SUR DESKTOP SEULEMENT. Le container garde la
   colonne des deux cotes : les cartes ont la largeur de la maquette, les
   suivantes se montrent au-dela, jusqu'au bord de l'ecran, coupees du cote de
   la colonne (a --logia-deborde-ombre pres, pour l'ombre des cartes). En
   tablette et en mobile, rien ne deborde : le carrousel reste dans la colonne
   et defile au doigt.
   logia-ok: le decalage natif du carrousel (offset_sides) n'existe qu'en
   boucle infinie, que le socle desactive, et n'est pas reglable par palier. */
.e-con.logia-col-gauche {
	padding-left: max(var(--logia-gutter), calc((100% - var(--container-max-width)) / 2));
}
.e-con.logia-col-droite {
	padding-right: max(var(--logia-gutter), calc((100% - var(--container-max-width)) / 2));
}
.e-con.logia-deborde-droite,
.e-con.logia-deborde-gauche {
	padding-inline: max(var(--logia-gutter), calc((100% - var(--container-max-width)) / 2));
	overflow-x: clip;
}
/* logia-ok: debord des cartes au-dela de la colonne, desktop seulement */
@media (min-width: 1025px) {
	.e-con.e-con-full.logia-deborde-droite .swiper {
		overflow: visible;
		clip-path: inset(-100vh -100vw -100vh calc(-1 * var(--logia-deborde-ombre, 0px)));
	}
	/* logia-ok: idem, vers la gauche */
	.e-con.e-con-full.logia-deborde-gauche .swiper {
		overflow: visible;
		clip-path: inset(-100vh calc(-1 * var(--logia-deborde-ombre, 0px)) -100vh -100vw);
	}
}

@media (max-width: 767px) {
	:root { --logia-gutter: 20px; }
	.e-con.logia-col-gauche,
	.e-con.logia-col-droite { padding-inline: var(--logia-gutter); }
}
/* fin logia:gutter */

/* logia-ok: apres un slide, la carte deja passee doit depasser dans la
   gouttiere gauche, comme la suivante a droite. Le socle coupe ce cote a 0
   (--logia-deborde-ombre, prevu pour une ombre). Aucun reglage natif :
   offset_sides n'existe qu'en boucle infinie, desactivee. Au premier slide
   il n'y a pas de carte a gauche. La valeur est la gouttiere, donc la
   carte s'arrete au bord de l'ecran, des deux cotes. */
.e-con.logia-deborde-droite {
	--logia-deborde-ombre: max(var(--logia-gutter), calc((100vw - var(--container-max-width)) / 2));
}

/* logia-ok: la carte suivante est coupee par le bord de l'ecran a tous les
   paliers. Le socle n'ouvre .swiper qu'au-dessus de 1025 px. Aucun reglage
   natif d'overflow par palier : offset_sides n'existe qu'en boucle infinie. */
@media (max-width: 1024px) {
	.e-con.e-con-full.logia-deborde-droite .swiper {
		overflow: visible;
		clip-path: inset(-100vh -100vw -100vh calc(-1 * var(--logia-deborde-ombre, 0px)));
	}
}

/* logia-ok: avis en 2 colonnes avec fleches au desktop. Un seul item, pas de
   debord : il recouvrirait la colonne voisine. Sous 1025 la section s'empile
   et la citation, plus etroite que la ligne, est centree. Le clip gauche
   borne a la gouttiere ne montrait que gouttiere - gap (~16 px) alors que
   la droite ouvrait toute la marge. Les deux cotes ouvrent jusqu'a l'ecran ;
   overflow-x: clip sur la section empeche le scroll. Aucun reglage natif
   d'overflow par palier. */
@media (max-width: 1024px) {
	.e-con.logia-deborde-empile {
		overflow-x: clip;
	}
	/* logia-ok: le widget Carrousel n'a pas un overflow different par palier.
	   Au desktop le debord recouvrirait la colonne de gauche. */
	.e-con.logia-deborde-empile .swiper {
		overflow: visible;
		clip-path: inset(-100vh -100vw -100vh -100vw);
	}
}

/* logia-ok: un calque en position absolue se cale sur la racine (.e-con,
   pleine largeur), pas sur .e-con-inner qui porte la colonne et qui est
   statique. Sans ce positionnement, la photo reste collee au viewport
   quand la colonne se recentre. */
.e-con.logia-abs-colonne > .e-con-inner {
	position: relative;
}

/* logia-ok: un x Figma est mesure sur l'artboard 1512, pas sur le viewport.
   Au-dessus, la colonne du kit se recentre et ce x reste colle au bord gauche.
   On recale le calque sur le cadre centre. A 1512 et moins, le bord de la
   maquette reste le bord de l'ecran. Aucun reglage natif ne decale un x
   selon la largeur d'artboard. */
@media (min-width: 1513px) {
	.e-con.logia-cadre,
	.elementor-element.logia-cadre {
		translate: calc((100vw - 1512px) / 2) 0;
	}
	/* logia-ok: le decalage du cadre peut depasser a droite. Le container
	   n'a pas un overflow different au-dessus de l'artboard. */
	.e-con:has(.logia-cadre) {
		overflow-x: clip;
	}
	/* logia-ok: une paire photo + texte de la largeur de l'artboard se centre
	   au-dessus de 1512. La galerie realisations, elle, reste pleine largeur
	   de la section, comme sur la maquette. Le container n'a pas une largeur
	   max differente selon ce seuil. */
	.e-con.logia-cadre-bande {
		width: min(100%, 1512px);
		align-self: center;
		margin-inline: auto;
	}
	/* logia-ok: le bandeau final est une paire photo + texte de la largeur
	   de l'artboard. Le padding de logia-col-droite, calcule sur la colonne
	   1324, fait chevaucher la photo et le texte une fois la paire centree. */
	.e-con.logia-cadre-bande.logia-col-droite {
		padding-right: 0;
	}
}

/* logia-ok: Hello pose margin-block-end: 0.9rem sur chaque p.
   Le widget Texte n'a aucun champ pour la retirer. L'écart entre deux
   blocs est le gap du container : la marge du dernier paragraphe s'y
   ajoute. Reset de thème, le même pour tout le site. */
.elementor-widget-text-editor > :last-child,
.elementor-widget-text-editor .elementor-widget-container > :last-child {
	margin-block-end: 0;
}

/* logia-ok: le widget Texte impose une marge sous chaque paragraphe.
   Les blocs d'un seul paragraphe (mission, expertises) ont une marge 0 en Figma. */
.qs-mission-texte p,
.qs-texte p {
	margin: 0;
}

/* logia-ok: le widget Icone force un fill. Le telephone 2755:197 est un
   trait, le courriel 2755:202 est un aplat. currentColor suit la couleur
   du widget (primary). */
.qs-ico-tel svg path {
	fill: none;
	stroke: currentColor;
}
.qs-ico-mail svg path {
	fill: currentColor;
}

/* logia-ok: le loop-grid n'expose pas d'écart entre colonnes.
   Son CSS laisse column-gap à 30px (var(--grid-column-gap, 30px)).
   La rangée pro 2755:7385 est à 40, 24 sous 1024. */
.elementor-widget-loop-grid.logia-loop-gap .elementor-grid {
	column-gap: 40px;
}
@media (max-width: 1024px) {
	.elementor-widget-loop-grid.logia-loop-gap .elementor-grid {
		column-gap: 24px;
	}
}

/* logia-ok: le loop-grid n'expose pas d'écart entre colonnes.
   Son CSS laisse column-gap à 30px. La rangée équipe 2755:168 est à 32
   sur les trois paliers. */
.elementor-widget-loop-grid.qs-equipe-grille .elementor-grid {
	column-gap: 32px;
}

/* logia-ok: le text-editor n'a pas de white-space. L'adresse 2755:7225
   est une ligne de 624 px ; sous 1200 la colonne se replie et la ligne peut couper. */
@media (min-width: 1200px) {
	.elementor-widget-text-editor.logia-adresse p {
		white-space: nowrap;
	}
}

/* logia-ok: le loop-carousel place les fleches au milieu des cotes
   (.swiper ~ .elementor-swiper-button, specificite 0,4,0) et n'accepte pas
   le SVG exporte. 2755:7138 et 2755:7135 font 46 x 20 ; le groupe finit 35 px
   avant le bord droit de la citation, 57 px sous le haut de la carte, ecart 66. */
body .elementor-widget-loop-carousel.logia-avis-fleches.elementor-element .swiper ~ .elementor-swiper-button {
	top: 57px;
	bottom: auto;
	transform: none;
	width: 46px;
	height: 20px;
	font-size: 0;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 46px 20px;
}
/* logia-ok: le SVG natif de la fleche Swiper reste dans le bouton ; on le cache
   pour laisser le SVG exporte en arriere-plan. */
body .elementor-widget-loop-carousel.logia-avis-fleches.elementor-element .swiper ~ .elementor-swiper-button svg,
body .elementor-widget-loop-carousel.logia-avis-fleches.elementor-element .swiper ~ .elementor-swiper-button i {
	display: none;
}
body .elementor-widget-loop-carousel.logia-avis-fleches.elementor-element .swiper ~ .elementor-swiper-button-prev {
	left: auto;
	right: 147px;
	transform: scaleX(-1);
	background-image: url("https://staging.atoutamenagement.com/wp-content/uploads/2026/10/avis-fleche-droite.svg");
}
body .elementor-widget-loop-carousel.logia-avis-fleches.elementor-element .swiper ~ .elementor-swiper-button-next {
	right: 35px;
	left: auto;
	background-image: url("https://staging.atoutamenagement.com/wp-content/uploads/2026/10/avis-fleche-droite.svg");
}
/* logia-ok: sans boucle, Swiper pose swiper-button-disabled sur la fleche
   qui ne peut plus avancer (gauche au premier avis, droite au dernier).
   2755:7138 est a 25 % en permanence ; on ne garde cette opacite que la. */
body .elementor-widget-loop-carousel.logia-avis-fleches.elementor-element .swiper ~ .elementor-swiper-button.swiper-button-disabled {
	opacity: 0.25;
	pointer-events: none;
	cursor: default;
}

/* logia-ok: le widget Notation ne prend pas le SVG 2755:7159 et peint
   toujours les étoiles vides de l'échelle. Le champ ACF fixe le nombre ;
   seules les pleines restent, avec le dessin exporté. */
.elementor-widget-star-rating.logia-avis-etoiles .elementor-star-rating i {
	width: 27px;
	height: 27px;
	font-size: 0;
	background: url("https://staging.atoutamenagement.com/wp-content/uploads/2026/10/hero-etoile.svg") center / 27px 27px no-repeat;
}
.elementor-widget-star-rating.logia-avis-etoiles .elementor-star-rating i.elementor-star-empty {
	display: none;
}
/* logia-ok: les etoiles sont des inline-block. La ligne du widget
   Notation fait 36 px et le dessin reste en bas, donc le centrage
   du container aligne la boite, pas les glyphes, sur le nom.
   Aucun reglage du widget ne place le dessin au milieu de sa ligne.
   Le CSS du post (4 classes) gagne sur un selecteur plus court.
   Le decalage de 5 px est le meme au bureau et en tablette. */
body .elementor .elementor-widget-star-rating.logia-avis-etoiles .elementor-star-rating {
	display: flex;
	align-items: center;
	line-height: 0;
}

/* logia-ok: le lien du widget Image est un inline-block. La largeur 100 %
   de la photo se calcule sur ce lien, qui se referme sur le fichier :
   la photo reste a sa taille naturelle au milieu de la cellule, et un
   liseré blanc apparaît sur les bords. Aucun réglage ne met ce lien sur
   la largeur de la cellule. Vaut à chaque palier : en tablette la colonne
   en fr change aussi, et le widget n'écrit pas object-fit. */
body .elementor .logia-galerie-plein .elementor-widget-image > a {
	display: block;
	width: 100%;
}
body .elementor .logia-galerie-plein .elementor-widget-image img {
	width: 100%;
	object-fit: cover;
}

/* logia-ok: la photo pro est l'export du frame, titre et bouton inclus.
   Le titre HTML nomme le lien sans se peindre sur la photo. */
.elementor-widget-heading.logia-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* logia:header — genere par `logia socle --ecrire` depuis logia.yml (header.fond_defile,
   kit.tablet_breakpoint), ne pas editer a la main. Livre par le plugin
   logia-elementor (starter/socle-header.css). Regle header.
   Pose seulement sur un projet dont logia.yml a une cle header: (2.53+).

   Le header Logia est COLLANT sur tous les projets, et c'est ce bloc qui le
   porte, pas le panneau Elementor : ni Effets de mouvement > Epingle, ni
   position fixe, ni CSS colle dans le header.

   La hauteur vient de logia-header-h.js (--logia-header-h) : mesuree en ligne
   juste apres le rendu du header, avant la page, puis suivie par un
   ResizeObserver. Les replis par palier (socle-hero.css) ne servent que si le
   script ne passe pas.

   Principe : sans :has() (navigateur ancien), le pire cas est une bande vide
   au-dessus du contenu, jamais du contenu cache. La reserve et le fond sont
   poses par defaut ; :has() ne fait que les retirer quand c'est sur.

   Rien ne s'applique dans l'editeur Elementor (body.elementor-editor-active) :
   le header reste dans le flux, la page reste editable. */

:root {
	--logia-header-z: 100;
}

/* --------------------------------------------------------------------------
   1. Collant
   --------------------------------------------------------------------------
   Sur le WRAPPER .elementor-location-header, pas sur un container : tout le
   header colle d'un bloc (barre du haut comprise), et logia-header-h.js mesure
   ce wrapper, qui garde sa hauteur parce que ses enfants restent dans son flux.
   fixed et non sticky : sticky cesse de coller sans bruit des qu'un ancetre a
   un overflow (html/body en overflow-x: hidden), et le mode transparent sort
   de toute facon du flux. top suit la barre d'admin WP (32 ou 46 px connecte,
   0 sinon). */
/* logia-ok: le wrapper du Theme Builder n'a aucun reglage natif ; le collant
   natif se pose sur un container et fausse la hauteur mesuree */
body:not(.elementor-editor-active) .elementor-location-header {
	position: fixed;
	top: var(--wp-admin--admin-bar--height, 0px);
	inset-inline: 0;
	width: 100%;
	z-index: var(--logia-header-z);
}

/* Sous 600 px, WordPress fait defiler sa barre d'admin (position: absolute) :
   des que la page a defile (logia-page--defilee, logia-header-scroll.js), le
   header remonte en haut de l'ecran au lieu de laisser un vide de 46 px.
   Ne concerne qu'un admin connecte. */
/* logia-ok: barre d'admin WordPress, aucun reglage natif */
@media (max-width: 600px) {
	html.logia-page--defilee body.admin-bar:not(.elementor-editor-active) .elementor-location-header {
		top: 0;
	}
}

/* Une ancre (#section) ne s'arrete pas sous le header.
   logia-ok: le header fixe est en width 100 %. Ce 100 % inclut la barre
   de defilement qu'il cree lui-meme, environ 12 px, et la page deborde
   sur toutes les pages. hidden retire cette barre. clip la retire aussi
   mais laisse overflow-y a visible : la page ne defile plus. Le header
   est fixe, pas sticky, donc il reste colle. */
html {
	scroll-padding-top: calc(var(--logia-header-h) + var(--wp-admin--admin-bar--height, 0px));
	overflow-x: hidden;
}

/* --------------------------------------------------------------------------
   2. Reserve de place, par defaut sur toutes les pages
   --------------------------------------------------------------------------
   padding-top sur body et non sur #content : avec le modele « Elementor
   pleine largeur » de Hello, rien ne garantit un #content, et un gabarit
   d'archive ou d'article a le sien. Le body est le seul ancetre commun.
   Le modele Canvas n'a pas de header : pas de reserve. Une page sans header
   (condition d'affichage) la perd avec :has(), et logia-header-h.js y publie
   0 px. Rien a faire dans les pages. */
/* logia-ok: reserve de la hauteur d'un header sorti du flux, aucun reglage
   natif au niveau du body */
body:not(.elementor-editor-active):not(.elementor-template-canvas) {
	padding-top: var(--logia-header-h);
}
/* logia-ok: page sans header, aucun reglage natif */
html body:not(.elementor-editor-active):not(:has(.elementor-location-header)) {
	padding-top: 0;
}

/* --------------------------------------------------------------------------
   3. Header transparent : EFFECTIF seulement au-dessus d'un logia-sous-header
   --------------------------------------------------------------------------
   Classe logia-header-transparent sur la (les) racine(s) du header, classe
   logia-sous-header sur le premier container de la page. Les deux presentes :
   pas de reserve, le premier container reporte la hauteur du header en padding
   haut EN PLUS de son padding du panneau (--padding-top, la variable que .e-con
   lit). Une page sans logia-sous-header (Gutenberg, WooCommerce, archive,
   article) garde la reserve, et le header y est opaque (§4) : son titre ne
   passe jamais sous le header. */
/* logia-ok: reserve retiree sous un header transparent effectif */
html body:not(.elementor-editor-active):has(.elementor-location-header .logia-header-transparent):has(.e-con.logia-sous-header) {
	padding-top: 0;
}
/* logia-ok: padding haut qui depend de la hauteur mesuree du header, aucun
   reglage natif ne lit une variable */
html body:not(.elementor-editor-active):has(.elementor-location-header .logia-header-transparent) .e-con.logia-sous-header {
	padding-top: calc(var(--logia-header-h) + var(--padding-top, 0px));
}

/* Hero pleine hauteur sous un header transparent : le header le recouvre, il
   fait donc l'ecran entier. Soustraire la hauteur en plus du padding retirerait
   le header deux fois. */
/* logia-ok: complement du hero pleine hauteur du socle (socle-hero.css) */
@media (min-width: 768px) {
	html body:not(.elementor-editor-active):has(.elementor-location-header .logia-header-transparent) .e-con.logia-sous-header.logia-hero-plein {
		min-height: 100vh;
		min-height: 100svh;
	}
}

/* --------------------------------------------------------------------------
   4. Fond du header transparent : opaque par defaut, transparent seulement
      quand c'est sur
   --------------------------------------------------------------------------
   Global du kit choisi pour le projet (header.fond_defile, `logia header fond`).
   Le fond est pose par defaut sur la racine transparente ; il ne s'efface
   qu'en haut d'une page qui a son logia-sous-header, menu burger ferme.
   Il revient au defilement (logia-header--defile, logia-header-scroll.js).
   Le fond seulement, jamais la hauteur : un header qui retrecit au defilement
   fait bouger la reserve, donc toute la page. */
:root {
	--logia-header-fond-defile: var(--e-global-color-secondary);
}
/* logia-ok: fond d'etat du header transparent, aucun reglage natif par etat */
body:not(.elementor-editor-active) .elementor-location-header .e-con.logia-header-transparent {
	background-color: var(--logia-header-fond-defile);
	transition: background-color 0.3s ease;
}
/* logia-ok: transparence en haut de page, au-dessus d'un logia-sous-header */
html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header:not(.logia-header--defile):not(:has(.elementor-menu-toggle.elementor-active)) .e-con.logia-header-transparent {
	background-color: transparent;
}
/* Meme selecteur que la regle du fond (0,4,1), place apres : il l'emporte. */
@media (prefers-reduced-motion: reduce) {
	body:not(.elementor-editor-active) .elementor-location-header .e-con.logia-header-transparent {
		transition: none;
	}
}
/* --------------------------------------------------------------------------
   5. Item Contact du menu masque sur PC
   --------------------------------------------------------------------------
   Sur PC, le bouton Contact du header fait le lien : l'item du menu ferait
   doublon. Il reste dans le menu WordPress pour le burger (tablette, mobile).
   Classe a poser sur l'item (Apparence > Menus > Classes CSS) :
   logia-menu-contact ; contact-menu-item (sites d'avant 2.53) est accepte.
   Palier = tablette du kit + 1 px. Limite au header : le meme menu dans un
   footer garde son item. */
/* logia-ok: aucun reglage natif ne masque un item de menu par appareil */
@media (min-width: 1025px) {
	.elementor-location-header :is(.logia-menu-contact, .contact-menu-item) {
		display: none;
	}
}

/* --------------------------------------------------------------------------
   6. Menu burger plus haut que l'ecran
   --------------------------------------------------------------------------
   Dans un header fixe, la page ne defile pas sous le menu ouvert : un menu
   plus long que l'ecran perdrait ses derniers items. Le menu deroulant defile
   seul, borne a l'ecran moins le header. */
/* logia-ok: Elementor borne le menu deroulant a 100vh, sans tenir compte d'un
   header fixe ; aucun reglage natif */
@media (max-width: 1024px) {
	body:not(.elementor-editor-active) .elementor-location-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
		max-height: calc(100svh - var(--logia-header-h) - var(--wp-admin--admin-bar--height, 0px));
		overflow-y: auto;
	}
}

/* --------------------------------------------------------------------------
   7. Menu burger : fondu, cale sous le bandeau, ombre en bas
   --------------------------------------------------------------------------
   Elementor etire le panneau depuis le haut (scaleY + max-height, 0,3 s) et
   le pose sur le bouton (top = hauteur du bouton, marge 10 px). En haut de
   page le bandeau transparent passe au fond en 0,3 s (section 4) pendant que
   le panneau descend : les pixels partages sont peints deux fois, un trait.
   Le panneau prend sa hauteur tout de suite ; seule l'opacite bouge, au meme
   rythme que le fond. top 100% = hauteur du bouton ; on ajoute la moitie de
   l'ecart avec --logia-header-h pour le poser juste sous le bandeau.
   L'ombre ne tombe que sous le panneau. Un reglage d'ombre du widget, plus
   specifique, la remplace. */
/* logia-ok: le schema nav-menu n'a pas d'animation d'ouverture */
@media (max-width: 1024px) {
	body:not(.elementor-editor-active) .elementor-location-header .elementor-nav-menu--toggle .elementor-menu-toggle + .elementor-nav-menu__container.elementor-nav-menu--dropdown {
		transform: none;
	}
	body:not(.elementor-editor-active) .elementor-location-header .elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container.elementor-nav-menu--dropdown {
		opacity: 0;
		pointer-events: none;
		transition: opacity 0.3s ease, max-height 0s linear 0.3s;
	}
	body:not(.elementor-editor-active) .elementor-location-header .elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container.elementor-nav-menu--dropdown {
		opacity: 1;
		transform: none;
		animation: none;
		transition: opacity 0.3s ease, max-height 0s linear 0s;
	}
	/* logia-ok: Elementor ecrit top en ligne (hauteur du bouton), aucun reglage ne cale le panneau sous le bandeau */
	body:not(.elementor-editor-active) .elementor-location-header .elementor-nav-menu__container.elementor-nav-menu--dropdown {
		top: calc(100% + (var(--logia-header-h) - 100%) / 2) !important;
		margin-top: 0 !important;
	}
	/* logia-ok: l'ombre du menu deroulant est un champ du widget, mais il ne voyage pas avec le socle ; le champ du widget, plus specifique, remplace celle-ci */
	.elementor-location-header .elementor-nav-menu--dropdown {
		box-shadow: 0 14px 16px -12px rgba(0, 0, 0, 0.32);
	}
}
@media (max-width: 1024px) and (prefers-reduced-motion: reduce) {
	body:not(.elementor-editor-active) .elementor-location-header .elementor-nav-menu--toggle .elementor-menu-toggle + .elementor-nav-menu__container.elementor-nav-menu--dropdown {
		transition: none;
	}
}

/* Barre du haut (option du projet) : container dans le MEME header, au-dessus
   de la barre principale, masque sur tablette et mobile par Avance > Reactif
   (natif, aucun CSS). Elle colle avec le reste parce qu'elle est dans le meme
   wrapper : jamais deux containers collants decales d'un offset fixe. */
/* fin logia:header */

/* Le socle pose le fond plein, puis le retire en haut d'une page a hero.
   La transition de 0,3 s est sur les deux etats : au chargement, le bandeau
   plein s'efface en fondu. On ne la garde que pour l'arrivee du fond, au
   defilement ou au burger. Le retour au transparent, en haut, est immediat,
   sauf la fermeture du burger (classe posee par logia-header-burger.js).
   logia-ok: la transition du socle n'a pas d'etat pour le premier affichage. */
body:not(.elementor-editor-active) .elementor-location-header .e-con.logia-header-transparent {
	transition: none;
}
html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header.logia-header--defile .e-con.logia-header-transparent,
html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header:has(.elementor-menu-toggle.elementor-active) .e-con.logia-header-transparent {
	transition: background-color 0.3s ease;
}
/* Fermeture du burger : le menu fond encore 0,3 s, le fond du header partait
   tout de suite. La classe est posee avant le retrait de elementor-active,
   puis retiree apres le fondu. L'ouverture et le chargement ne changent pas.
   logia-ok: aucun reglage natif ne lie le fondu du fond a la fermeture du burger. */
html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header.logia-header-fond-sort:not(:has(.elementor-menu-toggle.elementor-active)) .e-con.logia-header-transparent {
	transition: background-color 0.3s ease;
}
@media (prefers-reduced-motion: reduce) {
	html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header.logia-header--defile .e-con.logia-header-transparent,
	html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header:has(.elementor-menu-toggle.elementor-active) .e-con.logia-header-transparent,
	html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header.logia-header-fond-sort:not(:has(.elementor-menu-toggle.elementor-active)) .e-con.logia-header-transparent {
		transition: none;
	}
}

/* --------------------------------------------------------------------------
   Header Atout : le socle ne suffit pas sur deux points
   --------------------------------------------------------------------------
   Contact : le selecteur du socle (specificite 0,2,0) perd contre
   .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li
   (0,2,1, display:flex). L'item restait visible sur PC.
   logia-ok: aucun reglage natif ne masque un item de menu par appareil.
*/
@media (min-width: 1025px) {
	.elementor-location-header .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li.logia-menu-contact,
	.elementor-location-header .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li.contact-menu-item {
		display: none;
	}
}

/* --------------------------------------------------------------------------
   Header Atout : sous-menu Prestations, PC seulement
   --------------------------------------------------------------------------
   Le widget est au palier tablette. Des 1025 px, Elementor masque
   .elementor-nav-menu--dropdown, donc le sous-menu du menu horizontal
   aussi. Il pose en plus top:100% !important.
   Le panneau part du bord bas du header. Le champ Distance du widget
   le calait sous le mot, donc dans le bandeau : des que le fond apparait,
   le haut du menu passait dessous. Le pont couvre ce jour.
   Fond #3e4b5b. La maquette est a 75 % (2896:3843). Hors maquette,
   a la demande : 88 %, le texte des sections passait trop.
   La ligne survolee reprend le meme fond par-dessus (2896:3845). La fleche du
   volet est celle de la maquette, 15,86 x 11,97, accent (2896:3857).
   Le volet du troisieme niveau se cale en haut du panneau. Il deborde
   de 6 px sur la ligne parente pour que la souris ne tombe pas dans
   les 2 px de jour (2896:3844).
   Prestations, Mobilier sur-mesure et Mobiliers professionnels sont
   des liens # : ils n'ouvrent que le volet.
   logia-ok: aucun reglage de volet au troisieme niveau, ni d'opacite
   sur le fond du menu deroulant. Le palier du burger ecrit display:none
   et top:100% !important sur le sous-menu.
*/
@media (min-width: 1025px) {
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu li:hover > ul.sub-menu,
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu li:focus-within > ul.sub-menu {
		display: block !important;
	}
	html body .elementor-location-header .elementor-nav-menu--main > .elementor-nav-menu > li.menu-item-has-children::after {
		content: "";
		position: absolute;
		z-index: 1;
		top: 100%;
		left: 0;
		width: 270px;
		/* Du bas du mot jusqu'au bord du header, plus 12 px sur le panneau. */
		height: calc((var(--logia-header-h) - 100%) / 2 + 12px);
		/* Le separateur du menu est aussi un ::after (bord gauche 2 px, noir). */
		border: 0;
	}
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu ul.sub-menu {
		z-index: 2;
		width: 243px;
		background-color: rgba(62, 75, 91, 0.88);
	}
	/* Bord bas du header. 100 % = hauteur de la ligne, centree dans le bandeau.
	   La Distance du widget est une marge sous le mot : on la remet a 0,
	   sinon le panneau descend encore. */
	html body .elementor-110.elementor-location-header .elementor-element-965fd75 .elementor-nav-menu--main > .elementor-nav-menu > li > ul.sub-menu {
		top: calc(100% + (var(--logia-header-h) - 100%) / 2) !important;
		margin-top: 0 !important;
	}
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu > li > ul.sub-menu > li {
		position: static;
	}
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu > li > ul.sub-menu > li:hover > a.elementor-sub-item,
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu > li > ul.sub-menu > li:focus-within > a.elementor-sub-item {
		background-color: rgba(62, 75, 91, 0.88);
		color: var(--e-global-color-2d2a4c0);
	}
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu > li > ul.sub-menu > li > ul.sub-menu {
		top: 0 !important;
		left: calc(100% - 6px) !important;
		box-sizing: border-box;
		width: calc(243px + 8px);
		padding-left: 8px;
		background-clip: content-box;
	}
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu ul.sub-menu .sub-arrow {
		width: 16px;
		height: 12px;
		margin-inline-start: 12px;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15.8629' height='11.9693' viewBox='0 0 15.8629 11.9693'%3E%3Cpath d='M15.8629 5.98464L9.88828 11.9693L8.37458 10.4656L11.7829 7.05726H0V4.92204H11.7829L8.37458 1.5137L9.88828 0L15.8629 5.98464Z' fill='%2394D1D6'/%3E%3C/svg%3E");
		background-repeat: no-repeat;
		background-position: center;
		background-size: 15.8629px 11.9693px;
	}
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu ul.sub-menu .sub-arrow svg {
		display: none;
	}
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu ul.sub-menu ul.sub-menu a.elementor-sub-item:hover,
	html body .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu ul.sub-menu ul.sub-menu a.elementor-sub-item:focus {
		font-weight: 700;
	}
	html body .elementor-location-header .elementor-nav-menu--main a[href="#"] {
		pointer-events: none;
	}
}
/* Garde : si Distance est remis sur le widget, il pousse aussi le burger.
   Le socle remet cette marge a 0, mais son selecteur perd contre le widget.
   logia-ok: le controle n'a pas de valeur distincte pour le burger. */
@media (max-width: 1024px) {
	html body:not(.elementor-editor-active) .elementor-location-header .elementor-element-965fd75 .elementor-nav-menu__container.elementor-nav-menu--dropdown {
		margin-top: 0 !important;
	}
}

/* Social : icon_padding est un slider qui ecrit --icon-padding. Le lint
   exige un objet dimensions pour toute cle *_padding ; Elementor stocke
   cette forme sans l'appliquer, et le defaut .5em laissait des carres de
   40 px. La variable est celle que le widget lit.
   logia-ok: forme du controle refusee par le lint. */
.elementor-location-header .logia-social-nu {
	--icon-padding: 0px;
}

/* Le socle pose --logia-header-fond-defile sur :root. Les couleurs du kit
   sont sur body.elementor-kit-8 : depuis :root, var(--e-global-color-secondary)
   est invalide et le fond restait transparent.
   logia-ok: la variable du kit n'est pas visible depuis :root. */
body.elementor-kit-8 {
	--logia-header-fond-defile: var(--e-global-color-secondary);
}

/* Voile dans la bande du header, seulement tant qu'il est transparent
   au-dessus d'un hero. Degrade du haut vers le bas, jusqu'au transparent :
   un palier en bas de bande dessinait un trait sur le hero.
   Pose sur ::before pour pouvoir s'effacer en fondu (un background-image
   ne se transitionne pas). Au defilement et menu ouvert, l'opacite tombe
   a 0 pendant que le fond secondary arrive : meme duree, 0,3 s.
   z-index -1 : le header a deja un z-index, le voile reste dans ce
   contexte, derriere le logo et le menu, devant le fond du bandeau.
   logia-ok: aucun reglage natif ne change le fond selon logia-header--defile. */
html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header .e-con.logia-header-transparent::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.62) 0%, rgba(0, 0, 0, 0.38) 42%, rgba(0, 0, 0, 0.16) 72%, rgba(0, 0, 0, 0) 100%);
	opacity: 1;
	transition: opacity 0.3s ease;
}
html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header.logia-header--defile .e-con.logia-header-transparent::before,
html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header:has(.elementor-menu-toggle.elementor-active) .e-con.logia-header-transparent::before {
	opacity: 0;
}
/* logia-ok: Fold Content n'ecrit que --lwfc-btn-color et --lwfc-btn-color-hover.
   Le kit pose fond, bordure, padding et couleur sur .elementor-kit-8 button
   et sur :hover, plus specifique que .lwfc__btn. Le lien doit rester un
   texte : primary au repos, secondary au survol, sans bouton plein. */
.elementor-widget-lwfc-fold-content .lwfc__btn,
.elementor-widget-lwfc-fold-content .lwfc__btn:is(:hover, :focus, :focus-visible) {
	background: none;
	background-color: transparent;
	border: 0;
	padding: 0;
	box-shadow: none;
	color: var(--lwfc-btn-color, inherit);
}
.elementor-widget-lwfc-fold-content .lwfc__btn:is(:hover, :focus-visible) {
	color: var(--lwfc-btn-color-hover, var(--lwfc-btn-color, inherit));
}
.elementor-widget-lwfc-fold-content .lwfc__btn:is(:hover, :focus-visible) .lwfc__label {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* logia-ok: menu_space_between pose une marge gauche sur chaque lien sauf le
   premier du menu. Au retour a la ligne, cette marge decale la rangee.
   Le gap du flex garde l'ecart et cale chaque ligne a gauche. */
.elementor-location-footer .logia-menu-liens .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
	column-gap: calc(var(--e-nav-menu-horizontal-menu-item-margin) * 2);
}
.elementor-location-footer .logia-menu-liens .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a {
	margin-inline-start: 0;
	margin-inline-end: 0;
}

@media (prefers-reduced-motion: reduce) {
	html body:not(.elementor-editor-active):has(.e-con.logia-sous-header) .elementor-location-header .e-con.logia-header-transparent::before {
		transition: none;
	}
}

/* Tablette seulement. Le socle ne met la gouttiere des deux cotes
   sur logia-col-gauche / -droite que sous 767. Entre 768 et 1024 la
   rangee est deja empilee, et le padding d'un seul cote colle le texte
   au bord.
   logia-ok: ce padding est calcule pour une rangee desktop. Aucun
   reglage natif ne le remplace par la gouttiere quand la rangee s'empile. */
@media (max-width: 1024px) and (min-width: 768px) {
	.e-con.logia-col-gauche,
	.e-con.logia-col-droite {
		padding-inline: var(--logia-gutter);
	}
}

@media (max-width: 1024px) and (min-width: 768px) {
	/* logia-ok: le cadre photo du desktop (hauteur et largeur fixes) ne
	   doit plus borner les photos une fois qu'elles sont dans le flux. */
	html body .e-con.e-con.logia-flux-tablette {
		--min-height: 0px;
		min-height: 0;
	}
	/* logia-ok: le reglage Position n'a pas de valeur « dans le flux ».
	   Une valeur vide sur le palier herite l'absolu du desktop, et les
	   photos restent au meme coin. Sous 1025 elles reprennent la colonne,
	   l'une sous l'autre. Le monogramme reste absolu : le remettre dans
	   le flux le coupe a une hauteur nulle. Le desktop, au-dessus, ne change pas. */
	html body .e-con.e-con.logia-flux-tablette > .elementor-element.elementor-absolute:not(.logia-mono-clip),
	html body .e-con.e-con.logia-flux-tablette > .e-con.e-con:not(.logia-mono-clip),
	html body .e-con.e-con.logia-flux-tablette > .e-con-inner > .elementor-element.elementor-absolute:not(.logia-mono-clip),
	html body .e-con.e-con.logia-flux-tablette > .e-con-inner > .e-con.e-con:not(.logia-mono-clip) {
		--position: relative;
		--width: 100%;
		position: relative;
		top: auto;
		right: auto;
		bottom: auto;
		left: auto;
		width: 100%;
		max-width: 100%;
	}
	/* logia-ok: les items valeurs ont une largeur de desktop. En rangee
	   tablette ils restent bloques a gauche. Le desktop ne change pas. */
	html body .e-con.e-con.logia-valeurs-tablette {
		padding-inline: var(--logia-gutter);
	}
	/* logia-ok: meme raison. La largeur native reste celle du desktop ;
	   en tablette les trois colonnes se partagent la rangee. */
	html body .e-con.e-con.logia-valeurs-tablette > .e-con.e-con {
		--width: auto;
		width: auto;
		max-width: none;
		flex: 1 1 0;
	}
}

@media (max-width: 767px) {
	/* logia-ok: le reglage Position n'a pas de valeur « dans le flux ».
	   Le palier mobile heredait l'absolu du bureau : la deuxieme photo
	   restait au meme coin et la section suivante passait dessus.
	   Meme mecanisme que la tablette, sans les regles valeurs (elles
	   forcent trois colonnes). Le bureau, au-dessus de 1024, ne change pas. */
	html body .e-con.e-con.logia-flux-tablette {
		--min-height: 0px;
		min-height: 0;
	}
	/* logia-ok: le reglage Position n'a pas de valeur « dans le flux ».
	   Une valeur vide sur le palier herite l'absolu du desktop.
	   Le monogramme reste absolu, sinon le calque se coupe. */
	html body .e-con.e-con.logia-flux-tablette > .elementor-element.elementor-absolute:not(.logia-mono-clip),
	html body .e-con.e-con.logia-flux-tablette > .e-con.e-con:not(.logia-mono-clip),
	html body .e-con.e-con.logia-flux-tablette > .e-con-inner > .elementor-element.elementor-absolute:not(.logia-mono-clip),
	html body .e-con.e-con.logia-flux-tablette > .e-con-inner > .e-con.e-con:not(.logia-mono-clip) {
		--position: relative;
		--width: 100%;
		position: relative;
		top: auto;
		right: auto;
		bottom: auto;
		left: auto;
		width: 100%;
		max-width: 100%;
	}
}

/* Tablette seulement. Engagements : titre a gauche, puis une rangee
   de deux cartes centree, une photo pleine largeur, l'autre rangee,
   l'autre photo, et la garantie en bas. Les trois colonnes du bureau
   ne sont pas des freres : l'ordre Elementor ne peut pas les intercaler.
   logia-ok: display:contents retire la boite des colonnes pour que les
   rangees et les photos deviennent les enfants de la meme colonne.
   Le bureau, au-dessus de 1024, et le mobile, sous 768, ne changent pas. */
@media (max-width: 1024px) and (min-width: 768px) {
	html body .e-con.e-con.logia-eng-plat {
		display: contents;
		--display: contents;
	}
	html body .e-con.logia-eng-tablette .elementor-element-c6cffc4 {
		order: 1;
		align-self: flex-start;
	}
	html body .e-con.logia-eng-tablette .elementor-element-engrow1 {
		order: 2;
	}
	html body .e-con.logia-eng-tablette .elementor-element-8233251 {
		order: 3;
		align-self: stretch;
	}
	html body .e-con.logia-eng-tablette .elementor-element-engrow2 {
		order: 4;
	}
	html body .e-con.logia-eng-tablette .elementor-element-a6ce015 {
		order: 5;
		align-self: stretch;
	}
	html body .e-con.logia-eng-tablette .elementor-element-d10c659 {
		order: 6;
		align-self: stretch;
	}
	/* logia-ok: le decalage d'entree est pose sur les colonnes du bureau.
	   Une fois ces colonnes sans boite, l'observateur ne les voit plus et
	   le decalage de 32 px et l'opacite nulle restent, y compris sur la
	   colonne des photos (0acba76). Le bureau, au-dessus de 1024, anime toujours. */
	html body .e-con.logia-eng-tablette .elementor-element-c6cffc4,
	html body .e-con.logia-eng-tablette .elementor-element-engrow1,
	html body .e-con.logia-eng-tablette .elementor-element-engrow2,
	html body .e-con.logia-eng-tablette .elementor-element-d10c659,
	html body .e-con.logia-eng-tablette .elementor-element-0acba76,
	html body .e-con.logia-eng-tablette .elementor-element-8233251,
	html body .e-con.logia-eng-tablette .elementor-element-a6ce015 {
		transform: none !important;
		opacity: 1 !important;
		visibility: visible !important;
	}
}

/* Tablette : Liens pratiques devient une colonne, a cote de
   Pour particuliers et Pour professionnels. Le bloc de marque est
   deja au-dessus. Le mobile, sous 768, reste empile.
   logia-ok: un container ne peut pas faire passer les enfants d'une
   grille imbriquee dans la grille parente sur un seul palier. */
@media (max-width: 1024px) and (min-width: 768px) {
	html body .elementor-location-footer .e-con.e-con.logia-footer-liens {
		--display: grid;
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		/* 8 px : a 768, « Pour professionnels » tient juste sur une ligne. */
		column-gap: 8px;
		row-gap: 0;
		align-items: start;
	}
	html body .elementor-location-footer .e-con.e-con.logia-footer-deux-cols {
		display: contents;
	}
	/* logia-ok: le widget Menu n'a pas de disposition verticale par palier.
	   L'ecart de 12 px est celui des listes voisines. */
	html body .elementor-location-footer .logia-menu-liens .elementor-nav-menu--main > .elementor-nav-menu {
		flex-direction: column;
		align-items: flex-start;
		column-gap: 0;
		row-gap: 12px;
	}
}
@media (max-width: 1024px) and (min-width: 800px) {
	html body .elementor-location-footer .e-con.e-con.logia-footer-liens {
		column-gap: 32px;
	}
}
/* Mobile : Liens pratiques s'empile et se centre, comme les listes.
   La regle footer ne centre que .elementor-nav-menu--layout-vertical, et
   ce menu reste horizontal sur desktop.
   logia-ok: pas de disposition verticale par palier, et le champ
   Alignement mobile du nav-menu horizontal n'emet aucune regle. */
@media (max-width: 767px) {
	html body .elementor-location-footer .logia-menu-liens .elementor-nav-menu--main > .elementor-nav-menu {
		flex-direction: column;
		align-items: center;
		column-gap: 0;
		row-gap: 12px;
	}
	html body .elementor-location-footer .logia-menu-liens .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a {
		justify-content: center;
		text-align: center;
	}
	/* logia-ok: l'alignement mobile de la liste centre la ligne entiere.
	   Le lien est pleine largeur, le texte qui revient a la ligne reste a gauche. */
	html body .elementor-location-footer .logia-footer-adresse .elementor-icon-list-text {
		text-align: center;
	}
}

/* logia-ok: le widget Titre n'a pas de cesure. Telephone et mail viennent
   d'une variable, l'adresse est un seul mot et sort de la bande. */
.elementor-widget-heading.logia-coordonnee .elementor-heading-title {
	overflow-wrap: anywhere;
	max-width: 100%;
}

/* logia-ok: le widget Titre force color:inherit sur son lien, au repos
   comme au survol, et n'a pas de couleur de survol. Ca masque le survol
   du kit. Le gris du titre reste, le survol reprend l'accent du kit. */
.elementor-widget-heading.logia-coordonnee .elementor-heading-title > a:hover,
.elementor-widget-heading.logia-coordonnee .elementor-heading-title > a:focus-visible {
	color: var(--e-global-color-accent);
}

/* logia-ok: le bouton n'a pas de retour a la ligne. Le libelle depasse
   la colonne des qu'elle passe sous la largeur du bouton. */
.elementor-widget-button.logia-cta-devis .elementor-button {
	max-width: 100%;
	white-space: normal;
	height: auto;
}

/* logia-ok: le monogramme est en z-index -1 pour rester derriere le contenu.
   Sans contexte d'empilement, ce z-index passe derriere le fond de la page.
   Le container n'a pas de reglage qui isole ses enfants. */
.e-con:has(.logia-mono-clip) {
	isolation: isolate;
}

/* logia-ok: le calque est absolu et ses enfants aussi, donc une hauteur 100 %
   retombe a 0. On l'etire du haut au bas de la section pour couper le
   monogramme a ses bords. Le container n'a pas de reglage qui fasse les
   deux bords a la fois. Il ne doit pas prendre les clics. */
.e-con.logia-mono-clip {
	pointer-events: none;
	bottom: 0;
	height: auto;
}

/* logia-ok: le monogramme est cale sur l'artboard 1512. Son x est le decalage
   Elementor. Au-dessus de 1512, le cadre se centre et le calque suit.
   Aucun reglage natif ne decale un x selon la largeur d'artboard. */
@media (min-width: 1513px) {
	.e-con.logia-mono {
		margin-left: calc((100vw - 1512px) / 2);
	}
}

/* logia-ok: le calque contact a deja ce centrage dans son x Elementor.
   La marge des autres monogrammes le decalerait une seconde fois au-dessus
   de 1512. Aucun reglage natif n'annule la marge d'une classe. */
@media (min-width: 1513px) {
	html body .e-con.logia-mono.logia-mono-cadre {
		margin-left: 0;
	}
}

/* logia-ok: la section porte logia-abs-colonne, l'inner devient le repere
   des absolus. Le monogramme est mesure sur l'artboard, pas sur la colonne.
   Aucun reglage natif ne le ressort de cette colonne. */
html body .e-con.logia-mono-colonne {
	left: calc(50% - 50vw) !important;
	width: 100vw !important;
	max-width: none !important;
	/* 100vw compte la barre de defilement, la section non. Le calque
	   part 7,5 px trop a gauche et son dessin ne rejoint plus celui
	   de la section voisine. Le container n'a pas de reglage pour
	   cette difference. */
	margin-left: 7.5px !important;
}

/* logia-ok: la marge sous la section est hors du calque. Le trait s'y
   coupe et laisse une bande blanche. Aucun reglage natif ne prolonge
   le calque de cette marge. Ces marges sont les memes en tablette et
   en mobile. Le hero n'a pas ces classes. */
html body .e-con.logia-mono-clip.qs-mono-bas-175 {
	top: 0;
	bottom: auto;
	height: calc(100% + 175px);
}
html body .e-con.logia-mono-clip.qs-mono-bas-157 {
	top: 0;
	bottom: auto;
	height: calc(100% + 157px);
}
html body .e-con.logia-mono-clip.qs-mono-bas-116 {
	top: 0;
	bottom: auto;
	height: calc(100% + 116px);
}
html body .e-con.logia-mono-clip.qs-mono-bas-40 {
	top: 0;
	bottom: auto;
	height: calc(100% + 40px);
}
html body .e-con.logia-mono-clip.qs-mono-bas-157.qs-mono-haut-116 {
	top: -116px;
	bottom: auto;
	height: calc(100% + 157px + 116px);
}
html body .e-con.logia-mono-clip.qs-mono-bas-128.qs-mono-haut-162 {
	top: -162px;
	bottom: auto;
	height: calc(100% + 128px + 162px);
}
html body .e-con.logia-mono-clip.qs-mono-haut-88 {
	top: -88px;
	bottom: auto;
	height: calc(100% + 88px);
}

/* logia-ok: en tablette les copies d'une lettre ne partagent pas le point
   du bureau. Le calque prolonge les fait se toucher et le trait se coupe.
   On rentre chaque calque pour laisser un blanc entre les sections.
   Celui sous le hero le rejoint encore. Le bureau et le mobile gardent
   le calque jusqu'au bord. La bande des logos est trop courte : la rentrer
   tranche la lettre au milieu des logos. Celle-la couvre toute la section. */
@media (min-width: 768px) and (max-width: 1024px) {
	html body .e-con.logia-mono-clip.qs-mono-espace {
		top: 80px;
		bottom: auto;
		height: calc(100% - 160px);
	}
	html body .e-con.logia-mono-clip.qs-mono-espace.qs-mono-haut-88 {
		top: -88px;
		height: calc(100% + 88px - 80px);
	}
	html body .e-con.logia-mono-clip.qs-mono-espace.qs-mono-plein {
		top: 0;
		bottom: 0;
		height: auto;
	}
	/* logia-ok: la bande affiche 4 logos jusqu'a 1023 px et 6 a 1024.
	   Sa hauteur n'est pas une droite. Deux copies ne peuvent pas
	   partager un point sur toute la tablette : le trait se dedouble
	   derriere les logos. Aucun reglage ne prolonge un seul calque
	   de cette hauteur variable. On allonge celui du bas de 320 px,
	   de quoi couvrir la bande la plus haute (307 px), et la copie
	   du dessus est masquee. 162 px : la marge deja couverte.
	   Le dessin est redescendu d'autant, il ne bouge pas sur la page. */
	html body .e-con.logia-mono-clip.qs-mono-bas-128.qs-mono-haut-162 {
		top: -482px;
		height: calc(100% + 128px + 482px);
	}
}

/* logia-ok: le portrait fait 614 x 796, avec du vide au-dessus de la tete.
   Une hauteur fixe coupe la tete sur un ecran etroit, ou laisse
   ce vide sur un large. Aucun reglage ne garde le bas du fichier
   tout en suivant la largeur de la colonne. 706 : du haut de la tete
   la plus haute jusqu'au bord du fichier. Le bureau garde le fichier entier. */
@media (max-width: 1024px) {
	html body .qs-equipe-grille .elementor-widget-image img {
		width: 100%;
		height: auto;
		aspect-ratio: 614 / 706;
		object-fit: cover;
		object-position: center bottom;
	}
}

/* logia-ok: sur mobile le meme cadre reste trop haut. 480 : on garde
   la tete, une partie des bras sort. 28 % : le haut du cadre tombe
   juste au-dessus de la tete la plus haute. La tablette et le bureau
   ne prennent pas cette hauteur. */
@media (max-width: 767px) {
	html body .qs-equipe-grille .elementor-widget-image img {
		aspect-ratio: 614 / 480;
		object-position: center 28%;
	}
}

/* Le marquee des logos grandit avec la fenetre (carres, 6 visibles,
   ecart 100). Le A du bandeau final descend avec lui. Les copies du
   meme dessin, posees dans les sections du dessus, restent a leur
   decalage : le triangle se coupe en deux. On les descend du meme
   ecart. 10 px : le decalage mesure a 1512. 166 px : la hauteur
   d'image a cette largeur. 15 px : la barre de defilement, comptee
   dans 100vw. */
/* logia-ok: aucun reglage ne decale un calque selon la largeur.
   margin-top s'ajoute au decalage deja pose. */
@media (min-width: 1025px) {
	html body .elementor-64 .e-con.logia-mono.qs-mono-suivi {
		margin-top: calc(10px + (100vw - 15px - 500px) / 6 - 166px);
	}
}

/* logia-ok: le select Position n'offre pas « relative ». Un palier vide
   ne couvre pas l'absolu du bureau, et la valeur relative est enregistree
   sans etre compilee. Sous 1024 les deux photos de l'histoire repassent
   dans le flux, sous le texte. */
@media (max-width: 1024px) {
	html body .elementor-64 .e-con.qs-photo-flux {
		--position: relative;
	}
}

/* La bande de logos s'est inseree entre les avis et le bandeau final.
   Sa hauteur suit la largeur : logos carres, 6 visibles, ecart de 100.
   Le monogramme du bandeau final, cale quand la bande manquait, descend
   d'exactement cette hauteur. On le remonte. Le calque des avis s'arretait
   au bord de sa section : on le prolonge de la meme hauteur pour que le
   dessin passe derriere les logos. 15 px : la barre de defilement, deja
   comptee dans 100vw. 105 px : marge haute de la bande (98) plus le
   blanc sous l'image en ligne (7). */
/* logia-ok: aucun reglage ne decale un calque selon la hauteur d'une autre
   section. margin-top n'est pas le champ natif du decalage, il s'ajoute
   au decalage deja pose. */
html body .e-con:has(> .logia-mono-clip):has(.logia-cta-devis) .logia-mono {
	margin-top: calc(-105px - (100vw - 15px - 500px) / 6);
}

/* logia-ok: la regle ci-dessus remonte le monogramme de l'accueil, cale
   quand la bande de logos n'existait pas. Le calque qui porte deja sa
   position n'a pas de champ pour annuler cette marge. */
html body .e-con:has(> .logia-mono-clip):has(.logia-cta-devis) .logia-mono.qs-mono-bandeau {
	margin-top: 0;
}

/* logia-ok: la hauteur du calque est 100 % en ligne. Seul !important
   l'allonge de la bande de logos. Aucune hauteur native ne suit la
   largeur de la fenetre. */
html body .e-con:has(.logia-avis-fleches) > .e-con-inner > .logia-mono-clip {
	height: calc(100% + 105px + (100vw - 15px - 500px) / 6) !important;
	bottom: auto;
}

/* logia-ok: la regle ci-dessus allonge le calque jusqu'a la bande de logos.
   Sur cette page la bande a deja la lettre du deroule, et le calque des avis
   porte aussi la lettre suivante. L'allongement empile deux gris et fait
   monter cette lettre sur les logos. Aucune hauteur native n'ignore
   cet allongement. */
html body .e-con.logia-mono-borne > .e-con-inner > .logia-mono-clip {
	height: auto !important;
	bottom: 0;
}

/* logia-ok: sous 1025 le dessin garde la taille posee en tablette et
   en mobile (fichier reduit au rapport viewport / 1512). Le margin-top
   du bandeau final suit la bande de logos du bureau et decalerait ce
   dessin. Ce n'est pas le reglage de position. */
@media (max-width: 1024px) {
	html body .elementor .e-con.logia-mono-clip > .e-con.logia-mono {
		margin: 0 !important;
	}
	/* logia-ok: le widget Image ecrit height 100 % et n'a pas de hauteur
	   sur son container. Le 100 % retombe alors a la hauteur du fichier,
	   pas a la largeur posee. auto : le fichier garde son ratio. */
	html body .elementor .e-con.logia-mono .elementor-widget-image,
	html body .elementor .e-con.logia-mono .elementor-widget-container,
	html body .elementor .e-con.logia-mono a,
	html body .elementor .e-con.logia-mono img {
		width: 100%;
		height: auto;
		max-height: none;
	}
	/* logia-ok: le prolongement du calque suit la bande de logos du bureau.
	   Sous 1025 la bande n'a plus cette hauteur, le dessin deborderait
	   sur la section suivante. */
	html body .elementor .e-con:has(.logia-avis-fleches) > .e-con-inner > .logia-mono-clip,
	html body .elementor .e-con:has(.logia-avis-fleches) > .logia-mono-clip {
		height: auto !important;
		bottom: 0;
		top: 0;
	}
	/* logia-ok: le decalage de 7,5 px compense la barre du bureau.
	   Sur un ecran etroit il ouvre un defilement horizontal. */
	html body .elementor .e-con.logia-mono-colonne {
		margin-left: 0 !important;
	}
}

/* logia:marquee — socle Logia (starter/socle-marquee.css), pose par
   `logia socle --ecrire` (ou `--marquee-only --ecrire`) quand logia.yml a une
   cle marquee:. Ne pas editer ici.
   Marquee de logos / images (regle widgets) : widget Carrousel d'images natif,
   classe logia-marquee (Avance > Classes CSS), lecture automatique a 1 ms,
   vitesse 5000 (ajustable par projet), boucle infinie, pause au survol (arret
   net et reprise continue : logia-marquee.js, pas la pause native).
   logia-ok: aucun reglage natif pour la courbe de transition du carrousel.
   Swiper garde la courbe par defaut (ease) : chaque pas accelere puis ralentit,
   la bande avance par a-coups. Lineaire : vitesse constante.
   Selecteur a trois classes : il passe devant le .swiper-wrapper de swiper et
   d'Elementor sans !important (swiper ne pose que la duree en ligne, jamais la
   courbe). Il ne vise que le carrousel d'images qui porte la classe : aucun
   autre carrousel du site n'est touche. */
.elementor-widget-image-carousel.logia-marquee .swiper-wrapper {
	-webkit-transition-timing-function: linear;
	transition-timing-function: linear;
}

/* Reduire les animations : logia-marquee.js retire la lecture automatique
   avant le demarrage du carrousel (ou l'arrete s'il tourne deja). Les logos
   restent a l'arret, les premiers visibles.
   logia-ok: filet si le script n'a pas tourne. Swiper ecrit la duree de
   transition en style inline : seul !important la remet a zero. Sans fin de
   transition, la lecture automatique de swiper s'arrete apres un pas, et
   swiper reste « en transition » : la pause au survol native ne relance rien
   a la sortie de la souris (verifie avec swiper 8.4.5, boucle infinie). */
@media (prefers-reduced-motion: reduce) {
	.elementor-widget-image-carousel.logia-marquee .swiper-wrapper {
		transition-duration: 0s !important;
	}
}
/* fin logia:marquee */
