/*
 * Tabula — côté site (et aperçu de l'éditeur). Le design est entièrement porté par
 * les variables et classes globales Elementor V4. Ce fichier ne contient que la couleur
 * de sélection, une correction pour Astra et l'accord du formulaire WPForms avec la charte.
 */

::selection {
	background: var(--tb-accent, #b8f03c);
	color: var(--tb-accent-ink, #0d0d0f);
}
/* Sections sombres, sur photo et pied de page : la marque prévue pour ces fonds (une marque
   foncée resterait invisible sur du noir) ; les cartes claires qu'elles contiennent reprennent la normale. */
:is(.tb-bg-contrast, .tb-on-photo, #colophon) ::selection {
	background: var(--tb-accent-dark, #ffffff);
	color: var(--tb-accent-dark-ink, #0d0d0f);
}
:is(.tb-bg-contrast, .tb-on-photo) :is(.tb-card, .tb-card-soft, .tb-bg-surface) ::selection {
	background: var(--tb-accent, #b8f03c);
	color: var(--tb-accent-ink, #0d0d0f);
}

/* Astra entoure de pointillés tout lien ou bouton cliqué (a:focus{outline:thin dotted}) : rien au
   clic de souris, le contour reste à la navigation au clavier (accessibilité). */
body :is(a, button, .menu-toggle, .ast-menu-toggle, input[type="search"]):focus:not(:focus-visible) {
	outline: none;
}

/* Astra souligne les liens du contenu des pages au modèle « par défaut » du thème :
   les boutons, liens et cartes cliquables Tabula gardent leur propre style. */
body .entry-content a[class*="tb-"],
body .entry-content [class*="tb-"] > a {
	text-decoration: none;
}

/* Survols progressifs : la version gratuite d'Elementor n'écrit pas la propriété « transition » des
   classes globales V4. Sans ces règles, zoom des photos, boutons, liens et cartes changent d'un coup
   au survol. Une classe : plus fort que la transition d'Astra sur les liens (a), moins fort qu'une
   transition réglée dans Elementor, qui reste prioritaire. */
.tb-zoom {
	transition: transform 1s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.tb-lift {
	transition: transform 0.45s ease, box-shadow 0.45s ease;
}
.e-button-base,
.tb-link,
.tb-linkbox {
	transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease, opacity 0.25s ease;
}
.tb-btn {
	transition: transform 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, opacity 0.3s ease, box-shadow 0.3s ease;
}
@media (prefers-reduced-motion: reduce) {
	.tb-zoom,
	.tb-lift {
		transition-duration: 0.01s;
	}
}

/* Espacement automatique : le marqueur l'emporte aussi sur le retrait d'une section encadrée
   (réglé sur la section). Tabula ne le pose jamais sur une marge réglée à la main. */
body .elementor .tb-section.tb-flush-top {
	padding-top: 0px;
	padding-block-start: 0px;
}

body .elementor .tb-section.tb-flush-bottom {
	padding-bottom: 0px;
	padding-block-end: 0px;
}

/* Sections Tabula : même découpe que « overflow: hidden » (lueurs, cartes posées en bord),
   mais sans bloquer les colonnes fixes (tb-sticky) qui suivent le défilement. */
@supports (overflow: clip) {
	body .elementor .tb-section {
		overflow: clip;
	}

	/* Section sans marge basse (espacement automatique) : l'ombre des cartes posées tout en bas
	   déborde sur la section suivante, de même fond, au lieu d'être coupée net. */
	body .elementor .tb-section.tb-flush-bottom {
		overflow: clip visible;
		z-index: 1;
	}

	/* Éditeur : la poignée d'une section (+, déplacer, supprimer) dépasse au-dessus de son
	   bord ; elle reste visible et passe devant la section précédente. */
	body:is(.tb-editor-preview, .elementor-editor-active) .elementor .tb-section {
		overflow: clip visible;
	}

	body:is(.tb-editor-preview, .elementor-editor-active) .elementor .tb-section:is(:hover, .elementor-element-editable) {
		z-index: 3;
	}
}

/* Section encadrée (panneau en retrait sur fond de page, sans marge haute ou basse : elle compte
   sur la marge de la section voisine) contre une bande d'un autre fond (sombre, gris, photo) :
   le retrait du cadre reste visible de ce côté, au lieu d'un panneau collé à la bande. */
body .elementor .tb-section:is(.tb-bg-contrast, .tb-bg-surface, .tb-on-photo) + .tb-section:not(.tb-bg-contrast, .tb-bg-surface, .tb-on-photo):has(> .tb-panel) {
	padding-top: clamp(1.25rem, 0.5rem + 2.4vw, 2.75rem);
}

body .elementor .tb-section:not(.tb-bg-contrast, .tb-bg-surface, .tb-on-photo):has(> .tb-panel):has(+ .tb-section:is(.tb-bg-contrast, .tb-bg-surface, .tb-on-photo)) {
	padding-bottom: clamp(1.25rem, 0.5rem + 2.4vw, 2.75rem);
}

/* Widget Icône dans les sections Tabula : pas d'espace de ligne sous l'icône (la boîte du
   widget a exactement la taille de l'icône, comme les pastilles et listes l'attendent). */
.elementor .tb-section .elementor-widget-icon .elementor-icon-wrapper {
	line-height: 0;
}

.elementor .tb-section .elementor-widget-icon .elementor-icon {
	display: inline-flex;
	vertical-align: top;
}

/* Adresses e-mail et liens écrits en très grand : ils passent à la ligne sur mobile. */
.elementor [class*="tb-"] a[href^="mailto:"],
.elementor a[href^="mailto:"][class*="tb-"] {
	overflow-wrap: anywhere;
}

/* ---------- WPForms : variables natives reliées aux variables Tabula ---------- */
.wpforms-container {
	--wpforms-field-border-radius: var(--tb-r-sm, 8px);
	--wpforms-field-border-color: var(--tb-line, rgba(0, 0, 0, 0.14));
	--wpforms-field-background-color: var(--tb-bg, #ffffff);
	--wpforms-field-text-color: var(--tb-ink, #121212);
	--wpforms-field-menu-color: var(--tb-card, #ffffff);
	--wpforms-label-color: var(--tb-ink, #121212);
	--wpforms-label-sublabel-color: var(--tb-ink, #121212);
	--wpforms-label-error-color: #e5484d;
	--wpforms-button-border-radius: var(--tb-r-btn, 999px);
	--wpforms-button-border-style: solid;
	--wpforms-button-border-size: 0px;
	--wpforms-button-background-color: var(--tb-accent, #b8f03c);
	--wpforms-button-border-color: var(--tb-accent, #b8f03c);
	--wpforms-button-text-color: var(--tb-accent-ink, #0d0d0f);
	--wpforms-button-size-font-size: 15px; /* Mêmes proportions que les boutons du site (classe tb-btn). */
	--wpforms-button-size-height: 50px;
	--wpforms-button-size-padding-h: 26px;
	--wpforms-page-break-color: var(--tb-accent, #b8f03c);
	--wpforms-field-size-input-height: 50px;
	font-family: var(--tb-font-body, inherit), sans-serif;
	width: 100%;
}
/* La feuille de WPForms se charge après celle-ci : les retouches sont préfixées
   par « body div.wpforms-container-full » pour passer devant ses sélecteurs. */
body div.wpforms-container-full .wpforms-form .wpforms-field-label {
	font-weight: 500;
}
body div.wpforms-container-full .wpforms-form .wpforms-field-sublabel,
body div.wpforms-container-full .wpforms-form .wpforms-field-description {
	opacity: 0.75;
}
body div.wpforms-container-full .wpforms-form .wpforms-field input:where(:not([type="checkbox"], [type="radio"])):focus,
body div.wpforms-container-full .wpforms-form .wpforms-field textarea:focus,
body div.wpforms-container-full .wpforms-form .wpforms-field select:focus {
	border-color: var(--tb-ink, #121212);
	box-shadow: 0 0 0 1px var(--tb-ink, #121212);
}
/* Cases à cocher : WPForms les dessine en pseudo-éléments ; la case native reste
   transparente (Astra la colore une fois cochée, ce qui débordait aux coins). */
body div.wpforms-container-full .wpforms-form input[type="checkbox"],
body div.wpforms-container-full .wpforms-form input[type="radio"] {
	background-color: transparent;
	border-color: transparent;
}
/* Contour plus marqué que celui des champs, pour rester bien visibles. */
body div.wpforms-container-full .wpforms-form input[type="checkbox"]:not(:checked)::before,
body div.wpforms-container-full .wpforms-form input[type="radio"]:not(:checked)::before {
	border-color: color-mix(in srgb, var(--tb-ink, #121212) 40%, transparent);
}
/* Cochée : case pleine couleur de marque et coche lisible, même avec une marque claire. */
body div.wpforms-container-full .wpforms-form input[type="checkbox"]:checked::before,
body div.wpforms-container-full .wpforms-form input[type="radio"]:checked::before {
	background-color: var(--tb-accent, #b8f03c);
	border-color: var(--tb-accent, #b8f03c);
	box-shadow: none;
}
body div.wpforms-container-full .wpforms-form input[type="checkbox"]:checked::after {
	border-left-color: var(--tb-accent-ink, #0d0d0f);
	border-bottom-color: var(--tb-accent-ink, #0d0d0f);
}
body div.wpforms-container-full .wpforms-form input[type="radio"]:checked::after {
	background-color: var(--tb-accent-ink, #0d0d0f);
}
body div.wpforms-container-full .wpforms-form input[type="checkbox"]:focus-visible::before,
body div.wpforms-container-full .wpforms-form input[type="radio"]:focus-visible::before {
	box-shadow: 0 0 0 2px var(--tb-bg, #ffffff), 0 0 0 4px var(--tb-ink, #121212);
}
/* Bouton d'envoi : même bouton plein que le bouton principal du site (classe tb-btn). */
body div.wpforms-container-full .wpforms-form button[type="submit"] {
	font-weight: 600;
	background-image: none;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.18);
	transition: transform 0.3s ease, background-color 0.3s ease, border-color 0.3s ease;
}
body div.wpforms-container-full .wpforms-form button[type="submit"]:hover,
body div.wpforms-container-full .wpforms-form button[type="submit"]:active {
	background-color: var(--tb-accent-hover, #a3d92f);
	border-color: var(--tb-accent-hover, #a3d92f);
	transform: translateY(-1px);
}
body div.wpforms-container-full .wpforms-confirmation-container-full,
body div[submit-success] > .wpforms-confirmation-container-full:not(.wpforms-redirection-message) {
	background: var(--tb-surface, #f2f3ee);
	border: 1px solid var(--tb-line, rgba(0, 0, 0, 0.09));
	border-radius: var(--tb-r-md, 12px);
	color: var(--tb-ink, #121212);
	padding: 20px 24px;
}
body div.wpforms-container-full .wpforms-confirmation-container-full p:last-child {
	margin-bottom: 0;
}
.elementor-widget-wpforms {
	width: 100%;
}
/* Formulaire posé directement sur une section sombre ou sur une photo (pas dans une carte) :
   libellés, case de consentement et son contour en clair, lisibles quel que soit le thème. */
.tb-bg-contrast .wpforms-container {
	--wpforms-label-color: var(--tb-on-contrast, #f2f2f0);
	--wpforms-label-sublabel-color: var(--tb-on-contrast, #f2f2f0);
	color: var(--tb-on-contrast, #f2f2f0);
}
.tb-on-photo .wpforms-container {
	--wpforms-label-color: var(--tb-on-photo, #ffffff);
	--wpforms-label-sublabel-color: var(--tb-on-photo, #ffffff);
	color: var(--tb-on-photo, #ffffff);
}
:is(.tb-bg-contrast, .tb-on-photo) :is(.tb-card, .tb-card-soft, .tb-bg-surface) .wpforms-container {
	--wpforms-label-color: var(--tb-ink, #121212);
	--wpforms-label-sublabel-color: var(--tb-ink, #121212);
	color: var(--tb-ink, #121212);
}
body :is(.tb-bg-contrast, .tb-on-photo) div.wpforms-container-full .wpforms-form :is(.wpforms-field-label-inline, .wpforms-field-label, .wpforms-field-description) {
	color: inherit;
}
body :is(.tb-bg-contrast, .tb-on-photo) div.wpforms-container-full .wpforms-form input[type="checkbox"]:not(:checked)::before {
	border-color: color-mix(in srgb, currentColor 55%, transparent);
	background-color: transparent;
}

/* Formulaire de contact sur téléphone : les champs côte à côte (Nom, E-mail) passent l'un sous
   l'autre, au lieu de deux champs étroits. */
@media (max-width: 600px) {
	body .wpforms-container.wpforms-container .wpforms-form .wpforms-field.wpforms-one-half {
		width: 100%;
		margin-left: 0;
		padding-left: 0;
		padding-right: 0;
		float: none;
	}
}

/* Formulaire WPForms dans une section : pas de marge au-dessus du premier champ (l'espace vient
   de la section ou de la carte, comme pour les autres éléments). */
.elementor .elementor-widget-wpforms .wpforms-container {
	margin-top: 0;
	margin-bottom: 0;
}

.elementor .elementor-widget-wpforms .wpforms-field-container > .wpforms-field:first-child,
.elementor .elementor-widget-wpforms .wpforms-field-container > .wpforms-field.wpforms-first:first-child + .wpforms-one-half {
	padding-top: 0;
}

/* ---------- Formulaire newsletter (Tabula) : e-mail et bouton sur une ligne, consentement discret
   dessous, aligné à gauche (même dans une section centrée), sans marges propres à WPForms : l'espace
   vient de la carte ou de la section, égal tout autour. ---------- */
body div.wpforms-container-full.tb-newsletter-form .wpforms-form {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: start;
	gap: 14px 10px;
	text-align: start;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form > *,
body div.wpforms-container-full.tb-newsletter-form .wpforms-field-container > * {
	grid-column: 1 / -1;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-field-container {
	display: contents;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field {
	margin: 0;
	padding: 0;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field-email {
	grid-column: 1;
	grid-row: 1;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field-email input {
	max-width: none;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-submit-container {
	grid-column: 2;
	grid-row: 1;
	margin: 0;
	padding: 0;
	text-align: start;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field-gdpr-checkbox {
	grid-row: 2;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field-gdpr-checkbox li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field-gdpr-checkbox input[type="checkbox"] {
	flex: 0 0 auto;
	margin-top: 1px;
}
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field-gdpr-checkbox .wpforms-field-label-inline {
	margin: 0;
	padding: 0;
	font-size: 13.5px;
	line-height: 1.45;
	opacity: 0.75;
}
/* Case requise (le navigateur le signale à l'envoi) : sans astérisque rouge. */
body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-required-label {
	display: none;
}
/* Téléphone : e-mail, bouton pleine largeur, puis consentement. */
@media (max-width: 480px) {
	body div.wpforms-container-full.tb-newsletter-form .wpforms-form {
		grid-template-columns: minmax(0, 1fr);
	}
	body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-submit-container {
		grid-column: 1;
		grid-row: 2;
	}
	body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-submit-container button {
		width: 100%;
	}
	body div.wpforms-container-full.tb-newsletter-form .wpforms-form .wpforms-field-gdpr-checkbox {
		grid-row: 3;
	}
}
