.lm-region-map {
    --lm-orange: #f7a600;
    --lm-pin-antenne: url(../../../assets/images/pins-antenne.svg);
    --lm-pin-organisation: url(../../../assets/images/pins-organisation.svg);

    --lm-map-veil: #dfecf4;

    padding-block: var(--gap3);
}

.lm-region-map .heading {
    color: var(--primary-400);
    font: 700 clamp(40px, calc(2.5rem + ((1vw - 3.75px) * 3.2864)), 75px) / 1 var(--f1), sans-serif;
    text-align: center;
    text-wrap: balance;
    margin-bottom: var(--gap3);
}

.lm-region-map .filters {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gap1);
    margin-bottom: var(--gap2);
}

.lm-region-map .facet-filter .facetwp-facet {
    margin-bottom: 0;
}

.lm-region-map .facet-filter .facetwp-facet-reinitialiser {
    height: 44px;
    display: flex;
    align-items: center;
}

.lm-region-map .facet-filter .facetwp-dropdown {
    min-width: 220px;
    height: 46px;
    padding-inline: 16px;
    border: 1px solid var(--tertiary-400);
    border-radius: 4px;
    background: var(--white);
    color: var(--primary-400);
    font: 500 16px/1 var(--f1), sans-serif;
}

.lm-region-map .facet-filter .fs-wrap {
    min-width: 220px;
}

.lm-region-map .facet-filter .fs-label-wrap {
    height: 44px;
    padding-inline: 16px;
    display: flex;
    align-items: center;
    border: 1px solid var(--tertiary-400);
    border-radius: 4px;
    background: var(--white);
    color: var(--primary-400);
    font: 500 16px/1 var(--f1), sans-serif;
}

.lm-region-map .facet-filter .fs-label-wrap .fs-label {
    padding: 0;
    color: inherit;
    font: inherit;
}

.lm-region-map .facet-filter .fs-dropdown {
    border-color: var(--tertiary-400);
    border-radius: 0 0 4px 4px;
    font: 500 16px/1 var(--f1), sans-serif;
}

.lm-region-map .facet-filter .fs-option .fs-option-label {
    font-size: 12px;
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.3;
}

.lm-region-map .layout {
    display: grid;
    grid-template-columns: 380px 1fr;
    gap: var(--gap2);
    align-items: start;
}

.lm-region-map .layout:has(.liste.is-collapsed) {
    grid-template-columns: 1fr;
}

.lm-region-map .map-wrap {
    position: relative;
    isolation: isolate;
}

.lm-region-map .map {
    width: 100%;
    height: 70vh;
    min-height: 420px;
    border-radius: 12px;
    overflow: hidden;
    background: var(--lm-map-veil);
}

.lm-region-map .map-skeleton {
    position: absolute;
    inset: 0;
    z-index: 1;
    border-radius: 12px;
    overflow: hidden;
    background: var(--grey-50);
    background-image: linear-gradient(100deg, transparent 30%, rgba(255, 255, 255, 0.6) 50%, transparent 70%);
    background-size: 200% 100%;
    animation: lm-shimmer 1.4s ease-in-out infinite;
    transition: opacity var(--lm-duration-slow) ease;
}

.lm-region-map .map-skeleton.is-done {
    opacity: 0;
    pointer-events: none;
}

.lm-region-map .map-skeleton[hidden] {
    display: none;
}

@keyframes lm-shimmer {

    from {
        background-position: 150% 0;
    }

    to {
        background-position: -50% 0;
    }
}

.lm-region-map .list-toggle {
    position: absolute;
    z-index: 999;
    inset: 12px auto auto 12px;
    display: flex;
    align-items: center;
    gap: 4px;
    height: 36px;
    padding-inline: 8px;
    border: 0;
    border-radius: 4px;
    background: var(--white);
    color: var(--primary-400);
    box-shadow: 0 1px 4px rgba(8, 27, 44, 0.25);
    cursor: pointer;
}

.lm-region-map .list-toggle svg {
    flex: none;
    width: 20px;
    height: 20px;
}

.lm-region-map .list-toggle .icon-arrow {
    width: 14px;
    height: 14px;
    transition: transform var(--transition, 0.3s ease);
}

.lm-region-map .list-toggle[aria-expanded="false"] .icon-arrow {
    transform: rotate(180deg);
}

.lm-region-map .leaflet-popup-content-wrapper {
    border-radius: 8px;
}

/* Noms en français posés sur le fond CARTO sans libellés (drawPlaceLabels) */
.lm-region-map .lm-map-label span {
    position: absolute;
    white-space: nowrap;
    pointer-events: none;
}

.lm-region-map .lm-map-label.is-departement span {
    transform: translate(-50%, -50%);
    color: var(--primary-400);
    font: 700 11px/1 var(--f1), sans-serif;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.55;
}

.lm-region-map .lm-map-label.is-ville span {
    transform: translate(-50%, 5px);
    color: var(--grey-600);
    font: 500 12px/1 var(--f1), sans-serif;
    text-shadow: 0 0 3px var(--white), 0 0 3px var(--white), 0 0 3px var(--white);
}

.lm-region-map .lm-map-label.is-ville::before {
    content: "";
    position: absolute;
    width: 5px;
    height: 5px;
    margin: -2.5px 0 0 -2.5px;
    border-radius: 50%;
    background: var(--grey-600);
}

.lm-region-map .leaflet-control-zoom {
    border: 0;
    box-shadow: 0 1px 4px rgba(8, 27, 44, 0.25);
}

.lm-region-map .leaflet-control-zoom a {
    color: var(--primary-400);
}

.lm-region-map .marker-pin,
.lm-region-map .marker-dept {
    display: block;
    width: 20px;
    height: 27px;
    border: 0;
    background: var(--lm-pin-antenne) no-repeat center / contain;
    filter: drop-shadow(0 1px 3px rgba(8, 27, 44, 0.35));
    opacity: 1;

    transform-origin: 50% 100%;
    transition: transform var(--lm-duration-fast) ease, filter var(--lm-duration-fast) ease, opacity var(--lm-duration-fast) ease;
}

.lm-region-map .marker-pin.is-entering,
.lm-region-map .marker-dept.is-entering {
    animation: lm-pin-in var(--lm-duration) var(--lm-ease-out) var(--lm-pin-delay, 0ms) both;
}

.lm-region-map .marker-pin.is-leaving,
.lm-region-map .marker-dept.is-leaving {
    opacity: 0;
    transform: scale(0.6);
}

@keyframes lm-pin-in {

    from {
        opacity: 0;
        transform: translateY(-12px) scale(0.6);
    }
}

.lm-region-map .marker-dept {
    background-image: var(--lm-pin-organisation);
}

.lm-region-map .marker-pin.is-highlighted,
.lm-region-map .marker-dept.is-highlighted {
    transform: scale(1.3);
    filter: drop-shadow(0 0 0 3px rgba(247, 166, 0, 0.35)) drop-shadow(0 2px 6px rgba(8, 27, 44, 0.4));
    opacity: 1;
}

.lm-region-map .marker-pin.is-dimmed,
.lm-region-map .marker-dept.is-dimmed {
    opacity: 0.7;
}

.lm-region-map .marker-cluster-lm {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--primary-400);
    color: var(--white);
    font: 700 13px/1 var(--f1), sans-serif;
    box-shadow: 0 1px 4px rgba(8, 27, 44, 0.35);
}

.lm-region-map .liste {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-height: 70vh;
    min-height: 420px;
    overflow-y: auto;
    scrollbar-gutter: stable;
    padding-right: 4px;

    --lm-liste-gap: 14px;
    --lm-liste-fade: 24px;
}

/* Dégradés blancs en haut/bas de la zone qui scrolle : sticky plutôt
   qu'absolute, la liste étant elle-même le conteneur de scroll. La marge
   négative annule leur hauteur et le gap du flex. */
.lm-region-map .liste::before,
.lm-region-map .liste::after {
    content: "";
    position: sticky;
    z-index: 2;
    flex-shrink: 0;
    height: var(--lm-liste-fade);
    pointer-events: none;
}

.lm-region-map .liste::before {
    top: 0;
    margin-bottom: calc(-1 * (var(--lm-liste-fade) + var(--lm-liste-gap)));
    background: linear-gradient(var(--white), transparent);
}

.lm-region-map .liste::after {
    bottom: 0;
    margin-top: calc(-1 * (var(--lm-liste-fade) + var(--lm-liste-gap)));
    background: linear-gradient(transparent, var(--white));
}

/* Chaque dégradé s'efface en bout de course pour ne pas recouvrir le titre
   de la liste (en haut) ni la dernière vignette (en bas). Sans scroll-driven
   animations, on retire celui du haut. */
@supports (animation-timeline: scroll()) {

    .lm-region-map .liste::before {
        animation: lm-liste-fade-in linear both;
        animation-timeline: scroll();
        animation-range: 0 var(--lm-liste-fade);
    }

    .lm-region-map .liste::after {
        animation: lm-liste-fade-out linear both;
        animation-timeline: scroll();
        animation-range: calc(100% - var(--lm-liste-fade)) 100%;
    }
}

@supports not (animation-timeline: scroll()) {

    .lm-region-map .liste::before {
        display: none;
    }
}

@keyframes lm-liste-fade-in {

    from {
        opacity: 0;
    }
}

@keyframes lm-liste-fade-out {

    to {
        opacity: 0;
    }
}

.lm-region-map .liste > .facetwp-template {
    transition: opacity var(--lm-duration-fast) ease;
}

.lm-region-map .liste.is-refreshing > .facetwp-template {
    opacity: 0.45;
    pointer-events: none;
}

.lm-region-map .liste.is-pending :is(.card-membre, .liste-section-head, .loading) {
    opacity: 0;
}

.lm-region-map .liste.is-entering :is(.card-membre, .liste-section-head, .loading) {
    animation: lm-item-in var(--lm-duration) var(--lm-ease-out) calc(var(--lm-i, 0) * var(--lm-stagger)) both;
}

@keyframes lm-item-in {

    from {
        opacity: 0;
        translate: 0 10px;
    }
}

.lm-region-map .liste.is-collapsed {
    display: none;
}

.lm-region-map .card-membre.is-out-of-view,
.lm-region-map .liste-section-head.is-out-of-view {
    display: none;
}

.lm-region-map .liste .loading {
    margin: 0;
    color: var(--grey-400);
    font-size: 14px;
}

.lm-region-map .liste-section-head {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.lm-region-map .liste-section-head.is-remote {
    margin-top: 10px;
}

.lm-region-map .liste-section-head .title {
    display: flex;
    align-items: flex-start;
    gap: 4px;
    padding-inline: 4px;
    margin: 0;
    font: 700 20px/1.2 var(--f1), sans-serif;
    color: var(--grey-700);
}

.lm-region-map .liste-section-head.is-remote .title {
    margin-top: 52px;
}

.lm-region-map .summary-depts img {
    flex: none;
    width: 12px;
    height: 13px;

    margin-top: 3.5px;
}

.lm-region-map .liste-section-head .desc {
    margin: 0 0 16px;
    font: 300 italic 13px/1.2 var(--f1), sans-serif;
    color: var(--grey-600);
}

.lm-region-map .card-membre {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 16px;
    border: 1px solid rgba(148, 147, 200, 0.5);
    border-radius: 8px;
    background: rgba(148, 147, 200, 0.2);
    scroll-margin-block: 16px;
    transition: background-color var(--transition, 0.3s ease), border-color var(--transition, 0.3s ease), box-shadow var(--transition, 0.3s ease);
}

.lm-region-map .card-membre + .card-membre {
    margin-top: 16px;
}

.lm-region-map .card-membre.is-summary {
    cursor: pointer;
}

.lm-region-map .card-membre.is-highlighted {
    background: rgba(247, 166, 0, 0.2);
    border-color: rgba(247, 166, 0, 0.5);
    box-shadow: 0 6px 12px rgba(49, 40, 124, 0.3);
}

.lm-region-map .card-membre .header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}

.lm-region-map .card-membre .header .nom-membre {
    flex: 1 0 0;
    margin: 0;
    font: 700 15px/1.2 var(--f1), sans-serif;
    color: var(--grey-700);
}

.lm-region-map .card-membre .card-toggle {
    flex: none;
    width: 32px;
    height: 18px;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
    color: var(--primary-400);
    transition: transform var(--transition, 0.3s ease);
}

.lm-region-map .card-membre.is-open .card-toggle {
    transform: rotate(180deg);
}

.lm-region-map .card-membre .antenne-bloc {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.lm-region-map .card-membre .antenne-bloc:not(:last-child) {
    padding-bottom: 15px;
}

.lm-region-map .card-membre .antenne-bloc + .antenne-bloc {
    padding-top: 16px;
    border-top: 1px solid var(--tertiary-400);
}

.lm-region-map .card-membre .badges {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}

.lm-region-map .card-membre.is-open .antenne-bloc.summary {
    display: none;
}

.lm-region-map .badge {
    display: inline-flex;
    align-items: center;
    height: 23px;
    padding: 4px 8px;
    border-radius: 4px;
    font: 600 12px/normal var(--f1), sans-serif;
    white-space: nowrap;
}

.lm-region-map .badge.badge-nom-siege {
    color: var(--primary-400);
    background: var(--lm-orange);
    border: 1px solid var(--lm-orange);
}

.lm-region-map .badge.badge-nom-groupe {
    color: var(--white);
    background: var(--primary-400);
    border: 1px solid var(--primary-400);
}

.lm-region-map .badge.badge-dept {
    color: var(--primary-400);
    background: var(--white);
    border: 1px solid var(--tertiary-400);
}

.lm-region-map .summary-depts {
    display: flex;
    align-items: flex-start;
    gap: 4px;
    margin: 0;
    font: 14px/1.4 var(--f1), sans-serif;
    color: var(--primary-400);
}

.lm-region-map .summary-depts strong {
    font-weight: 600;
}

.lm-region-map .contact-info {
    display: flex;
    flex-direction: column;
}

.lm-region-map .info-line {
    display: flex;
    align-items: flex-start;
    gap: 4px;
    min-height: 20px;
    margin: 0;
    font: 14px/1.4 var(--f1), sans-serif;
    color: var(--primary-400);
}

.lm-region-map .info-line svg {
    flex: none;
    width: 14px;
    height: 14px;

    margin-top: 3px;
}

.lm-region-map .info-line .info-link {
    color: inherit;
    text-decoration: none;
    overflow-wrap: anywhere;
}

.lm-region-map .info-line img {
    flex: none;
    width: 12px;
    height: 13px;

    margin-top: 3.5px;
}

.lm-region-map .liste-section-head .title img {
    flex: none;
    width: 12px;
    height: 17px;

    margin-top: 3.5px;
}

.lm-region-map .external-link {
    display: flex;
    justify-content: flex-end;
}

.lm-region-map .external-link a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 23px;
    padding: 4px 8px;
    border-radius: 4px;
    background: rgba(49, 40, 124, 0.7);
    color: var(--white);
    font: 500 10px/normal var(--f1), sans-serif;
    text-decoration: none;
    white-space: nowrap;
}

.lm-region-map .external-link svg {
    flex: none;
    width: 12px;
    height: 12px;
}

/* Popup d'un pin antenne (antennePopup) : logo à gauche, badge, email et lien à droite */
.lm-region-map .popup-antenne-wrap .leaflet-popup-content-wrapper {
    padding: 0;
    border-radius: 7px;
}

.lm-region-map .popup-antenne-wrap .leaflet-popup-content {
    margin: 0;
}

.lm-region-map .popup-antenne {
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: 100px;
    padding: 12px 18px 14px 14px;
    font-family: var(--f1), sans-serif;
}

.lm-region-map .popup-antenne .visual {
    flex: none;
    width: 64px;
}

.lm-region-map .popup-antenne .visual img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 52px;
    object-fit: contain;
}

.lm-region-map .popup-antenne .content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    min-width: 0;
}

/* Nom trop long : tronqué à la largeur de .content (nom complet dans le title) */
.lm-region-map .popup-antenne .badge {
    display: block;
    box-sizing: border-box;
    max-width: 100%;
    height: 26px;
    margin-bottom: 4px;
    padding: 4px 8px;
    border: 1px solid var(--lm-orange);
    background: var(--lm-orange);
    color: var(--grey-700);
    font: 600 13px/16px var(--f1), sans-serif;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lm-region-map .popup-antenne .email {
    display: flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
    margin: 0;
    color: var(--primary-400);
    font: 400 13px/22px var(--f1), sans-serif;
}

.lm-region-map .popup-antenne .email svg {
    flex: none;
    width: 11px;
    height: 11px;
}

.lm-region-map .popup-antenne .email a {
    min-width: 0;
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lm-region-map .popup-antenne .more {
    color: var(--primary-400);
    font: 600 12px/normal var(--f1), sans-serif;
    text-decoration: none;
}

.lm-region-map .popup-antenne a:hover,
.lm-region-map .popup-antenne a:focus-visible {
    text-decoration: underline;
}

/* Explorateur mobile (lm-region-explorer.js) : sur desktop, le tiroir
   s'efface de la grille et ses commandes sont masquées. */
.lm-region-map .sheet {
    display: contents;
}

.lm-region-map :is(.explorer-bar, .sheet-head, .filters-head, .filters-foot, .preview, .map-wrap .explorer-open) {
    display: none;
}

/* Titres de section collants (page région, desktop et tiroir mobile) : on
   sait toujours si l'on parcourt les antennes ou les autres organisations.
   Hauteur commune (titre + deux lignes de description) pour que le second
   recouvre entièrement le premier en remontant. Le dégradé du haut passe
   sous le titre collant, celui de la liste n'a plus lieu d'être. Sur
   desktop, le titre déborde sur les 4px de padding droit de la liste. */
.lm-region-map.has-explorer {
    --lm-liste-head-h: 84px;
}

.lm-region-map.has-explorer .liste::before {
    display: none;
}

.lm-region-map.has-explorer .liste-section-head {
    position: sticky;
    top: 0;
    z-index: 3;
    box-sizing: border-box;
    min-height: var(--lm-liste-head-h);
    margin-right: -4px;
    padding: 12px 4px 0 0;
    background: var(--white);
}

.lm-region-map.has-explorer .liste-section-head::after {
    content: "";
    position: absolute;
    inset: 100% 0 auto;
    height: var(--lm-liste-fade);
    background: linear-gradient(var(--white), transparent);
    pointer-events: none;
}

.lm-region-map.has-explorer .liste-section-head.is-remote {
    margin-top: 48px;
}

.lm-region-map.has-explorer .liste-section-head.is-remote .title {
    margin-top: 0;
}

.lm-region-map.has-explorer .liste-section-head .desc {
    margin-bottom: 12px;
}

/* Fiche ciblée (pin touché) : elle s'arrête sous le titre collant et son
   dégradé, pas dessous. */
.lm-region-map.has-explorer .card-membre {
    scroll-margin-block: calc(var(--lm-liste-head-h) + var(--lm-liste-fade)) var(--lm-liste-fade);
}

@media (max-width: 1024px) {

    .lm-region-map .layout {
        grid-template-columns: 1fr;
    }

    .lm-region-map .liste {
        max-height: none;
        overflow-y: visible;
    }

    .lm-region-map:not(.lm-membre-map) .liste::before,
    .lm-region-map:not(.lm-membre-map) .liste::after {
        display: none;
    }

    /* Aperçu dans la page : carte non interactive, compteur, deux entrées
       vers l'explorateur. Filtres et liste n'apparaissent qu'en plein
       écran. La section se termine sur le bouton « Voir la liste » : pas
       de padding bas en plus. */
    .lm-region-map.has-explorer {
        padding-bottom: 0;

        --lm-sheet-peek: 136px;
        --lm-sheet-radius: 16px;
        --lm-sheet-gap: 8px;
        --lm-explorer-shadow: 0 1px 4px rgba(8, 27, 44, 0.25);
    }

    .lm-region-map.has-explorer :is(.filters, .sheet, .list-toggle) {
        display: none;
    }

    .lm-region-map.has-explorer .map {
        height: min(60svh, 440px);
        min-height: 0;
    }

    .lm-region-map.has-explorer .leaflet-control-zoom {
        display: none;
    }

    /* Seul le bouton est posé sur la carte : le reste de l'aperçu reçoit les
       gestes (un doigt fait défiler la page, deux doigts zooment, un appui
       ouvre l'explorateur — lm-region-explorer.js). */
    .lm-region-map.has-explorer .map-wrap .explorer-open {
        position: absolute;
        z-index: 1000;
        inset: auto auto var(--gap1) 50%;
        display: block;
        padding: 0;
        border: 0;
        border-radius: 50px;
        background: transparent;
        transform: translateX(-50%);
        cursor: pointer;
    }

    .lm-region-map.has-explorer .map-wrap .explorer-open .lm_button {
        box-shadow: var(--lm-explorer-shadow);
    }

    .lm-region-map.has-explorer .preview {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: var(--gap1);
        margin-top: var(--gap1);
    }

    .lm-region-map.has-explorer .preview-count {
        margin: 0;
        color: var(--primary-400);
        font: 600 16px/1.3 var(--f1), sans-serif;
        text-align: center;
    }

    .lm-region-map.has-explorer .bar-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        min-width: 44px;
        height: 44px;
        padding-inline: 12px;
        border: 0;
        border-radius: 22px;
        background: var(--white);
        color: var(--primary-400);
        font: 600 15px/1 var(--f1), sans-serif;
        box-shadow: var(--lm-explorer-shadow);
        cursor: pointer;
    }

    .lm-region-map.has-explorer .bar-btn svg {
        flex: none;
        width: 20px;
        height: 20px;
    }

    .lm-region-map.has-explorer .filters-count {
        display: inline-block;
        min-width: 20px;
        height: 20px;
        padding-inline: 5px;
        border-radius: 10px;
        background: var(--secondary-400);
        color: var(--primary-400);
        font: 700 12px/20px var(--f1), sans-serif;
        text-align: center;
    }

    .lm-region-map.has-explorer .filters-count[hidden] {
        display: none;
    }

    .lm-region-map.has-explorer .filters-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    .lm-region-map.has-explorer .filters-title {
        margin: 0;
        color: var(--primary-400);
        font: 700 22px/1.2 var(--f1), sans-serif;
    }

    .lm-region-map.has-explorer .filters-head .bar-btn {
        box-shadow: none;
    }

    .lm-region-map.has-explorer .facet-filter :is(.facetwp-dropdown, .fs-wrap) {
        width: 100%;
        min-width: 0;
    }

    .lm-region-map.has-explorer .facet-filter .fs-option .fs-option-label {
        font-size: 14px;
    }

    .lm-region-map.has-explorer .filters-foot {
        position: sticky;
        bottom: 0;
        display: block;
        margin: auto -16px 0;
        padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
        border-top: 1px solid var(--tertiary-400);
        background: var(--white);
    }

    .lm-region-map.has-explorer .filters-apply {
        justify-content: center;
        width: 100%;
        border: 0;
    }

    /* Explorateur plein écran : la section passe par-dessus la page, la
       carte s'arrête sous le bord du tiroir (--lm-map-bottom, posé en JS),
       le tiroir prend la hauteur de son cran (--lm-sheet-h). */
    .lm-explorer-open,
    .lm-explorer-open body {
        overflow: hidden;
    }

    /* Bouton flottant Axeptio (z-index maximal) : il recouvrait le tiroir.
       Masqué le temps de l'explorateur, de retour à la fermeture. */
    .lm-explorer-open #axeptio_overlay {
        display: none;
    }

    .lm-region-map.has-explorer.is-explorer {
        position: fixed;
        z-index: 100000;
        inset: 0;
        padding: 0;
        background: var(--lm-map-veil);
        overscroll-behavior: contain;
    }

    .lm-region-map.has-explorer.is-explorer :is(.heading, .preview, .map-wrap .explorer-open) {
        display: none;
    }

    .lm-region-map.has-explorer.is-explorer .explorer-bar {
        position: absolute;
        z-index: 1001;
        inset: calc(12px + env(safe-area-inset-top, 0px)) auto auto 12px;
        display: flex;
        gap: 8px;
    }

    .lm-region-map.has-explorer.is-explorer .map-wrap {
        position: absolute;
        inset: 0 0 var(--lm-map-bottom, 0);
    }

    .lm-region-map.has-explorer.is-explorer :is(.map, .map-skeleton) {
        height: 100%;
        border-radius: 0;
    }

    .lm-region-map.has-explorer.is-explorer .leaflet-control-zoom {
        display: block;
    }

    .lm-region-map.has-explorer.is-explorer[data-sheet="full"] .leaflet-control-zoom {
        visibility: hidden;
    }

    .lm-region-map.has-explorer.is-explorer .leaflet-top {
        top: calc(4px + env(safe-area-inset-top, 0px));
    }

    .lm-region-map.has-explorer.is-explorer .leaflet-bottom {
        bottom: var(--lm-sheet-radius);
    }

    .lm-region-map.has-explorer.is-explorer .sheet {
        position: absolute;
        z-index: 1002;
        inset: auto 0 0;
        display: flex;
        flex-direction: column;
        height: var(--lm-sheet-h, var(--lm-sheet-peek));
        border-radius: var(--lm-sheet-radius) var(--lm-sheet-radius) 0 0;
        background: var(--white);
        box-shadow: 0 -6px 18px rgba(26, 18, 92, 0.18);
        transition: height var(--lm-duration-fast) var(--lm-ease-out);
    }

    .lm-region-map.has-explorer.is-explorer.is-dragging .sheet {
        transition: none;
    }

    .lm-region-map.has-explorer.is-explorer .sheet-head {
        position: relative;
        flex: none;
        display: block;
        padding: 28px 16px 12px;
        touch-action: none;
        cursor: grab;
    }

    .lm-region-map.has-explorer.is-explorer .sheet-handle {
        position: absolute;
        inset: 0;
        width: 100%;
        padding: 0;
        border: 0;
        background: transparent;
        cursor: inherit;
    }

    .lm-region-map.has-explorer.is-explorer .sheet-handle::before {
        content: "";
        position: absolute;
        inset: 10px auto auto 50%;
        width: 40px;
        height: 4px;
        margin-left: -20px;
        border-radius: 2px;
        background: var(--tertiary-400);
    }

    .lm-region-map.has-explorer.is-explorer .sheet-count {
        margin: 0;
        color: var(--grey-700);
        font: 700 16px/1.3 var(--f1), sans-serif;
        pointer-events: none;
    }

    /* Dans le tiroir, la liste défile de nouveau : ses dégradés reviennent.
       Aucun padding vertical sur la liste : un élément sticky se cale sur
       le bord intérieur du padding, les dégradés flotteraient sinon au-dessus
       du bord réel. L'espace du bas passe sur le gabarit FacetWP, et les
       dégradés débordent sur le padding latéral pour couvrir toute la
       largeur. */
    .lm-region-map.has-explorer.is-explorer .liste {
        flex: 1 1 auto;
        min-height: 0;
        padding: 0 16px;
        overflow-y: auto;
        overscroll-behavior: contain;
        scrollbar-gutter: auto;
    }

    .lm-region-map.has-explorer.is-explorer .liste > .facetwp-template {
        padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    }

    .lm-region-map.has-explorer.is-explorer .liste::after {
        display: block;
        margin-inline: -16px;
    }

    /* Titres collants (voir plus haut) : dans le tiroir, ils débordent sur
       le padding latéral de 16px de la liste. */
    .lm-region-map.has-explorer.is-explorer .liste-section-head {
        margin-inline: -16px;
        padding-inline: 16px;
    }

    .lm-region-map.has-explorer.is-explorer.is-filters-open .filters {
        position: absolute;
        z-index: 1003;
        inset: 0;
        display: flex;
        flex-direction: column;
        flex-wrap: nowrap;
        gap: 12px;
        margin: 0;
        padding: calc(12px + env(safe-area-inset-top, 0px)) 16px 0;
        background: var(--white);
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}

@media (max-width: 782px) {

    /* Page région : la section garde son padding-top (aperçu de la carte
       sous le titre) ; l'explorateur plein écran a le sien, à 0. */
    .lm-region-map:not(.has-explorer) {
        padding-top: 0;
    }

    .lm-region-map .map {
        height: 60vh;
    }
}

@media (prefers-reduced-motion: reduce) {

    .lm-region-map .map-skeleton,
    .lm-region-map .marker-pin.is-entering,
    .lm-region-map .marker-dept.is-entering,
    .lm-region-map .liste.is-entering :is(.card-membre, .liste-section-head, .loading) {
        animation: none;
    }

    .lm-region-map.has-explorer.is-explorer .sheet {
        transition: none;
    }
}
