/**
 * Direct Habitat 66
 * Couche 3 : composants réutilisables du système graphique.
 *
 * Les classes sont préfixées par dh66 pour éviter les collisions avec Blocksy,
 * Gutenberg et les extensions. Les variantes sombres utilisent les mêmes
 * rôles sémantiques afin de conserver une seule palette et un seul accent.
 */

/* Boutons et liens d'action. */
.dh66-button {
	display: inline-flex;
	min-width: var(--dh66-touch);
	min-height: var(--dh66-button-height);
	align-items: center;
	justify-content: center;
	gap: var(--dh66-space-2);
	padding: var(--dh66-space-3) var(--dh66-button-padding);
	border: 1px solid transparent;
	border-radius: var(--dh66-button-radius);
	font-size: var(--dh66-text-sm);
	font-weight: 800;
	line-height: 1.2;
	text-align: center;
	text-decoration: none !important;
	white-space: nowrap;
	cursor: pointer;
	transition:
		background-color var(--dh66-duration-fast) ease,
		border-color var(--dh66-duration-fast) ease,
		color var(--dh66-duration-fast) ease,
		box-shadow var(--dh66-duration-base) var(--dh66-ease-out),
		transform var(--dh66-duration-base) var(--dh66-ease-out);
}

.dh66-button:hover {
	transform: translateY(-2px);
}

.dh66-button:active {
	transform: translateY(1px) scale(0.985);
}

.dh66-button--primary {
	background: var(--dh66-accent);
	color: var(--dh66-on-accent) !important;
	box-shadow: 0 12px 30px color-mix(in srgb, var(--dh66-accent) 28%, transparent);
}

.dh66-button--primary:hover {
	background: var(--dh66-accent-hover);
	color: var(--dh66-on-accent) !important;
}

.dh66-button--secondary {
	border-color: var(--dh66-navy-900);
	background: var(--dh66-navy-900);
	color: #f4f7f8 !important;
}

.dh66-button--secondary:hover {
	border-color: var(--dh66-navy-800);
	background: var(--dh66-navy-800);
	color: #f4f7f8 !important;
}

.dh66-button--ghost {
	border-color: var(--dh66-border-strong);
	background: transparent;
	color: var(--dh66-text-strong) !important;
}

.dh66-button--ghost:hover {
	border-color: var(--dh66-accent);
	background: color-mix(in srgb, var(--dh66-accent) 9%, transparent);
	color: var(--dh66-text-strong) !important;
}

.dh66-button:is([disabled], [aria-disabled="true"]) {
	opacity: 0.55;
	cursor: not-allowed;
	transform: none;
}

/* Carte Google Maps : aucune requête tierce avant le choix du visiteur. */
.dh66-google-map {
	display: grid;
	gap: var(--dh66-space-4);
	color: var(--dh66-navy-900);
}

.dh66-google-map__header {
	display: grid;
	gap: var(--dh66-space-2);
}

.dh66-google-map__title,
.dh66-google-map__description,
.dh66-google-map__privacy,
.dh66-google-map__status {
	margin: 0;
}

.dh66-google-map__title {
	font-size: clamp(1.45rem, 1.2rem + 0.9vw, 2rem);
	line-height: 1.15;
}

.dh66-google-map__description,
.dh66-google-map__privacy {
	color: var(--dh66-text-muted);
	line-height: 1.6;
}

.dh66-google-map__canvas {
	display: grid;
	min-height: 18rem;
	place-items: center;
	overflow: hidden;
	border: 1px solid var(--dh66-border-strong);
	border-radius: var(--dh66-card-radius);
	background:
		linear-gradient(135deg, rgb(0 40 88 / 0.07), rgb(76 175 0 / 0.08)),
		var(--dh66-surface-soft);
}

.dh66-google-map--standard .dh66-google-map__canvas {
	min-height: 23rem;
}

.dh66-google-map--large .dh66-google-map__canvas {
	min-height: 28rem;
}

.dh66-google-map__consent {
	display: grid;
	max-width: 32rem;
	gap: var(--dh66-space-4);
	justify-items: center;
	padding: var(--dh66-space-6);
	text-align: center;
}

.dh66-google-map__consent[hidden] {
	display: none;
}

.dh66-service-detail-editor .dh66-google-map__header :is(.dh66-google-map__title, .dh66-google-map__description),
.dh66-service-detail-editor .dh66-google-map__consent :is(.dh66-google-map__privacy, .dh66-google-map__external) {
	color: var(--dh66-navy-900, #002858);
}

.dh66-google-map__button {
	min-width: var(--dh66-touch);
	min-height: var(--dh66-touch);
	padding: var(--dh66-space-3) var(--dh66-space-5);
	border: 0;
	border-radius: var(--dh66-button-radius);
	background: var(--dh66-navy-900);
	color: var(--dh66-white);
	font: inherit;
	font-weight: 800;
	cursor: pointer;
	transition: transform var(--dh66-duration-base) var(--dh66-ease-out), background-color var(--dh66-duration-fast) ease;
}

.dh66-google-map__button:is(:hover, :focus-visible) {
	background: var(--dh66-navy-800);
	transform: translateY(-2px);
}

.dh66-google-map__button:focus-visible,
.dh66-google-map__external:focus-visible {
	outline: 3px solid var(--dh66-orange-500);
	outline-offset: 3px;
}

.dh66-google-map__button:disabled {
	cursor: progress;
	opacity: 0.72;
	transform: none;
}

.dh66-google-map__external {
	color: var(--dh66-navy-900);
	font-weight: 700;
}

.dh66-google-map__iframe {
	width: 100%;
	min-height: inherit;
	border: 0;
}

.dh66-google-map__status:empty {
	display: none;
}

.dh66-google-map-editor {
	padding: 1.5rem;
	border: 1px dashed #7b91a8;
	border-radius: 0.75rem;
	background: #f5f5f5;
	color: #002858;
	text-align: center;
}

.dh66-google-map-editor .dashicons {
	display: block;
	width: auto;
	height: auto;
	margin-bottom: 0.5rem;
	font-size: 2rem;
}

.dh66-google-map-editor__notice {
	margin-bottom: 0;
	font-size: 0.875rem;
}

@media (max-width: 47.99rem) {
	.dh66-google-map__canvas,
	.dh66-google-map--standard .dh66-google-map__canvas,
	.dh66-google-map--large .dh66-google-map__canvas {
		min-height: 17rem;
	}

	.dh66-google-map__consent {
		padding: var(--dh66-space-5);
	}
}

/* Verre liquide : approximation web volontairement sobre. */
.dh66-glass {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	border: 1px solid var(--dh66-glass-border);
	border-radius: var(--dh66-card-radius);
	background:
		linear-gradient(135deg, var(--dh66-glass-fill), var(--dh66-glass-fill-soft)),
		color-mix(in srgb, var(--dh66-surface) 12%, transparent);
	box-shadow:
		inset 0 1px 0 var(--dh66-glass-edge),
		inset 0 -1px 0 rgb(255 255 255 / 0.08),
		var(--dh66-glass-shadow);
	-webkit-backdrop-filter: blur(14px) saturate(135%) contrast(1.03);
	backdrop-filter: blur(14px) saturate(135%) contrast(1.03);
}

.dh66-glass::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	border-radius: inherit;
	background:
		radial-gradient(circle at 15% 0%, rgb(255 255 255 / 0.22), transparent 32%),
		linear-gradient(112deg, rgb(255 255 255 / 0.08), transparent 44%, rgb(228 134 53 / 0.04));
	content: "";
	pointer-events: none;
}

@supports not ((-webkit-backdrop-filter: blur(1rem)) or (backdrop-filter: blur(1rem))) {
	.dh66-glass {
		background: var(--dh66-surface-raised);
	}
}

@media (prefers-reduced-transparency: reduce) {
	.dh66-glass {
		background: var(--dh66-surface-raised);
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
	}
}

/* En-tête, navigation principale et navigation mobile. */
.dh66-site-header {
	position: sticky;
	z-index: var(--dh66-layer-sticky);
	top: 0;
	border-bottom: 1px solid color-mix(in srgb, var(--dh66-border) 74%, transparent);
	background: color-mix(in srgb, var(--dh66-bg) 90%, transparent);
	-webkit-backdrop-filter: blur(18px) saturate(130%);
	backdrop-filter: blur(18px) saturate(130%);
}

.dh66-site-header__inner {
	display: flex;
	min-height: var(--dh66-header-height);
	align-items: center;
	justify-content: space-between;
	gap: var(--dh66-space-6);
}

.dh66-site-logo {
	display: block;
	width: clamp(7rem, 6.4rem + 2vw, 8.5rem);
	padding: 0.25rem 0.45rem;
	border-radius: var(--dh66-radius-md);
	background: var(--dh66-white);
}

.dh66-site-logo img {
	width: 100%;
}

.dh66-main-nav {
	display: flex;
	align-items: center;
	gap: clamp(0.85rem, 0.45rem + 1.3vw, 1.75rem);
	white-space: nowrap;
}

.dh66-main-nav a:not(.dh66-button) {
	position: relative;
	min-height: var(--dh66-touch);
	display: inline-flex;
	align-items: center;
	color: var(--dh66-text-strong);
	font-size: var(--dh66-text-sm);
	font-weight: 750;
	text-decoration: none;
}

.dh66-main-nav a:not(.dh66-button)::after {
	position: absolute;
	right: 0;
	bottom: 0.35rem;
	left: 0;
	height: 2px;
	background: var(--dh66-accent);
	content: "";
	transform: scaleX(0);
	transform-origin: right;
	transition: transform var(--dh66-duration-base) var(--dh66-ease-out);
}

.dh66-main-nav a:not(.dh66-button):is(:hover, :focus-visible, [aria-current="page"])::after {
	transform: scaleX(1);
	transform-origin: left;
}

.dh66-menu-toggle {
	display: none;
	min-width: var(--dh66-touch);
	min-height: var(--dh66-touch);
	padding-inline: var(--dh66-space-4);
	border: 1px solid var(--dh66-border-strong);
	border-radius: var(--dh66-radius-md);
	background: var(--dh66-surface-raised);
	color: var(--dh66-text-strong);
	font-weight: 800;
	cursor: pointer;
}

.dh66-mobile-nav {
	display: none;
}

/* Réseaux sociaux ajoutés au menu Blocksy sans modifier ses liens enregistrés. */
.dh66-menu-socials {
	display: flex;
	align-items: center;
	margin-inline-start: 0.35rem;
	list-style: none;
}

.dh66-header-socials,
.dh66-header-socials .ct-social-box {
	display: flex;
	gap: 0.3rem;
	align-items: center;
}

.dh66-header-socials a {
	display: inline-flex !important;
	width: 2rem;
	min-width: 2rem !important;
	height: 2rem;
	min-height: 2rem !important;
	align-items: center;
	justify-content: center;
	padding: 0 !important;
	border: 1px solid rgb(255 255 255 / 0.2);
	border-radius: var(--dh66-radius-pill);
	background: rgb(255 255 255 / 0.06);
	color: #f1f6f8;
	text-decoration: none;
	transition:
		background-color var(--dh66-duration-fast) ease,
		border-color var(--dh66-duration-fast) ease,
		transform var(--dh66-duration-fast) ease;
}

.dh66-header-socials a::before,
.dh66-header-socials a::after {
	display: none !important;
}

.dh66-header-socials a:is(:hover, :focus-visible) {
	border-color: var(--dh66-green-500, #4caf00);
	background: rgb(255 255 255 / 0.13);
	transform: translateY(-1px);
}

.dh66-header-socials svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

/* Carte globale de contact placée avant le pied de page. */
.dh66-footer-cta {
	position: relative;
	z-index: 2;
	padding-block: clamp(2.5rem, 1.5rem + 4vw, 5rem) clamp(2rem, 1.25rem + 2vw, 3.5rem);
}

.dh66-footer-cta__card {
	display: grid;
	grid-template-columns: minmax(16rem, 0.9fr) minmax(24rem, 1.1fr);
	gap: clamp(1.5rem, 1rem + 2vw, 3rem);
	align-items: center;
	padding: clamp(1.5rem, 1rem + 2.5vw, 3rem);
	border: 1px solid rgb(255 255 255 / 0.2);
	border-radius: var(--dh66-radius-xl, 1.5rem);
	background: linear-gradient(135deg, rgb(255 255 255 / 0.12), rgb(0 40 88 / 0.18));
	box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.18), 0 1.5rem 4rem rgb(0 15 36 / 0.18);
	-webkit-backdrop-filter: blur(16px) saturate(125%);
	backdrop-filter: blur(16px) saturate(125%);
}

.dh66-footer-cta__copy {
	display: grid;
	gap: 0.65rem;
}

.dh66-footer-cta__copy h2,
.dh66-footer-cta__copy p {
	margin: 0;
}

.dh66-footer-cta__copy h2 {
	color: #ffffff;
	font-size: clamp(1.75rem, 1.4rem + 1.6vw, 2.75rem);
	line-height: 1.05;
	letter-spacing: -0.035em;
}

.dh66-footer-cta__copy p {
	max-width: 42rem;
	color: #dbe7f2;
	font-size: var(--dh66-text-sm);
	line-height: 1.6;
}

.dh66-footer-cta__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.7rem;
	justify-content: flex-end;
}

.dh66-footer-cta__button {
	display: inline-flex;
	min-height: var(--dh66-touch);
	align-items: center;
	justify-content: center;
	padding: 0.7rem 1rem;
	border: 1px solid rgb(255 255 255 / 0.3);
	border-radius: var(--dh66-radius-pill);
	background: rgb(255 255 255 / 0.08);
	color: #ffffff;
	font-size: var(--dh66-text-xs);
	font-weight: 800;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	transition:
		background-color var(--dh66-duration-fast) ease,
		border-color var(--dh66-duration-fast) ease,
		transform var(--dh66-duration-fast) ease;
}

.dh66-footer-cta__button.is-primary {
	border-color: var(--dh66-accent);
	background: var(--dh66-accent);
	color: var(--dh66-on-accent);
}

.dh66-footer-cta__button.is-phone {
	border-color: color-mix(in srgb, var(--dh66-green-500, #4caf00) 72%, white);
}

.dh66-footer-cta__button:is(:hover, :focus-visible) {
	border-color: var(--dh66-orange-400, #ff9a4a);
	background: rgb(255 255 255 / 0.16);
	color: #ffffff;
	transform: translateY(-2px);
}

.dh66-footer-cta__button.is-primary:is(:hover, :focus-visible) {
	border-color: var(--dh66-accent-hover);
	background: var(--dh66-accent-hover);
	color: var(--dh66-on-accent);
}

/* Pied de page. */
.dh66-site-footer {
	position: relative;
	z-index: 2;
	isolation: isolate;
	padding-block: clamp(2rem, 1.5rem + 2vw, 3.5rem) var(--dh66-space-6);
	border-top: 1px solid rgb(255 255 255 / 0.14);
	background: transparent;
	color: #dbe7f2;
}

.dh66-site-footer a {
	color: #f1f6f8;
}

.dh66-site-footer h3 {
	color: #f1f6f8;
}

.dh66-site-footer__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(1.5rem, 1rem + 2vw, 3rem);
}

.dh66-site-footer__group {
	min-width: 0;
}

.dh66-site-footer__group h3 {
	margin: 0 0 var(--dh66-space-3);
	font-size: var(--dh66-text-xs);
	font-weight: 800;
	letter-spacing: 0.04em;
	line-height: 1.3;
	text-transform: uppercase;
}

.dh66-site-footer__group ul {
	display: grid;
	gap: 0.3rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dh66-site-footer__group a {
	position: relative;
	display: flex;
	min-height: 2rem;
	align-items: center;
	width: max-content;
	max-width: 100%;
	padding: 0.2rem 0;
	color: #dbe7f2;
	font-size: var(--dh66-text-xs);
	font-weight: 500;
	line-height: 1.35;
	text-decoration: none;
	transition:
		background-color var(--dh66-duration-fast) ease,
		color var(--dh66-duration-fast) ease,
		transform var(--dh66-duration-fast) ease;
}

.dh66-site-footer__group a:is(:hover, :focus-visible) {
	color: var(--dh66-orange-400, #ff9a4a);
	text-decoration: underline;
	text-underline-offset: 0.22em;
}

.dh66-site-footer__group a[aria-current="page"] {
	color: var(--dh66-orange-400, #ff9a4a);
	font-weight: 700;
}

.dh66-site-footer__meta {
	display: grid;
	grid-template-columns: minmax(14rem, 1fr) auto minmax(14rem, 1fr);
	gap: var(--dh66-space-6);
	align-items: center;
	margin-top: clamp(1.75rem, 1.25rem + 1.5vw, 2.75rem);
	padding-top: var(--dh66-space-5);
	border-top: 1px solid rgb(255 255 255 / 0.12);
	color: #afc1ca;
	font-size: var(--dh66-text-sm);
}

.dh66-site-footer__brand {
	display: grid;
	gap: var(--dh66-space-1);
}

.dh66-site-footer__brand p,
.dh66-site-footer__copyright {
	margin: 0;
	color: #afc1ca;
	font-size: var(--dh66-text-xs);
}

.dh66-site-footer__home {
	max-width: max-content;
	color: #ffffff !important;
	font-size: var(--dh66-text-base);
	font-weight: 850;
	text-decoration: none;
}

.dh66-site-footer__socials {
	position: relative;
	z-index: 1;
}

.dh66-site-footer__socials .ct-social-box {
	display: flex;
	gap: var(--dh66-space-3);
	align-items: center;
}

.dh66-site-footer__socials a {
	display: inline-flex;
	width: var(--dh66-touch);
	height: var(--dh66-touch);
	align-items: center;
	justify-content: center;
	border-radius: var(--dh66-radius-pill);
	background: rgb(255 255 255 / 0.09);
	text-decoration: none;
}

.dh66-site-footer__socials a:is(:hover, :focus-visible) {
	background: rgb(255 255 255 / 0.16);
}

.dh66-site-footer__socials svg {
	width: 1.45rem;
	height: 1.45rem;
	fill: currentColor;
}

.dh66-site-footer__copyright {
	justify-self: end;
	text-align: right;
}

/* Introduction de page. */
.dh66-page-intro {
	display: grid;
	min-height: min(42rem, calc(100dvh - var(--dh66-header-height)));
	grid-template-columns: minmax(0, 0.92fr) minmax(20rem, 1.08fr);
	gap: clamp(2rem, 1rem + 5vw, 6rem);
	align-items: center;
	padding-block: clamp(3rem, 1.8rem + 5vw, 6.25rem);
}

.dh66-page-intro__copy {
	display: grid;
	gap: var(--dh66-space-6);
	align-content: center;
}

.dh66-page-intro__media {
	position: relative;
	min-height: clamp(20rem, 44vw, 34rem);
	overflow: hidden;
	border-radius: var(--dh66-card-radius);
	background: var(--dh66-surface-soft);
	box-shadow: var(--dh66-shadow-lg);
}

.dh66-page-intro__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.dh66-page-intro__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--dh66-space-3);
}

/* Cartes utiles. Le conteneur ne remplace pas le contenu éditorial simple. */
.dh66-card {
	container: dh66-card / inline-size;
	position: relative;
	padding: var(--dh66-card-padding);
	border: 1px solid var(--dh66-border);
	border-radius: var(--dh66-card-radius);
	background: var(--dh66-surface-raised);
	box-shadow: var(--dh66-shadow-sm);
	color: var(--dh66-text);
}

.dh66-card__body {
	display: grid;
	gap: var(--dh66-space-4);
}

.dh66-card__title {
	font-size: var(--dh66-heading-3);
}

.dh66-card__media {
	overflow: hidden;
	border-radius: calc(var(--dh66-card-radius) - 0.25rem);
	background: var(--dh66-surface-soft);
}

.dh66-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--dh66-duration-slow) var(--dh66-ease-out);
}

.dh66-card:has(a:hover) .dh66-card__media img {
	transform: scale(1.025);
}

.dh66-service-card {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--dh66-space-5);
}

.dh66-service-card__number {
	color: var(--dh66-accent);
	font-family: var(--dh66-font-mono);
	font-size: var(--dh66-text-sm);
	font-weight: 800;
}

.dh66-local-card {
	display: grid;
	grid-template-columns: minmax(5rem, 0.34fr) minmax(0, 1fr);
	gap: var(--dh66-space-6);
	align-items: center;
}

.dh66-local-card__mark {
	color: var(--dh66-accent);
	font-size: clamp(4rem, 2.5rem + 6cqi, 7.5rem);
	font-weight: 900;
	letter-spacing: -0.08em;
	line-height: 0.8;
}

.dh66-project-card {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(16rem, 0.9fr);
	gap: var(--dh66-space-6);
	align-items: stretch;
}

.dh66-project-card__media {
	min-height: 18rem;
}

.dh66-project-card__body {
	display: grid;
	gap: var(--dh66-space-4);
	align-content: center;
}

@container dh66-card (max-width: 31rem) {
	.dh66-local-card,
	.dh66-project-card {
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-local-card__mark {
		font-size: clamp(3.75rem, 18cqi, 6rem);
	}
}

/* Appel à l'action. */
.dh66-cta {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: clamp(1.5rem, 1rem + 3vw, 4rem);
	align-items: center;
	padding: clamp(1.5rem, 1rem + 2.5vw, 3.5rem);
	border-radius: var(--dh66-card-radius);
	background: var(--dh66-navy-900);
	box-shadow: var(--dh66-shadow-lg);
	color: #dbe7f2;
}

.dh66-cta :is(h2, h3) {
	color: #f1f6f8;
}

.dh66-cta__copy {
	display: grid;
	gap: var(--dh66-space-3);
}

.dh66-cta .dh66-button--ghost {
	border-color: #8098a6;
	color: #f4f7f8 !important;
}

.dh66-cta .dh66-button--ghost:hover {
	border-color: color-mix(in srgb, var(--dh66-orange-500) 72%, var(--dh66-white));
	background: rgb(255 154 74 / 0.1);
	color: #f4f7f8 !important;
}

/* Galerie éditoriale, avec rythme asymétrique sur grand écran. */
.dh66-gallery {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	grid-auto-flow: dense;
	gap: clamp(0.75rem, 0.5rem + 1.2vw, 1.5rem);
}

.dh66-gallery__item {
	grid-column: span 5;
	min-height: 18rem;
	overflow: hidden;
	border-radius: var(--dh66-card-radius);
	background: var(--dh66-surface-soft);
}

.dh66-gallery__item:nth-child(3n + 1) {
	grid-column: span 7;
}

.dh66-gallery__item:nth-child(4n + 2) {
	min-height: 24rem;
}

.dh66-gallery__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--dh66-duration-slow) var(--dh66-ease-out);
}

.dh66-gallery__item:hover img {
	transform: scale(1.025);
}

/* Bande de logos. Aucun libellé décoratif sous les marques. */
.dh66-logo-band {
	padding-block: clamp(2rem, 1.25rem + 2vw, 3.5rem);
	border-block: 1px solid var(--dh66-border);
}

.dh66-logo-band__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(8rem, 100%), 1fr));
	gap: clamp(1.5rem, 1rem + 2.5vw, 3rem);
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dh66-logo-band__item {
	display: grid;
	min-height: 4rem;
	place-items: center;
}

.dh66-logo-band__item img {
	max-width: 8.5rem;
	max-height: 3.25rem;
	object-fit: contain;
}

/* Témoignages. */
.dh66-testimonial {
	display: grid;
	gap: var(--dh66-space-6);
	padding-block: var(--dh66-space-6);
	border-top: 1px solid var(--dh66-border);
}

.dh66-testimonial blockquote {
	max-width: 42ch;
	color: var(--dh66-text-strong);
	font-size: clamp(1.25rem, 1.08rem + 0.7vw, 1.75rem);
	font-weight: 650;
	line-height: 1.45;
}

.dh66-testimonial__author {
	display: grid;
	gap: 0.1rem;
	color: var(--dh66-text-muted);
	font-size: var(--dh66-text-sm);
}

.dh66-testimonial__author strong {
	color: var(--dh66-text-strong);
}

/* FAQ progressive et accessible avec details/summary. */
.dh66-faq {
	display: grid;
	gap: var(--dh66-space-3);
}

.dh66-faq details {
	border-bottom: 1px solid var(--dh66-border);
}

.dh66-faq summary {
	display: grid;
	min-height: var(--dh66-touch);
	grid-template-columns: minmax(0, 1fr) auto;
	gap: var(--dh66-space-4);
	align-items: center;
	padding-block: var(--dh66-space-5);
	color: var(--dh66-text-strong);
	font-weight: 800;
	cursor: pointer;
	list-style: none;
}

.dh66-faq summary::-webkit-details-marker {
	display: none;
}

.dh66-faq summary::after {
	display: grid;
	width: var(--dh66-touch);
	height: var(--dh66-touch);
	place-items: center;
	border: 1px solid var(--dh66-border-strong);
	border-radius: var(--dh66-radius-pill);
	content: "+";
	font-size: 1.25rem;
	transition: transform var(--dh66-duration-base) var(--dh66-ease-out);
}

.dh66-faq details[open] summary::after {
	transform: rotate(45deg);
}

.dh66-faq__answer {
	max-width: 65ch;
	padding: 0 var(--dh66-space-16) var(--dh66-space-6) 0;
	color: var(--dh66-text);
}

/* Carrousel ouvert. Le défilement natif reste utilisable sans JavaScript. */
.dh66-open-carousel {
	display: grid;
	gap: var(--dh66-space-6);
	container: dh66-carousel / inline-size;
}

.dh66-open-carousel__viewport {
	overflow-x: auto;
	overflow-y: hidden;
	padding: var(--dh66-space-4) var(--dh66-gutter) var(--dh66-space-8);
	scroll-padding-inline: var(--dh66-gutter);
	scroll-snap-type: x mandatory;
	overscroll-behavior-inline: contain;
	scrollbar-color: var(--dh66-accent) var(--dh66-surface-soft);
}

.dh66-open-carousel__track {
	display: grid;
	width: max-content;
	grid-auto-flow: column;
	grid-auto-columns: clamp(17rem, 54cqi, 42rem);
	gap: clamp(1rem, 0.75rem + 2cqi, 2rem);
}

.dh66-open-carousel__slide {
	display: grid;
	grid-template-rows: minmax(15rem, 1fr) auto;
	overflow: hidden;
	border-radius: var(--dh66-card-radius);
	background: var(--dh66-surface-raised);
	box-shadow: var(--dh66-shadow-md);
	scroll-snap-align: center;
	scroll-snap-stop: always;
}

.dh66-open-carousel__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.dh66-open-carousel__copy {
	display: grid;
	gap: var(--dh66-space-3);
	padding: var(--dh66-card-padding);
}

.dh66-open-carousel__controls {
	display: flex;
	justify-content: flex-end;
	gap: var(--dh66-space-2);
}

.dh66-open-carousel__control {
	display: grid;
	min-width: var(--dh66-touch);
	min-height: var(--dh66-touch);
	place-items: center;
	border: 1px solid var(--dh66-border-strong);
	border-radius: var(--dh66-radius-pill);
	background: var(--dh66-surface-raised);
	color: var(--dh66-text-strong);
	cursor: pointer;
}

/* Formulaires. Les libellés restent visibles au-dessus des champs. */
.dh66-form {
	display: grid;
	gap: var(--dh66-space-6);
}

.dh66-form__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--dh66-space-5);
}

.dh66-form__field {
	display: grid;
	gap: var(--dh66-space-2);
}

.dh66-form__field--full {
	grid-column: 1 / -1;
}

.dh66-form label,
.dh66-form legend {
	color: var(--dh66-text-strong);
	font-size: var(--dh66-text-sm);
	font-weight: 800;
}

.dh66-form :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea) {
	width: 100%;
	min-height: var(--dh66-input-height);
	padding: 0.8rem 0.95rem;
	border: 1px solid var(--dh66-border-strong);
	border-radius: var(--dh66-radius-md);
	background: var(--dh66-surface-raised);
	color: var(--dh66-text-strong);
	box-shadow: inset 0 1px 2px rgb(11 45 66 / 0.05);
	transition:
		border-color var(--dh66-duration-fast) ease,
		box-shadow var(--dh66-duration-fast) ease;
}

.dh66-form textarea {
	min-height: 9rem;
	resize: vertical;
}

.dh66-form ::placeholder {
	color: var(--dh66-text-muted);
	opacity: 1;
}

.dh66-form :is(input, select, textarea):focus-visible {
	border-color: var(--dh66-focus);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--dh66-focus) 22%, transparent);
}

.dh66-form :is(input, select, textarea)[aria-invalid="true"] {
	border-color: var(--dh66-error-600);
}

.dh66-form__hint,
.dh66-form__error {
	font-size: var(--dh66-text-sm);
}

.dh66-form__hint {
	color: var(--dh66-text-muted);
}

.dh66-form__error {
	color: var(--dh66-error-600);
	font-weight: 700;
}

.dh66-form__status {
	padding: var(--dh66-space-4);
	border-left: 4px solid var(--dh66-accent);
	background: var(--dh66-surface-soft);
	color: var(--dh66-text-strong);
}

.dh66-form__status--success {
	border-left-color: var(--dh66-positive);
}

/* Apparition progressive optionnelle, uniquement pour hiérarchiser la lecture. */
@media (prefers-reduced-motion: no-preference) {
	@supports (animation-timeline: view()) {
		.dh66-reveal {
			animation: dh66-reveal linear both;
			animation-range: entry 10% cover 28%;
			animation-timeline: view();
		}

		@keyframes dh66-reveal {
			from {
				opacity: 0;
				transform: translateY(1rem);
			}

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

@media (max-width: 63.99rem) {
	.dh66-main-nav {
		display: none;
	}

	.dh66-menu-toggle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}

	.dh66-mobile-nav[data-open="true"] {
		display: grid;
		gap: var(--dh66-space-1);
		padding: var(--dh66-space-3) var(--dh66-gutter) var(--dh66-space-5);
		border-top: 1px solid var(--dh66-border);
		background: var(--dh66-surface-raised);
		box-shadow: var(--dh66-shadow-md);
	}

	.dh66-mobile-nav a {
		display: flex;
		min-height: var(--dh66-touch);
		align-items: center;
		padding: var(--dh66-space-2) var(--dh66-space-3);
		border-radius: var(--dh66-radius-sm);
		color: var(--dh66-text-strong);
		font-weight: 750;
		text-decoration: none;
	}

	.dh66-mobile-nav a:is(:hover, :focus-visible, [aria-current="page"]) {
		background: var(--dh66-surface-soft);
	}

	.dh66-menu-socials {
		margin: 0.45rem 0 0;
		padding-top: 0.7rem;
		border-top: 1px solid rgb(255 255 255 / 0.12);
	}

	.dh66-header-socials a {
		width: var(--dh66-touch);
		min-width: var(--dh66-touch) !important;
		height: var(--dh66-touch);
		min-height: var(--dh66-touch) !important;
	}

	.dh66-footer-cta__card {
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-footer-cta__actions {
		justify-content: flex-start;
	}

	.dh66-site-footer__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.dh66-site-footer__meta {
		grid-template-columns: minmax(0, 1fr) auto;
	}

	.dh66-site-footer__copyright {
		grid-column: 1 / -1;
		justify-self: start;
		text-align: left;
	}

	.dh66-page-intro {
		min-height: auto;
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-page-intro__copy {
		max-width: 44rem;
	}

	.dh66-page-intro__media {
		min-height: clamp(18rem, 64vw, 30rem);
	}

	.dh66-gallery__item,
	.dh66-gallery__item:nth-child(3n + 1) {
		grid-column: span 6;
	}

	.dh66-cta {
		grid-template-columns: minmax(0, 1fr);
		justify-items: start;
	}
}

@media (max-width: 47.99rem) {
	.dh66-footer-cta__card {
		padding: 1.25rem;
		border-radius: var(--dh66-radius-lg);
	}

	.dh66-footer-cta__actions {
		display: grid;
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-footer-cta__button {
		width: 100%;
	}

	.dh66-site-footer__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-site-footer__meta {
		grid-template-columns: minmax(0, 1fr);
		justify-items: start;
	}

	.dh66-site-footer__copyright {
		grid-column: auto;
	}

	.dh66-page-intro {
		padding-block: var(--dh66-space-12) var(--dh66-space-16);
	}

	.dh66-page-intro__actions {
		align-items: stretch;
		flex-direction: column;
	}

	.dh66-page-intro__actions .dh66-button {
		width: 100%;
	}

	.dh66-project-card,
	.dh66-local-card {
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-gallery {
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-gallery__item,
	.dh66-gallery__item:nth-child(3n + 1) {
		grid-column: 1;
		min-height: clamp(16rem, 82vw, 24rem);
	}

	.dh66-form__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.dh66-form__field--full {
		grid-column: auto;
	}

	.dh66-open-carousel__track {
		grid-auto-columns: min(84cqi, 22rem);
	}
}

@media (max-width: 29.99rem) {
	.dh66-cta .dh66-button,
	.dh66-form .dh66-button {
		width: 100%;
		white-space: normal;
	}

	.dh66-faq__answer {
		padding-right: 0;
	}
}
