/**
 * Formulaire Sécurisé — par Ben.Dev : style minimal, qui hérite du thème.
 *
 * Toutes les règles sont dans :where(), donc de spécificité nulle : la moindre règle du thème
 * l'emporte, même quand un thème classique imprime cette feuille APRÈS la sienne (le shortcode
 * charge ses ressources en cours de page). Les couleurs passent par des variables --bdfs-*,
 * à redéfinir pour re-teinter le formulaire sans dupliquer les règles.
 */

:where(.bdfs-form) {
	--bdfs-gap: 1.25rem;
	--bdfs-border: var(--bdfs-border-color, currentColor);
	--bdfs-error: var(--bdfs-error-color, #a3001b);
	--bdfs-success: var(--bdfs-success-color, #0f5132);
	display: block;
}

:where(.bdfs-form) :where(.bdfs-field) {
	margin: 0 0 var(--bdfs-gap);
}

/* Un champ réservé à certains types de demande reste caché, quel que soit le display que le
   thème donne aux champs : seule règle hors de :where(). */
.bdfs-form .bdfs-field[hidden] {
	display: none !important;
}

:where(.bdfs-form) :where(.bdfs-field > label) {
	display: block;
	margin: 0 0 0.35rem;
	font-weight: 600;
}

:where(.bdfs-form) :where(input:not([type="checkbox"]), select, textarea) {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--bdfs-border);
	/* Police et taille du thème, mais pas sa hauteur de ligne : « font: inherit » l'aurait
	   reprise aussi, et chaque champ aurait grandi d'un tiers. */
	font-family: inherit;
	font-size: inherit;
	color: inherit;
	background-color: var(--bdfs-field-background, transparent);
}

:where(.bdfs-form) :where(textarea) {
	resize: vertical;
}

:where(.bdfs-form) :where(.bdfs-consent) {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	align-items: flex-start;
}

:where(.bdfs-form) :where(.bdfs-consent > input) {
	flex-shrink: 0;
	margin-top: 0.3rem;
}

:where(.bdfs-form) :where(.bdfs-consent > .bdfs-error) {
	flex-basis: 100%;
}

:where(.bdfs-form) :where(.bdfs-consent > label) {
	flex: 1;
	font-weight: 400;
}

:where(.bdfs-form) :where(.bdfs-required) {
	color: var(--bdfs-error);
}

:where(.bdfs-form) :where(.bdfs-required-note, .bdfs-noscript, .bdfs-credit) {
	font-size: 0.875em;
}

:where(.bdfs-form) :where(.bdfs-error) {
	margin: 0.35rem 0 0;
	font-size: 0.9em;
	color: var(--bdfs-error);
}

:where(.bdfs-form) :where([aria-invalid="true"]) {
	border-color: var(--bdfs-error);
}

:where(.bdfs-form) :where(.bdfs-status) {
	margin: 0 0 1.5rem;
	padding: 0.9rem 1.1rem;
	border: 2px solid;
	font-weight: 600;
}

:where(.bdfs-form) :where(.bdfs-status:empty) {
	display: none;
}

:where(.bdfs-form) :where(.bdfs-status.is-success) {
	color: var(--bdfs-success);
}

:where(.bdfs-form) :where(.bdfs-status.is-error) {
	color: var(--bdfs-error);
}

:where(.bdfs-form) :where(.bdfs-turnstile) {
	margin: 0 0 var(--bdfs-gap);
}

:where(.bdfs-form) :where(.bdfs-submit) {
	cursor: pointer;
}

:where(.bdfs-form) :where(.bdfs-submit[disabled]) {
	cursor: progress;
	opacity: 0.6;
}

/* Le piège reste hors de l'écran, quoi que dise le thème (doublé d'un style en ligne). */
.bdfs-form .bdfs-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}

/* Un message d'erreur vide reste caché, même si le thème affiche tous les <p> en bloc. */
.bdfs-form [hidden] {
	display: none !important;
}
