:root {
    --lpsa-focus-color: var(--e-global-color-primary, #003da5);
    --lpsa-focus-offset: 4px;
}

/* Focus clavier global, chargé après le thème et Elementor. */
body :where(
    a[href]:not([tabindex="-1"]),
    button:not([disabled]):not([tabindex="-1"]),
    input:not([disabled]):not([type="hidden"]):not([tabindex="-1"]),
    select:not([disabled]):not([tabindex="-1"]),
    textarea:not([disabled]):not([tabindex="-1"]),
    summary,
    [contenteditable="true"],
    [role="button"]:not([tabindex="-1"]),
    [role="link"]:not([tabindex="-1"]),
    [tabindex]:not([tabindex="-1"])
):focus-visible {
    outline: 2px solid var(--lpsa-focus-color) !important;
    outline-offset: var(--lpsa-focus-offset) !important;
}

/* Évite le double encadré produit par les pseudo-éléments du thème. */
body :where(
    a.btn,
    button.btn,
    .elementor-swiper-button
):focus-visible::before {
    opacity: 0 !important;
}

/* Classe utilitaire pour les informations destinées aux lecteurs d'écran. */
.lpsa-screen-reader-text {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    clip-path: inset(50%) !important;
    border: 0 !important;
    white-space: nowrap !important;
}

/* Lien d'évitement. Le sélecteur suivant masque aussi un éventuel cache de
   l'ancien lien anglais en attendant que le JavaScript le retire du DOM. */
body > a.skip-link.screen-reader-text:not(.lpsa-skip-link) {
    display: none !important;
}

.lpsa-skip-link {
    position: fixed;
    top: 16px;
    left: 16px;
    z-index: 100000;
    display: inline-block;
    padding: 12px 16px;
    border-radius: 9999px;
    color: #fff !important;
    background-color: var(--e-global-color-primary, #003da5);
    box-shadow: 0 4px 12px rgb(0 0 0 / 18%);
    font-family: var(--e-global-typography-e901459-font-family, Montserrat), sans-serif;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.15;
    text-decoration: none !important;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transform: translateY(calc(-100% - 24px));
    transition: opacity 150ms ease, transform 150ms ease;
}

.lpsa-skip-link:focus,
.lpsa-skip-link:focus-visible {
    color: #fff !important;
    background-color: var(--e-global-color-primary, #003da5);
    outline: 2px solid var(--lpsa-focus-color) !important;
    outline-offset: 4px !important;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.admin-bar .lpsa-skip-link {
    top: 48px;
}

#contenu-principal,
[data-lpsa-main-content] {
    scroll-margin-top: 120px;
}

/* Header : les variantes sticky, responsive et les panneaux hors écran ne
   doivent jamais conserver des contrôles actifs dans l'ordre de tabulation. */
.elementor-location-header .elementor-sticky__spacer,
[data-lpsa-sticky-header-hidden-aria],
[data-lpsa-primary-header-hidden-aria],
[data-lpsa-elementor-sticky-hidden-aria],
[data-lpsa-responsive-hidden-aria],
#menuhopin[aria-hidden="true"],
#menuSidebar[aria-hidden="true"],
#mainSearch[aria-hidden="true"],
.elementor-location-header .sub-menu[inert] {
    pointer-events: none !important;
}

.burger-menu .elementor-button,
.main-search-button .elementor-button,
#closeMenuSidebar .elementor-button,
#closeSearch .elementor-button {
    position: relative;
    z-index: 1;
    border-radius: 8px;
}

.burger-menu .elementor-button:focus-visible,
.main-search-button .elementor-button:focus-visible,
#closeMenuSidebar .elementor-button:focus-visible,
#closeSearch .elementor-button:focus-visible,
#menuSidebar a.elementor-item:focus-visible,
#menuSidebar a.elementor-sub-item:focus-visible {
    outline: 2px solid var(--lpsa-focus-color) !important;
    outline-offset: 4px !important;
}

#menuSidebar[role="dialog"],
#mainSearch[role="dialog"] {
    isolation: isolate;
}

/* Filtre d'actualités : style de survol repris au clavier et contour non
   rogné malgré l'overflow:hidden du conteneur Elementor publié. */
.wrapper-filter,
.wrapper-filter > .elementor-widget-container,
.wrapper-filter .e-filter,
[data-lpsa-filter-overflow] {
    overflow: visible !important;
}

.e-con:has(> .e-con-inner > .wrapper-filter) {
    overflow: visible !important;
}

.wrapper-filter .e-filter button.e-filter-item {
    position: relative;
}

.wrapper-filter .e-filter button.e-filter-item:focus-visible {
    z-index: 2;
    color: var(--e-filter-hover-text-color, var(--e-global-color-secondary, #008282)) !important;
    background-color: var(--e-filter-hover-background-color, var(--e-global-color-f8f6db8, #dff5f5)) !important;
    border-radius: var(--e-filter-item-border-radius, 8px);
    outline: 2px solid var(--lpsa-focus-color) !important;
    outline-offset: 4px !important;
    transition: none !important;
}

/* Le lien superposé reste l'unique arrêt clavier des cartes d'actualités. */
.item-actu > .e-con-inner > a[data-lpsa-card-link]:focus-visible {
    border-radius: 24px;
    outline: 2px solid var(--lpsa-focus-color) !important;
    outline-offset: -3px !important;
}

@supports selector(.item-actu:has(a:focus-visible)) {
    .item-actu:has(> .e-con-inner > a[data-lpsa-card-link]:focus-visible) {
        border-radius: 24px;
        outline: 2px solid var(--lpsa-focus-color) !important;
        outline-offset: 4px !important;
    }

    .item-actu > .e-con-inner > a[data-lpsa-card-link]:focus-visible {
        outline: none !important;
    }
}

a[data-lpsa-duplicate-card-link] {
    pointer-events: none;
}

/* Formulaires WPForms. */
body .wpforms-container .lpsa-required-label,
body div.wpforms-container-full .lpsa-required-label {
    margin-left: 4px;
    color: inherit !important;
    font-weight: 400 !important;
    font-style: italic;
}

body :where(
    .wpforms-form input:not([type="hidden"]),
    .wpforms-form select,
    .wpforms-form textarea
):focus-visible {
    outline: 2px solid var(--lpsa-focus-color) !important;
    outline-offset: 3px !important;
}

body .wpforms-container .wpforms-form .wpforms-submit-container button[type="submit"].wpforms-submit,
body div.wpforms-container-full .wpforms-form .wpforms-submit-container button[type="submit"].wpforms-submit {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

body .wpforms-container .wpforms-form .wpforms-submit-container button[type="submit"].wpforms-submit:focus,
body div.wpforms-container-full .wpforms-form .wpforms-submit-container button[type="submit"].wpforms-submit:focus {
    box-shadow: none !important;
}

body .wpforms-container .wpforms-form .wpforms-submit-container button[type="submit"].wpforms-submit:focus::after,
body div.wpforms-container-full .wpforms-form .wpforms-submit-container button[type="submit"].wpforms-submit:focus::after {
    display: none !important;
    content: none !important;
}

/* Restaure une seule checkbox native et neutralise le faux rond WPForms. */
body .wpforms-container .wpforms-form .wpforms-field-checkbox input[type="checkbox"],
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox input[type="checkbox"] {
    display: inline-block !important;
    width: 18px !important;
    min-width: 18px !important;
    height: 18px !important;
    margin: 2px 8px 0 0 !important;
    padding: 0 !important;
    border-radius: 3px !important;
    background-color: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
    accent-color: var(--e-global-color-secondary, #008282);
    appearance: checkbox !important;
    -webkit-appearance: checkbox !important;
    vertical-align: top;
}

body .wpforms-container .wpforms-form .wpforms-field-checkbox input[type="checkbox"]::before,
body .wpforms-container .wpforms-form .wpforms-field-checkbox input[type="checkbox"]::after,
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox input[type="checkbox"]::before,
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox input[type="checkbox"]::after {
    display: none !important;
    content: none !important;
}

body .wpforms-container .wpforms-form .wpforms-field-checkbox input[type="checkbox"]:focus,
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox input[type="checkbox"]:focus {
    box-shadow: none !important;
}

body .wpforms-container .wpforms-form .wpforms-field-checkbox input[type="checkbox"]:focus-visible,
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox input[type="checkbox"]:focus-visible {
    border-radius: 3px !important;
    outline: 2px solid var(--lpsa-focus-color) !important;
    outline-offset: 3px !important;
}

body .wpforms-container .wpforms-form .wpforms-field-checkbox .wpforms-field-label-inline a,
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox .wpforms-field-label-inline a {
    font-size: inherit !important;
    line-height: inherit !important;
}

body .wpforms-container .wpforms-form .wpforms-field-checkbox .wpforms-field-label-inline a:hover,
body .wpforms-container .wpforms-form .wpforms-field-checkbox .wpforms-field-label-inline a:focus-visible,
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox .wpforms-field-label-inline a:hover,
body div.wpforms-container-full .wpforms-form .wpforms-field-checkbox .wpforms-field-label-inline a:focus-visible {
    color: var(--e-global-color-secondary, #008282) !important;
    font-size: inherit !important;
    font-weight: 700 !important;
}

@media (max-width: 782px) {
    .admin-bar .lpsa-skip-link {
        top: 62px;
    }
}

@media (prefers-reduced-motion: reduce) {
    html:focus-within {
        scroll-behavior: auto !important;
    }

    .lpsa-skip-link {
        transition: none !important;
    }
}

@media (forced-colors: active) {
    body :where(
        a[href]:not([tabindex="-1"]),
        button:not([disabled]):not([tabindex="-1"]),
        input:not([disabled]):not([type="hidden"]):not([tabindex="-1"]),
        select:not([disabled]):not([tabindex="-1"]),
        textarea:not([disabled]):not([tabindex="-1"]),
        [role="button"]:not([tabindex="-1"]),
        [tabindex]:not([tabindex="-1"])
    ):focus-visible {
        outline-color: Highlight !important;
    }
}
