/* ==========================================================================
   Socle de l'agence (skill integration-figma-elementor) : CSS des conventions par défaut.
   Installé par scripts/installer-socle.sh dans assets/css/socle.css, chargé avant style.css (qui peut le surcharger).
   Ne contient que ce qui vaut pour tous les sites ; les couleurs passent par les variables ci-dessous, branchées
   sur les couleurs globales du Kit (Réglages du site > Couleurs globales).
   NE PAS MODIFIER CE FICHIER dans un projet (une réinstallation l'écrase) : surcharger les variables dans style.css,
   par exemple :root { --pb-accent: var(--e-global-color-xxxxxxx); --pb-form-etiquette-gauche: 12px; }.
   Contrôle de présence : scripts/qa-conformite.php (ligne « Socle du thème »).
   ========================================================================== */

:root {
	/* Couleur d'accent (boutons, page courante du menu, focus, marque des champs requis) et son survol. */
	--pb-accent: var(--e-global-color-primary, #00256F);
	--pb-accent-survol: var(--e-global-color-accent, #001D59);
	--pb-texte: var(--e-global-color-text, #1A1A1A);
	/* Fond de survol des pastilles de sous-menu et du burger, et fond des liens du chemin de la page courante. */
	--pb-pastille-survol: color-mix(in srgb, var(--pb-accent) 10%, transparent);
	--pb-pastille-active: var(--pb-pastille-survol);
	/* Écart entre un sous-menu et le sous-menu qu'il ouvre (socle.js le donne à SmartMenus). */
	--pb-sous-menu-ecart: 8px;
	/* Bas du header fixe (barre d'admin comprise), recalculé par socle.js ; micro-marge sous le menu. */
	--nav-height: 104px;
	--nav-gap: 12px;
	/* Bas du menu du burger : 90 % de la hauteur de l'écran au plus, jamais collé au bord. */
	--pb-burger-max: 90vh;
}

@supports (height: 100dvh) {
	:root {
		--pb-burger-max: 90dvh;
	}
}

/* Aucun débordement horizontal (décors, carrousels qui débordent) : sur la racine seulement (Safari iOS).
   Jamais d'overflow-x sur body, les sections ou le header (menu burger coupé, sticky cassé). */
html {
	overflow-x: hidden;
	scroll-padding-top: calc(var(--nav-height) + var(--nav-gap));
}

/* ==========================================================================
   Header (classe pb-header sur la section, id navBar pour le snippet « Scroll NavBar »)
   ========================================================================== */
.pb-header,
.pb-header .e-con {
	overflow: visible !important;
}

/* Le header fixe laisse passer les clics vers la page : seuls ses éléments interactifs les captent.
   Une surface opaque (capsule au scroll, barre du téléphone) garde ses clics. */
.pb-header {
	pointer-events: none;
}

.pb-header a,
.pb-header button,
.pb-header [role="button"],
.pb-header .elementor-menu-toggle,
.pb-header .sub-menu,
.pb-header .elementor-nav-menu--dropdown,
.pb-header .pb-lang,
.pb-header .pb-lang *,
.pb-header.scrollHeader > .e-con-inner {
	pointer-events: auto;
}

.elementor-editor-active .pb-header {
	pointer-events: auto;
}

/* Page courante toujours repérable, avec tout son chemin : un parent « # » n'a jamais la classe elementor-item-active.
   Un lien d'ancre vers la page affichée (« Particuliers » → /#particuliers sur l'accueil) n'est pas une page courante :
   seul compte un parent qui contient la vraie page courante (:has). */
.pb-header .elementor-nav-menu--main .elementor-nav-menu > li:has(.current-menu-item > a:not(.elementor-item-anchor)) > a.elementor-item {
	color: var(--pb-accent) !important;
}

/* Menu du burger : il défile s'il dépasse, et s'arrête à --pb-burger-max (90 % de l'écran), jamais collé au bord :
   max-height = 90dvh - haut du menu (bas du header + écart sous le header). socle.js mesure ce haut à l'ouverture et quand
   le header change de taille (--pb-burger-haut) : l'écart cumule souvent un top du thème et l'« écart » du widget
   (dropdown_top_distance, en !important), qu'une formule en dur oublierait. */
.pb-header .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
	max-height: calc(var(--pb-burger-max) - var(--pb-burger-haut, calc(var(--nav-height) + var(--nav-gap))));
	overflow-y: auto;
	overscroll-behavior: contain;
}

/* ==========================================================================
   Sous-menu et menu burger : chaque lien est une pastille, en retrait de 8 px des bords du panneau, 2 px entre
   deux liens. Rayon de la pastille = rayon du panneau moins le retrait (8 px dans le sous-menu de 16 px, 16 px
   dans la carte du burger de 24 px). SmartMenus affiche le sous-menu par un display en ligne : l'espace passe
   par une marge (li + li), pas par gap. Rendu de référence : exemples/sous-menu-pastilles.jpg.
   ========================================================================== */
.pb-header .elementor-nav-menu--main .sub-menu {
	padding: 8px !important;
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 20px 40px rgba(0, 0, 0, .14);
}

.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container {
	border-radius: 24px;
	box-shadow: 0 24px 48px rgba(0, 0, 0, .2);
	overflow: hidden;
}

.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container > .elementor-nav-menu {
	padding: 8px !important;
	background: #fff;
}

.pb-header .elementor-nav-menu--main .sub-menu li + li,
.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container > .elementor-nav-menu > li + li,
.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container .sub-menu li + li {
	margin-top: 2px;
}

/* Elementor indente les liens de sous-menu par une bordure gauche transparente de 8 px : texte et pastille décalés. */
.pb-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item,
.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container a.elementor-sub-item {
	border-inline-start: 0 !important;
}

.pb-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item {
	border-radius: 8px;
}

.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container a.elementor-item,
.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container a.elementor-sub-item {
	border-radius: 16px;
}

.pb-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item:is(:hover, :focus-visible),
.pb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container a:is(.elementor-item, .elementor-sub-item):is(:hover, :focus-visible) {
	background-color: var(--pb-pastille-survol) !important;
	color: var(--pb-accent) !important;
}

/* Chemin de la page courante coloré à chaque niveau : parent dans le sous-menu, parents dans le burger, page elle-même
   (Prestations > Particuliers > Portes de garage). */
.pb-header .elementor-nav-menu--main .sub-menu li:has(.current-menu-item > a:not(.elementor-item-anchor)) > a.elementor-sub-item,
.pb-header .elementor-nav-menu--main .sub-menu .current-menu-item > a.elementor-sub-item:not(.elementor-item-anchor),
.pb-header .elementor-nav-menu--dropdown li:has(.current-menu-item > a:not(.elementor-item-anchor)) > a,
.pb-header .elementor-nav-menu--dropdown .current-menu-item > a:not(.elementor-item-anchor) {
	color: var(--pb-accent) !important;
	background-color: var(--pb-pastille-active) !important;
}

/* Flèche d'un parent au bord droit du lien (sous-menus et burger), pas collée au texte. Les liens sont en flex. */
.pb-header .elementor-nav-menu--main .sub-menu a.has-submenu .sub-arrow,
.pb-header .elementor-nav-menu--dropdown a.has-submenu .sub-arrow {
	margin-inline-start: auto !important;
	padding-inline-start: 16px !important;
}

/* Sous-menu de 2e niveau : jamais de margin-left forcée sur .sub-menu .sub-menu. SmartMenus le place par margin-left
   (à droite du lien parent, ou à gauche s'il n'a pas la place) : socle.js lui donne seulement le décalage. */

/* ==========================================================================
   Formulaires Elementor (tous) : libellés flottants et champ fichier en bouton.
   Libellés activés dans le widget (show_labels, mark_required). Sur les champs de saisie, le libellé reste masqué
   tant que le champ est vide (le placeholder sert d'invite), puis apparaît en étiquette sur le bord haut du champ
   dès qu'il est rempli ou actif. Le champ fichier devient un bouton pleine largeur (formats et fichiers : socle.js).
   Rendu de référence : exemples/formulaire-vide.jpg, exemples/formulaire-rempli.jpg.
   ========================================================================== */
.elementor-widget-form {
	--pb-form-accent: var(--pb-accent);
	--pb-form-accent-survol: var(--pb-accent-survol);
	--pb-form-focus: var(--pb-accent);
	/* Fond de l'étiquette = fond derrière le champ. */
	--pb-form-etiquette-fond: #fff;
	--pb-form-etiquette-texte: var(--pb-texte);
	/* Padding gauche du champ − 8 px. */
	--pb-form-etiquette-gauche: 16px;
	/* Moitié de l'« Espace entre les colonnes » du widget. */
	--pb-form-demi-gouttiere: 12px;
	/* Rayon des champs. */
	--pb-form-rayon-fichier: 12px;
}

.elementor-widget-form .elementor-field-group {
	position: relative;
}

.elementor-widget-form .elementor-field-group:has(.elementor-field-textual) > .elementor-field-label {
	position: absolute;
	top: 0;
	left: calc(var(--pb-form-demi-gouttiere) + var(--pb-form-etiquette-gauche));
	z-index: 2;
	max-width: calc(100% - 2 * (var(--pb-form-demi-gouttiere) + var(--pb-form-etiquette-gauche)));
	margin: 0;
	padding: 4px 8px !important;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	font-size: .75rem !important;
	font-weight: 500 !important;
	line-height: 1 !important;
	letter-spacing: .01em;
	color: var(--pb-form-etiquette-texte) !important;
	background-color: var(--pb-form-etiquette-fond);
	border: 1px solid rgba(0, 0, 0, .08);
	border-radius: 999px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, .06);
	transform: translateY(-50%) translateY(8px);
	opacity: 0;
	pointer-events: none;
	transition: opacity .25s ease, transform .25s ease, color .2s ease, border-color .2s ease;
}

.elementor-widget-form .elementor-field-group:has(.elementor-field-textual):focus-within > .elementor-field-label,
.elementor-widget-form .elementor-field-group:has(input.elementor-field-textual:not(:placeholder-shown)) > .elementor-field-label,
.elementor-widget-form .elementor-field-group:has(textarea:not(:placeholder-shown)) > .elementor-field-label,
.elementor-widget-form .elementor-field-group:has(select option[value=""]:not(:checked)) > .elementor-field-label,
.elementor-widget-form .elementor-field-group:has(select):not(:has(option[value=""])) > .elementor-field-label {
	opacity: 1;
	transform: translateY(-50%);
}

.elementor-widget-form .elementor-field-group:has(.elementor-field-textual):focus-within > .elementor-field-label {
	color: var(--pb-form-focus) !important;
	border-color: color-mix(in srgb, var(--pb-form-focus) 30%, transparent);
}

.elementor-widget-form .elementor-mark-required .elementor-field-label::after {
	padding-inline-start: 2px;
	color: var(--pb-form-accent);
}

@media (prefers-reduced-motion: reduce) {
	.elementor-widget-form .elementor-field-group:has(.elementor-field-textual) > .elementor-field-label {
		transition: opacity .2s ease;
	}
}

/* Le select affiche son option vide en gris, comme un placeholder (classe posée par socle.js). */
.elementor-widget-form select.is-vide {
	color: rgba(0, 0, 0, .45);
}

/* Champ fichier : l'input reste dans le DOM (validation native, focus clavier), l'étiquette sert de bouton. */
.elementor-widget-form .elementor-field-type-upload input[type="file"] {
	position: absolute;
	top: -1px;
	left: 0;
	z-index: -1;
	width: 1px;
	height: 1px;
	padding: 0;
	border: 0 !important;
	opacity: 1;
}

.elementor-widget-form .elementor-field-type-upload > .elementor-field-label {
	display: block;
	width: 100%;
	margin: 0;
	padding: 14px 16px !important;
	font-size: 1rem !important;
	line-height: 1.4 !important;
	text-align: center;
	color: #fff !important;
	background-color: var(--pb-form-accent);
	border: 0 !important;
	border-radius: var(--pb-form-rayon-fichier);
	cursor: pointer;
	transition: background-color .3s ease;
}

/* Trombone en masque SVG (la police Font Awesome n'est pas toujours chargée). */
.elementor-widget-form .elementor-field-type-upload > .elementor-field-label::before {
	content: "";
	display: inline-block;
	width: 18px;
	height: 18px;
	margin-right: 8px;
	vertical-align: -4px;
	background-color: currentColor;
	-webkit-mask: 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.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: 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.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48'/%3E%3C/svg%3E") center / contain no-repeat;
}

.elementor-widget-form .elementor-field-type-upload > .elementor-field-label:hover {
	background-color: var(--pb-form-accent-survol);
}

.elementor-widget-form .elementor-field-type-upload:has(input:focus-visible) > .elementor-field-label {
	outline: 2px solid var(--pb-form-accent);
	outline-offset: 3px;
}

.elementor-widget-form .pb-upload-formats {
	display: inline-flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 4px;
	margin-left: 8px;
	vertical-align: middle;
}

.elementor-widget-form .pb-format {
	display: inline-flex;
	align-items: center;
	height: 18px;
	padding: 0 7px;
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: .65rem;
	font-weight: 500;
	line-height: 1;
	letter-spacing: .01em;
	text-transform: lowercase;
	color: rgba(0, 0, 0, .65);
	background-color: #fff;
	border: 1px solid rgba(0, 0, 0, .08);
	border-radius: 6px;
}

/* ==========================================================================
   Navigation des carrousels de boucle (classe pb-carrousel-nav, réglages nav_carrousel() du générateur) :
   flèches rondes et points sur une ligne sous les cartes, flèches à gauche, point actif allongé.
   Quand tout tient à l'écran, Swiper verrouille le carrousel (swiper-button-lock) : navigation masquée, sans espace.
   Rendu de référence : exemples/carrousel-nav.jpg. Variante sur fond sombre : pb-carrousel-nav--clair.
   ========================================================================== */
.pb-carrousel-nav.elementor-widget {
	--pb-nav-taille: 48px;
	--pb-nav-espace: 40px;
	--pb-nav-couleur: var(--pb-accent);
	--pb-nav-fond: color-mix(in srgb, var(--pb-accent) 7%, transparent);
	--pb-nav-point: color-mix(in srgb, var(--pb-accent) 25%, transparent);
	--pb-nav-texte-survol: #fff;
	--arrow-normal-color: var(--pb-nav-couleur);
	--arrow-hover-color: var(--pb-nav-texte-survol);
	--arrow-size: 16px;
	--dots-normal-color: var(--pb-nav-point);
	--dots-hover-color: var(--pb-nav-couleur);
	--swiper-pagination-size: 8px;
	--swiper-pagination-spacing: 0px;
	position: relative;
	padding-bottom: calc(var(--pb-nav-taille) + var(--pb-nav-espace));
}

.pb-carrousel-nav--clair.elementor-widget {
	--pb-nav-couleur: #fff;
	--pb-nav-fond: rgba(255, 255, 255, .12);
	--pb-nav-point: rgba(255, 255, 255, .35);
	--pb-nav-texte-survol: var(--pb-accent);
}

.pb-carrousel-nav.elementor-widget .elementor-swiper-button {
	position: absolute;
	top: auto !important;
	bottom: 0 !important;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--pb-nav-taille);
	height: var(--pb-nav-taille);
	margin: 0 !important;
	border-radius: 50%;
	font-size: 1rem;
	color: var(--pb-nav-couleur);
	background: var(--pb-nav-fond);
	transform: none !important;
	transition: background-color .2s ease, color .2s ease, opacity .2s ease;
	cursor: pointer;
}

.pb-carrousel-nav.elementor-widget .elementor-swiper-button svg {
	width: 1em;
	height: 1em;
	fill: currentColor;
}

.pb-carrousel-nav.elementor-widget .elementor-swiper-button-prev {
	left: 0 !important;
	right: auto !important;
}

.pb-carrousel-nav.elementor-widget .elementor-swiper-button-next {
	left: calc(var(--pb-nav-taille) + 12px) !important;
	right: auto !important;
}

.pb-carrousel-nav.elementor-widget .elementor-swiper-button:is(:hover, :focus-visible) {
	color: var(--pb-nav-texte-survol);
	background: var(--pb-nav-couleur);
}

.pb-carrousel-nav.elementor-widget .elementor-swiper-button.swiper-button-disabled {
	opacity: .45;
	pointer-events: none;
}

/* La barre des points d'un carrousel laisse passer les clics, seuls les points sont cliquables : élargie (centrage des
   points), elle passe sinon sur les flèches (Elementor Pro lui donne le z-index 3, aux flèches le 2). */
.elementor-widget .swiper-pagination {
	pointer-events: none;
}

.elementor-widget .swiper-pagination-bullet {
	pointer-events: auto;
}

.pb-carrousel-nav.elementor-widget .swiper-pagination {
	position: absolute !important;
	top: auto !important;
	bottom: 0 !important;
	left: calc(2 * var(--pb-nav-taille) + 36px) !important;
	right: auto !important;
	display: flex;
	align-items: center;
	gap: 8px;
	width: auto !important;
	height: var(--pb-nav-taille);
	margin: 0 !important;
	transform: none !important;
}

.pb-carrousel-nav.elementor-widget .swiper-pagination-bullet {
	width: 8px;
	height: 8px;
	margin: 0 !important;
	border-radius: 100px;
	background: var(--pb-nav-point);
	opacity: 1;
	transition: width .3s ease, background-color .3s ease;
}

.pb-carrousel-nav.elementor-widget .swiper-pagination-bullet.swiper-pagination-bullet-active {
	width: 28px;
	background: var(--pb-nav-couleur);
}

.pb-carrousel-nav.elementor-widget .swiper-button-lock,
.pb-carrousel-nav.elementor-widget .swiper-pagination-lock {
	display: none !important;
}

.pb-carrousel-nav.elementor-widget:has(.swiper-button-lock) {
	padding-bottom: 0;
}

@media (max-width: 767px) {
	.pb-carrousel-nav.elementor-widget {
		--pb-nav-taille: 44px;
		--pb-nav-espace: 28px;
	}
}

/* Flèches déportées (Remote Arrows) : masquées quand les deux sont grisées (rien à faire défiler). */
.elementor-widget-remote_arrows_widget:has(.rca__btn--prev.is-disabled):has(.rca__btn--next.is-disabled) {
	display: none;
}

/* ==========================================================================
   Carrousels qui débordent à droite jusqu'au bord de l'écran (pb-carrousel-deborde, pb-timeline) : les cartes
   passées restent visibles à gauche, l'amorce de la suivante dépasse à droite (mobile compris). Le widget va
   jusqu'au bord droit du contenu (pas de largeur fixe de la maquette) ; socle.js aligne la dernière carte dessus.
   ========================================================================== */
.pb-carrousel-deborde .swiper,
.pb-timeline .swiper {
	overflow: visible !important;
}

@media (max-width: 767px) {
	.pb-carrousel-deborde .swiper,
	.pb-timeline .swiper {
		margin-right: 56px;
	}
}

/* ==========================================================================
   Fondu des bords : masque de transparence (pas un calque de la couleur du fond), valable sur tout fond.
   pb-fondu-bords : deux côtés (bandeau de logos, défilement continu) ; pb-fondu-droite : bord droit seul
   (rangée qui défile au doigt et continue hors champ). Pas sur les carrousels de cartes à flèches.
   Rendu de référence : exemples/fondu-logos.jpg.
   ========================================================================== */
.pb-fondu-bords,
.pb-fondu-droite {
	--pb-fondu-plein: 3%;
	--pb-fondu-net: 20%;
}

.pb-fondu-bords {
	-webkit-mask-image: linear-gradient(90deg, transparent var(--pb-fondu-plein), #000 var(--pb-fondu-net), #000 calc(100% - var(--pb-fondu-net)), transparent calc(100% - var(--pb-fondu-plein)));
	mask-image: linear-gradient(90deg, transparent var(--pb-fondu-plein), #000 var(--pb-fondu-net), #000 calc(100% - var(--pb-fondu-net)), transparent calc(100% - var(--pb-fondu-plein)));
}

.pb-fondu-droite {
	-webkit-mask-image: linear-gradient(90deg, #000 calc(100% - var(--pb-fondu-net)), transparent calc(100% - var(--pb-fondu-plein)));
	mask-image: linear-gradient(90deg, #000 calc(100% - var(--pb-fondu-net)), transparent calc(100% - var(--pb-fondu-plein)));
}

/* Bandeau de logos (Carrousel d'images en défilement continu) : transition linéaire, sinon chaque logo accélère
   puis freine. */
.pb-logos .swiper-wrapper {
	transition-timing-function: linear !important;
	align-items: center;
}

.pb-logos .swiper-slide {
	display: flex;
	align-items: center;
	justify-content: center;
}

/* ==========================================================================
   Cartes et images
   ========================================================================== */
.elementor-loop-container .e-loop-item,
.swiper-slide .e-loop-item,
.e-loop-item > .e-con {
	height: 100%;
}

/* Image zoomée au survol : le cadre coupe, avec le même rayon que l'image (widget() de la lib les recopie), sinon
   les coins redeviennent carrés pendant le zoom. isolation : Safari perd l'arrondi pendant la transition. */
.pb-zoom,
.pb-zoom > .elementor-widget-container {
	overflow: hidden;
	isolation: isolate;
}

.pb-zoom img {
	transition: transform .6s cubic-bezier(.2, .7, .2, 1);
}

.pb-carte:is(:hover, :focus-within) .pb-zoom img {
	transform: scale(1.04);
}

@media (prefers-reduced-motion: reduce) {
	.pb-zoom img {
		transition: none;
	}
}

/* Image liée : le lien inline-block réduirait l'image. */
.elementor-widget-image a {
	display: block;
}

/* Boutons : la couleur du texte du Kit pose aussi fill sur .elementor-button ; l'icône SVG suit le texte. */
.elementor-button .elementor-button-icon svg {
	fill: currentColor;
}

/* ==========================================================================
   Textes repliés « Voir plus » (extension Fold Content, cartes d'avis) : le bouton est un lien, comme « En savoir
   plus » des cartes, jamais le bouton du Kit (ses styles visent tous les <button> et passent devant ceux de
   l'extension : fond plein, capitales). Couleurs : réglages du widget, sinon l'accent.
   ========================================================================== */
.lwfc .lwfc__btn,
.lwfc .lwfc__btn:is(:hover, :focus, :focus-visible, :active) {
	min-height: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	background: var(--lwfc-btn-bg, transparent);
	text-transform: none;
	letter-spacing: normal;
}

.lwfc .lwfc__btn {
	color: var(--lwfc-btn-color, var(--pb-accent));
}

.lwfc .lwfc__btn:is(:hover, :focus-visible) {
	color: var(--lwfc-btn-color-hover, var(--pb-accent-survol));
}

/* ==========================================================================
   Sommaire d'article (.pb-sommaire dans .pb-colonne-sommaire) : collé sous le menu en desktop seulement.
   ========================================================================== */
.pb-sommaire .elementor-toc__list-item-text-wrapper::before {
	display: none;
}

@media (min-width: 1025px) {
	.pb-colonne-sommaire {
		align-self: stretch;
	}

	.pb-colonne-sommaire > .pb-sommaire {
		position: sticky;
		top: calc(var(--nav-height) + var(--nav-gap));
	}
}

/* Ancre du sommaire, déplacée dans son titre par socle.js : un bloc de hauteur nulle, aligné sur le haut du titre. */
.elementor-widget-theme-post-content .elementor-menu-anchor {
	display: block;
	height: 0;
}

/* ==========================================================================
   Textes et accessibilité
   ========================================================================== */
/* Retours à la ligne forcés de la maquette desktop : ignorés en mobile. */
@media (max-width: 767px) {
	.elementor-widget-heading .elementor-heading-title br {
		display: none;
	}
}

a:focus-visible,
button:focus-visible,
.elementor-button:focus-visible {
	outline: 2px solid var(--pb-accent);
	outline-offset: 3px;
}

.screen-reader-text:focus {
	z-index: 100000;
}
