/**
 * NOVFR LP Kit - styles des champs du formulaire.
 * Chemin : assets/css/fields.css
 *
 * 1. Champ société (recherche et auto-remplissage).
 * 2. Sélecteur de session : liste déroulante.
 * 3. Sélecteur de session : cartes à deux niveaux (grand format et ligne
 *    compacte), intertitre « Autres dates » et repli « Voir les X autres
 *    dates ». La carte de la date choisie est toujours dépliée ; le script
 *    session-field.js pose les classes is-open (carte choisie), has-choice
 *    (groupe), is-folded (groupe replié) et is-extra (lignes repliées).
 *    Sans script, les dates restent lisibles et sélectionnables (le grand
 *    format est posé par le serveur), sans bouton de repli.
 * 4. Cartes statiques du shortcode [novfr_sessions].
 * 5. Habillage sombre du formulaire : classe CSS novfr-form--dark à poser sur
 *    le widget Formulaire (Avancé > Classes CSS). Couleurs du profil de la page.
 */

/* ------------------------------------------------------------------ */
/* 1. Champ société                                                    */
/* ------------------------------------------------------------------ */

.novfr-company {
	position: relative;
	width: 100%;
}

.novfr-company-list {
	background: #fff;
	color: #1a1a1a;
	border: 1px solid #d5d8dc;
	border-radius: 3px;
	left: 0;
	list-style: none;
	margin: 2px 0 0;
	max-height: 320px;
	overflow-y: auto;
	padding: 0;
	position: absolute;
	right: 0;
	z-index: 20;
}

.novfr-company-list li {
	border-bottom: 1px solid #eef0f2;
	cursor: pointer;
	display: block;
	margin: 0;
	padding: 8px 12px;
}

.novfr-company-list li:last-child {
	border-bottom: 0;
}

.novfr-company-list li.is-active,
.novfr-company-list li:hover {
	background: #f2f5f7;
}

.novfr-company-name {
	color: #1a1a1a;
	display: block;
	font-weight: 600;
}

.novfr-company-address {
	color: #5a6470;
	display: block;
	font-size: 0.875em;
}

.novfr-company-siren {
	color: #8a949c;
	display: block;
	font-size: 0.8em;
}

.novfr-company-status {
	color: #5a6470;
	font-size: 0.875em;
	margin: 4px 0 0;
	min-height: 1em;
}

.novfr-company-search {
	width: 100%;
	background-color: #fff !important;
	color: #1a1a1a !important;
}

.novfr-company-toggle {
	color: #5a6470;
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 0.875em;
	margin-top: 8px;
	/* Le thème met une marge sous les label : la case suivante (consentement) serait trop loin. */
	margin-bottom: 0;
	cursor: pointer;
	transition: opacity 0.2s ease;
}

/*
 * Champ « HTML » placé après la case de consentement (phrase de réassurance
 * au-dessus du bouton) : de l'air au-dessus pour le séparer des cases, il
 * reste ainsi rattaché au bouton. Elementor n'a pas de réglage pour l'espace
 * au-dessus d'un seul champ.
 */
.elementor-form:has(.novfr-company, .novfr-session-cards, .novfr-session-select, .novfr-session-empty) .elementor-field-type-acceptance + .elementor-field-type-html {
	padding-top: 12px;
}

.novfr-company-toggle input {
	width: 18px;
	height: 18px;
	margin: 0;
	flex: 0 0 auto;
	accent-color: var(--novfr-lp-accent, #d63a35);
}


/* Société trouvée : la case reste visible mais grisée, barrée et désactivée
 * (classe is-muted posée par company-field.js), sur fond clair comme sombre. */
.novfr-company-toggle.is-muted {
	cursor: not-allowed;
	opacity: 0.45;
	text-decoration: line-through;
	text-decoration-thickness: 1px;
}


.novfr-company-toggle.is-muted input {
	cursor: not-allowed;
}

/* ------------------------------------------------------------------ */
/* 2. Sélecteur de session : liste déroulante                          */
/* ------------------------------------------------------------------ */

.novfr-session-select option:disabled {
	color: #9aa2ab;
}

/* ------------------------------------------------------------------ */
/* 3. Sélecteur de session : cartes à deux niveaux                     */
/* ------------------------------------------------------------------ */

.novfr-session-cards {
	--novfr-session-accent: var(--novfr-lp-accent, #2d132c);
	--novfr-session-ink: #1a1a1a;
	--novfr-session-muted: #5a6470;
	--novfr-session-line: #dfe3e8;
	--novfr-session-row: #f4f6f8;
	/* Survol d'une date non choisie, grandes cartes et lignes compactes : orange très clair. */
	--novfr-session-row-hover: #fefaf4;
	--novfr-session-hover-line: #f6ebdc;
	--novfr-session-label: #8a949c;
	--novfr-session-radius: 12px;
	--novfr-session-gap: 8px;
	--novfr-check: 18px;
	display: flex;
	flex-direction: column;
	gap: var(--novfr-session-gap);
	width: 100%;
}

.novfr-session-card {
	position: relative;
}

.novfr-session-card input[type="radio"] {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
}

/* Ligne compacte : le format par défaut (fond gris, sans bordure visible). */
.novfr-session-card label {
	--novfr-first-line: 20px;
	position: relative;
	display: grid;
	grid-template-columns: var(--novfr-check) minmax(0, 1fr) auto;
	align-items: start;
	column-gap: 12px;
	margin: 0;
	background: var(--novfr-session-row);
	color: var(--novfr-session-ink);
	border: 1px solid var(--novfr-session-row);
	border-radius: 10px;
	padding: 9px 12px;
	cursor: pointer;
	transition: border-color 150ms ease-out, background 150ms ease-out, box-shadow 150ms ease-out;
}

/*
 * Un seul survol pour toutes les dates non choisies et réservables, grandes
 * cartes comme lignes compactes. La date choisie et les dates complètes ne
 * changent pas au survol.
 */
.novfr-session-card:not(.is-full):not(.is-open) label:not(:has(input:checked)):hover {
	background: var(--novfr-session-row-hover);
	border-color: var(--novfr-session-hover-line);
}

.novfr-session-card label:has(input:focus-visible) {
	outline: 3px solid var(--novfr-session-accent);
	outline-offset: 2px;
}

/* Rond de sélection : centré sur la première ligne de texte, quel que soit l'état. */
.novfr-session-check {
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--novfr-check);
	height: var(--novfr-check);
	margin-top: calc((var(--novfr-first-line) - var(--novfr-check)) / 2);
	border: 2px solid #c9d1d8;
	border-radius: 50%;
	background: #fff;
	box-sizing: border-box;
}

.novfr-session-check svg {
	width: 11px;
	height: 11px;
	color: var(--novfr-session-accent);
	opacity: 0;
	transform: scale(0.5);
	transition: opacity 150ms ease-out, transform 150ms ease-out;
}

.novfr-session-card input:checked ~ .novfr-session-check {
	border-color: var(--novfr-session-accent);
}

.novfr-session-card input:checked ~ .novfr-session-check svg {
	opacity: 1;
	transform: scale(1);
}

.novfr-session-main {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 8px;
	row-gap: 0;
	min-width: 0;
}

.novfr-session-day {
	font-weight: 600;
	font-size: 14.5px;
	line-height: 20px;
	color: var(--novfr-session-ink);
	white-space: nowrap;
}

.novfr-session-day::first-letter {
	text-transform: uppercase;
}

.novfr-session-sub {
	color: var(--novfr-session-muted);
	font-size: 12.5px;
	line-height: 20px;
	white-space: nowrap;
}

.novfr-session-seats {
	display: none;
	color: var(--novfr-session-muted);
	font-size: 13.5px;
	line-height: 1.3;
}

.novfr-session-meta {
	display: flex;
	align-items: center;
	align-self: center;
	gap: 8px;
	white-space: nowrap;
	line-height: 20px;
	text-align: right;
}

.novfr-session-city {
	color: var(--novfr-session-ink);
	font-weight: 600;
	font-size: 12.5px;
}

.novfr-session-price,
.novfr-session-full {
	display: inline-block;
	font-weight: 700;
	font-size: 12.5px;
	line-height: 1.5;
	padding: 0 6px;
	border-radius: 6px;
	white-space: nowrap;
	background: #fff;
}

.novfr-session-price {
	color: var(--novfr-session-accent);
	border: 1px solid var(--novfr-session-accent);
}

.novfr-session-full {
	color: var(--novfr-session-muted);
	border: 1px solid #c9d1d8;
}

/* Réglage « ville dans les lignes compactes » désactivé : la ville n'apparaît qu'en grand format. */
.novfr-session-cards--nocity .novfr-session-card:not(.is-open):not(.is-big) .novfr-session-city,
.novfr-session-cards--nocity.has-choice[data-novfr-collapse="1"] .novfr-session-card.is-big:not(.is-open) .novfr-session-city {
	display: none;
}

/*
 * Grand format. Il s'applique :
 *  - à la date choisie (is-open) ;
 *  - aux N premières dates (is-big), sauf si le groupe demande leur repli
 *    (data-novfr-collapse="1") et qu'une date est déjà choisie (has-choice).
 */
.novfr-session-card.is-open label,
:where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big label {
	--novfr-first-line: 22px;
	--novfr-check: 20px;
	background: #fff;
	border: 1px solid var(--novfr-session-line);
	border-radius: var(--novfr-session-radius);
	padding: 11px 13px;
}

/*
 * La date choisie, grande carte ou ligne compacte : bordure accent de 2 px,
 * qui reste quand la souris s'en va. Même encombrement que la carte au repos
 * (le rembourrage perd 1 px). Les règles du grand format au repos ont un
 * poids volontairement plus faible (:where) pour ne jamais l'emporter ici.
 */
.novfr-session-card label:has(input:checked),
.novfr-session-card.is-open label {
	background: #fff;
	border: 2px solid var(--novfr-session-accent);
	box-shadow: 0 4px 16px -6px rgba(0, 0, 0, 0.35);
}

.novfr-session-card label:has(input:checked) {
	padding: 8px 11px;
}

.novfr-session-card.is-open label,
.novfr-session-card.is-open label:has(input:checked) {
	padding: 10px 12px;
}

:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) .novfr-session-main {
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
}

:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) .novfr-session-day {
	font-size: 17px;
	font-weight: 700;
	line-height: 22px;
	white-space: normal;
}

:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) .novfr-session-sub {
	font-size: 13.5px;
	line-height: 1.3;
	white-space: normal;
}

:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) .novfr-session-seats {
	display: block;
}

:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) .novfr-session-meta {
	flex-direction: column;
	align-items: flex-end;
	justify-content: center;
	gap: 3px;
	line-height: 1.3;
}

:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) :is(.novfr-session-city, .novfr-session-price) {
	font-size: 13px;
}

/* Sessions complètes : visibles, non sélectionnables. */
.novfr-session-card.is-full label {
	opacity: 0.55;
	cursor: not-allowed;
}

/*
 * Aucune date ouverte : encadré clair (teinte du survol des dates) qui
 * invite à laisser ses coordonnées. Même rendu sur fond clair ou sombre.
 */
.novfr-session-empty {
	background: #fefaf4;
	border: 1px solid #f6ebdc;
	border-radius: 10px;
	box-sizing: border-box;
	color: #5a6470;
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin: 0;
	padding: 14px 16px;
	width: 100%;
}

.novfr-session-empty-title {
	color: #1a1a1a;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.35;
}

.novfr-session-empty-text {
	color: #5a6470;
	font-size: 14px;
	line-height: 1.5;
}

/*
 * Case « intéressé par un club d'affaires » sous les dates : même langage
 * que les cartes de dates (ligne grise arrondie, texte foncé, bordure
 * d'accent une fois cochée). Les villes, en pastilles sous le texte, sont
 * grisées tant que la case n'est pas cochée. session-field.js pose is-on.
 */
.novfr-club {
	--novfr-club-accent: var(--novfr-lp-accent, #2d132c);
	--novfr-club-ink: #1a1a1a;
	--novfr-club-muted: #5a6470;
	--novfr-club-row: #f4f6f8;
	--novfr-club-line: #dfe3e8;
	/* Mêmes valeurs que --novfr-session-row-hover / --novfr-session-hover-line. */
	--novfr-club-hover: #fefaf4;
	--novfr-club-hover-line: #f6ebdc;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 14px;
	width: 100%;
	box-sizing: border-box;
	margin-top: 12px;
	padding: 10px 12px;
	background: var(--novfr-club-row);
	border: 1px solid var(--novfr-club-row);
	border-radius: 10px;
	transition: border-color 150ms ease-out, background 150ms ease-out;
}

/* Survol case décochée : même orange très clair que les dates. */
.novfr-club:not(.is-on):hover {
	background: var(--novfr-club-hover);
	border-color: var(--novfr-club-hover-line);
}

.novfr-club.is-on {
	background: #fff;
	border-color: var(--novfr-club-accent);
	box-shadow: inset 0 0 0 1px var(--novfr-club-accent);
}

.novfr-club-check {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	flex: 1 1 auto;
	margin: 0;
	cursor: pointer;
}

/* Sur le texte, comme pour les dates : le thème et Elementor stylent les labels du formulaire. */
.novfr-club-text {
	color: var(--novfr-club-ink);
	font-weight: 600;
	font-size: 14.5px;
	line-height: 20px;
}

.novfr-club-check input {
	width: 18px;
	height: 18px;
	margin: 0;
	flex: 0 0 auto;
	accent-color: var(--novfr-club-accent);
	cursor: pointer;
}

/* Focus clavier sur la case seule, pas autour du texte. */
.novfr-club-check input:focus-visible {
	outline: 2px solid var(--novfr-club-accent);
	outline-offset: 2px;
}

/* Villes en pastilles, alignées sous le texte de la case. */
.novfr-club-city {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	flex: 1 1 100%;
	padding-left: 30px;
}

.novfr-club-pill {
	position: relative;
	margin: 0;
	cursor: pointer;
}

.novfr-club-pill input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
}

.novfr-club-pill span {
	display: inline-block;
	padding: 6px 12px;
	border: 1px solid var(--novfr-club-line);
	border-radius: 999px;
	background: #fff;
	color: var(--novfr-club-muted);
	font-size: 13px;
	font-weight: 600;
	line-height: 18px;
	transition: border-color 150ms ease-out, color 150ms ease-out, background 150ms ease-out;
}

.novfr-club-pill:hover span {
	border-color: var(--novfr-club-accent);
	color: var(--novfr-club-accent);
}

.novfr-club-pill input:checked + span {
	background: var(--novfr-club-accent);
	border-color: var(--novfr-club-accent);
	color: #fff;
}

.novfr-club-pill input:focus-visible + span {
	outline: 3px solid var(--novfr-club-accent);
	outline-offset: 2px;
}

/* Case non cochée : villes lisibles mais en retrait ; cliquer une ville coche la case. */
.novfr-club:not(.is-on) .novfr-club-pill span {
	background: rgba(255, 255, 255, 0.6);
	border-color: #d4dae0;
	color: #7b858f;
}

.novfr-club:not(.is-on) .novfr-club-pill:hover span {
	background: #fff;
	border-color: var(--novfr-club-accent);
	color: var(--novfr-club-accent);
}

/*
 * Liste longue, case décochée : seules les premières villes restent visibles,
 * plus la ville choisie. Seulement avec le script (data-novfr-bound) : sans
 * lui, toutes les villes restent affichées.
 */
.novfr-club[data-novfr-bound]:not(.is-on) .novfr-club-city.is-folded .novfr-club-pill.is-extra:not(.is-picked) {
	display: none;
}

.novfr-club-more {
	display: inline-block;
	margin: 0;
	padding: 6px 12px;
	border: 1px dashed #c9d1d8;
	border-radius: 999px;
	background: transparent;
	color: var(--novfr-club-ink);
	font: inherit;
	font-size: 13px;
	font-weight: 600;
	line-height: 18px;
	cursor: pointer;
	transition: border-color 150ms ease-out, color 150ms ease-out;
}

.novfr-club-more:hover {
	border-color: var(--novfr-club-accent);
	color: var(--novfr-club-accent);
}

.novfr-club-more:focus-visible {
	outline: 3px solid var(--novfr-club-accent);
	outline-offset: 2px;
}

.novfr-club-more[hidden] {
	display: none;
}

@media (max-width: 767px) {
	.novfr-club-city {
		padding-left: 0;
	}
}

/* Formulaire sur fond sombre : la ligne reste claire, comme les dates. */
.novfr-form--dark .novfr-club {
	--novfr-club-row: rgba(255, 255, 255, 0.88);
}

/* Intertitre « Autres dates » entre les grandes dates et les lignes compactes. */
.novfr-session-divider {
	font-weight: 700;
	font-size: 11.5px;
	line-height: 1;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--novfr-session-label);
	margin: 6px 0 -2px;
	padding-left: 2px;
}

/*
 * Repli : le script pose is-folded sur le groupe et is-extra sur les lignes
 * compactes au-delà du nombre visible ; la date choisie reste toujours visible.
 * Le bouton suit le groupe et bascule « Voir les X autres dates » / « Réduire la liste ».
 */
.novfr-session-more {
	display: block;
	width: 100%;
	margin: 12px 0 0;
	padding: 10px 12px;
	border: 1px dashed #c9d1d8;
	border-radius: 10px;
	background: #fff;
	color: #1a1a1a;
	font: inherit;
	font-weight: 700;
	font-size: 13.5px;
	line-height: 1.3;
	text-align: left;
	cursor: pointer;
	transition: border-color 150ms ease-out, color 150ms ease-out;
}

.novfr-session-more:hover {
	border-color: var(--novfr-lp-accent, #2d132c);
	color: var(--novfr-lp-accent, #2d132c);
}

.novfr-session-more:focus-visible {
	outline: 3px solid var(--novfr-lp-accent, #2d132c);
	outline-offset: 2px;
}

.novfr-session-more::after {
	content: "\25BE";
	float: right;
	font-size: 12px;
}

.novfr-session-cards:not(.is-folded) + .novfr-session-more::after {
	content: "\25B4";
}

.novfr-session-more[hidden] {
	display: none;
}

/* « Retirer la date » : lien discret sous les dates, case club cochée seulement. */
.novfr-session-clear {
	display: inline-block;
	margin: 8px 0 0;
	padding: 4px 2px;
	border: 0;
	background: none;
	color: #5a6470;
	font: inherit;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.3;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}

.novfr-session-clear:hover {
	color: var(--novfr-lp-accent, #2d132c);
}

.novfr-session-clear:focus-visible {
	outline: 3px solid var(--novfr-lp-accent, #2d132c);
	outline-offset: 2px;
}

.novfr-session-clear[hidden] {
	display: none;
}

.novfr-form--dark .novfr-session-clear {
	color: var(--novfr-lp-muted, #d9c5d6);
}

.novfr-form--dark .novfr-session-clear:hover {
	color: #fff;
}

.novfr-session-cards.is-folded .novfr-session-card.is-extra:not(.is-open),
.novfr-session-cards.is-folded .novfr-session-divider.is-extra {
	display: none;
}

/* Mobile : même point de rupture qu'Elementor. */
@media (max-width: 767px) {
	/*
	 * Pas de rond de sélection sur mobile : la bordure d'accent de la date
	 * choisie suffit, et la largeur revient au texte. La radio reste dans le
	 * label, accessible au clavier et aux lecteurs d'écran.
	 */
	.novfr-session-card label {
		grid-template-columns: minmax(0, 1fr) auto;
		padding: 8px 10px;
	}

	.novfr-session-check {
		display: none;
	}

	/* Places restantes : un cran sous l'horaire, information secondaire. */
	.novfr-session-seats {
		font-size: 12px;
	}

	.novfr-session-card label:has(input:checked) {
		padding: 7px 9px;
	}

	.novfr-session-card.is-open label,
	.novfr-session-card.is-open label:has(input:checked) {
		padding: 9px 11px;
	}

	.novfr-session-main {
		flex-direction: column;
		align-items: flex-start;
	}

	.novfr-session-day {
		font-size: 14px;
		line-height: 19px;
	}

	.novfr-session-sub {
		font-size: 12px;
		line-height: 17px;
	}

	/* Ville au-dessus du prix, le bloc reste centré sur la carte. */
	.novfr-session-meta {
		flex-direction: column;
		align-items: flex-end;
		gap: 2px;
		line-height: 1.2;
	}

	.novfr-session-city,
	.novfr-session-price,
	.novfr-session-full {
		font-size: 12px;
	}

	:where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big label {
		padding: 10px 12px;
	}

	:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) .novfr-session-day {
		font-size: 16px;
		line-height: 21px;
	}

	:is(.novfr-session-card.is-open, :where(.novfr-session-cards:not(.has-choice[data-novfr-collapse="1"])) .novfr-session-card.is-big) .novfr-session-sub {
		font-size: 13px;
	}

	.novfr-session-more {
		margin-top: 10px;
	}

	/* Bouton d'envoi : la date choisie passe sur une seconde ligne, en retrait. */
	.novfr-submit-date {
		display: block;
		margin-top: 2px;
		font-size: 13px;
		font-weight: 500;
		line-height: 1.25;
		opacity: 0.8;
	}
}

@media (prefers-reduced-motion: reduce) {
	.novfr-session-card label,
	.novfr-session-check svg,
	.novfr-session-more,
	.novfr-company-toggle,
	.novfr-club,
	.novfr-club-pill span,
	.novfr-club-more,
	.novfr-session-cards--static .novfr-session-static {
		transition: none;
	}
}

/* ------------------------------------------------------------------ */
/* 4. Cartes statiques du shortcode [novfr_sessions] et liste          */
/* ------------------------------------------------------------------ */

.novfr-session-cards--static .novfr-session-static {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.5rem 1rem;
	margin: 0;
	background: #fff;
	color: var(--novfr-session-ink);
	border: 1px solid var(--novfr-session-line);
	border-radius: var(--novfr-session-radius);
	padding: 1rem 1.125rem;
	text-decoration: none;
	transition: border-color 150ms ease-out, box-shadow 150ms ease-out;
}

.novfr-session-cards--static .novfr-session-date,
.novfr-session-cards--static .novfr-session-meta {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
	white-space: normal;
}

.novfr-session-cards--static .novfr-session-meta {
	align-items: flex-end;
	gap: 0.25rem;
	margin-left: auto;
}

.novfr-session-cards--static .novfr-session-day {
	font-size: 1.0625rem;
	font-weight: 700;
	white-space: normal;
}

.novfr-session-cards--static .novfr-session-city,
.novfr-session-cards--static .novfr-session-price,
.novfr-session-cards--static .novfr-session-full {
	font-size: 13px;
}

.novfr-session-cards--static .novfr-session-time,
.novfr-session-cards--static .novfr-session-seats {
	display: block;
	color: var(--novfr-session-muted);
	font-size: 0.875rem;
	line-height: 1.3;
}

.novfr-session-cards--static a.novfr-session-static:hover,
.novfr-session-cards--static a.novfr-session-static:focus-visible {
	border-color: var(--novfr-session-accent);
	box-shadow: 0 4px 16px -6px rgba(0, 0, 0, 0.35);
}

.novfr-session-cards--static .is-full .novfr-session-static {
	opacity: 0.55;
}

.novfr-session-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.novfr-session-list li {
	padding: 0.25rem 0;
}

.novfr-session-list li.is-full {
	opacity: 0.55;
}

/* ------------------------------------------------------------------ */
/* 4b. Cases d'acceptation d'Elementor, dans un formulaire qui porte un  */
/*     champ du plugin : même case (18 px, couleur de la marque) et même */
/*     corps de texte (13,5 px) que « Ma société n'apparaît pas dans la  */
/*     liste ».                                                          */
/* ------------------------------------------------------------------ */

.elementor-form:has(.novfr-company, .novfr-session-cards, .novfr-session-select) .elementor-field-type-acceptance .elementor-field-option {
	display: flex;
	align-items: flex-start;
	gap: 8px;
}

.elementor-form:has(.novfr-company, .novfr-session-cards, .novfr-session-select) .elementor-field-type-acceptance .elementor-field-subgroup .elementor-field-option label {
	font-size: 13.5px;
	line-height: 1.45;
	margin: 0;
}

.elementor-form:has(.novfr-company, .novfr-session-cards, .novfr-session-select) .elementor-acceptance-field {
	width: 18px;
	height: 18px;
	margin: 1px 0 0;
	flex: 0 0 auto;
	accent-color: var(--novfr-lp-accent, #d63a35);
}

/* ------------------------------------------------------------------ */
/* 5. Habillage sombre du formulaire (classe novfr-form--dark)          */
/* ------------------------------------------------------------------ */

.novfr-form--dark .elementor-form {
	background: var(--novfr-lp-surface, #3b1a39);
	color: var(--novfr-lp-on-surface, #fff);
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 16px;
	padding: 28px 28px 24px;
}

.novfr-form--dark .elementor-field-group {
	margin-bottom: 4px;
}

.novfr-form--dark .elementor-field-group .elementor-field-textual {
	background: #fff !important;
	color: #1f1220 !important;
	border: 1px solid rgba(255, 255, 255, 0.28) !important;
	border-radius: 10px !important;
	min-height: 52px;
	font-size: 16px;
	padding: 12px 14px;
}

.novfr-form--dark .elementor-field-textual::placeholder {
	color: #8a7588;
	opacity: 1;
}

.novfr-form--dark .elementor-field-textual:focus {
	border-color: var(--novfr-lp-accent, #d63a35) !important;
	outline: 2px solid color-mix(in srgb, var(--novfr-lp-accent, #d63a35) 45%, transparent);
	outline-offset: 1px;
}

.novfr-form--dark .novfr-company-status {
	color: var(--novfr-lp-muted, #d9c5d6) !important;
}

/* Case « saisie manuelle » et case de consentement : même police, même taille, même couleur. */
.novfr-form--dark .novfr-company-toggle,
.novfr-form--dark .elementor-field-type-acceptance .elementor-field-subgroup label,
.novfr-form--dark .elementor-field-type-acceptance label:not(.elementor-screen-only) {
	color: var(--novfr-lp-muted, #d9c5d6) !important;
	font-family: inherit !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 1.45 !important;
	letter-spacing: 0;
	text-transform: none;
	margin-bottom: 0;
}

.novfr-form--dark .novfr-company-toggle,
.novfr-form--dark .elementor-field-type-acceptance .elementor-field-option {
	display: flex;
	align-items: flex-start;
	gap: 10px;
}

.novfr-form--dark .novfr-company-toggle {
	margin-top: 10px;
}

.novfr-form--dark .novfr-company-toggle input,
.novfr-form--dark .elementor-acceptance-field {
	width: 18px;
	height: 18px;
	margin: 2px 0 0;
	flex: 0 0 auto;
	accent-color: var(--novfr-lp-accent, #d63a35);
}

.novfr-form--dark .elementor-button[type="submit"] {
	background-color: var(--novfr-lp-accent, #d63a35) !important;
	color: #fff !important;
	border: 0;
	border-radius: 10px !important;
	min-height: 56px;
	font-size: 17px;
	font-weight: 600;
}

.novfr-form--dark .elementor-button[type="submit"]:hover {
	background-color: var(--novfr-lp-accent-hover, #b02f2b) !important;
}

.novfr-form--dark .elementor-message {
	color: #fff !important;
}

.novfr-form--dark .elementor-message.elementor-message-danger {
	color: #ffb3ae !important;
}

/* Sélecteur de dates sur fond sombre : lignes compactes claires, un cran sous les grandes cartes. */
.novfr-form--dark .novfr-session-cards {
	--novfr-session-row: rgba(255, 255, 255, 0.88);
	--novfr-session-label: var(--novfr-lp-muted, #d9c5d6);
}

.novfr-form--dark .novfr-session-more {
	background: transparent;
	color: var(--novfr-lp-on-surface, #fff);
	border-color: rgba(255, 255, 255, 0.4);
}

.novfr-form--dark .novfr-session-more:hover {
	border-color: #fff;
	color: #fff;
}

@media (max-width: 767px) {
	.novfr-form--dark .elementor-form {
		padding: 18px 16px 16px;
		border-radius: 14px;
	}
}

/*
 * Barre fixe qui renvoie vers le formulaire : effacée tant que le formulaire
 * est à l'écran (session-field.js), pour ne pas doubler le bouton d'envoi.
 */
.novfr-cta-away {
	opacity: 0 !important;
	visibility: hidden !important;
	pointer-events: none !important;
	transition: opacity 200ms ease-out, visibility 0s linear 200ms !important;
}

@media (prefers-reduced-motion: reduce) {
	.novfr-cta-away {
		transition: none !important;
	}
}
