
.community-map-section {
    height: 180vh;
}

.community-map-stage {
    height: 100vh;

    --community-panel-width: 320px;
}
/* `inset` posé ici et non par les utilitaires `top-0 start-0 …` : ceux de Bootstrap
   sont en `!important`, et GSAP, qui écrit en style inline, ne peut pas les
   surcharger — le cadre restait alors figé et les boutons à moitié masqués. */
.community-map-frame {
    inset: 0;
    pointer-events: none;
}

.community-map-controls,
.community-map-legend,
.community-map-panel {
    pointer-events: auto;
}
.community-map-overlay {
    z-index: 1001;
}
/* Position de repos : juste sous le bord haut de la carte. */
.community-map-controls {
    top: 1rem;
    transition: top 0.3s ease, transform 0.3s ease;
}

/* Le décalage sous la navbar n'a de sens QUE si les deux conditions sont réunies :
   la carte est collée en haut de l'écran (`is-pinned`, posé par community-map.js) et
   la navbar est effectivement affichée. Sinon elle ne recouvre rien, et l'écart n'est
   que de l'espace perdu. Le sélecteur `:has` suit le motif de `.sticky-column-offnav`
   dans global.css. */
body:has(.navbar:not(.navbar-hidden)) .community-map-stage.is-pinned .community-map-controls {
    top: calc(var(--nav-height) + var(--nav-offset, 0px) + 0.5rem);
}

/* Légende : sous les panneaux, et raccourcie quand l'un d'eux est ouvert pour ne pas
   courir dessous. Positions posées ici et non via `bottom-0 start-0 end-0` : ces
   utilitaires sont en `!important` et bloqueraient le décalage. */
.community-map-legend {
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 999;
    transition: left 0.3s ease;
}

@media (min-width: 576px) {
    .community-map-legend.is-shifted {
        left: var(--community-panel-width);
    }
}
@media (min-width: 576px) {
    .community-map-controls.is-shifted {
        transform: translateX(var(--community-panel-width));
    }
}
.community-map-panel.offcanvas {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    height: auto;
    width: var(--community-panel-width);
    max-width: 85%;
    z-index: 1000;
    border-right: 0;
}

/* Fiche tenue par une personne (saisie directement, ou reprise par son association)
   par opposition à une fiche simplement issue de l'open data. Double anneau : le
   blanc détache la pastille du fond de carte, le vert porte la distinction — un
   anneau d'une seule couleur disparaîtrait sur les pastilles de la même teinte. */
.community-pin-claimed {
    box-shadow:
        0 0 0 2px rgba(var(--bs-light-rgb), 0.95),
        0 0 0 4px rgba(var(--primary-rgb), 0.75);
}
