/*
 * Fragment mobile_panel — engagement 5 : aucun hexadecimal, replis compris.
 *
 * CADRE SOUS .ivy-navbar__collapse, la seule classe que le partiel emet et
 * que rien d'autre ne porte. Jamais .ivy-navbar nu : c'est l'entorse qui a
 * fait passer pilule en position: sticky pendant deux jours, parce que
 * transparente declarait sur la classe du rayon.
 *
 * Une seule regle deroge, .ivy-shifted, et elle ne peut pas faire autrement :
 * elle vit sur un element du theme. C'est nomme en bas de fichier.
 */

.ivy-navbar__collapse {
	--ivy-panel-row: 52px;
	--ivy-panel-duree: calc( 360ms * var( --ivy-motion, 1 ) );
	--ivy-panel-ease: cubic-bezier( 0.4, 0, 0.2, 1 );
	--ivy-panel-largeur: min( 82vw, 340px );
}

/*
 * Au-dessus du point de rupture, le fragment n'existe pas : ses enfants
 * redeviennent des elements de la barre, sans seconde copie dans le DOM. Une
 * seconde copie dupliquerait le landmark de navigation et les identifiants
 * de panneau emis par le walker.
 */
.ivy-navbar__collapse,
.ivy-navbar__collapse .ivy-navbar__drawer,
.ivy-navbar__collapse .ivy-navbar__panel {
	display: contents;
}

/*
 * Le burger et le PIED sont les deux seules choses du fragment qui n'ont
 * aucun sens dans la barre large. Le menu et le CTA y redeviennent des
 * elements de barre ; les lignes de contact et la rangee de reseaux, non —
 * ce sont des rangees de panneau. Sans ce retrait, elles se posaient dans
 * la barre et la faisaient passer de 80 a 194 px ; le stage de voile portait
 * alors un overflow: clip qui rognait le menu, dont les liens restaient dans
 * le DOM, mesurables, mais hors de toute zone cliquable. Ce clip a depuis
 * migre sur .ivy-navbar__veil — le symptome differerait aujourd'hui, la
 * cause est la meme.
 *
 * Le logo, lui, n'est jamais passe par ici : il appartient a la barre, le
 * gabarit le rend avant le fragment.
 */
.ivy-navbar__collapse .ivy-navbar__burger,
.ivy-navbar__collapse .ivy-navbar__panel-foot {
	display: none;
}

/*
 * Sans bouton, le menu quitte le centre et se cale sur le bord droit : logo a
 * gauche, menu a droite. Reserve a la barre LARGE — dans le panneau, le menu
 * est une colonne et `margin-inline: auto 0` la decalerait. La classe
 * `ivy-navbar__collapse--sans-cta` vient du fragment quand il ne recoit aucun
 * CTA. Trois classes (0-3-0) battent le `margin-inline: auto` de chaque produit
 * (0-2-0) sans egaler le controle Alignment du panneau (0-4-0), qui reste maitre.
 * `flex-end` sur la liste : un menu dont le panneau fixe la largeur garde ses
 * liens contre le bord.
 */
@media ( min-width: 992px ) {
	.ivy-navbar__collapse.ivy-navbar__collapse--sans-cta .ivy-navbar__menu {
		margin-inline: auto 0;
	}

	.ivy-navbar__collapse.ivy-navbar__collapse--sans-cta .ivy-navbar__menu > ul {
		justify-content: flex-end;
	}
}

@media ( max-width: 991px ) {
	.ivy-navbar__collapse {
		display: flex;
		align-items: center;
		margin-inline-start: auto;
	}

	/*
	 * LE CONTRAT DU FRAGMENT — la seule chose qu'il demande a la barre qui
	 * l'heberge, et la seule regle du fichier qui vise un element de barre.
	 *
	 * Le panneau vit DANS le sous-arbre de la barre : son z-index ne se
	 * compare pas a celui de la barre, mais a celui de ses freres, dont le
	 * logo. Sans elevation, le logo passe SOUS le panneau et la barre mobile
	 * perd sa seule marque des que le panneau s'ouvre — mesure, elementFromPoint
	 * renvoyait .ivy-navbar__panel au centre du logo.
	 *
	 * Cadre par la fratrie : un logo QUI PRECEDE un collapse, donc un logo de
	 * barre hebergeant ce fragment, et aucun autre. 120 reste sous le burger,
	 * qui doit rester le dernier atteignable.
	 */
	.ivy-navbar__logo:has( ~ .ivy-navbar__collapse ) {
		position: relative;
		z-index: 120;
	}

	/* --- Le burger -------------------------------------------------------- */

	.ivy-navbar__collapse .ivy-navbar__burger {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		position: relative;
		z-index: 130;
		width: 44px;
		height: 44px;
		padding: 0;
		border: 0;
		background: none;
		cursor: pointer;
	}

	.ivy-navbar__collapse .ivy-navbar__burger-bars,
	.ivy-navbar__collapse .ivy-navbar__burger-bars::before,
	.ivy-navbar__collapse .ivy-navbar__burger-bars::after {
		display: block;
		width: 22px;
		height: 2px;
		border-radius: 2px;
		background: currentColor;
		transition: transform calc( 260ms * var( --ivy-motion, 1 ) ) var( --ivy-panel-ease );
	}

	.ivy-navbar__collapse .ivy-navbar__burger-bars::before,
	.ivy-navbar__collapse .ivy-navbar__burger-bars::after {
		content: '';
		position: relative;
	}

	.ivy-navbar__collapse .ivy-navbar__burger-bars::before {
		top: -7px;
	}

	.ivy-navbar__collapse .ivy-navbar__burger-bars::after {
		top: 5px;
	}

	.ivy-navbar__collapse.ivy-open .ivy-navbar__burger-bars {
		background: transparent;
	}

	.ivy-navbar__collapse.ivy-open .ivy-navbar__burger-bars::before {
		transform: translateY( 7px ) rotate( 45deg );
	}

	.ivy-navbar__collapse.ivy-open .ivy-navbar__burger-bars::after {
		transform: translateY( -5px ) rotate( -45deg );
	}

	/* --- Le panneau ------------------------------------------------------- */

	.ivy-navbar__collapse .ivy-navbar__drawer {
		display: block;
	}

	/*
	 * Le panneau est FIXE et pose SOUS le contenu : c'est le contenu qui
	 * s'ecarte pour le decouvrir, pas le panneau qui arrive. Son z-index est
	 * donc plus bas que celui pose sur .ivy-shifted.
	 *
	 * visibility, et non display : le panneau doit sortir de l'arbre
	 * d'accessibilite quand il est ferme — un lecteur d'ecran ne doit pas
	 * traverser un menu invisible — mais display: none casserait toute
	 * transition.
	 */
	/*
	 * L'EMPILEMENT, et il n'a qu'une lecture possible : le panneau (80) est
	 * sous le contenu ecarte (90), qui est lui-meme sous la barre (100, pose
	 * par chaque composition). C'est ce qui fait que le contenu DECOUVRE le
	 * panneau en s'ecartant, et que le burger reste cliquable par-dessus les
	 * deux.
	 */
	.ivy-navbar__collapse .ivy-navbar__panel {
		position: fixed;
		inset-block: 0;
		inset-inline-start: 0;
		z-index: 80;
		display: flex;
		flex-direction: column;
		justify-content: space-between;
		gap: 24px;
		width: var( --ivy-panel-largeur );
		/*
		 * La barre passe AU-DESSUS du panneau ouvert (z-index 100 contre 80) :
		 * son logo et son burger restent visibles et cliquables. Le panneau se
		 * decale donc de la hauteur de barre, sinon sa premiere entree se
		 * glisse dessous.
		 *
		 * Le repli couvre transparente, qui ne declare pas --ivy-navbar-h : sa
		 * barre se dimensionne sur son contenu. Ce n'est pas un defaut de
		 * controle au sens de l'engagement 2 — aucun reglage ne l'ecrit.
		 */
		padding: calc( var( --ivy-navbar-h, 72px ) + 20px ) 22px 28px;
		overflow-y: auto;
		background: var( --ivy-surface, rgb( 255 255 255 ) );
		color: var( --ivy-ink, rgb( 17 17 17 ) );
		visibility: hidden;
	}

	.ivy-navbar__collapse.ivy-open .ivy-navbar__panel {
		visibility: visible;
	}

	/*
	 * Le repli, quand le decalage serait destructeur : le panneau passe
	 * DEVANT le contenu et arrive par lui-meme. Le runtime pose cette classe
	 * quand la cible du decalage contient la barre — donc quand un transform
	 * detruirait son position: fixed.
	 */
	/*
	 * En surimpression, le panneau monte au-dessus du contenu mais reste
	 * SOUS la barre : le burger doit rester atteignable pour refermer.
	 */
	.ivy-navbar__collapse.ivy-panel-overlay .ivy-navbar__panel {
		z-index: 95;
		transform: translateX( -100% );
		box-shadow: 0 0 40px rgb( 0 0 0 / 0.18 );
		transition:
			transform var( --ivy-panel-duree ) var( --ivy-panel-ease ),
			visibility 0s linear var( --ivy-panel-duree );
	}

	.ivy-navbar__collapse.ivy-panel-overlay.ivy-open .ivy-navbar__panel {
		transform: none;
		transition-delay: 0s;
	}

	/* --- L'entree decalee, sur --ivy-i publie par le walker --------------- */

	.ivy-navbar__collapse .ivy-navbar__menu > ul > li {
		opacity: 0;
		transform: translateX( -24px );
		transition:
			opacity var( --ivy-panel-duree ) var( --ivy-panel-ease ),
			transform var( --ivy-panel-duree ) var( --ivy-panel-ease );
	}

	.ivy-navbar__collapse.ivy-open .ivy-navbar__menu > ul > li {
		opacity: 1;
		transform: none;
		transition-delay: calc( var( --ivy-i, 0 ) * 60ms * var( --ivy-motion, 1 ) );
	}

	/* --- L'accordeon ------------------------------------------------------ */

	.ivy-navbar__collapse .ivy-navbar__menu {
		margin-inline: 0;
	}

	/*
	 * align-items: stretch est REPRIS a la composition, pas herite d'elle.
	 * Une barre large centre ou espace ses entrees ; la meme regle appliquee
	 * a une colonne fait retrecir chaque <a> a la largeur de son texte, et le
	 * panneau se retrouve avec des rangees de largeurs differentes, alignees
	 * n'importe comment. C'est le defaut visible sur la capture d'Alex.
	 */
	.ivy-navbar__collapse .ivy-navbar__menu ul {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		margin: 0;
		padding: 0;
		list-style: none;
	}

	/*
	 * Le filet entre entrees de premier niveau. Il ne separe QUE celles-la :
	 * une rangee de sous-menu n'est pas une entree de meme rang, et lui donner
	 * le meme trait effacerait la hierarchie que le filet lateral etablit.
	 */
	.ivy-navbar__collapse .ivy-navbar__menu > ul > li + li {
		border-block-start: 1px solid
			color-mix( in srgb, var( --ivy-ink, rgb( 17 17 17 ) ) 10%, transparent );
	}

	/*
	 * La MISE EN RANGEE, pour toute entree du panneau, sous-menu compris : une
	 * ligne de sous-menu est une rangee comme une autre, elle doit s'aligner
	 * et perdre son soulignement de la meme facon. Seule la COULEUR se separe,
	 * juste en dessous, et c'est tout le sujet.
	 */
	.ivy-navbar__collapse .ivy-navbar__menu a,
	.ivy-navbar__collapse .ivy-navbar__submenu-toggle,
	.ivy-navbar__collapse .ivy-navbar__submenu-label {
		display: flex;
		align-items: center;
		min-height: var( --ivy-panel-row );
		text-decoration: none;
	}

	/*
	 * --ivy-menu-color AVANT --ivy-ink, et pas seulement --ivy-ink : c'est la
	 * propriete qu'ecrit la famille « color » du panneau Elementor. Sans elle,
	 * une couleur de menu reglee par instance s'appliquait dans la barre et
	 * PAS dans le panneau, ou cette regle-ci gagnait par l'ordre des feuilles
	 * — regle 1 violee a l'endroit precis ou personne ne regarde.
	 *
	 * L'ordre compte dans l'autre sens aussi : non reglee, la couleur retombe
	 * sur l'encre, jamais sur celle de la composition. pilule peint son menu
	 * en --ivy-surface au repos, ce qui est juste sur une barre transparente
	 * et invisible sur le panneau clair.
	 *
	 * LE PREMIER NIVEAU SEULEMENT, et c'est un piege deja paye ailleurs dans
	 * ce depot : `.ivy-navbar__menu a` est un selecteur DESCENDANT, il attrape
	 * aussi les liens de sous-menu, imbriques dessous. Il gagnait alors contre
	 * le `.ivy-navbar--<produit> .ivy-navbar__submenu a` de la composition —
	 * meme specificite, feuille du fragment enfilee apres — et le reglage de
	 * la partie `submenu` etait MUET dans le panneau, sur `voile` comme sur
	 * `pilule`, alors qu'il marchait dans la barre. Mesure : le lien rendait
	 * rgb( 17 17 17 ) au lieu du temoin.
	 *
	 * Le correctif nomme ce que la regle vise, par combinateur d'enfant, et
	 * n'ajoute aucune surenchere de specificite : les deux formes d'entree de
	 * premier niveau, le lien nu et le lien pose a cote de son declencheur.
	 */
	.ivy-navbar__collapse .ivy-navbar__menu > ul > li > a,
	.ivy-navbar__collapse .ivy-navbar__menu > ul > li > .ivy-navbar__submenu-wrap > a,
	.ivy-navbar__collapse .ivy-navbar__submenu-toggle,
	.ivy-navbar__collapse .ivy-navbar__submenu-label {
		color: var( --ivy-menu-color, var( --ivy-ink, rgb( 17 17 17 ) ) );
	}

	/*
	 * De quel bord partent les rangees. La valeur vient du reglage
	 * « Panel alignment », publiee par le partiel sur --ivy-panel-align — un
	 * mot que justify-content et align-items consomment tels quels, comme
	 * --ivy-i publie un nombre. Le repli a start tient si le reglage manque.
	 */
	.ivy-navbar__collapse .ivy-navbar__menu a,
	.ivy-navbar__collapse .ivy-navbar__submenu-label {
		justify-content: var( --ivy-panel-align, start );
	}

	/*
	 * L'ecart de colonne seulement. Un gap plein reserverait sa rangee entre
	 * le libelle et le sous-menu REPLIE, qui forme une ligne de flex a lui
	 * tout seul : l'accordeon ferme reprendrait de la hauteur par la porte de
	 * derriere, apres que 0fr la lui a retiree.
	 */
	.ivy-navbar__collapse .ivy-navbar__submenu-wrap {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		gap: 0 6px;
	}

	/*
	 * Le libelle prend toute la rangee et aligne son texte ; le declencheur se
	 * pose au bord oppose, quel que soit l'alignement. C'est la disposition de
	 * la reference : le geste d'ouverture est toujours a la meme distance du
	 * pouce, il ne se deplace pas avec la longueur du mot.
	 */
	.ivy-navbar__collapse .ivy-navbar__submenu-wrap > a,
	.ivy-navbar__collapse .ivy-navbar__submenu-label {
		flex: 1 1 auto;
		min-width: 0;
	}

	.ivy-navbar__collapse .ivy-navbar__submenu-toggle {
		flex: 0 0 auto;
		padding: 0 8px;
		border: 0;
		cursor: pointer;
		font: inherit;
	/* `font` ne porte ni la casse ni l'interlettrage, et l'UA pose
	   `text-transform: none` sur les boutons : sans ces deux lignes, un
	   menu regle en capitales laisse le sous-menu en minuscules. */
	text-transform: inherit;
	letter-spacing: inherit;
	}

	/*
	 * TOUS LES ETATS, fond ET couleur. Un bouton reste focalise apres son
	 * clic, et le thème peint ses boutons focalises en noir plein sur texte
	 * blanc : la rangee du sous-menu ouvert devenait un bloc noir, puis — le
	 * fond une fois neutralise — un chevron BLANC sur le panneau blanc, donc
	 * un declencheur invisible. Mesure a l'appui : rgb(17,17,17) ferme,
	 * rgb(255,255,255) ouvert.
	 *
	 * C'est aussi pour cela que la couleur est repetee ici plutot que laissee
	 * a la regle de repos : a etat egal, la sienne ne s'applique plus.
	 */
	.ivy-navbar__collapse .ivy-navbar__submenu-toggle,
	.ivy-navbar__collapse .ivy-navbar__submenu-toggle:hover,
	.ivy-navbar__collapse .ivy-navbar__submenu-toggle:focus,
	.ivy-navbar__collapse .ivy-navbar__submenu-toggle:active {
		background: none;
		color: var( --ivy-menu-color, var( --ivy-ink, rgb( 17 17 17 ) ) );
	}

	.ivy-navbar__collapse .ivy-navbar__burger,
	.ivy-navbar__collapse .ivy-navbar__burger:hover,
	.ivy-navbar__collapse .ivy-navbar__burger:focus,
	.ivy-navbar__collapse .ivy-navbar__burger:active {
		background: none;
	}

	/*
	 * Le parent SANS url n'a pas de lien a cote du bouton : c'est le bouton
	 * qui porte la rangee entiere. Sans cela il se recroquevillait sur son
	 * libelle, decale de sa propre marge interieure — la seule entree du
	 * panneau qui ne s'alignait pas sur les autres.
	 */
	.ivy-navbar__collapse .ivy-navbar__submenu-wrap > .ivy-navbar__submenu-toggle:first-child {
		flex: 1 1 auto;
		padding-inline: 0;
	}

	/*
	 * 0fr -> 1fr. C'est CETTE ligne qui fait s'effondrer le sous-menu ferme,
	 * et le sabotage le dit : la passer a 1fr rougit le test, retirer
	 * min-height: 0 ou overflow: hidden ne le rougit pas.
	 *
	 * Les deux sont gardees quand meme, en ceinture. Le motif 0fr n'est sur
	 * que si l'element de grille accepte de retrecir sous son contenu, et ce
	 * DOM-ci n'a pas besoin qu'on l'y force — un autre pourrait. C'est
	 * exactement ce qui a manque au tiroir de pilule, ou la piste refusait de
	 * s'effondrer sur une page reelle.
	 *
	 * La valeur reste ENTIERE dans la propriete : une liste passee par var()
	 * qui se revele invalide vaut unset, elle ne retombe pas sur la
	 * declaration precedente, et l'echec est silencieux.
	 */
	/*
	 * position et padding sont REPRIS a la composition, pas laisses a elle.
	 * Chaque produit du rayon pose son menu deroulant en position: absolute
	 * avec une marge de decrochage sous la barre — juste sur grand ecran,
	 * ruineux ici : le sous-menu ouvert survolait le panneau au lieu d'ecarter
	 * les entrees suivantes, et la marge redonnait au sous-menu FERME les huit
	 * pixels que 0fr venait de lui retirer.
	 *
	 * Le fragment gagne a specificite egale parce que sa feuille s'enfile
	 * apres celles des compositions. C'est une dependance a l'ordre, et elle
	 * est assumee : le panneau appartient au fragment, la barre a la
	 * composition.
	 */
	.ivy-navbar__collapse .ivy-navbar__submenu-wrap > [data-ivy-disclose-panel] {
		position: static;
		flex: 1 0 100%;
		display: grid;
		grid-template-rows: 0fr;
		padding: 0;
		transition: grid-template-rows var( --ivy-panel-duree ) var( --ivy-panel-ease );
	}

	.ivy-navbar__collapse .ivy-open > [data-ivy-disclose-panel] {
		grid-template-rows: 1fr;
	}

	/*
	 * L'habillage de POPOVER est repris a la composition, comme la geometrie
	 * l'a ete un cran plus haut. Dans la barre, un sous-menu est une carte
	 * flottante — fond opaque, rayon, ombre portee, largeur minimale. Dans le
	 * panneau, c'est une sous-liste : cette carte s'y affichait comme un bloc
	 * blanc pose de travers sur les entrees voisines.
	 */
	.ivy-navbar__collapse .ivy-navbar__submenu {
		min-height: 0;
		min-width: 0;
		overflow: hidden;
		margin: 0;
		margin-inline-start: 14px;
		padding: 0;
		padding-inline-start: 12px;
		background: none;
		border-radius: 0;
		box-shadow: none;
		border-inline-start: 2px solid
			color-mix( in srgb, var( --ivy-ink, rgb( 17 17 17 ) ) 14%, transparent );
	}

	.ivy-navbar__collapse .ivy-navbar__submenu a {
		min-height: 44px;
		font-size: 0.94em;
	}

	/* --- Le pied : contact et reseaux ------------------------------------ */

	.ivy-navbar__collapse .ivy-navbar__panel-foot {
		display: flex;
		flex-direction: column;
	}

	.ivy-navbar__collapse .ivy-navbar__contact,
	.ivy-navbar__collapse .ivy-navbar__social {
		display: flex;
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.ivy-navbar__collapse .ivy-navbar__contact {
		flex-direction: column;
		align-items: var( --ivy-panel-align, start );
		gap: 6px;
	}

	.ivy-navbar__collapse .ivy-navbar__contact a {
		display: inline-flex;
		align-items: center;
		min-height: 44px;
		text-decoration: none;
	}

	.ivy-navbar__collapse .ivy-navbar__social {
		justify-content: var( --ivy-panel-align, start );
		gap: 14px;
		margin-block-start: 18px;
	}

	.ivy-navbar__collapse .ivy-navbar__social-link {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-width: 44px;
		min-height: 44px;
	}

	.ivy-navbar__collapse .ivy-navbar__social-link svg {
		width: 18px;
		height: 18px;
		fill: currentColor;
	}

	/* --- Le CTA, en bas, pleine largeur ---------------------------------- */

	.ivy-navbar__collapse .ivy-navbar__panel .ivy-navbar__cta {
		display: flex;
		align-items: center;
		justify-content: center;
		min-height: 50px;
		text-align: center;
	}

	/* --- Accessibilite ---------------------------------------------------- */

	.ivy-navbar__collapse .screen-reader-text {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		padding: 0;
		overflow: hidden;
		clip-path: inset( 50% );
		white-space: nowrap;
		border: 0;
	}

	.ivy-navbar__collapse a:focus-visible,
	.ivy-navbar__collapse button:focus-visible {
		outline: 2px solid currentColor;
		outline-offset: 3px;
	}
}

/* --- Le contenu ecarte ---------------------------------------------------- */

/*
 * L'UNIQUE regle du socle qui style un element qu'il ne possede pas : la
 * cible du decalage appartient au theme. Le fond opaque est indispensable —
 * sans lui, le panneau se verrait au travers du contenu.
 *
 * Tout est borne a .ivy-shifted, que le runtime ne pose qu'a l'ouverture et
 * seulement quand le decalage est sur : jamais quand la cible contient la
 * barre, ou le transform detruirait son position: fixed.
 */
.ivy-shifted {
	position: relative;
	z-index: 90;
	min-height: 100vh;
	background: var( --ivy-surface, rgb( 255 255 255 ) );
	transform-origin: center left;
	transform: translateX( min( 78vw, 320px ) ) scale( 0.85 );
	transition: transform calc( 360ms * var( --ivy-motion, 1 ) ) cubic-bezier( 0.4, 0, 0.2, 1 );
}

@media ( prefers-reduced-motion: reduce ) {
	/*
	 * Meme regime que ivy-core.css : l'etat s'applique, seule la transition
	 * tombe. Un panneau qui n'arrive jamais serait une navigation perdue.
	 */
	.ivy-shifted,
	.ivy-navbar__collapse .ivy-navbar__panel,
	.ivy-navbar__collapse .ivy-navbar__menu > ul > li,
	.ivy-navbar__collapse [data-ivy-disclose-panel] {
		transition: none !important;
	}
}

/*
 * Les icones des trois lignes de contact. Elles sont facultatives : sans
 * reglage, aucun span n'est rendu et ces regles ne s'appliquent a rien.
 */
.ivy-navbar__contact li {
	display: flex;
	align-items: center;
}

.ivy-navbar__contact-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	inline-size: var( --ivy-contact-icon-size, 1.125rem );
	block-size: var( --ivy-contact-icon-size, 1.125rem );
	margin-inline-end: 0.5rem;
}

.ivy-navbar__contact-icon :is( svg, i ) {
	inline-size: 100%;
	block-size: 100%;
	font-size: inherit;
}

/* Sans cette ligne, le SVG d'Elementor reste noir : le reglage Couleur de
   l'icone de contact posait sa couleur sur la boite, et rien ne la suivait. */
.ivy-navbar__contact-icon svg {
	fill: currentColor;
}

/* --- Le contrat de la famille « color » ----------------------------------- */

/*
 * Cinq parties du fragment offrent un reglage de couleur, et AUCUNE feuille ne
 * lisait leur propriete : les quinze controles — cinq parties sur les trois
 * compositions du rayon — etaient muets. Le contrat est dans PASSATION.md §3.
 *
 * TOUT LE CONTRAT COULEUR DU FRAGMENT VIT ICI, HORS de la requete de media,
 * alors que le pied et le burger ne s'affichent qu'en dessous de 991 px. Ce
 * n'est pas de la coquetterie, c'est un defaut paye : `color: inherit` sur
 * `.ivy-navbar__contact a` et sur `.ivy-navbar__social-link`, et
 * `--ivy-burger-color` sur le burger, etaient DANS la requete. Au-dessus du
 * point de rupture ces elements restent dans le DOM — seul leur affichage
 * tombe — et le `a { color }` du theme reprenait la main : douze controles se
 * revelaient muets a 1280 px et servis a 390. Un contrat vrai a une largeur et
 * faux a l'autre ne se lit dans aucun panneau Elementor.
 *
 * Les replis valent `currentColor` la ou l'element heritait deja de la couleur
 * du panneau, et l'encre la ou une declaration explicite la posait. Aucun
 * pixel ne bouge tant que le client n'a rien regle.
 */

/*
 * Le burger reprend TOUS SES ETATS, et c'est la raison d'origine : un bouton
 * reste focalise apres son clic, et le theme peint ses boutons focalises en
 * blanc sur noir. Le fond est neutralise dans la requete de media, la couleur
 * l'est ici, sur les quatre etats — sans quoi le chevron redevient blanc sur
 * le panneau blanc, donc invisible.
 */
.ivy-navbar__collapse .ivy-navbar__burger,
.ivy-navbar__collapse .ivy-navbar__burger:hover,
.ivy-navbar__collapse .ivy-navbar__burger:focus,
.ivy-navbar__collapse .ivy-navbar__burger:active {
	color: var( --ivy-burger-color, var( --ivy-ink, rgb( 17 17 17 ) ) );
}

/*
 * `inherit`, et surtout pas une couleur a soi. Ces deux liens sont le texte et
 * l'icone VISIBLES des parties `panel_email`, `panel_phone` et `panel_social` ;
 * une declaration explicite ici coupe l'heritage juste avant ce que le client
 * regarde, et le reglage s'arrete au bloc parent.
 */
.ivy-navbar__collapse .ivy-navbar__contact a,
.ivy-navbar__collapse .ivy-navbar__social-link {
	color: inherit;
}
.ivy-navbar__collapse .ivy-navbar__contact-email {
	color: var( --ivy-panel_email-color, currentColor );
}

.ivy-navbar__collapse .ivy-navbar__contact-phone {
	color: var( --ivy-panel_phone-color, currentColor );
}

.ivy-navbar__collapse .ivy-navbar__contact-hours {
	color: var( --ivy-panel_hours-color, currentColor );
}

/*
 * L'icone est DANS la ligne : son `currentColor` vaut la couleur de la ligne,
 * deja resolue. Elle suit donc le reglage de `panel_email`, `panel_phone` ou
 * `panel_hours` par defaut, et s'en detache des que la sienne est posee —
 * c'est la rangee homogene que le fragment promet, sans la figer.
 */
.ivy-navbar__collapse .ivy-navbar__contact-icon {
	color: var( --ivy-panel_contact_icon-color, currentColor );
}

/*
 * Le repli porte ici l'encre que `.ivy-navbar__social-link` declarait avant :
 * la liste la pose, le lien en herite. Une seule declaration au lieu de deux,
 * et le reglage traverse.
 */
.ivy-navbar__collapse .ivy-navbar__social {
	color: var( --ivy-panel_social-color, var( --ivy-ink, rgb( 17 17 17 ) ) );
}
