/* 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;
}

/*
 * 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);
}

/* 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;
}

/* 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;
	}
}

/* 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 ---------- */
/* Couleurs du contexte (fond sombre, photo ou carte claire) pour les formulaires WPForms et les
   grilles dynamiques : la valeur du conteneur Tabula le plus proche l'emporte. */
:is(.tb-bg-contrast, .tb-card-contrast, .tb-card-glass-dark, .tb-on-photo) {
	--tbf-ink: var(--tb-on-contrast);
	--tbf-field: rgba(255, 255, 255, 0.06);
	--tbf-line: var(--tb-contrast-line);
	--tbf-card: var(--tb-contrast-card);
}

:is(.tb-card:not(.tb-card-contrast):not(.tb-card-glass-dark), .tb-bg-surface, .tb-section:not(.tb-bg-contrast):not(.tb-on-photo)) {
	--tbf-ink: var(--tb-ink);
	--tbf-field: var(--tb-bg);
	--tbf-line: var(--tb-line);
	--tbf-card: var(--tb-card);
}

.wpforms-container {
	--wpforms-field-border-radius: var(--tb-r-sm, 8px);
	--wpforms-field-border-color: var(--tbf-line, var(--tb-line, rgba(0, 0, 0, 0.14)));
	--wpforms-field-background-color: var(--tbf-field, var(--tb-bg, #ffffff));
	--wpforms-field-text-color: var(--tbf-ink, var(--tb-ink, #121212));
	--wpforms-field-menu-color: var(--tbf-card, var(--tb-card, #ffffff));
	--wpforms-label-color: var(--tbf-ink, var(--tb-ink, #121212));
	--wpforms-label-sublabel-color: var(--tbf-ink, 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 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;
}

/* Sur fond sombre (section ou carte) : barre d'onglets et bouton secondaire assortis, comme les
   formulaires. En thème Light, ces variables reviennent aux couleurs claires. */
body .elementor :is(.tb-bg-contrast, .tb-card-contrast) .tb-tabs-menu {
	background-color: var(--tb-contrast-card);
	border-color: var(--tb-contrast-line);
	color: var(--tb-on-contrast);
}

body .elementor :is(.tb-bg-contrast, .tb-card-contrast) .tb-tab.e--selected {
	background-color: var(--tb-on-contrast);
	color: var(--tb-contrast);
}

body .elementor :is(.tb-bg-contrast, .tb-card-contrast) .tb-btn-secondary {
	border-color: color-mix(in srgb, currentColor 32%, transparent);
}
