/* Page Contact — ce qui n'appartient qu'à elle. */

/* --------------------------------------------------------------------- Hero */

.contact-hero {
	position: relative;
	overflow: clip;
	padding-block: 56px 72px;
}

.contact-hero__halo {
	--halo-size: 600px;
	--halo-color: rgba(47, 91, 232, 0.1);
	--halo-blur: 80px;

	top: -200px;
	left: calc(50% + 280px); /* x 1000 dans le cadre de 1440 centré */
}

.contact-hero__inner {
	position: relative;
}

.contact-hero__title {
	max-width: 830px;
}

.contact-hero__lead {
	display: flex;
	flex-direction: column;
	gap: 14px;
	max-width: 760px;
	padding-top: 16px;
}

/* ------------------------------------------------ Formulaire et coordonnées */

/*
 * Formulaire à cheval sur le hero. Les 72 px de retrait bas du hero et ce −46
 * sont solidaires : toucher l'un sans l'autre déplace la carte au lieu de régler
 * le chevauchement. `position` obligatoire, sinon le hero peint par-dessus.
 */
.contact-body {
	position: relative;
	margin-top: -46px;
	padding-block: 0 112px;
}

/* 584 et 528 sur les 1132 utiles, séparés par 44. */
.contact-body__inner {
	display: flex;
	align-items: flex-start;
	gap: 3.89%; /* 44 / 1132 */
}

/* --------------------------------------------------------------- Formulaire */

.contact-form {
	flex: 0 0 51.59%; /* 584 / 1132 */
	padding: 36px 34px;
	border: 1px solid var(--color-rule);
	border-radius: var(--radius-card);
	background: var(--color-white);
	box-shadow: 0 30px 70px -30px rgba(24, 25, 50, 0.28);
}

.contact-form__title {
	color: var(--color-navy);
	font: var(--text-h3-lg);
}

.contact-form__lead {
	padding-top: 6px;
	color: var(--color-text-muted);
	font: 400 0.875rem/1.375rem var(--font-sans); /* 14 / 22 */
}

.contact-form .form-grid {
	padding-top: 24px;
}

/*
 * Le retrait de `.btn--primary` est asymétrique — 25 px à gauche pour le
 * libellé, 4 à droite où la pastille affleure. Centrer sans le rééquilibrer
 * décalerait le groupe de 10,5 px vers la droite.
 */
.contact-form__submit {
	justify-content: center;
	width: 100%;
	margin-top: 8px;
	padding-right: 25px;
}

/* Désactivé le temps d'obtenir le jeton anti-robot, jamais plus de cinq secondes. */
.contact-form__submit:disabled {
	opacity: 0.55;
}

.contact-form__note {
	padding-top: 14px;
	color: var(--color-text-muted);
	font: 400 0.78125rem/1.1875rem var(--font-sans); /* 12,5 / 19 */
	text-align: center;
}

.contact-form__legal {
	padding-top: 10px;
	color: var(--color-text-muted);
	font: 400 0.6875rem/1.0625rem var(--font-sans); /* 11 / 17 */
	text-align: center;
}

.contact-form__legal a {
	color: inherit;
}

/* Le badge flottant de Google recouvre le pied de page ; la mention le remplace. */
.grecaptcha-badge {
	visibility: hidden;
}

/* -------------------------------------------------------------- Coordonnées */

.contact-aside {
	display: flex;
	flex-direction: column;
	flex: 1;
	gap: 20px;
	min-width: 0;
}

.contact-joindre {
	gap: 16px;
	padding: 28px;
	border: 1px solid var(--color-rule);
	background: var(--color-white);
}

.contact-joindre__title {
	color: var(--color-navy);
	font: 600 1rem/1.375rem var(--font-sans); /* 16 / 22 */
}

.contact-joindre__list {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.contact-joindre__list li {
	display: flex;
	align-items: center;
	gap: 13px;
}

/* Une adresse longue doit pouvoir se couper : à 320 px elle sort de l'écran. */
.contact-joindre__list a {
	min-width: 0;
	color: var(--color-navy);
	font: 500 0.9375rem/1.375rem var(--font-sans); /* 15 / 22 */
	text-decoration: none;
	overflow-wrap: anywhere;
	transition: color 0.18s ease;
}

.contact-joindre__list a:hover,
.contact-joindre__list a:focus-visible {
	color: var(--color-blue);
}

/* Le carré arrondi est un aplat : CSS. Seul le tracé vient d'une icône. */
.contact-joindre__icon {
	display: grid;
	flex-shrink: 0;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 11px;
	background: var(--color-blue-pale);
	color: var(--color-blue-dark);
}

.contact-joindre__pills {
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
	padding-top: 2px;
}

/* -------------------------------------------------------------------- Carte */

.contact-map {
	padding: 22px;
	border: 1px solid var(--color-rule);
	background: var(--color-white);
}

/* Le cadre impose son rapport : le visuel s'y recadre quelles que soient ses dimensions. */
.contact-map__figure {
	aspect-ratio: 484 / 406;
	overflow: clip;
	border-radius: var(--radius-media);
}

.contact-map__caption {
	padding-top: 12px;
	color: var(--color-text-muted);
	font: 400 0.8125rem/1.25rem var(--font-sans); /* 13 / 20 */
}

/* ------------------------------------------------ Tablette et en dessous */

@media (max-width: 1024px) {
	.contact-body__inner {
		flex-direction: column;
		gap: 24px;
	}

	.contact-form,
	.contact-aside {
		flex: none;
		width: 100%;
	}
}

@media (max-width: 640px) {
	/* Même chevauchement, à l'échelle du palier : 56 − 36 laisse les 20 px d'écart. */
	.contact-hero {
		padding-block: 36px 56px;
	}

	.contact-body {
		margin-top: -36px;
		padding-block: 0 56px;
	}

	.contact-form {
		padding: 26px 20px;
	}
}
