/* ==== Espacements : marges de page et de sections (fluides de 393 à 1440 px) ==== */
:root {
	--pad-y: clamp(3.5rem, 2.4705rem + 4.1912vw, 7.5rem);
	--pad-y-sm: clamp(2.5rem, 1.8566rem + 2.6195vw, 5rem);
	--pad-x: clamp(1rem, -1.3967rem + 9.7577vw, 10.3125rem);
}
/* ==== Sections : marge par défaut des sections principales (éditeur, classe ou CSS de l'élément l'emportent) ==== */
.e-con:where(:is(.elementor, .elementor > .elementor-section-wrap):not([data-elementor-type="header"], [data-elementor-type="footer"], [data-elementor-type="loop-item"]) > .e-parent:not(:has(> .elementor-widget-template))) {
	--container-default-padding-top: var(--pad-y);
	--container-default-padding-right: var(--pad-x);
	--container-default-padding-bottom: var(--pad-y);
	--container-default-padding-left: var(--pad-x);
}
.e-con:where(.e-parent.pad-sm) {
	--container-default-padding-top: var(--pad-y-sm);
	--container-default-padding-bottom: var(--pad-y-sm);
}
/* ==== Sections : pleine largeur d'un côté, l'autre aligné sur la largeur de contenu (passe devant les côtés réglés dans l'éditeur) ==== */
.elementor .elementor-element.e-con:is(.pad-xr0, .pad-xl0) {
	--content-width: 100%;
	overflow-x: clip;
	--bord-aligne: calc(var(--pad-x) + max(0px, (100% - 2 * var(--pad-x) - var(--container-max-width, 1140px)) / 2));
}
.elementor .elementor-element.e-con.pad-xr0 {
	--padding-left: var(--bord-aligne);
	--padding-right: 0px;
}
.elementor .elementor-element.e-con.pad-xl0 {
	--padding-left: 0px;
	--padding-right: var(--bord-aligne);
}
@media (max-width: 1024px) {
	.elementor .elementor-element.e-con:is(.pad-xr0, .pad-xl0) {
		--padding-left: var(--pad-x);
		--padding-right: var(--pad-x);
	}
}
/* ==== Sections : classes de marge (pad-x, pad-y, pad-sm) ==== */
.e-con:where(.pad-x) {
	--padding-left: var(--pad-x);
	--padding-right: var(--pad-x);
}
.e-con:where(.pad-y) {
	--padding-top: var(--pad-y);
	--padding-bottom: var(--pad-y);
}
.e-con:where(.pad-sm.pad-y) {
	--padding-top: var(--pad-y-sm);
	--padding-bottom: var(--pad-y-sm);
}
/* ==== Base ==== */
:root {
	--entete-h: 138px;
}
@media (max-width: 1024px) {
	:root {
		--entete-h: 88px;
	}
}
html {
	scroll-padding-top: calc(var(--barre-admin) + var(--entete-visible) + 16px);
}
@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}
body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}
img, video, canvas {
	max-width: 100%;
	height: auto;
	display: block;
}
.elementor-icon-wrapper {
	line-height: 0;
}
::marker {
	color: var(--e-global-color-primary);
	font-weight: 600;
}
::selection {
	background: var(--e-global-color-primary);
	color: #fff;
}
a {
	text-decoration: none;
}
b, strong, .elementor-inline-editing b {
	font-weight: 400;
}
ul, ol {
	margin-bottom: 15px;
}
blockquote {
	border-left: 3px solid var(--e-global-color-primary);
	padding-left: 20px;
}
.elementor-swiper-button-prev svg {
	transform: scaleX(-1);
}
/* ==== Couleurs et opacités (classes utilitaires) ==== */
.color-primary {
	color: var(--e-global-color-primary) !important;
}
.color-secondary {
	color: var(--e-global-color-secondary) !important;
}
.color-accent {
	color: var(--e-global-color-accent) !important;
}
.color-text {
	color: var(--e-global-color-text) !important;
}
.op1 { opacity: 0.1; } .op2 { opacity: 0.2; } .op3 { opacity: 0.3; } .op4 { opacity: 0.4; } .op5 { opacity: 0.5; } .op6 { opacity: 0.6; } .op7 { opacity: 0.7; } .op8 { opacity: 0.8; } .op9 { opacity: 0.9; }
@media (max-width: 767px) {
	.mob-op1 { opacity: 0.1; } .mob-op2 { opacity: 0.2; } .mob-op3 { opacity: 0.3; } .mob-op4 { opacity: 0.4; } .mob-op5 { opacity: 0.5; } .mob-op6 { opacity: 0.6; } .mob-op7 { opacity: 0.7; } .mob-op8 { opacity: 0.8; } .mob-op9 { opacity: 0.9; }
}
/* ==== Icônes au trait : même épaisseur à toutes les tailles ==== */
:root {
	--icone-trait: 1.5px;
}
:is(.elementor-icon, .elementor-icon-list-icon, .elementor-button-icon, .elementor-icon-box-icon) svg :is([stroke], [stroke] *) {
	stroke-width: var(--icone-trait);
	vector-effect: non-scaling-stroke;
}
/* ==== Focus visible ==== */
:where(a, button, input, select, textarea, summary):focus-visible {
	outline: 2px solid var(--e-global-color-primary);
	outline-offset: 3px;
}
.sombre :where(a, button):focus-visible {
	outline-color: var(--e-global-color-secondary);
}
/* ==== Listes à coche (classe liste-coche sur le widget) ==== */
.liste-coche ul:not([class*="elementor-editor"]) {
	list-style: none;
	padding: 0;
	display: grid;
	gap: var(--gap-liste, 12px);
}
.liste-coche ul:not([class*="elementor-editor"]) > li {
	position: relative;
	padding-left: 32px;
}
.liste-coche ul:not([class*="elementor-editor"]) > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: calc(0.8em - 8.5px);
	width: 20px;
	height: 17px;
	background: var(--puce-liste, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 20'%3E%3Cpath d='M3 10.5l6 6L21 3.5' fill='none' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E")) no-repeat center / contain;
}
/* ==== Colonnes collantes (classe colonne-collante) ==== */
:root {
	--entete-visible: var(--entete-h);
	--barre-admin: var(--wp-admin--admin-bar--height, 0px);
}
@media (max-width: 600px) {
	:root {
		--barre-admin: 0px;
	}
}
.entete-cache {
	--entete-visible: 0px;
}
.e-con.colonne-collante {
	position: sticky;
	top: calc(var(--entete-visible) + var(--haut-collant, 40px));
	max-height: calc(100vh - var(--entete-visible) - var(--haut-collant, 40px) - 24px);
	overflow-y: auto;
	z-index: 1;
	transition: top 0.3s ease;
}
/* ==== En-tête : masqué en descendant, visible en remontant (classe entete-auto sur l'en-tête collant) ==== */
.entete-auto:not(.elementor-sticky__spacer) {
	transition: transform 0.3s ease;
}
.entete-cache .entete-auto:not(.elementor-sticky__spacer) {
	transform: translateY(-100%);
}
.collant-suit-entete.elementor-sticky--active {
	transition: transform 0.3s ease, opacity 0.3s, visibility 0.3s;
	transform: translateY(calc(var(--decalage-entete, 0px) + var(--decalage-supplementaire, 0px)));
}
.entete-cache {
	--decalage-entete: calc(-1 * var(--entete-h));
}
@media (prefers-reduced-motion: reduce) {
	.entete-auto, .collant-suit-entete {
		transition: none !important;
	}
}
/* ==== Animation native « Fondu vers le haut » d'Elementor, plus courte et plus douce ==== */
@keyframes entree-monte {
	from {
		opacity: 0;
		transform: translate3d(0, 18px, 0);
	}
	to {
		opacity: 1;
		transform: none;
	}
}
.elementor-element.animated.fadeInUp {
	animation-name: entree-monte;
	animation-duration: 0.7s;
	animation-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
}
/* ==== Formulaires (couleurs du kit) ==== */
::placeholder {
	opacity: 1;
}
.elementor-field-group .elementor-field-textual:focus {
	box-shadow: none;
}
.elementor-field-option input[type="checkbox"], .elementor-field-option input[type="radio"] {
	position: absolute;
	opacity: 0;
	width: 18px;
	height: 18px;
	margin: 0;
	cursor: pointer;
}
.elementor-field-option input ~ label::before {
	content: "";
	display: inline-block;
	position: relative;
	top: 4px;
	width: 18px;
	height: 18px;
	margin-right: 8px;
	border: 2px solid var(--e-global-color-primary);
	background: #fff;
	box-sizing: border-box;
	transition: background-color 0.15s ease, box-shadow 0.15s ease;
}
.elementor-field-option input[type="radio"] ~ label::before {
	border-radius: 50%;
}
.elementor-field-option input[type="radio"]:checked ~ label::before {
	background-color: var(--e-global-color-primary);
	box-shadow: inset 0 0 0 3px #fff;
}
.elementor-field-option input[type="checkbox"] ~ label::before {
	border-radius: 4px;
}
.elementor-field-option input[type="checkbox"]:checked ~ label::before {
	background-color: var(--e-global-color-primary);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
	background-size: 12px 12px;
	background-position: center;
	background-repeat: no-repeat;
}
.elementor-field-option input:focus-visible ~ label::before {
	outline: 2px solid var(--e-global-color-primary);
	outline-offset: 2px;
}
.elementor-field-type-acceptance .elementor-field-option label {
	display: inline-flex !important;
	align-items: flex-start;
	font-size: 14px !important;
	line-height: 19px !important;
	margin-bottom: 5px;
}
.elementor-field-type-acceptance .elementor-field-option label::before {
	min-width: 18px;
	top: 2px !important;
}
.elementor-field-type-select select {
	appearance: none;
	-webkit-appearance: none;
	padding-left: 12px;
	padding-right: 36px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	background-size: 16px;
}
.elementor-field-type-select .select-caret-down-wrapper {
	display: none;
}
@supports (appearance: base-select) {
	.elementor-field-type-select select {
		appearance: base-select;
		background-image: none;
	}
	.elementor-field-type-select select::picker(select) {
		border: 1px solid var(--e-global-color-primary);
		border-radius: 4px;
	}
	.elementor-field-type-select select option:checked {
		background: var(--e-global-color-primary);
		color: #fff;
	}
}
.elementor-field-type-upload input[type="file"] {
	border: 0 !important;
}
.elementor-field-type-upload input[type="file"]::file-selector-button {
	background: var(--e-global-color-primary);
	border: 0;
	padding: 8px 16px;
	margin-right: 12px;
	font-size: 14px;
	font-weight: 600;
	color: #fff;
	border-radius: 4px;
	cursor: pointer;
	transition: opacity 0.15s ease;
}
.elementor-field-type-upload input[type="file"]::file-selector-button:hover {
	opacity: 0.85;
}
.elementor-field-group .elementor-field-textual[aria-invalid="true"] {
	border-color: var(--e-global-color-erreur, #b3261e);
}
