/**
 * Ollie Child — La Levée de la Loire
 * CSS isolé : ce qui ne passe pas par theme.json ou par un bloc natif.
 * Chaque bloc est commenté en français avec sa justification.
 */


/* ──────────────────────────────────────────────────────────────────────────
 * Hero — pas de margin-top
 * ────────────────────────────────────────────────────────────────────────── */
.wp-block-post-content > .wp-block-cover:first-child,
.wp-block-post-content > .wp-block-group:first-child,
main.site-content > .wp-block-post-content > .wp-block-cover:first-child,
main.site-content > .wp-block-post-content > .wp-block-group:first-child {
	margin-top: 0;
}


/* ──────────────────────────────────────────────────────────────────────────
 * Icônes Lucide dans des chips vert pâle (cards Pourquoi exposer)
 * ────────────────────────────────────────────────────────────────────────── */
.levee-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: 12px;
	background-color: var(--wp--preset--color--primary-accent);
	color: var(--wp--preset--color--primary);
}

.levee-icon svg {
	width: 28px;
	height: 28px;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}


/* ──────────────────────────────────────────────────────────────────────────
 * Cards avec ombre douce (Stagez style)
 * ────────────────────────────────────────────────────────────────────────── */
.levee-card-shadow {
	box-shadow:
		0 1px 2px rgba(20, 17, 31, 0.04),
		0 4px 16px rgba(20, 17, 31, 0.06);
	transition: box-shadow 220ms ease-out, transform 220ms ease-out;
}

.levee-card-shadow:hover {
	box-shadow:
		0 2px 4px rgba(20, 17, 31, 0.06),
		0 12px 28px rgba(20, 17, 31, 0.1);
	transform: translateY(-2px);
}


/* ──────────────────────────────────────────────────────────────────────────
 * Logos partenaires : taille uniforme + une seule ligne
 * ──────────────────────────────────────────────────────────────────────────
 * Le N&B est désormais géré nativement via le duotone Ollie
 * (var:preset|duotone|grayscale) appliqué dans le JSON de chaque image.
 */
.levee-partner-logo,
.levee-partner-logo img {
	max-height: 120px; /* 56px à l'origine — agrandi (Lito 2026-07-10, bande descendue avant le CTA) */
	width: auto;
	max-width: 100%;
}

.row-logos {
	flex-wrap: nowrap !important;
}

@media (max-width: 781px) {
	.row-logos {
		flex-wrap: wrap !important;
	}
}


/* ──────────────────────────────────────────────────────────────────────────
 * Images de cards avec aspect-ratio
 * ────────────────────────────────────────────────────────────────────────── */
.levee-card-img-4-3 img {
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.levee-card-img-3-2 img {
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

/* Affiches : portrait 3:4, on garde "contain" pour ne pas couper le visuel */
.levee-card-img-3-4 img {
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
}

.levee-img-rounded img {
	width: 100%;
	height: auto;
	border-radius: 1rem;
}


/* ──────────────────────────────────────────────────────────────────────────
 * Cards Vignerons / Éditions / Actualités — image clippée par la card
 * ────────────────────────────────────────────────────────────────────────── */
.levee-card-clip {
	overflow: hidden;
}


/* ──────────────────────────────────────────────────────────────────────────
 * Bloc CTA inscription — countdown (4 chips rose vin, aligné en bas-gauche)
 * Rose vin = preset theme.json « rose-vin » #C25B7C (demande Lito 2026-07-10,
 * chips ambre à l'origine).
 * ────────────────────────────────────────────────────────────────────────── */
.levee-countdown {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.6rem;
	width: 100%;
	max-width: 380px;
	margin: 0 auto;
}

.levee-countdown__unit {
	background-color: var(--wp--preset--color--rose-vin, #C25B7C);
	color: var(--wp--preset--color--base);
	border-radius: 0.75rem;
	padding: 0.85rem 0.35rem;
	text-align: center;
	font-feature-settings: "tnum" 1;
	font-variant-numeric: tabular-nums;
	min-width: 0;
}

.levee-countdown__value {
	display: block;
	font-family: 'Source Sans 3', system-ui, sans-serif;
	font-size: clamp(1.4rem, 2.4vw, 1.9rem);
	font-weight: 800;
	line-height: 1.05;
	letter-spacing: -0.02em;
	white-space: nowrap;
}

.levee-countdown__label {
	display: block;
	margin-top: 0.3rem;
	font-family: 'Source Sans 3', system-ui, sans-serif;
	font-size: 0.65rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	opacity: 0.92;
}

.levee-countdown.is-expired .levee-countdown__unit {
	background-color: var(--wp--preset--color--main-accent);
	opacity: 0.65;
}

@media (max-width: 640px) {
	.levee-countdown {
		gap: 0.4rem;
		max-width: 320px;
	}
	.levee-countdown__unit {
		padding: 0.65rem 0.25rem;
	}
	.levee-countdown__value {
		font-size: 1.25rem;
	}
}

/* Mobile : compte à rebours en JOURS seulement (demande Lito 2026-07-14 —
   les 4 cases s'écrasaient dans la card CTA). */
@media (max-width: 781px) {
	.levee-countdown {
		grid-template-columns: 1fr;
		max-width: 130px;
	}
	.levee-countdown__unit:nth-child(n + 2) { display: none; }
}


/* ──────────────────────────────────────────────────────────────────────────
 * CTA card — image avec tous les coins arrondis, dans un padding intérieur
 * ──────────────────────────────────────────────────────────────────────────
 * L'image cover du CTA n'est PAS collée aux bords de la card : la wp:column
 * gauche a un padding intérieur qui isole l'image, qui peut alors avoir un
 * border-radius sur ses 4 coins (effet « card dans card »).
 */
.levee-cta-card {
	overflow: visible;
}

.levee-cta-card > .wp-block-column {
	overflow: visible;
}

.levee-cta-card .wp-block-cover {
	border-radius: 1rem;
	overflow: hidden;
}


/* ──────────────────────────────────────────────────────────────────────────
 * CTA card — chevauchement avec le footer (effet Stagez)
 * ──────────────────────────────────────────────────────────────────────────
 * La CARD elle-même a un margin-bottom négatif pour dépasser visuellement
 * de la section blanche, et chevaucher le footer sombre. La section a
 * padding-bottom: 0 pour que la card soit collée au bas de la section.
 * Le footer template-part reçoit son padding-top augmenté directement dans
 * son markup (parts/footer.html) — plus robuste qu'un selecteur :has().
 */
/* Force overflow visible sur les wrappers parents pour permettre à la card
   CTA de sortir visuellement du wp:cover et chevaucher le footer. */
body:has(.levee-cta-overlap-section) .wp-site-blocks,
body:has(.levee-cta-overlap-section) main.site-content,
body:has(.levee-cta-overlap-section) main.wp-block-group.site-content,
body:has(.levee-cta-overlap-section) .wp-block-post-content,
.levee-cta-overlap-section,
.levee-cta-overlap-section .wp-block-cover__inner-container {
	overflow: visible !important;
}

/* Le wp:cover wrapper (avec sa texture papier) n'a PAS de padding-bottom :
   il finit à la position de la card. Pas de margin négatif sur lui. */
.levee-cta-overlap-section {
	padding-top: var(--wp--preset--spacing--medium) !important;
	padding-bottom: 0 !important;
	position: relative;
	z-index: 1;
}

/* La card CTA se déplace VISUELLEMENT vers le bas via transform translateY,
   ce qui la fait sortir de la zone du wp:cover (qui garde sa hauteur de
   flow inchangée) et chevaucher le footer noir.
   - Le wp:cover wrapper avec texture papier finit à card_position_initiale.
   - La card visuelle descend de 140px vers le footer.
   - z-index élevé pour passer devant le footer. */
.levee-cta-overlap-section .levee-cta-card {
	transform: translateY(320px);
	position: relative;
	z-index: 5;
}

/* Le footer absorbe via son padding-top (déjà 350px dans le markup),
   donc son contenu commence bien sous la card chevauchante. */

@media (max-width: 781px) {
	.levee-cta-overlap-section .levee-cta-card {
		transform: translateY(180px);
	}
}

/* ── CTA compact du FOOTER (bannière événement logo/magenta, template part
   footer) : présent sur TOUTES les pages SAUF la home, qui garde sa grande
   card chevauchante en fin de contenu (ci-dessus). Même effet de chevauchement,
   version simple : la carte précède le groupe footer dans la template part, le
   margin-bottom négatif fait remonter le fond sombre derrière sa moitié basse
   (le padding-top 400px du groupe footer absorbe). Lito 2026-06-19. */
.lalevee-footer-cta { position: relative; z-index: 5; margin-bottom: -140px; }
body.home .lalevee-footer-cta { display: none; }
/* Bannière événement (composition synchronisée) : le radius est sur le
   wrapper Colonnes mais les FONDS des colonnes débordent des coins sans clip
   (l'éditeur supprime un overflow inline non adossé à un attribut). Ciblé par
   la CLASSE de la composition → suit toutes ses instances (footer, home…).
   V1 scopée .lalevee-footer-cta : ratait la home (constat Lito 2026-07-13). */
.lalevee-banniere-event,
.lalevee-footer-cta > .wp-block-columns {
	overflow: hidden;
}
@media (max-width: 781px) {
	.lalevee-footer-cta { margin-bottom: -90px; }
}
/* Le padding-top:400px du groupe footer (style inline du bloc) est dimensionné
   pour absorber la GRANDE card de la home (translateY 320px). Hors home, la
   bannière compacte ne plonge que de 140px → on ramène l'absorption à sa taille
   (140px de chevauchement + un large d'air). !important requis : on surclasse
   un style INLINE de bloc, variation par contexte impossible dans l'éditeur
   (un seul template part pour toutes les pages). Lito 2026-06-19. */
body:not(.home) .lalevee-footer-main {
	padding-top: calc(140px + var(--wp--preset--spacing--large)) !important;
}
@media (max-width: 781px) {
	body:not(.home) .lalevee-footer-main {
		padding-top: calc(90px + var(--wp--preset--spacing--large)) !important;
	}
}


/* ──────────────────────────────────────────────────────────────────────────
 * Liste check : couleur du marqueur en vert AB
 * ────────────────────────────────────────────────────────────────────────── */
.is-style-list-check li::before,
.wp-block-list.is-style-list-check li::before {
	color: var(--wp--preset--color--primary);
}


/* ──────────────────────────────────────────────────────────────────────────
 * Style "Glass" — effet glassmorphism
 * ──────────────────────────────────────────────────────────────────────────
 * Enregistré comme block-style WP via functions.php pour : core/group,
 * core/cover, core/column, core/columns, core/button. Application via la
 * toolbar de bloc : Styles → Glass.
 *
 * Combine :
 *  - fond semi-transparent (blanc translucide)
 *  - backdrop-filter blur (l'arrière-plan derrière est flouté → effet verre)
 *  - bordure subtile 1px blanc translucide pour le bord du verre
 *  - shadow douce pour le détacher du fond
 *
 * Variante "is-style-glass-dark" : version sombre pour fond clair (à
 * activer en ajoutant la classe manuellement).
 */
.is-style-glass {
	background-color: rgba(255, 255, 255, 0.55) !important;
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
	border: 1px solid rgba(255, 255, 255, 0.45) !important;
	box-shadow:
		0 8px 32px rgba(20, 17, 31, 0.08),
		inset 0 1px 0 rgba(255, 255, 255, 0.6);
}

/* Glass 2 — même verre, plus OPAQUE (blanc 0.75) : pour du texte long
   (fond d'article) posé sur image sans sacrifier la lisibilité. */
.is-style-glass-2 {
	background-color: rgba(255, 255, 255, 0.75) !important;
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
	border: 1px solid rgba(255, 255, 255, 0.45) !important;
	box-shadow:
		0 8px 32px rgba(20, 17, 31, 0.08),
		inset 0 1px 0 rgba(255, 255, 255, 0.6);
}

/* Variante sombre du glass — fond noir translucide, à utiliser sur image claire */
.is-style-glass-dark {
	background-color: rgba(26, 26, 26, 0.45) !important;
	color: var(--wp--preset--color--base);
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
	border: 1px solid rgba(255, 255, 255, 0.18) !important;
	box-shadow:
		0 8px 32px rgba(0, 0, 0, 0.25),
		inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

/* Application spécifique au bouton : on remplace le fond plein par du verre,
   et on s'assure que le radius pill et le padding restent intacts. */
.wp-block-button.is-style-glass .wp-block-button__link {
	background-color: rgba(255, 255, 255, 0.55) !important;
	color: var(--wp--preset--color--main);
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
	border: 1px solid rgba(255, 255, 255, 0.5);
	box-shadow:
		0 8px 32px rgba(20, 17, 31, 0.08),
		inset 0 1px 0 rgba(255, 255, 255, 0.6);
	transition: background-color 200ms ease-out, border-color 200ms ease-out;
}

.wp-block-button.is-style-glass .wp-block-button__link:hover,
.wp-block-button.is-style-glass .wp-block-button__link:focus {
	background-color: rgba(255, 255, 255, 0.75) !important;
	border-color: rgba(255, 255, 255, 0.7);
}

/* Glass dark sur bouton — sur fond image clair */
.wp-block-button.is-style-glass-dark .wp-block-button__link {
	background-color: rgba(26, 26, 26, 0.45) !important;
	color: var(--wp--preset--color--base);
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
	border: 1px solid rgba(255, 255, 255, 0.18);
}

.wp-block-button.is-style-glass-dark .wp-block-button__link:hover,
.wp-block-button.is-style-glass-dark .wp-block-button__link:focus {
	background-color: rgba(26, 26, 26, 0.65) !important;
}


/* ──────────────────────────────────────────────────────────────────────────
 * Block-style "Blur" — backdrop-filter seul
 * ──────────────────────────────────────────────────────────────────────────
 * Applique uniquement le flou d'arrière-plan, sans toucher au fond/à la
 * bordure. Permet de garder la couleur native du bouton (ex: primary vert)
 * tout en floutant ce qui passe derrière s'il est translucide.
 *
 * Pour que l'effet soit visible, le bouton doit avoir un fond semi-
 * transparent (utiliser le picker de couleur avec opacité < 100 %).
 */
/* Containers (Group, Cover, Column, Columns) : blur sur l'élément lui-même */
.is-style-blur:not(.wp-block-button) {
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
}

/* Bouton : le blur s'applique sur le <a> link (qui porte le border-radius
   pill), PAS sur le wrapper <div class="wp-block-button"> (qui est un
   rectangle plein autour, ce qui ferait déborder le flou). */
.wp-block-button.is-style-blur .wp-block-button__link,
.wp-block-button.is-style-glass .wp-block-button__link,
.wp-block-button.is-style-glass-dark .wp-block-button__link {
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
	overflow: hidden;
	isolation: isolate;
	/* overflow:hidden déplace la baseline de l'inline-block au BAS de la
	   boîte → le wrapper gagnait ~7px d'espace fantôme sous la pilule
	   (désalignement constaté Lito 2026-07-14). display:block le supprime. */
	display: block;
}
/* La bordure (1.5px, posée dans l'éditeur) s'AJOUTE à la hauteur du bouton
   (height auto) → la pilule outline dépassait ses voisines pleines de 3px
   et cassait l'alignement (constat Lito 2026-07-14, hero Exposer/Visiter).
   Padding vertical compensé (0.85em = padding preset des boutons). */
.wp-block-button.is-style-blur .wp-block-button__link {
	padding-top: calc(0.85em - 1.5px);
	padding-bottom: calc(0.85em - 1.5px);
}


/* ──────────────────────────────────────────────────────────────────────────
 * Styles de background réutilisables (block-styles)
 * ──────────────────────────────────────────────────────────────────────────
 * Appliqués via la toolbar Bloc → Styles. Permet d'avoir des fonds
 * texturés / motifs sans avoir à recréer un wp:cover à chaque fois.
 * Compatibles avec core/group, core/cover, core/column, core/columns.
 *
 * Pourquoi du CSS custom ?
 * - theme.json ne permet pas d'appliquer une background-image à un
 *   block-style enregistré. Les block-styles WP exposent une classe CSS,
 *   on l'implémente ici.
 */
/* ──────────────────────────────────────────────────────────────────────────
 * Cards colorées — block-styles preset
 * ──────────────────────────────────────────────────────────────────────────
 * Transforme n'importe quel Group/Column/Columns/Cover en card colorée
 * prête à l'emploi : fond, padding, border-radius, couleur de texte adaptée
 * au contraste.
 *
 * Application : sidebar Bloc → Styles → "Card Rose" (ou autre couleur).
 * Réutilisable comme building block dans n'importe quelle composition.
 */
[class*="is-style-card-"] {
	border-radius: 0.75rem;
	padding: var(--wp--preset--spacing--x-large);
}

/* Cards couleurs SOMBRES : texte blanc */
.is-style-card-rose {
	background-color: var(--wp--preset--color--rose);
	color: var(--wp--preset--color--base);
}
.is-style-card-prune {
	background-color: var(--wp--preset--color--prune);
	color: var(--wp--preset--color--base);
}
.is-style-card-magenta {
	background-color: var(--wp--preset--color--magenta);
	color: var(--wp--preset--color--base);
}
.is-style-card-marron {
	background-color: var(--wp--preset--color--marron);
	color: var(--wp--preset--color--base);
}

/* Cards couleurs CLAIRES : texte noir pour lisibilité */
.is-style-card-jaune {
	background-color: var(--wp--preset--color--jaune);
	color: var(--wp--preset--color--main);
}
.is-style-card-bleu-ciel {
	background-color: var(--wp--preset--color--bleu-ciel);
	color: var(--wp--preset--color--main);
}

/* Pour les cards sombres, les liens héritent du blanc avec underline */
.is-style-card-rose a,
.is-style-card-prune a,
.is-style-card-magenta a,
.is-style-card-marron a {
	color: inherit;
	text-decoration: underline;
}

/* Forcer la couleur des headings dans les cards (override theme.json
   styles.elements.heading.color qui a une spécificité plus forte que
   simplement `color` sur le parent). */
.is-style-card-rose :is(h1, h2, h3, h4, h5, h6),
.is-style-card-prune :is(h1, h2, h3, h4, h5, h6),
.is-style-card-magenta :is(h1, h2, h3, h4, h5, h6),
.is-style-card-marron :is(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--base);
}

.is-style-card-jaune :is(h1, h2, h3, h4, h5, h6),
.is-style-card-bleu-ciel :is(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--main);
}


/* ──────────────────────────────────────────────────────────────────────────
 * Cards charte (recette 17/07) — verte pleine, blanches à bordure
 * ──────────────────────────────────────────────────────────────────────────
 * Même anatomie que les cards colorées (radius + padding hérités du
 * sélecteur générique [class*="is-style-card-"] plus haut).
 * (Les styles de fond papier/aquarelle, jamais utilisés, ont été retirés
 * ici même le 17/07 — images fleches.webp et textures supprimées du thème.)
 */
.is-style-card-verte {
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
}

.is-style-card-blanche-grise {
	background-color: var(--wp--preset--color--base, #fff);
	border: 1px solid #e2e4e7;
	color: var(--wp--preset--color--main);
}

.is-style-card-blanche-verte {
	background-color: var(--wp--preset--color--base, #fff);
	border: 1px solid var(--wp--preset--color--primary);
	color: var(--wp--preset--color--main);
}

.is-style-card-verte a {
	color: inherit;
	text-decoration: underline;
}

.is-style-card-verte :is(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--base);
}

.is-style-card-blanche-grise :is(h1, h2, h3, h4, h5, h6),
.is-style-card-blanche-verte :is(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--main);
}



/* ──────────────────────────────────────────────────────────────────────────
 * Méga-menu — styles pour le contenu (utilisé via Ollie Menu Designer)
 * ──────────────────────────────────────────────────────────────────────────
 * Le déclenchement (hover/click) est géré nativement par le bloc Dropdown
 * Menu d'Ollie Menu Designer. Ici on ne style QUE le contenu du panneau.
 */

/* Liens du méga-menu : style discret, hover vert AB */
.levee-megamenu-list a {
	color: var(--wp--preset--color--main);
	text-decoration: none;
	transition: color 160ms ease-out;
}

.levee-megamenu-list a:hover,
.levee-megamenu-list a:focus {
	color: var(--wp--preset--color--primary);
}

.levee-megamenu-list li::marker {
	color: transparent; /* on retire la puce pour un look menu propre */
}

.levee-megamenu-list {
	list-style: none;
	padding-left: 0;
	margin: 0;
}


/* ──────────────────────────────────────────────────────────────────────────
 * Sous-menus du header — ombre douce + coins arrondis
 * ──────────────────────────────────────────────────────────────────────────
 * Par défaut WP applique une bordure 1px noire aux sous-menus du bloc
 * Navigation, peu esthétique. On la retire et on remplace par une ombre
 * douce, un border-radius, un padding interne, et un hover discret sur
 * les items pour le feedback.
 *
 * Note : à étendre quand certains items passeront en méga menu (largeur
 * pleine, plusieurs colonnes) — il faudra alors un sélecteur dédié.
 */
header.site-header .wp-block-navigation__submenu-container {
	background-color: var(--wp--preset--color--base);
	border: 0 !important;
	border-radius: 0.5rem;
	box-shadow:
		0 8px 28px rgba(20, 17, 31, 0.12),
		0 2px 6px rgba(20, 17, 31, 0.04);
	padding: 0.3rem 0.6rem !important;
	margin-top: 0.5rem;
	min-width: 220px;
}

/* Pont de hover invisible entre l'item parent et le sous-menu, pour que
   la souris puisse traverser le gap (margin-top) sans fermer le menu. */
header.site-header .wp-block-navigation__submenu-container::before {
	content: "";
	position: absolute;
	top: -0.5rem;
	left: 0;
	right: 0;
	height: 0.5rem;
	background: transparent;
}

header.site-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.55rem 1.25rem;
	border-radius: 0.35rem;
	transition: background-color 160ms ease-out, color 160ms ease-out;
}

header.site-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
header.site-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus {
	background-color: var(--wp--preset--color--primary-accent);
	color: var(--wp--preset--color--primary-dark);
}

/* Largeur des sous-menus (dropdowns desktop) : s'adapte au contenu, plafonnée à
   400px (et jamais plus large que l'écran). Le bloc Navigation core n'offre AUCUN
   réglage natif de largeur — seul le mega menu Ollie a son réglage « width » dans
   le bloc. Scopé hors overlay mobile (`:not(.is-menu-open)`) : menu burger ouvert,
   les sous-menus restent des listes pleine largeur. */
header.site-header .wp-block-navigation__responsive-container:not(.is-menu-open) .has-child .wp-block-navigation__submenu-container {
	/* max-content (PAS fit-content/auto) : en position absolue, auto/fit-content se
	   résolvent contre le bloc englobant (l'item parent, étroit) → repli prématuré
	   des intitulés. max-content = largeur intrinsèque d'une ligne, puis plafond.
	   ⚠️ `.has-child` requis : l'état OUVERT de WP core
	   (`.wp-block-navigation .has-child:not(.open-on-click):hover > .…submenu-container
	   { width:auto }`) pèse (0,5,0) → il nous faut (0,5,1) pour gagner. */
	width: max-content;
	max-width: min(400px, calc(100vw - 2rem));
}
/* Une fois le plafond atteint, les intitulés longs passent à la ligne. */
header.site-header .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	white-space: normal;
}


/* ──────────────────────────────────────────────────────────────────────────
 * Classes utilitaires typographiques
 * ──────────────────────────────────────────────────────────────────────────
 * Pour éviter les inline styles complexes qui invalident les blocs Gutenberg,
 * on utilise des classes utilitaires pour les badges / texte uppercase qui
 * reviennent souvent dans les patterns.
 */

/* Eyebrow : petit texte uppercase espacé — type "16ᵉ ÉDITION", "POUR LES EXPOSANTS", etc. */
.levee-eyebrow {
	font-size: var(--wp--preset--font-size--small) !important;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

/* Citation de témoignage : texte legible, weight 500, italic optionnel */
.levee-testimonial-quote {
	font-size: var(--wp--preset--font-size--medium) !important;
	font-weight: 500;
	line-height: 1.5;
}

/* Nom de l'auteur d'un témoignage : weight 600, petit */
.levee-testimonial-author {
	font-size: var(--wp--preset--font-size--small) !important;
	font-weight: 600;
}

/* Hero badge : eyebrow + pill avec bordure blanche translucide */
.levee-hero-badge {
	font-size: var(--wp--preset--font-size--small) !important;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 9999px;
	padding: 0.55em 1.3em !important;
	width: fit-content;
	margin-left: 0 !important;
	margin-right: 0 !important;
}


/* (Section « Footer — formulaire newsletter » retirée le 16/07 — form supprimé du
   footer, décision Lito + gestionnaire ; backups backup-footer-*-nl.html.) */

/* ──────────────────────────────────────────────────────────────────────────
 * Habillage « événement » de la page d'inscription
 * ----------------------------------------------------------------------------
 * Le produit WC est injecté via [product_page id="34689"] dans une PAGE FSE
 * normale (pas une single-product). On cible donc le wrapper du shortcode
 * (.woocommerce div.product) — présent aussi sur le permalien produit (rendu
 * legacy) — et le checkout (body.woocommerce-checkout). PAS body.single-product,
 * qui est ABSENT sur la page FSE.
 *
 * Le RETRAIT des éléments boutique (prix, étoiles, onglets, image, fil d'Ariane,
 * produits liés) se fait côté hooks (plugin lalevee-inscriptions). Ici :
 * présentation pure. Palette/typo = presets charte (theme.json).
 * ────────────────────────────────────────────────────────────────────────── */

/* L'image produit est retirée par hook. Or WooCommerce flotte .entry-summary à
   ~48 % (l'autre moitié était la galerie) : sans cette règle, le formulaire
   resterait coincé sur la moitié droite avec un vide à gauche. On reprend toute
   la largeur. theme.json/blocs natifs ne couvrent pas ce layout WC legacy. */
.woocommerce div.product {
	display: block;
}
.woocommerce div.product .woocommerce-product-gallery {
	display: none; /* filet de sécurité si une galerie réapparaissait (le hero est un Cover natif au-dessus) */
}
/* WC cible `.woocommerce div.product div.summary { float:right; width:48% }`
   (spécificité 0,3,2 à cause du `div.summary`). On double la classe
   (.summary.entry-summary → 0,4,1) pour l'emporter sans !important. */
.woocommerce div.product .summary.entry-summary {
	float: none;
	width: 100%;
	margin: 0;
	clear: both;
}

/* Titre produit → titre de section « événement ». Le H1 reste présent (structure/SEO),
   on le retypographie + petit accent ambre charte. */
.woocommerce div.product .product_title.entry-title {
	font-family: var(--wp--preset--font-family--primary); /* Montserrat (charte) */
	font-weight: 700;
	font-size: clamp(1.9rem, 1.2rem + 2.4vw, 2.8rem);
	line-height: 1.12;
	color: var(--wp--preset--color--primary-dark);
	margin: 0 0 1.4rem;
}
.woocommerce div.product .product_title.entry-title::after {
	content: "";
	display: block;
	width: 64px;
	height: 4px;
	margin-top: 0.6rem;
	border-radius: 9999px;
	background-color: var(--wp--preset--color--primary-alt); /* accent ambre #D4874D */
}

/* Boutons d'action en pill vert charte (fiche d'inscription + checkout). */
.woocommerce div.product form.cart button.single_add_to_cart_button,
body.woocommerce-checkout #place_order {
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	border: 0;
	border-radius: 9999px; /* pill */
	padding: 0.95em 2.4em;
	font-family: var(--wp--preset--font-family--primary);
	font-weight: 700;
	font-size: 1.05rem;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: background-color 180ms ease-out, transform 180ms ease-out, box-shadow 180ms ease-out;
}
.woocommerce div.product form.cart button.single_add_to_cart_button:hover,
.woocommerce div.product form.cart button.single_add_to_cart_button:focus-visible,
body.woocommerce-checkout #place_order:hover,
body.woocommerce-checkout #place_order:focus-visible {
	background-color: var(--wp--preset--color--primary-dark);
	transform: translatey(-1px);
	box-shadow: 0 8px 20px rgba(0, 122, 61, 0.22);
}

/* Cards radius 16 px : récap + paiement du checkout (bordure douce charte). */
body.woocommerce-checkout .woocommerce-checkout-review-order-table,
body.woocommerce-checkout .woocommerce-checkout-payment {
	border: 1px solid var(--wp--preset--color--border-light);
	border-radius: 16px;
	overflow: hidden;
}

/* Détail tarifaire (item meta GS PC) au panier/commande : léger encart lisible. */
.woocommerce td.product-name .gs-product-configurator-item-meta-template {
	display: block;
	margin-top: 0.5rem;
	padding: 0.75rem 0.9rem;
	background: var(--wp--preset--color--tertiary);
	border-radius: 12px;
	font-size: 0.92em;
	line-height: 1.55;
}

/* Masquer le bouton « Retour à la boutique » (panier vide). Pas de filtre WC
   propre pour ce bouton précis → CSS scopé, en dernier recours (cf. brief). */
.woocommerce .return-to-shop {
	display: none;
}

/* ──────────────────────────────────────────────────────────────────────────
 * Checkout — disposition 2 colonnes : FORMULAIRE à gauche, RÉCAP à droite.
 *
 * Le checkout classique (shortcode) empile 3 frères dans form.checkout :
 *   #customer_details (.col-1 facturation flottée à gauche + .col-2 notes à
 *   droite), puis #order_review_heading et #order_review en pleine largeur.
 * On réorganise en grille :
 *   • colonne gauche = facturation PUIS « Informations complémentaires »
 *     (on dé-flotte la col2-set → les notes passent SOUS la facturation) ;
 *   • colonne droite = « Votre commande » (titre + récap + paiement).
 * grid-template-rows: min-content 1fr → le titre droit garde sa hauteur réelle
 * et le récap se colle juste dessous, même si la colonne gauche est plus haute.
 * Responsive : repli en 1 colonne sous 1024px (charte e.lito). Pas de !important
 * (spécificité suffisante via body.woocommerce-checkout + #id).
 * ────────────────────────────────────────────────────────────────────────── */

/* Notes (« Informations complémentaires ») toujours SOUS la facturation :
   on neutralise les float gauche/droite de la col2-set du checkout classique. */
body.woocommerce-checkout #customer_details .col-1,
body.woocommerce-checkout #customer_details .col-2 {
	float: none;
	width: 100%;
}
body.woocommerce-checkout #customer_details .col-2 {
	margin-top: 2rem;
}

@media (min-width: 1024px) {
	body.woocommerce-checkout form.checkout {
		display: grid;
		grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); /* 40 % / 60 % */
		grid-template-rows: min-content 1fr;
		column-gap: 3rem;
		align-items: start;
	}
	body.woocommerce-checkout form.checkout > #customer_details {
		grid-column: 1;
		grid-row: 1 / 3;
	}
	body.woocommerce-checkout form.checkout > #order_review_heading {
		grid-column: 2;
		grid-row: 1;
		/* pas de margin-top:0 ici : on garde l'espacement naturel du titre */
	}
	body.woocommerce-checkout form.checkout > #order_review {
		grid-column: 2;
		grid-row: 2;
		align-self: start;
	}
}


/* ──────────────────────────────────────────────────────────────────────────
 * Corrections d'affichage des champs du formulaire GF (page d'inscription)
 * ────────────────────────────────────────────────────────────────────────── */

/* (C) Cases à cocher rendues rectangulaires. Cause réelle : le thème GF leur
   applique un padding ASYMÉTRIQUE (≈ 8.4px vertical / 16.8px horizontal) ; en
   box-sizing:border-box, ce padding (≈33.6px de large) écrase la largeur
   demandée → case ~35×18. On NEUTRALISE le padding et on fixe un carré.
   Idem radios par cohérence (le ::before dessine la coche/le point). */
.gform_wrapper .gfield input[type="checkbox"],
.gform_wrapper .gfield input[type="radio"] {
	flex: 0 0 auto;
	box-sizing: border-box;
	padding: 0;
	width: 1.2rem;
	height: 1.2rem;
	min-width: 1.2rem;
	aspect-ratio: 1 / 1;
}

/* (B) Champ multi-fichiers : le bouton « Sélectionnez des fichiers » n'était pas
   centré (collé en bas à gauche). On centre tout le contenu de la zone de dépôt
   (icône + instructions + bouton) verticalement et horizontalement. */
.gform_wrapper .gform_fileupload_multifile .gform_drop_area {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	text-align: center;
}
.gform_wrapper .gform_fileupload_multifile .gform_button_select_files {
	margin: 0; /* le centrage est géré par le flex du parent */
}

/* (B-bis) Input fichier SIMPLE : son contenu (bouton « Choisir un fichier » + nom
   du fichier) était collé en bas — cause : line-height ≈ 38px (hauteur du champ)
   poussant la ligne. Fix : line-height = hauteur de la ZONE DE CONTENU
   (38px − 2×8.4px de padding ≈ 21px) → la ligne se centre sans flex, sans
   toucher au display natif de l'input file. */
.gform_wrapper .gfield--type-fileupload input[type="file"] {
	line-height: 21px;
}


/* ──────────────────────────────────────────────────────────────────────────
 * ANNUAIRE EXPOSANTS — habillage charte de la vue GravityView + DataTables.
 *
 * Vue GravityView au template DataTables. TOUT est scopé sur `.lalevee-annuaire-card`,
 * la CARD du modèle « Page sans titre » qui enveloppe TOUTE la vue (recherche +
 * conteneur + table) — wrapper STABLE que l'on maîtrise, indépendant de l'ID de
 * post de la vue. (⚠️ AVANT : scope par `#gv-view-{id}-1`, qui changeait à chaque
 * déploiement / duplication de salon → l'habillage était PERDU en préprod et
 * l'aurait été en prod. Puis tentative `.gv-container` : KO car c'est le conteneur
 * INTERNE — la recherche, sœur du conteneur, et la grille, posée sur le conteneur
 * lui-même, lui échappaient. C'est le bug corrigé 2026-06.) ⚠️ Suppose donc que les
 * pages annuaire portent bien le modèle « Page sans titre » (grille ET tableau).
 * Côté public, `.lalevee-annuaire-card` n'enveloppe QUE l'annuaire → aucune autre
 * table du site n'est touchée. Spécificité (0,2,x), suffisante face à la CSS de base
 * DataTables (0,x,0) SANS !important — SAUF la couleur de pagination, que DataTables
 * force en `color:…!important` : on y répond alors en !important (et seulement là).
 *
 * Polices : en-têtes de colonnes = Montserrat 800, corps = Source Sans 3 (les
 * deux variables, réellement chargées par le child theme — vérifié via
 * document.fonts.check). Couleurs : presets charte (--primary #00A651 vert AB,
 * --primary-dark #007A3D, --primary-alt #D4874D ambre, --base blanc, --tertiary,
 * --border-light, --secondary). CSS PUR : aucun HTML/JS/réglage de vue modifié.
 * Le responsive natif DataTables n'est pas entravé.
 * ────────────────────────────────────────────────────────────────────────── */

/* La table vit TOUJOURS dans la card annuaire (modèle « Page sans titre ») : elle ne
   reprend donc pas son propre cadre → pas de carte-dans-la-carte (la card fournit déjà
   fond + bordure + ombre + padding). */
.lalevee-annuaire-card .dataTables_wrapper {
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	padding: 0;
}

/* Table : fond blanc, corps Source Sans 3. */
.lalevee-annuaire-card table.dataTable {
	border-collapse: collapse;
	background: var(--wp--preset--color--base);
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
}

/* En-têtes de colonnes : Montserrat 800, vert foncé, soulignement vert AB. */
.lalevee-annuaire-card table.dataTable thead th,
.lalevee-annuaire-card table.dataTable thead td {
	font-family: "Montserrat", system-ui, -apple-system, sans-serif;
	font-weight: 800;
	font-size: 0.9rem;
	letter-spacing: 0.005em;
	color: var(--wp--preset--color--primary-dark);
	background: transparent;
	text-align: left;
	padding: 0.85rem 1rem;
	border-bottom: 2px solid var(--wp--preset--color--primary);
}
/* Colonnes triables : repère de survol vert (les flèches natives restent). */
.lalevee-annuaire-card table.dataTable thead th.sorting:hover,
.lalevee-annuaire-card table.dataTable thead th.sorting_asc,
.lalevee-annuaire-card table.dataTable thead th.sorting_desc {
	color: var(--wp--preset--color--primary);
}

/* Cellules : séparateur discret, alignement haut, texte gris foncé hérité. */
.lalevee-annuaire-card table.dataTable tbody td {
	padding: 0.8rem 1rem;
	border-bottom: 1px solid var(--wp--preset--color--border-light);
	vertical-align: top;
	color: inherit;
}
/* Lignes alternées très légères + survol vert subtil. */
.lalevee-annuaire-card table.dataTable tbody tr:nth-child(even) > td {
	background: color-mix(in srgb, var(--wp--preset--color--tertiary) 55%, transparent);
}
.lalevee-annuaire-card table.dataTable tbody tr:hover > td {
	background: color-mix(in srgb, var(--wp--preset--color--primary) 8%, transparent);
}
/* Dernière ligne sans bordure (le radius du conteneur ferme proprement). */
.lalevee-annuaire-card table.dataTable tbody tr:last-child > td {
	border-bottom: 0;
}

/* Liens dans les cellules : vert AB, vert foncé + souligné au survol. */
.lalevee-annuaire-card table.dataTable tbody a {
	color: var(--wp--preset--color--primary);
	font-weight: 600;
	text-decoration: none;
}
.lalevee-annuaire-card table.dataTable tbody a:hover,
.lalevee-annuaire-card table.dataTable tbody a:focus-visible {
	color: var(--wp--preset--color--primary-dark);
	text-decoration: underline;
}

/* ── Recherche (widget GravityView, hors .dataTables_wrapper) + longueur ──── */
.lalevee-annuaire-card .gv-widget-search input:not([type="submit"]):not([type="button"]):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
.lalevee-annuaire-card .gv-widget-search select,
.lalevee-annuaire-card .dataTables_length select {
	border: 1px solid var(--wp--preset--color--border-light);
	border-radius: 9999px;
	padding: 0.5rem 1rem;
	background: var(--wp--preset--color--base);
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	color: inherit;
}
.lalevee-annuaire-card .gv-widget-search input:focus,
.lalevee-annuaire-card .gv-widget-search select:focus,
.lalevee-annuaire-card .dataTables_length select:focus {
	outline: none;
	border-color: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--wp--preset--color--primary) 22%, transparent);
}
/* Bouton « Rechercher » du widget : pill vert AB. */
.lalevee-annuaire-card .gv-widget-search button,
.lalevee-annuaire-card .gv-widget-search input[type="submit"] {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	border: 0;
	border-radius: 9999px;
	padding: 0.55rem 1.4rem;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 600;
	cursor: pointer;
	transition: background-color 160ms ease-out;
}
.lalevee-annuaire-card .gv-widget-search button:hover,
.lalevee-annuaire-card .gv-widget-search input[type="submit"]:hover {
	background: var(--wp--preset--color--primary-dark);
}

/* ── Boutons d'export DataTables (Copier / CSV / PDF / Imprimer) : pills vert. */
.lalevee-annuaire-card .dt-buttons .dt-button {
	background: var(--wp--preset--color--primary);
	background-image: none; /* tue le dégradé de DataTables Buttons */
	color: var(--wp--preset--color--base);
	border: 0;
	border-radius: 9999px;
	padding: 0.45rem 1.1rem;
	margin: 0 0.3rem 0.5rem 0;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 600;
	text-shadow: none;
	transition: background-color 160ms ease-out;
}
.lalevee-annuaire-card .dt-buttons .dt-button:hover,
.lalevee-annuaire-card .dt-buttons .dt-button:focus {
	background: var(--wp--preset--color--primary-dark);
	color: var(--wp--preset--color--base);
}

/* ── Pagination : pills, page active en vert AB.
 *    DataTables force `color:…!important` sur .paginate_button → on répond en
 *    !important UNIQUEMENT sur la couleur. Le fond/bordure/radius passent par la
 *    seule spécificité de l'ID (pas de !important superflu). ─────────────────── */
.lalevee-annuaire-card .dataTables_paginate .paginate_button {
	border: 1px solid var(--wp--preset--color--border-light);
	border-radius: 9999px;
	padding: 0.35rem 0.85rem;
	margin: 0 0.15rem;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--primary-dark) !important;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
}
.lalevee-annuaire-card .dataTables_paginate .paginate_button:hover,
.lalevee-annuaire-card .dataTables_paginate .paginate_button.current,
.lalevee-annuaire-card .dataTables_paginate .paginate_button.current:hover {
	background: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base) !important;
}
.lalevee-annuaire-card .dataTables_paginate .paginate_button.disabled,
.lalevee-annuaire-card .dataTables_paginate .paginate_button.disabled:hover {
	background: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--border-light);
	color: var(--wp--preset--color--secondary) !important;
	opacity: 0.5;
}

/* « Afficher N » + « x sur y » : texte secondaire discret. */
.lalevee-annuaire-card .dataTables_length,
.lalevee-annuaire-card .dataTables_info {
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	color: var(--wp--preset--color--secondary);
	font-size: 0.92rem;
}

/* Responsive : on resserre les espacements et on laisse un scroll horizontal de
   secours (n'entrave pas le repli natif du Responsive DataTables s'il est actif). */
@media (max-width: 781px) {
	.lalevee-annuaire-card .dataTables_wrapper {
		padding: 1rem;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
	.lalevee-annuaire-card table.dataTable thead th,
	.lalevee-annuaire-card table.dataTable tbody td {
		padding: 0.6rem 0.7rem;
	}
}


/* ──────────────────────────────────────────────────────────────────────────
 * ANNUAIRE EXPOSANTS — GRILLE DE LOGOS (vue GravityView au template « Liste »).
 *
 * Template GravityView « Liste » → on transforme le conteneur en GRILLE et
 * chaque entrée en CARTE. Ordre voulu (grille de logos) : LOGO en haut, puis
 * domaine (titre cliquable), région, appellations, « Voir la fiche → ».
 * Comme la structure Liste imbrique l'image dans la rangée content, on
 * « aplatit » cette rangée (display:contents) pour réordonner tous les blocs
 * en colonne via `order`. Scopé sur `.lalevee-annuaire-card` (card du modèle qui
 * enveloppe toute la vue, stable quel que soit l'ID — cf. note datatable plus haut).
 * Couleurs = presets charte, titres Montserrat 800,
 * corps Source Sans 3. Le logo est rendu par [lalevee_expo_logo] (plugin) avec
 * repli sur le placeholder (réglages → Annuaire). CSS pur.
 * ────────────────────────────────────────────────────────────────────────── */

/* Conteneur → grille responsive de cartes */
.lalevee-annuaire-card .gv-list-container.gv-list-multiple-container {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(260px, 100%), 1fr));
	gap: 24px;
	margin: 0;
}

/* Carte (position:relative → support du lien étiré sur toute la carte) */
.lalevee-annuaire-card .gv-list-view {
	position: relative;
	display: flex;
	flex-direction: column;
	margin: 0;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--border-light);
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
	transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}
.lalevee-annuaire-card .gv-list-view:hover {
	box-shadow: 0 12px 30px rgba(0, 0, 0, 0.10);
	transform: translateY(-3px);
	border-color: color-mix(in srgb, var(--wp--preset--color--primary) 45%, var(--wp--preset--color--border-light));
}

/* Aplatir la rangée content (image|description) pour réordonner tous les blocs */
.lalevee-annuaire-card .gv-list-view-content { display: contents; }

/* Ordre : logo → titre+région → appellations → footer */
.lalevee-annuaire-card .gv-list-view-content-image       { order: 1; }
.lalevee-annuaire-card .gv-list-view-title               { order: 2; }
.lalevee-annuaire-card .gv-list-view-content-description { order: 3; }
.lalevee-annuaire-card .gv-list-view-footer              { order: 4; }

/* Reset des largeurs de colonnes GravityView (1/3, 2/3) → pleine largeur en colonne.
   ⚠️ Spécificité (0,3,0) OBLIGATOIRE : la CSS de GravityView (list-view.css, chargée
   APRÈS la nôtre) pose `.gv-list-view-content .gv-list-view-content-image
   { max-width:50%; padding-right:1em }` en (0,2,0) → à égalité elle gagnerait et
   replierait l'image sur la moitié de la carte (bug « logos minuscules » 2026-06,
   apparu en passant du scope par ID — (1,1,0) — au scope par classe). */
.lalevee-annuaire-card .gv-list-view-content .gv-list-view-content-image,
.lalevee-annuaire-card .gv-list-view-content .gv-list-view-content-description {
	width: auto;
	max-width: none;
	float: none;
	flex: 0 0 auto;
	padding: 0;
}

/* Zone LOGO (haut de carte) */
.lalevee-annuaire-card .gv-list-view-content-image {
	border-bottom: 1px solid var(--wp--preset--color--border-light);
	background: #fff;
}
.lalevee-annuaire-card .lalevee-card-logo { margin: 0; }
/* GV pose un padding vertical 4px sur les .gv-grid-value : le logo doit
   coller aux bords de la carte (demande Lito 2026-07-14). Ciblé sur le champ
   logo UNIQUEMENT — un padding-block:0 global sur .gv-grid-value dérèglerait
   les écarts entre champs (cards, fiches). Classe doublée : la feuille GV
   charge après le child. */
.lalevee-annuaire-card .lalevee-card-logo.lalevee-card-logo,
.lalevee-annuaire-card .lalevee-card-logo.lalevee-card-logo .gv-grid-value {
	padding-block: 0;
}
.lalevee-annuaire-card .lalevee-expo-logo {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover; /* l'image remplit la zone, bord à bord (recadrage si besoin) */
	background: #fff;
	padding: 0;
	box-sizing: border-box;
}
/* Pas de logo ET pas de placeholder défini → aplat doux (jamais d'image cassée) */
.lalevee-annuaire-card .lalevee-expo-logo--none {
	background: var(--wp--preset--color--tertiary);
}

/* TITRE (domaine) + RÉGION (sous-titre) */
.lalevee-annuaire-card .gv-list-view-title {
	padding: 16px 18px 0;
	margin: 0;
}
.lalevee-annuaire-card .gv-list-view-title h3 { margin: 0; }
.lalevee-annuaire-card .gv-list-view-title h3,
.lalevee-annuaire-card .gv-list-view-title h3 a {
	font-family: "Montserrat", system-ui, -apple-system, sans-serif;
	font-weight: 800;
	font-size: 1.1rem;
	line-height: 1.18;
	color: var(--wp--preset--color--primary-dark);
	text-decoration: none;
}
.lalevee-annuaire-card .gv-list-view-title h3 a:hover { color: var(--wp--preset--color--primary); }
/* Sous-titre (h4) = Nom Prénom, métier — avec de l'air en dessous */
.lalevee-annuaire-card .gv-list-view-subtitle { margin: 6px 0 14px; }
.lalevee-annuaire-card .lalevee-card-meta {
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 500;
	font-size: 0.9rem;
	color: var(--wp--preset--color--secondary);
	margin: 0;
}
.lalevee-annuaire-card .lalevee-card-metier { text-transform: capitalize; }

/* APPELLATIONS */
/* (0,3,0) comme le reset ci-dessus (qui met padding:0) — même spécificité, mais
   déclarée APRÈS lui dans ce fichier → le padding décoratif reprend la main. */
.lalevee-annuaire-card .gv-list-view-content .gv-list-view-content-description {
	padding: 12px 18px;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
}
.lalevee-annuaire-card .lalevee-card-vignobles .gv-field-label {
	display: block;
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-weight: 700;
	color: var(--wp--preset--color--secondary);
	margin: 0 0 2px;
}
.lalevee-annuaire-card .lalevee-card-vignobles {
	font-size: 0.9rem;
	line-height: 1.5;
	font-weight: 600;
	color: var(--wp--preset--color--primary);
}

/* FOOTER (« Voir la fiche → ») — collé en bas de carte */
.lalevee-annuaire-card .gv-list-view-footer {
	padding: 12px 18px;
	margin: auto 0 0;
	display: flex;
	justify-content: flex-end; /* « Voir la fiche → » aligné à DROITE */
	/* ESSAI couleur : barre de bas de carte teintée vert charte (clippée par le radius) */
	background: color-mix(in srgb, var(--wp--preset--color--primary) 8%, var(--wp--preset--color--base));
	border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--primary) 15%, var(--wp--preset--color--border-light));
}
.lalevee-annuaire-card .gv-list-view-footer .gv-left,
.lalevee-annuaire-card .gv-list-view-footer .gv-right { width: auto; float: none; }
.lalevee-annuaire-card .gv-list-view-footer .gv-right { display: none; }
.lalevee-annuaire-card .lalevee-card-link a {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 700;
	font-size: 0.9rem;
	color: var(--wp--preset--color--primary-dark);
	text-decoration: none;
}
/* LIEN ÉTIRÉ : le ::after du lien couvre toute la carte → carte entière cliquable.
   (Le titre n'est plus un lien → un seul lien par carte, pas de conflit.) */
.lalevee-annuaire-card .lalevee-card-link a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}
/* Survol de la carte → on souligne le CTA (affordance) */
.lalevee-annuaire-card .gv-list-view:hover .lalevee-card-link a {
	color: var(--wp--preset--color--primary);
	text-decoration: underline;
}

/* ── Annuaire en thème VANTAGE (GravityView v3, layout « Layout Builder ») —
   PARITÉ visuelle avec la carte maison du template « Liste » ci-dessus (demande
   Lito 2026-07-08 : « exactement la même card »). L'ORDRE des champs est natif
   (lignes du Layout Builder) ; ici on réplique l'HABILLAGE : carte, liserés,
   bandes, typos, lien étiré, hover. Les classes lalevee-card-* voyagent avec les
   champs → les règles maison qui les ciblent s'appliquent déjà (logo 16/10,
   libellé VIGNOBLES, lien) ; on porte le reste vers les classes gv-layout-builder-*.
   Spécificité : préfixe .lalevee-annuaire-card + classes doublées là où la CSS GV
   (chargée dans un ordre VARIABLE selon la page — leçon 2026-07-08) pourrait gagner. */

/* Carte (flex colonne : le footer se cale en bas → cartes d'égale hauteur) */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .gv-layout-builder-view--entry {
	position: relative;
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 0;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--border-light);
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
	transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .gv-layout-builder-view--entry:hover {
	box-shadow: 0 12px 30px rgba(0, 0, 0, 0.10);
	transform: translateY(-3px);
	border-color: color-mix(in srgb, var(--wp--preset--color--primary) 45%, var(--wp--preset--color--border-light));
}

/* rangées/colonnes du builder : aucun espaceur parasite (paddings par zone ci-dessous) */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .gv-grid-row,
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .gv-grid-col-1-1 {
	margin: 0;
	padding: 0;
}

/* zone LOGO : bord à bord + liseré bas (l'image elle-même = règles .lalevee-expo-logo) */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .lalevee-card-logo {
	margin: 0;
	background: #fff;
	border-bottom: 1px solid var(--wp--preset--color--border-light);
}

/* TITRE (domaine) — Montserrat 800, vert foncé charte */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .lalevee-card-domaine {
	padding: 16px 18px 0;
	font-family: "Montserrat", system-ui, -apple-system, sans-serif;
	font-weight: 800;
	font-size: 1.1rem;
	line-height: 1.18;
	color: var(--wp--preset--color--primary-dark);
}

/* MÉTA (contact, métier) — l'air du sous-titre maison */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .lalevee-card-meta {
	padding: 6px 18px 14px;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 500;
	font-size: 0.9rem;
	color: var(--wp--preset--color--secondary);
}

/* VIGNOBLES / PRODUCTIONS — zone descriptive (libellé + valeurs : règles maison) */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .lalevee-card-vignobles {
	padding: 12px 18px;
	border-top: 1px solid var(--wp--preset--color--border-light);
}

/* FOOTER « Voir la fiche → » — bande teintée charte, collée en bas, alignée à droite */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .gv-layout-builder-view--entry .gv-grid-row:last-child {
	margin-top: auto;
}
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .lalevee-card-link {
	display: flex;
	justify-content: flex-end;
	padding: 12px 18px;
	background: color-mix(in srgb, var(--wp--preset--color--primary) 8%, var(--wp--preset--color--base));
	border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--primary) 15%, var(--wp--preset--color--border-light));
}
/* lien « Voir la fiche → » : Vantage impose son bleu (--gv-color-link) → on repose
   exactement le style maison, à spécificité supérieure. */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .lalevee-card-link a {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 700;
	font-size: 0.9rem;
	color: var(--wp--preset--color--primary-dark);
	text-decoration: none;
}
/* survol de la carte → CTA souligné (le lien étiré ::after vient des règles maison) */
.lalevee-annuaire-card .gv-layout-builder-multiple-container.gv-layout-builder-multiple-container .gv-layout-builder-view--entry:hover .lalevee-card-link a {
	color: var(--wp--preset--color--primary);
	text-decoration: underline;
}
/* Accent de Vantage = CHARTE, par les VARIABLES GV (pas de bagarre de sélecteurs — la
   règle bouton de Vantage est en (0,5,0)). Vantage colore boutons/liens/accents avec
   --gv-color-primary (bleu par défaut, faute d'auto-sync) → on le force au vert charte.
   C'est la voie « theme-aware » prévue. Lito 2026-06-19. */
.lalevee-annuaire-card .gv-themed {
	--gv-color-primary: var(--wp--preset--color--primary);
	--gv-color-primary-hover: var(--wp--preset--color--primary-dark, #007A3D);
}

/* ── Barre de recherche GÉNÉRALE : input pleine largeur + submit INLINE.
 * ⚠️ Spécificité (0,5,0) OBLIGATOIRE : la CSS du Search Bar 2.0 de GravityView
 * (gv-default-styles.css, chargée APRÈS la nôtre) pose
 *   `.gv-widget-search.gv-search-rows .gv-search-widget-area { flex-direction:column }`   (0,3,0)
 *   `.gv-widget-search .gv-search-box.gv-search-box-submit { width:100% }`                (0,3,0)
 *   `.gv-widget-search.gv-search-horizontal .gv-search-box { flex:1 1 10em }`             (0,3,0)
 * → en (0,2,0) (bug « recherche verticale moche » 2026-06, apparu en passant du scope
 * par ID au scope par classe), GV gagnait : input étroit + bouton À LA LIGNE.
 * (+ en layout « row » : `…area.gv-search-horizontal .gv-search-box { flex:1 1 10em }` (0,5,0))
 * Préfixe retenu (0,6,0) : .lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search
 * = scope zone GÉNÉRALE uniquement (la zone avancée — facettes — garde sa grille GV). ── */
.lalevee-annuaire-card .gv-widget-search { margin: 0 0 18px; }
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-widget-area {
	display: flex;
	flex-direction: row; /* GravityView empile en colonne (gv-search-rows) → on force la ligne */
	flex-wrap: nowrap;
	align-items: center;
	gap: 10px;
}
/* label « Rechercher » masqué (display:none) — le placeholder décrit déjà le champ.
   Le label est imbriqué dans un div.gv-search… (sélecteur descendant, pas « > »).
   Bonus : sans le label dans le flux, l'input s'aligne verticalement avec le bouton. */
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-box.gv-search-field-text label {
	display: none;
}
/* input : prend toute la largeur restante. La boîte est plus haute que l'input
   (reliquat du label) → on centre son contenu pour l'aligner avec le bouton. */
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-box.gv-search-field-text {
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	display: flex;
	align-items: center;
}
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-box.gv-search-field-text > div {
	width: 100%;
}
/* le <p> qui enveloppe l'input porte une marge basse par défaut (~14px) → c'est
   elle qui décalait l'input vers le haut par rapport au bouton. On la neutralise. */
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-box.gv-search-field-text p {
	margin: 0;
}
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-box.gv-search-field-text input {
	width: 100%;
	box-sizing: border-box;
	border: 1px solid var(--wp--preset--color--border-light);
	border-radius: 9999px;
	padding: 0.6rem 1.2rem;
	background: var(--wp--preset--color--base);
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-size: 0.95rem;
	color: inherit;
}
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-box.gv-search-field-text input:focus {
	outline: none;
	border-color: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--wp--preset--color--primary) 22%, transparent);
}
/* submit : largeur auto (à côté de l'input), pill vert charte. La boîte contient
   AUSSI le « Effacer » (↻) → on la passe en ligne pour avoir [Rechercher] [↻]
   côte à côte, au bout de la barre (au lieu d'empilés). */
.lalevee-annuaire-card .gv-widget-search.gv-search-rows .gv-widget-search-general-search .gv-search-box.gv-search-box-submit {
	flex: 0 0 auto;
	width: auto;
	margin: 0;
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap; /* sinon bouton + ↻ tombent sur 2 lignes */
	align-items: center;
	gap: 8px;
}
.lalevee-annuaire-card .gv-search-box-submit input[type="submit"] {
	border: 0;
	border-radius: 9999px;
	padding: 0.6rem 1.9rem;
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 700;
	font-size: 0.95rem;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color 160ms ease;
}
.lalevee-annuaire-card .gv-search-box-submit input[type="submit"]:hover {
	background: var(--wp--preset--color--primary-dark);
}

/* « Effacer » → flèche de réinitialisation circulaire (↻), tout au bout de la ligne.
   Texte masqué (font-size:0), icône en ::before, rotation au survol. */
.lalevee-annuaire-card .gv-search-clear {
	flex: 0 0 auto;
	order: 1; /* le ↻ est 1er dans le DOM → on le repousse APRÈS le bouton */
	align-self: center;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	min-height: 0;
	padding: 0;
	border-radius: 9999px;
	border: 1px solid var(--wp--preset--color--border-light);
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--secondary);
	font-size: 0;
	line-height: 1;
	text-decoration: none;
	transition: transform 450ms ease, color 160ms ease, border-color 160ms ease;
}
.lalevee-annuaire-card .gv-search-clear::before {
	content: "\21BB"; /* ↻ flèche qui tourne */
	font-size: 19px;
	line-height: 1;
}
.lalevee-annuaire-card .gv-search-clear:hover,
.lalevee-annuaire-card .gv-search-clear:focus-visible {
	color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	transform: rotate(-180deg);
}

/* « Recherche avancée » → petit pill cliquable (toggle du panneau avancé). */
.lalevee-annuaire-card .gv-widget-search > a:not(.gv-search-clear):not(.button) {
	display: inline-block;
	margin: 12px 0 0;
	padding: 0.35rem 1.05rem;
	border-radius: 9999px;
	border: 1px solid var(--wp--preset--color--primary);
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--primary-dark);
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 600;
	font-size: 0.85rem;
	text-decoration: none;
	transition: background-color 160ms ease, color 160ms ease;
}
.lalevee-annuaire-card .gv-widget-search > a:not(.gv-search-clear):not(.button):hover {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
}

/* Boîte (bordure grise arrondie) UNIQUEMENT autour du panneau avancé
   (PAS sur la recherche simple, qui partageait .gv-search-widget-area). */
.lalevee-annuaire-card .gv-widget-search-advanced-search {
	margin-top: 1rem;
	border: 1px solid #ccc;
	border-radius: 15px;
	padding: 1rem;
}

/* Panneau « Recherche avancée » déplié : contenu aligné en HAUT (les groupes
   radio/checkbox ont des hauteurs différentes) + espacement et passage à la ligne.
   (override de l'align-items:center de la barre générale.) */
.lalevee-annuaire-card .gv-widget-search-advanced-search .gv-search-widget-area {
	align-items: flex-start;
	flex-wrap: wrap;
	gap: 16px 30px;
}
/* Titres des champs de recherche avancée (Métier, Certifications) = label enfant
   DIRECT de la boîte (les options sont imbriquées plus profond, donc non touchées).
   Vert intense, bold, avec soulignement vert. */
.lalevee-annuaire-card .gv-widget-search-advanced-search .gv-search-box > label {
	display: block;
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 800;
	font-size: 0.95rem;
	color: var(--wp--preset--color--primary);
	margin: 0 0 10px;
	padding-bottom: 6px;
	border-bottom: 2px solid var(--wp--preset--color--primary);
}

/* Filtres à cases « Présent au salon(s) » (recette 16/07) et « Présent le »
   (jours de présence visiteurs, 17/07) : cases côte à côte sous le label
   commun (le salon = 2 champs regroupés par le JS d'Annuaire_Filtres ; les
   jours = un seul champ checkbox), box calée en haut de la rangée.
   (3 classes : gv-default-styles.css pose `align-self:auto` en (0,2,0) et se
   charge après le thème — on passe au-dessus.) */
.gv-widget-search .gv-search-box.lalevee-filtre-salon,
.gv-widget-search .gv-search-box.lalevee-filtre-jours {
	align-self: flex-start;
}
/* (classe doublée : gv-theme.css pose padding:0 via `.gv-themed
   .gv-widget-search.gv-widget-search .gv-search-box>p` (0,4,1) et se charge
   après le thème → (0,5,1) pour reprendre la main, toujours sans !important.) */
.gv-widget-search.gv-widget-search .gv-search-box.gv-search-field-checkbox.lalevee-filtre-salon p,
.gv-widget-search.gv-widget-search .gv-search-box.gv-search-field-checkbox.lalevee-filtre-jours p {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	gap: 6px 26px;
	margin: 0;
	padding: 8px; /* petit air autour des cases (0.5rem, validé Lito) */
}
/* … et les labels des cases reviennent à leur largeur naturelle (un display:block
   width:100% hérité forçait chaque case sur sa propre ligne). */
.gv-widget-search .gv-search-box.gv-search-field-checkbox.lalevee-filtre-salon p > label.gv-check-radio,
.gv-widget-search .gv-search-box.gv-search-field-checkbox.lalevee-filtre-jours p > label.gv-check-radio {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: auto;
}

/* H1 de la page LISTE de l'annuaire (widget Contenu personnalisé GravityView).
   Fournit le H1 unique de la page hôte quand le modèle « sans titre » retire le
   post-title. Sur la fiche, le H1 est le nom du domaine (cf. .lalevee-single-h1). */
.lalevee-annuaire-card .lalevee-annuaire-h1 {
	margin: 0 0 18px;
	font-family: "Montserrat", sans-serif;
	font-weight: 800;
	font-size: clamp(1.8rem, 4vw, 2.6rem);
	line-height: 1.1;
	color: var(--primary-dark, #007A3D);
}

/* ============================================================================
 * FICHE EXPOSANT — VUE UNIQUE (constructeur de mise en page, vue #34721)
 * ----------------------------------------------------------------------------
 * En-tête : nom du domaine (gauche, gros) + bloc « N° de stand » (droite, vert).
 * Corps 2 colonnes : logo + coordonnées (gauche étroite) | infos complètes
 * avec étiquettes (droite large, présentées en tableau libellé / valeur).
 * Scopé .gv-layout-builder-single-container → n'affecte QUE la fiche unique
 * (la grille reste sous .lalevee-annuaire-card). Montserrat 800 titres / Source Sans 3 corps.
 * ============================================================================ */
/* CARD de l'annuaire (groupe .lalevee-annuaire-card du MODÈLE page-sans-titre) :
   encadre liste ET fiche, flotte sur l'image de fond. Style maison = fond blanc,
   contour fin + ombre douce + coins arrondis. Le padding interne donne l'air. */
/* Fond image de l'annuaire (asset du thème → prod-safe, plus de dépendance au
   Site Editor / à une URL locale). Le PADDING vertical de <main> donne l'espace
   au-dessus/dessous de la card, et le fond le couvre → AUCUNE bande blanche
   (contrairement à une marge de card qui « traverse » main par margin-collapse). */
.lalevee-annuaire-bg {
	background-image: url("annuaire-bg.webp");
	background-size: cover;
	background-position: 79% 23%;
	background-repeat: no-repeat;
	padding-top: var(--wp--preset--spacing--x-large);
	padding-bottom: var(--wp--preset--spacing--x-large);
	position: relative;
}
/* Le background cover s'arrête net au bord bas du <main> (le footer, template
   part séparée, ne peut pas le prolonger) → les ronds aquarelle étaient
   tranchés en pleine forme. Voile dégradé vers le blanc plaqué en bas : le
   motif se dissout au lieu d'être coupé. Le contenu repasse au-dessus
   (z-index), même approche que les block styles is-style-bg-aquarelle-*.
   Retour Lito 2026-07-10. */
.lalevee-annuaire-bg::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 190px;
	background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff);
	pointer-events: none;
}
.lalevee-annuaire-bg > * {
	position: relative;
	z-index: 1;
}

.lalevee-annuaire-card {
	background: #fff;
	border: 1px solid var(--border-light, #E5E5E5);
	border-radius: 18px;
	box-shadow: 0 8px 30px rgba(0, 0, 0, 0.07);
	padding: clamp(26px, 4vw, 48px);
}

.gv-layout-builder-single-container {
	/* La « card » provient désormais du MODÈLE DE PAGE (.lalevee-annuaire-card) qui
	   encadre liste + fiche. Ce conteneur est donc TRANSPARENT et sans padding pour
	   éviter une double card / un double padding sur la fiche. */
	background: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	padding: 0;
}
/* GravityView ajoute un 2e cadre interne (.gv-layout-builder-view--entry a
   border:1px #e3e6ef + padding:16px 0 par défaut) → double bordure. On le retire,
   la carte fait déjà l'encadré. */
.gv-layout-builder-single-container .gv-layout-builder-view--entry {
	border: 0;
	padding: 0;
}

/* ── Lien « ← Retour » ── */
.gv-layout-builder-single-container .gv-back-link { margin: 0 0 18px; }
.gv-layout-builder-single-container .gv-back-link a {
	font-family: "Montserrat", sans-serif;
	font-weight: 600;
	font-size: 0.9rem;
	color: var(--secondary, #666);
	text-decoration: none;
}
.gv-layout-builder-single-container .gv-back-link a:hover { color: var(--wp--preset--color--primary); }

/* ── EN-TÊTE (1re rangée) : domaine | bloc stand ── */
.gv-layout-builder-single-container .gv-layout-builder-view > .gv-grid-row:first-child {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 24px;
	padding-bottom: 20px;
	margin-bottom: 30px;
	border-bottom: 3px solid var(--wp--preset--color--primary);
}
/* domaine (gauche, large) */
.gv-layout-builder-single-container .gv-grid-row:first-child .gv-grid-col-2-3 {
	flex: 1 1 320px;
	width: auto;
	display: flex;
	align-items: center;
}
/* H1 sémantique de la fiche = nom du domaine (Contenu personnalisé, voir
   add-seo-h1-description.php). Remplace l'ancien champ #38 dans l'en-tête. */
.gv-layout-builder-single-container .gv-grid-row:first-child .lalevee-single-h1 {
	margin: 0;
	font-family: "Montserrat", sans-serif;
	font-weight: 800;
	font-size: clamp(1.7rem, 4vw, 2.5rem);
	line-height: 1.05;
	text-transform: none;
	color: var(--primary-dark, #007A3D);
}

/* Filet vertical gris par défaut de GravityView entre les 2 colonnes → retiré. */
.gv-layout-builder-single-container .gv-layout-builder-view--entry div[class^="gv-grid-col-"] + div[class^="gv-grid-col-"] {
	border-left: 0;
}

/* ── Carte « identité » (colonne gauche, sous le logo) ──
   Domaine + métier + ville (+ bloc Contact inscrits), texte blanc.
   VERT charte pour les fiches EXPOSANTS (défaut), ROSE pour les fiches
   VISITEURS (demande Lito 2026-07-13) — le contexte se lit sur le wrapper
   de champ GV (.gv-field-{form}-custom : form 1 = exposants, form 2 =
   visiteurs), doublé du wrapper de page annuaire visiteurs. */
.gv-layout-builder-single-container .lalevee-id-card {
	--lalevee-rose: #C25B7C;
	--lalevee-card: var(--wp--preset--color--primary, #00A651);
	background: var(--lalevee-card);
	color: #fff;
	border-radius: 14px;
	padding: 20px 22px;
	margin: 18px 0;
	line-height: 1.45;
}
.gv-layout-builder-single-container .gv-field-2-custom .lalevee-id-card,
.lalevee-annuaire--visiteurs .gv-layout-builder-single-container .lalevee-id-card {
	--lalevee-card: var(--lalevee-rose);
}
/* Deux cards successives (identité puis Contact) : écart resserré (demande
   Lito 2026-07-13). Marges des cards (18+18) + paddings des wrappers de champ
   (16+4+4+5) empilaient ~65px — entre deux cards on ne garde que l'espace
   structurel (~13px). Ne joue que si le champ SUIVANT contient une card :
   pour un anonyme (bloc Contact non rendu), l'id-card garde ses marges. */
.gv-layout-builder-single-container [id^="gv-field-"]:has(.lalevee-id-card) + [id^="gv-field-"]:has(.lalevee-id-card) {
	padding-top: 0;
}
.gv-layout-builder-single-container [id^="gv-field-"]:has(.lalevee-id-card) + [id^="gv-field-"] .lalevee-id-card {
	margin-top: 0;
}
.gv-layout-builder-single-container [id^="gv-field-"]:has(.lalevee-id-card):has(+ [id^="gv-field-"] .lalevee-id-card) .lalevee-id-card {
	margin-bottom: 0;
}
/* Rangée des réseaux sociaux (site #47 … X #52, TikTok #130) : même
   resserrage sous la card qui précède (identité en anonyme, Contact en
   connecté) — demande Lito 2026-07-13. Le padding-top tombe pour TOUTE la
   rangée (pas seulement l'icône adjacente) pour garder l'alignement. */
.gv-layout-builder-single-container [id^="gv-field-"]:has(.lalevee-id-card):has(+ .gv-field-1-47, + .gv-field-1-48, + .gv-field-1-49, + .gv-field-1-50, + .gv-field-1-51, + .gv-field-1-52, + .gv-field-1-130) .lalevee-id-card {
	margin-bottom: 0;
}
/* classe doublée : la feuille GV pose padding-top:16px via
   `.gv-grid-row + .gv-grid-row div[class^="gv-field-"]` (0,4,1) → (0,5,1) requis */
.gv-layout-builder-single-container .gv-grid-row + .gv-grid-row div.gv-field-1-47.gv-field-1-47,
.gv-layout-builder-single-container .gv-grid-row + .gv-grid-row div.gv-field-1-48.gv-field-1-48,
.gv-layout-builder-single-container .gv-grid-row + .gv-grid-row div.gv-field-1-49.gv-field-1-49,
.gv-layout-builder-single-container .gv-grid-row + .gv-grid-row div.gv-field-1-50.gv-field-1-50,
.gv-layout-builder-single-container .gv-grid-row + .gv-grid-row div.gv-field-1-51.gv-field-1-51,
.gv-layout-builder-single-container .gv-grid-row + .gv-grid-row div.gv-field-1-52.gv-field-1-52,
.gv-layout-builder-single-container .gv-grid-row + .gv-grid-row div.gv-field-1-130.gv-field-1-130 {
	padding-top: 0;
}
.gv-layout-builder-single-container .lalevee-id-domaine {
	display: block;
	font-family: "Montserrat", sans-serif;
	font-weight: 800;
	font-size: 1.2rem;
	line-height: 1.15;
	margin-bottom: 8px;
}
.gv-layout-builder-single-container .lalevee-id-person {
	display: block;
	font-family: "Source Sans 3", sans-serif;
	font-weight: 600;
	font-size: 1rem;
}
.gv-layout-builder-single-container .lalevee-id-metier {
	display: block;
	font-family: "Source Sans 3", sans-serif;
	font-size: 0.9rem;
	opacity: 0.9;
}
.gv-layout-builder-single-container .lalevee-id-address {
	display: block;
	font-family: "Source Sans 3", sans-serif;
	font-size: 0.92rem;
	margin-top: 12px;
	opacity: 0.95;
}
/* FICHE UNIQUE : pas de contour ni d'effet hover Vantage sur le conteneur
   (retour Lito 2026-07-10 — ce n'est pas une card cliquable).
   Vantage pose aussi fond + couleur de texte au survol via variables
   (--gv-color-surface-hover / --gv-color-text-hover) → on aligne les valeurs
   hover sur les valeurs de repos plutôt que de deviner le fond de base. */
.gv-layout-builder-single-container .gv-layout-builder-view--entry,
.gv-layout-builder-single-container .gv-layout-builder-view--entry:hover,
.gv-layout-builder-single-container .gv-layout-builder-view--entry:focus-within {
	--gv-color-surface-hover: var(--gv-color-surface);
	--gv-color-text-hover: var(--gv-color-text);
	--gv-entry-shadow-hover: none;
	border: 0 !important;
	box-shadow: none !important;
	transform: none !important;
	transition: none !important;
}

/* bloc stand (droite, compact, visible) */
.gv-layout-builder-single-container .gv-grid-row:first-child .gv-grid-col-1-3 {
	flex: 0 0 auto;
	width: auto;
	margin-left: auto; /* ferré à DROITE (retour Lito 2026-07-10) */
	align-self: center; /* hauteur = contenu, pas d'étirement → marges haut/bas équilibrées */
	min-width: 150px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	text-align: center;
	padding: 16px 24px;
	border-radius: 14px;
	background: var(--wp--preset--color--primary);
	box-shadow: 0 6px 18px color-mix(in srgb, var(--wp--preset--color--primary) 35%, transparent);
}
.gv-layout-builder-single-container .gv-grid-row:first-child .gv-grid-col-1-3::before {
	content: "N° de stand";
	display: block;
	font-family: "Montserrat", sans-serif;
	font-weight: 700;
	font-size: 0.7rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: color-mix(in srgb, #fff 85%, transparent);
	margin-bottom: 2px;
}
.gv-layout-builder-single-container .gv-grid-row:first-child .lalevee-stand-value .gv-grid-value {
	font-family: "Montserrat", sans-serif;
	font-weight: 800;
	font-size: clamp(1.8rem, 5vw, 2.6rem);
	line-height: 1;
	color: #fff;
	display: flex; /* Angers + Paris côte à côte */
	gap: 18px;
	justify-content: center;
}
/* stand : NUMÉRO en gros, ville en petit dessous, sur la largeur du numéro
   (demande Lito 2026-07-14 — « Angers : B12 » prenait trop de place) */
.lalevee-stand {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
}
.lalevee-stand-num {
	display: block;
}
.lalevee-stand-ville {
	display: block;
	width: 100%;
	text-align: center;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: color-mix(in srgb, #fff 85%, transparent);
	margin-top: 3px;
}

/* ── CORPS (2e rangée) : 2 colonnes ── */
.gv-layout-builder-single-container .gv-layout-builder-view > .gv-grid-row:nth-of-type(2) {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 36px;
}
/* gauche : logo + coordonnées (étroite) */
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 {
	flex: 1 1 240px;
	width: auto;
	max-width: 320px;
}
/* droite : infos complètes (large) */
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-2-3 {
	flex: 3 1 360px;
	width: auto;
}

/* Neutralise le filet gris par défaut de GravityView entre les champs de la 2e
   rangée (border-top #e3e6ef sur .gv-grid-row+.gv-grid-row div[class^=gv-field-]). */
.gv-layout-builder-single-container .gv-layout-builder-view--entry .gv-grid-row + .gv-grid-row div[class^="gv-field-"] {
	border-top: 0;
}

/* Adresse (rue / CP / ville = #41 / #42 / #43) : bloc compact. GravityView pousse
   un padding-top:16px sur chaque champ de la 2e rangée → on l'annule sur ces 3
   lignes pour qu'elles se suivent comme une adresse normale. Champs gardés séparés
   (rich data plus tard). */
.gv-layout-builder-single-container .gv-layout-builder-view--entry .gv-grid-row + .gv-grid-row div.gv-field-1-41,
.gv-layout-builder-single-container .gv-layout-builder-view--entry .gv-grid-row + .gv-grid-row div.gv-field-1-42,
.gv-layout-builder-single-container .gv-layout-builder-view--entry .gv-grid-row + .gv-grid-row div.gv-field-1-43 {
	margin-top: 0;
	margin-bottom: 0;
	padding-top: 0;
	line-height: 1.5;
}

/* logo (cover, arrondi) — le champ custom n'a pas de classe wrapper dédiée :
   on cible directement l'image du shortcode dans la colonne gauche. */
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-custom:first-child { margin: 0 0 18px; }
.gv-layout-builder-single-container .lalevee-expo-logo {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain; /* fiche détail : logo entier, jamais rogné */
	padding: 14px;
	border-radius: 14px;
	border: 1px solid var(--border-light, #E5E5E5);
	background: #fff;
}

/* colonne gauche : domaine répété (discret) + lignes de coordonnées */
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-field-1-38 .gv-grid-value {
	font-family: "Montserrat", sans-serif;
	font-weight: 700;
	font-size: 1.1rem;
	color: var(--primary-dark, #007A3D);
}
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 [id^="gv-field-"] {
	margin: 0 0 5px;
	line-height: 1.45;
}
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-grid-value {
	font-family: "Source Sans 3", sans-serif;
	color: var(--contrast, #1a1a1a);
}

/* Sections (titres de bloc) : le libellé est piloté par la VUE (option « afficher
   l'étiquette » du champ section), pas en dur — un négociant aura ses propres
   intitulés. On masque la valeur vide et on habille le label natif. */
.gv-layout-builder-single-container .gv-section .gv-grid-value { display: none; }
.gv-layout-builder-single-container .gv-section {
	margin: 18px 0 10px;
	padding-bottom: 6px;
	border-bottom: 2px solid color-mix(in srgb, var(--wp--preset--color--primary) 35%, transparent);
}
.gv-layout-builder-single-container .gv-section .gv-field-label {
	display: block;
	font-family: "Source Sans 3", sans-serif;
	font-weight: 700;
	font-size: 1.3rem;
	text-transform: none;
	letter-spacing: normal;
	color: var(--primary-dark, #007A3D);
}
/* la section qui ouvre la colonne droite → pas de marge haute */
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-2-3 .gv-section:first-child { margin-top: 0; }
/* section colonne gauche (RÉSEAUX) : marge haute pour la détacher de l'adresse
   (la règle générale de colonne gauche remettait margin-top:0). */
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-section { margin-top: 24px; }

/* Présentation du domaine (#91) : prose pleine largeur, EXCLUE du gabarit
   libellé/valeur. C'est le contenu éditorial indexable de la fiche (SEO). */
.gv-layout-builder-single-container .lalevee-single-description {
	display: block;
	margin: 0 0 22px;
}
/* Titre « Présentation » (étiquette du champ #91) = IDENTIQUE à une section :
   même police/taille/couleur + filet vert dessous. */
.gv-layout-builder-single-container .lalevee-single-description .gv-field-label {
	display: block;
	font-family: "Source Sans 3", sans-serif;
	font-weight: 700;
	font-size: 1.3rem;
	text-transform: none;
	letter-spacing: normal;
	color: var(--primary-dark, #007A3D);
	margin: 0 0 10px;
	padding-bottom: 6px;
	border-bottom: 2px solid color-mix(in srgb, var(--wp--preset--color--primary) 35%, transparent);
}
.gv-layout-builder-single-container .lalevee-single-description .gv-grid-value,
.gv-layout-builder-single-container .lalevee-single-description .gv-grid-value p {
	font-family: "Source Sans 3", sans-serif;
	font-size: var(--wp--preset--font-size--base);
	line-height: 1.6;
	color: var(--contrast, #1a1a1a);
}
.gv-layout-builder-single-container .lalevee-single-description .gv-grid-value p { margin: 0; }

/* ── Colonne droite : champs DE DONNÉES présentés en libellé / valeur (sans bordure) ──
   On exclut .gv-section (titres de bloc) ET la description (.lalevee-single-description)
   du gabarit libellé/valeur. */
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-2-3 [id^="gv-field-"]:not(.gv-section):not(.lalevee-single-description) {
	display: grid;
	grid-template-columns: minmax(150px, 40%) 1fr;
	gap: 4px 20px;
	align-items: baseline;
	padding: 7px 0;
}
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-2-3 [id^="gv-field-"]:not(.gv-section):not(.lalevee-single-description) .gv-field-label {
	font-family: "Source Sans 3", sans-serif;
	font-weight: 600;
	font-size: 1rem;
	text-transform: uppercase;
	letter-spacing: normal;
	line-height: 1.3;
	color: var(--primary-dark, #007A3D);
}
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-2-3 .gv-grid-value {
	font-family: "Source Sans 3", sans-serif;
	font-size: 1rem;
	color: var(--contrast, #1a1a1a);
}

/* ── Réseaux sociaux : liens texte → pastilles à logo (colonne gauche) ──
   Champs site web #47, YouTube #51, Instagram #50, LinkedIn #48, Facebook #49,
   Twitter/X #52. Seuls les champs renseignés sont rendus par GravityView. */
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-field-1-47,
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-field-1-51,
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-field-1-50,
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-field-1-48,
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-field-1-49,
.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3 .gv-field-1-52 {
	display: inline-block;
	margin: 8px 8px 0 0;
	vertical-align: top;
}
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-47 a,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-51 a,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-50 a,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-48 a,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-49 a,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-52 a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--primary);
	background-repeat: no-repeat;
	background-position: center;
	background-size: 19px 19px;
	font-size: 0; /* masque l'URL affichée en texte (href conservé) */
	line-height: 0;
	text-decoration: none;
	border: 0;
	transition: background-color 0.15s ease, transform 0.15s ease;
}
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-47 a:hover,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-51 a:hover,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-50 a:hover,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-48 a:hover,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-49 a:hover,
.gv-layout-builder-single-container .gv-grid-col-1-3 .gv-field-1-52 a:hover {
	background-color: var(--primary-dark, #007A3D);
	transform: translateY(-2px);
}
/* Glyphes de marque (SVG blanc intégré) */
.gv-layout-builder-single-container .gv-field-1-47 a { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2'><circle cx='12' cy='12' r='9'/><path d='M3 12h18M12 3a15 15 0 0 1 0 18M12 3a15 15 0 0 0 0 18'/></svg>"); }
.gv-layout-builder-single-container .gv-field-1-49 a { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'><path d='M22 12c0-5.52-4.48-10-10-10S2 6.48 2 12c0 4.99 3.66 9.13 8.44 9.88v-6.99H7.9V12h2.54V9.8c0-2.5 1.49-3.89 3.78-3.89 1.09 0 2.23.2 2.23.2v2.46h-1.26c-1.24 0-1.63.77-1.63 1.56V12h2.78l-.44 2.89h-2.34v6.99C18.34 21.13 22 16.99 22 12z'/></svg>"); }
.gv-layout-builder-single-container .gv-field-1-50 a { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'><path d='M12 2.16c3.2 0 3.58.01 4.85.07 1.17.05 1.8.25 2.23.41.56.22.96.48 1.38.9.42.42.68.82.9 1.38.16.42.36 1.06.41 2.23.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.05 1.17-.25 1.8-.41 2.23-.22.56-.48.96-.9 1.38-.42.42-.82.68-1.38.9-.42.16-1.06.36-2.23.41-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-1.17-.05-1.8-.25-2.23-.41-.56-.22-.96-.48-1.38-.9-.42-.42-.68-.82-.9-1.38-.16-.42-.36-1.06-.41-2.23-.06-1.27-.07-1.65-.07-4.85s.01-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68 1.38-.9.42-.16 1.06-.36 2.23-.41 1.27-.06 1.65-.07 4.85-.07M12 0C8.74 0 8.33.01 7.05.07 5.78.13 4.9.33 4.14.63a5.9 5.9 0 0 0-2.13 1.38A5.9 5.9 0 0 0 .63 4.14C.33 4.9.13 5.78.07 7.05.01 8.33 0 8.74 0 12s.01 3.67.07 4.95c.06 1.27.26 2.15.56 2.91a5.9 5.9 0 0 0 1.38 2.13 5.9 5.9 0 0 0 2.13 1.38c.76.3 1.64.5 2.91.56 1.28.06 1.69.07 4.95.07s3.67-.01 4.95-.07c1.27-.06 2.15-.26 2.91-.56a6.15 6.15 0 0 0 3.51-3.51c.3-.76.5-1.64.56-2.91.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.06-1.27-.26-2.15-.56-2.91a5.9 5.9 0 0 0-1.38-2.13A5.9 5.9 0 0 0 19.86.63c-.76-.3-1.64-.5-2.91-.56C15.67.01 15.26 0 12 0zm0 5.84A6.16 6.16 0 1 0 18.16 12 6.16 6.16 0 0 0 12 5.84zm0 10.16A4 4 0 1 1 16 12a4 4 0 0 1-4 4zm6.41-10.85a1.44 1.44 0 1 0 1.44 1.44 1.44 1.44 0 0 0-1.44-1.44z'/></svg>"); }
.gv-layout-builder-single-container .gv-field-1-51 a { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'><path d='M23.5 6.2a3.02 3.02 0 0 0-2.12-2.14C19.5 3.55 12 3.55 12 3.55s-7.5 0-9.38.51A3.02 3.02 0 0 0 .5 6.2 31.5 31.5 0 0 0 0 12a31.5 31.5 0 0 0 .5 5.8 3.02 3.02 0 0 0 2.12 2.14c1.88.51 9.38.51 9.38.51s7.5 0 9.38-.51a3.02 3.02 0 0 0 2.12-2.14A31.5 31.5 0 0 0 24 12a31.5 31.5 0 0 0-.5-5.8zM9.6 15.6V8.4l6.27 3.6z'/></svg>"); }
.gv-layout-builder-single-container .gv-field-1-48 a { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'><path d='M20.45 20.45h-3.56v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.66H9.35V9h3.41v1.56h.05c.48-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.07 2.07 0 1 1 0-4.14 2.07 2.07 0 0 1 0 4.14zm1.78 13.02H3.55V9h3.57v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.22.79 24 1.77 24h20.45c.98 0 1.78-.78 1.78-1.73V1.73C24 .77 23.2 0 22.22 0z'/></svg>"); }
.gv-layout-builder-single-container .gv-field-1-52 a { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'><path d='M18.24 2.25h3.31l-7.23 8.26 8.5 11.24h-6.66l-5.22-6.82-5.97 6.82H1.66l7.73-8.84L1.24 2.25H8.07l4.71 6.23zm-1.16 17.52h1.83L7.01 4.13H5.04z'/></svg>"); }

/* ── Responsive : empilement sous ~720px ── */
@media (max-width: 781px) {
	/* HEADER MOBILE (balayage 2026-07-14) : le logo à largeur FIGÉE (271px,
	   style inline du bloc site-logo) écrasait la colonne de droite — réseaux
	   sociaux empilés à la verticale, bouton « Inscription » en texte vertical.
	   max-width bat le width inline sans !important : le logo cède la place. */
	.site-header .wp-block-site-logo {
		max-width: min(110px, 30vw);
		min-width: 0;
		flex-shrink: 0; /* sans quoi le flex le comprime au-delà du nécessaire */
	}
	.site-header .wp-block-site-logo img {
		width: 100%;
		height: auto;
	}
	.site-header .wp-block-button__link {
		white-space: nowrap;
		padding-left: 1.1em;
		padding-right: 1.1em;
	}
	/* réseaux : une seule ligne, icônes réduites (budget 375px : logo 110 +
	   user/panier/4 réseaux ≈ 200 + gaps ≈ 320 < 327 utiles) */
	.site-header .wp-block-social-links {
		flex-wrap: nowrap;
		font-size: 13px;
	}

	/* Mes commandes : tableau compact (demande Lito 2026-07-14) — l'état est
	   réduit à sa pastille ::before et le total à son montant (« En attente »
	   et « pour 1 article » sont des nœuds TEXTE → font-size:0, lisible aux
	   lecteurs d'écran, la pastille en px est insensible) ; cellules resserrées. */
	/* classe doublée : les règles de base du tableau arrivent PLUS BAS dans
	   la feuille et gagneraient à spécificité égale */
	.lalevee-wc-embed--orders.lalevee-wc-embed--orders .woocommerce-orders-table__header {
		padding: 10px 6px;
	}
	.lalevee-wc-embed--orders.lalevee-wc-embed--orders .woocommerce-orders-table .woocommerce-button {
		padding: 6px 12px;
		font-size: 0.85rem;
	}
	.lalevee-wc-embed--orders.lalevee-wc-embed--orders .woocommerce-orders-table__cell {
		padding: 10px 6px;
	}
	.lalevee-wc-embed--orders.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-status {
		font-size: 0;
	}
	.lalevee-wc-embed--orders.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-status::before {
		margin-right: 0;
	}
	.lalevee-wc-embed--orders.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-total {
		font-size: 0;
		white-space: normal;
	}
	.lalevee-wc-embed--orders.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-total .woocommerce-Price-amount {
		font-size: 0.94rem;
	}

	/* Barre Mon espace : « Déconnexion » réduit à son icône (demande Lito
	   2026-07-14) — libellé masqué visuellement mais conservé pour les
	   lecteurs d'écran ; cible tactile élargie sans bouger la mise en page. */
	.mespace-bar__logout span {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		padding: 0;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}
	.mespace-bar__logout {
		padding: 10px;
		margin: -10px;
	}

	/* GRILLES de groupes (bento « couleurs de communication », etc.) : le mode
	   « nombre de colonnes fixe » de l'éditeur (columnCount:4 + spans) n'est
	   PAS responsive → 4 pistes de ~80px en mobile, mots empilés et cartes
	   qui se chevauchent (constat Lito 2026-07-14, accueil Mon espace).
	   En mobile : 2 colonnes — les spans se replient d'eux-mêmes (span 2 =
	   pleine largeur, 1×1 = demi). */
	.wp-block-group.is-layout-grid,
	.wp-block-post-template.is-layout-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 600px) {
	/* petit mobile : les cellules 1×1 du bento deviennent trop étroites
	   (titres coupés) → une seule colonne, cartes pleine largeur. Les spans
	   posés par l'éditeur doivent tomber aussi : un « span 2 » sur une grille
	   à 1 colonne crée des colonnes IMPLICITES (re-chevauchement). */
	.wp-block-group.is-layout-grid,
	.wp-block-post-template.is-layout-grid {
		grid-template-columns: minmax(0, 1fr);
	}
	.wp-block-group.is-layout-grid > *,
	.wp-block-post-template.is-layout-grid > * {
		grid-column: auto;
		grid-row: auto;
	}
}
@media (max-width: 781px) {

	/* duos colorés (MER + invite annuaire visiteurs) : les paddings x-large
	   posés en STYLE INLINE par l'éditeur mangent la largeur en mobile
	   (titres césurés) — !important nécessaire contre l'inline, scopé mobile. */
	.lalevee-mer-invite-v2 .wp-block-columns .wp-block-column,
	.lalevee-annuvis-invite .wp-block-columns .wp-block-column {
		padding: var(--wp--preset--spacing--large) var(--wp--preset--spacing--medium) !important;
	}

	/* COVERS de contenu : WP annule le padding global des .has-global-padding
	   IMBRIQUÉS → le contenu des couvertures pleine largeur collait aux bords
	   (constat Lito 2026-07-14, section Actualités de la home). */
	.wp-block-post-content .wp-block-cover > .wp-block-cover__inner-container.has-global-padding {
		padding-inline: var(--wp--style--root--padding-left, 24px);
	}

	/* CTA countdown de pied de home : 4 épaisseurs de padding inline cumulées
	   (cover 16 + groupe 24 + card 38 + colonne 32) ne laissaient que ~148px
	   de contenu. Paddings inline posés par l'éditeur → !important scopé.
	   Le groupe intermédiaire perd aussi son padding : la card s'aligne sur
	   la marge des cartes d'articles (24px de bord). */
	.levee-cta-overlap-section.levee-cta-overlap-section {
		padding-inline: 0 !important;
	}
	.levee-cta-overlap-section .wp-block-cover__inner-container > .wp-block-group {
		padding-inline: 0 !important;
	}
	.levee-cta-card.levee-cta-card {
		padding-left: 20px !important;
		padding-right: 20px !important;
	}
	.levee-cta-card > .wp-block-column {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* partenaires : logos centrés (la justification space-between vient de
	   l'éditeur — pas de réglage natif par breakpoint) + le padding xx-large
	   inline rendu raisonnable en mobile. */
	.row-logos {
		justify-content: center !important;
		gap: 20px 32px;
		padding-inline: var(--wp--preset--spacing--medium) !important;
	}

	/* ⚠️ BUG MOBILE (constat Lito 2026-07-14) : la feuille GV passe la rangée
	   en flex-direction:column sous son breakpoint → nos flex-basis de LARGEUR
	   (240px / 360px) devenaient des HAUTEURS imposées : colonnes tronquées,
	   contenu débordant sur le footer. On pilote l'empilement nous-mêmes :
	   direction column + basis auto, quel que soit le breakpoint GV. */
	.gv-layout-builder-single-container .gv-layout-builder-view > .gv-grid-row:nth-of-type(2) {
		flex-direction: column;
		gap: 24px;
	}
	.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-1-3,
	.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-2-3 {
		flex: 0 0 auto;
		width: 100%;
		max-width: none;
	}
	/* … et la 1re rangée (titre | badge stand) a le MÊME bug : le flex-basis
	   de 320px de la colonne titre devenait une HAUTEUR (grand blanc au-dessus
	   et au-dessous du titre — constat Lito 2026-07-14). */
	.gv-layout-builder-single-container .gv-layout-builder-view > .gv-grid-row:first-child {
		flex-direction: column;
		gap: 16px;
	}
	.gv-layout-builder-single-container .gv-grid-row:first-child .gv-grid-col-2-3,
	.gv-layout-builder-single-container .gv-grid-row:first-child .gv-grid-col-1-3 {
		flex: 0 0 auto;
		width: 100%;
	}

	/* badge stand PAS ENCORE ATTRIBUÉ (marqueur .lalevee-stand-vide posé par
	   le gvlogic de la vue) : masqué en mobile — il prend de la place pour
	   rien (demande Lito 2026-07-14). Desktop : ••• conservé. */
	.gv-layout-builder-single-container .gv-grid-row:first-child .gv-grid-col-1-3:has(.lalevee-stand-vide) {
		display: none;
	}
}
@media (max-width: 720px) {
	/* gabarit libellé/valeur → 1 colonne (libellé au-dessus). Sélecteur ALIGNÉ
	   sur la règle desktop (mêmes :not) : l'ancienne version, moins spécifique,
	   ne gagnait jamais. */
	.gv-layout-builder-single-container .gv-grid-row:nth-of-type(2) .gv-grid-col-2-3 [id^="gv-field-"]:not(.gv-section):not(.lalevee-single-description) {
		grid-template-columns: 1fr;
		gap: 2px;
	}
}

/* ============================================================================
 * FORMULAIRE INSCRIPTION (#gform_wrapper_1) — pastille d'étape active en vert AB.
 * ============================================================================ */
#gform_wrapper_1 .gf_step_active .gf_step_number {
	background-color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: #fff;
}
/* Étapes COMPLÉTÉES (coche) : vert AB foncé au lieu du bleu GF (Lito 15/07) —
   distinct de l'étape active (vert vif) : « fait » vs « vous êtes ici ».
   Le rond visible est le ::after (icône coche) qui RECOUVRE la pastille. */
#gform_wrapper_1 .gf_step_completed .gf_step_number,
#gform_wrapper_1 .gf_step_completed .gf_step_number::after {
	background-color: var(--wp--preset--color--primary-dark, #007a3d);
	border-color: var(--wp--preset--color--primary-dark, #007a3d);
	color: #fff;
}

/* ── FICHE : galerie de visuels (#81, 3e rangée pleine largeur) ──
   Le champ upload multi-images est rendu en <ul.gv-field-file-uploads>. On le passe
   en grille responsive ; le clic ouvre le lightbox fancybox (groupé par entrée),
   déjà actif sur la vue (réglage lightbox=1). */
.gv-layout-builder-single-container .lalevee-single-gallery {
	margin-top: 28px;
	padding-top: 22px;
	border-top: 1px solid var(--border-light, #E5E5E5);
}
.gv-layout-builder-single-container .lalevee-single-gallery .gv-field-file-uploads {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(180px, 100%), 1fr));
	gap: 12px;
}
.gv-layout-builder-single-container .lalevee-single-gallery .gv-field-file-uploads li { margin: 0; }
.gv-layout-builder-single-container .lalevee-single-gallery .gv-field-file-uploads a {
	display: block;
	aspect-ratio: 4 / 3;
	border-radius: 12px;
	overflow: hidden;
	border: 1px solid var(--border-light, #E5E5E5);
}
.gv-layout-builder-single-container .lalevee-single-gallery .gv-field-file-uploads img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.3s ease;
}
.gv-layout-builder-single-container .lalevee-single-gallery .gv-field-file-uploads a:hover img {
	transform: scale(1.05);
}

/* ============================================================================
 * CORRECTIF POLICE DES TITRES (primary = Montserrat)
 * ----------------------------------------------------------------------------
 * Selon la version d'Ollie parent, WP fusionne les `fontFamilies` parent+enfant
 * en DOUBLON de slug `primary` (Montserrat de l'enfant PUIS Mona Sans du parent),
 * et le dernier l'emporte dans le CSS généré → titres en Mona Sans à tort.
 * On réaffirme la valeur du theme.json enfant (= ce que rend déjà la prod).
 * Prod-safe : sur prod `--primary` vaut déjà Montserrat, c'est un no-op.
 * ============================================================================ */
:root {
	--wp--preset--font-family--primary: "Montserrat", system-ui, -apple-system, sans-serif;
}

/* ============================================================================
 * MON ESPACE (plugin elito-mon-espace ≥ 1.13) — mapping de la charte.
 * Le plugin embarque sa feuille `mespace-ui.css` en TOKENS NEUTRES --mespace-* :
 * on ne fait ici QUE brancher la charte La Levée dessus (le seul morceau
 * légitimement « par site »). Aucune règle de structure : tout vit au plugin.
 * ============================================================================ */
:root {
	--mespace-accent: var(--wp--preset--color--primary, #00A651);        /* vert AB */
	--mespace-accent-2: var(--wp--preset--color--primary-alt, #D4874D);  /* ambre */
	--mespace-ink: var(--wp--preset--color--main, #1a1a1a);
	--mespace-paper: var(--wp--preset--color--base, #ffffff);
	--mespace-soft: var(--wp--preset--color--tertiary, #f6f5f1);
	--mespace-line: var(--wp--preset--color--border-light, #e5e5e5);
	--mespace-muted: var(--wp--preset--color--secondary, #6b6358);
	--mespace-font-heading: "Montserrat", system-ui, -apple-system, sans-serif;
	--mespace-font-ui: "Source Sans 3", system-ui, -apple-system, sans-serif;
}

/* ============================================================================
 * COMMANDES embarquées dans Mon espace ([lalevee_wc_orders]) — liste + détail.
 * Tout est scopé .lalevee-wc-embed : la page « Mon compte » native WooCommerce
 * (qui porte les flux d'auth) garde son rendu d'origine.
 * Variables charte avec repli en dur (contexte outlet : presets pas garantis).
 * ============================================================================ */
.lalevee-wc-embed {
	--lwc-green: var(--wp--preset--color--primary, #007A3D);
	--lwc-green-dark: var(--wp--preset--color--primary-dark, #00592D);
	--lwc-accent: var(--wp--preset--color--primary-accent, #E6F4EC);
	--lwc-amber: #C97A30;
	--lwc-ink: #2e2d29;
	--lwc-muted: #6f6e68;
	--lwc-line: #ece9e2;
}

/* ---- LISTE des commandes : tableau en carte ---- */
.lalevee-wc-embed--orders .woocommerce-orders-table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--lwc-line);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.045);
	background: #fff;
}
.lalevee-wc-embed--orders .woocommerce-orders-table__header {
	background: var(--lwc-accent);
	color: var(--lwc-green-dark);
	font-family: "Montserrat", sans-serif;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	text-align: left;
	padding: 12px 16px;
	border: none;
}
.lalevee-wc-embed--orders .woocommerce-orders-table__cell {
	padding: 13px 16px;
	vertical-align: middle;
	border: none;
	border-top: 1px solid var(--lwc-line);
	font-size: 0.94rem;
}
.lalevee-wc-embed--orders .woocommerce-orders-table__row:first-child .woocommerce-orders-table__cell {
	border-top: none;
}
.lalevee-wc-embed--orders .woocommerce-orders-table__row:nth-child(even) .woocommerce-orders-table__cell {
	background: #faf9f6;
}
.lalevee-wc-embed--orders .woocommerce-orders-table__row:hover .woocommerce-orders-table__cell {
	background: var(--lwc-accent);
}
.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-number {
	font-weight: 700;
	color: var(--lwc-green-dark);
}
.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-total {
	font-weight: 600;
	white-space: nowrap;
}
/* Statut en pastille colorée (pastille via ::before, teinte selon la classe de rangée) */
.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-status {
	font-weight: 600;
}
.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-status::before {
	content: "";
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	margin-right: 7px;
	vertical-align: middle;
	background: var(--lwc-muted);
}
.lalevee-wc-embed--orders .woocommerce-orders-table__row--status-processing .woocommerce-orders-table__cell-order-status::before,
.lalevee-wc-embed--orders .woocommerce-orders-table__row--status-completed .woocommerce-orders-table__cell-order-status::before { background: var(--lwc-green); }
.lalevee-wc-embed--orders .woocommerce-orders-table__row--status-on-hold .woocommerce-orders-table__cell-order-status::before,
.lalevee-wc-embed--orders .woocommerce-orders-table__row--status-pending .woocommerce-orders-table__cell-order-status::before { background: var(--lwc-amber); }
.lalevee-wc-embed--orders .woocommerce-orders-table__row--status-cancelled .woocommerce-orders-table__cell-order-status::before,
.lalevee-wc-embed--orders .woocommerce-orders-table__row--status-failed .woocommerce-orders-table__cell-order-status::before,
.lalevee-wc-embed--orders .woocommerce-orders-table__row--status-refunded .woocommerce-orders-table__cell-order-status::before { background: #c0392b; }
/* Bouton « Voir » : pill compact vert (le thème le rend obèse par défaut) */
.lalevee-wc-embed--orders .woocommerce-orders-table__cell-order-actions { text-align: right; }
.lalevee-wc-embed--orders .woocommerce-orders-table .woocommerce-button {
	display: inline-block;
	padding: 6px 18px;
	margin: 0;
	font-size: 0.85rem;
	font-weight: 600;
	line-height: 1.3;
	border-radius: 999px;
	background: var(--lwc-green);
	color: #fff;
	border: none;
}
.lalevee-wc-embed--orders .woocommerce-orders-table .woocommerce-button:hover {
	background: var(--lwc-green-dark);
	color: #fff;
}

/* ---- DÉTAIL d'une commande (récapitulatif) ---- */
/* Phrase d'intro WC (« La commande n°X… ») : les <mark> natifs sont jaune
   navigateur → teinte charte. Et un poil de respiration sous l'intro. */
.lalevee-wc-embed--order > p:first-of-type,
.lalevee-wc-embed--order .woocommerce-order-overview {
	color: var(--lwc-muted);
	margin-bottom: 22px;
}
.lalevee-wc-embed--order mark {
	background: var(--lwc-accent);
	color: var(--lwc-green-dark);
	font-weight: 600;
	padding: 1px 6px;
	border-radius: 5px;
}
.lalevee-wc-embed--order .lalevee-wc-back {
	margin: 0 0 18px;
}
.lalevee-wc-embed--order .lalevee-wc-back a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--lwc-green-dark);
	text-decoration: none;
}
.lalevee-wc-embed--order .lalevee-wc-back a::before { content: "←"; }
.lalevee-wc-embed--order .lalevee-wc-back a:hover { text-decoration: underline; }

.lalevee-wc-embed--order .woocommerce-order-details__title,
.lalevee-wc-embed--order .woocommerce-column__title {
	font-family: "Montserrat", sans-serif;
	font-size: 1.05rem;
	font-weight: 700;
	color: var(--lwc-green-dark);
	margin: 0 0 12px;
	padding-bottom: 8px;
	border-bottom: 2px solid var(--lwc-accent);
}
.lalevee-wc-embed--order .woocommerce-customer-details { margin-top: 30px; }

/* Tableau récap produits/totaux en carte */
.lalevee-wc-embed--order .woocommerce-table--order-details {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--lwc-line);
	border-radius: 14px;
	overflow: hidden;
	background: #fff;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.045);
}
.lalevee-wc-embed--order .woocommerce-table--order-details thead th {
	background: var(--lwc-accent);
	color: var(--lwc-green-dark);
	font-family: "Montserrat", sans-serif;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	text-align: left;
	padding: 12px 16px;
	border: none;
}
.lalevee-wc-embed--order .woocommerce-table--order-details tbody td,
.lalevee-wc-embed--order .woocommerce-table--order-details tbody th {
	padding: 12px 16px;
	border: none;
	border-top: 1px solid var(--lwc-line);
	font-size: 0.94rem;
	vertical-align: top;
}
.lalevee-wc-embed--order .woocommerce-table--order-details .product-total,
.lalevee-wc-embed--order .woocommerce-table--order-details td.product-total { text-align: right; white-space: nowrap; }
/* Pied (sous-total, total…) : libellés à droite, total final accentué */
.lalevee-wc-embed--order .woocommerce-table--order-details tfoot th {
	text-align: right;
	padding: 10px 16px;
	border: none;
	border-top: 1px solid var(--lwc-line);
	font-weight: 600;
	color: var(--lwc-muted);
}
.lalevee-wc-embed--order .woocommerce-table--order-details tfoot td {
	text-align: right;
	padding: 10px 16px;
	border: none;
	border-top: 1px solid var(--lwc-line);
	white-space: nowrap;
}
.lalevee-wc-embed--order .woocommerce-table--order-details tfoot tr:last-child th,
.lalevee-wc-embed--order .woocommerce-table--order-details tfoot tr:last-child td {
	font-size: 1.05rem;
	font-weight: 800;
	color: var(--lwc-green-dark);
	background: #faf9f6;
}
/* Coordonnées client : carte légère */
.lalevee-wc-embed--order .woocommerce-customer-details address {
	border: 1px solid var(--lwc-line);
	border-radius: 12px;
	padding: 16px 18px;
	font-style: normal;
	line-height: 1.7;
	background: #faf9f6;
}

/* ============================================================================
 * MON ESPACE dans la card du modèle « Page sans titre » : la card blanche
 * (padding clamp 26-48px) fournit déjà fond + cadre + air. Le PANNEAU GRIS de
 * l'outlet (.mespace-outlet) et le padding vertical du dashboard feraient
 * carte-dans-carte → on les neutralise QUAND ils sont dans la card (même
 * principe que la table DataTables de l'annuaire, plus haut). Les .mespace-card
 * intérieures gardent leur ombre : elles redeviennent le seul niveau de carte.
 * ============================================================================ */
.lalevee-annuaire-card .mespace-outlet {
	background: none;
	border-radius: 0;
	box-shadow: none;
	padding: 0;
}
.lalevee-annuaire-card .mespace-dashboard {
	padding-block: 0;
}
/* Sur fond blanc, les cartes intérieures ont besoin d'un liseré pour se
   détacher (leur ombre seule se perd sur le blanc de la grande card). */
.lalevee-annuaire-card .mespace-card,
.lalevee-annuaire-card .mespace-section-card {
	border: 1px solid var(--mespace-line, #e4e2dd);
}

/* Une .mespace-card qui ne fait qu'EMBALLER d'autres cards (ex. la section
   Mes documents : .mesdoc-card imbriquées, elles-mêmes avec un formulaire
   bordé) n'a pas besoin de son propre cadre → wrapper rendu invisible, les
   cards intérieures redeviennent le seul niveau visible. Le profil, qui
   n'emboîte rien, garde son liseré (règle plus haut). */
.lalevee-annuaire-card .mespace-card:has(.mesdoc-card) {
	border: 0;
	box-shadow: none;
	background: none;
	padding: 0;
}

/* Mes documents — plugin GÉNÉRIQUE (partagé LPO) : ses tokens tombent en
   fallback palette LPO quand les presets lpo-* n'existent pas → l'accent
   (bouton Télécharger, entête du tableau, pagination, focus, badge reçu)
   était BLEU #1d6fb8. On remappe le token à la charte, comme les boutons du
   thème (primary). Classe doublée : bat la définition du plugin (0,1,0)
   quel que soit l'ordre de chargement des feuilles. */
.mesdoc.mesdoc,
.mesdoc-modal.mesdoc-modal {
	--mesdoc-blue: var(--wp--preset--color--primary, #00A651);
}

/* Formulaires mot de passe de /mon-compte/ (« Définir un mot de passe »,
   « Mot de passe oublié ») : WooCommerce les laisse s'étaler sur toute la
   largeur de la page (champs immenses côte à côte) → on borne et on empile. */
form.lost_reset_password,
.woocommerce-ResetPassword {
	max-width: 560px;
}
form.lost_reset_password .form-row-first,
form.lost_reset_password .form-row-last {
	float: none;
	width: 100%;
}

/* ============================================================================
 * ANNUAIRE VISITEURS — accent ROSE (différenciation visuelle vs annuaire
 * exposants, vert). Le groupe .lalevee-annuaire--visiteurs (contenu de la
 * page) REDÉFINIT localement les presets « primary » : toutes les règles
 * charte de l'annuaire (titres de cartes, liens, hover, pills de recherche,
 * fiche) basculent en rose dans ce périmètre — zéro règle dupliquée.
 * Rose charte : --lalevee-rose (#C25B7C), déclinaisons foncée/claire ici.
 * ============================================================================ */
.lalevee-annuaire--visiteurs {
	--wp--preset--color--primary: var(--lalevee-rose, #C25B7C);
	--wp--preset--color--primary-dark: #9d4361;
	--wp--preset--color--primary-accent: #f7eaef;
	/* alias court utilisé par le H1 et la fiche (var(--primary-dark, #007A3D)) :
	   indéfini ailleurs → fallback vert chez les exposants, rose ici. */
	--primary-dark: #9d4361;
}

/* ─── Gestion du salon (Mon espace) : tableau de modération GravityView ───
   10 colonnes (pastille de validation + identité + 4 justificatifs) : on donne
   au tableau un défilement horizontal DANS l'outlet plutôt qu'un écrasement.
   Scopé .mespace-outlet : ne touche aucune autre vue GV du site. */
.mespace-outlet .gv-table-view {
	display: block;
	overflow-x: auto;
	font-size: 0.92rem;
}
.mespace-outlet .gv-table-view th {
	white-space: nowrap;
}
.mespace-outlet .gv-table-view td {
	vertical-align: top;
}
.lalevee-gestion-aide {
	font-size: 0.95rem;
	color: var(--wp--preset--color--main, #333);
	background: var(--wp--preset--color--primary-accent, #E6F4EC);
	border-radius: 10px;
	padding: 12px 18px;
}

/* ─── Fiche visiteur : retouches (demande Lito 2026-06-11) ───
   1. Liens lisibles dans les id-cards : fond plein → blanc souligné.
      Classe TRIPLÉE (pattern maison, cf. pieds de carte) : la feuille GV
      `.gv-themed.gv-container a:not(.button)` (0,3,1), chargée APRÈS le
      child, posait son bleu var(--gv-color-link) — constat Lito 2026-07-13,
      mailto bleu sur fond rose. (0,4,1) gagne quel que soit l'ordre.
      :visited en HEX littéral obligatoire (piège :visited). */
.gv-layout-builder-single-container .lalevee-id-card.lalevee-id-card.lalevee-id-card a,
.gv-layout-builder-single-container .lalevee-id-card.lalevee-id-card.lalevee-id-card a:visited,
.gv-layout-builder-single-container .lalevee-id-card.lalevee-id-card.lalevee-id-card a:hover,
.gv-layout-builder-single-container .lalevee-id-card.lalevee-id-card.lalevee-id-card a:focus {
	color: #ffffff;
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* 2. Pas de badge « N° de stand » sur les fiches VISITEURS : le badge est un
      ::before générique des fiches layout-builder (pensé pour l'exposant) et la
      colonne droite de l'en-tête visiteur est vide → badge rose vide. */
.lalevee-annuaire--visiteurs .gv-layout-builder-single-container .gv-grid-row:first-child .gv-grid-col-1-3 {
	display: none;
}

/* 3. Les champs à choix multiples (vins, vignobles, cépages, distribution,
      œnotourisme…) : la liste à puces de Gravity Forms devient une énumération
      « a, b, c » — purement visuel, la donnée reste une liste. Étendu de
      l'annuaire visiteurs à TOUTES les fiches et cellules de tableau
      (demande Lito 2026-07-13 : « plusieurs termes séparés par des virgules
      partout »). */
.lalevee-annuaire--visiteurs ul.bulleted,
.gv-layout-builder-single-container ul.bulleted,
.gv-datatables ul.bulleted,
.gv-table-view ul.bulleted {
	display: inline;
	margin: 0;
	padding: 0;
	list-style: none;
}
.lalevee-annuaire--visiteurs ul.bulleted li,
.gv-layout-builder-single-container ul.bulleted li,
.gv-datatables ul.bulleted li,
.gv-table-view ul.bulleted li {
	display: inline;
	margin: 0;
	padding: 0;
}
.lalevee-annuaire--visiteurs ul.bulleted li:not(:last-child)::after,
.gv-layout-builder-single-container ul.bulleted li:not(:last-child)::after,
.gv-datatables ul.bulleted li:not(:last-child)::after,
.gv-table-view ul.bulleted li:not(:last-child)::after {
	content: ", ";
}

/* ─── Gestion du salon : « Voir la fiche » = bouton œil (rond, vert) ───
   Sélecteur renforcé : les liens de la carte annuaire sont VERTS par défaut →
   currentColor rendait l'œil vert sur rond vert (invisible). */
.lalevee-annuaire-card .mespace-outlet .lalevee-btn-fiche a,
.mespace-outlet .lalevee-btn-fiche a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--wp--preset--color--primary, #007A3D);
	color: #fff;
	border-radius: 999px;
	width: 32px;
	height: 32px;
	text-decoration: none;
	line-height: 0;
}
.lalevee-annuaire-card .mespace-outlet .lalevee-btn-fiche a:hover,
.mespace-outlet .lalevee-btn-fiche a:hover {
	background: var(--wp--preset--color--primary-dark, #00592D);
	color: #fff;
}
/* Domaine : repère visuel fort dans la liste (spécificité > CSS DataTables) */
.mespace-outlet table.dataTable tbody td.lalevee-col-domaine,
.mespace-outlet td.lalevee-col-domaine {
	font-weight: 700;
	color: #5d5c57;
}
/* DataTables dans l'outlet : pleine largeur + contrôles à l'échelle du tableau */
.mespace-outlet .dt-container,
.mespace-outlet .gv-datatables {
	width: 100%;
	font-size: 0.92rem;
}
.mespace-outlet .dt-container table.dataTable { width: 100% !important; }

/* ─── Fiche en lightbox : popup plus étroite, style carte ───
   Ciblée par l'iframe REST GravityView : ne touche pas les lightbox
   d'images (annuaire, galeries). L'INTÉRIEUR de l'iframe est stylé par
   le plugin (hook lightbox-entry, la CSS du thème n'y charge pas). */
.fancybox__slide.has-iframe .fancybox__content:has(iframe[src*="gravityview/v1"]) {
	max-width: 780px;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
	padding: 0;
	background: #fff;
}

/* ─── Export des inscriptions (Mon espace, gestionnaire) ─── */
.lalevee-export-meta {
	font-size: 0.95rem;
	color: var(--wp--preset--color--main, #333);
}
.lalevee-export-form {
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin-top: 10px;
}
/* Une CARD par mode d'export (style maison : radius 14, ombre douce) :
   libellé + champs inline, bouton de téléchargement calé À DROITE. */
.lalevee-export-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 14px;
	background: #fff;
	border: 1px solid #eceae4;
	border-radius: 14px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.045);
	padding: 18px 22px;
}
.lalevee-export-row .lalevee-export-btn,
.lalevee-export-row .lalevee-export-btn-all {
	margin-left: auto;
}
.lalevee-export-btn svg,
.lalevee-export-btn-all svg {
	vertical-align: -3px;
	margin-right: 7px;
}
.lalevee-export-row__label {
	flex: 0 0 170px;
	font-weight: 700;
	font-size: 0.9rem;
	color: var(--wp--preset--color--primary-dark, #007A3D);
}
.lalevee-export-form label {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin: 0;
	width: auto; /* le thème étire les labels à 100% → un par ligne */
	flex: 0 0 auto;
}
.lalevee-export-form label span {
	font-size: 0.88rem;
	font-weight: 600;
	color: #6f6e68;
}
.lalevee-export-form input[type="number"] {
	width: 110px;
	border: 1px solid #d8d6cf;
	border-radius: 8px;
	padding: 8px 12px;
	font-size: 0.95rem;
	background: #fff;
}
@media (max-width: 720px) {
	.lalevee-export-row__label { flex-basis: 100%; }
}
.lalevee-export-form input[type="date"] {
	border: 1px solid #d8d6cf;
	border-radius: 8px;
	padding: 8px 12px;
	font-size: 0.95rem;
	background: #fff;
}
.lalevee-export-form .lalevee-export-btn-all {
	background: none;
	border: 1.5px solid var(--wp--preset--color--primary, #007A3D);
	color: var(--wp--preset--color--primary-dark, #007A3D);
	border-radius: 999px;
	padding: 9px 18px;
	font-size: 0.9rem;
	font-weight: 600;
	cursor: pointer;
}
.lalevee-export-form .lalevee-export-btn-all:hover {
	background: var(--wp--preset--color--primary, #007A3D);
	color: #fff;
}
/* Rangée « Format du fichier » : radios xlsx (défaut) / csv */
.lalevee-export-format {
	font-size: 0.88rem;
	color: #6f6e68;
	cursor: pointer;
}
.lalevee-export-format strong {
	color: var(--wp--preset--color--main, #333);
}
.lalevee-export-format input[type="radio"] {
	margin: 0;
	accent-color: var(--wp--preset--color--primary, #00A651);
}

/* ─── Barres de recherche GV (annuaires + tableaux, Lot 4/5) ───
   Bouton « Rechercher » = pill charte (rose auto côté visiteurs via --primary),
   toggle « Recherche avancée » INLINE avec la recherche, panneau avancé en
   rangées propres (2 areas configurées par lot4-ordre-facettes-2026-07.php). */
/* !important assumé : la CSS du plugin GV impose flex-direction column sur le
   form (règle non délogeable par spécificité — vérifié navigateur 2026-07-09) */
form.gv-widget-search.gv-widget-search {
	display: flex;
	flex-direction: row !important;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 12px 14px;
}
/* spécificité doublée : GV pose flex: 0 0 auto sur cette zone. max-width :
   la zone garde sinon sa largeur min-content (~pleine page) → le toggle
   passait à la ligne ; on lui réserve ~200px. */
form.gv-widget-search .gv-widget-search-general-search.gv-widget-search-general-search {
	flex: 1 1 0%;
	min-width: 280px;
	max-width: calc(100% - 60px); /* réserve = rond filtres 42px + gap (toggle icône) */
}
@media (max-width: 720px) {
	form.gv-widget-search .gv-widget-search-general-search.gv-widget-search-general-search {
		max-width: 100%; /* mobile : le toggle passe dessous, c'est voulu */
	}
}
/* le champ « Tout rechercher » (align-full) ne doit pas pousser le toggle à la ligne */
form.gv-widget-search .gv-widget-search-general-search .gv-grid-row,
form.gv-widget-search .gv-widget-search-general-search .gv-grid-col-1-1 {
	width: 100%;
}
/* la marge basse interne des boxes décalait le toggle (align-end) ; l'espacement
   vertical est repris par le gap du form */
form.gv-widget-search .gv-widget-search-general-search .gv-search-box.gv-search-box {
	margin-bottom: 0;
}
/* Panneau avancé FLOTTANT au-dessus des cards (demande Lito 2026-07-09) :
   sorti du flux (absolute sous la barre) + effet verre dépoli. */
form.gv-widget-search {
	position: relative;
}
form.gv-widget-search #gv-search-advanced,
form.gv-widget-search .gv-widget-search-advanced-search {
	position: absolute;
	top: calc(100% + 10px);
	left: -28px; /* le panneau DÉBORDE de la barre (cf. maquette Lito) */
	right: -28px;
	width: auto;
	z-index: 40;
	margin: 0;
	padding: 20px 26px;
	border-radius: 14px;
	border: 1px solid rgba(0, 0, 0, 0.07);
	background: rgba(255, 255, 255, 0.72);
	-webkit-backdrop-filter: blur(10px) saturate(1.2);
	backdrop-filter: blur(10px) saturate(1.2);
	box-shadow: 0 18px 50px rgba(20, 17, 31, 0.18);
}
@media (max-width: 782px) {
	form.gv-widget-search #gv-search-advanced,
	form.gv-widget-search .gv-widget-search-advanced-search {
		left: 0; /* mobile : pas de débord hors écran */
		right: 0;
	}
}
/* navigateurs sans backdrop-filter : fond quasi opaque (lisibilité) */
@supports not (backdrop-filter: blur(1px)) {
	form.gv-widget-search #gv-search-advanced {
		background: rgba(255, 255, 255, 0.97);
	}
}
/* Bouton « Rechercher » = design maison HISTORIQUE (validé annuaires juin) :
   pill sans bordure, Source Sans 700. Sélecteur (0,5,1) pour battre la règle
   bouton de la CSS Vantage (0,5,0) qui l'écrasait (radius 6px, weight 500). */
.gv-widget-search .gv-search-box.gv-search-box-submit input.gv-search-button,
.gv-widget-search .gv-search-box.gv-search-box-submit button.gv-search-button,
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit input.gv-search-button,
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit button.gv-search-button {
	border: 0;
	border-radius: 9999px;
	padding: 0.6rem 1.9rem;
	background: var(--wp--preset--color--primary, #00A651);
	color: var(--wp--preset--color--base, #fff);
	font-family: "Source Sans 3", system-ui, -apple-system, sans-serif;
	font-weight: 700;
	font-size: 0.95rem;
	line-height: 1.2;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color 160ms ease;
}
.gv-widget-search .gv-search-box.gv-search-box-submit input.gv-search-button:hover,
.gv-widget-search .gv-search-box.gv-search-box-submit input.gv-search-button:focus,
.gv-widget-search .gv-search-box.gv-search-box-submit button.gv-search-button:hover,
.gv-widget-search .gv-search-box.gv-search-box-submit button.gv-search-button:focus,
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit input.gv-search-button:hover,
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit button.gv-search-button:hover {
	background: var(--wp--preset--color--primary-dark, #007A3D);
}
/* « Effacer » = icône ↻ ronde (design maison historique) — renfort (0,5,1)
   contre la règle bouton Vantage qui le re-transformait en bouton texte */
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit a.gv-search-clear {
	flex: 0 0 auto;
	order: 1;
	align-self: center;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	min-height: 0;
	padding: 0;
	border-radius: 9999px;
	border: 1px solid var(--wp--preset--color--border-light);
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--secondary);
	font-size: 0;
	line-height: 1;
	text-decoration: none;
	transition: transform 450ms ease, color 160ms ease, border-color 160ms ease;
}
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit a.gv-search-clear::before {
	content: "\21BB";
	font-size: 19px;
	line-height: 1;
}
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit a.gv-search-clear:hover,
.lalevee-annuaire-card .gv-widget-search .gv-search-box.gv-search-box-submit a.gv-search-clear:focus-visible {
	color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	background: var(--wp--preset--color--base);
	transform: rotate(-180deg);
}
/* champ « Tout rechercher » élargi AU MAX. v3 : la colonne est un flex container
   et la widget-area s'y rétracte (flex 0 1 auto) → on l'étire, puis le box du
   champ absorbe tout l'espace (le box submit, lui, reste à sa taille). */
.gv-widget-search .gv-widget-search-general-search .gv-search-widget-area.gv-search-widget-area {
	flex: 1 1 auto;
	width: 100%;
}
/* !important assumé : GV v3 pose flex:1 1 200px !important sur les .gv-search-box
   (même la règle historique (0,6,0) perdait — vérifié navigateur 2026-07-09) */
.gv-widget-search .gv-widget-search-general-search .gv-search-box.gv-search-field-search_all {
	flex: 1 1 auto !important;
	min-width: 0;
}
.gv-widget-search .gv-widget-search-general-search .gv-search-field-search_all > div,
.gv-widget-search .gv-widget-search-general-search .gv-search-field-search_all p {
	width: 100%;
	margin: 0;
}
.gv-widget-search .gv-widget-search-general-search .gv-search-field-search_all input {
	width: 100%;
	box-sizing: border-box;
}
.gv-widget-search .gv-widget-search-general-search .gv-search-box.gv-search-box-submit {
	flex: 0 0 auto !important; /* idem : contre le flex 1 1 200px !important de GV */
	width: auto;
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
	gap: 8px;
}
/* Toggle « Recherche avancée » = icône FILTRES dans un ROND BLANC (demande Lito
   2026-07-09), même gabarit que le bouton Rechercher (~42px). L'icône est un
   masque SVG teinté par currentColor → verte ici, ROSE auto côté visiteurs,
   blanche au survol/état ouvert. Le libellé texte reste pour l'accessibilité
   (aria-label sur le lien), masqué visuellement. */
#gv-search-advanced-toggle {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0;
	background: #fff;
	border: 1px solid var(--wp--preset--color--border-light, #e2e4e7);
	color: var(--wp--preset--color--primary-dark, #007A3D);
	border-radius: 999px;
	text-decoration: none;
	transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease;
}
#gv-search-advanced-toggle span {
	display: none;
}
#gv-search-advanced-toggle::before {
	content: "";
	width: 20px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M3 7h7M14 7h7M3 17h5M12 17h9'/%3E%3Ccircle cx='12' cy='7' r='2.2'/%3E%3Ccircle cx='10' cy='17' r='2.2'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M3 7h7M14 7h7M3 17h5M12 17h9'/%3E%3Ccircle cx='12' cy='7' r='2.2'/%3E%3Ccircle cx='10' cy='17' r='2.2'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* GV pose margin-bottom:20px sur le toggle (sa feuille charge après la nôtre)
   → sélecteur renforcé pour caler le bas sur la rangée de recherche */
form.gv-widget-search #gv-search-advanced-toggle {
	margin: 0;
}
#gv-search-advanced-toggle:hover,
#gv-search-advanced-toggle[aria-expanded="true"] {
	background: var(--wp--preset--color--primary, #00A651);
	border-color: var(--wp--preset--color--primary, #00A651);
	color: #fff;
}
/* panneau avancé OUVERT : rangées EMPILÉES en colonne (constaté : selon le
   contexte, GV pose un flex horizontal qui mettait rangée 1, rangée 2 et
   bouton CÔTE À CÔTE → organisation perturbée, Rechercher en haut à droite) */
form.gv-widget-search #gv-search-advanced.gv-search-advanced--open,
form.gv-widget-search .gv-widget-search-advanced-search.gv-search-advanced--open {
	display: flex !important;
	flex-direction: column;
	gap: 2px;
}
#gv-search-advanced .gv-grid-row {
	width: 100%;
}
/* panneau avancé : chaque rangée = flex, facettes régulières */
#gv-search-advanced .gv-search-widget-area {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 18px;
	align-items: flex-end;
}
#gv-search-advanced .gv-search-box {
	flex: 1 1 180px;
	min-width: 160px;
	margin: 0 0 10px;
}
#gv-search-advanced .gv-search-box label {
	font-weight: 600;
	font-size: 0.85rem;
	margin-bottom: 4px;
	display: block;
}
#gv-search-advanced .gv-search-box p { margin: 0; }
#gv-search-advanced .gv-search-box select {
	width: 100%;
	border: 1px solid #d8d6cf;
	border-radius: 8px;
	padding: 8px 10px;
	background: #fff;
	font-size: 0.92rem;
}
/* bouton « Rechercher » en BAS du panneau avancé (demande Lito 2026-07-09) —
   aligné à droite, en INVERSÉ (contour + texte charte, fond blanc — sur le verre) */
#gv-search-advanced .lalevee-adv-submit .gv-search-box.gv-search-box-submit {
	display: flex;
	justify-content: flex-end;
	flex: 1 1 100% !important;
	margin: 6px 0 0;
}
#gv-search-advanced .lalevee-adv-submit .gv-search-box.gv-search-box-submit button.gv-search-button {
	background: #fff;
	border: 1.5px solid var(--wp--preset--color--primary, #00A651);
	color: var(--wp--preset--color--primary-dark, #007A3D);
}
#gv-search-advanced .lalevee-adv-submit .gv-search-box.gv-search-box-submit button.gv-search-button:hover,
#gv-search-advanced .lalevee-adv-submit .gv-search-box.gv-search-box-submit button.gv-search-button:focus {
	background: var(--wp--preset--color--primary, #00A651);
	border-color: var(--wp--preset--color--primary, #00A651);
	color: #fff;
}

/* ─── Méga-menu « Le salon » v2 : espacement des piles de boutons (le preset
   spacing x-small n'existe pas dans le thème → gap explicite, scopé au menu) ─── */
.levee-megamenu .wp-block-buttons {
	gap: 12px;
}
/* Style de bloc « Pill » (paragraphe) — la FORME seulement : les couleurs de
   texte/fond viennent des contrôles natifs du bloc (register_block_style dans
   functions.php). Ex. badge « Nouveauté 2027 » : fond rose vin, texte blanc. */
p.is-style-pill {
	display: inline-block;
	width: fit-content;
	border-radius: 999px;
	padding: 4px 14px;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
/* pill « alignée au centre » : fit-content ignore text-align du parent →
   display block + marges auto (retour Lito 2026-07-10, invite Mise en relation) */
p.is-style-pill.has-text-align-center {
	display: block;
	margin-left: auto;
	margin-right: auto;
}

/* ─── Page « Mise en relation » (Lot 5) : invite connexion, onglets
   grille/tableau par annuaire. Le rose visiteurs vient du wrapper
   .lalevee-annuaire--visiteurs (variables --primary redéfinies). ─── */
.lalevee-mer-invite {
	background: #fff;
	border: 1px solid #eceae4;
	border-radius: 14px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.045);
	padding: 30px 34px;
	max-width: 640px;
	margin: 24px auto;
	text-align: center;
}
.lalevee-mer-invite__aide {
	font-size: 0.9rem;
	color: #6b6358;
}
.lalevee-mer-btn {
	background: var(--wp--preset--color--primary, #00A651);
	color: #fff !important;
	border-radius: 999px;
	padding: 12px 28px;
	font-weight: 700;
	text-decoration: none;
	display: inline-block;
}
.lalevee-mer-btn:hover {
	background: var(--wp--preset--color--primary-dark, #007A3D);
}
.lalevee-mer-annuaire {
	margin: 0 0 48px;
}
.lalevee-mer-entete {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px 18px;
	margin: 0 0 6px;
}
.lalevee-mer-titre {
	color: var(--wp--preset--color--primary-dark, #007A3D);
	font-size: 1.5rem;
	margin: 0;
}
.lalevee-mer-aide {
	font-size: 0.9rem;
	color: #6b6358;
	margin: 0 0 18px;
}
.lalevee-mer-onglets {
	display: inline-flex;
	background: #fff;
	border: 1px solid var(--wp--preset--color--border-light, #e2e4e7);
	border-radius: 999px;
	padding: 4px;
	gap: 4px;
}
.lalevee-mer-tab {
	border: 0;
	background: none;
	border-radius: 999px;
	padding: 8px 20px;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--wp--preset--color--primary-dark, #007A3D);
	cursor: pointer;
	transition: background-color 160ms ease, color 160ms ease;
}
.lalevee-mer-tab:hover {
	background: rgba(0, 0, 0, 0.06);
}
.lalevee-mer-tab.is-active {
	background: var(--wp--preset--color--primary, #00A651);
	color: #fff;
}
.lalevee-mer-tab.is-active:hover {
	background: var(--wp--preset--color--primary-dark, #007A3D);
}
.lalevee-mer-panel {
	display: none;
}
.lalevee-mer-panel.is-active {
	display: block;
}
/* la page a déjà sa card : on APLATIT celle des annuaires (retours Lito —
   trop d'empilement) ; la classe reste pour le scope CSS/rose */
.lalevee-mer-annuaire.lalevee-annuaire-card,
.lalevee-mer-fiche.lalevee-annuaire-card {
	background: none;
	border: 0;
	box-shadow: none;
	padding: 0;
}
.lalevee-mer-retour a {
	display: inline-block;
	font-weight: 700;
	color: var(--wp--preset--color--primary-dark, #007A3D);
	text-decoration: none;
	margin-bottom: 10px;
}
.lalevee-annuaire--visiteurs .lalevee-mer-retour a {
	color: #9d4361;
}
/* le retour NATIF de GravityView (nav.gv-back-link) doublonne le nôtre dans le
   contexte Mise en relation → masqué là, stylé charte ailleurs (il était violet
   « lien visité » navigateur sur les fiches des annuaires) */
.lalevee-mer-fiche .gv-back-link {
	display: none;
}
.gv-back-link a,
.gv-back-link a:visited {
	/* !important assumé : la CSS Vantage colore ce lien avec --gv-color-primary
	   (bleu par défaut) via une règle qui bat toute spécificité raisonnable */
	color: var(--wp--preset--color--primary-dark, #007A3D) !important;
	font-weight: 700;
	text-decoration: none;
}
.lalevee-annuaire--visiteurs .gv-back-link a,
.lalevee-annuaire--visiteurs .gv-back-link a:visited {
	color: #9d4361 !important;
}
/* liens VISITÉS des annuaires : la DISTINCTION est conservée (dans un
   annuaire, repérer les fiches déjà consultées est utile — arbitrage Lito
   2026-07-10) mais CHARTÉE : rose vin côté exposants (contraste avec le vert),
   prune côté visiteurs (le rose y est la couleur de base) — jamais le violet
   navigateur. Scope : cards de grille, fiches et tableaux GV UNIQUEMENT
   (.gv-layout-builder-view--entry / .gv-datatables) → la nav Mon espace,
   la pagination et les barres de recherche ne sont pas touchées.
   V1 trop large (toute .lalevee-annuaire-card) : débordait sur les onglets
   Mon espace (a:visited 0,2,1 bat .mespace-tab.is-active 0,2,0) et ratait
   les annuaires PUBLICS (enveloppés .lalevee-annuaire-bg, pas -card).
   ⚠️ DEUX pièges :visited : (1) getComputedStyle MENT (anti-fingerprinting) —
   vérifier en CAPTURE avec historique peuplé ; (2) les navigateurs IGNORENT
   var() dans les règles :visited (anti-fuite d'historique) → couleurs en
   HEX LITTÉRAL obligatoires (rose vin #C25B7C, prune #935579). */
.lalevee-annuaire-bg .gv-layout-builder-view--entry a:visited,
.lalevee-annuaire-card .gv-layout-builder-view--entry a:visited,
.lalevee-annuaire-bg .gv-datatables a:visited,
.lalevee-annuaire-card .gv-datatables a:visited {
	color: #C25B7C;
}
.lalevee-annuaire--visiteurs .gv-layout-builder-view--entry a:visited,
.lalevee-annuaire--visiteurs .gv-datatables a:visited {
	color: #935579;
}
/* pieds de carte « Voir la fiche → » : leurs règles vertes en var() (spé 0,4,1,
   lignes ~1381/1487) GAGNENT le calcul :visited puis Chrome, var() étant
   interdit dans ce contexte privé, retombe sur le VIOLET navigateur au lieu de
   cascader → on repose l'état visité en hex à spécificité supérieure (0,5,1). */
.lalevee-annuaire-card .lalevee-card-link.lalevee-card-link.lalevee-card-link a:visited {
	color: #C25B7C;
}
.lalevee-annuaire--visiteurs .lalevee-card-link.lalevee-card-link.lalevee-card-link a:visited {
	color: #935579;
}
/* et les onglets Mon espace verrouillent leurs propres couleurs en :visited
   (immunité contre toute future règle a:visited globale) — hex littéraux :
   var() est ignoré dans :visited par les navigateurs */
.mespace-tab:visited {
	color: #1a1a1a;
}
.mespace-tab--manager:visited {
	color: #D4874D;
}
.mespace-tab.is-active:visited {
	color: #ffffff;
}
/* bande grise de la recherche : la grille l'avait, pas le tableau → uniformisée */
.lalevee-mer-panel .gv-widget-search {
	background: #f2f3f5;
	border-radius: 14px;
	padding: 20px 24px;
}
/* DataTables né dans un panneau masqué : largeur pleine garantie */
.lalevee-mer-panel table.dataTable {
	width: 100% !important;
}
/* densité du tableau (retour Lito : afficher plus de données) */
.lalevee-mer-panel table.dataTable,
.lalevee-mer-panel table.dataTable td,
.lalevee-mer-panel table.dataTable th {
	font-size: 0.85rem;
	line-height: 1.35;
}
.lalevee-mer-panel table.dataTable td,
.lalevee-mer-panel table.dataTable th {
	padding: 8px 10px;
}
/* barre DT : « Afficher N entrées » à GAUCHE, exports à DROITE et discrets
   (sélecteurs doublés .dataTables_length/.dt-length = variantes de version DT) */
.lalevee-mer-panel .dataTables_length,
.lalevee-mer-panel .dt-length {
	float: left;
	font-size: 0.85rem;
}
.lalevee-mer-panel .dt-buttons {
	float: right;
	margin-left: auto;
}
.lalevee-mer-panel .dt-buttons .dt-button {
	font-size: 0.78rem;
	padding: 6px 14px;
}
/* survol des boutons d'export : la CSS DataTables ajoute une BORDURE (glitch
   de 1px) — on garde le pill stable et on fonce le fond comme partout */
.lalevee-mer-panel .dt-buttons .dt-button:hover:not(.disabled),
.lalevee-mer-panel .dt-buttons .dt-button:focus:not(.disabled) {
	border: 0 !important;
	background: var(--wp--preset--color--primary-dark, #007A3D) !important;
	color: #fff !important;
}
/* spinner de chargement DataTables (« processing ») : points à la CHARTE au
   lieu du bleu DT — rose auto côté visiteurs via la variable (sélecteurs
   doublés pour les variantes DT 1.x/2.x) */
.dataTables_processing > div:last-child > div,
div.dt-processing > div:last-child > div {
	background: var(--wp--preset--color--primary, #00A651) !important;
}
/* respiration entre le tableau et la barre info/pagination du bas */
.lalevee-mer-panel .dataTables_info,
.lalevee-mer-panel .dt-info {
	margin-top: 18px;
}
.lalevee-mer-panel .dataTables_paginate,
.lalevee-mer-panel .dt-paging {
	margin-top: 18px;
}
/* pill du nombre de résultats (« Afficher [25] entrées ») : compacte, centrée */
.lalevee-mer-panel .dataTables_length select,
.lalevee-mer-panel .dt-length select {
	padding: 3px 8px;
	font-size: 0.85rem;
	min-height: 0;
	height: auto;
	width: auto;
	line-height: 1.3;
	text-align: center;
	text-align-last: center;
}
/* le titre embarqué dans les vues (widget custom des pages annuaires) doublonne
   notre en-tête d'onglets → masqué dans le contexte Mise en relation seulement */
.lalevee-mer-panel .gv-widget-custom-content .lalevee-annuaire-h1 {
	display: none;
}

/* ─── Gestion du salon : bouton « Effacer » de la recherche ───
   Le style annuaire le transforme en rond ↻ sans texte (cryptique ici) →
   dans l'outlet Mon espace on rétablit un pill contour libellé. */
.lalevee-annuaire-card .mespace-outlet .gv-search-clear {
	width: auto;
	height: auto;
	font-size: 0.9rem;
	font-weight: 600;
	padding: 9px 18px;
	border: 1.5px solid var(--wp--preset--color--primary, #007A3D);
	color: var(--wp--preset--color--primary-dark, #007A3D);
	background: #fff;
	border-radius: 999px;
	text-decoration: none;
	transform: none;
}
.lalevee-annuaire-card .mespace-outlet .gv-search-clear::before {
	content: "\21BB";
	font-size: 1em;
	margin-right: 6px;
}
.lalevee-annuaire-card .mespace-outlet .gv-search-clear:hover,
.lalevee-annuaire-card .mespace-outlet .gv-search-clear:focus-visible {
	background: var(--wp--preset--color--primary, #007A3D);
	color: #fff;
	transform: none;
}

/* ============================================================================
 * Formulaire d'inscription (form 1) — page « Tarif de votre inscription ».
 * Champs produit/total GF présentés en TABLEAU (libellé à gauche, prix à droite)
 * + suffixe « TTC ». Scopé #gform_wrapper_1 + types product/total → n'affecte
 * que la section tarifaire de ce form. Demande Lito 2026-06-16.
 * ============================================================================ */
/* row-gap 0 sur la page Tarif : les lignes se SOUDENT en un tableau continu
   (sinon le gap de la grille GF sépare chaque ligne bordée → bordures cassées). */
#gform_wrapper_1 .gform_page:last-of-type .gform_fields {
	row-gap: 0;
}
/* on ré-aère uniquement sous le titre de section */
#gform_wrapper_1 .gform_page:last-of-type .gfield--type-section {
	margin-bottom: 18px;
}
/* :not(.gform_hidden) IMPÉRATIF : GS PC injecte un champ produit AGRÉGÉ caché
   (gform_hidden) ; sans l'exclusion, display:flex écrase son display:none et son
   libellé « Inscription Salon… » réapparaît en page 1 (vécu 2026-06-16). */
#gform_wrapper_1 .gfield--type-product.gform_hidden { display: none !important; }
#gform_wrapper_1 .gfield--type-product:not(.gform_hidden),
#gform_wrapper_1 .gfield--type-total {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin: 0;
	padding: 12px 16px;
	/* bord haut + côtés seulement : la ligne suivante fournit son propre bord
	   haut → une seule ligne de 1px entre deux rangées (pas de doublon). */
	border: 1px solid #ece9e2;
	border-bottom: none;
	background: #fff;
}
/* première ligne : coins hauts arrondis */
#gform_wrapper_1 .gfield--type-product:first-of-type {
	border-top-left-radius: 12px;
	border-top-right-radius: 12px;
}
/* total = dernière ligne : ferme le tableau (bord bas) + accent charte */
#gform_wrapper_1 .gfield--type-total {
	border-top: 2px solid var(--wp--preset--color--primary, #007A3D);
	border-bottom: 1px solid #ece9e2;
	border-bottom-left-radius: 12px;
	border-bottom-right-radius: 12px;
	background: #faf9f6;
	padding-top: 14px;
	padding-bottom: 14px;
}
#gform_wrapper_1 .gfield--type-product .gfield_label,
#gform_wrapper_1 .gfield--type-total .gfield_label {
	margin: 0;
	font-weight: 500;
	flex: 1 1 auto;
}
#gform_wrapper_1 .gfield--type-product .ginput_container,
#gform_wrapper_1 .gfield--type-total .ginput_container {
	margin: 0;
	flex: 0 0 auto;
	white-space: nowrap;
	font-weight: 700;
}
/* on masque le préfixe « Prix : » (le tableau parle de lui-même) */
#gform_wrapper_1 .ginput_product_price_label { display: none; }
/* suffixe TTC après chaque prix et le total */
#gform_wrapper_1 .ginput_product_price::after,
#gform_wrapper_1 .ginput_total::after {
	content: " TTC";
	font-weight: 400;
	font-size: 0.82em;
	color: #6f6e68;
	margin-left: 3px;
}
/* total accentué charte */
#gform_wrapper_1 .gfield--type-total .gfield_label,
#gform_wrapper_1 .gfield--type-total .ginput_total {
	font-size: 1.12rem;
	font-weight: 800;
	color: var(--wp--preset--color--primary-dark, #00592D);
}
/* Prix COLLÉS au bord droit : le span prix de GS PC a une largeur fixe et son
   texte est calé à gauche → on aligne le texte à droite dans le span. */
#gform_wrapper_1 .gfield--type-product .ginput_product_price,
#gform_wrapper_1 .gfield--type-total .ginput_total {
	display: block;
	text-align: right;
}

/* ============================================================================
 * Blocs d'information du formulaire (champs HTML : note_intro #127,
 * note_gab #128, note_forfaits #129). Encart « maison » : carte douce, filet
 * charte à gauche. Scopé #gform_wrapper_1. Demande Lito 2026-06-17.
 * ============================================================================ */
#gform_wrapper_1 .lalevee-form-note,
#gform_wrapper_2 .lalevee-form-note {
	background: color-mix(in srgb, var(--wp--preset--color--primary, #007A3D) 7%, #fff);
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--primary, #007A3D) 18%, #ece9e2);
	border-left: 4px solid var(--wp--preset--color--primary, #007A3D);
	border-radius: 42px;
	padding: 18px 26px;
	margin: 4px 0 8px;
	font-size: 1.15rem;
	line-height: 1.5;
	color: #3a382f;
}
#gform_wrapper_1 .lalevee-form-note p,
#gform_wrapper_2 .lalevee-form-note p { margin: 0 0 8px; }
#gform_wrapper_1 .lalevee-form-note p:last-child,
#gform_wrapper_2 .lalevee-form-note p:last-child { margin-bottom: 0; }
#gform_wrapper_1 .lalevee-form-note ul,
#gform_wrapper_2 .lalevee-form-note ul { margin: 0 0 8px; padding-left: 1.2em; }
#gform_wrapper_1 .lalevee-form-note li,
#gform_wrapper_2 .lalevee-form-note li { margin: 0 0 5px; }
#gform_wrapper_1 .lalevee-form-note strong,
#gform_wrapper_2 .lalevee-form-note strong { color: var(--wp--preset--color--primary-dark, #00592D); }
/* rappel « enregistrer ne réserve pas de place » : un cran plus discret */
#gform_wrapper_1 .lalevee-form-note__save {
	margin-top: 10px;
	padding-top: 10px;
	border-top: 1px dashed color-mix(in srgb, var(--wp--preset--color--primary, #007A3D) 25%, transparent);
	font-size: 0.9rem;
	color: #6f6e68;
}
/* footnote forfaits : sous le tableau Tarif (la page Tarif est en row-gap:0,
   le champ HTML serait sinon collé au total) → on le décolle + texte plus fin. */
#gform_wrapper_1 .lalevee-form-note--forfaits {
	margin-top: 16px;
	font-size: 0.88rem;
}
#gform_wrapper_1 .lalevee-form-note--forfaits p { margin-bottom: 6px; }

/* Adhésion Loire Vin Bio (#118) : cotisation NON assujettie à la TVA → on retire
   le suffixe « TTC » sur cette seule ligne (2 ID = spécificité > la règle générale,
   pas de !important nécessaire). Demande Lito 2026-06-17. */
#gform_wrapper_1 #field_1_118 .ginput_product_price::after { content: ""; margin: 0; }

/* Retouches form exposant (test Lito 2026-06-17 soir) ───────────────────────── */
/* (Salons #116/#117 désormais en grille 6/6 — ancienne classe inline retirée.) */
/* Présentation de l'entreprise (#91) : textarea plus haute (« grossie »). */
#gform_wrapper_1 #field_1_91 textarea { min-height: 200px; }
/* Bouton de validation finale aligné à DROITE (footer flex en GF 2.5+). */
#gform_wrapper_1 #gform_submit_button_1 { margin-left: auto; }
/* Légendes (libellés des questions radio/cases) en PILL charte (Lito 2026-06-18).
   Form #1 = vert (primary) ; form #2 (visiteur) = ROSE via override de --primary. */
#gform_wrapper_1 legend.gfield_label,
#gform_wrapper_1 legend,
#gform_wrapper_1 #field_1_91 > .gfield_label,
#gform_wrapper_1 #field_1_64 > .gfield_label,
#gform_wrapper_1 #field_1_58 > .gfield_label,
#gform_wrapper_1 #field_1_80 > .gfield_label,
#gform_wrapper_1 #field_1_81 > .gfield_label,
#gform_wrapper_1 .lalevee-pill-titre,
#gform_wrapper_2 legend.gfield_label,
#gform_wrapper_2 legend {
	display: inline-block !important;
	width: auto !important;
	float: none !important;
	font-size: 15px;
	font-weight: bold;
	color: #edf8f3;
	background: var(--wp--preset--color--primary);
	border: none;
	border-radius: 999px;
	padding: 6px 18px;
	margin-bottom: 12px;
	line-height: 1.3;
}
/* Champs de SAISIE en pastille : on cible le <label> PAR ID (#91 présentation,
   #64 % CA bio, #80 logo, #81 visuels) — AUCUNE classe sur le conteneur .gfield.
   Mettre lalevee-pill sur le conteneur cassait la mise en page (label + description
   + input sur une rangée, textarea rejeté à droite). La pastille n'est plus qu'une
   décoration du libellé, impossible d'impacter le layout. Lito 2026-06-19. */
/* Un peu plus d'air sous les LÉGENDES (pastille au-dessus des choix radio/cases) ;
   les libellés des champs de saisie restent à 12px. Demande Lito 2026-06-19. */
#gform_wrapper_1 .gfield:not(.lalevee-cepages) legend.gfield_label,
#gform_wrapper_1 .gfield:not(.lalevee-cepages) legend,
#gform_wrapper_2 .gfield:not(.lalevee-cepages) legend.gfield_label,
#gform_wrapper_2 .gfield:not(.lalevee-cepages) legend { margin-bottom: 16px; }
/* ── Rangée CÉPAGES (#134 widget + #135 « autre » inline, 6/6) — alignement :
   le #134 empile pastille (32px + 12px de marge) puis un « label plat » (la
   DESCRIPTION placée above, stylée comme un label) puis la pillbox. Le #135 n'a
   qu'un label → on le décale de la hauteur de la pastille (44px) et on donne la
   MÊME marge aux deux labels plats pour un alignement au pixel. Lito 2026-07-08. */
#gform_wrapper_1 .lalevee-cepages .gfield_description,
#gform_wrapper_2 .lalevee-cepages .gfield_description {
	font-size: 15px;
	font-weight: 600;
	color: inherit;
	margin: 0 0 8px;
	padding: 0;
}
/* (form 1 : #135 n'est plus côte à côte avec les cépages depuis le passage
   de la production annuelle en rangée [58 | 134] — Lito 15/07 ; le décalage
   d'alignement ne vaut plus que pour le form 2.) */
#gform_wrapper_2 #field_2_36 { margin-top: 44px; }
#gform_wrapper_1 #field_1_135 .gfield_label,
#gform_wrapper_2 #field_2_36 .gfield_label {
	font-size: 15px;
	font-weight: 600;
	color: inherit;
	margin: 0 0 8px;
	padding: 0;
}
/* même gabarit que la pillbox du widget (52px computed, radius 10px) */
#gform_wrapper_1 #field_1_135 input,
#gform_wrapper_2 #field_2_36 input {
	min-height: 52px;
	border-radius: 10px;
}
/* Rangée [Quantité produite | Cépages] (Lito 15/07) : la colonne gauche
   reprend l'ANATOMIE cépages — description « Production annuelle totale
   (hl) » placée above et stylée en label plat, input au gabarit pillbox. */
#gform_wrapper_1 #field_1_58 .gfield_description {
	font-size: 15px;
	font-weight: 600;
	color: inherit;
	margin: 0 0 8px;
	padding: 0;
}
#gform_wrapper_1 #field_1_58 input {
	min-height: 52px;
	border-radius: 10px;
}
/* astérisque requis : même teinte claire que le texte, bien visible, 16px.
   Vaut pour les légendes ET les libellés-pastilles des champs de saisie (par ID). */
#gform_wrapper_1 legend .gfield_required,
#gform_wrapper_1 #field_1_91 > .gfield_label .gfield_required,
#gform_wrapper_1 #field_1_64 > .gfield_label .gfield_required,
#gform_wrapper_1 #field_1_58 > .gfield_label .gfield_required,
#gform_wrapper_1 #field_1_80 > .gfield_label .gfield_required,
#gform_wrapper_1 #field_1_81 > .gfield_label .gfield_required,
#gform_wrapper_2 legend .gfield_required { color: #edf8f3; opacity: 1; font-size: 16px; }
/* Pill-titre « Surfaces » (#139, champ HTML) : gfield à part entière, donc
   l'espace sous elle = row-gap de la grille (40px) + marge pilule — trop loin
   de sa rangée (Lito 15/07). On annule la marge et on TRANSLATE la pill vers
   le bas (transform = zéro impact sur la grille) : ~16px visuels sous la
   pill, comme une legend interne ; l'air gagné passe AU-DESSUS du titre. */
#gform_wrapper_1 #field_1_139 .lalevee-pill-titre { margin-bottom: 0; }
#gform_wrapper_1 #field_1_139 { transform: translateY(24px); }

/* Choix de cases sous un label-pill : léger retrait du conteneur pour aligner les
   choix avec le contenu de la pastille. Demande Lito 2026-06-18. */
#gform_wrapper_1 .ginput_container_checkbox,
#gform_wrapper_2 .ginput_container_checkbox { padding: 0 1rem; }

/* Champs réseaux : logo du réseau en fond à GAUCHE de l'input (persistant, reste
   affiché à la saisie). Classe rs-{réseau} sur le champ. Demande Lito 2026-06-18. */
#gform_wrapper_1 .gfield[class*="rs-"] input,
#gform_wrapper_2 .gfield[class*="rs-"] input {
	background-repeat: no-repeat;
	background-position: 12px center;
	background-size: 18px 18px;
	padding-left: 40px;
}
.rs-site input      { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23555'%3E%3Cpath d='M12 2a10 10 0 100 20 10 10 0 000-20zm0 2c1.1 0 2.7 2.5 3 6H9c.3-3.5 1.9-6 3-6zM4.3 9h3c-.1 1-.1 2 0 3h-3a8 8 0 010-3zm.7 5h2.6c.3 2.2 1 4 1.9 5.2A8 8 0 015 14zm4.6 0h4.8c-.3 3.5-1.9 6-2.4 6s-2.1-2.5-2.4-6zm0-2c-.1-1-.1-2 0-3h4.8c.1 1 .1 2 0 3H9.6zM15 19.2c.9-1.2 1.6-3 1.9-5.2H19a8 8 0 01-4 5.2zM16.7 12c.1-1 .1-2 0-3h3a8 8 0 010 3h-3zm2.3-5h-2.6c-.3-1.5-.8-2.8-1.4-3.8A8 8 0 0119 7zM9 3.2C8.4 4.2 7.9 5.5 7.6 7H5a8 8 0 014-3.8z'/%3E%3C/svg%3E"); }
.rs-linkedin input  { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23555'%3E%3Cpath d='M20.45 20.45h-3.55v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.35V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28zM5.34 7.43a2.06 2.06 0 110-4.12 2.06 2.06 0 010 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.73V1.73C24 .77 23.2 0 22.22 0z'/%3E%3C/svg%3E"); }
.rs-youtube input   { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23555'%3E%3Cpath d='M23.5 6.2a3 3 0 00-2.12-2.14C19.5 3.55 12 3.55 12 3.55s-7.5 0-9.38.5A3 3 0 00.5 6.2C0 8.07 0 12 0 12s0 3.93.5 5.8a3 3 0 002.12 2.14c1.88.5 9.38.5 9.38.5s7.5 0 9.38-.5A3 3 0 0023.5 17.8C24 15.93 24 12 24 12s0-3.93-.5-5.8zM9.55 15.57V8.43L15.8 12z'/%3E%3C/svg%3E"); }
.rs-facebook input  { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23555'%3E%3Cpath d='M24 12a12 12 0 10-13.88 11.85v-8.38H7.08V12h3.04V9.36c0-3 1.79-4.66 4.53-4.66 1.31 0 2.68.24 2.68.24v2.95H15.8c-1.49 0-1.95.92-1.95 1.87V12h3.32l-.53 3.47h-2.79v8.38A12 12 0 0024 12z'/%3E%3C/svg%3E"); }
.rs-instagram input { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23555'%3E%3Cpath d='M12 2.16c3.2 0 3.58.01 4.85.07 3.25.15 4.77 1.69 4.92 4.92.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.15 3.23-1.66 4.77-4.92 4.92-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-3.26-.15-4.77-1.7-4.92-4.92C2.17 15.58 2.16 15.2 2.16 12s.01-3.58.07-4.85C2.38 3.93 3.9 2.38 7.15 2.23 8.42 2.17 8.8 2.16 12 2.16zM12 0C8.74 0 8.33.01 7.05.07 2.7.27.27 2.69.07 7.05.01 8.33 0 8.74 0 12s.01 3.67.07 4.95c.2 4.36 2.62 6.78 6.98 6.98C8.33 23.99 8.74 24 12 24s3.67-.01 4.95-.07c4.35-.2 6.78-2.62 6.98-6.98.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.2-4.35-2.62-6.78-6.98-6.98C15.67.01 15.26 0 12 0zm0 5.84a6.16 6.16 0 100 12.32 6.16 6.16 0 000-12.32zM12 16a4 4 0 110-8 4 4 0 010 8zm6.41-11.85a1.44 1.44 0 100 2.88 1.44 1.44 0 000-2.88z'/%3E%3C/svg%3E"); }
.rs-twitter input   { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23555'%3E%3Cpath d='M18.9 1.15h3.68l-8.04 9.19L24 22.85h-7.41l-5.8-7.58-6.64 7.58H.47l8.6-9.83L0 1.15h7.59l5.24 6.93zM17.6 20.64h2.04L6.49 3.24H4.3z'/%3E%3C/svg%3E"); }
.rs-tiktok input    { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23555'%3E%3Cpath d='M12.53.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'/%3E%3C/svg%3E"); }
/* Form visiteur (#2) : variante ROSE de la charte (pills + accents). */
#gform_wrapper_2 {
	--wp--preset--color--primary: var(--lalevee-rose, #C25B7C);
	--wp--preset--color--primary-dark: #9d4361;
}
/* Essai Lito : pills en PLEINE LARGEUR sur le form visiteur (#2). */
#gform_wrapper_2 legend.gfield_label,
#gform_wrapper_2 legend {
	display: block !important;
	width: 100% !important;
}
/* Note GAB en DESCRIPTION de #67 (entre le label et les choix) → look callout.
   :not(.validation_message) : depuis GF 2.7 le message d'erreur porte AUSSI la classe
   gfield_description → on l'exclut, sinon l'erreur prend l'allure de la note. Lito 2026-06-19. */
#gform_wrapper_1 #field_1_67 .gfield_description:not(.validation_message) {
	background: color-mix(in srgb, var(--wp--preset--color--primary, #007A3D) 7%, #fff);
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--primary, #007A3D) 18%, #ece9e2);
	border-left: 4px solid var(--wp--preset--color--primary, #007A3D);
	border-radius: 28px;
	padding: 14px 22px;
	margin: 6px 0 14px;
	font-size: 1.05rem;
	line-height: 1.5;
	color: #3a382f;
}
/* Boutons + ACCENT GLOBAL GF : on pilote la couleur via les VARIABLES NATIVES du
   thème Orbital de Gravity Forms (pas d'override !important).
   --gf-color-primary (bleu #204ce5 par défaut) est la RACINE de tout l'accent GF :
   pills du multiselect Chosen (cépages #134), contours de focus, étapes de la barre
   de progression, spinner… → mappée sur la charte, tout suit d'un coup.
   --primary vaut vert (form #1) ou rose (form #2, via l'override plus haut).
   ⚠️ Spécificité (1,3,0) OBLIGATOIRE (classe .gform-theme doublée) : GF imprime ses
   variables par form en INLINE avec `#gform_wrapper_1[data-form-index="0"].gform-theme`
   = (1,2,0), qui battait notre simple #id — d'où les accents restés bleus (2026-07-08). */
#gform_wrapper_1.gform-theme.gform-theme,
#gform_wrapper_2.gform-theme.gform-theme {
	--gf-color-primary: var(--wp--preset--color--primary);
	--gf-color-primary-darker: var(--wp--preset--color--primary-dark, #007A3D);
	--gf-color-primary-lighter: var(--wp--preset--color--primary-dark, #007A3D);
	/* accent « in-control » (focus des inputs, pills) : le bloc inline GF le pose
	   AUSSI en littéral bleu — à surcharger explicitement (découvert 2026-07-08) */
	--gf-color-in-ctrl-primary: var(--wp--preset--color--primary);
	--gf-ctrl-btn-bg-color-primary: var(--wp--preset--color--primary);
	--gf-ctrl-btn-border-color-primary: var(--wp--preset--color--primary);
	--gf-ctrl-btn-bg-color-hover-primary: var(--wp--preset--color--primary-dark, #007A3D);
	--gf-ctrl-btn-border-color-hover-primary: var(--wp--preset--color--primary-dark, #007A3D);
	--gf-ctrl-btn-bg-color-focus-primary: var(--wp--preset--color--primary-dark, #007A3D);
	--gf-ctrl-btn-border-color-focus-primary: var(--wp--preset--color--primary-dark, #007A3D);
	/* multiselect cépages : boîte alignée sur les autres inputs, sélections en
	   vraie pastille (comme les libellés-pills du form) */
	--gf-ctrl-multiselect-radius: var(--gf-ctrl-radius);
	--gf-ctrl-multiselect-selected-item-radius: 999px;
}
/* déclinaison RGB (utilisée pour les halos de focus en alpha) — un triplet ne peut
   pas dériver d'une variable hex → posé par form (vert charte / rose visiteur). */
#gform_wrapper_1.gform-theme.gform-theme { --gf-color-primary-rgb: 0, 166, 81; --gf-color-in-ctrl-primary-rgb: 0, 166, 81; }
#gform_wrapper_2.gform-theme.gform-theme { --gf-color-primary-rgb: 194, 91, 124; --gf-color-in-ctrl-primary-rgb: 194, 91, 124; }
/* Navigation multi-pages (form exposant) : groupe de boutons CENTRÉ, ordre
   Précédent · Enregistrer · Suivant (le DOM rend prev/next/save → on réordonne). */
#gform_wrapper_1 .gform_page_footer {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 6rem;
}
#gform_wrapper_1 .gform_page_footer .gform_previous_button { order: 1; }
#gform_wrapper_1 .gform_page_footer .gform_save_link        { order: 2; }
#gform_wrapper_1 .gform_page_footer .gform_next_button      { order: 3; }
/* Validation finale : « Valider mon inscription » (ajout panier) tout à DROITE. */
.single-product .single_add_to_cart_button {
	display: block;
	margin-left: auto;
	width: -moz-fit-content;
	width: fit-content;
}
/* Form visiteur (mono-page) : bouton de soumission à droite. */
#gform_wrapper_2 .gform_footer { display: flex; justify-content: flex-end; margin-top: 6rem; }
/* Texte d'aide « Plus c'est précis… » (champ html #30). */
#gform_wrapper_2 .lalevee-form-hint { margin: 0 0 8px; color: #6b6358; font-size: 0.95rem; font-style: italic; }

/* Notices WooCommerce (page validation de commande, panier, compte…) : coins
   arrondis pour s'accorder à la charte (uniquement le rayon). !important pour passer
   devant le CSS des notices WC (classiques + blocs). Demande Lito 2026-06-18. */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-noreviews,
.woocommerce-notice,
.woocommerce ul.woocommerce-error,
.woocommerce ul.woocommerce-message,
.wc-block-components-notice-banner,
.wc-block-store-notices .wc-block-components-notice-banner {
	border-radius: 42px !important;
	padding-right: 21px !important;
	overflow: hidden;
}
/* WC force le padding du notice bloc en !important → on surclasse (spécificité) */
.wc-block-components-notice-banner.wc-block-components-notice-banner.wc-block-components-notice-banner {
	padding-right: 21px !important;
}

/* ── Page CVG (Conditions Générales de Participation) : les colonnes du CORPS sont
   gérées par le réglage NATIF de Gutenberg (Typographie > Colonnes / textColumns),
   posé PAR PARAGRAPHE dans le markup → aucun CSS ici pour ça. Seul le sommaire est
   habillé ci-dessous. Titres sans couleur (défaut thème). Lito 2026-06-19. */
/* Sommaire : encart léger */
.cvg-sommaire {
	border: 1px solid var(--wp--preset--color--border-light, #e3e6ef);
	border-radius: 14px;
	padding: 6px 28px 18px;
	margin-bottom: 2.5rem;
	background: color-mix(in srgb, var(--wp--preset--color--primary, #00A651) 4%, #fff);
}
.cvg-sommaire .cvg-sommaire-liste a { text-decoration: none; }
.cvg-sommaire .cvg-sommaire-liste a:hover { text-decoration: underline; }

/* ── Liens dans les SURFACES COLORÉES (cards jaune, rose, magenta, vert…) :
   le vert global des liens est illisible/disgracieux sur ces fonds (ex. vert
   sur jaune). Règle générale : le lien HÉRITE de la couleur du texte de la
   surface + soulignement (l'affordance ne repose plus sur la couleur).
   Respecte les choix de l'éditeur : un bloc qui définit sa propre couleur de
   lien porte `has-link-color` → exclu (surface ET blocs imbriqués), boutons
   exclus. Fonds NEUTRES (base/tertiary) et tintes claires non concernés — le
   vert y fonctionne. Demande Lito 2026-06-19. */
:is(.has-primary-background-color,
	.has-primary-dark-background-color,
	.has-primary-alt-background-color,
	.has-amber-dark-background-color,
	.has-main-background-color,
	.has-main-accent-background-color,
	.has-rose-background-color,
	.has-jaune-background-color,
	.has-bleu-ciel-background-color,
	.has-prune-background-color,
	.has-magenta-background-color,
	.has-marron-background-color,
	.is-style-card-jaune,
	.is-style-card-bleu-ciel,
	.is-style-card-rose,
	.is-style-card-magenta,
	.is-style-card-prune,
	.is-style-card-marron):not(.has-link-color)
	a:where(:not(.wp-element-button)):not(:where(.has-link-color) a) {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* ──────────────────────────────────────────────────────────────────────────
 * Flux Instagram (Smash Balloon) — habillage charte (2026-07-10)
 * ──────────────────────────────────────────────────────────────────────────
 * Scope .lalevee-ig (sections des variantes B/C, page de test puis accueil) :
 * vignettes arrondies + micro-hover ; en-têtes maison (carte d'ouverture rose
 * de la variante B, @compte de la variante C). Les réglages du flux lui-même
 * (nb de posts, colonnes, en-tête SB masqué) vivent dans les FEEDS Smash
 * Balloon (#1 = B, #2 = C), pas ici. */
.lalevee-ig #sb_instagram .sbi_photo {
	border-radius: 12px;
	overflow: hidden;
}
.lalevee-ig #sb_instagram .sbi_item {
	transition: transform 0.18s ease;
}
.lalevee-ig #sb_instagram .sbi_item:hover {
	transform: translateY(-3px);
}
@media (prefers-reduced-motion: reduce) {
	.lalevee-ig #sb_instagram .sbi_item,
	.lalevee-ig #sb_instagram .sbi_item:hover {
		transition: none;
		transform: none;
	}
}
/* carte d'ouverture (variante B) : titre calligraphié, dans l'esprit du logo */
.lalevee-ig-script {
	font-family: "Snell Roundhand", "Brush Script MT", "Segoe Script", cursive;
	font-size: 2.1rem;
	line-height: 1.05;
	margin: 0;
}
/* @compte (variante C) */
.lalevee-ig-arobase {
	font-weight: 800;
	margin: 0;
}
.lalevee-ig-arobase a {
	color: var(--wp--preset--color--magenta, #C25B7C);
	text-decoration: none;
}
.lalevee-ig-arobase a:hover {
	text-decoration: underline;
}
/* (l'icône Instagram de l'en-tête est le bloc natif « Icônes de réseaux
   sociaux » — retouche Lito 2026-07-10, aucun CSS nécessaire) */
/* MOBILE : le fil de la variante C reste sur UNE LIGNE (demande Lito) —
   Smash Balloon replierait en 2 colonnes × 4 rangées (classe sbi_mob_col_2) →
   on transforme le conteneur en fil défilable horizontalement (snap), vignettes
   ~30% de large. !important requis : largeurs posées par la CSS SB. */
@media (max-width: 781px) {
	.lalevee-ig--c #sb_instagram #sbi_images {
		display: flex !important;
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: thin;
		padding-bottom: 8px;
	}
	.lalevee-ig--c #sb_instagram #sbi_images .sbi_item {
		flex: 0 0 30% !important;
		width: 30% !important;
		min-width: 30%;
		scroll-snap-align: start;
	}
}

/* ──────────────────────────────────────────────────────────────────────────
 * Entête des annuaires publics (templates page-annuaire-* — 2026-07-13)
 * ──────────────────────────────────────────────────────────────────────────
 * Rangée native [post-title | bouton « Coordonnées & Mise en relation »] dans
 * la card, au niveau du TEMPLATE (v2 — la v1 posait le bouton en contenu avec
 * un chevauchement CSS fragile sur le widget titre des vues, retirés tous deux
 * par le script annuaires-template-v2). Bouton visible déconnectés (Block
 * Visibility). Sur les FICHES (même page, endpoint /fiche/), l'entête est
 * masquée : la fiche garde son propre H1 (nom du domaine). */
.lalevee-annuaire-entete {
	margin-bottom: 6px;
}
.lalevee-annuaire-entete .wp-block-post-title {
	margin: 0;
}
main.lalevee-annuaire-bg:has(.gv-layout-builder-single-container) .lalevee-annuaire-entete {
	display: none;
}

/* ──────────────────────────────────────────────────────────────────────────
 * Champ « Type de certification » en image choices natives GF (2026-07-15)
 * ──────────────────────────────────────────────────────────────────────────
 * Champ #55 du form inscription exposant, converti en type image_choice
 * (script certifs-image-choice-2026-07.php). Deux finitions :
 * 1. accent VERT charte au lieu du bleu Orbital par défaut — scopé au champ.
 *    PIÈGE tokens GF : les tokens dérivés (--gf-field-img-choice-card-check-
 *    ind-bg-color: var(--gf-color-in-ctrl-primary)) sont RÉSOLUS sur
 *    .gform-theme (l'ancêtre) puis hérités déjà résolus → redéfinir la
 *    couleur source ne suffit pas, il faut re-déclarer AUSSI les tokens
 *    finaux au niveau du champ pour forcer une re-résolution locale ;
 * 2. mobile : 2 colonnes compactes au lieu de l'empilement 1 colonne
 *    (7 grandes cards = trop de scroll) — la largeur des cards est pilotée
 *    par le token --gf-field-img-choice-size (propriétés logiques
 *    inline-size/min/max, pas width). L'ID est le même local/préprod. */
#field_1_55 {
	--gf-color-primary: var(--wp--preset--color--primary, #00a651);
	--gf-color-primary-rgb: 0, 166, 81;
	--gf-color-primary-darker: var(--wp--preset--color--primary-dark, #007a3d);
	--gf-color-primary-lighter: var(--wp--preset--color--primary-accent, #d4edda);
	--gf-color-in-ctrl-primary: var(--wp--preset--color--primary, #00a651);
	--gf-color-in-ctrl-primary-rgb: 0, 166, 81;
	--gf-color-in-ctrl-primary-contrast: #fff;
	--gf-color-in-ctrl-primary-darker: var(--wp--preset--color--primary-dark, #007a3d);
	--gf-color-in-ctrl-primary-lighter: var(--wp--preset--color--primary-accent, #d4edda);
	/* tokens finaux (badge coche des cards + case + focus) — cf. piège ci-dessus */
	--gf-field-img-choice-card-check-ind-bg-color: var(--gf-color-in-ctrl-primary);
	--gf-field-img-choice-card-check-ind-icon-color: #fff;
	--gf-field-img-choice-no-card-check-ind-bg-color: var(--gf-color-in-ctrl-primary);
	--gf-field-img-choice-no-card-check-ind-icon-color: #fff;
	--gf-ctrl-choice-check-color: var(--gf-color-in-ctrl-primary);
	--gf-ctrl-border-color-focus: var(--gf-color-primary);
	--gf-ctrl-outline-color-focus: rgba(0, 166, 81, 0.65);
}

/* Desktop : ESSAI 7 colonnes sur une seule rangée (Lito 15/07 après-midi —
   « les logos sont trop gros »). Pour REVENIR à 2 rangées × 4 colonnes,
   remplacer le calc par : calc(25% - (var(--gf-field-img-choice-gap, 16px) * 3 / 4)) */
@media (min-width: 641px) {
	#field_1_55 {
		--gf-field-img-choice-size: calc(100% / 7 - (var(--gf-field-img-choice-gap, 16px) * 6 / 7));
	}
}

@media (max-width: 640px) {
	#field_1_55 {
		--gf-field-img-choice-gap: 10px;
		--gf-field-img-choice-size: calc(50% - 5px);
	}
}

/* ──────────────────────────────────────────────────────────────────────────
 * Badge « accès adhérents » dans le menu (2026-07-16)
 * ──────────────────────────────────────────────────────────────────────────
 * Items de navigation Webinaires/Podcasts (classe lalevee-menu-restreint,
 * posée par ressources-gating-v2) : badge « connexion » poussé À DROITE au
 * bout de la ligne (le lien passe en flex, le badge en margin-left:auto).
 * V2 (Lito 17/07) : le verre de vin 🍷 devient l'icône UTILISATEUR blanche
 * dans un ROND VERT charte (SVG inline en data URI — aucun asset). */
.wp-block-navigation-item.lalevee-menu-restreint > a,
li.lalevee-menu-restreint > a {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
}

.wp-block-navigation-item.lalevee-menu-restreint > a::after,
li.lalevee-menu-restreint > a::after {
	content: "";
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	margin-left: auto;
	border-radius: 999px;
	background-color: var(--wp--preset--color--primary, #00A651);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center 45%;
	background-size: 60%;
}

/* Embed Spotify (page Podcasts) : le bloc embed n'offre PAS de réglage de
   hauteur — à 352px (défaut oEmbed) la playlist ne montre qu'un épisode.
   On agrandit pour dérouler la liste (demande Lito 17/07). */
.wp-block-embed-spotify iframe {
	height: 620px;
}

/* Fil d'Ariane SEOPress (templates single, page et gabarits annuaires/espace,
   17/07) : discret — corps légèrement réduit, gris moyen (secondary #666),
   liens hérités, hover vert charte. Jamais sur la home (garde-fou PHP child). */
.wp-block-wpseopress-breadcrumbs {
	font-size: 0.85rem;
	color: var(--wp--preset--color--secondary, #666666);
}

.wp-block-wpseopress-breadcrumbs a {
	color: inherit;
	text-decoration: none;
}

.wp-block-wpseopress-breadcrumbs a:hover {
	color: var(--wp--preset--color--primary, #00A651);
	text-decoration: underline;
}

/* Encart « inscription exposant fermée aux visiteurs connectés »
   (Panier_Tunnel::message_visiteur_inscription — remplace le produit
   configurateur sur la page d'inscription). Carte charte sobre ; le bouton
   principal déconnecte ET ramène sur la page, prête pour un autre inscrit. */
.lalevee-blocage-visiteur {
	margin: 1.5rem 0 2.5rem; /* pleine largeur du contenu (retour Lito) */
	padding: 34px 38px;
	background: #fff;
	border: 1px solid #e2e4e7;
	border-radius: 14px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 10px 28px rgba(20, 17, 31, 0.05);
	text-align: center;
}

.lalevee-blocage-visiteur h2 {
	margin: 0 0 14px;
	font-size: 1.5rem; /* le H1 de la page porte déjà le titre — l'encart reste discret */
	color: var(--primary-dark, #007A3D);
}

.lalevee-blocage-visiteur p {
	margin: 0 0 12px;
}

.lalevee-blocage-visiteur .lalevee-blocage-actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 14px 22px;
	margin: 22px 0 0;
}

.lalevee-blocage-visiteur .lalevee-blocage-lien {
	color: var(--primary-dark, #007A3D);
	text-decoration: underline;
}

/* Bandeau « vous avez déjà une inscription » (exposant connecté, au-dessus
   du formulaire — non bloquant). Ambre = attention, pastille maison. */
.lalevee-avertissement-exposant {
	margin: 1.5rem 0;
	padding: 16px 22px;
	background: #fbf4ec;
	border-left: 4px solid #d4874d;
	border-radius: 8px;
}

.lalevee-avertissement-exposant p {
	margin: 0 0 6px;
}

.lalevee-avertissement-exposant p:last-child {
	margin-bottom: 0;
}

.lalevee-avertissement-exposant a {
	color: var(--primary-dark, #007A3D);
}

/* Filtre « Statut de validation » (vue Gestion des fiches exposants) : le
   label texte est remplacé visuellement par une COCHE VERTE (le texte reste
   dans le label pour les lecteurs d'écran), coche + select INLINE, et le
   select reprend la taille du champ de recherche pour une hauteur égale
   (il héritait d'une police plus grande → 43px vs 41px). */
.gv-search-box.lalevee-filtre-validation {
	display: flex;
	align-items: center;
	gap: 8px;
}

.gv-search-box.lalevee-filtre-validation > label {
	flex: 0 0 auto;
	width: 26px;
	height: 26px;
	margin: 0;
	overflow: hidden;
	text-indent: 200%;
	white-space: nowrap;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='11' fill='%2300A651'/%3E%3Cpath d='M7 12.5l3.2 3.2L17 9' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

.gv-search-box.lalevee-filtre-validation p {
	margin: 0;
}

.gv-search-box.lalevee-filtre-validation select {
	font-size: 0.95rem; /* = l'input de recherche → même hauteur rendue */
}

/* Bouton « Le salon » du header — PILL AQUARELLE (maquette Lito 17/07).
   Le CSS saisi « au niveau du bloc » dans l'éditeur (attr style.css du bloc
   ollie/mega-menu) n'est PAS restitué au front (bloc dynamique) → porté ici
   à l'identique. Image rapatriée dans le thème : une URL uploads absolue ne
   survivrait pas au clone go-live (le search-replace ne touche pas les
   fichiers CSS). Classe posée par menu-salon-pill-2026-07.php. */
li.lalevee-menu-salon > .wp-block-ollie-mega-menu__toggle {
	/* voile blanc → transparent → blanc PAR-DESSUS l'aquarelle : les bords
	   fondent dans le fond du header (V2 Lito — plus de bordure verte).
	   Propriétés LONGHAND (pas le shorthand multi-couches avec « center /
	   cover ») : Firefox rejetait la déclaration raccourcie → aucun fond. */
	background-image:
		linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 75%, #fff 100%),
		url("fleches-3-bg-bouton-salon-j2.webp");
	background-position: center, center;
	background-size: 100% 100%, cover;
	background-repeat: no-repeat, no-repeat;
	padding: 8px 40px;
	border-radius: 40px;
	font-weight: bold;
}

/* ──────────────────────────────────────────────────────────────────────────
 * Icône panier du header = LIEN direct vers la page panier (2026-07-16)
 * ──────────────────────────────────────────────────────────────────────────
 * Remplace le bloc mini-cart Woo (panneau latéral illisible avec les champs
 * du configurateur + glitch d'ouverture). Masquée aux visiteurs purs par
 * Panier_Tunnel (render_block). */
.lalevee-cart-link {
	position: relative; /* ancre de la pastille compteur */
	display: inline-flex;
	align-items: center;
	color: inherit;
	padding: 6px;
}

.lalevee-cart-link:hover {
	opacity: 0.7;
}

/* Pastille compteur (Panier_Tunnel, tenue à jour par wc-cart-fragments) :
   rond NOIR (encre du thème « main », choix Lito 17/07) en haut à droite de
   l'icône, masquée quand le panier est vide. */
.lalevee-cart-link .lalevee-cart-count {
	position: absolute;
	top: -3px;
	right: -5px;
	min-width: 16px;
	height: 16px;
	padding: 0 4px;
	box-sizing: border-box;
	border-radius: 999px;
	background: var(--wp--preset--color--main, #1a1a1a);
	color: #fff;
	font-size: 10.5px;
	font-weight: 700;
	line-height: 16px;
	text-align: center;
}

.lalevee-cart-link .lalevee-cart-count.est-vide {
	display: none;
}

/* Icône « Se déconnecter » (Header_Logout, rendue en PHP à côté de l'icône
   compte, connectés seulement) : même gabarit que le lien panier. */
.lalevee-logout-link {
	display: inline-flex;
	align-items: center;
	color: inherit;
	padding: 6px;
}

.lalevee-logout-link:hover {
	opacity: 0.7;
}

/* ──────────────────────────────────────────────────────────────────────────
   Checkout — moyens de paiement sur UNE ligne (radio + libellé + logos).
   Ollie parent pose label { width:100%; display:block } (style.css:130) →
   chaque libellé passait SOUS son bouton radio (constat Lito 24/07 au test
   Monetico pp — idem checkout prod CE). Scopé #payment uniquement.
   ────────────────────────────────────────────────────────────────────────── */
body.woocommerce-checkout #payment .wc_payment_method > input.input-radio {
	display: inline-block;
	vertical-align: middle;
	margin: 0 0.6em 0 0;
	width: auto;
}
body.woocommerce-checkout #payment .wc_payment_method > label {
	display: inline-block;
	vertical-align: middle;
	width: auto;
	margin: 0;
}
body.woocommerce-checkout #payment .wc_payment_method > label img {
	display: inline-block;
	vertical-align: middle;
	margin-left: 0.45em;
}

/* ──────────────────────────────────────────────────────────────────────────
   Fiche de gestion exposant (vue single « Gestion des fiches exposants ») :
   les DESCRIPTIONS des sections 66 (« Présentation de vos vins » — texte
   playlist musicale) et 79 (« Votre image de marque ») sont masquées à la
   demande de la gestionnaire (27/07) — elles restent dans le FORM, utiles à
   la saisie exposant. Ciblage par classes GV gv-field-{form}-{field},
   identiques sur tous les envs.
   ────────────────────────────────────────────────────────────────────────── */
/* (0,4,1) : bat la règle inline du module (tr.lalevee-fiche-section td,
   0,3,1) quel que soit l'ordre de chargement. */
.gv-table-view .gv-table-view-content tr.gv-field-1-66 td,
.gv-table-view .gv-table-view-content tr.gv-field-1-79 td {
	display: none;
}
