/* =========================================================================
   Fly Blocks — design premium par tokens (mobile-first). Fonts système.
   Les tokens --zude-* sont injectés depuis les réglages ; ces valeurs
   servent de repli si le CSS inline ne charge pas.
   ========================================================================= */

:root {
	--zude-primary: #12302a;
	--zude-primary-dark: #0d211c;
	--zude-accent: #a8d64b;
	--zude-bg: #ffffff;
	--zude-surface: #ffffff;
	/* v1.6.3 — Tuile d'image des cartes : blanc cassé chaud (fini le gris-vert).
	   Assez clair pour que les photos produit à FOND BLANC se fondent sans bande
	   visible (règle Jon D1), tout en gardant un cartouche discret. */
	--zude-tile: #fbfaf7;
	/* v1.6.3 — accents crème (D3 : chaleur / whitespace) pour les fonds de section
	   (essentiel, onglets, guide). Distinct de la tuile image (qui reste ~blanc). */
	--zude-cream: #f7f1e6;
	--zude-cream-soft: #faf6ee;
	--zude-text: #1a1f1c;
	--zude-muted: #5f6b63;
	--zude-star: #f0a830;
	--zude-radius: 14px;
	--zude-shadow: 0 6px 24px rgba(20, 30, 26, .10);
	--zude-shadow-lg: 0 14px 40px rgba(20, 30, 26, .16);
	--zude-border: rgba(20, 30, 26, .08);
	/* Police MODERNE SANS SERIF (« sans patte », exigence Jon) — aligne le contenu du
	   plugin sur la police locale du thème (Manrope, hébergée en woff2 = RGPD-safe),
	   repli Inter puis système. JAMAIS de serif sur le contenu rendu par le plugin. */
	--zude-font: "Manrope", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--zude-font-title: "Manrope", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	/* v2.0.0 (règle Jon 2026-07-25) — POLICE DU CORPS DE TEXTE (rédactionnel) :
	   pile SYSTÈME pro, moderne et neutre — Inter si présente sur la machine du
	   visiteur, sinon la meilleure sans-serif de son OS. AUCUN téléchargement
	   externe (zéro CDN, zéro @font-face distant). Les TITRES gardent
	   --zude-font-title (inchangé). Appliquée en fin de feuille à tout ce qui
	   se LIT : prose d'avis, corps versus, collections, articles. */
	--zude-font-texte: "Inter", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	/* --------------------------------------------------------------------- *
	 * v1.7.7 — COUCHE SÉMANTIQUE (re-skin par la config de la niche).
	 * Les composants n'utilisent QUE ces tokens : changer --zude-primary /
	 * --zude-accent dans les réglages re-skinne tout le corps d'avis. Les
	 * teintes pâles et ombres colorées sont DÉRIVÉES des tokens (color-mix),
	 * jamais figées en dur. --zude-negative / --zude-warn portent une valeur
	 * par défaut (négatif = terracotta doux, alerte = ambre) surchargeable
	 * par la config d'une niche qui voudrait d'autres sémantiques.
	 * --------------------------------------------------------------------- */
	--zude-ink: var(--zude-text);                 /* Alias sémantique du texte principal. */
	--zude-positive: var(--zude-primary);         /* Coches / « pour qui » = couleur de marque profonde. */
	--zude-negative: #c1543a;                     /* Terracotta doux — négatif, JAMAIS rouge criard. */
	--zude-warn: #cf9223;                          /* Ambre — encadré « limites à connaître ». */
	--zude-reading: 72ch;                          /* Colonne de lecture du rédactionnel (P0). */
}

.fly {
	font-family: var(--zude-font);
	color: var(--zude-text);
	box-sizing: border-box;
	line-height: 1.5;
}
.fly *,
.fly *::before,
.fly *::after { box-sizing: border-box; }

/* Titres du plugin : police MODERNE SANS SERIF (« sans patte »). Sans cette règle,
   les h1/h2/h3 héritent parfois d'un serif imposé par le thème (ex. « .entry-content h2 »).
   On ne touche jamais aux titres HORS .fly (ça, c'est le thème / le design du site). */
.fly h1, .fly h2, .fly h3, .fly h4,
.fly .zude-title,
.zude-avis__name, .zude-avis__h,
.zude-col-chapeau, .zude-col-section__title,
.zude-onglets__title, .zude-onglets__tab, .zude-onglets__summary,
.zude-verdict__title, .zude-collection__facets-title {
	font-family: var(--zude-font-title, var(--zude-font));
	letter-spacing: -.01em;
}

.fly .zude-title {
	font-size: 1.15rem;
	font-weight: 700;
	margin: .2em 0 .35em;
	color: var(--zude-text);
	line-height: 1.25;
}

/* ---------- Étoiles ---------- */
.zude-stars {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	vertical-align: middle;
}
.zude-star { display: block; }
.zude-stars-val {
	margin-left: 6px;
	font-weight: 700;
	font-size: .9rem;
	color: var(--zude-muted);
}

/* ---------- Images ---------- */
.zude-img {
	max-width: 100%;
	height: auto;
	display: block;
	border-radius: calc(var(--zude-radius) - 6px);
}
.zude-img--placeholder {
	aspect-ratio: 4 / 3;
	width: 100%;
	background: linear-gradient(135deg, #eef0ec, #f6f7f4);
}

/* ---------- Boutons pill ---------- */
.zude-btns {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 14px;
}
.zude-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 12px 20px;
	border-radius: 999px;
	font-weight: 700;
	font-size: .95rem;
	text-decoration: none;
	line-height: 1;
	cursor: pointer;
	transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
	border: 1.5px solid transparent;
}
.zude-btn .zude-arrow { transition: transform .15s ease; }
.zude-btn:hover .zude-arrow { transform: translateX(3px); }

.zude-btn--primary {
	background: var(--zude-primary);
	color: #fff;
	box-shadow: var(--zude-shadow);
}
.zude-btn--primary:hover {
	background: var(--zude-primary-dark);
	color: #fff;
	transform: translateY(-1px);
	box-shadow: var(--zude-shadow-lg);
}
.zude-btn--ghost {
	background: transparent;
	color: var(--zude-primary);
	border-color: var(--zude-border);
}
.zude-btn--ghost:hover {
	background: rgba(0, 0, 0, .03);
	color: var(--zude-primary-dark);
}

/* ---------- Prix ---------- */
.zude-price-lead {
	margin: 8px 0 0;
	font-size: 1.05rem;
	color: var(--zude-text);
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 6px;
}
.zude-price-lead__from {
	font-size: .82rem;
	color: var(--zude-muted);
	font-weight: 600;
}
.zude-price-lead__val {
	font-size: 1.35rem;
	font-weight: 800;
	color: var(--zude-primary);
	line-height: 1;
}
.zude-price-date {
	font-size: .72rem;
	color: var(--zude-muted);
	font-weight: 500;
	cursor: help;
	border-bottom: 1px dotted var(--zude-muted);
}
.zude-btn__price {
	font-weight: 800;
	white-space: nowrap;
	letter-spacing: .01em;
}
/* v1.7.6 — séparateur discret entre le libellé et le montant du CTA d'achat. */
.zude-btn__sep {
	flex: 0 0 auto;
	width: 1px;
	align-self: stretch;
	min-height: 1.05em;
	margin: 0 -1px;
	background: currentColor;
	opacity: .3;
	border-radius: 1px;
}
.zude-price-disclaimer {
	margin: 12px 0 0;
	font-size: .72rem;
	line-height: 1.4;
	color: var(--zude-muted);
	font-style: italic;
}
.zude-table__price {
	font-weight: 800;
	color: var(--zude-primary);
	font-size: 1.02rem;
}

/* ---------- Idéal pour ---------- */
.zude-ideal {
	margin: 8px 0 0;
	font-size: .92rem;
	color: var(--zude-muted);
}
.zude-ideal__lbl {
	font-weight: 700;
	color: var(--zude-text);
}

/* ---------- Pour / Contre ---------- */
.zude-proscons {
	display: grid;
	grid-template-columns: 1fr;
	gap: 14px;
	margin-top: 16px;
}
@media (min-width: 560px) {
	.zude-proscons { grid-template-columns: 1fr 1fr; }
}
/* v1.7.7 — teinte tokenisée : lime pâle (pros) / terracotta pâle (cons), pastilles. */
.zude-pros, .zude-cons {
	border-radius: 12px;
	padding: 16px 18px;
	border: 1px solid var(--zude-border);
}
.zude-pros {
	background: color-mix(in srgb, var(--zude-accent) 9%, var(--zude-surface));
	border-color: color-mix(in srgb, var(--zude-accent) 30%, transparent);
}
.zude-cons {
	background: color-mix(in srgb, var(--zude-negative) 7%, var(--zude-surface));
	border-color: color-mix(in srgb, var(--zude-negative) 24%, transparent);
}
.zude-pc-title {
	font-weight: 700;
	font-size: .75rem;
	text-transform: uppercase;
	letter-spacing: .05em;
	margin-bottom: 10px;
}
.zude-pros .zude-pc-title { color: color-mix(in srgb, var(--zude-primary) 82%, #000); }
.zude-cons .zude-pc-title { color: var(--zude-negative); }
.zude-proscons ul { list-style: none; margin: 0; padding: 0; }
.zude-proscons li {
	position: relative;
	padding-left: 28px;
	margin-bottom: 8px;
	font-size: .95rem;
	line-height: 1.5;
}
.zude-proscons li:last-child { margin-bottom: 0; }
.zude-pros li::before,
.zude-cons li::before {
	position: absolute; left: 0; top: .12em;
	display: inline-flex; align-items: center; justify-content: center;
	width: 19px; height: 19px;
	border-radius: 50%;
	font-size: .68rem; font-weight: 800; line-height: 1;
}
.zude-pros li::before {
	content: "✓";
	color: var(--zude-surface);
	background: var(--zude-positive);
}
.zude-cons li::before {
	content: "✕";
	color: var(--zude-surface);
	background: var(--zude-negative);
}

/* ---------- [fly_box] ---------- */
.zude-box {
	display: grid;
	grid-template-columns: 1fr;
	gap: 20px;
	background: var(--zude-surface);
	border-radius: var(--zude-radius);
	padding: 20px;
	box-shadow: var(--zude-shadow);
	border: 1px solid var(--zude-border);
	margin: 24px 0;
}
@media (min-width: 640px) {
	.zude-box { grid-template-columns: 250px 1fr; align-items: start; }
}
.zude-box__media { display: flex; justify-content: center; }
.zude-box__media .zude-img { border-radius: calc(var(--zude-radius) - 4px); }

/* ---------- [fly_podium] ---------- */
.zude-podium {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
	margin: 24px 0;
}
@media (min-width: 720px) {
	.zude-podium { grid-template-columns: repeat(3, 1fr); align-items: end; }
}
.zude-pod {
	background: var(--zude-surface);
	border-radius: var(--zude-radius);
	padding: 18px;
	box-shadow: var(--zude-shadow);
	border: 1px solid var(--zude-border);
	text-align: center;
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
}
@media (min-width: 720px) {
	.zude-pod--1 { transform: translateY(-14px); border-color: var(--zude-accent); box-shadow: var(--zude-shadow-lg); }
}
.zude-pod__badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--zude-primary);
	color: #fff;
	border-radius: 999px;
	padding: 6px 14px;
	font-weight: 700;
	font-size: .82rem;
	margin-bottom: 12px;
}
.zude-pod--1 .zude-pod__badge { background: var(--zude-accent); color: #2a2410; }
.zude-medal { font-size: 1.05rem; line-height: 1; }
.zude-pod__media { margin-bottom: 8px; }
.zude-pod .zude-stars { justify-content: center; }
.zude-pod .zude-btns { justify-content: center; }

/* ---------- [fly_carousel] ---------- */
.zude-carousel { margin: 24px 0; position: relative; }
.zude-carousel__track {
	display: flex;
	gap: 16px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	padding: 6px 2px 16px;
	scrollbar-width: thin;
}
.zude-carousel__item {
	scroll-snap-align: start;
	flex: 0 0 82%;
	max-width: 300px;
	background: var(--zude-surface);
	border-radius: var(--zude-radius);
	padding: 16px;
	box-shadow: var(--zude-shadow);
	border: 1px solid var(--zude-border);
	display: flex;
	flex-direction: column;
}
@media (min-width: 640px) { .zude-carousel__item { flex-basis: 46%; } }
@media (min-width: 960px) { .zude-carousel__item { flex-basis: 30%; } }
.zude-carousel__media { display: flex; justify-content: center; margin-bottom: 8px; }
.zude-carousel__item .zude-btns { margin-top: auto; }

/* ---------- [fly_table] ---------- */
.zude-table-wrap {
	margin: 24px 0;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border-radius: var(--zude-radius);
	border: 1px solid var(--zude-border);
	box-shadow: var(--zude-shadow);
}
.zude-table {
	width: 100%;
	min-width: 520px;
	border-collapse: collapse;
	background: var(--zude-surface);
}
.zude-table th, .zude-table td {
	padding: 12px 14px;
	text-align: center;
	border-bottom: 1px solid var(--zude-border);
	font-size: .92rem;
	vertical-align: middle;
}
.zude-table thead th { background: var(--zude-primary); color: #fff; }
.zude-table__rowhead {
	text-align: left !important;
	font-weight: 700;
	background: rgba(0, 0, 0, .02);
	position: sticky;
	left: 0;
	z-index: 1;
}
.zude-table thead .zude-table__rowhead { background: var(--zude-primary-dark); }
.zude-table__prod {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
}
.zude-table__prod .zude-img { width: 64px; border-radius: 8px; }
.zude-table__prod span { color: #fff; font-weight: 700; font-size: .85rem; }
.zude-table .zude-btns { justify-content: center; }
.zude-table .zude-dash { color: var(--zude-muted); }

/* ---------- [fly_sticky] ---------- */
.zude-sticky {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 9999;
	background: var(--zude-surface);
	box-shadow: 0 -6px 24px rgba(20, 30, 26, .14);
	border-top: 1px solid var(--zude-border);
	transform: translateY(120%);
	/* v1.7.9 — `bottom` animé aussi : la sticky se décale au-dessus du bandeau
	   cookies quand il est présent (offset posé en JS), puis redescend au consentement. */
	transition: transform .28s cubic-bezier(.22, .61, .36, 1), bottom .25s ease;
	padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
}
.zude-sticky.is-visible { transform: translateY(0); }
.zude-sticky__inner {
	max-width: 900px;
	margin: 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}
.zude-sticky__name {
	font-weight: 700;
	font-size: .95rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.zude-sticky .zude-btn { white-space: nowrap; flex: 0 0 auto; }
@media (max-width: 480px) {
	.zude-sticky__name { display: none; }
	.zude-sticky .zude-btn { width: 100%; }
}

/* ---------- [fly_verdict] ---------- */
.zude-verdict {
	margin: 24px 0;
	background: var(--zude-surface);
	border-radius: var(--zude-radius);
	border: 1px solid var(--zude-border);
	border-left: 5px solid var(--zude-accent);
	box-shadow: var(--zude-shadow);
	padding: 18px 20px;
}
.zude-verdict__head {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 8px;
	flex-wrap: wrap;
}
.zude-verdict__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px; height: 26px;
	border-radius: 50%;
	background: var(--zude-accent);
	color: #2a2410;
	font-weight: 800;
	font-size: .9rem;
}
.zude-verdict__title { font-weight: 800; font-size: 1.05rem; }
.zude-verdict__stars { margin-left: auto; }
.zude-verdict__body { color: var(--zude-text); }
.zude-verdict__body p:last-child { margin-bottom: 0; }

/* ---------- Accessibilité / motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.zude-btn, .zude-btn .zude-arrow, .zude-sticky { transition: none; }
}
.zude-btn:focus-visible,
.fly a:focus-visible {
	outline: 3px solid var(--zude-accent);
	outline-offset: 2px;
}

/* =========================================================================
   v1.2.0 — promo honnête, grille, liste de prix, bouton seul, box verticale
   ========================================================================= */

/* ---------- Promo honnête (prix barré médian + badge) ---------- */
.zude-price-lead__old {
	font-size: .95rem;
	color: var(--zude-muted);
	text-decoration: line-through;
	text-decoration-color: rgba(180, 85, 61, .8);
	font-weight: 600;
}
.zude-badge-promo {
	display: inline-flex;
	align-items: center;
	background: #b4553d;
	color: #fff;
	font-weight: 800;
	font-size: .74rem;
	line-height: 1;
	padding: 4px 8px;
	border-radius: 999px;
	letter-spacing: .01em;
	white-space: nowrap;
}
.zude-price-lead--promo .zude-price-lead__val { color: #b4553d; }

/* ---------- [fly_box format="vertical"] ---------- */
.zude-box--vertical {
	grid-template-columns: 1fr;
	max-width: 340px;
	padding: 16px;
	gap: 12px;
}
@media (min-width: 640px) {
	.zude-box--vertical { grid-template-columns: 1fr; align-items: stretch; }
}
.zude-box--vertical .zude-box__media { justify-content: center; }
.zude-box--vertical .zude-box__media .zude-img { max-width: 220px; }
.zude-box--vertical .zude-title { font-size: 1.05rem; }

/* ---------- [fly_grille] / [fly_promo] ---------- */
.zude-grille {
	display: grid;
	gap: 16px;
	margin: 24px 0;
	grid-template-columns: repeat(var(--zude-grille-cols-mobile, 2), minmax(0, 1fr));
}
@media (max-width: 400px) {
	.zude-grille { grid-template-columns: 1fr; }
}
@media (min-width: 700px) {
	.zude-grille { grid-template-columns: repeat(var(--zude-grille-cols, 3), minmax(0, 1fr)); }
}
.zude-grille__item {
	background: var(--zude-surface);
	border-radius: var(--zude-radius);
	padding: 14px;
	box-shadow: var(--zude-shadow);
	border: 1px solid var(--zude-border);
	display: flex;
	flex-direction: column;
}
.zude-grille__media { display: block; margin-bottom: 8px; }
.zude-grille__media .zude-img { width: 100%; }
.zude-grille__title { font-size: 1rem; }
.zude-grille__item .zude-stars { margin-top: 2px; }
.zude-grille__item .zude-btns { margin-top: auto; }
.zude-grille__item .zude-btn { width: 100%; }

/* ---------- v1.6.1 : CTA de carte « Voir notre avis » (jamais marchand) ---------- */
.zude-title__link {
	color: inherit;
	text-decoration: none;
}
.zude-title__link:hover,
.zude-title__link:focus-visible { color: var(--zude-primary); }

.zude-card-cta {
	margin-top: auto;
	padding-top: 12px;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 8px;
}
.zude-card-cta .zude-btn--avis { width: 100%; }
.zude-card-cta__price {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 6px;
	font-size: 1rem;
	color: var(--zude-text);
}
.zude-card-cta__from {
	font-size: .8rem;
	color: var(--zude-muted);
	font-weight: 600;
}
.zude-card-cta__val {
	font-size: 1.2rem;
	font-weight: 800;
	color: var(--zude-primary);
	line-height: 1;
}
.zude-card-cta__price--promo .zude-card-cta__val { color: #b4553d; }
.zude-carousel__item .zude-card-cta { align-items: center; text-align: center; }

/* ---------- v1.6.1 : bloc caractéristiques de la fiche produit ---------- */
.zude-specs { margin: 28px 0; }
.zude-specs__title { font-size: 1.25rem; margin: 0 0 12px; }
.zude-specs__table {
	width: 100%;
	border-collapse: collapse;
	font-size: .95rem;
}
.zude-specs__table th,
.zude-specs__table td {
	padding: 10px 12px;
	border-bottom: 1px solid var(--zude-border);
	text-align: left;
	vertical-align: top;
}
.zude-specs__table th {
	width: 40%;
	font-weight: 700;
	color: var(--zude-text);
	background: var(--zude-surface);
}

/* ---------- [fly_prix] (liste de prix marchands) ---------- */
.zude-prix {
	margin: 24px 0;
	background: var(--zude-surface);
	border-radius: var(--zude-radius);
	border: 1px solid var(--zude-border);
	box-shadow: var(--zude-shadow);
	overflow: hidden;
}
.zude-prix__row {
	display: grid;
	grid-template-columns: 1fr auto;
	grid-template-areas:
		"merchant price"
		"cta cta";
	gap: 8px 14px;
	align-items: center;
	padding: 14px 16px;
	border-bottom: 1px solid var(--zude-border);
}
.zude-prix__row:last-child { border-bottom: 0; }
.zude-prix__row.is-best { background: rgba(201, 162, 75, .10); }
.zude-prix__merchant {
	grid-area: merchant;
	display: flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
}
.zude-prix__badge {
	flex: 0 0 auto;
	width: 34px; height: 34px;
	border-radius: 50%;
	background: var(--zude-primary);
	color: #fff;
	font-weight: 800;
	font-size: 1rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-transform: uppercase;
}
.zude-prix__row.is-best .zude-prix__badge { background: var(--zude-accent); color: #2a2410; }
.zude-prix__name { font-weight: 700; font-size: .95rem; }
.zude-prix__best-lbl {
	display: inline-block;
	font-size: .68rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .03em;
	color: #2a2410;
	background: var(--zude-accent);
	border-radius: 999px;
	padding: 2px 7px;
	margin-left: 4px;
	vertical-align: middle;
}
.zude-prix__price {
	grid-area: price;
	text-align: right;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
}
.zude-prix__val { font-weight: 800; font-size: 1.1rem; color: var(--zude-primary); }
.zude-prix__row.is-best .zude-prix__val { color: #7a5a12; }
.zude-prix__date { margin-top: 2px; }
.zude-prix__cta { grid-area: cta; }
.zude-prix__cta .zude-btn { width: 100%; }
@media (min-width: 560px) {
	.zude-prix__row {
		grid-template-columns: 1fr auto auto;
		grid-template-areas: "merchant price cta";
	}
	.zude-prix__cta .zude-btn { width: auto; }
}

/* ---------- [fly_bouton] ---------- */
.zude-bouton { display: inline-flex; margin: 8px 0; }

/* =========================================================================
   v1.3.0 — Collections filtrables [fly_collection], bulles, onglets
   Codes visuels quel-canape (chips arrondies, slider prix, panneau gauche
   desktop / tiroir mobile, cartes fond clair uniforme). 100 % tokens --zude-*.
   ========================================================================= */

.zude-collection { margin: 28px 0; position: relative; }

/* ---------- Bouton tiroir (mobile uniquement) ---------- */
.zude-collection__toggle {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 18px;
	border-radius: 999px;
	border: 1.5px solid var(--zude-border);
	background: var(--zude-surface);
	color: var(--zude-text);
	font-weight: 700;
	font-size: .9rem;
	cursor: pointer;
	margin-bottom: 16px;
}
.zude-collection__toggle:hover { border-color: var(--zude-primary); }

/* ---------- Layout : panneau gauche + grille (desktop) ---------- */
.zude-collection__layout { display: block; }

@media (min-width: 900px) {
	.zude-collection__toggle { display: none; }
	.zude-collection__layout {
		display: grid;
		grid-template-columns: 264px minmax(0, 1fr);
		gap: 28px;
		align-items: start;
	}
	.zude-collection__layout--nofacets { grid-template-columns: minmax(0, 1fr); }
	/* v1.9.5 — anti-CLS : le panneau est TOUJOURS visible en desktop, même avant que
	   le JS retire [hidden] (sinon la grille se peint en colonne 1 puis saute — CLS 0,17). */
	.zude-collection__facets[hidden] { display: block; }
}

/* ---------- Panneau de facettes ---------- */
.zude-collection__facets {
	background: var(--zude-surface);
	border-radius: var(--zude-radius);
	border: 1px solid var(--zude-border);
	padding: 20px;
}
@media (max-width: 899px) {
	.zude-collection__facets {
		position: fixed;
		top: 0; left: 0; bottom: 0;
		width: min(88%, 350px);
		z-index: 10000;
		overflow-y: auto;
		border-radius: 0;
		transform: translateX(-100%);
		transition: transform .28s cubic-bezier(.22, .61, .36, 1);
		box-shadow: var(--zude-shadow-lg);
	}
	.zude-collection__facets.is-open { transform: translateX(0); }
}
@media (min-width: 900px) {
	.zude-collection__facets { position: sticky; top: 20px; }
	.zude-collection__apply { display: none; }
}

.zude-collection__facets-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 18px;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--zude-border);
}
.zude-collection__facets-title { font-weight: 800; font-size: 1.1rem; }
.zude-collection__reset,
.zude-collection__reset-all {
	background: none;
	border: 0;
	color: var(--zude-primary);
	text-decoration: underline;
	cursor: pointer;
	font-size: .82rem;
	font-weight: 600;
	padding: 0;
}
.zude-collection__facets-foot { margin-top: 20px; }
.zude-collection__reset-all { display: block; width: 100%; text-align: center; color: var(--zude-muted); margin-bottom: 12px; }
.zude-collection__apply { width: 100%; }

/* ---------- Facette (fieldset) ---------- */
.zude-facet { border: 0; margin: 0 0 20px; padding: 0; }
.zude-facet:last-of-type { margin-bottom: 0; }
.zude-facet__legend {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	width: 100%;
	padding: 0;
	margin-bottom: 12px;
	font-weight: 700;
	font-size: .92rem;
	color: var(--zude-text);
}
.zude-facet__reset {
	background: none;
	border: 0;
	color: var(--zude-primary);
	font-size: .76rem;
	font-weight: 600;
	text-decoration: underline;
	cursor: pointer;
	padding: 0;
}

/* ---------- Chips arrondies ---------- */
.zude-facet__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.zude-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 7px 13px;
	border-radius: 999px;
	border: 1.5px solid var(--zude-border);
	background: var(--zude-surface);
	color: var(--zude-text);
	font-size: .85rem;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
	position: relative;
	transition: background .12s ease, border-color .12s ease, color .12s ease;
}
.zude-chip input { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; pointer-events: none; }
.zude-chip:hover { border-color: var(--zude-primary); }
.zude-chip.is-active {
	background: var(--zude-primary);
	color: #fff;
	border-color: var(--zude-primary);
}
.zude-chip__count { font-size: .72rem; font-weight: 700; opacity: .55; }
.zude-chip.is-active .zude-chip__count { opacity: .85; }
.zude-chip--all { font-weight: 700; }
.zude-chip:focus-within { outline: 3px solid var(--zude-accent); outline-offset: 2px; }

/* Repli « + Afficher N de plus » */
.zude-facet__chips.is-collapsed .zude-chip--extra { display: none; }
.zude-facet__chips.is-expanded .zude-chip--extra { display: inline-flex; }
.zude-facet__more {
	background: none;
	border: 0;
	color: var(--zude-primary);
	font-size: .8rem;
	font-weight: 600;
	cursor: pointer;
	margin-top: 10px;
	padding: 0;
	text-align: left;
}
.zude-facet__more:hover { text-decoration: underline; }

/* ---------- Facette prix (double curseur) ---------- */
.zude-facet--range .zude-range { position: relative; height: 34px; }
.zude-range__track {
	position: absolute;
	top: 50%; left: 2px; right: 2px;
	height: 5px;
	transform: translateY(-50%);
	background: var(--zude-border);
	border-radius: 999px;
}
.zude-range__fill { position: absolute; top: 0; bottom: 0; background: var(--zude-primary); border-radius: 999px; }
.zude-range__input {
	position: absolute;
	top: 0; left: 0;
	width: 100%;
	height: 34px;
	margin: 0;
	background: none;
	pointer-events: none;
	-webkit-appearance: none;
	appearance: none;
}
.zude-range__input::-webkit-slider-thumb {
	-webkit-appearance: none;
	appearance: none;
	pointer-events: auto;
	width: 20px; height: 20px;
	border-radius: 50%;
	background: var(--zude-surface);
	border: 2px solid var(--zude-primary);
	box-shadow: var(--zude-shadow);
	cursor: pointer;
}
.zude-range__input::-moz-range-thumb {
	pointer-events: auto;
	width: 20px; height: 20px;
	border-radius: 50%;
	background: var(--zude-surface);
	border: 2px solid var(--zude-primary);
	cursor: pointer;
}
.zude-range__input::-webkit-slider-runnable-track { background: none; border: 0; }
.zude-range__input::-moz-range-track { background: none; border: 0; }
.zude-range__values {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 10px;
	font-weight: 700;
	font-size: .85rem;
	color: var(--zude-primary);
}
.zude-range__sep { color: var(--zude-muted); }

/* ---------- Colonne principale : barre compteur + tri ---------- */
.zude-collection__main { min-width: 0; }
.zude-collection__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 18px;
	flex-wrap: wrap;
}
.zude-collection__count { margin: 0; color: var(--zude-muted); font-size: .9rem; }
.zude-collection__count strong { color: var(--zude-text); font-size: 1.05rem; }
.zude-collection__sortwrap { display: inline-flex; align-items: center; gap: 8px; }
.zude-collection__sortlbl { font-size: .85rem; color: var(--zude-muted); font-weight: 600; }
.zude-collection__sort {
	border: 1.5px solid var(--zude-border);
	border-radius: 999px;
	padding: 9px 34px 9px 15px;
	background-color: var(--zude-surface);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%236b6459' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round' d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	font-size: .85rem;
	font-weight: 600;
	color: var(--zude-text);
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}

/* ---------- Grille de la collection ---------- */
.zude-collection__grid { margin: 0; }
.zude-collection__card { position: relative; }
.zude-collection__card .zude-grille__media {
	position: relative;
	background: var(--zude-tile, #fbfaf7);
	border: 1px solid var(--zude-border, rgba(20, 30, 26, .06));
	border-radius: calc(var(--zude-radius) - 4px);
	padding: 18px;
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	box-shadow: inset 0 1px 3px rgba(20, 30, 26, .03);
}
.zude-collection__card .zude-grille__media .zude-img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}
.zude-card-badge {
	position: absolute;
	top: 10px; left: 10px;
	background: #b4553d;
	color: #fff;
	font-weight: 800;
	font-size: .72rem;
	line-height: 1;
	padding: 5px 9px;
	border-radius: 999px;
	z-index: 1;
}

/* ---------- Etat vide + « Voir + de produits (N) » ---------- */
.zude-collection__empty {
	text-align: center;
	color: var(--zude-muted);
	padding: 40px 16px;
	font-size: .95rem;
}
.zude-collection__more { text-align: center; margin-top: 24px; }
.zude-collection__more .zude-btn { min-width: 240px; }
.zude-collection__more-n { font-weight: 800; }

/* ---------- Overlay tiroir mobile ---------- */
.zude-collection__overlay {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, .45);
	z-index: 9999;
}
@media (min-width: 900px) {
	.zude-collection__overlay { display: none !important; }
}
body.zude-noscroll { overflow: hidden; }

/* =========================================================================
   [fly_bulles] — bulles rondes de collections (maillage tete de page)
   ========================================================================= */
.zude-bulles { margin: 26px 0; }
.zude-bulles__title { font-weight: 700; font-size: 1rem; margin: 0 0 14px; color: var(--zude-text); }
.zude-bulles__list {
	display: flex;
	gap: 20px;
	overflow-x: auto;
	list-style: none;
	margin: 0;
	padding: 4px 2px 14px;
	scrollbar-width: thin;
	-webkit-overflow-scrolling: touch;
}
.zude-bulles__item { flex: 0 0 auto; }
.zude-bulles__link {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 9px;
	text-decoration: none;
	color: var(--zude-text);
	width: 100px;
}
.zude-bulles__circle {
	width: 86px; height: 86px;
	border-radius: 50%;
	overflow: hidden;
	background: var(--zude-tile, #fbfaf7);
	border: 1px solid var(--zude-border);
	display: flex;
	align-items: center;
	justify-content: center;
	transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.zude-bulles__link:hover .zude-bulles__circle {
	transform: translateY(-3px);
	box-shadow: var(--zude-shadow);
	border-color: var(--zude-primary);
}
.zude-bulles__img { width: 100%; height: 100%; object-fit: cover; }
.zude-bulles__ph { font-size: 1.9rem; font-weight: 800; color: var(--zude-primary); text-transform: uppercase; }
.zude-bulles__label { font-size: .82rem; font-weight: 600; text-align: center; line-height: 1.25; }
.zude-bulles__count { color: var(--zude-muted); font-weight: 500; }

/* =========================================================================
   [fly_onglets] — onglets desktop / accordeon mobile
   ========================================================================= */
.zude-onglets { margin: 40px 0; }
.zude-onglets__title { font-size: 1.3rem; font-weight: 800; margin: 0 0 18px; color: var(--zude-text); }

/* Mobile-first : accordeon <details> */
.zude-onglets__tabs { display: none; }
.zude-onglets__panel {
	border: 1px solid var(--zude-border);
	border-radius: calc(var(--zude-radius) - 6px);
	margin-bottom: 12px;
	background: var(--zude-surface);
	overflow: hidden;
}
/* v1.6.3 — D4 : en-tête d'accordéon sur fond crème doux (élégance des tab-cards réf.). */
.zude-onglets__summary {
	padding: 17px 20px;
	font-weight: 700;
	font-size: .98rem;
	cursor: pointer;
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	background: var(--zude-cream-soft, #faf6ee);
}
.zude-onglets__panel[open] .zude-onglets__summary { border-bottom: 1px solid var(--zude-border); }
.zude-onglets__summary::-webkit-details-marker { display: none; }
.zude-onglets__summary::after { content: "+"; font-size: 1.3rem; font-weight: 700; color: var(--zude-primary); line-height: 1; }
.zude-onglets__panel[open] .zude-onglets__summary::after { content: "\2212"; }
.zude-onglets__content { padding: 18px 20px 20px; color: var(--zude-text); line-height: 1.65; }
.zude-onglets__content > :first-child { margin-top: 0; }
.zude-onglets__content > :last-child { margin-bottom: 0; }

@media (min-width: 760px) {
	.zude-onglets__tabs {
		display: flex;
		flex-wrap: wrap;
		gap: 4px;
		border-bottom: 2px solid var(--zude-border);
	}
	.zude-onglets__tab {
		background: none;
		border: 0;
		border-bottom: 3px solid transparent;
		margin-bottom: -2px;
		padding: 12px 18px;
		font-weight: 700;
		font-size: .95rem;
		color: var(--zude-muted);
		cursor: pointer;
	}
	.zude-onglets__tab:hover { color: var(--zude-text); }
	.zude-onglets__tab.is-active { color: var(--zude-primary); border-bottom-color: var(--zude-primary); }
	.zude-onglets__panels {
		border: 1px solid var(--zude-border);
		border-top: 0;
		border-radius: 0 0 calc(var(--zude-radius) - 6px) calc(var(--zude-radius) - 6px);
		background: var(--zude-surface);
	}
	.zude-onglets__panel { border: 0; border-radius: 0; margin: 0; background: none; }
	.zude-onglets__summary { display: none; }
	.zude-onglets__panel { display: none; }
	.zude-onglets__panel.is-active { display: block; }
	.zude-onglets__content { padding: 20px; }
}

/* =========================================================================
   v1.5.0 — GABARIT D'AVIS [fly_avis] (enveloppe fixe, slots de contenu unique)
   ========================================================================= */
.zude-avis { display: block; margin: 0 0 28px; }
.zude-avis__block { margin: 26px 0; }
.zude-avis__h {
	font-size: 1.3rem;
	font-weight: 800;
	line-height: 1.25;
	margin: 0 0 14px;
	color: var(--zude-text);
}

/* ---- 1. Box d'achat en tête (prix + aide au choix d'abord) ---- */
.zude-avis__buybox {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: var(--zude-shadow);
	padding: 18px;
}
.zude-avis__buybox-media { display: flex; align-items: center; justify-content: center; }
.zude-avis__buybox-media .zude-img { border-radius: calc(var(--zude-radius) - 8px); max-height: 320px; width: auto; }
.zude-avis__buybox-body { display: flex; flex-direction: column; gap: 8px; }
.zude-avis__name { font-size: 1.5rem; font-weight: 800; line-height: 1.2; margin: 0; color: var(--zude-text); }
.zude-avis__buybox .zude-btns { margin-top: 6px; }
@media (min-width: 700px) {
	.zude-avis__buybox { grid-template-columns: 300px 1fr; align-items: center; }
}

/* ---- 2. L'essentiel à retenir ---- */
.zude-avis__essentiel {
	background: color-mix(in srgb, var(--zude-primary) 7%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-primary) 18%, transparent);
	border-radius: var(--zude-radius);
	padding: 18px 20px;
}
.zude-avis__essentiel-title { display: flex; align-items: center; gap: 8px; font-size: 1.15rem; margin: 0 0 10px; }
.zude-avis__essentiel-ico { color: var(--zude-star); }
.zude-avis__essentiel-list { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.zude-avis__essentiel-list li { position: relative; padding-left: 26px; line-height: 1.45; }
.zude-avis__essentiel-list li::before {
	content: "✓";
	position: absolute; left: 0; top: 0;
	color: var(--zude-primary); font-weight: 800;
}

/* ---- 4. Notes par critère (barres) ---- */
.zude-avis__criteres-list { display: grid; gap: 14px; }
.zude-avis__crit-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
.zude-avis__crit-label { font-weight: 600; }
.zude-avis__crit-note { font-weight: 800; color: var(--zude-primary); }
.zude-avis__crit-max { font-size: .8em; font-weight: 700; color: var(--zude-muted); }
.zude-avis__crit-bar {
	height: 10px; border-radius: 999px;
	background: color-mix(in srgb, var(--zude-muted) 18%, transparent);
	overflow: hidden;
}
.zude-avis__crit-fill {
	display: block; height: 100%; border-radius: 999px;
	background: linear-gradient(90deg, var(--zude-primary), var(--zude-accent));
}

/* ---- 6. Tableaux de specs — PREMIUM (v1.8.1) : icône par ligne, valeur en évidence,
   séparateurs fins (fini le zébrage), ligne du critère décisif surlignée ---- */
.zude-avis__spectable { width: 100%; border-collapse: collapse; }
.zude-avis__spectable tr.zude-spec { border-bottom: 1px solid var(--zude-border); }
.zude-avis__spectable tr.zude-spec:last-child { border-bottom: 0; }
.zude-avis__spectable th, .zude-avis__spectable td {
	text-align: left; padding: 11px 12px;
	vertical-align: middle;
	background: transparent;
}
.zude-avis__spectable th {
	width: 56%;
	font-weight: 500;
	color: var(--zude-muted);
	white-space: normal;
}
/* Icône sobre en pastille discrète devant le libellé. */
.zude-spec__ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 24px; height: 24px;
	margin-right: 9px;
	border-radius: 7px;
	color: var(--zude-primary);
	background: color-mix(in srgb, var(--zude-primary) 8%, transparent);
	vertical-align: middle;
}
.zude-spec__label { vertical-align: middle; line-height: 1.3; }
/* Valeur : chiffre en évidence (700) + unité détachée en gris léger. */
.zude-avis__spectable td.zude-spec__value { text-align: right; }
.zude-spec__num { font-weight: 700; color: var(--zude-ink); }
.zude-spec__unit { margin-left: 4px; font-weight: 500; color: var(--zude-muted); font-size: .9em; }
/* Ligne DÉCISIVE : fond accent très pâle + filet accent + libellé/icône appuyés. */
.zude-avis__spectable tr.zude-spec--decisive { background: color-mix(in srgb, var(--zude-accent) 13%, transparent); }
.zude-avis__spectable tr.zude-spec--decisive th { box-shadow: inset 3px 0 0 var(--zude-accent); }
.zude-spec--decisive .zude-spec__label { font-weight: 700; color: var(--zude-ink); }
.zude-spec--decisive .zude-spec__ico {
	color: color-mix(in srgb, var(--zude-accent) 40%, var(--zude-primary));
	background: color-mix(in srgb, var(--zude-accent) 32%, transparent);
}

/* ---- 7. Avantages / inconvénients (réutilise .zude-proscons) ---- */
.zude-avis__proscons .zude-proscons { margin-top: 0; }

/* ---- Sticky d'avis : prix mis en avant ---- */
.zude-sticky__price { font-weight: 800; color: var(--zude-star); }

/* =========================================================================
   v1.5.0 — SLOTS DE TEXTE DES COLLECTIONS ([fly_collection])
   ========================================================================= */
.zude-col-intro { margin: 0 0 34px; }
.zude-col-intro__text { line-height: 1.65; }
.zude-col-intro__text > :first-child { margin-top: 0; }
/* v1.6.3 — D3 : encadré « essentiel » sur fond CRÈME chaud (chaleur / whitespace). */
.zude-col-intro__essentiel {
	margin-top: 22px;
	background: var(--zude-cream, #f7f1e6);
	border: 1px solid color-mix(in srgb, var(--zude-primary) 14%, transparent);
	border-radius: var(--zude-radius);
	padding: 22px 24px;
}
.zude-col-intro__essentiel-title { display: flex; align-items: center; gap: 8px; font-weight: 800; margin: 0 0 8px; }
.zude-col-intro__essentiel-title span { color: var(--zude-star); }
.zude-col-intro__essentiel ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.zude-col-intro__essentiel li { position: relative; padding-left: 24px; }
.zude-col-intro__essentiel li::before { content: "✓"; position: absolute; left: 0; color: var(--zude-primary); font-weight: 800; }
/* v1.7.6 — « L'essentiel » rendu en ONGLET sous la grille (loi vision 2) : liste à coches. */
.zude-col-essentiel-list { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.zude-col-essentiel-list li { position: relative; padding-left: 28px; line-height: 1.6; }
.zude-col-essentiel-list li::before { content: "✓"; position: absolute; left: 0; top: 0; color: var(--zude-primary); font-weight: 800; }
.zude-col-guide {
	margin: 40px 0 0;
	line-height: 1.65;
	border-top: 1px solid var(--zude-border);
	padding-top: 32px;
}
.zude-col-guide > :first-child { margin-top: 0; }
/* v1.6.0 — Sections structurées (3 blocs) entre la grille et le guide. */
.zude-col-sections { margin: 40px 0 0; }
.zude-col-section { margin: 0 0 28px; line-height: 1.65; }
.zude-col-section__title { margin: 0 0 10px; }
.zude-col-section__body > :first-child { margin-top: 0; }

/* =========================================================================
   v1.6.2 — FINITION « produit désigné » (fond blanc dominant)
   Cartes : cartouche image clair uniforme, ombre subtile + lift au survol,
   hiérarchie prix/note. Facettes, slider, buy box, badges affinés. Les tons
   viennent des tokens ; ici on travaille la matière (ombres, transitions,
   espacements) pour égaler la référence.
   ========================================================================= */

/* ---- Cartes : ombre douce + lift au survol ---- */
.zude-collection__card,
.zude-grille__item,
.zude-carousel__item {
	transition: transform .2s cubic-bezier(.2, .75, .5, 1), box-shadow .2s ease, border-color .2s ease;
}
.zude-collection__card:hover,
.zude-grille__item:hover,
.zude-carousel__item:hover {
	transform: translateY(-4px);
	box-shadow: var(--zude-shadow-lg);
}
/* Cartouche image des grilles/carrousel aligné sur celui des collections. */
.zude-grille__media,
.zude-carousel__media {
	background: var(--zude-tile, #fbfaf7);
	border-radius: calc(var(--zude-radius) - 4px);
	padding: 16px;
	aspect-ratio: 1 / 1;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.zude-grille__media .zude-img,
.zude-carousel__media .zude-img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

/* ---- Prix des cartes : plus affirmé, aligné à la référence ---- */
.zude-card-cta__val { font-size: 1.28rem; letter-spacing: -.01em; }
.zude-card-cta { padding-top: 14px; }
.zude-card-cta .zude-btn--avis { padding-top: 13px; padding-bottom: 13px; }

/* ---- Note : étoiles un cran plus lisibles ---- */
.zude-stars-val { color: var(--zude-text); font-size: .92rem; }

/* ---- Panneau de facettes : titres discrets, respiration ---- */
.zude-collection__facets { padding: 22px 20px; }
.zude-facet { margin-bottom: 22px; }
.zude-chip { padding: 8px 14px; }
.zude-chip.is-active { box-shadow: 0 2px 8px rgba(18, 48, 42, .16); }

/* ---- Slider prix : plus fin, poignées nettes ---- */
.zude-facet--range .zude-range { height: 30px; }
.zude-range__track { height: 4px; }
.zude-range__input::-webkit-slider-thumb { width: 18px; height: 18px; border-width: 2.5px; }
.zude-range__input::-moz-range-thumb { width: 18px; height: 18px; border-width: 2.5px; }

/* ---- Tri : pill épurée ---- */
.zude-collection__sort { padding-top: 10px; padding-bottom: 10px; }

/* ---- Buy box de la fiche : cadre plus généreux ---- */
.zude-avis__buybox,
.zude-box {
	padding: 22px;
	box-shadow: var(--zude-shadow);
}
.zude-avis__buybox-media,
.zude-box__media {
	background: var(--zude-tile, #fbfaf7);
	border-radius: calc(var(--zude-radius) - 2px);
	padding: 14px;
}
.zude-avis__buybox-media .zude-img,
.zude-box__media .zude-img { max-width: 100%; }

/* ---- Liste de prix marchands : lignes plus aérées ---- */
.zude-prix__row { padding: 16px 18px; }
.zude-prix__badge { box-shadow: 0 2px 6px rgba(18, 48, 42, .18); }

/* ---- Badges promo/rang : ombre portée fine ---- */
.zude-card-badge,
.zude-badge-promo { box-shadow: 0 2px 8px rgba(0, 0, 0, .14); }

/* ---- Tableau de specs de fiche : en-têtes plus doux ---- */
.zude-specs__table th { background: var(--zude-tile, #fbfaf7); }

/* ---- Pagination « Voir + de produits » : bouton premium ---- */
.zude-collection__more .zude-btn { padding: 14px 28px; box-shadow: var(--zude-shadow); }

/* =========================================================================
   v1.7.0 — MONTÉE EN GAMME du gabarit d'avis (9 briques). Design sobre, blanc
   dominant, tokens --zude-*. Aucune animation gadget.
   ========================================================================= */

/* ---- Brique 6 : galerie multi-images ---- */
.zude-gallery { display: flex; flex-direction: column; gap: 12px; width: 100%; }
.zude-gallery__hero {
	position: relative;
	background: var(--zude-tile, #fbfaf7);
	border-radius: calc(var(--zude-radius) - 4px);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 10px;
	aspect-ratio: 1 / 1;
	overflow: hidden;
}
.zude-gallery__img { width: 100%; height: 100%; object-fit: contain; cursor: zoom-in; }
.zude-gallery__zoom {
	position: absolute;
	top: 10px; right: 10px;
	width: 36px; height: 36px;
	border-radius: 50%;
	border: 1px solid var(--zude-border);
	background: rgba(255, 255, 255, .9);
	color: var(--zude-primary);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: var(--zude-shadow);
}
.zude-gallery__zoom:hover { background: #fff; }
.zude-gallery__thumbs { display: flex; flex-wrap: wrap; gap: 8px; }
.zude-gallery__thumb {
	width: 62px; height: 62px;
	padding: 4px;
	border-radius: 10px;
	border: 1.5px solid var(--zude-border);
	background: var(--zude-surface);
	cursor: pointer;
	overflow: hidden;
	transition: border-color .12s ease, transform .12s ease;
}
.zude-gallery__thumb img { width: 100%; height: 100%; object-fit: contain; }
.zude-gallery__thumb:hover { border-color: var(--zude-primary); }
.zude-gallery__thumb.is-active { border-color: var(--zude-primary); box-shadow: 0 2px 8px rgba(18, 48, 42, .16); }

/* Lightbox plein écran */
.zude-lightbox {
	position: fixed;
	inset: 0;
	z-index: 100000;
	background: rgba(15, 20, 17, .88);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
}
.zude-lightbox__img { max-width: 92vw; max-height: 88vh; object-fit: contain; border-radius: 8px; background: #fff; }
.zude-lightbox__close {
	position: absolute;
	top: 18px; right: 22px;
	width: 42px; height: 42px;
	border-radius: 50%;
	border: 0;
	background: rgba(255, 255, 255, .16);
	color: #fff;
	font-size: 1.6rem;
	line-height: 1;
	cursor: pointer;
}
.zude-lightbox__close:hover { background: rgba(255, 255, 255, .28); }

/* ---- Brique 1 : vidéo YouTube (façade lazy) ---- */
.zude-video {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: var(--zude-radius);
	overflow: hidden;
	background: #000;
	box-shadow: var(--zude-shadow);
}
.zude-video__facade {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	padding: 0;
	cursor: pointer;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	display: flex;
	align-items: center;
	justify-content: center;
}
.zude-video__facade::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .12); transition: background .15s ease; }
.zude-video__facade:hover::after { background: rgba(0, 0, 0, .04); }
.zude-video__play { position: relative; z-index: 1; filter: drop-shadow(0 2px 8px rgba(0, 0, 0, .4)); transition: transform .15s ease; }
.zude-video__facade:hover .zude-video__play { transform: scale(1.06); }
.zude-video__iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---- Brique 5 : TL;DR « l'avis en 30 secondes » ---- */
.zude-avis__tldr {
	background: var(--zude-cream, #f7f1e6);
	border: 1px solid color-mix(in srgb, var(--zude-primary) 14%, transparent);
	border-left: 5px solid var(--zude-accent);
	border-radius: var(--zude-radius);
	padding: 16px 20px;
}
.zude-avis__tldr-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 800;
	font-size: .8rem;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var(--zude-primary);
	margin-bottom: 6px;
}
.zude-avis__tldr-ico { font-size: 1rem; }
.zude-avis__tldr-body { margin: 0; border: 0; padding: 0; font-size: 1.05rem; line-height: 1.55; color: var(--zude-text); font-style: normal; }
.zude-avis__tldr-body > :first-child { margin-top: 0; }
.zude-avis__tldr-body > :last-child { margin-bottom: 0; }

/* ---- Brique 4 : profil « pour qui » ---- */
.zude-profil { margin: 4px 0 0; }
.zude-profil__title { font-weight: 700; font-size: .92rem; color: var(--zude-text); margin-bottom: 6px; }
.zude-profil__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 5px; }
.zude-profil__list li { position: relative; padding-left: 22px; font-size: .92rem; color: var(--zude-muted); line-height: 1.4; }
.zude-profil__list li::before { content: "→"; position: absolute; left: 0; top: 0; color: var(--zude-primary); font-weight: 800; }

/* ---- Brique 3 : bloc logistique (livraison / retour / garantie) ---- */
.zude-logistique {
	list-style: none;
	margin: 14px 0 0;
	padding: 14px 0 0;
	border-top: 1px solid var(--zude-border);
	display: grid;
	gap: 10px;
}
.zude-logistique__item { display: flex; align-items: flex-start; gap: 10px; font-size: .88rem; color: var(--zude-muted); line-height: 1.4; }
.zude-logistique__ico { flex: 0 0 auto; color: var(--zude-primary); display: inline-flex; margin-top: 1px; }
.zude-logistique__lbl { font-weight: 700; color: var(--zude-text); }

/* ---- Brique 2 : FAQ (accordéon details/summary) ---- */
.zude-faq { display: grid; gap: 10px; }
.zude-faq__item {
	border: 1px solid var(--zude-border);
	border-radius: calc(var(--zude-radius) - 4px);
	background: var(--zude-surface);
	overflow: hidden;
}
.zude-faq__q {
	padding: 15px 18px;
	font-weight: 700;
	font-size: .98rem;
	cursor: pointer;
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	color: var(--zude-text);
	background: var(--zude-cream-soft, #faf6ee);
}
.zude-faq__q::-webkit-details-marker { display: none; }
.zude-faq__q::after { content: "+"; font-size: 1.3rem; font-weight: 700; color: var(--zude-primary); line-height: 1; }
.zude-faq__item[open] .zude-faq__q { border-bottom: 1px solid var(--zude-border); }
.zude-faq__item[open] .zude-faq__q::after { content: "\2212"; }
.zude-faq__a { padding: 16px 18px; line-height: 1.6; color: var(--zude-text); }
.zude-faq__a > :first-child { margin-top: 0; }
.zude-faq__a > :last-child { margin-bottom: 0; }

/* ---- Brique 8 : deux tableaux de specs (dimensions / caractéristiques) ---- */
.zude-avis__spectables { display: grid; grid-template-columns: 1fr; gap: 22px; }
@media (min-width: 700px) { .zude-avis__spectables { grid-template-columns: 1fr 1fr; gap: 28px; } }
.zude-avis__spectable-title {
	font-size: 1rem;
	font-weight: 700;
	margin: 0 0 8px;
	color: var(--zude-primary);
}

/* ---- Brique 7 : mode indisponible ---- */
.zude-avis__indispo {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin: 6px 0;
	padding: 12px 14px;
	border-radius: calc(var(--zude-radius) - 4px);
	background: color-mix(in srgb, var(--zude-muted) 8%, var(--zude-surface));
	border: 1px solid var(--zude-border);
	border-left: 4px solid var(--zude-muted);
	font-size: .92rem;
	color: var(--zude-text);
	line-height: 1.45;
}
.zude-avis__indispo-ico { color: var(--zude-warn); font-size: 1.05rem; line-height: 1.3; } /* v1.9.9 : fix token (--zude-warm n'existait pas) */
.zude-avis__buybox--indispo { opacity: .98; }

/* =========================================================================
   v1.7.0 — MONTÉE EN GAMME VISUELLE du gabarit d'avis (niveau QC Ultra Premium,
   NOTRE patte : blanc dominant, tokens --zude-*, sobriété quel-canape). Ce bloc
   passe APRÈS les règles v1.5/1.6 et les relève sans les copier.
   ========================================================================= */

/* ---- Rythme vertical plus généreux ---- */
.zude-avis__block { margin: 34px 0; }

/* ---- Titres de section : marqueur d'accent (barre) + graisse ---- */
.zude-avis__h {
	position: relative;
	font-size: 1.42rem;
	font-weight: 800;
	letter-spacing: -.01em;
	padding-left: 15px;
	margin: 0 0 18px;
}
.zude-avis__h::before {
	content: "";
	position: absolute;
	left: 0; top: .12em; bottom: .12em;
	width: 5px;
	border-radius: 999px;
	background: linear-gradient(var(--zude-primary), var(--zude-accent));
}

/* ---- Buy box : carte produit premium ---- */
.zude-avis__buybox {
	position: relative;
	gap: 26px;
	padding: 26px;
	border-radius: calc(var(--zude-radius) + 4px);
	box-shadow: 0 10px 34px rgba(20, 30, 26, .10);
	border: 1px solid var(--zude-border);
}
@media (min-width: 700px) {
	.zude-avis__buybox { grid-template-columns: 340px 1fr; align-items: start; }
}
.zude-avis__buybox-media { position: relative; align-self: start; }

/* Badge « TEST & AVIS » */
.zude-avis__badge {
	position: absolute;
	top: 12px; left: 12px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--zude-primary);
	color: #fff;
	font-size: .68rem;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
	padding: 6px 11px;
	border-radius: 999px;
	box-shadow: 0 3px 10px rgba(18, 48, 42, .28);
}

/* Nom + ligne de note (anneau + étoiles, v1.7.7) */
.zude-avis__name { font-size: 1.7rem; letter-spacing: -.015em; margin: 0 0 10px; }
.zude-avis__ratingline {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
	margin-bottom: 12px;
}
.zude-avis__ratingline-stars { display: inline-flex; flex-direction: column; gap: 2px; }
.zude-avis__ratingline .zude-stars { gap: 1px; }

/* Panneau d'achat : prix mis en valeur + CTA groupés */
.zude-avis__buypanel {
	margin-top: 16px;
	padding: 18px;
	border-radius: var(--zude-radius);
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	box-shadow: inset 0 1px 0 #fff, 0 4px 16px rgba(20, 30, 26, .06);
}
.zude-avis__buypanel .zude-price-lead { margin-top: 0; }
.zude-avis__buypanel .zude-price-lead__val { font-size: 1.85rem; letter-spacing: -.02em; }
.zude-avis__buypanel .zude-btns { margin-top: 14px; }
.zude-avis__buypanel .zude-btn { flex: 1 1 auto; padding: 14px 22px; font-size: 1rem; }
.zude-avis__buypanel .zude-btn--primary { box-shadow: 0 8px 22px rgba(18, 48, 42, .22); }

/* ---- L'essentiel : carte plus affirmée ---- */
.zude-avis__essentiel { padding: 22px 24px; box-shadow: 0 4px 16px rgba(20, 30, 26, .05); }
.zude-avis__essentiel-title { font-size: 1.2rem; }
.zude-avis__essentiel-list li { padding-left: 28px; font-size: 1rem; }
.zude-avis__essentiel-list li::before {
	content: "✓";
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px; height: 18px;
	top: .12em;
	border-radius: 50%;
	background: color-mix(in srgb, var(--zude-primary) 14%, transparent);
	font-size: .72rem;
}

/* ---- Notes par critère : barres plus hautes, note bien lisible ---- */
.zude-avis__criteres-list { gap: 17px; }
.zude-avis__crit-bar { height: 12px; }
.zude-avis__crit-fill { position: relative; transition: width .6s cubic-bezier(.2, .75, .4, 1); }
.zude-avis__crit-note { font-size: 1.02rem; }
.zude-avis__crit-label { font-size: .98rem; }

/* ---- Tableaux specs : lignes aérées (le décisif porte l'emphase, plus de 1re ligne en gras) ---- */
.zude-avis__spectable th, .zude-avis__spectable td { padding: 12px 14px; }

/* ---- Sticky d'avis : ombre plus nette, CTA affirmé ---- */
.zude-sticky--avis { box-shadow: 0 -8px 30px rgba(20, 30, 26, .16); }
.zude-sticky--avis .zude-btn--primary { box-shadow: 0 6px 18px rgba(18, 48, 42, .24); }

/* ---- Mobile : respiration ---- */
@media (max-width: 699px) {
	.zude-avis__buybox { padding: 18px; gap: 18px; }
	.zude-avis__name { font-size: 1.4rem; }
	.zude-avis__h { font-size: 1.25rem; }
	.zude-avis__buypanel .zude-btn { width: 100%; flex-basis: 100%; }
}

/* ---- Accessibilité : pas d'animation si l'utilisateur la refuse ---- */
@media (prefers-reduced-motion: reduce) {
	.zude-avis__crit-fill, .zude-video__play, .zude-gallery__thumb { transition: none; }
}

/* =========================================================================
   v1.7.0 — BRIQUE 10 : COLLECTIONS PREMIUM (cartes, facettes, onglets de textes)
   Cartes typées desktop/mobile séparément, lien « Voir notre test → » net, hover
   soigné, aucun fond gris. Facettes accessibles mobile. Onglets de textes finaux
   (la page se termine proprement). Notre patte : tokens --zude-*, blanc dominant.
   ========================================================================= */

/* ---- Cartes de collection : cartouche image net (jamais de bande grise) ---- */
.zude-collection__card {
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	padding: 16px;
	box-shadow: 0 3px 14px rgba(20, 30, 26, .05);
}
.zude-collection__card:hover {
	transform: translateY(-4px);
	box-shadow: var(--zude-shadow-lg);
	border-color: color-mix(in srgb, var(--zude-primary) 22%, var(--zude-border));
}
.zude-collection__card .zude-grille__media {
	background: #fff;               /* jamais de gris : fond blanc pur */
	border: 1px solid var(--zude-border);
	box-shadow: none;
	padding: 14px;
	margin-bottom: 12px;
}

/* Titre de carte : typographie réglée SÉPARÉMENT desktop / mobile */
.zude-collection__card .zude-grille__title { margin: 2px 0 6px; line-height: 1.3; }
.zude-collection__card .zude-grille__title .zude-title__link { font-weight: 700; }
@media (min-width: 700px) {
	.zude-collection__card .zude-grille__title { font-size: 1.05rem; }
}
@media (max-width: 699px) {
	.zude-collection__card { padding: 12px; }
	.zude-collection__card .zude-grille__title { font-size: .95rem; }
	.zude-collection__card .zude-stars .zude-star { width: 16px; height: 16px; }
}

/* Lien « Voir notre test → » : net, pleine largeur, flèche qui glisse au survol */
.zude-btn--avis { justify-content: center; gap: 7px; }
.zude-card-cta__val { color: var(--zude-primary); }

/* Mini-tags de carte (surface / connectivité) — richesse que la réf n'a pas */
.zude-card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 2px; }
.zude-card-tag {
	display: inline-flex;
	align-items: center;
	font-size: .72rem;
	font-weight: 700;
	line-height: 1;
	padding: 5px 9px;
	border-radius: 999px;
	color: var(--zude-primary);
	background: color-mix(in srgb, var(--zude-primary) 8%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-primary) 16%, transparent);
	white-space: nowrap;
}
@media (max-width: 699px) { .zude-card-tag { font-size: .68rem; padding: 4px 8px; } }

/* ---- Facettes : accessibles sur mobile (bouton filtres visible + tiroir) ---- */
.zude-collection__toggle {
	font-weight: 700;
	box-shadow: 0 2px 10px rgba(20, 30, 26, .06);
}
@media (max-width: 899px) {
	.zude-collection__toggle { width: 100%; justify-content: center; }
}
/* Bouton « Réinitialiser tous les filtres » toujours lisible */
.zude-collection__reset-all { font-weight: 700; color: var(--zude-primary); }
/* Barre compteur + tri : respiration */
.zude-collection__bar { padding-bottom: 6px; border-bottom: 1px solid var(--zude-border); }

/* Pagination « Voir plus de produits » : bouton premium centré */
.zude-collection__more .zude-btn { min-width: 260px; font-weight: 700; }

/* ---- Onglets de textes de collection : marqueur d'accent + finition ---- */
.zude-col-onglets { margin-top: 40px; }
.zude-col-onglets .zude-onglets__tab-ico {
	display: none;
	width: 8px; height: 8px;
	border-radius: 50%;
	background: var(--zude-accent);
	margin-right: 8px;
	flex: 0 0 auto;
}
@media (min-width: 760px) {
	.zude-col-onglets .zude-onglets__tabs { gap: 6px; border-bottom-width: 2px; }
	.zude-col-onglets .zude-onglets__tab { display: inline-flex; align-items: center; padding: 13px 20px; font-size: .98rem; }
	.zude-col-onglets .zude-onglets__tab.is-active .zude-onglets__tab-ico { display: inline-block; }
	.zude-col-onglets .zude-onglets__panels { box-shadow: 0 6px 22px rgba(20, 30, 26, .06); }
	.zude-col-onglets .zude-onglets__content { padding: 24px 26px; line-height: 1.7; }
}
.zude-col-onglets .zude-onglets__summary { background: var(--zude-cream-soft, #faf6ee); }
.zude-col-onglets .zude-onglets__content > :first-child { margin-top: 0; }
.zude-col-onglets .zude-onglets__content > :last-child { margin-bottom: 0; }

/* ---- Brique 11 : gabarit unique de page collection ---- */
.zude-page-collection { display: block; }
.zude-page-collection > .zude-bulles:first-child { margin-top: 0; }
.zude-col-chapeau {
	font-size: 1.6rem;
	font-weight: 800;
	letter-spacing: -.01em;
	margin: 8px 0 18px;
	color: var(--zude-text);
}
@media (max-width: 699px) { .zude-col-chapeau { font-size: 1.3rem; } }

/* =========================================================================
   v1.7.7 — RESTYLING DU CORPS D'AVIS (P0 -> P2). Casser le mur de texte :
   colonne de lecture, accordeons numerotes, verdict qui pop, boites teintees,
   preuve sociale, « pour qui / pas pour qui », author box EEAT, mini-TOC
   sticky, anneau de note. 100 % tokenise : changer --zude-primary/--zude-accent
   dans la config re-skinne l'integralite de ce bloc (teintes = color-mix des
   tokens, jamais de couleur figee dans un composant).
   ========================================================================= */

/* ---- P0.1 — Colonne de lecture du redactionnel (les blocs data restent larges) ---- */
.zude-avis__prose,
.zude-avis__intro {
	max-width: var(--zude-reading);
}
.zude-avis__intro { font-size: 1.05rem; line-height: 1.7; color: var(--zude-ink); }
.zude-avis__intro > :first-child { margin-top: 0; }
.zude-avis__intro > :last-child { margin-bottom: 0; }
.zude-avis__tldr-body { max-width: var(--zude-reading); }

/* ---- P2.4 — Anneau de note globale (degrade --zude-primary -> --zude-accent) ---- */
.zude-avis__ring {
	--_ring-size: 76px;
	width: var(--_ring-size);
	height: var(--_ring-size);
	flex: 0 0 auto;
	border-radius: 50%;
	display: grid;
	place-items: center;
	background:
		conic-gradient(from 220deg,
			var(--zude-primary),
			var(--zude-accent) calc(var(--zude-ring-pct, 0) * 1%),
			color-mix(in srgb, var(--zude-ink) 12%, transparent) 0);
}
.zude-avis__ring-face {
	width: calc(var(--_ring-size) - 13px);
	height: calc(var(--_ring-size) - 13px);
	border-radius: 50%;
	background: var(--zude-surface);
	display: grid;
	place-items: center;
	line-height: 1;
	box-shadow: inset 0 1px 3px color-mix(in srgb, var(--zude-ink) 12%, transparent);
}
.zude-avis__ring-val { font-size: 1.5rem; font-weight: 800; letter-spacing: -.02em; color: var(--zude-primary); }
.zude-avis__ring-max { font-size: .58rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--zude-muted); margin-top: 1px; }

/* ---- P1.3 — Preuve sociale : carte « avis verifies » ---- */
.zude-avis__socialproof .zude-avis__proof {
	position: relative;
	display: flex;
	align-items: center;
	gap: 22px;
	flex-wrap: wrap;
	padding: 20px 24px 20px 26px;
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: 0 4px 16px color-mix(in srgb, var(--zude-ink) 5%, transparent);
	overflow: hidden;
}
.zude-avis__socialproof .zude-avis__proof::before {
	content: "";
	position: absolute;
	left: 0; top: 0; bottom: 0;
	width: 5px;
	background: var(--zude-accent);
}
.zude-avis__proof-score { display: flex; align-items: center; gap: 12px; }
.zude-avis__proof-val { font-size: 2.4rem; font-weight: 800; letter-spacing: -.03em; color: var(--zude-primary); line-height: 1; }
.zude-avis__proof-max { font-size: 1rem; font-weight: 700; color: var(--zude-muted); }
.zude-avis__proof-meta { display: flex; flex-direction: column; gap: 2px; }
.zude-avis__proof-count { font-weight: 800; font-size: 1.02rem; color: var(--zude-ink); }
.zude-avis__proof-note { font-size: .88rem; color: var(--zude-muted); line-height: 1.4; }

/* ---- P1.2 — Notes par critere : la liste des barres passe DANS une carte ---- */
.zude-avis__criteres .zude-avis__criteres-list {
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: 0 4px 16px color-mix(in srgb, var(--zude-ink) 5%, transparent);
	padding: 22px 24px;
}

/* ---- Region sections : accordeons (mini-TOC supprimé en v1.7.9, décision Jon) ---- */
.zude-avis__sections-region { display: block; }
.zude-avis__accordions { display: grid; gap: 16px; }

/* ---- P0.2 — Accordeons a pastille numerotee ---- */
.zude-avis__acc {
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: 0 4px 16px color-mix(in srgb, var(--zude-ink) 5%, transparent);
	overflow: hidden;
}
.zude-avis__acc-head {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 20px;
	cursor: pointer;
	list-style: none;
	user-select: none;
}
.zude-avis__acc-head::-webkit-details-marker { display: none; }
.zude-avis__acc-num {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--zude-primary);
	color: var(--zude-accent);
	font-weight: 800;
	font-size: 1rem;
	line-height: 1;
}
.zude-avis__acc-title {
	flex: 1 1 auto;
	font-family: var(--zude-font-title, var(--zude-font));
	font-weight: 800;
	font-size: 1.16rem;
	letter-spacing: -.01em;
	line-height: 1.3;
	color: var(--zude-ink);
}
.zude-avis__acc-chevron {
	flex: 0 0 auto;
	color: var(--zude-muted);
	display: inline-flex;
	transition: transform .2s ease, color .15s ease;
}
.zude-avis__acc[open] .zude-avis__acc-chevron { transform: rotate(180deg); color: var(--zude-primary); }
.zude-avis__acc-head:hover .zude-avis__acc-chevron { color: var(--zude-primary); }
.zude-avis__acc-body {
	padding: 2px 22px 22px 68px;
	font-size: .96rem;
	line-height: 1.72;
	color: color-mix(in srgb, var(--zude-ink) 74%, var(--zude-surface));
}
.zude-avis__acc-body > :first-child { margin-top: 0; }
.zude-avis__acc-body > :last-child { margin-bottom: 0; }
.zude-avis__acc-body h3 { font-size: 1.02rem; font-weight: 700; color: var(--zude-ink); margin: 18px 0 8px; }

/* Section « limites » : pastille d'alerte + corps en encadre ambre (P1.4) */
.zude-avis__acc--limits { border-color: color-mix(in srgb, var(--zude-warn) 40%, var(--zude-border)); }
.zude-avis__acc--limits .zude-avis__acc-num--warn { background: color-mix(in srgb, var(--zude-warn) 16%, var(--zude-surface)); color: var(--zude-warn); }
.zude-avis__acc--limits .zude-avis__acc-body {
	margin: 0 20px 20px 68px;
	padding: 16px 18px;
	background: color-mix(in srgb, var(--zude-warn) 7%, var(--zude-surface));
	border-left: 4px solid var(--zude-warn);
	border-radius: 0 10px 10px 0;
}
@media (max-width: 560px) {
	.zude-avis__acc-body { padding-left: 22px; }
	.zude-avis__acc--limits .zude-avis__acc-body { margin-left: 20px; }
}

/* ---- P2.1 — « Pour qui / Pas pour qui » (2 colonnes) ---- */
.zude-avis__fit-cols { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 620px) { .zude-avis__fit-cols { grid-template-columns: 1fr 1fr; } }
.zude-avis__fit-col {
	border-radius: var(--zude-radius);
	border: 1px solid var(--zude-border);
	padding: 20px 22px;
	background:
		linear-gradient(180deg,
			color-mix(in srgb, var(--zude-tile) 60%, var(--zude-surface)),
			var(--zude-surface));
}
.zude-avis__fit-col--yes { border-color: color-mix(in srgb, var(--zude-accent) 32%, transparent); }
.zude-avis__fit-col--no { border-color: color-mix(in srgb, var(--zude-negative) 26%, transparent); }
.zude-avis__fit-head {
	display: flex;
	align-items: center;
	gap: 9px;
	font-weight: 800;
	font-size: .96rem;
	margin-bottom: 12px;
	color: var(--zude-ink);
}
.zude-avis__fit-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	color: var(--zude-surface);
	font-size: .8rem;
	font-weight: 800;
}
.zude-avis__fit-col--yes .zude-avis__fit-ico { background: var(--zude-positive); }
.zude-avis__fit-col--no .zude-avis__fit-ico { background: var(--zude-negative); }
.zude-avis__fit-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.zude-avis__fit-list li { position: relative; padding-left: 20px; font-size: .95rem; line-height: 1.5; color: color-mix(in srgb, var(--zude-ink) 84%, var(--zude-surface)); }
.zude-avis__fit-list li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 6px; height: 6px; border-radius: 50%; }
.zude-avis__fit-col--yes .zude-avis__fit-list li::before { background: var(--zude-positive); }
.zude-avis__fit-col--no .zude-avis__fit-list li::before { background: var(--zude-negative); }

/* ---- P1.5 — Icone devant les titres de tableaux de specs ---- */
.zude-avis__spectable-title {
	display: flex;
	align-items: center;
	gap: 8px;
}
.zude-avis__spectable-title::before {
	content: "";
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
	background: var(--zude-primary);
	-webkit-mask: var(--_spec-ico) center / contain no-repeat;
	mask: var(--_spec-ico) center / contain no-repeat;
	--_spec-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='4' y1='21' x2='4' y2='14'/%3E%3Cline x1='4' y1='10' x2='4' y2='3'/%3E%3Cline x1='12' y1='21' x2='12' y2='12'/%3E%3Cline x1='12' y1='8' x2='12' y2='3'/%3E%3Cline x1='20' y1='21' x2='20' y2='16'/%3E%3Cline x1='20' y1='12' x2='20' y2='3'/%3E%3Cline x1='1' y1='14' x2='7' y2='14'/%3E%3Cline x1='9' y1='8' x2='15' y2='8'/%3E%3Cline x1='17' y1='16' x2='23' y2='16'/%3E%3C/svg%3E");
}

/* ---- P2.2 — Author box EEAT ---- */
.zude-avis__author-card {
	display: flex;
	align-items: flex-start;
	gap: 16px;
	padding: 20px 22px;
	background: color-mix(in srgb, var(--zude-tile) 55%, var(--zude-surface));
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
}
.zude-avis__author-avatar {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	background: var(--zude-primary);
	color: var(--zude-accent);
	font-family: var(--zude-font-title, var(--zude-font));
	font-weight: 800;
	font-size: 1.4rem;
	line-height: 1;
}
.zude-avis__author-body { display: flex; flex-direction: column; gap: 4px; }
.zude-avis__author-name { margin: 0; font-weight: 800; font-size: 1.02rem; color: var(--zude-ink); }
.zude-avis__author-cond { margin: 0; display: flex; align-items: center; gap: 7px; font-size: .92rem; color: color-mix(in srgb, var(--zude-ink) 80%, var(--zude-surface)); }
.zude-avis__author-ico { color: var(--zude-primary); display: inline-flex; flex: 0 0 auto; }
.zude-avis__author-dates { margin: 2px 0 0; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: .85rem; color: var(--zude-muted); }
.zude-avis__author-sep { color: var(--zude-border); }
.zude-avis__author-link { margin-top: 6px; font-weight: 700; font-size: .9rem; color: var(--zude-primary); text-decoration: none; }
.zude-avis__author-link:hover { text-decoration: underline; }

/* ---- P0.4 — Verdict qui POP : fond plein --zude-primary, texte blanc ---- */
.zude-avis__verdict .zude-avis__verdict-card {
	position: relative;
	background: var(--zude-primary);
	color: #fff;
	border-radius: var(--zude-radius);
	padding: 28px 30px 26px;
	box-shadow: 0 14px 40px color-mix(in srgb, var(--zude-primary) 34%, transparent);
	overflow: hidden;
}
.zude-avis__verdict .zude-avis__verdict-card::before {
	content: "";
	position: absolute;
	left: 0; right: 0; top: 0;
	height: 5px;
	background: var(--zude-accent);
}
.zude-avis__verdict-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.zude-avis__verdict-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--zude-accent);
	color: var(--zude-primary);
	flex: 0 0 auto;
}
.zude-avis__verdict-title {
	font-family: var(--zude-font-title, var(--zude-font));
	font-weight: 800;
	font-size: 1.2rem;
	letter-spacing: -.01em;
}
.zude-avis__verdict-score {
	margin-left: auto;
	font-weight: 800;
	font-size: 1.6rem;
	letter-spacing: -.02em;
	color: var(--zude-accent);
	line-height: 1;
}
.zude-avis__verdict-max { font-size: .9rem; font-weight: 700; color: color-mix(in srgb, var(--zude-accent) 80%, #fff); }
.zude-avis__verdict-body {
	color: color-mix(in srgb, #fff 88%, var(--zude-primary));
	font-size: 1.02rem;
	line-height: 1.68;
}
.zude-avis__verdict-body > :first-child { margin-top: 0; }
.zude-avis__verdict-body > :last-child { margin-bottom: 0; }
.zude-avis__verdict-body a { color: var(--zude-accent); text-decoration: underline; text-underline-offset: 2px; }
.zude-avis__verdict-cta { margin-top: 20px; }
.zude-avis__verdict-cta .zude-btns { margin: 0; }
.zude-avis__verdict-cta .zude-btn--primary {
	background: var(--zude-accent);
	color: var(--zude-primary);
	border-color: transparent;
	box-shadow: 0 8px 22px color-mix(in srgb, #000 22%, transparent);
}
.zude-avis__verdict-cta .zude-btn--primary:hover {
	background: color-mix(in srgb, var(--zude-accent) 88%, #fff);
	color: var(--zude-primary-dark);
}

/* ---- Respiration mobile ---- */
@media (max-width: 699px) {
	.zude-avis__verdict .zude-avis__verdict-card { padding: 22px 20px; }
	.zude-avis__verdict-score { font-size: 1.35rem; }
	.zude-avis__proof-val { font-size: 2rem; }
	.zude-avis__acc-title { font-size: 1.06rem; }
	.zude-avis__acc-head { gap: 12px; padding: 16px; }
	.zude-avis__ring { --_ring-size: 66px; }
}

/* ---- Accessibilite : respect de prefers-reduced-motion ---- */
@media (prefers-reduced-motion: reduce) {
	.zude-avis__acc-chevron,
	.zude-avis__toc-link { transition: none; }
}

/* =========================================================================
   v1.7.8 — SINGLE fly_produit : réduction du vide en tête (~150px constatés).
   Sur la fiche d'avis, la buy box arrive immédiatement (ni titre d'article ni
   image à la une du thème) : les 70px de margin-top du <main> + 70px de
   padding-top de son groupe interne = ~140px de vide inutile. On les réduit
   UNIQUEMENT sur nos pages produit (scopé body.single-fly_produit), jamais en
   global : aucun autre gabarit n'est touché.
   ========================================================================= */
body.single-fly_produit main.wp-block-group.is-layout-constrained { margin-top: 0 !important; }
body.single-fly_produit main.wp-block-group.is-layout-constrained > .wp-block-group.has-global-padding { padding-top: clamp(20px, 3vw, 34px) !important; }

/* =========================================================================
   v1.7.9 — LA CONSOLIDATION : la CARTE TOTALE (un seul conteneur), le résumé
   UNIQUE, la preuve sociale COMPACTE, 2 styles de boîtes max. Ce bloc passe
   APRÈS tout le reste : il gagne la cascade. Toute la donnée d'achat vit dans
   UN conteneur visuel — l'œil a un ancrage, l'acheteur pressé a tout sans
   scroller le texte.
   ========================================================================= */

/* ---- La carte totale : conteneur unique (flex vertical) ---- */
/* ---- v1.8.2 — Fil d'Ariane visible (au-dessus de la carte totale) ---- */
.zude-avis__breadcrumb { margin: 2px 0 16px; }
.zude-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	list-style: none;
	margin: 0;
	padding: 0;
	font-size: .8rem;
	line-height: 1.5;
	color: var(--zude-muted);
}
.zude-breadcrumb__item { display: inline-flex; align-items: center; min-width: 0; }
.zude-breadcrumb__item + .zude-breadcrumb__item::before {
	content: "\203A"; /* › */
	margin: 0 8px;
	color: color-mix(in srgb, var(--zude-muted) 60%, transparent);
	font-size: .95em;
}
.zude-breadcrumb__link { color: var(--zude-muted); text-decoration: none; transition: color .15s ease; }
.zude-breadcrumb__link:hover,
.zude-breadcrumb__link:focus-visible { color: var(--zude-primary); text-decoration: underline; }
.zude-breadcrumb__current {
	display: inline-block;
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--zude-ink);
	font-weight: 600;
}
@media (max-width: 640px) {
	.zude-breadcrumb { font-size: .78rem; }
	.zude-breadcrumb__current { max-width: 54vw; }
}

.zude-avis__buybox.zude-avis__card {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

/* HAUT de carte : la grille 2 colonnes (galerie | infos d'achat) */
.zude-avis__card-top {
	display: grid;
	grid-template-columns: 1fr;
	gap: 24px;
}
@media (min-width: 700px) {
	.zude-avis__card-top { grid-template-columns: 340px 1fr; align-items: start; }
}

/* BAS de carte : toute la donnée, pleine largeur, séparée par un filet */
.zude-avis__card-data {
	display: grid;
	gap: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--zude-border);
}

/* Intitulés compacts des sous-blocs de la carte (labels 12-13 px, filet court) */
.zude-avis__cardsec-h {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 10px;
	font-size: .78rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--zude-primary);
}
.zude-avis__cardsec-h::before {
	content: "";
	width: 14px; height: 3px;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--zude-primary), var(--zude-accent));
}

/* ---- « Pour qui | À éviter si » compact (colonne d'infos de la carte) ---- */
.zude-avis__fitmini {
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px 18px;
	margin: 4px 0 2px;
}
@media (min-width: 520px) { .zude-avis__fitmini { grid-template-columns: 1fr 1fr; } }
.zude-avis__fitmini-head {
	display: flex; align-items: center; gap: 6px;
	font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em;
	margin-bottom: 6px;
}
.zude-avis__fitmini-col--yes .zude-avis__fitmini-head { color: var(--zude-positive); }
.zude-avis__fitmini-col--no .zude-avis__fitmini-head { color: var(--zude-negative); }
.zude-avis__fitmini-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 5px; }
.zude-avis__fitmini-list li {
	position: relative; padding-left: 15px;
	font-size: .84rem; line-height: 1.4; color: var(--zude-muted);
}
.zude-avis__fitmini-list li::before {
	content: ""; position: absolute; left: 2px; top: .52em;
	width: 5px; height: 5px; border-radius: 50%;
}
.zude-avis__fitmini-col--yes .zude-avis__fitmini-list li::before { background: var(--zude-positive); }
.zude-avis__fitmini-col--no .zude-avis__fitmini-list li::before { background: var(--zude-negative); }

/* ---- Notes par critère : 6 barres en 2 colonnes de 3 (compactes), dans la carte ---- */
.zude-avis__cardcrit-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 10px 28px;
}
@media (min-width: 620px) { .zude-avis__cardcrit-grid { grid-template-columns: 1fr 1fr; } }
.zude-avis__cardcrit-grid .zude-avis__crit-head { margin-bottom: 4px; }
.zude-avis__cardcrit-grid .zude-avis__crit-label { font-size: .84rem; font-weight: 600; }
.zude-avis__cardcrit-grid .zude-avis__crit-note { font-size: .86rem; }
.zude-avis__cardcrit-grid .zude-avis__crit-bar { height: 8px; }

/* ---- Caractéristiques | Dimensions côte à côte, lignes serrées, labels 12-13 px ---- */
.zude-avis__cardspecs { display: grid; grid-template-columns: 1fr; gap: 10px 30px; }
@media (min-width: 620px) { .zude-avis__cardspecs { grid-template-columns: 1fr 1fr; } }
.zude-avis__cardsec--specs .zude-avis__spectable th,
.zude-avis__cardsec--specs .zude-avis__spectable td {
	padding: 9px 10px;
	font-size: .86rem;
	line-height: 1.35;
}
.zude-avis__cardsec--specs .zude-avis__spectable th {
	width: 52%;
	font-size: .82rem;      /* labels 13 px */
	font-weight: 500;
	color: var(--zude-muted);
}
.zude-avis__cardsec--specs .zude-spec__ico { width: 22px; height: 22px; margin-right: 8px; }
.zude-avis__cardsec--specs .zude-spec__ico svg { width: 14px; height: 14px; }

/* En-tête de tableau de la carte AVEC icône de famille (remplace le filet dégradé). */
.zude-avis__cardsec-h--spec::before { display: none; }
.zude-avis__cardsec-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 22px; height: 22px;
	border-radius: 6px;
	color: var(--zude-primary);
	background: color-mix(in srgb, var(--zude-primary) 9%, transparent);
}

/* ---- Bandeau retour / garantie (pleine largeur, dans la carte) ---- */
.zude-avis__guarantee {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 26px;
	padding: 12px 16px;
	background: var(--zude-tile, #fbfaf7);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
}
.zude-avis__guarantee-item { display: flex; align-items: center; gap: 9px; font-size: .84rem; color: var(--zude-muted); }
.zude-avis__guarantee-ico { color: var(--zude-primary); display: inline-flex; flex: 0 0 auto; }
.zude-avis__guarantee-lbl { font-weight: 700; color: var(--zude-text); }

/* ---- Pros / cons dans la carte : pas de marge de tête ---- */
.zude-avis__cardsec--proscons .zude-proscons { margin-top: 0; }

/* Livraison seule dans la colonne d'achat */
.zude-logistique--solo { margin-top: 12px; }

/* ---- STYLE 2 : encadré teinté d'accent — LE RÉSUMÉ UNIQUE (tldr + essentiel) ---- */
.zude-avis__resume {
	background: color-mix(in srgb, var(--zude-accent) 8%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-primary) 12%, transparent);
	border-left: 5px solid var(--zude-accent);
	border-radius: var(--zude-radius);
	padding: 22px 24px;
}
.zude-avis__resume-head { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.zude-avis__resume-ico { font-size: 1rem; }
.zude-avis__resume-title {
	font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .07em;
	color: var(--zude-primary);
}
.zude-avis__resume-tldr { font-size: 1.05rem; line-height: 1.55; color: var(--zude-text); }
.zude-avis__resume-tldr > :first-child { margin-top: 0; }
.zude-avis__resume-tldr > :last-child { margin-bottom: 0; }
.zude-avis__resume-list {
	list-style: none; margin: 14px 0 0; padding: 14px 0 0;
	border-top: 1px solid color-mix(in srgb, var(--zude-primary) 10%, transparent);
	display: grid; gap: 8px;
}
.zude-avis__resume-list li { position: relative; padding-left: 26px; line-height: 1.45; }
.zude-avis__resume-list li::before {
	content: "✓";
	position: absolute; left: 0; top: .1em;
	display: inline-flex; align-items: center; justify-content: center;
	width: 18px; height: 18px; border-radius: 50%;
	background: color-mix(in srgb, var(--zude-primary) 14%, transparent);
	color: var(--zude-primary); font-weight: 800; font-size: .72rem;
}

/* ---- Preuve sociale COMPACTE : une ligne (2e style, band teinté accent) ---- */
.zude-avis__socialproof--compact .zude-avis__proofbar {
	display: flex;
	align-items: center;
	gap: 8px 14px;
	flex-wrap: wrap;
	padding: 12px 18px;
	background: color-mix(in srgb, var(--zude-accent) 8%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-primary) 12%, transparent);
	border-left: 5px solid var(--zude-accent);
	border-radius: var(--zude-radius);
}
.zude-avis__proofbar-val { font-size: 1.5rem; font-weight: 800; letter-spacing: -.02em; color: var(--zude-primary); line-height: 1; }
.zude-avis__proofbar-max { font-size: .8rem; font-weight: 700; color: var(--zude-muted); }
.zude-avis__proofbar-count { font-weight: 800; font-size: .95rem; color: var(--zude-ink); }
.zude-avis__proofbar-note { font-size: .82rem; color: var(--zude-muted); flex: 1 1 200px; }
.zude-avis__proofbar-stars .zude-stars { display: inline-flex; }

/* Mobile : la carte totale respire, tout empile proprement */
@media (max-width: 619px) {
	.zude-avis__cardcrit-grid, .zude-avis__cardspecs, .zude-avis__fitmini { grid-template-columns: 1fr; }
	.zude-avis__proofbar-note { flex-basis: 100%; }
}

/* =========================================================================
   v1.7.9 (2e passe) — ergonomie : zébrage des sections, note clients dans la
   carte, sticky plus présente, affordance des accordéons renforcée.
   ========================================================================= */

/* ---- Note clients DANS la carte (sous l'anneau de note éditoriale) ---- */
.zude-avis__clientnote {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 3px 8px;
	margin: -4px 0 12px;
	font-size: .9rem;
	color: var(--zude-muted);
}
.zude-avis__clientnote-lbl { font-weight: 700; color: var(--zude-text); }
.zude-avis__clientnote-val { font-weight: 800; color: var(--zude-primary); }
.zude-avis__clientnote-max { font-size: .78em; font-weight: 700; color: var(--zude-muted); margin-left: 1px; }
.zude-avis__clientnote-sep { color: var(--zude-border); }

/* ---- ZÉBRAGE : une section plaine sur deux reçoit un fond très clair (délimite
   la descente de page). Le verdict (carte sombre) et le résumé (encadré accent)
   gardent leur style propre ; le pseudo-élément étend la bande dans la gouttière
   SANS insérer le contenu (largeur interne constante). ---- */
.zude-avis > section.zude-avis__block:nth-of-type(even):not(.zude-avis__verdict) {
	position: relative;
	padding-top: 30px;
	padding-bottom: 30px;
}
.zude-avis > section.zude-avis__block:nth-of-type(even):not(.zude-avis__verdict)::before {
	content: "";
	position: absolute;
	z-index: 0;
	top: 0;
	bottom: 0;
	left: clamp(-22px, -2vw, -10px);
	right: clamp(-22px, -2vw, -10px);
	background: color-mix(in srgb, var(--zude-primary) 3%, var(--zude-surface));
	border-radius: var(--zude-radius);
}
.zude-avis > section.zude-avis__block:nth-of-type(even):not(.zude-avis__verdict) > * {
	position: relative;
	z-index: 1;
}

/* ---- Sticky d'avis PLUS PRÉSENTE (hauteur + police légèrement supérieures) ---- */
.zude-sticky--avis { padding: 14px 16px calc(14px + env(safe-area-inset-bottom)); }
.zude-sticky--avis .zude-sticky__inner { gap: 16px; }
.zude-sticky--avis .zude-sticky__name { font-size: 1.05rem; }
.zude-sticky--avis .zude-btn { padding: 13px 22px; font-size: 1.02rem; }
.zude-sticky--avis .zude-btn__price { font-weight: 800; }
.zude-sticky--avis .zude-btn__sep { display: inline-block; width: 1px; height: 1em; margin: 0 4px; background: color-mix(in srgb, #fff 45%, transparent); }

/* ---- AFFORDANCE DES ACCORDÉONS : hover net sur tout le header + chevron en pastille ---- */
.zude-avis__acc-head { transition: background-color .15s ease; }
.zude-avis__acc-head:hover { background: color-mix(in srgb, var(--zude-primary) 5%, transparent); }
.zude-avis__acc:not([open]) .zude-avis__acc-head:hover { background: color-mix(in srgb, var(--zude-primary) 7%, transparent); }
.zude-avis__acc-chevron {
	width: 30px;
	height: 30px;
	border-radius: 50%;
	align-items: center;
	justify-content: center;
	background: color-mix(in srgb, var(--zude-primary) 8%, transparent);
	color: var(--zude-primary);
	transition: transform .2s ease, background-color .15s ease, color .15s ease;
}
.zude-avis__acc-head:hover .zude-avis__acc-chevron { background: color-mix(in srgb, var(--zude-accent) 34%, transparent); color: var(--zude-primary); }
.zude-avis__acc[open] .zude-avis__acc-chevron { background: color-mix(in srgb, var(--zude-primary) 12%, transparent); }

/* =========================================================================
   v1.8.0 — PATCH CARTES & GRILLES DE COLLECTION (analyse vision superviseur)
   1) Mobile ≤640px : GRILLE 2 COLONNES, cartes compactes (image, nom 2 lignes,
      étoiles+note sur une ligne, prix gras, 1 seul tag, CTA = lien discret).
   2) Desktop : cartes CALMES — carte entière cliquable (lien-calque du titre),
      gros bouton sombre → LIEN discret « Voir notre test → », enceinte UNIQUE
      (plus de double bordure image/carte), carte silencieuse au repos.
   3) Prix PROÉMINENT : pied de carte prix fort à gauche / lien à droite, aligné
      sur toutes les cartes voisines.
   Tokens sémantiques uniquement — zéro couleur en dur.
   ========================================================================= */

/* ---- (2c) ENCEINTE UNIQUE : le cartouche image ne porte plus de bordure ----
   (l'image bordée DANS la carte bordée créait une double enceinte). */
.zude-collection__card .zude-collection__media {
	border: 0;
	box-shadow: none;
	background: #fff;
}

/* ---- (2a) CARTE ENTIÈRE CLIQUABLE : lien-calque porté par le lien du titre ----
   Un SEUL <a> réel par carte (ancre = nom du produit → maillage/SEO), dont le
   ::after couvre toute la carte. Rien d'autre n'est interactif dans la carte. */
.zude-collection__card .zude-collection__cardlink { position: static; }
.zude-collection__card .zude-collection__cardlink::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: var(--zude-radius);
}
/* Focus VISIBLE porté par la carte (accessibilité) plutôt que par l'ancre seule. */
.zude-collection__card:focus-within {
	outline: 2px solid var(--zude-primary);
	outline-offset: 2px;
	border-color: var(--zude-primary);
}
.zude-collection__card .zude-collection__cardlink:focus,
.zude-collection__card .zude-collection__cardlink:focus-visible { outline: none; }
/* Carte SILENCIEUSE au repos : le lien du titre ne se colore plus au survol du
   seul texte (l'affordance vit dans le pied « Voir notre test → »). */
.zude-collection__card .zude-collection__cardlink:hover { color: inherit; }

/* ---- (3) PIED DE CARTE : prix fort à gauche, lien discret à droite ---- */
.zude-collection__card .zude-card-cta {
	flex-direction: row;
	align-items: center;
	justify-content: flex-start;
	flex-wrap: wrap;          /* prix + lien sur une ligne ; le lien passe dessous si trop étroit */
	gap: 6px 10px;
	margin-top: auto;
	padding-top: 12px;
	border-top: 1px solid var(--zude-border);
}
.zude-collection__card .zude-card-cta__price {
	flex-direction: row;
	align-items: baseline;
	flex-wrap: nowrap;
	white-space: nowrap;      /* « dès 1 499,95 € » ne se coupe JAMAIS en plein milieu */
	gap: 5px;
	margin: 0;
}
.zude-collection__card .zude-card-cta__val {
	font-size: 1.125rem;      /* ~18px — prix proéminent */
	font-weight: 800;
	color: var(--zude-text);
	letter-spacing: -.01em;
}
.zude-collection__card .zude-card-cta__price--promo .zude-card-cta__val { color: var(--zude-negative); }

/* ---- (2b) LIEN DISCRET « Voir notre test → » (remplace le bouton plein) ----
   Repos : couleur primaire, graisse 600. Survol de la carte : passe à l'accent,
   se souligne, la flèche glisse. */
.zude-collection__card .zude-card-cta__link {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	margin-left: auto;                 /* toujours calé à droite, même sans prix */
	font-size: .9rem;
	font-weight: 600;
	color: var(--zude-primary);
	white-space: nowrap;
	transition: color .15s ease;
}
.zude-collection__card .zude-card-cta__link .zude-arrow { transition: transform .15s ease; }
.zude-collection__card .zude-card-cta__link-lbl--m { display: none; }  /* libellé court = mobile */
.zude-collection__card:hover .zude-card-cta__link {
	/* « passe à l'accent » — teinte dérivée de --zude-accent, gardée lisible sur blanc. */
	color: color-mix(in srgb, var(--zude-accent) 60%, var(--zude-primary));
	text-decoration: underline;
	text-underline-offset: 3px;
}
.zude-collection__card:hover .zude-card-cta__link .zude-arrow { transform: translateX(3px); }

/* ---- (1) MOBILE ≤640px : grille 2 colonnes + cartes compactes ---- */
@media (max-width: 640px) {
	.zude-collection__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 11px;
	}
	.zude-collection__card { padding: 10px; }
	.zude-collection__card .zude-collection__media { padding: 8px; margin-bottom: 8px; }

	/* Nom : 2 lignes max, hauteur FIXE (pieds alignés entre voisines). */
	.zude-collection__card .zude-grille__title {
		font-size: .84rem;
		line-height: 1.25;
		margin: 0 0 4px;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		overflow: hidden;
		min-height: calc(.84rem * 1.25 * 2);
	}
	/* Étoiles + note compactes, sur une ligne. */
	.zude-collection__card .zude-stars { gap: 1px; }
	.zude-collection__card .zude-stars .zude-star { width: 14px; height: 14px; }
	.zude-collection__card .zude-stars-val { font-size: .78rem; margin-left: 4px; }

	/* Tags → un SEUL (le premier) en mobile. */
	.zude-collection__card .zude-card-tags { margin: 5px 0 2px; }
	.zude-collection__card .zude-card-tags .zude-card-tag ~ .zude-card-tag { display: none; }

	/* Pied compact : sur 2 colonnes étroites, on EMPILE proprement — prix gras sur
	   sa ligne, puis lien « Voir le test → » discret dessous (jamais tronqué). */
	.zude-collection__card .zude-card-cta {
		flex-direction: column;
		align-items: flex-start;
		gap: 3px;
		padding-top: 8px;
	}
	.zude-collection__card .zude-card-cta__from { font-size: .7rem; }
	.zude-collection__card .zude-card-cta__val { font-size: 1rem; }
	.zude-collection__card .zude-card-cta__link { margin-left: 0; font-size: .76rem; gap: 3px; }
	.zude-collection__card .zude-card-cta__link .zude-arrow { width: 13px; height: 13px; }
	.zude-collection__card .zude-card-cta__link-lbl--d { display: none; }
	.zude-collection__card .zude-card-cta__link-lbl--m { display: inline; }
}

/* =========================================================================
   v1.8.0 (retour Jon) — MOBILE ≤640px : PETITES GOUTTIÈRES LATÉRALES
   Le thème de blocs (Twenty Twenty-Five) empile DEUX/TROIS paddings globaux
   (main + groupe interne + post-content = ~60px de gouttière à 390px) : le
   contenu des pages plugin — gabarit d'AVIS et pages de COLLECTION — étouffe.
   On ramène à ~14px TOTAL du bord de l'écran, sans jamais provoquer de scroll
   horizontal. Ciblage `:has()` sur le body : n'affecte QUE les pages qui portent
   un composant fly de tête (avis / collection), pas le reste du site.
   Spécificité élevée (body + main) → l'emporte sur les styles globaux du thème.
   ========================================================================= */
@media (max-width: 640px) {
	body:has(.zude-avis, .zude-collection, .zude-page-collection) main.has-global-padding,
	body:has(.zude-avis, .zude-collection, .zude-page-collection) main.has-global-padding > .wp-block-group.has-global-padding {
		padding-left: 0;
		padding-right: 0;
	}
	body:has(.zude-avis, .zude-collection, .zude-page-collection) .entry-content.wp-block-post-content {
		padding-left: 14px;
		padding-right: 14px;
		margin-left: 0;
		margin-right: 0;
	}
}


/* =========================================================================
   v1.8.4 — [fly_contact] : formulaire de contact (carte standard, tokens)
   ========================================================================= */
.zude-contact {
	max-width: 640px;
	margin: 24px auto;
	padding: clamp(20px, 4vw, 32px);
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: var(--zude-shadow);
}
.zude-contact__title { margin: 0 0 18px; font-size: 1.4rem; font-weight: 800; color: var(--zude-text); }
/* Honeypot : hors écran, mais pas display:none (certains bots l'ignorent). */
.zude-contact__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.zude-contact__form { display: grid; gap: 16px; }
.zude-contact__row { display: grid; gap: 6px; }
.zude-contact__label { font-size: .9rem; font-weight: 700; color: var(--zude-text); }
.zude-contact__input {
	width: 100%;
	box-sizing: border-box;
	padding: 12px 14px;
	font: inherit;
	color: var(--zude-text);
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: calc(var(--zude-radius) - 6px);
	transition: border-color .15s ease, box-shadow .15s ease;
}
.zude-contact__input::placeholder { color: var(--zude-muted); }
.zude-contact__input:focus {
	outline: none;
	border-color: var(--zude-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--zude-primary) 18%, transparent);
}
.zude-contact__input.is-error { border-color: var(--zude-negative); }
.zude-contact__textarea { resize: vertical; min-height: 130px; line-height: 1.6; }
.zude-contact__err { font-size: .82rem; color: var(--zude-negative); font-weight: 600; }
.zude-contact__submit { justify-content: center; margin-top: 2px; }
.zude-contact__notice {
	margin: 0 0 18px;
	padding: 13px 16px;
	border-radius: calc(var(--zude-radius) - 6px);
	font-size: .95rem;
	line-height: 1.5;
	border: 1px solid transparent;
}
.zude-contact__notice--ok {
	color: var(--zude-primary);
	background: color-mix(in srgb, var(--zude-accent) 14%, var(--zude-surface));
	border-color: color-mix(in srgb, var(--zude-primary) 22%, transparent);
}
.zude-contact__notice--err {
	color: var(--zude-negative);
	background: color-mix(in srgb, var(--zude-negative) 8%, var(--zude-surface));
	border-color: color-mix(in srgb, var(--zude-negative) 30%, transparent);
}
@media (max-width: 640px) {
	.zude-contact { margin: 16px 0; }
}

/* =========================================================================
   v1.9.0 — GABARIT VERSUS ([fly_versus]) + HUB ([fly_versus_hub]).
   100 % tokens semantiques. Memes standards que la carte d'avis / collections
   1.8.x : cartes radius 14, ombres douces, zebrage de sections, gouttieres
   mobiles 14-16 px, colonnes jumelles teintees (lime/terracotta). L'utilisateur
   doit pouvoir trancher SANS lire un paragraphe (hero + express + tableau + P/F).
   ========================================================================= */
.zude-versus { display: flex; flex-direction: column; gap: 30px; }
.zude-versus__block { scroll-margin-top: 90px; }
.zude-versus__h {
	font-size: 1.3rem;
	font-weight: 800;
	line-height: 1.25;
	margin: 0 0 16px;
	color: var(--zude-text);
}

/* Grilles produits (2 ou 3 colonnes ; le hero intercale des separateurs VS). */
.zude-versus__cols { display: grid; gap: 14px; }
.zude-versus__cols--2 { grid-template-columns: 1fr; }
.zude-versus__cols--3 { grid-template-columns: 1fr; }

/* ---- 1. HERO du duel ---- */
.zude-versus__hero {
	align-items: stretch;
	gap: 12px;
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: var(--zude-shadow);
	padding: 18px;
}
.zude-versus__col {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 10px;
	background: var(--zude-tile);
	border: 1px solid var(--zude-border);
	border-radius: calc(var(--zude-radius) - 2px);
	padding: 16px 14px;
}
.zude-versus__media { display: block; }
.zude-versus__media .zude-img { max-height: 190px; width: auto; border-radius: calc(var(--zude-radius) - 6px); }
.zude-versus__name { font-size: 1.12rem; font-weight: 800; line-height: 1.25; margin: 0; }
.zude-versus__name a { color: var(--zude-text); text-decoration: none; }
.zude-versus__name a:hover { color: var(--zude-primary); text-decoration: underline; }
.zude-versus__rating { display: flex; align-items: center; gap: 10px; }
.zude-versus__badge {
	margin: 0;
	font-size: .82rem;
	line-height: 1.3;
	color: color-mix(in srgb, var(--zude-primary) 82%, #000);
	background: color-mix(in srgb, var(--zude-accent) 22%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-accent) 40%, transparent);
	border-radius: var(--zude-radius-pill, 999px);
	padding: 5px 12px;
	font-weight: 600;
}
.zude-versus__badge-lbl { font-weight: 800; text-transform: uppercase; letter-spacing: .02em; font-size: .72rem; }
.zude-versus__buy { margin-top: auto; width: 100%; display: flex; flex-direction: column; gap: 8px; align-items: center; }
.zude-versus__buy .zude-price-lead { margin: 4px 0 2px; }
.zude-versus__buy .zude-btns { width: 100%; }
.zude-versus__avis { width: 100%; justify-content: center; }
.zude-versus__vs { display: flex; align-items: center; justify-content: center; font-weight: 900; letter-spacing: .04em; }
.zude-versus__vs span {
	display: inline-grid; place-items: center;
	width: 44px; height: 44px; border-radius: 999px;
	background: var(--zude-primary); color: #fff;
	font-size: .95rem;
	box-shadow: var(--zude-shadow);
}

/* ---- 2. Verdict express ---- */
.zude-versus__express {
	background: color-mix(in srgb, var(--zude-accent) 12%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-accent) 34%, transparent);
	border-left: 4px solid var(--zude-accent);
	border-radius: var(--zude-radius);
	padding: 16px 20px;
}
.zude-versus__express-head {
	display: flex; align-items: center; gap: 8px;
	font-weight: 800; font-size: .82rem; text-transform: uppercase; letter-spacing: .04em;
	color: color-mix(in srgb, var(--zude-primary) 78%, #000);
	margin-bottom: 6px;
}
.zude-versus__express-ico { font-size: 1rem; }
.zude-versus__express-body > :first-child { margin-top: 0; }
.zude-versus__express-body > :last-child { margin-bottom: 0; }

/* ---- 3. Tableau de duel ---- */
.zude-versus__table-wrap { overflow-x: auto; border-radius: var(--zude-radius); border: 1px solid var(--zude-border); box-shadow: var(--zude-shadow); }
.zude-versus__table { width: 100%; border-collapse: collapse; table-layout: fixed; background: var(--zude-surface); }
.zude-versus__table thead th {
	vertical-align: bottom;
	padding: 14px 12px;
	background: color-mix(in srgb, var(--zude-primary) 5%, var(--zude-surface));
	border-bottom: 2px solid color-mix(in srgb, var(--zude-primary) 16%, transparent);
}
.zude-versus__th-row { text-align: left; font-weight: 700; color: var(--zude-text); font-size: .92rem; width: 34%; }
.zude-versus__th-ico { display: inline-flex; vertical-align: -3px; margin-right: 7px; color: color-mix(in srgb, var(--zude-primary) 55%, var(--zude-muted)); }
.zude-versus__th-prod { display: flex; flex-direction: column; align-items: center; gap: 7px; text-align: center; }
.zude-versus__th-media .zude-img { width: 54px; height: 54px; object-fit: contain; border-radius: 8px; background: var(--zude-tile); }
.zude-versus__th-name { font-weight: 800; font-size: .9rem; line-height: 1.25; }
.zude-versus__grouprow th {
	text-align: left;
	font-size: .76rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: color-mix(in srgb, var(--zude-primary) 70%, var(--zude-muted));
	background: color-mix(in srgb, var(--zude-primary) 8%, var(--zude-surface));
	padding: 9px 12px;
}
.zude-versus__table tbody tr { border-bottom: 1px solid var(--zude-border); }
.zude-versus__table tbody td, .zude-versus__table tbody th { padding: 12px; }
.zude-versus__table tbody th.zude-versus__th-row { font-weight: 600; color: var(--zude-text); }
.zude-versus__cell { text-align: center; vertical-align: middle; font-weight: 600; color: var(--zude-text); }
.zude-versus__cell .zude-spec__num { font-weight: 800; }
.zude-versus__cell .zude-spec__unit { color: var(--zude-muted); font-weight: 600; margin-left: 3px; font-size: .9em; }
.zude-versus__cell.is-win { background: color-mix(in srgb, var(--zude-accent) 14%, transparent); }
.zude-versus__win { color: color-mix(in srgb, var(--zude-accent) 45%, var(--zude-primary)); font-weight: 900; margin-left: 3px; }
.zude-versus__dash { color: var(--zude-muted); }
.zude-versus__note { display: inline-flex; flex-direction: column; align-items: center; gap: 5px; min-width: 76px; }
.zude-versus__note-val { font-weight: 800; font-size: 1.02rem; }
.zude-versus__note-max { color: var(--zude-muted); font-weight: 600; font-size: .82em; }
.zude-versus__note-bar { width: 100%; height: 6px; border-radius: 999px; background: color-mix(in srgb, var(--zude-muted) 18%, transparent); overflow: hidden; }
.zude-versus__note-fill { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--zude-primary), var(--zude-accent)); }
.zude-versus__cell--note.is-win .zude-versus__note-val { color: color-mix(in srgb, var(--zude-primary) 80%, #000); }

/* ---- 4. Forces & faiblesses face a face ---- */
.zude-versus__pc-cols { display: grid; gap: 14px; }
.zude-versus__pc-col {
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: var(--zude-shadow);
	overflow: hidden;
}
.zude-versus__pc-prod {
	font-weight: 800; font-size: 1rem; text-align: center;
	padding: 12px 14px;
	background: color-mix(in srgb, var(--zude-primary) 6%, var(--zude-surface));
	border-bottom: 1px solid var(--zude-border);
}
.zude-versus__pc-pros, .zude-versus__pc-cons { padding: 14px 16px; }
.zude-versus__pc-pros { background: color-mix(in srgb, var(--zude-accent) 9%, var(--zude-surface)); }
.zude-versus__pc-cons { background: color-mix(in srgb, var(--zude-negative) 7%, var(--zude-surface)); border-top: 1px solid var(--zude-border); }
.zude-versus__pc-lbl { display: flex; align-items: center; gap: 7px; font-weight: 800; font-size: .9rem; margin-bottom: 9px; }
.zude-versus__pc-pros .zude-versus__pc-lbl { color: color-mix(in srgb, var(--zude-primary) 82%, #000); }
.zude-versus__pc-cons .zude-versus__pc-lbl { color: var(--zude-negative); }
.zude-versus__pc-ico { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 999px; color: #fff; font-size: .72rem; font-weight: 900; }
.zude-versus__pc-pros .zude-versus__pc-ico { background: var(--zude-positive); }
.zude-versus__pc-cons .zude-versus__pc-ico { background: var(--zude-negative); }
.zude-versus__pc-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; }
.zude-versus__pc-col li { position: relative; padding-left: 22px; line-height: 1.45; font-size: .94rem; }
.zude-versus__pc-pros li::before, .zude-versus__pc-cons li::before { content: ""; position: absolute; left: 4px; top: .5em; width: 8px; height: 8px; border-radius: 2px; }
.zude-versus__pc-pros li::before { background: var(--zude-positive); }
.zude-versus__pc-cons li::before { background: var(--zude-negative); }
.zude-versus__pc-empty { color: var(--zude-muted); font-style: italic; padding-left: 0 !important; }
.zude-versus__pc-empty::before { display: none !important; }

/* ---- 5. Choisissez X si... ---- */
.zude-versus__choose-cols { display: grid; gap: 14px; }
.zude-versus__choose-col {
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: var(--zude-shadow);
	overflow: hidden;
}
.zude-versus__choose-head {
	font-weight: 800; font-size: 1rem;
	padding: 13px 16px;
	color: #fff;
	background: linear-gradient(120deg, var(--zude-primary), color-mix(in srgb, var(--zude-primary) 60%, var(--zude-accent)));
}
.zude-versus__choose-body { padding: 14px 16px; }
.zude-versus__choose-body > :first-child { margin-top: 0; }
.zude-versus__choose-body > :last-child { margin-bottom: 0; }
.zude-versus__choose-body ul { margin: 0; padding-left: 1.1em; display: grid; gap: 6px; }

/* ---- 6-7. Ce qui les separe / Verdict ---- */
.zude-versus__separe .zude-avis__prose > :first-child,
.zude-versus__verdict .zude-avis__prose > :first-child { margin-top: 0; }
.zude-versus__verdict {
	background: color-mix(in srgb, var(--zude-primary) 6%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-primary) 16%, transparent);
	border-radius: var(--zude-radius);
	padding: 18px 20px;
}
.zude-versus__verdict .zude-versus__h { margin-bottom: 10px; }

/* ---- 9. Maillage ---- */
.zude-versus__links {
	background: var(--zude-cream-soft, var(--zude-surface));
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	padding: 16px 20px;
}
.zude-versus__links-list { margin: 0; padding-left: 1.1em; display: grid; gap: 8px; }
.zude-versus__links-list a { color: var(--zude-primary); font-weight: 600; }

/* ---- HUB /versus/ ---- */
/* v2.17.9 (C124) : grille responsive (1 col mobile → 2-3 desktop) + pagination */
.zude-versus-hub { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.zude-versus-hub__pagination {
	display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
	gap: 8px; margin-top: 22px;
}
.zude-versus-hub__page {
	display: inline-block; min-width: 38px; text-align: center;
	padding: 8px 12px; border-radius: 999px;
	border: 1px solid var(--zude-border); background: var(--zude-surface);
	color: var(--zude-text); font-weight: 700; text-decoration: none;
	transition: transform .15s ease, box-shadow .15s ease;
}
.zude-versus-hub__page:hover { transform: translateY(-1px); box-shadow: var(--zude-shadow); }
.zude-versus-hub__page--active { background: var(--zude-primary); border-color: var(--zude-primary); color: #fff; }
.zude-versus-hub__card {
	display: flex; flex-direction: column; gap: 10px;
	text-decoration: none; color: var(--zude-text);
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: var(--zude-shadow);
	padding: 16px;
	transition: transform .18s ease, box-shadow .18s ease;
}
.zude-versus-hub__card:hover { transform: translateY(-2px); box-shadow: var(--zude-shadow-lg); }
.zude-versus-hub__faces { display: flex; align-items: center; justify-content: center; gap: 10px; }
.zude-versus-hub__face .zude-img { width: 84px; height: 84px; object-fit: contain; background: var(--zude-tile); border-radius: 10px; padding: 4px; }
.zude-versus-hub__vs { font-weight: 900; font-size: .82rem; color: #fff; background: var(--zude-primary); border-radius: 999px; padding: 4px 8px; }
.zude-versus-hub__title { font-weight: 800; font-size: 1.05rem; line-height: 1.3; text-align: center; }
.zude-versus-hub__meta { display: flex; flex-direction: column; gap: 3px; align-items: center; color: var(--zude-muted); font-size: .88rem; }
.zude-versus-hub__note { color: color-mix(in srgb, var(--zude-primary) 70%, #000); font-weight: 800; }
.zude-versus-hub__cta { margin-top: 4px; text-align: center; font-weight: 700; color: var(--zude-primary); }
.zude-versus-hub__empty { color: var(--zude-muted); }

/* ---- Maintenance wall (mode maintenance fly-blocks) ---- */
.zude-maint {
	min-height: 100vh; margin: 0;
	display: flex; align-items: center; justify-content: center;
	background: var(--zude-bg, #faf7f0);
	font-family: var(--zude-font, system-ui, sans-serif);
	color: var(--zude-text, #1a1f1c);
	padding: 24px;
}
.zude-maint__card {
	width: 100%; max-width: 420px; text-align: center;
	background: var(--zude-surface, #fff);
	border: 1px solid var(--zude-border, rgba(20,30,26,.08));
	border-radius: var(--zude-radius, 14px);
	box-shadow: 0 14px 40px rgba(20,30,26,.16);
	padding: 34px 28px;
}
.zude-maint__logo { max-width: 180px; height: auto; margin: 0 auto 18px; display: block; }
.zude-maint__title { font-size: 1.5rem; font-weight: 800; margin: 0 0 8px; }
.zude-maint__text { color: var(--zude-muted, #5f6b63); margin: 0 0 22px; line-height: 1.5; }
.zude-maint__form { display: flex; flex-direction: column; gap: 12px; }
.zude-maint__input {
	width: 100%; padding: 12px 14px; font-size: 1rem;
	border: 1px solid var(--zude-border, rgba(20,30,26,.15));
	border-radius: var(--zude-radius, 14px); background: var(--zude-surface, #fff); color: inherit;
}
.zude-maint__input:focus { outline: 2px solid var(--zude-primary, #12302a); outline-offset: 1px; }
.zude-maint__btn {
	width: 100%; padding: 12px 18px; font-size: 1rem; font-weight: 700; cursor: pointer;
	border: 0; border-radius: 999px;
	background: var(--zude-primary, #12302a); color: #fff;
}
.zude-maint__btn:hover { background: color-mix(in srgb, var(--zude-primary, #12302a) 85%, #000); }
.zude-maint__err { color: var(--zude-negative, #c1543a); font-size: .9rem; margin: 0; }

/* ---- Desktop (>= 700px) : colonnes cote a cote ---- */
@media (min-width: 700px) {
	.zude-versus__hero { display: flex; }
	.zude-versus__col { flex: 1; }
	.zude-versus__pc-cols.zude-versus__cols--2, .zude-versus__choose-cols.zude-versus__cols--2 { grid-template-columns: 1fr 1fr; }
	.zude-versus__pc-cols.zude-versus__cols--3, .zude-versus__choose-cols.zude-versus__cols--3 { grid-template-columns: 1fr 1fr 1fr; }
	.zude-versus-hub { grid-template-columns: 1fr 1fr; }

	/* v1.9.2 — Points forts/faibles ALIGNÉS entre produits : la rangée « Points
	   forts » et la rangée « Points faibles » partagent la même ligne de grille
	   d'un produit à l'autre (subgrid), quelle que soit la longueur des listes.
	   Chaque carte produit garde son nom / ses forts / ses faibles, mais leurs
	   hauteurs se calent sur la carte voisine → les « Points faibles » démarrent
	   toujours à la même hauteur. En mobile (< 700px) chaque carte reste empilée
	   dans son ordre logique (forts A, faibles A, puis forts B, faibles B). */
	.zude-versus__pc-cols.zude-versus__cols--2,
	.zude-versus__pc-cols.zude-versus__cols--3 {
		grid-template-rows: auto auto auto; /* nom · forts · faibles */
		row-gap: 0;
		column-gap: 18px;
		align-items: start;
	}
	.zude-versus__pc-cols .zude-versus__pc-col {
		display: grid;
		grid-template-rows: subgrid;
		grid-row: span 3;
	}
}
@media (min-width: 1000px) {
	.zude-versus-hub { grid-template-columns: 1fr 1fr 1fr; }
}

/* ---- Mobile : empilement net, gouttieres 14-16 px ---- */
@media (max-width: 699px) {
	.zude-versus { gap: 24px; }
	.zude-versus__hero { flex-direction: column; }
	.zude-versus__vs { padding: 2px 0; }
	.zude-versus__vs span { width: 38px; height: 38px; font-size: .85rem; }
	.zude-versus__table { min-width: 340px; }
	.zude-versus__th-row { width: 40%; font-size: .85rem; }
	.zude-versus__table tbody td, .zude-versus__table tbody th { padding: 10px 8px; }
	.zude-versus__note { min-width: 60px; }
}

/* ---- v1.9.0 — Ecarts decisifs (deltas) du versus ---- */
.zude-versus__deltas {
	margin: 0 0 16px;
	background: color-mix(in srgb, var(--zude-warm, #f0a830) 12%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-warm, #f0a830) 34%, transparent);
	border-radius: var(--zude-radius);
	padding: 14px 18px;
}
.zude-versus__deltas-head {
	display: flex; align-items: center; gap: 8px;
	font-weight: 800; font-size: .82rem; text-transform: uppercase; letter-spacing: .04em;
	color: color-mix(in srgb, var(--zude-warm, #cf9223) 55%, #000);
	margin-bottom: 8px;
}
.zude-versus__deltas-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; }
.zude-versus__deltas-list li { line-height: 1.4; font-size: .95rem; }
.zude-versus__deltas-lbl { font-weight: 700; }
.zude-versus__deltas-vals { font-weight: 600; }
.zude-versus__deltas-vs { color: var(--zude-muted); font-weight: 700; font-size: .82em; padding: 0 2px; }
.zude-versus__deltas-win { color: color-mix(in srgb, var(--zude-primary) 78%, #000); font-weight: 700; }
.zude-versus__table tbody tr.is-decisive { background: color-mix(in srgb, var(--zude-warm, #f0a830) 9%, transparent); }
.zude-versus__table tbody tr.is-decisive th.zude-versus__th-row { box-shadow: inset 3px 0 0 var(--zude-warm, #f0a830); }
.zude-versus__decbadge {
	display: inline-block; margin-left: 6px; vertical-align: middle;
	font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em;
	color: color-mix(in srgb, var(--zude-warm, #cf9223) 55%, #000);
	background: color-mix(in srgb, var(--zude-warm, #f0a830) 22%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-warm, #f0a830) 40%, transparent);
	border-radius: 999px; padding: 2px 7px; white-space: nowrap;
}

/* ---- v1.9.0 — [fly_banniere] : banniere de conversion interne (articles) ---- */
.zude-banniere {
	display: flex; align-items: center; gap: 18px;
	margin: 26px 0;
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	box-shadow: var(--zude-shadow);
	padding: 16px 18px;
	transition: transform .18s ease, box-shadow .18s ease;
	position: relative;
}
.zude-banniere:hover { transform: translateY(-2px); box-shadow: var(--zude-shadow-lg); }
.zude-banniere__media { flex: 0 0 auto; display: block; }
.zude-banniere__media .zude-img { width: 120px; height: 120px; object-fit: contain; background: var(--zude-tile); border-radius: calc(var(--zude-radius) - 4px); padding: 6px; }
.zude-banniere__body { flex: 1 1 auto; display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.zude-banniere__kicker { font-size: .7rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: color-mix(in srgb, var(--zude-primary) 60%, var(--zude-muted)); }
.zude-banniere__name { font-size: 1.15rem; font-weight: 800; line-height: 1.25; color: var(--zude-text); }
.zude-banniere__rating .zude-stars { display: inline-flex; align-items: center; }
.zude-banniere__accroche { color: var(--zude-muted); line-height: 1.4; font-size: .95rem; }
.zude-banniere__cta-wrap { flex: 0 0 auto; }
.zude-banniere__cta { white-space: nowrap; }
@media (max-width: 640px) {
	.zude-banniere { flex-direction: column; align-items: stretch; text-align: center; gap: 12px; }
	.zude-banniere__media { align-self: center; }
	.zude-banniere__body { align-items: center; }
	.zude-banniere__cta { width: 100%; justify-content: center; }
}

/* ---- v1.9.2 — [fly_banniere] variante « pub display » (zude-banniere--ad) ----
   Fond dégradé aux couleurs de la marque (tokens --zude-*), image produit
   DÉTOURÉE qui ressort sur un halo d'accent, accroche courte, CTA contrasté. */
.zude-banniere--ad {
	position: relative;
	overflow: hidden;
	gap: clamp(18px, 3vw, 34px);
	padding: clamp(20px, 3.2vw, 30px) clamp(22px, 3.4vw, 36px);
	border: none;
	color: #fff;
	background:
		linear-gradient(135deg,
			var(--zude-primary, #12302a) 0%,
			color-mix(in srgb, var(--zude-primary, #12302a) 74%, #000) 100%);
	box-shadow: var(--zude-shadow-lg, 0 18px 40px rgba(0,0,0,.22));
}
.zude-banniere--ad:hover { transform: translateY(-2px); box-shadow: var(--zude-shadow-lg); }
/* Halo d'accent derrière le produit, effet « spot » de pub. */
.zude-banniere__glow {
	position: absolute; right: clamp(-60px, -3vw, -20px); top: 50%;
	width: clamp(260px, 36vw, 420px); height: clamp(260px, 36vw, 420px);
	transform: translateY(-50%);
	background: radial-gradient(circle at center,
		color-mix(in srgb, var(--zude-accent, #b6e34b) 62%, transparent) 0%,
		color-mix(in srgb, var(--zude-accent, #b6e34b) 20%, transparent) 42%,
		transparent 70%);
	pointer-events: none; z-index: 0;
}
.zude-banniere--ad .zude-banniere__body,
.zude-banniere--ad .zude-banniere__media { position: relative; z-index: 1; }
.zude-banniere--ad .zude-banniere__body { gap: 8px; }
.zude-banniere--ad .zude-banniere__kicker {
	color: var(--zude-accent, #b6e34b);
	font-size: .72rem; letter-spacing: .09em;
}
.zude-banniere--ad .zude-banniere__name {
	color: #fff; font-size: clamp(1.28rem, 2.5vw, 1.72rem); line-height: 1.18;
	letter-spacing: -.01em;
}
.zude-banniere--ad .zude-banniere__accroche {
	color: color-mix(in srgb, #fff 84%, transparent);
	font-size: 1rem; line-height: 1.45; max-width: 44ch;
}
.zude-banniere--ad .zude-banniere__rating { filter: drop-shadow(0 1px 2px rgba(0,0,0,.3)); }
.zude-banniere--ad .zude-stars-val { color: color-mix(in srgb, #fff 92%, transparent); font-weight: 700; }
.zude-banniere--ad .zude-banniere__cta-wrap { margin-top: 6px; }
.zude-banniere--ad .zude-banniere__cta {
	background: var(--zude-accent, #b6e34b);
	color: var(--zude-primary, #12302a);
	border: 1px solid var(--zude-accent, #b6e34b);
	font-weight: 800;
	box-shadow: 0 8px 20px color-mix(in srgb, var(--zude-accent, #b6e34b) 40%, transparent);
}
.zude-banniere--ad .zude-banniere__cta:hover {
	background: color-mix(in srgb, var(--zude-accent, #b6e34b) 88%, #fff);
	color: var(--zude-primary, #12302a);
}
/* Image produit détourée : pas de tuile, plus grande, ombre portée « découpe ». */
.zude-banniere--ad .zude-banniere__media { flex: 0 0 auto; }
.zude-banniere--ad .zude-banniere__media .zude-img {
	width: clamp(150px, 23vw, 220px); height: clamp(150px, 23vw, 220px);
	object-fit: contain; background: transparent; padding: 0; border-radius: 0;
	filter: drop-shadow(0 16px 28px rgba(0,0,0,.45)) brightness(1.06);
}
/* Variante collection (sans image) : le corps occupe toute la largeur. */
.zude-banniere--ad.zude-banniere--collection { align-items: center; }
.zude-banniere--ad.zude-banniere--collection .zude-banniere__body { flex: 1 1 auto; }

@media (max-width: 640px) {
	.zude-banniere--ad { flex-direction: column-reverse; text-align: center; padding: 24px 20px 26px; gap: 14px; }
	.zude-banniere--ad .zude-banniere__body { align-items: center; }
	.zude-banniere--ad .zude-banniere__accroche { max-width: none; }
	.zude-banniere--ad .zude-banniere__glow { top: 26%; right: 50%; transform: translate(50%, -50%); }
	.zude-banniere--ad .zude-banniere__cta { width: 100%; justify-content: center; }
}

/* =========================================================================
   v1.9.4 — [fly_banniere] : TROIS DÉCLINAISONS « pub display ».
   Le style 1 = le look historique (.zude-banniere--ad, fond sombre de marque,
   produit à droite, CTA lime) — INCHANGÉ. Les blocs ci-dessous surchargent
   uniquement ce qu'il faut pour les styles 2 (clair) et 3 (ruban compact).
   Toutes les déclinaisons portent aussi .zude-banniere--ad : ces règles sont
   placées APRÈS et gagnent donc à spécificité égale (ordre de source).
   ========================================================================= */

/* ---- Style 2 — registre CLAIR (produit à GAUCHE, CTA plein primaire) ---- */
.zude-banniere--s2 {
	flex-direction: row-reverse;
	color: var(--zude-ink, #1a1f1c);
	border: 1px solid color-mix(in srgb, var(--zude-primary, #12302a) 16%, transparent);
	background:
		linear-gradient(115deg,
			var(--zude-surface, #fff) 0%,
			var(--zude-surface, #fff) 46%,
			color-mix(in srgb, var(--zude-accent, #a8d64b) 18%, var(--zude-surface, #fff)) 100%);
	box-shadow: 0 16px 40px color-mix(in srgb, var(--zude-primary, #12302a) 14%, transparent);
}
/* Halo d'accent doux, déplacé à GAUCHE derrière le produit. */
.zude-banniere--s2 .zude-banniere__glow {
	right: auto; left: clamp(-60px, -3vw, -20px);
	background: radial-gradient(circle at center,
		color-mix(in srgb, var(--zude-accent, #a8d64b) 44%, transparent) 0%,
		color-mix(in srgb, var(--zude-accent, #a8d64b) 14%, transparent) 46%,
		transparent 70%);
}
/* Pastille d'accroche colorée (garde le ton « pub », pas un encart pâle). */
.zude-banniere--s2 .zude-banniere__kicker {
	color: color-mix(in srgb, var(--zude-primary, #12302a) 82%, #000);
	background: color-mix(in srgb, var(--zude-accent, #a8d64b) 42%, var(--zude-surface, #fff));
	border: 1px solid color-mix(in srgb, var(--zude-accent, #a8d64b) 60%, transparent);
	border-radius: 999px; padding: 3px 11px; align-self: flex-start;
}
.zude-banniere--s2 .zude-banniere__name { color: var(--zude-text, #1a1f1c); }
.zude-banniere--s2 .zude-banniere__accroche { color: var(--zude-muted, #5f6b63); }
.zude-banniere--s2 .zude-banniere__rating { filter: none; }
.zude-banniere--s2 .zude-stars-val { color: var(--zude-text, #1a1f1c); }
/* CTA plein primaire. */
.zude-banniere--s2 .zude-banniere__cta {
	background: var(--zude-primary, #12302a);
	color: #fff;
	border: 1px solid var(--zude-primary, #12302a);
	box-shadow: 0 8px 20px color-mix(in srgb, var(--zude-primary, #12302a) 34%, transparent);
}
.zude-banniere--s2 .zude-banniere__cta:hover {
	background: var(--zude-primary-dark, #0d211c); color: #fff;
}
/* Ombre « découpe » adaptée au fond clair. */
.zude-banniere--s2 .zude-banniere__media .zude-img {
	filter: drop-shadow(0 16px 26px color-mix(in srgb, var(--zude-primary, #12302a) 30%, transparent)) brightness(1.02);
}

/* ---- Style 3 — RUBAN compact bicolore (accroche + CTA sur une ligne) ---- */
.zude-banniere--s3 {
	align-items: center;
	gap: clamp(14px, 2.4vw, 26px);
	padding: clamp(14px, 1.9vw, 20px) clamp(18px, 2.6vw, 28px);
	color: #fff;
	background:
		linear-gradient(100deg,
			var(--zude-primary, #12302a) 0%,
			var(--zude-primary, #12302a) 52%,
			color-mix(in srgb, var(--zude-accent, #a8d64b) 82%, var(--zude-primary, #12302a)) 52%,
			color-mix(in srgb, var(--zude-accent, #a8d64b) 74%, #000) 100%);
}
.zude-banniere--s3 .zude-banniere__glow { display: none; }
/* Corps en LIGNE : kicker · nom · accroche (élastique) · CTA poussé à droite. */
.zude-banniere--s3 .zude-banniere__body {
	flex-direction: row; align-items: center; flex-wrap: wrap; gap: 6px 16px;
}
.zude-banniere--s3 .zude-banniere__kicker {
	background: color-mix(in srgb, #fff 16%, transparent);
	color: var(--zude-accent, #a8d64b);
	border-radius: 999px; padding: 3px 10px;
}
.zude-banniere--s3 .zude-banniere__name {
	font-size: clamp(1.02rem, 1.9vw, 1.28rem); line-height: 1.2; margin: 0;
}
.zude-banniere--s3 .zude-banniere__rating { display: none; }
.zude-banniere--s3 .zude-banniere__accroche {
	flex: 1 1 180px; font-size: .92rem; line-height: 1.35; max-width: none;
	color: color-mix(in srgb, #fff 82%, transparent);
}
.zude-banniere--s3 .zude-banniere__cta-wrap { margin: 0 0 0 auto; }
/* CTA blanc : lisible aussi bien sur le pan sombre que sur le pan accent. */
.zude-banniere--s3 .zude-banniere__cta {
	background: #fff; color: var(--zude-primary, #12302a);
	border: 1px solid #fff;
	box-shadow: 0 6px 16px rgba(0,0,0,.28);
}
.zude-banniere--s3 .zude-banniere__cta:hover {
	background: color-mix(in srgb, #fff 90%, var(--zude-accent, #a8d64b)); color: var(--zude-primary, #12302a);
}
/* Produit petit mais net. */
.zude-banniere--s3 .zude-banniere__media .zude-img {
	width: clamp(84px, 12vw, 118px); height: clamp(84px, 12vw, 118px);
	filter: drop-shadow(0 10px 18px rgba(0,0,0,.42)) brightness(1.05);
}

@media (max-width: 640px) {
	/* Style 2 : on repasse en empilé (produit au-dessus) — sinon la règle
	   non-media row-reverse garderait le side-by-side comprimé. */
	.zude-banniere--s2 { flex-direction: column-reverse; }
	.zude-banniere--s2 .zude-banniere__kicker { align-self: center; }
	/* Style 3 : ruban qui s'empile proprement (produit au-dessus, texte centré). */
	.zude-banniere--s3 {
		background: linear-gradient(160deg,
			var(--zude-primary, #12302a) 0%,
			color-mix(in srgb, var(--zude-accent, #a8d64b) 58%, var(--zude-primary, #12302a)) 100%);
	}
	.zude-banniere--s3 .zude-banniere__body { flex-direction: column; align-items: center; text-align: center; gap: 8px; }
	.zude-banniere--s3 .zude-banniere__accroche { flex: 0 0 auto; }
	.zude-banniere--s3 .zude-banniere__cta-wrap { margin: 0; width: 100%; }
	.zude-banniere--s3 .zude-banniere__cta { width: 100%; justify-content: center; }
}

/* ---- v1.9.0 — Gabarit d'article (single post) : ajustements SUR — additifs, sans casser le theme ---- */
.single-post .zude-avis__prose,
.single-post .zude-versus,
.single-post .zude-banniere { }
.single-post .entry-content > p,
.single-post .wp-block-post-content > p { max-width: var(--zude-reading, 72ch); }
.single-post .entry-content h2:not(.zude-versus__h):not(.zude-avis__h),
.single-post .wp-block-post-content h2:not(.zude-versus__h):not(.zude-avis__h) {
	position: relative; padding-left: 14px; margin-top: 1.8em;
}
.single-post .entry-content h2:not(.zude-versus__h):not(.zude-avis__h)::before,
.single-post .wp-block-post-content h2:not(.zude-versus__h):not(.zude-avis__h)::before {
	content: ""; position: absolute; left: 0; top: .12em; bottom: .12em; width: 5px; border-radius: 3px; background: var(--zude-accent);
}
.single-post .entry-content blockquote,
.single-post .wp-block-post-content blockquote {
	border-left: 4px solid var(--zude-accent); background: color-mix(in srgb, var(--zude-primary) 5%, var(--zude-surface));
	margin: 1.2em 0; padding: 12px 18px; border-radius: 0 var(--zude-radius) var(--zude-radius) 0;
}

/* =========================================================================
   v1.9.1 — HERO DES ARTICLES DE BLOG (posts)
   L'image à la une en BANNIÈRE, H1 + éyebrow catégorie + méta (auteur · date)
   posés dessus sur dégradé sombre. Fil d'Ariane discret au-dessus. Rendu par
   includes/article-hero.php (remplace core/post-title sur le single post).
   ========================================================================= */
.zude-article-hero {
	margin: 0 0 clamp(1.5rem, 4vw, 2.4rem);
}

/* Fil d'Ariane — discret, au-dessus de la bannière.
   v2.8.5 (revue Jon) : il respirait mal (collé au header ET au bord en pleine largeur) —
   il vit désormais dans .grid-container (alignement colonne) avec un padding vertical. */
.zude-article-hero__crumbs-wrap { width: 100%; }
.zude-article-hero__crumbs {
	display: flex; flex-wrap: wrap; align-items: center; gap: .4rem;
	font-size: .82rem; line-height: 1.4;
	color: var(--zude-text-muted, var(--zude-muted));
	margin: 0; padding: 16px 0 12px;
}
.zude-article-hero__crumbs a {
	color: var(--zude-text-muted, var(--zude-muted)); text-decoration: none;
}
.zude-article-hero__crumbs a:hover { color: var(--zude-primary); text-decoration: underline; }
.zude-article-hero__crumb-sep { opacity: .5; }
.zude-article-hero__crumb-current {
	color: var(--zude-text); font-weight: 600;
	max-width: 55vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* La bannière. */
.zude-article-hero__frame {
	position: relative; width: 100%;
	height: clamp(300px, 34vw, 380px);
	border-radius: var(--zude-radius); overflow: hidden;
	background: var(--zude-primary, #12302a);
	box-shadow: var(--zude-shadow);
	isolation: isolate;
}
.zude-article-hero__img {
	position: absolute; inset: 0; width: 100%; height: 100%;
	object-fit: cover; display: block; margin: 0;
}
.zude-article-hero__scrim {
	position: absolute; inset: 0; display: block;
	background: linear-gradient(
		180deg,
		rgba(10, 20, 16, .04) 0%,
		rgba(10, 20, 16, .18) 42%,
		rgba(8, 17, 14, .58) 74%,
		rgba(6, 14, 11, .84) 100%
	);
}
.zude-article-hero__body {
	position: absolute; left: 0; right: 0; bottom: 0;
	display: flex; flex-direction: column; gap: .6rem;
	padding: clamp(1.1rem, 3vw, 2rem);
	color: #fff;
}
.zude-article-hero__eyebrow {
	align-self: flex-start;
	font-size: .72rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
	color: var(--zude-accent-contrast, var(--zude-primary, #12302a));
	background: var(--zude-accent, #a8d64b);
	padding: .3em .85em; border-radius: var(--zude-radius-pill, 999px);
}
.zude-article-hero__title {
	margin: 0; color: #fff;
	font-family: var(--zude-font-title, inherit); font-weight: 800; line-height: 1.12;
	font-size: clamp(1.6rem, 3.4vw, 2.55rem);
	text-shadow: 0 1px 20px rgba(0, 0, 0, .38);
	max-width: 24ch;
}
.zude-article-hero__meta {
	display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
	font-size: .9rem; color: rgba(255, 255, 255, .9);
}
.zude-article-hero__sep { opacity: .6; }

/* Variante SANS image à la une : bandeau plein aux couleurs de la marque. */
.zude-article-hero--solid .zude-article-hero__frame {
	background: linear-gradient(135deg, var(--zude-primary, #12302a), var(--zude-primary-600, #1c4a3e));
	height: clamp(220px, 26vw, 300px);
}
.zude-article-hero--solid .zude-article-hero__scrim { display: none; }

/* Mobile (≈390) : bannière plus courte, gouttières serrées, titre lisible. */
@media (max-width: 600px) {
	.zude-article-hero__frame { height: 200px; border-radius: calc(var(--zude-radius) - 4px); }
	.zude-article-hero--solid .zude-article-hero__frame { height: 168px; }
	.zude-article-hero__body { padding: 16px; gap: .5rem; }
	.zude-article-hero__title { font-size: clamp(1.35rem, 6vw, 1.7rem); max-width: 100%; }
	.zude-article-hero__meta { font-size: .82rem; }
	.zude-article-hero__crumb-current { max-width: 70vw; }
}

/* v1.9.7 — GOUTTIÈRES MOBILES DU VERSUS (mesuré 2026-07-20 : le duel n'occupait que 69 %
   de l'écran 390 px contre 93 % pour le gabarit avis — la page empile DEUX conteneurs à
   30 px de padding, le tableau était rogné). Technique « full-bleed » : la largeur se
   calcule sur le viewport, donc indépendamment de la profondeur d'imbrication du thème. */
@media (max-width: 640px) {
	.zude-versus {
		width: auto !important;
		margin-left: calc(50% - 50vw + 14px) !important;
		margin-right: calc(50% - 50vw + 14px) !important;
	}
	.zude-versus__cols { gap: 10px; }
}

/* ============ v1.9.x — VERSUS MOBILE (règle Jon 2026-07-24 : « aéré et design », fini le
   blog années 2000). Uniquement ≤ 600 px — zéro impact desktop. ============ */
@media (max-width: 600px) {
	/* Titre de page : compact et dense (avant : ~6 lignes, un écran entier) */
	h1.wp-block-post-title {
		font-size: clamp(1.5rem, 6.8vw, 1.85rem);
		line-height: 1.2;
		letter-spacing: -.015em;
		margin-bottom: .55em;
	}

	/* Rythme vertical : sections mieux séparées, titres de section nets */
	.zude-versus { gap: 40px; }
	.zude-versus__h { font-size: 1.3rem; line-height: 1.25; }

	/* Verdict express : vraie respiration de lecture */
	.zude-versus__express { padding: 16px 18px; }
	.zude-versus__express-body { line-height: 1.62; font-size: .97rem; }

	/* « Ce qui fait la différence » : une CARTE par différence au lieu d'un mur de texte */
	.zude-versus__deltas { padding: 16px 18px; }
	.zude-versus__deltas-list { gap: 0; }
	.zude-versus__deltas-list li {
		display: grid;
		gap: 5px;
		padding: 12px 0;
		font-size: .95rem;
	}
	.zude-versus__deltas-list li + li { border-top: 1px solid color-mix(in srgb, var(--zude-border) 70%, transparent); }
	.zude-versus__deltas-lbl {
		text-transform: uppercase;
		letter-spacing: .04em;
		font-size: .74rem;
		color: color-mix(in srgb, var(--zude-primary) 70%, var(--zude-muted));
	}
	.zude-versus__deltas-vals { line-height: 1.5; }
	.zude-versus__deltas-vs {
		display: inline-grid;
		place-items: center;
		min-width: 26px;
		border-radius: 999px;
		background: color-mix(in srgb, var(--zude-muted) 14%, transparent);
		padding: 1px 7px;
		margin: 0 4px;
	}
	.zude-versus__deltas-win {
		justify-self: start;
		background: color-mix(in srgb, var(--zude-accent) 22%, transparent);
		border-radius: 999px;
		padding: 3px 11px;
		font-size: .82rem;
	}

	/* Tableau comparatif : lisible sans zoom — colonnes équilibrées, valeurs qui ne débordent
	   plus, en-tête produits COLLANT pendant qu'on fait défiler les lignes */
	.zude-versus__table thead th {
		position: sticky;
		top: 0;
		z-index: 2;
		padding: 10px 6px;
		background: color-mix(in srgb, var(--zude-primary) 5%, var(--zude-surface));
	}
	.zude-versus__th-row { width: 88px; font-size: .78rem; }
	.zude-versus__th-media .zude-img { width: 44px; height: 44px; }
	.zude-versus__th-name { font-size: .76rem; }
	.zude-versus__table tbody td, .zude-versus__table tbody th { padding: 10px 7px; }
	.zude-versus__table tbody th.zude-versus__th-row { font-size: .82rem; line-height: 1.3; }
	.zude-versus__cell { font-size: .86rem; line-height: 1.35; overflow-wrap: break-word; hyphens: auto; }
	.zude-versus__grouprow th { padding: 8px 7px; font-size: .7rem; }
	.zude-versus__note { min-width: 0; width: 100%; }

	/* Forces/faiblesses et « choisissez X si » : cartes plus aérées */
	.zude-versus__pc-pros, .zude-versus__pc-cons, .zude-versus__choose-body { padding: 16px 18px; }
	.zude-versus__pc-col li { line-height: 1.55; }
	.zude-versus__pc-col ul, .zude-versus__choose-body ul { gap: 10px; }

	/* Verdict final : encart qui se détache vraiment */
	.zude-versus__verdict { padding: 18px; }
	.zude-versus__verdict .zude-avis__prose { line-height: 1.62; }
}

/* ---- v1.9.x — Badge « Recommandé par la rédaction » piloté par les filtres (Jon 2026-07-24) ---- */
.zude-reco-badge {
	position: absolute;
	top: 10px; right: 10px;
	z-index: 2;
	background: linear-gradient(120deg, var(--zude-primary), color-mix(in srgb, var(--zude-primary) 55%, var(--zude-accent)));
	color: #fff;
	font-weight: 800;
	font-size: .7rem;
	letter-spacing: .02em;
	line-height: 1;
	padding: 6px 10px;
	border-radius: 999px;
	box-shadow: 0 3px 10px rgba(0, 0, 0, .18);
	max-width: calc(100% - 20px);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.zude-collection__card.zude-card--reco .zude-grille__media {
	border-color: color-mix(in srgb, var(--zude-primary) 45%, var(--zude-border));
	box-shadow: 0 0 0 2px color-mix(in srgb, var(--zude-primary) 30%, transparent);
}
@media (max-width: 600px) { .zude-reco-badge { font-size: .66rem; padding: 5px 9px; } }

/* ---- v1.9.9 · C8-PRÉCISION : encadré « meilleure alternative » sous le bandeau indispo ---- */
.zude-avis__indispo-alt {
	margin: 10px 0 6px;
	padding: 14px;
	border-radius: calc(var(--zude-radius) - 4px);
	background: color-mix(in srgb, var(--zude-primary) 5%, var(--zude-surface));
	border: 1px solid var(--zude-border);
	box-shadow: var(--zude-shadow);
}
.zude-avis__indispo-alt-lbl {
	display: inline-block;
	margin: 0 0 10px;
	padding: 6px 10px;
	border-radius: 999px;
	background: linear-gradient(120deg, var(--zude-primary), color-mix(in srgb, var(--zude-primary) 55%, var(--zude-accent)));
	color: #fff;
	font-weight: 800;
	font-size: .7rem;
	letter-spacing: .02em;
	line-height: 1;
}
.zude-avis__indispo-alt-row { display: flex; gap: 12px; align-items: center; }
.zude-avis__indispo-alt-media { flex: 0 0 84px; }
.zude-avis__indispo-alt-media .zude-img { width: 84px; height: 84px; object-fit: contain; background: var(--zude-tile); border-radius: calc(var(--zude-radius) - 6px); }
.zude-avis__indispo-alt-main { min-width: 0; }
.zude-avis__indispo-alt-name { margin: 0 0 4px; font-weight: 700; line-height: 1.3; }
.zude-avis__indispo-alt-name a { color: var(--zude-text); text-decoration: none; }
.zude-avis__indispo-alt-name a:hover { text-decoration: underline; }
.zude-avis__indispo-alt-note { display: flex; align-items: center; gap: 8px; margin: 0; }
.zude-avis__indispo-alt-val { font-weight: 800; color: var(--zude-text); }
.zude-avis__indispo-alt-max { font-weight: 600; color: var(--zude-muted); font-size: .85em; }
.zude-avis__indispo-alt .zude-btns { margin-top: 12px; flex-wrap: wrap; }

/* ---- v1.9.9 · C11-bis : badges de place N°1/N°2/N°3 (podium du listing, demande Jon) ---- */
.zude-place-badge {
	position: absolute;
	top: 10px; left: 10px;
	z-index: 2;
	font-size: 1.5rem;                     /* médailles 🥇🥈🥉 (validées Jon) — l'émoji porte la couleur */
	line-height: 1;
	padding: 6px 8px;
	border-radius: 999px;
	background: color-mix(in srgb, var(--zude-surface) 86%, transparent);
	border: 1px solid color-mix(in srgb, var(--zude-primary) 18%, var(--zude-border));
	box-shadow: var(--zude-shadow);
	backdrop-filter: saturate(140%) blur(6px);
}
.zude-place-badge--1 {
	box-shadow: 0 4px 14px color-mix(in srgb, var(--zude-primary) 40%, transparent);
	border-color: color-mix(in srgb, var(--zude-primary) 38%, var(--zude-border));
}
/* Cartes du podium (4e passe Jon 2026-07-24 : « une autre couleur de cards pour 1re/2e/3e
   place ») : le CLASSEMENT est porté par la carte elle-même — teinte OR / ARGENT / BRONZE
   assortie à la médaille, lavis léger en tête de carte + bordure et ombre teintées.
   Tokens surchargeables par niche (--zude-or/argent/bronze), transition douce au recalcul. */
.zude-collection__card { transition: box-shadow .35s ease, transform .35s ease, border-color .35s ease, background .35s ease; }
.zude-collection__card.zude-card--p1 {
	background: linear-gradient(180deg, color-mix(in srgb, var(--zude-or, #c9a227) 16%, var(--zude-surface)), var(--zude-surface) 62%);
	border-color: color-mix(in srgb, var(--zude-or, #c9a227) 55%, var(--zude-border));
	border-top: 6px solid var(--zude-or, #c9a227);
	box-shadow: 0 18px 44px color-mix(in srgb, var(--zude-or, #c9a227) 28%, rgba(20, 30, 26, .14));
	transform: translateY(-3px);
}
.zude-collection__card.zude-card--p2 {
	background: linear-gradient(180deg, color-mix(in srgb, var(--zude-argent, #7f8b98) 16%, var(--zude-surface)), var(--zude-surface) 58%);
	border-color: color-mix(in srgb, var(--zude-argent, #7f8b98) 55%, var(--zude-border));
	border-top: 6px solid var(--zude-argent, #7f8b98);
	box-shadow: var(--zude-shadow-lg);
}
.zude-collection__card.zude-card--p3 {
	background: linear-gradient(180deg, color-mix(in srgb, var(--zude-bronze, #b87333) 14%, var(--zude-surface)), var(--zude-surface) 58%);
	border-color: color-mix(in srgb, var(--zude-bronze, #b87333) 50%, var(--zude-border));
	border-top: 6px solid var(--zude-bronze, #b87333);
	box-shadow: var(--zude-shadow-lg);
}
/* Bandeau d'entrée du top 3 + séparateur « le reste » (pleine largeur de la grille) —
   le visiteur SAIT qu'il regarde un classement, desktop comme mobile. */
.zude-top3-head {
	grid-column: 1 / -1;
	display: flex;
	align-items: baseline;
	gap: 10px;
	padding: 12px 18px;
	border-radius: var(--zude-radius);
	background: linear-gradient(120deg, var(--zude-primary), color-mix(in srgb, var(--zude-primary) 55%, var(--zude-accent)));
	color: #fff;
	box-shadow: var(--zude-shadow);
}
.zude-top3-head__ico { font-size: 1.15rem; }
.zude-top3-head__txt { font-weight: 800; font-size: 1.05rem; letter-spacing: .01em; }
.zude-top3-head__sub { font-weight: 600; font-size: .8rem; opacity: .75; }
.zude-top3-sep {
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	gap: 14px;
	color: var(--zude-muted);
	font-weight: 700;
	font-size: .85rem;
	letter-spacing: .04em;
	text-transform: uppercase;
	margin-top: 6px;
}
.zude-top3-sep::before, .zude-top3-sep::after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--zude-border);
}
@media (max-width: 600px) {
	.zude-place-badge { font-size: 1.25rem; padding: 5px 7px; }
	.zude-collection__card.zude-card--p1 { transform: none; }
}

/* =========================================================================
   v1.9.10 (C8-FULL) — TABLEAU COMPARATEUR multi-marchands (.zude-compare)
   Section « vitrine » sobre juste sous la buy box : une ligne par marchand
   (identité logo/wordmark · prix · dispo · CTA /go/), « le moins cher »
   accentué mais tableau complet visible. Tokens --zude-* uniquement.
   Mobile < 600 px : les lignes deviennent des CARTES empilées (aucun scroll
   horizontal de page).
   ========================================================================= */
.zude-compare {
	position: relative;
	background: var(--zude-surface);
	border: 1px solid var(--zude-border);
	border-radius: var(--zude-radius);
	padding: 22px 24px 20px;
	box-shadow: var(--zude-shadow);
	margin: 26px 0;
	overflow: hidden;
}
/* Filet d'accent en tête — écho de la carte verdict (.zude-avis__verdict-card). */
.zude-compare::before {
	content: "";
	position: absolute;
	left: 0; right: 0; top: 0;
	height: 4px;
	background: var(--zude-accent);
}
.zude-compare__head { margin-bottom: 14px; }
.zude-compare__title { margin: 0 0 4px; }
.zude-compare__sub {
	margin: 0;
	font-size: .88rem;
	color: var(--zude-muted);
}

/* ---- Les lignes d'offres : liste ordonnée neutre, chaque ligne = une grille. ---- */
.zude-compare__rows {
	list-style: none;
	margin: 0;
	padding: 0;
}
.zude-compare__row {
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) auto auto auto;
	align-items: center;
	column-gap: 18px;
	padding: 14px 16px;
	border: 1px solid var(--zude-border);
	border-radius: calc(var(--zude-radius) - 4px);
	background: var(--zude-bg);
	margin: 0 0 10px;
}
.zude-compare__row:last-child { margin-bottom: 0; }
/* Alignement des colonnes ENTRE les lignes (navigateurs avec subgrid). */
@supports (grid-template-columns: subgrid) {
	.zude-compare__rows {
		display: grid;
		grid-template-columns: minmax(0, 1.35fr) auto auto auto;
	}
	.zude-compare__row {
		grid-column: 1 / -1;
		grid-template-columns: subgrid;
	}
}
/* « Le moins cher » : ligne accentuée, discrète (pas un panneau publicitaire). */
.zude-compare__row--best {
	border-color: color-mix(in srgb, var(--zude-primary) 40%, transparent);
	background: color-mix(in srgb, var(--zude-accent) 7%, var(--zude-bg));
	box-shadow: 0 6px 20px color-mix(in srgb, var(--zude-primary) 10%, transparent);
}

/* ---- 1. Identité du marchand : logo (média) ou wordmark typographié. ---- */
.zude-compare__id {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
	min-width: 0;
}
.zude-compare__logo {
	display: block;
	max-height: 28px;
	width: auto;
	max-width: 130px;
	object-fit: contain;
}
.zude-compare__wordmark {
	font-weight: 800;
	font-size: 1.02rem;
	letter-spacing: -.01em;
	color: var(--zude-text);
	overflow-wrap: anywhere;
}
/* Nom accompagnant un logo : un cran plus discret (le logo porte déjà l'identité),
   et collé à lui (l'écart de 10 px du conteneur est réservé au badge). */
.zude-compare__wordmark--logo {
	font-weight: 700;
	font-size: .95rem;
	margin-left: -2px;
}
.zude-compare__badge {
	display: inline-flex;
	align-items: center;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--zude-accent);
	color: var(--zude-primary);
	font-size: .68rem;
	font-weight: 800;
	letter-spacing: .05em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* ---- 2. Prix. ---- */
.zude-compare__price {
	font-weight: 800;
	font-size: 1.12rem;
	color: var(--zude-primary);
	white-space: nowrap;
}
.zude-compare__price--na {
	color: var(--zude-muted);
	font-weight: 600;
}

/* ---- 3. Dispo : pastille discrète (cellule vide = aucune pastille). ---- */
.zude-compare__dispo {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: .74rem;
	font-weight: 700;
	white-space: nowrap;
}
.zude-compare__dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: currentColor;
	flex: 0 0 auto;
}
.zude-compare__dispo--ok {
	color: var(--zude-positive);
	background: color-mix(in srgb, var(--zude-positive) 10%, transparent);
}
.zude-compare__dispo--ko {
	color: var(--zude-negative);
	background: color-mix(in srgb, var(--zude-negative) 10%, transparent);
}

/* ---- 4. CTA « Voir l'offre » : pills existants, gabarit compact. ---- */
.zude-compare__cta { justify-self: end; }
.zude-btn--compare {
	padding: 10px 16px;
	font-size: .88rem;
}

/* ---- Mobile < 600 px : cartes empilées, CTA pleine largeur, zéro scroll-x. ---- */
@media (max-width: 600px) {
	.zude-compare { padding: 16px 14px 14px; }
	.zude-compare__rows { display: block; }
	.zude-compare__row {
		grid-template-columns: minmax(0, 1fr) auto;
		grid-template-areas:
			"id    price"
			"dispo dispo"
			"cta   cta";
		row-gap: 10px;
		column-gap: 12px;
		padding: 14px;
	}
	.zude-compare__id { grid-area: id; }
	.zude-compare__price { grid-area: price; align-self: start; text-align: right; }
	.zude-compare__dispo-cell { grid-area: dispo; }
	.zude-compare__dispo-cell:empty { display: none; }
	.zude-compare__cta { grid-area: cta; justify-self: stretch; }
	.zude-compare__cta .zude-btn { width: 100%; }
}

/* =========================================================================
   v2.0.0 — LISIBILITÉ SITE + GABARIT VERSUS (règle Jon 2026-07-25 : « trop de
   texte », « police du corps moche », « des accordéons comme sur l'avis »).
   1) --zude-font-texte (pile système pro, zéro CDN) appliquée à TOUT le
      rédactionnel du site : prose d'avis, corps versus, collections, articles —
      17px / 1.65. Les TITRES gardent --zude-font-title.
   2) Versus : sections éditoriales en ACCORDÉONS (classes zude-avis__acc
      réutilisées = pattern exact de la page avis) + transformation des pavés :
      encadré « l'essentiel », cartes de points, listes à coche, mini-tableau
      « en bref ». Tokens --zude-* uniquement, jamais de couleur en dur.
   ========================================================================= */

/* ---- 1) POLICE & CONFORT DU CORPS DE TEXTE : partout où on LIT ---- */
.zude-avis__prose,
.zude-avis__intro,
.zude-avis__acc-body,
.zude-versus__express-body,
.zude-versus__choose-body,
.zude-versus__accbody,
.zude-faq__a,
.zude-col-intro__text,
.zude-col-section__body,
.single-post .entry-content > p,
.single-post .entry-content > ul li,
.single-post .entry-content > ol li,
.single-post .entry-content blockquote {
	font-family: var(--zude-font-texte);
	font-size: 17px;
	line-height: 1.65;
}
/* Contraste du corps d'accordéon relevé (le gris 74 % était trop pâle en 17px). */
.zude-avis__acc-body { color: color-mix(in srgb, var(--zude-ink) 84%, var(--zude-surface)); }

/* ---- 2) VERSUS : accordéons éditoriaux (pattern zude-avis__acc) ---- */
.zude-versus { gap: 34px; }
.zude-versus__sections { }
.zude-versus__accordions { display: grid; gap: 16px; }
.zude-versus__accbody > :first-child { margin-top: 0; }
.zude-versus__accbody > :last-child { margin-bottom: 0; }
/* Le corps « wide » (cartes Choisissez X si…) occupe toute la largeur, sans la
   colonne de lecture ; la gouttière de la pastille est conservée par le padding
   hérité de .zude-avis__acc-body. */
.zude-versus__acc .zude-versus__choose-cols { margin-top: 4px; }
/* FAQ imbriquée dans l'accordéon : items resserrés, pas de double marge. */
.zude-versus__acc .zude-faq { display: grid; gap: 10px; }
@media (min-width: 700px) {
	.zude-versus { gap: 40px; }
}

/* ---- Encadré « l'essentiel » (strong inaugural de section) ---- */
.zude-versus__essentiel {
	display: grid;
	gap: 4px;
	margin: 0 0 18px;
	padding: 14px 18px;
	background: color-mix(in srgb, var(--zude-accent) 10%, var(--zude-surface));
	border: 1px solid color-mix(in srgb, var(--zude-accent) 34%, transparent);
	border-left: 4px solid var(--zude-accent);
	border-radius: 0 var(--zude-radius) var(--zude-radius) 0;
}
.zude-versus__essentiel-lbl {
	font-size: .72rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: color-mix(in srgb, var(--zude-primary) 78%, #000);
}
.zude-versus__essentiel-txt {
	margin: 0;
	font-weight: 600;
	font-size: 1.02em;
	line-height: 1.5;
	color: var(--zude-ink);
}

/* ---- Cartes de points (suites de <p> à mini-titre <strong> / <p> courts) ---- */
.zude-versus__pointgrid {
	display: grid;
	gap: 12px;
	margin: 0 0 1.1em;
}
.zude-versus__pointcard {
	background: var(--zude-bg);
	border: 1px solid var(--zude-border);
	border-radius: calc(var(--zude-radius) - 4px);
	padding: 14px 16px;
	box-shadow: 0 2px 10px color-mix(in srgb, var(--zude-ink) 4%, transparent);
}
.zude-versus__pointcard-t {
	display: flex;
	align-items: baseline;
	gap: 9px;
	margin: 0 0 6px;
	font-family: var(--zude-font-title, var(--zude-font));
	font-weight: 800;
	font-size: .98rem;
	line-height: 1.3;
	color: var(--zude-ink);
}
.zude-versus__pointcard-t::before {
	content: "";
	flex: 0 0 auto;
	align-self: center;
	width: 8px;
	height: 8px;
	border-radius: 2px;
	background: var(--zude-accent);
}
.zude-versus__pointcard p { margin: 0; }
.zude-versus__pointcard p + p { margin-top: .6em; }

/* ---- Listes à coche pro (les <ul> des sections, style de la page avis) ---- */
.zude-versus__list {
	list-style: none;
	margin: 0 0 1.1em;
	padding: 0;
	display: grid;
	gap: 10px;
}
.zude-versus__list:last-child { margin-bottom: 0; }
.zude-versus__list li {
	position: relative;
	padding-left: 27px;
	line-height: 1.55;
}
.zude-versus__list li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: .14em;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: color-mix(in srgb, var(--zude-primary) 12%, transparent);
	color: var(--zude-primary);
	font-weight: 800;
	font-size: .7rem;
}

/* ---- Mini-tableau « en bref » du verdict express (écarts décisifs) ---- */
.zude-versus__brief-wrap {
	margin-top: 16px;
	overflow-x: auto;
	background: var(--zude-surface);
	border: 1px solid color-mix(in srgb, var(--zude-primary) 14%, var(--zude-border));
	border-radius: calc(var(--zude-radius) - 4px);
}
.zude-versus__brief {
	width: 100%;
	border-collapse: collapse;
	font-size: .95rem;
}
.zude-versus__brief-cap {
	caption-side: top;
	text-align: left;
	padding: 10px 14px 2px;
	font-size: .74rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: color-mix(in srgb, var(--zude-primary) 70%, var(--zude-muted));
}
.zude-versus__brief th,
.zude-versus__brief td { padding: 9px 14px; text-align: left; vertical-align: middle; }
.zude-versus__brief thead th {
	font-size: .8rem;
	font-weight: 800;
	line-height: 1.25;
	color: var(--zude-text);
	border-bottom: 1px solid var(--zude-border);
}
.zude-versus__brief tbody tr + tr { border-top: 1px solid color-mix(in srgb, var(--zude-border) 70%, transparent); }
.zude-versus__brief tbody th { font-weight: 600; color: var(--zude-text); }
.zude-versus__brief td { font-weight: 700; white-space: nowrap; }
.zude-versus__brief td.is-win { background: color-mix(in srgb, var(--zude-accent) 14%, transparent); }

/* ---- Mobile : cartes/tableaux compacts, gouttières douces ---- */
@media (max-width: 600px) {
	.zude-versus__brief th,
	.zude-versus__brief td { padding: 8px 10px; font-size: .85rem; }
	.zude-versus__pointcard { padding: 13px 14px; }
	.zude-versus__accbody.zude-avis__acc-body { padding-left: 18px; padding-right: 18px; }
	.zude-versus__essentiel { padding: 12px 14px; }
}

/* v2.7.0 — [fly_contact] : formulaire natif, carte aux tokens du site. */
.zude-contact { max-width: 620px; margin: 1.6rem 0 2rem; }
.zude-contact__form {
  background: var(--zude-surface, #fff);
  border: 1px solid var(--zude-border, #e5e5e5);
  border-radius: var(--zude-radius-lg, 20px);
  box-shadow: var(--zude-shadow, 0 2px 12px rgba(0,0,0,.06));
  padding: 1.8rem 1.9rem 1.4rem;
}
.zude-contact__form label { display: block; font-weight: 600; font-size: .95rem; }
.zude-contact__form input[type=text],
.zude-contact__form input[type=email],
.zude-contact__form textarea {
  display: block; width: 100%; margin-top: .4rem;
  border: 1px solid var(--zude-border, #ddd); border-radius: 10px;
  padding: .65em .8em; font: inherit; background: var(--zude-bg, #fff);
}
.zude-contact__form textarea { resize: vertical; }
.zude-contact__form input:focus, .zude-contact__form textarea:focus {
  outline: 2px solid var(--zude-accent, #f80); outline-offset: 1px; border-color: transparent;
}
.zude-contact__hp { position: absolute !important; left: -9999px !important; height: 0; overflow: hidden; }
.zude-contact__ok, .zude-contact__erreur {
  border-radius: var(--zude-radius, 14px); padding: 1rem 1.2rem; font-weight: 600;
}
.zude-contact__ok { background: #e8f5ec; color: var(--zude-success, #2E7D4F); }
.zude-contact__erreur { background: #fdecec; color: #B3261E; }

/* Bouton d'envoi : l'accent du site (il sortait gris via le socle .zude-btn). */
.zude-btn.zude-contact__envoyer {
  background: var(--zude-accent, #f80);
  color: var(--zude-primary, #222);
  border: 0;
  border-radius: var(--zude-pill, 999px);
  font-weight: 600;
  padding: .8em 1.9em;
  cursor: pointer;
}
.zude-btn.zude-contact__envoyer:hover { filter: brightness(.94); transform: translateY(-1px); }

/* v2.7.0 — mention d'affiliation du footer : lisible, discrète. */
.zude-footer-mention { display: inline-block; margin-top: .45rem; font-size: .82rem; opacity: .75; max-width: 640px; }

/* v2.7.2 — bandeau cookies : BARRE PLEINE LARGEUR et fine (retour Jon : la carte
   flottante bloquait la lecture). Boutons d'ÉGALE visibilité (CNIL). La sticky
   d'achat se décale AU-DESSUS automatiquement (sélecteur #zude-consent du JS). */
.zude-consent {
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 9998; /* sous la sticky d'achat (9999), qui se pose au-dessus */
  background: var(--zude-surface, #fff); color: var(--zude-text, #222);
  border-top: 1px solid var(--zude-border, #e5e5e5);
  box-shadow: 0 -6px 24px rgba(0,0,0,.12);
  padding: .55rem clamp(1rem, 4vw, 2.5rem) calc(.55rem + env(safe-area-inset-bottom));
  display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
}
.zude-consent[hidden] { display: none; }
.zude-consent__texte { margin: 0; font-size: .85rem; line-height: 1.45; flex: 1 1 320px; }
.zude-consent__texte a { font-weight: 600; }
.zude-consent__actions { margin: 0; display: flex; gap: .6rem; flex: 0 0 auto; }
.zude-consent__btn {
  cursor: pointer; font: inherit; font-weight: 600; font-size: .86rem;
  padding: .5em 1.1em; border-radius: var(--zude-pill, 999px);
  border: 1.5px solid var(--zude-primary, #222);
  background: transparent; color: var(--zude-primary, #222);
  white-space: nowrap;
}
.zude-consent__btn--ok { background: var(--zude-primary, #222); color: #fff; }
.zude-consent__btn:hover { filter: brightness(1.08); }
.zude-consent-rouvrir { margin-left: .6rem; font-size: .82rem; opacity: .75; }

/* Mobile : le bandeau reste une bande, jamais un bloc (retour Jon). */
@media (max-width: 640px) {
  .zude-consent { padding: .5rem .9rem calc(.5rem + env(safe-area-inset-bottom)); gap: .45rem .8rem; }
  .zude-consent__texte { font-size: .78rem; line-height: 1.38; flex-basis: 100%; }
  .zude-consent__actions { flex: 1 1 100%; }
  .zude-consent__btn { flex: 1 1 45%; font-size: .82rem; padding: .45em .8em; }
}

/* v2.7.3 — menu du pied de page : liste horizontale sobre au-dessus du copyright. */
.zude-footer-nav ul { list-style: none; margin: 0 0 .9rem; padding: 0;
  display: flex; flex-wrap: wrap; gap: .4rem 1.6rem; justify-content: center; }
.zude-footer-nav a { text-decoration: none; opacity: .85; font-size: .9rem; }
.zude-footer-nav a:hover { opacity: 1; text-decoration: underline; }

/* v2.7.5 — CONTRASTE : sur toute carte SOMBRE du gabarit d'avis, les strong
   héritaient de la couleur primaire (sombre sur sombre — vécu verdict A1). */
.zude-avis__verdict-card strong,
.zude-avis__verdict-card b,
.zude-avis__verdict-card a { color: #fff; }

/* v2.7.5 — MOBILE : le texte d'avis cumulait ~67px de marges latérales
   (retour Jon). Les blocs gardent une respiration de 14px, la prose ne
   rajoute rien. */
@media (max-width: 640px) {
  .zude-avis__block { padding-left: 14px; padding-right: 14px; }
  .zude-avis__prose { padding-left: 0; padding-right: 0; }
  .zude-avis__card-top, .zude-avis__card-data { padding-left: 14px; padding-right: 14px; }
}

/* v2.7.6 — cartes d'avis mobile : cadre resserré (12px). */
@media (max-width: 640px) {
  .zude-avis__card { padding-left: 12px; padding-right: 12px; }
  .zude-avis__card-top, .zude-avis__card-data { padding-left: 10px; padding-right: 10px; }
}

/* v2.7.7 — mobile : moins d'air au-dessus de la galerie (retour Jon). */
@media (max-width: 640px) {
  .zude-avis__gallery, .zude-gallery { margin-top: 4px; }
  .zude-avis > *:first-child { margin-top: 0; }
}

/* v2.8.0 — logo marchand dans les CTA d'achat. */
.zude-btn__logo { width: 20px; height: 20px; border-radius: 5px; flex: 0 0 auto;
  background: #fff; object-fit: contain; }

/* ====================================================================
   v2.9.1 - BLOCS DE COLLECTION (methode 3 blocs) - bloc CSS UNIQUE.
   Regles absolues : fonds/textes = neutres clairs FIXES (jamais un token
   de marque en fond de texte) ; l'actif reprend la marque avec un texte
   au contraste CALCULE (--zude-on-primary, emis par le plugin) ; UNE seule
   ligne de cartes (les summaries d'accordeon sont supprimes : c'etait le
   doublon mobile vu par Jon).
   ==================================================================== */

/* Encart resume au-dessus des boutons */
.zude-col-resume {
	margin: 26px 0 18px; padding: 20px 22px;
	background: #fbf9f4; border: 1px solid #e7e2d6; border-left: 4px solid var(--zude-primary);
	border-radius: calc(var(--zude-radius) - 4px);
}
.zude-col-resume__t { margin: 0 0 10px; font-weight: 800; font-size: 1.02rem; color: #1f2937; }
.zude-col-resume__list { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.zude-col-resume__list li { position: relative; padding-left: 26px; line-height: 1.5; color: #374151; }
.zude-col-resume__list li strong { color: #111827; }
.zude-col-resume__list li::before {
	content: ""; position: absolute; left: 0; top: .28em; width: 16px; height: 16px;
	border-radius: 50%; background: var(--zude-primary);
	-webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="black" d="M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"/></svg>') center/contain no-repeat;
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="black" d="M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"/></svg>') center/contain no-repeat;
}
@media (min-width: 760px) { .zude-col-resume__list { grid-template-columns: 1fr 1fr; column-gap: 26px; } }

/* Les cartes : la SEULE navigation, a toutes les tailles */
.zude-col-onglets .zude-onglets__tabs { display: grid; grid-template-columns: 1fr; gap: 12px; border-bottom: 0; margin-bottom: 14px; }
@media (min-width: 760px) { .zude-col-onglets .zude-onglets__tabs { grid-template-columns: repeat(3, 1fr); } }
.zude-col-onglets .zude-onglets__tab--card {
	display: flex; align-items: flex-start; gap: 14px; text-align: left; width: 100%;
	padding: 18px 20px; cursor: pointer;
	background: #ffffff; border: 1px solid #e5e7eb;
	border-radius: calc(var(--zude-radius) - 2px);
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
	transition: border-color .16s, box-shadow .16s, transform .16s;
}
.zude-col-onglets .zude-onglets__tab--card:hover {
	transform: translateY(-1px); border-color: #d1d5db;
	box-shadow: 0 6px 16px rgba(15, 23, 42, .08);
}
.zude-col-onglets .zude-onglets__tab--card.is-active {
	background: var(--zude-primary); border-color: var(--zude-primary);
	box-shadow: 0 6px 16px rgba(15, 23, 42, .14);
}
.zude-col-onglets .zude-onglets__tab-ic {
	width: 44px; height: 44px; border-radius: 12px; flex: 0 0 auto;
	display: flex; align-items: center; justify-content: center;
	background: #f3f4f6; color: var(--zude-primary);
}
.zude-col-onglets .zude-onglets__tab--card.is-active .zude-onglets__tab-ic {
	background: color-mix(in srgb, var(--zude-on-primary, #fff) 18%, transparent);
	color: var(--zude-on-primary, #fff);
}
.zude-col-onglets .zude-onglets__tab-tx { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.zude-col-onglets .zude-onglets__tab-t { font-weight: 700; font-size: .98rem; line-height: 1.3; color: #111827; }
.zude-col-onglets .zude-onglets__tab-s { font-size: .82rem; color: #6b7280; margin-top: 1px; }
.zude-col-onglets .zude-onglets__tab--card.is-active .zude-onglets__tab-t { color: var(--zude-on-primary, #fff); }
.zude-col-onglets .zude-onglets__tab--card.is-active .zude-onglets__tab-s { color: var(--zude-on-primary, #fff); opacity: .78; }
.zude-col-onglets .zude-onglets__tab-ar { margin-left: auto; flex: 0 0 auto; display: flex; color: var(--zude-primary); transition: transform .16s; }
.zude-col-onglets .zude-onglets__tab--card.is-active .zude-onglets__tab-ar { transform: rotate(180deg); color: var(--zude-on-primary, #fff); }

/* Panneaux : un seul visible, plus JAMAIS de summary (doublon mobile) */
.zude-col-onglets .zude-onglets__panel { display: none; background: #ffffff; border-color: #e5e7eb; margin-bottom: 0; }
.zude-col-onglets .zude-onglets__panel.is-active { display: block; box-shadow: 0 1px 3px rgba(15, 23, 42, .05); }
.zude-col-onglets .zude-onglets__panel > .zude-onglets__summary { display: none; }

/* H2 de bloc : VISIBLE a toutes les tailles (vrai article) */
.zude-onglets__h2-seo {
	margin: 0; padding: 22px 24px 0; font-size: 1.3rem; font-weight: 800;
	line-height: 1.3; color: #111827;
}
.zude-onglets__h2-seo + .zude-onglets__content { padding-top: 12px; }

/* Contenu : lisible, tableaux pleine largeur, H3 = FAQ/requetes marquees */
.zude-col-onglets .zude-onglets__content { padding: 20px 24px 24px; color: #374151; }
.zude-col-onglets .zude-onglets__content h3 {
	margin: 24px 0 10px; padding-left: 12px; font-size: 1.04rem; font-weight: 750;
	color: #111827; border-left: 3px solid var(--zude-primary); line-height: 1.35;
}
.zude-col-onglets .zude-onglets__content h3:first-child { margin-top: 0; }
.zude-col-onglets .zude-onglets__content table { width: 100%; }
