/**
 * TARMAC — Formulaires (inc/form-builder.php)
 *
 * Chargée seulement sur les pages qui affichent un formulaire. Dépend des
 * jetons de `design-system.css` : le formulaire vit toujours dans un
 * conteneur `.tarmac-v2`.
 */

.tform {
	scroll-margin-top: 120px;
	padding: clamp(1.5rem, 4vw, 3rem);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-xl);
	background: var(--c-blanc);
	box-shadow: var(--shadow-md);
}

.tarmac-v2 .tform .tform__title {
	margin: 0 0 var(--sp-3);
	font-size: var(--fs-h3);
}

.tform__intro {
	margin: 0 0 var(--sp-5);
	color: var(--c-text-muted);
}

.tform__required-note,
.tform__help,
.tform__privacy,
.tform__notice {
	font-size: var(--fs-xs);
	line-height: 1.6;
	color: var(--c-text-muted);
}

.tform__required-note { margin: 0 0 var(--sp-5); }
.tform__help { margin: var(--sp-2) 0 0; }

.tform__notice {
	margin: var(--sp-5) 0 0;
	padding: var(--sp-3) var(--sp-4);
	border-left: 3px solid var(--c-jaune);
	background: var(--c-gris-50);
	border-radius: var(--radius-sm);
}

.tform__hp {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Sections ---------------------------------------------------------------- */

.tform__section {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.tform__section + .tform__section {
	margin-top: var(--sp-6);
	padding-top: var(--sp-6);
	border-top: 1px solid var(--c-border);
}

.tform__legend {
	display: flex;
	align-items: center;
	gap: var(--sp-3);
	margin: 0 0 var(--sp-4);
	padding: 0;
	font-size: var(--fs-h4);
	font-weight: 700;
	color: var(--c-text);
}

.tform__legend span {
	font-family: var(--ff-accent);
	font-style: italic;
	font-weight: 600;
	color: var(--c-bleu);
}

.tform__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--sp-4) var(--sp-5);
}

.tform__field { grid-column: 1 / -1; min-width: 0; }
.tform__field--half { grid-column: span 1; }

/* Libellés et saisies ------------------------------------------------------ */

.tform__label {
	display: block;
	margin: 0 0 var(--sp-2);
	padding: 0;
	font-size: var(--fs-small);
	font-weight: 600;
	color: var(--c-text);
}

.tform__req { color: #b3261e; }

.tform input[type="text"],
.tform input[type="email"],
.tform input[type="tel"],
.tform input[type="url"],
.tform input[type="date"],
.tform select,
.tform textarea {
	display: block;
	width: 100%;
	min-height: 48px;
	padding: 0.7rem 0.95rem;
	border: 1px solid var(--c-gris-300);
	border-radius: var(--radius-md);
	background: var(--c-blanc);
	font: inherit;
	font-size: 1rem;
	color: var(--c-text);
	transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
}

.tform textarea { min-height: 130px; resize: vertical; }

.tform input:focus,
.tform select:focus,
.tform textarea:focus {
	outline: none;
	border-color: var(--c-bleu);
	box-shadow: var(--shadow-focus);
}

.tform input[type="file"] {
	display: block;
	width: 100%;
	padding: var(--sp-3);
	border: 1px dashed var(--c-gris-300);
	border-radius: var(--radius-md);
	background: var(--c-gris-50);
	font: inherit;
	font-size: var(--fs-small);
}

/* Choix : radios et cases -------------------------------------------------- */

.tform__choices {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.tform__options {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-2);
}

.tform__option {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--sp-2);
	padding: 0.55rem 0.95rem;
	border: 1px solid var(--c-border);
	border-radius: var(--radius-pill);
	background: var(--c-blanc);
	font-size: var(--fs-small);
	line-height: 1.3;
	cursor: pointer;
	transition: border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);
}

.tform__option:hover { border-color: var(--c-vert); }

.tform__option input {
	width: 1rem;
	height: 1rem;
	margin: 0;
	accent-color: var(--c-bleu);
}

.tform__option:has(input:checked) {
	border-color: var(--c-bleu);
	background: rgb(22 109 169 / 7%);
}

.tform__option:has(input:focus-visible) { box-shadow: var(--shadow-focus); }

/* Consentements ----------------------------------------------------------- */

.tform__consents {
	display: grid;
	gap: var(--sp-3);
	margin-top: var(--sp-6);
	padding-top: var(--sp-5);
	border-top: 1px solid var(--c-border);
}

.tform__consent {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--sp-3);
	align-items: start;
	font-size: var(--fs-small);
	line-height: 1.55;
}

.tform__consent input {
	width: 1.1rem;
	height: 1.1rem;
	margin: 0.15rem 0 0;
	accent-color: var(--c-bleu);
}

.tform__consent .tform__error { grid-column: 2; }

.tform__privacy { margin: var(--sp-4) 0 0; }
.tform__privacy a { color: var(--c-bleu); }

.tform__submit { margin: var(--sp-5) 0 0; }

.tform__submit button[disabled] { opacity: 0.7; cursor: progress; }

/* États ------------------------------------------------------------------- */

.tform__field.has-error input,
.tform__field.has-error select,
.tform__field.has-error textarea { border-color: #b3261e; }

.tform__field.has-error .tform__option { border-color: rgb(179 38 30 / 45%); }

.tform__error {
	margin: var(--sp-2) 0 0;
	font-size: var(--fs-xs);
	font-weight: 600;
	color: #b3261e;
}

.tform-notice {
	margin: 0 0 var(--sp-5);
	padding: var(--sp-4) var(--sp-5);
	border-radius: var(--radius-md);
	font-size: var(--fs-small);
}

.tform-notice p { margin: 0; }

.tform-notice--success {
	border: 1px solid rgb(190 208 41 / 70%);
	background: var(--c-vert-wash);
	color: var(--c-text);
	font-size: var(--fs-body);
}

.tform-notice--error {
	border: 1px solid rgb(179 38 30 / 35%);
	background: #fdf1f0;
	color: #7c1d17;
}

/* Champs conditionnels : masqués seulement quand le JS est là. */
.thv2-js .tform__field[data-show-if].is-hidden { display: none; }

/* Dans une colonne éditoriale, le formulaire déborde un peu pour respirer. */
.tcnt-body .tform { margin-top: var(--sp-7); }

@media (max-width: 640px) {
	.tform__grid { grid-template-columns: 1fr; }
	.tform__field--half { grid-column: 1 / -1; }
	.tform { border-radius: var(--radius-lg); }
}
