/**
 * DuckVan32 — styles globaux.
 *
 * Complète theme.json pour ce que le JSON ne sait pas exprimer :
 * variations de boutons, badges de statut, texture sable, focus visible,
 * prefers-reduced-motion.
 */

/* ---------- Boutons : variations « contour » et « lien fléché » ---------- */

.wp-block-button.is-style-dv-outline .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--primary);
	border: 2px solid var(--wp--preset--color--primary);
}

.wp-block-button.is-style-dv-outline .wp-block-button__link:hover {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
}

.wp-block-button.is-style-dv-arrow .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--primary);
	padding-left: 0;
	padding-right: 0;
	border-radius: 0;
	text-decoration: underline;
	text-underline-offset: 0.3em;
}

.wp-block-button.is-style-dv-arrow .wp-block-button__link::after {
	content: "\2192"; /* flèche → */
	display: inline-block;
	margin-left: 0.4em;
	transition: transform var(--wp--custom--transition, 180ms ease);
}

.wp-block-button.is-style-dv-arrow .wp-block-button__link:hover::after {
	transform: translateX(4px);
}

/* ---------- Badges de statut van ---------- */

.dv32-badge {
	display: inline-block;
	padding: 0.3em 0.85em;
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.02em;
}

.dv32-badge--disponible {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--ink);
}

.dv32-badge--vendu {
	background: var(--wp--preset--color--sold);
	color: var(--wp--preset--color--base);
}

.dv32-badge--en_cours,
.dv32-badge--sur_commande {
	background: var(--wp--preset--color--sky-light);
	color: var(--wp--preset--color--primary);
}

/* ---------- Texture discrète sur fonds sable ---------- */

.has-sand-background-color {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E");
}

/* ---------- Vignettes d'archive : duotone très léger dérivé du primaire ---------- */

.dv32-card__media {
	position: relative;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--md, 10px);
}

.dv32-card__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--wp--preset--color--primary);
	opacity: 0.08;
	mix-blend-mode: multiply;
	pointer-events: none;
}

/* ---------- Lisibilité sur fonds sombres (footer, hero, bandeaux primaires) ---------- */

/* Les titres héritent de la couleur encre par défaut : sur fond bleu nuit, on repasse en clair. */
.has-primary-background-color :is(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--base);
}

.has-primary-background-color,
.has-primary-background-color p,
.has-primary-background-color li {
	color: var(--wp--preset--color--base);
}

.has-primary-background-color a:not(.wp-block-button__link) {
	color: var(--wp--preset--color--accent);
	text-decoration-color: currentColor;
}

.has-primary-background-color a:not(.wp-block-button__link):hover {
	color: var(--wp--preset--color--base);
}

/* ---------- Animations d'apparition (progressives, coupées si reduced-motion) ---------- */

html.dv32-js .dv32-reveal {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity 500ms ease, transform 500ms ease;
}

html.dv32-js .dv32-reveal.is-visible {
	opacity: 1;
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	html.dv32-js .dv32-reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* ---------- Grille de vans + filtres ---------- */

.dv32-filters {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
	align-items: flex-end;
	margin-bottom: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--20);
	background: var(--wp--preset--color--sky-light);
	border-radius: var(--wp--custom--radius--md, 10px);
}

.dv32-filters label {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.dv32-filters select,
.dv32-filters input {
	min-width: 12rem;
	padding: 0.55rem 0.75rem;
	border: 1px solid var(--wp--preset--color--muted);
	border-radius: var(--wp--custom--radius--sm, 8px);
	font: inherit;
	background: var(--wp--preset--color--base);
}

.dv32-filters__submit {
	padding: 0.6rem 1.25rem;
	border: 0;
	border-radius: var(--wp--custom--radius--sm, 8px);
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}

.dv32-cards {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(20rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--30);
}

.dv32-card {
	background: var(--wp--preset--color--base);
	border-radius: var(--wp--custom--radius--lg, 12px);
	box-shadow: var(--wp--preset--shadow--card);
	overflow: hidden;
	transition: box-shadow var(--wp--custom--transition, 180ms ease), transform var(--wp--custom--transition, 180ms ease);
}

.dv32-card:hover {
	box-shadow: var(--wp--preset--shadow--card-hover);
	transform: translateY(-2px);
}

.dv32-card__link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.dv32-card__media {
	aspect-ratio: 4 / 3;
	background: var(--wp--preset--color--sky-light);
	border-radius: 0;
}

.dv32-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.dv32-card__media .dv32-badge {
	position: absolute;
	top: 12px;
	left: 12px;
	z-index: 1;
}

.dv32-card__body {
	padding: var(--wp--preset--spacing--20) var(--wp--preset--spacing--30) var(--wp--preset--spacing--30);
}

.dv32-card__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--large);
	margin: 0;
}

.dv32-card__meta {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	margin: 0.35rem 0 0.65rem;
}

.dv32-card__prix {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: var(--wp--preset--font-size--x-large);
	color: var(--wp--preset--color--primary);
	margin: 0;
}

.dv32-empty-state {
	text-align: center;
	padding: var(--wp--preset--spacing--60) var(--wp--preset--spacing--30);
	background: var(--wp--preset--color--sand);
	border-radius: var(--wp--custom--radius--lg, 12px);
}

/* ---------- Fiche van (single) : galerie à gauche, carte d'achat collante à droite ---------- */

.dv32-single {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--wp--preset--spacing--40);
	align-items: start;
	margin-top: var(--wp--preset--spacing--30);
}

@media (min-width: 1024px) {
	.dv32-single {
		grid-template-columns: minmax(0, 1fr) minmax(320px, 420px);
	}

	.dv32-single__aside {
		position: sticky;
		top: var(--wp--preset--spacing--20);
	}
}

.dv32-details {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--sky-light);
	border-radius: var(--wp--custom--radius--lg, 12px);
	box-shadow: var(--wp--preset--shadow--card);
	padding: var(--wp--preset--spacing--30);
}

.dv32-details__statut {
	margin: 0 0 0.5rem;
}

.dv32-details__titre {
	font-size: var(--wp--preset--font-size--large);
	margin: var(--wp--preset--spacing--30) 0 0.75rem;
}

.dv32-details__cta {
	flex-direction: column;
	align-items: stretch;
}

.dv32-details__cta .wp-block-button__link {
	display: block;
	text-align: center;
	width: 100%;
}

.dv32-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(14rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--20);
	margin-bottom: var(--wp--preset--spacing--40);
}

/* Photos cliquables : zoom au survol + pictogramme loupe. */
.dv32-zoom {
	display: block;
	position: relative;
	width: 100%;
	height: 100%;
	cursor: zoom-in;
}

.dv32-zoom img {
	transition: transform var(--wp--custom--transition, 180ms ease);
}

.dv32-zoom:hover img,
.dv32-zoom:focus-visible img {
	transform: scale(1.03);
}

.dv32-zoom__hint {
	position: absolute;
	right: 10px;
	bottom: 10px;
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: rgba(20, 50, 78, 0.75);
	color: var(--wp--preset--color--base);
	pointer-events: none;
}

/* Partage d'annonce. */
.dv32-share {
	text-align: center;
	margin-top: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--sky-light);
}

.dv32-share__titre {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: var(--wp--preset--font-size--large);
	margin: 0 0 var(--wp--preset--spacing--20);
}

.dv32-share__liste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--wp--preset--spacing--20);
}

.dv32-share__lien {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	color: #fff;
	transition: transform var(--wp--custom--transition, 180ms ease), box-shadow var(--wp--custom--transition, 180ms ease);
}

.dv32-share__lien:hover,
.dv32-share__lien:focus-visible {
	transform: translateY(-3px);
	box-shadow: var(--wp--preset--shadow--card-hover);
	color: #fff;
}

.dv32-share__lien--facebook {
	background: #1877f2;
}

.dv32-share__lien--x {
	background: #111;
}

.dv32-share__lien--linkedin {
	background: #0a66c2;
}

.dv32-share__lien--whatsapp {
	background: #25a55c;
}

.dv32-share__lien--email {
	background: #d35e4a;
}

/* Réseaux sociaux du footer. */
.dv32-footer-social {
	margin-top: var(--wp--preset--spacing--20);
}

/* Visionneuse plein écran. */
.dv32-lightbox {
	border: 0;
	padding: 0;
	background: transparent;
	max-width: 100vw;
	max-height: 100vh;
	overflow: visible;
}

.dv32-lightbox::backdrop {
	background: rgba(12, 18, 26, 0.92);
}

.dv32-lightbox figure {
	margin: 0;
}

.dv32-lightbox img {
	max-width: 90vw;
	max-height: 86vh;
	display: block;
	border-radius: var(--wp--custom--radius--sm, 8px);
}

.dv32-lightbox__count {
	text-align: center;
	color: #fff;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--small);
	margin-top: 0.5rem;
}

.dv32-lightbox button {
	position: fixed;
	z-index: 2;
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
	font-size: 1.6rem;
	line-height: 1;
	cursor: pointer;
}

.dv32-lightbox button:hover {
	background: rgba(255, 255, 255, 0.3);
}

.dv32-lightbox__close {
	top: 16px;
	right: 16px;
}

.dv32-lightbox__prev {
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
}

.dv32-lightbox__next {
	right: 16px;
	top: 50%;
	transform: translateY(-50%);
}

.dv32-gallery__item {
	margin: 0;
	border-radius: var(--wp--custom--radius--md, 10px);
	overflow: hidden;
	aspect-ratio: 4 / 3;
}

.dv32-gallery__item--hero {
	grid-column: 1 / -1;
	aspect-ratio: 16 / 9;
}

.dv32-gallery__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.dv32-details__prix {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: var(--wp--preset--font-size--xx-large);
	color: var(--wp--preset--color--primary);
	margin: 0.5rem 0 1.5rem;
}

.dv32-details__table {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: var(--wp--preset--spacing--30);
}

.dv32-details__table th,
.dv32-details__table td {
	text-align: left;
	padding: 0.65rem 0.85rem;
	border-bottom: 1px solid var(--wp--preset--color--sky-light);
}

.dv32-details__table th {
	color: var(--wp--preset--color--muted);
	font-weight: 600;
	width: 40%;
}

.dv32-details__equipements {
	list-style: none;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 var(--wp--preset--spacing--30);
}

.dv32-details__equipements li {
	background: var(--wp--preset--color--sky-light);
	color: var(--wp--preset--color--primary);
	padding: 0.3em 0.85em;
	border-radius: 999px;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.dv32-reassurance {
	list-style: none;
	padding: var(--wp--preset--spacing--30);
	margin: 0 0 var(--wp--preset--spacing--30);
	background: var(--wp--preset--color--sand);
	border-radius: var(--wp--custom--radius--md, 10px);
	display: grid;
	gap: 0.5rem;
}

.dv32-details__cta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
	margin-bottom: var(--wp--preset--spacing--20);
}

.dv32-details__cta .dv32-cta--secondaire {
	background: transparent;
	color: var(--wp--preset--color--primary);
	border: 2px solid var(--wp--preset--color--primary);
}

.dv32-details__tel {
	font-size: var(--wp--preset--font-size--large);
}

/* ---------- Hero : actions et WhatsApp mobile uniquement ---------- */

.dv32-hero-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
	margin-top: var(--wp--preset--spacing--30);
}

.dv32-cta--inverse {
	background: transparent;
	color: var(--wp--preset--color--base);
	border: 2px solid var(--wp--preset--color--base);
}

.dv32-cta--inverse:hover {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--primary);
}

/* Hero plein écran sur photo. */
.dv32-hero {
	display: flex;
	align-items: center;
}

.dv32-hero .wp-block-cover__inner-container {
	padding-top: var(--wp--preset--spacing--60);
	padding-bottom: var(--wp--preset--spacing--60);
}

.dv32-hero__solutions {
	list-style: none;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(22rem, 100%), 1fr));
	gap: 0.5rem 1.5rem;
}

.dv32-hero__solutions li {
	padding-left: 1.5rem;
	position: relative;
}

.dv32-hero__solutions li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 0.6rem;
	height: 0.6rem;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}

/* Section atelier. */
.dv32-atelier {
	border-radius: var(--wp--custom--radius--lg, 12px);
	overflow: hidden;
	box-shadow: var(--wp--preset--shadow--card);
	background: var(--wp--preset--color--sky-light);
}

.dv32-atelier .wp-block-media-text__content {
	padding: var(--wp--preset--spacing--40);
}

.dv32-atelier__avatar {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	object-fit: cover;
	border: 3px solid var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--card);
}

/* Le lien WhatsApp n'a de sens que sur mobile. */
@media (min-width: 782px) {
	.dv32-whatsapp {
		display: none;
	}
}

/* ---------- Bandeau points forts ---------- */

.dv32-pf {
	list-style: none;
	margin: var(--wp--preset--spacing--40) 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--30);
}

.dv32-pf__item {
	display: flex;
	align-items: flex-start;
	gap: 0.85rem;
	font-weight: 500;
}

.dv32-pf__icon {
	flex: none;
	color: var(--wp--preset--color--primary);
}

/* ---------- Mise en avant « van tout compris » ---------- */

.dv32-offre {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--wp--preset--spacing--30);
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--sky-light);
	border-radius: var(--wp--custom--radius--lg, 12px);
	box-shadow: var(--wp--preset--shadow--card);
	overflow: hidden;
}

@media (min-width: 860px) {
	.dv32-offre {
		grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
		gap: 0;
	}
}

.dv32-offre__corps {
	padding: var(--wp--preset--spacing--40);
}

.dv32-offre__eyebrow {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
	margin: 0 0 0.35rem;
}

.dv32-offre__titre {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 800;
	margin: 0 0 0.75rem;
}

.dv32-offre__intro {
	margin: 0 0 var(--wp--preset--spacing--30);
	max-width: 52ch;
}

.dv32-offre__etapes {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(13rem, 100%), 1fr));
	gap: 0.75rem 1.25rem;
	counter-reset: none;
}

.dv32-offre__etapes li {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	font-weight: 500;
}

.dv32-offre__num {
	flex: none;
	display: grid;
	place-items: center;
	width: 1.75rem;
	height: 1.75rem;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: 0.9rem;
}

.dv32-offre__prix {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	padding: var(--wp--preset--spacing--40);
	display: flex;
	flex-direction: column;
	justify-content: center;
	text-align: center;
	gap: 0.15rem;
}

.dv32-offre__mention {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-weight: 600;
	color: var(--wp--preset--color--accent);
}

.dv32-offre__montant {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: clamp(2.25rem, 5vw, 3rem);
	line-height: 1.05;
	font-variant-numeric: tabular-nums;
}

.dv32-offre__ttc {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--small);
	color: #D3DEE8;
}

.dv32-offre__tel {
	margin-top: 0.75rem;
	color: var(--wp--preset--color--accent);
	font-weight: 600;
	font-size: var(--wp--preset--font-size--large);
	text-decoration: none;
}

.dv32-offre__tel:hover {
	text-decoration: underline;
}

/* ---------- Tableau des tarifs ---------- */

.dv32-tarifs {
	width: 100%;
	border-collapse: collapse;
}

.dv32-tarifs th,
.dv32-tarifs td {
	text-align: left;
	padding: 0.85rem;
	border-bottom: 1px solid var(--wp--preset--color--sky-light);
	vertical-align: top;
}

.dv32-tarifs thead th {
	font-family: var(--wp--preset--font-family--heading);
	color: var(--wp--preset--color--primary);
}

.dv32-tarifs__detail {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.dv32-tarifs__prix {
	white-space: nowrap;
	color: var(--wp--preset--color--primary);
}

/* ---------- FAQ ---------- */

.dv32-faq__item {
	border: 1px solid var(--wp--preset--color--sky-light);
	border-radius: var(--wp--custom--radius--md, 10px);
	margin-bottom: 0.75rem;
	background: var(--wp--preset--color--base);
}

.dv32-faq__item summary {
	cursor: pointer;
	padding: 1rem 1.25rem;
	font-weight: 600;
	font-family: var(--wp--preset--font-family--heading);
	list-style-position: inside;
}

.dv32-faq__item summary:hover {
	color: var(--wp--preset--color--primary-light);
}

.dv32-faq__item[open] summary {
	border-bottom: 1px solid var(--wp--preset--color--sky-light);
	color: var(--wp--preset--color--primary);
}

.dv32-faq__item p {
	padding: 1rem 1.25rem;
	margin: 0;
}

/* ---------- En-tête : bandeau d'actions + barre logo/menu ---------- */

/* Bandeau haut bleu nuit : téléphone à gauche, 3 actions à droite. */
.dv32-topbar {
	padding: 0.4rem var(--wp--preset--spacing--30);
}

.dv32-topbar__tel {
	color: var(--wp--preset--color--base);
	font-weight: 600;
	margin: 0;
}

.dv32-topbar__actions {
	gap: 0.5rem;
}

.dv32-topbar__actions .wp-block-button__link {
	padding: 0.4rem 0.9rem;
	font-size: var(--wp--preset--font-size--small);
	white-space: nowrap;
}

/* Barre du dessous : logo pleine hauteur + menu, tous deux à gauche. */
.dv32-navbar {
	border-bottom: 1px solid var(--wp--preset--color--sky-light);
}

.dv32-navbar > .wp-block-group {
	gap: var(--wp--preset--spacing--40);
}

.dv32-navbar .wp-block-site-logo img {
	width: 96px;
	height: 96px;
	object-fit: contain;
	border-radius: 50%;
}

/* Si le logo est absent ou cassé, on ne montre pas d'icône d'image brisée. */
.dv32-navbar .wp-block-site-logo img:not([src]),
.dv32-navbar .wp-block-site-logo img[src=""] {
	display: none;
}

.dv32-header__nav {
	font-weight: 500;
	font-size: var(--wp--preset--font-size--large);
}

.dv32-header__nav a:hover {
	color: var(--wp--preset--color--primary-light);
}

@media (max-width: 781px) {
	/* La barre collante du bas couvre déjà Appeler/WhatsApp/Devis. */
	.dv32-topbar__actions {
		display: none;
	}

	.dv32-topbar > .wp-block-group {
		justify-content: center;
	}

	.dv32-navbar .wp-block-site-logo img {
		width: 64px;
		height: 64px;
	}
}

/* ---------- Bandeau partenaires ---------- */

.dv32-partenaires__intro {
	text-align: center;
	color: var(--wp--preset--color--muted);
	margin-bottom: var(--wp--preset--spacing--30);
}

.dv32-partenaires__liste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
}

.dv32-partenaires__liste img {
	max-height: 56px;
	width: auto;
	max-width: 160px;
	object-fit: contain;
	filter: grayscale(1);
	opacity: 0.65;
	transition: filter var(--wp--custom--transition, 180ms ease), opacity var(--wp--custom--transition, 180ms ease);
}

.dv32-partenaires__liste li:hover img,
.dv32-partenaires__liste li:focus-within img {
	filter: none;
	opacity: 1;
}

/* ---------- Barre d'action collante (mobile uniquement) ---------- */

.dv32-sticky-bar {
	display: none;
}

@media (max-width: 781px) {
	.dv32-sticky-bar {
		position: fixed;
		inset: auto 0 0 0;
		z-index: 50;
		display: flex;
		background: var(--wp--preset--color--primary);
		box-shadow: var(--wp--preset--shadow--sticky-bar);
		padding-bottom: env(safe-area-inset-bottom, 0);
	}

	.dv32-sticky-bar a {
		flex: 1;
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 0.15rem;
		padding: 0.6rem 0.5rem;
		color: var(--wp--preset--color--base);
		text-decoration: none;
		font-size: var(--wp--preset--font-size--small);
		font-weight: 600;
	}

	.dv32-sticky-bar a:focus-visible {
		outline-offset: -3px;
	}

	/* La barre ne doit jamais masquer du contenu : on réserve sa hauteur. */
	body {
		padding-bottom: calc(3.6rem + env(safe-area-inset-bottom, 0px));
	}
}

/* ---------- Formulaire de contact ---------- */

.dv32-form label {
	display: block;
	font-weight: 600;
	margin-bottom: 0.25rem;
}

.dv32-form input[type="text"],
.dv32-form input[type="tel"],
.dv32-form input[type="email"],
.dv32-form textarea {
	width: 100%;
	padding: 0.65rem 0.85rem;
	border: 1px solid var(--wp--preset--color--muted);
	border-radius: var(--wp--custom--radius--sm, 8px);
	font: inherit;
	background: var(--wp--preset--color--base);
}

.dv32-form__hp {
	position: absolute;
	left: -9999px;
}

.dv32-form__consent {
	display: flex;
	gap: 0.6rem;
	align-items: flex-start;
}

.dv32-form__consent input {
	margin-top: 0.3rem;
}

.dv32-form__consent label {
	font-weight: 400;
	font-size: var(--wp--preset--font-size--small);
}

.dv32-form__contexte {
	background: var(--wp--preset--color--sky-light);
	color: var(--wp--preset--color--primary);
	padding: 0.6rem 0.85rem;
	border-radius: var(--wp--custom--radius--sm, 8px);
	font-weight: 600;
}

.dv32-form__notice {
	padding: 0.85rem 1.1rem;
	border-radius: var(--wp--custom--radius--sm, 8px);
	font-weight: 600;
}

.dv32-form__notice--ok {
	background: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--green);
}

.dv32-form__notice--erreur {
	background: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--primary);
	border-left: 4px solid var(--wp--preset--color--accent);
}

/* ---------- Avis clients (uniquement validés) ---------- */

.dv32-avis {
	list-style: none;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(20rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--30);
}

.dv32-avis__item {
	background: var(--wp--preset--color--sand);
	border-radius: var(--wp--custom--radius--md, 10px);
	padding: var(--wp--preset--spacing--30);
}

.dv32-avis__item blockquote {
	margin: 0;
	border: 0;
}

.dv32-avis__auteur {
	margin: 0.75rem 0 0;
	color: var(--wp--preset--color--muted);
	font-weight: 600;
}

/* ---------- Accessibilité ---------- */

:focus-visible {
	outline: 2px solid var(--wp--preset--color--primary-light);
	outline-offset: 2px;
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	padding: 0.75rem 1.25rem;
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	border-radius: 0 0 var(--wp--custom--radius--sm, 8px) 0;
}

.skip-link:focus {
	left: 0;
}

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

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}
