/*
 * Habillage des pages générées par IRCF IA (Cible\Gutenberg\Rendu).
 * Chargé sur le site et dans l'éditeur. Les réglages posés sur un bloc
 * (arrondi, ombre, marges) l'emportent : ils sont écrits en ligne.
 */

:root {
	--ircf-ai-ombre-douce: 0 1px 2px color-mix(in srgb, var(--wp--preset--color--contrast, #111) 6%, transparent), 0 8px 24px -8px color-mix(in srgb, var(--wp--preset--color--contrast, #111) 18%, transparent);
	--ircf-ai-ombre-flottante: 0 2px 4px color-mix(in srgb, var(--wp--preset--color--contrast, #111) 6%, transparent), 0 24px 48px -16px color-mix(in srgb, var(--wp--preset--color--contrast, #111) 28%, transparent);
	/* L'arrondi assorti à la forme des boutons du site (Cible\Formes, apply-site-style), 1rem sans réglage. */
	--ircf-ai-arrondi: var(--wp--custom--ircf-ai--arrondi, 1rem);
}

/*
 * Les sections se touchent : sans cela, l'écart du thème entre deux blocs
 * laisse une bande blanche entre deux fonds (« Cargo & Cie », 3 novembre).
 */
.ircf-ai-section.alignfull {
	margin-block-start: 0;
	margin-block-end: 0;
}

/*
 * Une photo de l'entreprise qui porte du texte ou un logo (Pipeline\Photos,
 * SortieElementor::entiere()) : montrée entière, ni recadrée ni étirée,
 * quelle que soit la règle de la section (« Le Fil de Garonne », 4 novembre).
 */
img.ircf-ai-entiere {
	aspect-ratio: auto !important;
	height: auto !important;
	object-fit: contain !important;
}

/* Un logo dont une couleur se perd sur le pied sombre : posé sur une plaque claire (Cible\Logo). */
.wp-block-site-logo.ircf-ai-plaque img {
	box-sizing: content-box;
	padding: 0.4rem 0.6rem;
	border-radius: 0.5rem;
	background: #fff;
}

/* Le pied de page touche la dernière section (modèle « Page générée », Cible\Gutenberg\Gabarit). */
.page-template-ircf-ai-page .wp-site-blocks > footer {
	margin-block-start: 0;
}

/*
 * Le contenu d'une section dans une seule largeur, alignée à gauche
 * (Traducteur::contenu()) : titres, textes, grilles et colonnes partagent le
 * même bord. Les textes gardent une longueur de ligne lisible.
 */
.ircf-ai-contenu :is(p, .wp-block-list) {
	max-width: 65ch;
}

.ircf-ai-contenu :is(h1, h2) {
	max-width: 30ch;
}

.ircf-ai-contenu :is(p, h1, h2, h3, .wp-block-list).has-text-align-center {
	margin-inline: auto;
}

.ircf-ai-contenu :is(p, h1, h2, h3).has-text-align-right {
	margin-inline-start: auto;
}

/* Le formulaire à côté des coordonnées (Traducteur::a_cote()) : toute sa colonne. */
.ircf-ai-cote-formulaire .ircf-ai-formulaire {
	max-width: none;
}

/*
 * Liens posés par le plugin (e-mail, téléphone : Cible\Liens), et liens des
 * titres et paragraphes Elementor V4 (qui retirent la classe de leur texte) :
 * la couleur du texte, soulignés, lisibles sur le fond où le texte l'est. La
 * couleur des liens du kit rendait une adresse violet foncé sur une carte
 * violet foncé (« Éditions du Dragon Pâle », 6 novembre).
 * « body » : plus précis que la couleur des liens du kit d'Elementor.
 */
body a.ircf-ai-lien,
body :is(.e-paragraph-base, .e-heading-base) a {
	color: inherit;
	text-decoration-line: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

body a.ircf-ai-lien:hover,
body a.ircf-ai-lien:focus-visible,
body :is(.e-paragraph-base, .e-heading-base) a:hover,
body :is(.e-paragraph-base, .e-heading-base) a:focus-visible {
	text-decoration-thickness: 2px;
}

/* Les champs du formulaire sont des paragraphes : jamais bornés à la longueur de lecture des textes (« Téléphone » et « Message » s'arrêtaient 60 px avant « Nom » et « E-mail », capture du 6 novembre). */
.ircf-ai-formulaire :is(p, .ircf-ai-formulaire__ligne) {
	max-width: none;
}

/* Une zone en largeur de lecture, demandée par la rédaction. */
.ircf-ai-contenu .ircf-ai-lecture {
	max-width: var(--wp--style--global--content-size, 42rem);
}

.ircf-ai-contenu .ircf-ai-lecture.ircf-ai-lecture--centre {
	margin-inline: auto;
}

/* Un héros d'une hauteur minimale : son contenu au milieu, pas collé en haut. */
.ircf-ai-section.ircf-ai-section--centre {
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.ircf-ai-section.ircf-ai-section--centre > * {
	box-sizing: border-box;
	width: 100%;
}

/* Carte : fond, arrondi, ombre douce ; se soulève au survol. */
.wp-block-group.is-style-ircf-carte {
	background-color: var(--wp--preset--color--base, #fff);
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-douce);
	padding: var(--wp--preset--spacing--50, 1.5rem);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.wp-block-group.is-style-ircf-carte:hover {
	box-shadow: var(--ircf-ai-ombre-flottante);
	transform: translateY(-4px);
}

/* Verre dépoli : pour un groupe posé sur une image ou un fond coloré. */
.wp-block-group.is-style-ircf-verre {
	-webkit-backdrop-filter: blur(14px) saturate(1.4);
	backdrop-filter: blur(14px) saturate(1.4);
	background-color: color-mix(in srgb, var(--wp--preset--color--base, #fff) 72%, transparent);
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--base, #fff) 45%, transparent);
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-douce);
	padding: var(--wp--preset--spacing--50, 1.5rem);
}

/*
 * Offre mise en avant (audit des dégradés, 6 novembre) : la carte qui monte
 * en gamme, une par section. Ses couleurs et son dégradé sont posés par le
 * plugin selon le ton de la marque (Traducteur::vedette()) ; ici, sa forme :
 * filet de la couleur d'action (sobre : plein, équilibré : léger, vif :
 * aucun, le fond porte), ombre plus marquée qu'une carte.
 */
.wp-block-group.is-style-ircf-vedette {
	position: relative;
	border: 1px solid color-mix(in srgb, var(--ircf-ai-action, currentColor) 35%, transparent);
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-flottante);
	padding: var(--wp--preset--spacing--50, 1.5rem);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.wp-block-group.is-style-ircf-vedette.ircf-ai-vedette--sobre {
	border: 2px solid var(--ircf-ai-action, currentColor);
	box-shadow: var(--ircf-ai-ombre-douce);
}

.wp-block-group.is-style-ircf-vedette.ircf-ai-vedette--vif {
	border: 0;
}

.wp-block-group.is-style-ircf-vedette:hover {
	transform: translateY(-4px);
}

/* Bouton principal en dégradé : au survol, la lumière glisse (pas de saut de couleur). */
.wp-block-button__link.ircf-ai-bouton-degrade,
.ircf-ai-bouton-degrade .wp-block-button__link {
	background-size: 160% 100%;
	background-position: 0% 0%;
	transition: background-position 0.4s ease, box-shadow 0.3s ease;
}

.wp-block-button__link.ircf-ai-bouton-degrade:hover,
.ircf-ai-bouton-degrade .wp-block-button__link:hover {
	background-position: 100% 0%;
}

@media (prefers-reduced-motion: reduce) {
	.wp-block-group.is-style-ircf-vedette,
	.wp-block-button__link.ircf-ai-bouton-degrade,
	.ircf-ai-bouton-degrade .wp-block-button__link {
		transition: none;
	}

	.wp-block-group.is-style-ircf-vedette:hover {
		transform: none;
	}
}

/* Image arrondie, ombre douce. */
.wp-block-image.is-style-ircf-douce img {
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-flottante);
}

/*
 * La légende d'une image générée (« Illustration générée par IA ») :
 * discrète, posée dans le coin de l'image plutôt qu'en dessous (choix de
 * l'opérateur, 3 novembre). Les photos de l'entreprise n'en ont pas.
 */
.wp-block-image.is-style-ircf-douce {
	position: relative;
}

.wp-block-image.is-style-ircf-douce .wp-element-caption {
	position: absolute;
	right: 0.5rem;
	bottom: 0.5rem;
	margin: 0;
	padding: 0.15rem 0.45rem;
	border-radius: 0.25rem;
	background: rgba(0, 0, 0, 0.45);
	color: #fff;
	font-size: 0.65rem;
	line-height: 1.3;
	opacity: 0.8;
	pointer-events: none;
}

/* Boutons des sections générées : un léger relief au survol. */
.ircf-ai-section .wp-block-button__link {
	transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.ircf-ai-section .wp-block-button__link:hover {
	box-shadow: var(--ircf-ai-ombre-douce);
	transform: translateY(-2px);
}

/* Apparition au défilement, sans script ; jamais dans l'éditeur, ni pour qui demande moins d'animations. */
@keyframes ircf-ai-apparition {
	from {
		opacity: 0;
		transform: translateY(1.5rem);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

@media (prefers-reduced-motion: no-preference) {
	@supports (animation-timeline: view()) {
		:where(body:not(.editor-styles-wrapper)) :is(.ircf-ai-section:not(.wp-block-cover) > :not(.ircf-ai-contenu), .ircf-ai-contenu > *) {
			animation: ircf-ai-apparition linear both;
			animation-range: entry 0% entry 40%;
			animation-timeline: view();
		}
	}
}

/*
 * Formulaires de contact (lot A, 5 novembre) : le bloc ircf-ai/formulaire et
 * le formulaire d'Elementor Pro posé par le plugin (classe
 * « ircf-ai-formulaire-ep », ou son champ « consentement » pour ceux posés
 * avant). Tout vient de la charte : couleur d'action (--ircf-ai-action :
 * kit Elementor ou boutons des styles globaux), arrondis (--ircf-ai-arrondi,
 * --ircf-ai-arrondi-bouton), couleur du texte de la section (currentColor).
 */
.ircf-ai-formulaire,
.elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) {
	--ircf-ai-form-accent: var(--ircf-ai-action, currentColor);
	--ircf-ai-form-bord: color-mix(in srgb, currentColor 24%, transparent);
	--ircf-ai-form-bord-survol: color-mix(in srgb, currentColor 45%, transparent);
	--ircf-ai-form-halo: color-mix(in srgb, var(--ircf-ai-form-accent) 22%, transparent);
	--ircf-ai-form-rayon: min(var(--ircf-ai-arrondi-bouton, 0.5rem), 0.75rem);
	--ircf-ai-form-erreur: #b42318;
	--ircf-ai-form-duree: 200ms;
}

/* ── Bloc ircf-ai/formulaire (Gutenberg) ─────────────────────────────── */

.ircf-ai-formulaire {
	max-width: 40rem;
	/* Au retour d'un envoi (ancre du bloc) ou au focus d'un champ fautif : sous l'en-tête collant, pas dessous. */
	scroll-margin-top: 9rem;
}

.ircf-ai-formulaire :is(input, textarea) {
	scroll-margin-top: 9rem;
}

/*
 * Sur une section colorée (fond posé par la charte : « has-background »),
 * le formulaire dans une carte claire, comme celui d'Elementor : sur un fond
 * sombre, le bouton prenait la couleur du fond (bouton du thème foncé,
 * capture du 5 novembre) et les champs blancs flottaient sans cadre.
 */
/*
 * Lot C (6 novembre) : la variante est choisie par le plugin d'après le ton
 * de la section (Pipeline\Rythme::formulaire()) — « carte » sur une section
 * teintée ou forte, « minimal » (sans carte, les champs posés sur la
 * section) sur une section claire, où une carte blanche sur fond blanc
 * n'ajoutait qu'une ombre. Sans variante (pages d'avant), la carte sur
 * toute section colorée, comme au lot A.
 */
.ircf-ai-formulaire.is-carte,
.has-background .ircf-ai-formulaire:not(.is-minimal) {
	box-sizing: border-box;
	padding: clamp(1.5rem, 4vw, 2.5rem);
	border-radius: var(--ircf-ai-arrondi);
	background: var(--wp--preset--color--base, #fff);
	box-shadow: var(--ircf-ai-ombre-douce);
	color: var(--wp--preset--color--contrast, #111);
}

.ircf-ai-formulaire__form {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}

/* Les champs courts côte à côte quand la place le permet, l'un sous l'autre sinon. */
.ircf-ai-formulaire__ligne {
	display: grid;
	gap: 1.25rem;
	grid-template-columns: repeat(auto-fit, minmax(min(14rem, 100%), 1fr));
}

.ircf-ai-formulaire__champ,
.ircf-ai-formulaire__consentement,
.ircf-ai-formulaire__envoi {
	margin: 0;
	min-width: 0;
}

.ircf-ai-formulaire__champ label {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.4;
}

.ircf-ai-formulaire__champ label span[aria-hidden] {
	color: var(--ircf-ai-form-accent);
}

.ircf-ai-formulaire :is(input[type="text"], input[type="email"], input[type="tel"], textarea) {
	-webkit-appearance: none;
	appearance: none;
	box-sizing: border-box;
	width: 100%;
	min-height: 3rem;
	margin: 0;
	padding: 0.75rem 1rem;
	border: 1px solid var(--ircf-ai-form-bord);
	border-radius: var(--ircf-ai-form-rayon);
	background: var(--wp--preset--color--base, #fff);
	box-shadow: none;
	color: var(--wp--preset--color--contrast, #111);
	font: inherit;
	/* 16 px : lisible, et sans zoom automatique du téléphone sur le champ. */
	font-size: 1rem;
	line-height: 1.5;
	transition: border-color var(--ircf-ai-form-duree) ease, box-shadow var(--ircf-ai-form-duree) ease;
}

.ircf-ai-formulaire textarea {
	min-height: 9rem;
	resize: vertical;
}

.ircf-ai-formulaire :is(input, textarea)::placeholder {
	color: color-mix(in srgb, var(--wp--preset--color--contrast, #111) 45%, transparent);
	opacity: 1;
}

.ircf-ai-formulaire :is(input[type="text"], input[type="email"], input[type="tel"], textarea):hover {
	border-color: var(--ircf-ai-form-bord-survol);
}

.ircf-ai-formulaire :is(input[type="text"], input[type="email"], input[type="tel"], textarea):focus {
	border-color: var(--ircf-ai-form-accent);
	box-shadow: 0 0 0 3px var(--ircf-ai-form-halo);
	/* Garde un contour en mode contraste élevé, où l'ombre disparaît. */
	outline: 2px solid transparent;
	outline-offset: 2px;
}

/* Une saisie invalide, signalée une fois le champ quitté (pas dès l'arrivée). */
.ircf-ai-formulaire :is(input, textarea):user-invalid {
	border-color: var(--ircf-ai-form-erreur);
}

/*
 * Lot B (6 novembre) : l'erreur en toutes lettres sous le champ
 * (assets/js/ircf-ai-formulaire.js), champ bordé de rouge, halo rouge au
 * focus ; jamais la couleur seule (le texte et l'icône la disent).
 */
.ircf-ai-formulaire [aria-invalid="true"]:is(input[type="text"], input[type="email"], input[type="tel"], textarea) {
	border-color: var(--ircf-ai-form-erreur);
}

.ircf-ai-formulaire [aria-invalid="true"]:is(input[type="text"], input[type="email"], input[type="tel"], textarea):focus {
	border-color: var(--ircf-ai-form-erreur);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--ircf-ai-form-erreur) 20%, transparent);
}

.ircf-ai-formulaire__erreur {
	display: flex;
	align-items: flex-start;
	gap: 0.4rem;
	margin: 0.4rem 0 0;
	color: var(--ircf-ai-form-erreur);
	font-size: 0.875rem;
	font-weight: 500;
	line-height: 1.4;
}

.ircf-ai-formulaire__erreur::before {
	content: "";
	flex: none;
	width: 1rem;
	height: 1rem;
	margin-top: 0.1rem;
	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='%23000' stroke-width='1.75' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.5v.01'/%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='%23000' stroke-width='1.75' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.5v.01'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* La case de consentement fautive : son cadre en rouge. */
.ircf-ai-formulaire input[type="checkbox"][aria-invalid="true"] {
	outline: 2px solid var(--ircf-ai-form-erreur);
	outline-offset: 2px;
}

/* Pendant l'envoi : « Envoi en cours… », un indicateur qui tourne, plus de second clic. */
.ircf-ai-formulaire__envoi button.is-envoi {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	cursor: progress;
	pointer-events: none;
	opacity: 0.85;
}

.ircf-ai-formulaire__envoi button.is-envoi::before {
	content: "";
	flex: none;
	width: 1em;
	height: 1em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: ircf-ai-tourne 0.8s linear infinite;
}

@keyframes ircf-ai-tourne {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.ircf-ai-formulaire__envoi button.is-envoi::before {
		animation: none;
		border-right-color: currentColor;
		opacity: 0.6;
	}
}

/* Consentement : la case alignée sur la première ligne, tout le texte cliquable. */
.ircf-ai-formulaire__consentement {
	font-size: 0.9375rem;
	line-height: 1.5;
}

.ircf-ai-formulaire__consentement label {
	display: flex;
	align-items: flex-start;
	gap: 0.65rem;
	cursor: pointer;
}

.ircf-ai-formulaire__consentement input[type="checkbox"] {
	flex: none;
	width: 1.15rem;
	height: 1.15rem;
	margin: 0.15em 0 0;
	accent-color: var(--ircf-ai-form-accent);
	cursor: pointer;
}

/* Le texte et le lien de la politique coulent ensemble : sans cette enveloppe, le lien faisait une colonne étroite à part (« confidentialit / é » sur téléphone). */
.ircf-ai-formulaire__accord {
	flex: 1;
	min-width: 0;
}

.ircf-ai-formulaire__consentement a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.ircf-ai-formulaire__consentement a:hover {
	text-decoration-thickness: 2px;
}

/* Le bouton : couleurs et arrondi des boutons du thème, à la hauteur des champs. */
.ircf-ai-formulaire__envoi button {
	min-height: 3rem;
	padding-block: 0.75rem;
	padding-inline: 1.75rem;
	font-weight: 600;
	cursor: pointer;
	transition: background-color var(--ircf-ai-form-duree) ease, color var(--ircf-ai-form-duree) ease, filter var(--ircf-ai-form-duree) ease, transform var(--ircf-ai-form-duree) ease;
}

.ircf-ai-formulaire__envoi button:hover {
	filter: brightness(0.93);
}

.ircf-ai-formulaire__envoi button:active {
	transform: translateY(1px);
}

.ircf-ai-formulaire__envoi button:disabled,
.ircf-ai-formulaire__envoi button[aria-busy="true"] {
	cursor: not-allowed;
	filter: none;
	opacity: 0.6;
}

.ircf-ai-formulaire__piege {
	height: 1px;
	left: -9999px;
	overflow: hidden;
	position: absolute;
	width: 1px;
}

.ircf-ai-formulaire__avis {
	margin: 0 0 1.25rem;
	padding: 0.85rem 1rem;
	border-left: 4px solid currentColor;
	border-radius: var(--ircf-ai-form-rayon);
}

.ircf-ai-formulaire__avis.is-ok {
	background: color-mix(in srgb, #00a32a 12%, transparent);
}

.ircf-ai-formulaire__avis.is-erreur {
	background: color-mix(in srgb, #d63638 12%, transparent);
}

/* Téléphone : le bouton sur toute la ligne. */
@media (max-width: 600px) {
	.ircf-ai-formulaire__envoi button {
		width: 100%;
	}
}

/* ── Formulaire d'Elementor Pro posé par le plugin ───────────────────── */
/* « body .elementor » : plus précis que les réglages du widget (couleur des bords), pour le survol et le focus. */

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group > .elementor-field-label {
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.4;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group .elementor-field.elementor-field-textual {
	min-height: 48px;
	padding: 12px 16px;
	line-height: 1.4;
	box-shadow: none;
	transition: border-color var(--ircf-ai-form-duree) ease, box-shadow var(--ircf-ai-form-duree) ease;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group textarea.elementor-field {
	min-height: 9rem;
	resize: vertical;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group .elementor-field::placeholder {
	color: #6b7280;
	opacity: 1;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group .elementor-field.elementor-field-textual:hover {
	border-color: #9ca3af;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group .elementor-field.elementor-field-textual:focus {
	border-color: var(--ircf-ai-form-accent);
	box-shadow: 0 0 0 3px var(--ircf-ai-form-halo);
	outline: 2px solid transparent;
	outline-offset: 2px;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group .elementor-field.elementor-field-textual:user-invalid {
	border-color: var(--ircf-ai-form-erreur);
}

/* Un formulaire posé à la racine de sa section (sans grille où le placer) : à la largeur du contenu, pas de la section. */
body .elementor .elementor-widget-form.ircf-ai-formulaire-ep {
	width: 100%;
	max-width: 75rem;
	margin-inline: auto;
}

/* L'astérisque des champs obligatoires, à la couleur d'action. */
body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-mark-required .elementor-field-label::after {
	color: var(--ircf-ai-form-accent);
}

/* Consentement : son libellé « Consentement » répète la case ; la case alignée sur la première ligne du texte, cliquable en entier. */
body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-acceptance > .elementor-field-label {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-acceptance .elementor-field-option {
	display: flex;
	align-items: flex-start;
	gap: 0.65rem;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-acceptance .elementor-field-option input {
	flex: none;
	width: 1.15rem;
	height: 1.15rem;
	margin: 0.15em 0 0;
	accent-color: var(--ircf-ai-form-accent);
	cursor: pointer;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-acceptance .elementor-field-option label {
	font-size: 0.9375rem;
	line-height: 1.5;
	cursor: pointer;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-submit .elementor-button {
	min-height: 48px;
	padding: 12px 28px;
	font-weight: 600;
	transition: background-color var(--ircf-ai-form-duree) ease, filter var(--ircf-ai-form-duree) ease, transform var(--ircf-ai-form-duree) ease;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-submit .elementor-button:hover {
	filter: brightness(0.93);
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-submit .elementor-button:active {
	transform: translateY(1px);
}

/* Pendant l'envoi (Elementor Pro le fait sans recharger) : le bouton grisé, pas de second clic. */
body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-form-waiting .elementor-button {
	opacity: 0.6;
	pointer-events: none;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-message {
	margin-top: 1rem;
	padding: 0.85rem 1rem;
	border-radius: var(--ircf-ai-form-rayon);
	font-size: 0.9375rem;
	line-height: 1.5;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-message-success {
	background: color-mix(in srgb, #00a32a 12%, transparent);
	color: #14532d;
}

body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-message-danger,
body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-group .elementor-message {
	background: color-mix(in srgb, #d63638 10%, transparent);
	color: var(--ircf-ai-form-erreur);
}

/* Moins d'animations quand le visiteur le demande. */
@media (prefers-reduced-motion: reduce) {
	.ircf-ai-formulaire *,
	.elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) * {
		transition: none !important;
	}

	.ircf-ai-formulaire__envoi button:active,
	body .elementor .elementor-widget-form:is(.ircf-ai-formulaire-ep, :has(.elementor-field-group-consentement)) .elementor-field-type-submit .elementor-button:active {
		transform: none;
	}
}

/* En-tête composé pour un thème en blocs (Agent\EntetesBlocs). */
header.wp-block-template-part:has(> .ircf-ai-entete.is-flottant) {
	background-color: transparent;
}

/* Plus précis que « .wp-block-buttons.is-layout-flex » du cœur, qui l'affiche en flex. */
@media (max-width: 600px) {
	.wp-block-buttons.ircf-ai-entete__bouton {
		display: none;
	}
}

.ircf-ai-pied a {
	color: inherit;
}

/*
 * Menus de l'en-tête et du pied composés : 16 px (Cible\Echelle), et non la
 * taille des paragraphes du site (18 px), qui les allongeait. Écrite ici et
 * non dans le bloc : WordPress rendrait la valeur fluide (14 px sur téléphone).
 */
.ircf-ai-entete .wp-block-navigation,
.ircf-ai-pied .wp-block-navigation {
	font-size: 1rem;
}

/*
 * Sous-menus de l'en-tête Elementor composé par le plugin (EntetesElementor,
 * classe du widget « Menu ») : Elementor Pro les fixe à 12em sans retour à
 * la ligne, un libellé long débordait. Ils prennent la largeur du plus long.
 */
.ircf-ai-menu .elementor-nav-menu--main .elementor-nav-menu ul {
	width: auto;
	min-width: 12em;
}

/*
 * Sous-menus de l'en-tête composé sous un thème en blocs (EntetesBlocs) :
 * le bloc Navigation du cœur les dessine en boîte carrée à bordure grise,
 * sans air. Même habillage que l'en-tête Elementor : arrondi du site, ombre,
 * de l'air, survol teinté de la couleur du texte (lisible sur tout fond).
 * Le menu plein écran du téléphone garde sa présentation.
 */
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation-item .wp-block-navigation__submenu-container {
	min-width: 14rem;
	padding: 0.4rem;
	border: 0;
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-flottante);
}

.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.6rem 0.9rem;
	border-radius: calc(var(--ircf-ai-arrondi) * 0.6);
	white-space: nowrap;
}

.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible,
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .current-menu-item > .wp-block-navigation-item__content {
	background-color: color-mix(in srgb, currentColor 8%, transparent);
	text-decoration: none;
}

/*
 * Finitions des en-têtes composés par le plugin (cahier « Amélioration
 * UX/UI des headers générés », lot H1, 6 novembre) : en blocs
 * (.ircf-ai-entete, Agent\EntetesBlocs) et Elementor Pro
 * (.ircf-ai-entete-ep, Agent\EntetesElementor). Menu en 16 px et graisse
 * 500, trait fin sous la page active et au survol, bouton d'action de
 * 44 px sur une ligne, icônes (compte, panier) en cibles de 44 px avec la
 * pastille du panier à la couleur d'action, focus visible, transitions
 * courtes coupées pour qui demande moins d'animations. Les couleurs et
 * l'arrondi restent ceux du site.
 */

/* Menu : graisse 500 ; la page active et le survol soulignés d'un trait de 2 px, en fondu. */
.ircf-ai-entete .wp-block-navigation {
	font-weight: 500;
}

.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	/* Une cible d'au moins 24 px de haut (WCAG 2.5.8) : le lien faisait 22 px, sa ligne de texte (audit des icônes, 6 novembre). */
	padding-block: 0.625rem;
	text-decoration-line: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 0.5em;
	text-decoration-color: transparent;
	transition: text-decoration-color 0.2s ease, color 0.2s ease;
}

.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover,
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:focus-visible {
	text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
}

.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .current-menu-item > .wp-block-navigation-item__content,
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .current-menu-ancestor > .wp-block-navigation-item__content {
	text-decoration-color: var(--ircf-ai-action, currentColor);
}

/* Le menu en burger sous 1024 px, comme l'en-tête Elementor : sur tablette, ses entrées passaient sur deux lignes. */
@media (min-width: 600px) and (max-width: 1024px) {
	.ircf-ai-entete .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.ircf-ai-entete .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
}

/* Menu replié : le burger en dernier, à droite du compte, du panier et du bouton (comme en Elementor). */
@media (max-width: 1024px) {
	.ircf-ai-entete .wp-block-navigation:not(:has(.always-shown)) {
		order: 10;
	}
}

.ircf-ai-entete .wp-block-navigation:has(.wp-block-navigation__responsive-container-open.always-shown) {
	order: 10;
}

/* Le logo : sa taille vient de son format (Cible\Logo::dimensions()) ; sur téléphone, plus petit. */
.ircf-ai-entete .wp-block-site-logo img {
	height: auto;
}

@media (max-width: 600px) {
	.ircf-ai-entete .wp-block-site-logo.ircf-ai-logo--horizontal img {
		max-width: 160px;
	}

	.ircf-ai-entete .wp-block-site-logo.ircf-ai-logo--carre img {
		max-width: 44px;
	}

	.ircf-ai-entete .ircf-ai-entete-centree .wp-block-site-logo.ircf-ai-logo--carre img {
		max-width: 56px;
	}

	.ircf-ai-entete .wp-block-site-logo.ircf-ai-logo--vertical img {
		max-width: 36px;
	}
}

/* Bouton d'action : 44 px de haut, jamais coupé (« Voir la bouti / que »), ni rétréci. */
.ircf-ai-entete__bouton {
	flex-shrink: 0;
}

.ircf-ai-entete__bouton .wp-block-button__link,
.ircf-ai-entete-ep .ircf-ai-entete-bouton .elementor-button {
	white-space: nowrap;
	min-height: 44px;
	transition: background-color 0.2s ease, color 0.2s ease, filter 0.2s ease;
}

.ircf-ai-entete__bouton .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	padding: 0.625rem 1.375rem;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.25;
}

.ircf-ai-entete__bouton .wp-block-button__link:hover {
	filter: brightness(1.08);
}

/* Icônes du compte et du panier : des cibles de 44 px, un survol discret à l'arrondi des boutons. */
.ircf-ai-entete .wc-block-customer-account__link,
.ircf-ai-entete .wc-block-mini-cart__button,
.ircf-ai-entete-ep .ircf-ai-entete-icone .elementor-icon,
.ircf-ai-entete-ep .ircf-ai-entete-icone .elementor-menu-cart__toggle .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-width: 44px;
	min-height: 44px;
	border-radius: var(--ircf-ai-arrondi-bouton, 8px);
	transition: background-color 0.2s ease, color 0.2s ease;
}

.ircf-ai-entete .wc-block-customer-account__link,
.ircf-ai-entete .wc-block-mini-cart__button {
	padding: 10px;
}

.ircf-ai-entete .wc-block-customer-account__link:hover,
.ircf-ai-entete .wc-block-mini-cart__button:hover,
.ircf-ai-entete-ep .ircf-ai-entete-icone .elementor-icon:hover {
	background-color: color-mix(in srgb, currentColor 8%, transparent);
}

/* La pastille du panier en blocs : à la couleur d'action du site (celle d'Elementor est réglée sur le widget). */
.ircf-ai-entete .wc-block-mini-cart__badge {
	background-color: var(--ircf-ai-action, currentColor);
	color: var(--ircf-ai-action-texte, #fff);
	border-color: transparent;
	font-weight: 600;
}

/*
 * Au clic de souris, pas de contour : celui des styles globaux de WordPress
 * (« :where(.wp-site-blocks :focus) », 2 px plein) restait autour d'une
 * entrée du menu cliquée le temps du chargement (« À propos » encadré,
 * capture du 6 novembre). Au clavier, le contour visible ci-dessous reste.
 */
:is(.ircf-ai-entete, .ircf-ai-entete-ep, .ircf-ai-pied, .ircf-ai-section) :focus:not(:focus-visible) {
	outline: none;
}

/* Focus visible au clavier sur tout ce qui se clique dans l'en-tête. */
.ircf-ai-entete a:focus-visible,
.ircf-ai-entete button:focus-visible,
.ircf-ai-entete-ep a:focus-visible,
.ircf-ai-entete-ep button:focus-visible,
.ircf-ai-entete-ep [role="button"]:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
	border-radius: var(--ircf-ai-arrondi-bouton, 6px);
}

.ircf-ai-entete .wp-block-button__link:focus-visible,
.ircf-ai-entete-ep .elementor-button:focus-visible {
	outline-color: var(--ircf-ai-action, currentColor);
}

/* Elementor : les entrées du menu et les icônes changent de couleur en fondu. */
.ircf-ai-entete-ep .elementor-nav-menu--main .elementor-item,
.ircf-ai-entete-ep .ircf-ai-entete-icone .elementor-icon i,
.ircf-ai-entete-ep .ircf-ai-entete-icone .elementor-icon svg {
	transition: color 0.2s ease, fill 0.2s ease;
}


/*
 * En-têtes, lot H2 (6 novembre) : burger de 44 px, panneau du menu mobile
 * habillé (air, page active, sous-menus en retrait, bouton d'action recopié
 * en bas par assets/js/ircf-ai-entete.js, jamais plus haut que l'écran),
 * ombre et légère réduction de la barre au défilement (classe
 * « ircf-ai-defile » sur <html>, posée par le même script), sans saut du
 * contenu. Où l'en-tête colle : EntetesElementor::regle_collante().
 */

/* Burger et croix : des cibles de 44 px, un survol discret. Pas d'affichage ici : le cœur et Elementor les masquent sur grand écran. */
.ircf-ai-entete .wp-block-navigation__responsive-container-open,
.ircf-ai-entete .wp-block-navigation__responsive-container-close,
.ircf-ai-entete-ep .elementor-menu-toggle {
	box-sizing: border-box;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border-radius: var(--ircf-ai-arrondi-bouton, 8px);
	transition: background-color 0.2s ease;
}

.ircf-ai-entete .wp-block-navigation__responsive-container-open:hover,
.ircf-ai-entete .wp-block-navigation__responsive-container-close:hover {
	background-color: color-mix(in srgb, currentColor 8%, transparent);
}

.ircf-ai-entete .wp-block-navigation__responsive-container-open svg,
.ircf-ai-entete .wp-block-navigation__responsive-container-close svg {
	width: 28px;
	height: 28px;
}

/* Le bouton recopié dans le panneau : seulement quand le menu est replié. */
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .ircf-ai-panneau-action {
	display: none;
}

/* Thème en blocs : le panneau plein écran, entrées à gauche, sur toute la largeur. */
.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open {
	padding: 16px 24px 32px;
}

.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	top: 16px;
	right: 16px;
}

.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	align-items: stretch;
	gap: 0;
	padding-top: 64px;
}

.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	align-items: stretch;
	gap: 0;
	width: 100%;
}

.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
	align-items: stretch;
	width: 100%;
	border-bottom: 1px solid color-mix(in srgb, currentColor 12%, transparent);
}

.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	display: block;
	padding: 14px 4px;
	font-size: 1.25rem;
	font-weight: 500;
	text-decoration: none;
}

/* Page active du panneau : à la couleur d'action, plus marquée. */
.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content,
.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .current-menu-ancestor > .wp-block-navigation-item__content {
	color: var(--ircf-ai-action, currentColor);
	font-weight: 600;
}

.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	gap: 0;
	padding: 0 0 8px 16px;
}

.ircf-ai-entete .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 10px 4px;
	font-size: 1rem;
}

/* Bouton d'action en bas du panneau : sur toute la largeur. */
.ircf-ai-entete .is-menu-open .ircf-ai-panneau-action {
	order: 99;
	width: 100%;
	margin-top: 28px;
}

.ircf-ai-panneau-action .wp-block-button__link,
.ircf-ai-panneau-action .elementor-button {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 48px;
	white-space: normal;
	text-align: center;
}

/* Elementor Pro : le panneau déroulé sous la barre, avec de l'air et une ombre, jamais plus haut que l'écran. */
.ircf-ai-entete-ep .elementor-nav-menu--dropdown.elementor-nav-menu__container {
	box-sizing: border-box;
	max-height: calc(100dvh - 64px);
	overflow-y: auto;
	overscroll-behavior: contain;
	box-shadow: 0 16px 32px -16px rgba(0, 0, 0, 0.25);
}

.ircf-ai-entete-ep .elementor-menu-toggle.elementor-active + .elementor-nav-menu--dropdown.elementor-nav-menu__container {
	padding: 8px 16px 20px;
}

.ircf-ai-entete-ep .elementor-nav-menu--dropdown .elementor-item,
.ircf-ai-entete-ep .elementor-nav-menu--dropdown .elementor-sub-item {
	border-radius: calc(var(--ircf-ai-arrondi-bouton, 8px) * 0.6);
}

.ircf-ai-entete-ep .elementor-nav-menu--dropdown .elementor-item.elementor-item-active {
	font-weight: 600;
}

.ircf-ai-entete-ep .elementor-nav-menu--dropdown .sub-menu .elementor-sub-item {
	padding-inline-start: 32px;
}

.ircf-ai-entete-ep .elementor-nav-menu--dropdown .ircf-ai-panneau-action {
	margin-top: 16px;
}

.ircf-ai-entete-ep .elementor-nav-menu--dropdown .ircf-ai-panneau-action .elementor-button-wrapper {
	width: 100%;
}

/*
 * Au défilement : une ombre et une barre un peu plus basse. Elementor Pro
 * colle l'en-tête en position fixe derrière un espaceur à sa hauteur : la
 * page ne bouge pas. En blocs, l'en-tête colle dans le flux : ce qu'il perd
 * en hauteur, il le rend en marge basse, en même temps.
 */
.ircf-ai-entete-ep > .e-con,
.ircf-ai-entete-ep .elementor-widget-theme-site-logo img {
	transition: min-height 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.ircf-ai-entete-ep.e-con {
	transition: box-shadow 0.2s ease;
}

.ircf-ai-defile .ircf-ai-entete-ep.elementor-sticky--active.e-con:not(.is-flottant) {
	box-shadow: 0 8px 24px -12px rgba(0, 0, 0, 0.25);
}

.ircf-ai-defile .ircf-ai-entete-ep.elementor-sticky--active > .e-con {
	--min-height: 64px;
}

.ircf-ai-defile .ircf-ai-entete-ep.is-flottant.elementor-sticky--active > .e-con {
	box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.3);
}

.ircf-ai-defile .ircf-ai-entete-ep.elementor-sticky--active:not(:has(.ircf-ai-entete-centree)) .elementor-widget-theme-site-logo img {
	transform: scale(0.86);
	transform-origin: left center;
}

header.wp-block-template-part:has(> .ircf-ai-entete:not(.is-flottant)) {
	transition: margin-bottom 0.2s ease;
}

/*
 * Téléphone : l'en-tête collant se cache quand on descend et revient dès
 * qu'on remonte (classe « ircf-ai-cache » de assets/js/ircf-ai-entete.js ;
 * choix de l'opérateur, 6 novembre). Une transformée : la page ne bouge pas.
 */
@media (max-width: 767px) {
	header.wp-block-template-part:has(> .ircf-ai-entete),
	.ircf-ai-entete-ep.elementor-sticky--active {
		transition: transform 0.25s ease, margin-bottom 0.2s ease, box-shadow 0.2s ease;
	}

	.ircf-ai-cache header.wp-block-template-part:has(> .ircf-ai-entete),
	.ircf-ai-cache .ircf-ai-entete-ep.elementor-sticky--active {
		transform: translateY(calc(-100% - 24px));
	}
}

.ircf-ai-entete:not(.is-flottant) {
	transition: padding 0.2s ease, box-shadow 0.2s ease;
}

.ircf-ai-defile header.wp-block-template-part:has(> .ircf-ai-entete:not(.is-flottant)) {
	margin-bottom: 16px;
}

.ircf-ai-defile .ircf-ai-entete:not(.is-flottant) {
	padding-top: 4px !important;
	padding-bottom: 4px !important;
	box-shadow: 0 8px 24px -12px rgba(0, 0, 0, 0.25);
}

.ircf-ai-defile .ircf-ai-entete.is-flottant > .wp-block-group {
	box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.3);
}

/*
 * En-têtes, lot H3 (6 novembre), revu après les captures de l'opérateur :
 * un en-tête pensé comme une composition, pas une suite de réglages.
 *
 * - Un seul jeu d'icônes, dessiné au trait par le plugin (22 px, même
 *   épaisseur) : recherche, compte, panier, téléphone, à la place de celles
 *   de Font Awesome, d'Elementor Pro et de WooCommerce (qui se mélangeaient,
 *   et le compte montrait l'avatar de l'utilisateur connecté).
 * - Les icônes en un groupe serré (.ircf-ai-entete__icones), puis le bouton
 *   d'action, seul élément plein ; un filet discret entre le menu et les
 *   icônes quand le menu est affiché.
 * - Sur téléphone, la barre ne garde que le logo, le panier et le burger :
 *   recherche, compte et bouton passent dans le panneau du menu
 *   (assets/js/ircf-ai-entete.js).
 * - Composition centrée (CompositionEntete) sur deux étages séparés d'un
 *   filet : recherche (ou téléphone) à gauche, logo au milieu, icônes et
 *   bouton à droite ; menu centré dessous. Sur tablette et téléphone, logo
 *   à gauche, actions puis burger. Une grille, en blocs (la barre) comme
 *   avec Elementor (le conteneur intérieur de la rangée).
 */
:root {
	--ircf-ai-ico-recherche: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M16 16l4.5 4.5'/%3E%3C/svg%3E");
	--ircf-ai-ico-compte: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='3.75'/%3E%3Cpath d='M4.5 20.25c.9-3.6 3.9-5.75 7.5-5.75s6.6 2.15 7.5 5.75'/%3E%3C/svg%3E");
	--ircf-ai-ico-panier: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 8h13l-1 12.25h-11z'/%3E%3Cpath d='M9 10.5V7a3 3 0 0 1 6 0v3.5'/%3E%3C/svg%3E");
	--ircf-ai-ico-telephone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.6 3.75h2.8l1.4 4.2-2.1 1.4a11 11 0 0 0 5.95 5.95l1.4-2.1 4.2 1.4v2.8a1.85 1.85 0 0 1-2 1.85A15.4 15.4 0 0 1 4.75 5.75a1.85 1.85 0 0 1 1.85-2z'/%3E%3C/svg%3E");
	--ircf-ai-ico-adresse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-6.75-6.2-6.75-11.25a6.75 6.75 0 0 1 13.5 0C18.75 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.75' r='2.5'/%3E%3C/svg%3E");
	--ircf-ai-ico-courriel: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5.5' width='17' height='13' rx='2'/%3E%3Cpath d='M4 7l8 6 8-6'/%3E%3C/svg%3E");
	--ircf-ai-ico-horaires: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cpath d='M12 7.5V12l3 2'/%3E%3C/svg%3E");
	--ircf-ai-ico-coche: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 12.5l4.75 4.75L19.5 7'/%3E%3C/svg%3E");
}

/* Les dessins d'origine masqués ; le trait du plugin à leur place, à la couleur du texte. */
.ircf-ai-entete .ircf-ai-ico-compte .wc-block-customer-account__link > *,
.ircf-ai-entete .ircf-ai-ico-panier .wc-block-mini-cart__icon,
.ircf-ai-entete .ircf-ai-ico-recherche .wp-block-search__button svg,
.ircf-ai-entete-ep .ircf-ai-ico-compte .elementor-icon > *,
.ircf-ai-entete-ep .ircf-ai-ico-panier .elementor-button-icon > :not(.elementor-button-icon-qty):not(.elementor-screen-only),
.ircf-ai-entete-ep .ircf-ai-ico-panier .elementor-button-text,
.ircf-ai-entete-ep .ircf-ai-ico-recherche .elementor-search-form__toggle > * {
	display: none !important;
}

.ircf-ai-entete .ircf-ai-ico-compte .wc-block-customer-account__link::before,
.ircf-ai-entete .ircf-ai-ico-panier .wc-block-mini-cart__quantity-badge::before,
.ircf-ai-entete .ircf-ai-ico-recherche .wp-block-search__button::before,
.ircf-ai-entete-ep .ircf-ai-ico-compte .elementor-icon::before,
.ircf-ai-entete-ep .ircf-ai-ico-panier .elementor-button-icon::before,
.ircf-ai-entete-ep .ircf-ai-ico-recherche .elementor-search-form__toggle::before,
.ircf-ai-entete__contact a::before {
	content: "";
	display: block;
	flex: none;
	width: 22px;
	height: 22px;
	background-color: currentColor;
	-webkit-mask: var(--ircf-ai-ico) center / contain no-repeat;
	mask: var(--ircf-ai-ico) center / contain no-repeat;
}

.ircf-ai-ico-compte {
	--ircf-ai-ico: var(--ircf-ai-ico-compte);
}

.ircf-ai-ico-panier {
	--ircf-ai-ico: var(--ircf-ai-ico-panier);
}

.ircf-ai-ico-recherche {
	--ircf-ai-ico: var(--ircf-ai-ico-recherche);
}

.ircf-ai-entete__contact {
	--ircf-ai-ico: var(--ircf-ai-ico-telephone);
}

/*
 * Coordonnées du pied (et du bandeau Elementor) : le même jeu au trait que
 * l'en-tête, à la couleur du texte (audit des icônes, lot I2). Sous
 * Elementor, l'icône Font Awesome de la ligne reste dans le HTML, masquée :
 * elle dit laquelle dessiner. Une marque sobre n'en a pas (Pipeline\Eclat).
 */
.ircf-ai-coordonnees .elementor-icon-list-icon {
	display: none !important;
}

.ircf-ai-coordonnees .elementor-icon-list-item:has(.elementor-icon-list-icon) .elementor-icon-list-text::before,
.ircf-ai-coordonnee::before {
	content: "";
	display: inline-block;
	flex: none;
	width: 1.1em;
	height: 1.1em;
	margin-inline-end: 0.6em;
	vertical-align: -0.2em;
	background-color: currentColor;
	opacity: 0.8;
	-webkit-mask: var(--ircf-ai-ico) center / contain no-repeat;
	mask: var(--ircf-ai-ico) center / contain no-repeat;
}

.ircf-ai-coordonnees .elementor-icon-list-item:has(:is(.e-fas-phone, .e-fas-phone-alt, .fa-phone, .fa-phone-alt)),
.ircf-ai-coordonnee.ircf-ai-ico-telephone {
	--ircf-ai-ico: var(--ircf-ai-ico-telephone);
}

.ircf-ai-coordonnees .elementor-icon-list-item:has(:is(.e-fas-envelope, .e-far-envelope, .fa-envelope)),
.ircf-ai-coordonnee.ircf-ai-ico-courriel {
	--ircf-ai-ico: var(--ircf-ai-ico-courriel);
}

.ircf-ai-coordonnees .elementor-icon-list-item:has(:is(.e-fas-map-marker-alt, .fa-map-marker-alt)),
.ircf-ai-coordonnee.ircf-ai-ico-adresse {
	--ircf-ai-ico: var(--ircf-ai-ico-adresse);
}

.ircf-ai-coordonnees .elementor-icon-list-item:has(:is(.e-far-clock, .e-fas-clock, .fa-clock)),
.ircf-ai-coordonnee.ircf-ai-ico-horaires {
	--ircf-ai-ico: var(--ircf-ai-ico-horaires);
}

/*
 * Liste « coches » (audit des icônes, lot I3) : points forts, réassurance.
 * Une vraie liste, la coche du jeu au trait dessinée devant chaque élément,
 * décorative (rien à lire), à la couleur du texte. Gutenberg : style de bloc
 * « Coches » du bloc Liste ; Elementor : paragraphe V4 marqué par le plugin
 * (Cible\Pictos, SortieElementor::CLASSE_COCHES).
 */
:is(ul.is-style-ircf-coches, .ircf-ai-coches ul) {
	padding-inline-start: 0;
	list-style: none;
}

:is(ul.is-style-ircf-coches, .ircf-ai-coches ul) > li {
	position: relative;
	padding-inline-start: 1.85em;
}

:is(ul.is-style-ircf-coches, .ircf-ai-coches ul) > li + li {
	margin-top: 0.6em;
}

:is(ul.is-style-ircf-coches, .ircf-ai-coches ul) > li::before {
	content: "";
	position: absolute;
	inset-inline-start: 0;
	top: 0.2em;
	width: 1.15em;
	height: 1.15em;
	background-color: currentColor;
	-webkit-mask: var(--ircf-ai-ico-coche) center / contain no-repeat;
	mask: var(--ircf-ai-ico-coche) center / contain no-repeat;
}

/* La date et l'auteur d'un article, en texte seul, comme sous Gutenberg (les modèles d'avant gardaient deux icônes). */
.ircf-ai-blog__date .elementor-icon-list-icon {
	display: none !important;
}

/* Elementor : la loupe dans une cible de 44 px, à la couleur réglée sur le widget. */
.ircf-ai-entete-ep .ircf-ai-ico-recherche .elementor-search-form__toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	color: var(--e-search-form-toggle-color, currentColor);
	border-radius: var(--ircf-ai-arrondi-bouton, 8px);
	transition: background-color 0.2s ease, color 0.2s ease;
}

.ircf-ai-entete-ep .ircf-ai-ico-recherche .elementor-search-form__toggle:hover {
	background-color: color-mix(in srgb, currentColor 8%, transparent);
}

/* Le panier : l'icône et sa pastille, ni montant ni cadre ; la pastille au coin de l'icône. */
.ircf-ai-entete-ep .ircf-ai-ico-panier .elementor-button-icon,
.ircf-ai-entete .ircf-ai-ico-panier .wc-block-mini-cart__quantity-badge {
	position: relative;
	display: inline-flex;
}

.ircf-ai-entete-ep .ircf-ai-ico-panier .elementor-menu-cart__toggle .elementor-button {
	border: 0;
	background: transparent;
	gap: 0;
}

.ircf-ai-entete-ep .ircf-ai-ico-panier .elementor-button-icon-qty,
.ircf-ai-entete .ircf-ai-ico-panier .wc-block-mini-cart__badge {
	top: -6px;
	right: -8px;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	font-size: 11px;
	line-height: 18px;
	font-weight: 600;
}

.ircf-ai-entete .ircf-ai-ico-panier .wc-block-mini-cart__badge {
	position: absolute;
	left: auto;
	transform: none;
}

.ircf-ai-entete .ircf-ai-ico-panier .wc-block-mini-cart__amount {
	display: none;
}

/* Un groupe serré d'icônes ; un filet discret le sépare du menu quand celui-ci est affiché. */
.ircf-ai-entete__icones {
	flex-shrink: 0;
}

/* Elementor : un conteneur enfant prend toute la largeur par défaut ; ces groupes, celle de leur contenu. */
.ircf-ai-entete-ep .e-con.ircf-ai-entete__icones,
.ircf-ai-entete-ep .e-con.ircf-ai-entete__actions,
.ircf-ai-entete-ep .e-con.ircf-ai-entete__gauche {
	--width: auto;
	width: auto;
	flex: 0 0 auto;
}

@media (min-width: 1025px) {
	.ircf-ai-entete-ep .e-con-inner:has(> .elementor-widget-nav-menu .elementor-nav-menu--main) > .ircf-ai-entete__icones,
	.ircf-ai-entete .ircf-ai-entete__droite:not(:has(.always-shown)) > .ircf-ai-entete__icones {
		padding-left: 16px;
		border-left: 1px solid color-mix(in srgb, currentColor 14%, transparent);
	}
}

/* Le téléphone, à gauche d'un en-tête centré sans recherche. */
.ircf-ai-entete .ircf-ai-entete__contact {
	margin: 0;
}

.ircf-ai-entete__contact a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	color: inherit;
	font-size: 15px;
	font-weight: 500;
	text-decoration: none;
	white-space: nowrap;
}

.ircf-ai-entete__contact a::before {
	width: 18px;
	height: 18px;
}

.ircf-ai-entete__contact a:hover {
	text-decoration: underline;
	text-underline-offset: 0.3em;
}

/* Téléphone : le logo, le panier et le burger seulement ; le reste est dans le panneau du menu. */
@media (max-width: 767px) {
	.ircf-ai-entete .ircf-ai-ico-recherche,
	.ircf-ai-entete .ircf-ai-ico-compte,
	.ircf-ai-entete .ircf-ai-entete__gauche,
	.ircf-ai-entete-ep .ircf-ai-ico-recherche,
	.ircf-ai-entete-ep .ircf-ai-ico-compte,
	.ircf-ai-entete-ep .ircf-ai-entete__gauche,
	.ircf-ai-entete .ircf-ai-entete__bouton {
		display: none !important;
	}
}

/* Composition centrée. */
.ircf-ai-entete .ircf-ai-entete-centree,
.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	/* L'étage du logo grandit avec lui (Logo::HAUTEURS_CENTRE : un logo carré de 72 px). */
	grid-template-rows: minmax(64px, auto) auto;
	grid-template-areas:
		"gauche logo actions"
		"menu menu menu";
	align-items: center;
	column-gap: 24px;
	row-gap: 0;
	transition: grid-template-rows 0.2s ease;
}

.ircf-ai-entete .ircf-ai-entete-centree > *,
.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > * {
	min-width: 0;
	margin: 0;
}

.ircf-ai-entete .ircf-ai-entete-centree > :first-child,
.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > :first-child {
	grid-area: logo;
	justify-self: center;
}

.ircf-ai-entete .ircf-ai-entete-centree .wp-block-site-logo img {
	max-width: 100%;
}

.ircf-ai-entete .ircf-ai-entete-centree > .ircf-ai-entete__gauche,
.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > .ircf-ai-entete__gauche {
	grid-area: gauche;
	justify-self: start;
	width: auto;
}

.ircf-ai-entete .ircf-ai-entete-centree > .ircf-ai-entete__actions,
.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > .ircf-ai-entete__actions {
	grid-area: actions;
	justify-self: end;
	width: auto;
}

/* Le menu : le second étage, sous un filet sur toute la largeur du contenu. */
.ircf-ai-entete .ircf-ai-entete-centree > .wp-block-navigation,
.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > .elementor-widget-nav-menu {
	grid-area: menu;
	justify-self: stretch;
	justify-content: center;
	min-height: 44px;
	border-top: 1px solid color-mix(in srgb, currentColor 10%, transparent);
}

.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > .elementor-widget-nav-menu {
	display: flex;
	align-items: center;
	justify-content: center;
}

/* Défilé : le logo d'un en-tête centré se réduit (une transformée : la page ne bouge pas), le menu reste. */
.ircf-ai-entete .ircf-ai-entete-centree > :first-child,
.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > :first-child {
	transition: transform 0.2s ease;
}

@media (min-width: 1025px) {
	.ircf-ai-defile .ircf-ai-entete .ircf-ai-entete-centree > :first-child,
	.ircf-ai-defile .ircf-ai-entete-ep.elementor-sticky--active .ircf-ai-entete-centree > .e-con-inner > :first-child {
		transform: scale(0.8);
	}
}

/* Menu replié : logo à gauche, actions, burger, sur une ligne. */
@media (max-width: 1024px) {
	.ircf-ai-entete .ircf-ai-entete-centree,
	.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner {
		grid-template-columns: minmax(0, 1fr) auto auto;
		grid-template-rows: auto;
		grid-template-areas: "logo actions menu";
		column-gap: 8px;
	}

	.ircf-ai-entete .ircf-ai-entete-centree > :first-child,
	.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > :first-child {
		justify-self: start;
	}

	.ircf-ai-entete .ircf-ai-entete-centree > .ircf-ai-entete__gauche,
	.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > .ircf-ai-entete__gauche {
		display: none !important;
	}

	.ircf-ai-entete .ircf-ai-entete-centree > .wp-block-navigation,
	.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > .elementor-widget-nav-menu {
		justify-self: end;
		min-height: 0;
		border-top: 0;
	}

	/* Elementor Pro place son panneau pleine largeur d'après la position du widget, que la grille fausse : il est accroché à la rangée entière. */
	.ircf-ai-entete-ep .ircf-ai-entete-centree.e-con {
		position: relative;
	}

	.ircf-ai-entete-ep .ircf-ai-entete-centree > .e-con-inner > .elementor-widget-nav-menu {
		position: static;
	}

	.ircf-ai-entete-ep .ircf-ai-entete-centree .elementor-nav-menu--dropdown.elementor-nav-menu__container {
		top: 100% !important;
		left: 0 !important;
		width: 100% !important;
	}
}

/* Recherche en blocs : le champ déplié en petit panneau sous l'icône, jamais par-dessus le logo ou le menu. */
.ircf-ai-entete .ircf-ai-entete__recherche .wp-block-search__button {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0;
	border: 0;
	border-radius: var(--ircf-ai-arrondi-bouton, 8px);
	background: transparent;
	color: inherit;
}

.ircf-ai-entete .ircf-ai-entete__recherche .wp-block-search__button:hover {
	background-color: color-mix(in srgb, currentColor 8%, transparent);
}

.ircf-ai-entete .ircf-ai-entete__recherche .wp-block-search__inside-wrapper {
	position: relative;
	border: 0;
	padding: 0;
}

.ircf-ai-entete .ircf-ai-entete__recherche:not(.wp-block-search__searchfield-hidden) .wp-block-search__input {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	z-index: 20;
	box-sizing: border-box;
	width: min(320px, calc(100vw - 32px)) !important;
	min-height: 48px;
	padding: 0 16px;
	border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
	border-radius: var(--ircf-ai-arrondi-bouton, 8px);
	background-color: var(--wp--preset--color--base, #fff);
	box-shadow: var(--ircf-ai-ombre-flottante);
}

/* À droite de la barre (classique, flottante), le panneau s'ouvre vers la gauche. */
.ircf-ai-entete .ircf-ai-entete__icones .ircf-ai-entete__recherche:not(.wp-block-search__searchfield-hidden) .wp-block-search__input {
	right: 0;
	left: auto;
}

/* Panneau du menu : la recherche en haut, le compte en bas (assets/js/ircf-ai-entete.js). */
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .ircf-ai-panneau-recherche,
.ircf-ai-entete .wp-block-navigation__responsive-container:not(.is-menu-open) .ircf-ai-panneau-compte {
	display: none;
}

.ircf-ai-panneau-recherche {
	box-sizing: border-box;
	width: 100%;
	margin: 0 0 16px;
	order: -1;
}

.ircf-ai-panneau-recherche input[type="search"] {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	padding: 0 16px;
	border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
	border-radius: var(--ircf-ai-arrondi-bouton, 8px);
	background: var(--wp--preset--color--base, #fff);
	color: inherit;
	font: inherit;
	font-size: 16px;
}

.ircf-ai-panneau-compte {
	order: 100;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	margin-top: 12px;
	color: inherit;
	font-weight: 500;
	text-decoration: none;
	--ircf-ai-ico: var(--ircf-ai-ico-compte);
}

.ircf-ai-panneau-compte::before {
	content: "";
	width: 22px;
	height: 22px;
	background-color: currentColor;
	-webkit-mask: var(--ircf-ai-ico) center / contain no-repeat;
	mask: var(--ircf-ai-ico) center / contain no-repeat;
}

.ircf-ai-entete-ep .elementor-nav-menu--dropdown .ircf-ai-panneau-recherche {
	margin-bottom: 8px;
}

.ircf-ai-entete-ep .elementor-nav-menu--dropdown .ircf-ai-panneau-compte {
	padding: 0 18px;
	font-size: 16px;
}

/* Tablette : le bouton, le compte et la recherche restent dans la barre ; le panneau n'en fait pas de copie. */
@media (min-width: 768px) {
	.ircf-ai-panneau-action,
	.ircf-ai-panneau-compte,
	.ircf-ai-panneau-recherche {
		display: none !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ircf-ai-entete *,
	.ircf-ai-entete-ep *,
	.ircf-ai-entete-ep .elementor-item::after,
	.ircf-ai-entete-ep.e-con,
	.ircf-ai-entete:not(.is-flottant),
	header.wp-block-template-part:has(> .ircf-ai-entete),
	.ircf-ai-entete-ep.elementor-sticky--active {
		transition: none !important;
	}
}

/*
 * Blog mis en forme par le plugin (Agent\GabaritsBlog) : thème en blocs
 * (modèles du thème, classes ircf-ai-blog__…), Elementor Pro (modèles du
 * Theme Builder, classe ircf-ai-blog sur leurs conteneurs) et thème classique
 * sans Elementor Pro (classe ircf-ai-blog sur le corps de la page, balisage
 * de Hello Elementor). Les couleurs restent celles du site.
 */

/* « Derniers articles » de l'accueil (Cible\DerniersArticles) : masqués tant que le site n'a publié aucun article. */
.ircf-ai-sans-articles .ircf-ai-derniers-articles {
	display: none !important;
}

/*
 * Commentaires d'un article sous un thème classique (Hello Elementor) : liens
 * à la couleur principale du kit d'Elementor, bouton à sa couleur d'action
 * (Cible\Elementor\Couleurs::action(), posée par Rendu::styles()), plus au
 * rose du thème (capture du 4 novembre). Modèles Elementor Pro (conteneurs
 * .ircf-ai-blog) et feuille seule (corps .ircf-ai-blog).
 */
.ircf-ai-blog .comment-respond a,
.ircf-ai-blog .comment-list a {
	color: var(--e-global-color-primary, currentColor);
}

.ircf-ai-blog .comment-form [type="submit"] {
	padding: 0.75em 1.5em;
	font-weight: 600;
	color: var(--ircf-ai-action-texte, #fff);
	background-color: var(--ircf-ai-action, var(--e-global-color-primary, #111));
	border: 1px solid var(--ircf-ai-action, var(--e-global-color-primary, #111));
	border-radius: var(--ircf-ai-arrondi-bouton, 4px);
	cursor: pointer;
}

.ircf-ai-blog .comment-form [type="submit"]:hover,
.ircf-ai-blog .comment-form [type="submit"]:focus-visible {
	filter: brightness(0.9);
}

/* Thème en blocs : les cartes d'articles. */
.ircf-ai-blog__carte {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	background-color: var(--wp--preset--color--base, #fff);
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-douce);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.ircf-ai-blog__carte:hover,
.ircf-ai-blog__carte:focus-within {
	box-shadow: var(--ircf-ai-ombre-flottante);
	transform: translateY(-4px);
}

.ircf-ai-blog__carte .wp-block-post-featured-image {
	margin: 0;
}

.ircf-ai-blog__carte .wp-block-post-featured-image img {
	border-radius: 0;
}

.ircf-ai-blog__corps {
	flex: 1;
	padding: var(--wp--preset--spacing--40, 1.25rem) var(--wp--preset--spacing--40, 1.25rem) var(--wp--preset--spacing--50, 1.5rem);
}

.ircf-ai-blog__corps .wp-block-post-title {
	font-size: 1.375rem;
	line-height: 1.25;
	margin: 0;
}

.ircf-ai-blog__corps .wp-block-post-title a,
.ircf-ai-blog__navigation a {
	color: inherit;
	text-decoration: none;
}

.ircf-ai-blog__corps .wp-block-post-title a:hover,
.ircf-ai-blog__navigation a:hover {
	text-decoration: underline;
}

.ircf-ai-blog__corps .wp-block-post-excerpt {
	margin: 0;
	font-size: 1rem;
	line-height: 1.6;
}

.ircf-ai-blog__corps .wp-block-post-excerpt__excerpt {
	margin: 0;
}

/* La catégorie en petite étiquette, la date et l'auteur discrets : 14 px au moins (Cible\Echelle). */
.ircf-ai-blog__categorie,
.ircf-ai-blog__categorie a {
	font-size: 0.875rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
}

.ircf-ai-blog__date,
.ircf-ai-blog__date a {
	font-size: 0.875rem;
	opacity: 0.75;
}

.ircf-ai-blog__lire {
	margin-top: auto;
	font-weight: 600;
	text-decoration: none;
}

/* La flèche décorative, muette pour un lecteur d'écran (texte de remplacement vide ; ignoré là où il n'est pas compris). */
.ircf-ai-blog__lire::after {
	content: " →";
	content: " →" / "";
}

.ircf-ai-blog__image img,
.ircf-ai-blog .wp-block-post-featured-image.alignwide img {
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-flottante);
}

.ircf-ai-blog__navigation {
	gap: var(--wp--preset--spacing--40, 1.25rem);
	padding-top: var(--wp--preset--spacing--40, 1.25rem);
	border-top: 1px solid color-mix(in srgb, currentColor 15%, transparent);
}

.ircf-ai-blog__suite,
.ircf-ai-blog__bandeau {
	background-color: color-mix(in srgb, var(--wp--preset--color--contrast, #111) 4%, var(--wp--preset--color--base, #fff));
}

.ircf-ai-blog .wp-block-query-pagination a,
.ircf-ai-blog .wp-block-query-pagination .page-numbers {
	display: inline-block;
	min-width: 2.5rem;
	padding: 0.4rem 0.75rem;
	border-radius: calc(var(--ircf-ai-arrondi) * 0.6);
	text-align: center;
	text-decoration: none;
}

.ircf-ai-blog .wp-block-query-pagination .page-numbers.current {
	background-color: var(--wp--preset--color--contrast, #111);
	color: var(--wp--preset--color--base, #fff);
}

.ircf-ai-blog__recherche .wp-block-search__input,
.ircf-ai-blog__recherche .wp-block-search__button {
	border-radius: calc(var(--ircf-ai-arrondi) * 0.6);
}

/* Elementor Pro : cartes de l'archive et des derniers articles, largeur de lecture. */
/* Plus précis que les règles qu'Elementor écrit pour chaque widget (rayon de 3 px). */
body .ircf-ai-blog .elementor-widget .elementor-posts-container .elementor-post__card {
	overflow: hidden;
	border: 0;
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-douce);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

body .ircf-ai-blog .elementor-widget .elementor-posts-container .elementor-post__card:hover,
body .ircf-ai-blog .elementor-widget .elementor-posts-container .elementor-post__card:focus-within {
	box-shadow: var(--ircf-ai-ombre-flottante);
	transform: translateY(-4px);
}

.ircf-ai-blog .elementor-post__badge {
	background-color: var(--e-global-color-accent, #111);
	border-radius: 999px;
	font-size: 0.875rem;
}

.ircf-ai-blog .elementor-post__title {
	font-size: 1.375rem;
	line-height: 1.25;
}

.ircf-ai-blog .elementor-post__title a {
	color: inherit;
}

.ircf-ai-blog .elementor-post__meta-data,
.ircf-ai-blog .elementor-post__read-more {
	font-size: 0.875rem;
}

.ircf-ai-blog .elementor-post__read-more {
	font-weight: 600;
}

.ircf-ai-blog__image img {
	width: 100%;
	max-height: 32rem;
	object-fit: cover;
}

.ircf-ai-blog .elementor-pagination {
	margin-top: 2.5rem;
}

/* Thème classique sans Elementor Pro (Hello Elementor) : la feuille habille son rendu. */
body.ircf-ai-blog .site-main {
	max-width: 1200px;
	margin-inline: auto;
	padding: 3rem 1.25rem 4rem;
}

body.ircf-ai-blog.single .site-main,
body.ircf-ai-blog.error404 .site-main {
	max-width: 45rem;
}

body.ircf-ai-blog:not(.single) .site-main > .page-content {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
	gap: 2rem;
}

body.ircf-ai-blog:not(.single) .site-main article.post {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	margin: 0;
	background-color: #fff;
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-douce);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

body.ircf-ai-blog:not(.single) .site-main article.post:hover {
	box-shadow: var(--ircf-ai-ombre-flottante);
	transform: translateY(-4px);
}

body.ircf-ai-blog:not(.single) .site-main article.post > a {
	order: -1;
}

body.ircf-ai-blog:not(.single) .site-main article.post img {
	display: block;
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

body.ircf-ai-blog:not(.single) .site-main article.post > .entry-title,
body.ircf-ai-blog:not(.single) .site-main article.post > p {
	margin: 0;
	padding: 0 1.25rem;
}

body.ircf-ai-blog:not(.single) .site-main article.post > .entry-title {
	padding-top: 1.25rem;
	font-size: 1.375rem;
	line-height: 1.25;
}

/* L'extrait de Hello Elementor est long : quatre lignes. */
body.ircf-ai-blog:not(.single) .site-main article.post > p {
	display: -webkit-box;
	overflow: hidden;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 4;
	line-clamp: 4;
	box-sizing: content-box;
	max-height: 4lh;
	margin-bottom: 1.5rem;
	padding-bottom: 0;
	line-height: 1.5;
}

body.ircf-ai-blog .site-main .entry-title a {
	color: inherit;
	text-decoration: none;
}

body.ircf-ai-blog .site-main .pagination {
	display: flex;
	justify-content: space-between;
	margin-top: 2.5rem;
}

body.ircf-ai-blog.single .site-main .wp-post-image,
body.ircf-ai-blog.single .site-main .page-content img {
	border-radius: var(--ircf-ai-arrondi);
}

/*
 * Boutique mise en forme par le plugin (Agent\GabaritsBoutique) : classe
 * ircf-ai-boutique sur le corps des pages de WooCommerce (catalogue,
 * produit, panier, commande, compte), suivie du mode (--blocs, --elementor,
 * --feuille). Thème en blocs : modèles du plugin (classes
 * ircf-ai-boutique__…), boutons du thème. Thème classique : balisage de
 * WooCommerce, boutons à la couleur d'action du kit (Rendu::styles()).
 */

/* Thème en blocs : les cartes de produits, comme celles du blog. */
.ircf-ai-boutique__carte {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	background-color: var(--wp--preset--color--base, #fff);
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-douce);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.ircf-ai-boutique__carte:hover,
.ircf-ai-boutique__carte:focus-within {
	box-shadow: var(--ircf-ai-ombre-flottante);
	transform: translateY(-4px);
}

.ircf-ai-boutique__carte .wc-block-components-product-image,
.ircf-ai-boutique__carte .wc-block-components-product-image img {
	margin: 0;
	border-radius: 0;
}

.ircf-ai-boutique__corps {
	flex: 1;
	padding: var(--wp--preset--spacing--40, 1.25rem) var(--wp--preset--spacing--40, 1.25rem) var(--wp--preset--spacing--50, 1.5rem);
}

.ircf-ai-boutique__corps .wp-block-post-title {
	margin: 0;
	font-size: 1.25rem;
	line-height: 1.3;
}

.ircf-ai-boutique__corps .wp-block-post-title a {
	color: inherit;
	text-decoration: none;
}

.ircf-ai-boutique__corps .wp-block-post-title a:hover {
	text-decoration: underline;
}

.ircf-ai-boutique__corps .wc-block-components-product-price {
	font-weight: 600;
}

/* Le bouton en bas de la carte, quelle que soit la longueur du nom. */
.ircf-ai-boutique__corps .ircf-ai-boutique__acheter {
	margin-top: auto;
}

.ircf-ai-boutique__outils {
	font-size: 0.875rem;
}

.ircf-ai-boutique__resume .ircf-ai-boutique__prix {
	font-size: 1.5rem;
	font-weight: 600;
}

.ircf-ai-boutique__meta {
	font-size: 0.875rem;
}

.ircf-ai-boutique__galerie img,
.ircf-ai-boutique .woocommerce-product-gallery img {
	border-radius: var(--ircf-ai-arrondi);
}

/* Thème classique (Elementor Pro, feuille seule) : les cartes de WooCommerce. */
:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background-color: #fff;
	border-radius: var(--ircf-ai-arrondi);
	box-shadow: var(--ircf-ai-ombre-douce);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product:hover,
:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product:focus-within {
	box-shadow: var(--ircf-ai-ombre-flottante);
	transform: translateY(-4px);
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product a img {
	margin: 0 0 1rem;
	border-radius: 0;
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product .woocommerce-loop-product__title,
:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product .price {
	padding-inline: 1.25rem;
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product .woocommerce-loop-product__title {
	font-size: 1.125rem;
	line-height: 1.3;
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product .price {
	font-weight: 600;
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product .button {
	align-self: flex-start;
	margin: auto 1.25rem 1.25rem;
}

/* Boutons de WooCommerce sous un thème classique : couleur d'action du kit, forme des boutons du site. */
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .woocommerce .button,
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .woocommerce button.button,
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .woocommerce a.button,
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .wc-block-components-button:not(.is-link),
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .wc-block-cart__submit-button,
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .wc-block-components-checkout-place-order-button {
	color: var(--ircf-ai-action-texte, #fff);
	background-color: var(--ircf-ai-action, var(--e-global-color-primary, #111));
	border-color: var(--ircf-ai-action, var(--e-global-color-primary, #111));
	border-radius: var(--ircf-ai-arrondi-bouton, 4px);
}

body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .woocommerce .button:hover,
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .wc-block-components-button:not(.is-link):hover {
	color: var(--ircf-ai-action-texte, #fff);
	background-color: var(--ircf-ai-action, var(--e-global-color-primary, #111));
	filter: brightness(0.9);
}

/* Prix et liens lisibles sous un thème classique (l'olive et le violet de WooCommerce). */
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) div.product p.price,
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) div.product span.price {
	color: #111827;
	font-weight: 600;
}

/* Panier, commande, compte : cadres arrondis, champs à la forme du site. */
body.ircf-ai-boutique .wc-block-components-sidebar .wc-block-components-totals-wrapper,
body.ircf-ai-boutique .wp-block-woocommerce-cart-order-summary-block,
body.ircf-ai-boutique .wp-block-woocommerce-checkout-order-summary-block {
	border-radius: var(--ircf-ai-arrondi);
}

body.ircf-ai-boutique .wc-block-components-text-input input,
body.ircf-ai-boutique .wc-blocks-components-select__select,
body.ircf-ai-boutique .woocommerce form .input-text {
	border-radius: calc(var(--ircf-ai-arrondi) * 0.5);
}

/* Compte client sous un thème classique : le menu du compte en liste de liens. */
body.ircf-ai-boutique .woocommerce-MyAccount-navigation ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

body.ircf-ai-boutique .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 0.6rem 0.9rem;
	border-radius: calc(var(--ircf-ai-arrondi) * 0.5);
	color: inherit;
	text-decoration: none;
}

body.ircf-ai-boutique .woocommerce-MyAccount-navigation li.is-active a,
body.ircf-ai-boutique .woocommerce-MyAccount-navigation li a:hover {
	background-color: color-mix(in srgb, currentColor 8%, transparent);
}

/*
 * Panier, commande et compte sous un thème classique (Elementor Pro ou
 * feuille seule) : pages ordinaires du thème. À la largeur de la boutique,
 * titre dans le bandeau gris du catalogue, contenu aligné dessous (titre
 * collé à l'en-tête et décalé du panier, captures du 5 novembre).
 */
body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs):is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .site-main {
	max-width: 1200px;
	margin-inline: auto;
	padding: 2.5rem 0 4rem;
}

body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs):is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .site-main > .page-header {
	margin: 0 0 2.5rem;
	padding: 2.5rem 1.5rem 1.5rem;
	background-color: color-mix(in srgb, #111 4%, #fff);
}

body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs):is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .site-main > .page-header .entry-title {
	margin: 0;
	line-height: 1.2;
}

body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs):is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .site-main > .page-content {
	padding-inline: 1.5rem;
}

body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) .site-main .page-content > .alignwide {
	max-width: none;
	margin-inline: 0;
}

/* Boutons-liens des blocs de WooCommerce (« Valider la commande ») : jamais soulignés. */
body.ircf-ai-boutique a.wc-block-components-button,
body.ircf-ai-boutique a.wc-block-cart__submit-button,
body.ircf-ai-boutique .wc-block-components-button__text {
	text-decoration: none;
}

/* Menus de tri du catalogue : à la forme des champs du site (celui du navigateur sinon). */
.ircf-ai-boutique .woocommerce-ordering select,
.ircf-ai-boutique .wc-block-catalog-sorting select {
	min-height: 2.5rem;
	padding: 0.45rem 2rem 0.45rem 0.875rem;
	border: 1px solid #d1d5db;
	border-radius: calc(var(--ircf-ai-arrondi) * 0.5);
	background-color: #fff;
	color: inherit;
	font-size: 0.9375rem;
}

.ircf-ai-boutique__outils {
	align-items: center;
}

/* Pagination du catalogue en blocs : comme celle du blog. */
.ircf-ai-boutique .wp-block-query-pagination {
	gap: 0.5rem;
	margin-top: var(--wp--preset--spacing--50, 2rem);
	font-size: 1rem;
}

.ircf-ai-boutique .wp-block-query-pagination a,
.ircf-ai-boutique .wp-block-query-pagination .page-numbers {
	display: inline-block;
	min-width: 2.5rem;
	padding: 0.45rem 0.8rem;
	border: 1px solid #e5e7eb;
	border-radius: calc(var(--ircf-ai-arrondi) * 0.6);
	color: inherit;
	text-align: center;
	text-decoration: none;
}

.ircf-ai-boutique .wp-block-query-pagination .page-numbers.current {
	border-color: var(--wp--preset--color--contrast, #111);
	background-color: var(--wp--preset--color--contrast, #111);
	color: var(--wp--preset--color--base, #fff);
}

/* Pagination de WooCommerce sous un thème classique sans réglage d'Elementor : la même. */
body.ircf-ai-boutique--feuille .woocommerce nav.woocommerce-pagination ul {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	border: 0;
}

body.ircf-ai-boutique--feuille .woocommerce nav.woocommerce-pagination ul li {
	border: 0;
}

body.ircf-ai-boutique--feuille .woocommerce nav.woocommerce-pagination ul li :is(a, span) {
	min-width: 2.5rem;
	padding: 0.45rem 0.8rem;
	border: 1px solid #e5e7eb;
	border-radius: calc(var(--ircf-ai-arrondi) * 0.6);
}

body.ircf-ai-boutique--feuille .woocommerce nav.woocommerce-pagination ul li span.current {
	border-color: var(--ircf-ai-action, #111);
	background-color: var(--ircf-ai-action, #111);
	color: var(--ircf-ai-action-texte, #fff);
}

/* Fiche produit : l'onglet « Description » ne répète pas son titre ; quantité lisible à côté du bouton. */
body.ircf-ai-boutique .woocommerce-Tabs-panel > h2:first-child {
	display: none;
}

body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) form.cart:not(.variations_form),
body.ircf-ai-boutique .variations_form .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: stretch;
}

body.ircf-ai-boutique:not(.ircf-ai-boutique--blocs) form.cart .quantity .qty {
	width: 4.5em;
	height: 100%;
	min-height: 2.75rem;
	padding: 0.5rem;
	border: 1px solid #d1d5db;
	border-radius: var(--ircf-ai-arrondi-bouton, 4px);
	text-align: center;
}

/*
 * Fiche produit, les deux sorties (capture de Patron Patate, 6 novembre) :
 * le prix mis en avant, le choix d'une variante en champs du site plutôt
 * qu'en tableau gris (lignes grisées du thème Hello, libellé à gauche), le
 * prix de la variante foncé (pas l'olive de WooCommerce), la quantité et le
 * bouton à 48 px, à l'arrondi des boutons du site (3 px de WooCommerce).
 */
body.ircf-ai-boutique :is(.ircf-ai-boutique__prix .price, .ircf-ai-boutique__prix .wc-block-components-product-price, div.product .summary > p.price) {
	margin: 0;
	color: #111827;
	font-size: clamp(1.5rem, 1.25rem + 0.8vw, 1.875rem);
	font-weight: 700;
	line-height: 1.2;
	font-variant-numeric: tabular-nums;
}

body.ircf-ai-boutique :is(.ircf-ai-boutique__prix, div.product .summary, .woocommerce-variation-price) del {
	color: #6b7280;
	font-size: 0.7em;
	font-weight: 400;
	opacity: 1;
}

body.ircf-ai-boutique :is(.ircf-ai-boutique__prix, div.product .summary, .woocommerce-variation-price) ins {
	text-decoration: none;
}

body.ircf-ai-boutique form.variations_form table.variations {
	display: block;
	width: 100%;
	margin: 0 0 1.25rem;
	border: 0;
	background: none;
}

body.ircf-ai-boutique form.variations_form table.variations tbody {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

body.ircf-ai-boutique form.variations_form table.variations tr {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
	border: 0;
	background: none;
}

body.ircf-ai-boutique form.variations_form table.variations :is(th, td) {
	display: block;
	width: auto;
	padding: 0;
	border: 0;
	background: none;
	text-align: start;
	line-height: 1.4;
}

body.ircf-ai-boutique form.variations_form table.variations th.label label {
	margin: 0;
	color: #111827;
	font-size: 0.9375rem;
	font-weight: 600;
}

body.ircf-ai-boutique form.variations_form table.variations select {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	min-height: 48px;
	margin: 0;
	padding: 0.625rem 2.75rem 0.625rem 1rem;
	border: 1px solid #d1d5db;
	border-radius: var(--ircf-ai-arrondi-bouton, 4px);
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E") no-repeat right 1rem center / 1rem;
	color: #111827;
	font: inherit;
	font-size: 1rem;
	line-height: 1.4;
	cursor: pointer;
	appearance: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

body.ircf-ai-boutique form.variations_form table.variations select:hover {
	border-color: #9ca3af;
}

body.ircf-ai-boutique form.variations_form table.variations select:focus {
	border-color: var(--ircf-ai-action, #111);
	outline: none;
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--ircf-ai-action, #111) 25%, transparent);
}

/* « Effacer » : un lien lisible, à sa place même caché (pas de saut). */
body.ircf-ai-boutique form.variations_form .reset_variations {
	display: inline-block;
	margin-top: 0.5rem;
	color: #4b5563;
	font-size: 0.875rem;
	text-decoration: underline;
	text-underline-offset: 2px;
}

body.ircf-ai-boutique form.variations_form .reset_variations:hover {
	color: #111827;
}

body.ircf-ai-boutique form.variations_form .woocommerce-variation:not(:empty) {
	margin-bottom: 1rem;
}

body.ircf-ai-boutique form.variations_form .woocommerce-variation-price .price {
	color: #111827;
	font-size: 1.375rem;
	font-weight: 700;
	line-height: 1.2;
}

body.ircf-ai-boutique form.variations_form .woocommerce-variation-availability p {
	margin: 0.25rem 0 0;
	font-size: 0.9375rem;
}

/* « Ce produit n'est pas disponible… » : un encadré discret, pas une alerte. */
body.ircf-ai-boutique form.variations_form .wc-no-matching-variations {
	margin: 0 0 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid #e5e7eb;
	border-radius: var(--ircf-ai-arrondi-bouton, 4px);
	background: #f9fafb;
	color: #374151;
	font-size: 0.9375rem;
}

body.ircf-ai-boutique form.variations_form .wc-no-matching-variations::before {
	display: none;
}

body.ircf-ai-boutique :is(form.cart, .wc-block-add-to-cart-form) .quantity .qty {
	box-sizing: border-box;
	width: 4.5em;
	height: 48px;
	min-height: 48px;
	border: 1px solid #d1d5db;
	border-radius: var(--ircf-ai-arrondi-bouton, 4px);
	text-align: center;
}

body.ircf-ai-boutique :is(form.cart, .wc-block-add-to-cart-form) :is(button, a).single_add_to_cart_button.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	margin: 0;
	margin-inline: 0;
	padding: 0.75rem 1.75rem;
	border-radius: var(--ircf-ai-arrondi-bouton, 4px);
	font-size: 1rem;
	line-height: 1.2;
}

/* L'écart quantité / bouton d'Elementor Pro (10 px par défaut) s'ajoutait à celui de la ligne. */
body.ircf-ai-boutique .elementor-widget-woocommerce-product-add-to-cart {
	--button-spacing: 0px;
}

@media (max-width: 767px) {
	body.ircf-ai-boutique :is(form.cart, .wc-block-add-to-cart-form) :is(button, a).single_add_to_cart_button.button {
		flex: 1;
	}
}

/* Cartes sans photo : l'image grise de WooCommerce, plus discrète. */
:is(.ircf-ai-boutique__carte, ul.products li.product) img[src*="woocommerce-placeholder"] {
	box-sizing: border-box;
	object-fit: contain;
	padding: 18%;
	background-color: #f3f4f6;
	opacity: 0.7;
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product a img {
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/*
 * « Voir le panier » ajouté par WooCommerce sous le bouton d'une carte après
 * l'ajout : un lien collé au bord, hors des marges de la carte (capture du
 * 5 novembre). Le bouton porte déjà une coche (ou « 1 dans le panier ») et
 * l'en-tête le panier avec son nombre d'articles.
 */
:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) :is(ul.products li.product, .ircf-ai-boutique__carte, .wc-block-product) a.added_to_cart {
	display: none;
}

/*
 * Pastille « Promo » : une pilule à la couleur d'action du site, dans le coin
 * de l'image, au lieu du rond olive de WooCommerce décalé hors de la carte
 * (rogné par son arrondi, texte plus large que le rond : capture du
 * 5 novembre).
 */
/* « .onsale.onsale » : plus précis que la grille d'Elementor Pro, qui lui ôte sa marge intérieure. */
:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product span.onsale.onsale,
body.ircf-ai-boutique div.product span.onsale.onsale,
.ircf-ai-boutique__carte .wc-block-components-product-image .wc-block-components-product-sale-badge {
	width: auto;
	height: auto;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0.35em 0.9em;
	border: 0;
	border-radius: 999px;
	background-color: var(--ircf-ai-action, var(--wp--preset--color--contrast, #111827));
	color: var(--ircf-ai-action-texte, var(--wp--preset--color--base, #fff));
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.4;
	white-space: nowrap;
	text-transform: none;
	box-shadow: 0 2px 6px rgb(0 0 0 / 0.15);
}

:is(body.ircf-ai-boutique, .ircf-ai-nos-produits) ul.products li.product span.onsale.onsale,
.ircf-ai-boutique__carte .wc-block-components-product-image .wc-block-components-product-sale-badge {
	position: absolute;
	top: 12px;
	right: 12px;
	left: auto;
	z-index: 2;
}

body.ircf-ai-boutique div.product span.onsale.onsale {
	top: 16px;
	left: 16px;
	z-index: 2;
}

/* Téléphone : une carte par ligne (deux colonnes de 150 px coupaient le bouton « Ajouter au panier »). */
@media (max-width: 559px) {
	:is(.ircf-ai-boutique, .ircf-ai-nos-produits) .wc-block-product-template.wc-block-product-template__responsive {
		grid-template-columns: 1fr;
	}
}

/* Menu du compte client : entrées resserrées (80 px d'écart sous un thème en blocs), entrée active marquée. */
body.ircf-ai-boutique .woocommerce-MyAccount-navigation ul {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

body.ircf-ai-boutique .woocommerce-MyAccount-navigation ul li {
	margin: 0;
	padding: 0;
	border: 0;
}

body.ircf-ai-boutique .woocommerce-MyAccount-navigation li.is-active a {
	box-shadow: inset 3px 0 0 var(--ircf-ai-action, var(--wp--preset--color--contrast, currentColor));
	font-weight: 600;
}

/* Panier latéral d'un thème en blocs : un titre à la taille d'un H3, pas d'un H1. */
.wc-block-mini-cart__drawer .wc-block-mini-cart__title {
	font-size: clamp(1.375rem, 1.2rem + 0.6vw, 1.75rem);
	line-height: 1.25;
}

/* Feuille seule (thème classique sans Elementor Pro) : la boutique à la largeur du site. */
body.ircf-ai-boutique--feuille .site-main {
	max-width: 1200px;
	margin-inline: auto;
	padding: 2.5rem 1.25rem 4rem;
}

/* « Nos produits » de l'accueil (Cible\ProduitsAccueil) : masqués tant qu'aucun produit n'est publié. */
.ircf-ai-sans-produits .ircf-ai-nos-produits {
	display: none !important;
}

/* Boutique en « Bientôt disponible » pour le visiteur (Agent\EtatBoutique) : le panier de l'en-tête mènerait à cette page. */
.ircf-ai-boutique-fermee .wp-block-woocommerce-mini-cart,
.ircf-ai-boutique-fermee .elementor-widget-woocommerce-menu-cart {
	display: none !important;
}
