/* carte-osm.css — habillage de la carte (v0, extrait de C2i info).
   Tout est préfixé par .carte-osm : la feuille de Leaflet est injectée APRÈS celle du site (chargement
   différé), donc à spécificité égale c'est Leaflet qui gagne. Le préfixe règle ça sans !important.
   Les six variables ci-dessous sont le seul endroit où vit la palette : les mapper sur la charte du
   client (design.md), ne rien écrire en dur plus bas. */
.carte-osm{
  --co-fort:#0a4d78;        /* contours, points, libellés */
  --co-zone:#009fe0;        /* remplissage des zones (26 % d'opacité) */
  --co-accent:#8bc53f;      /* le point mis en avant */
  --co-sur-accent:#0b2540;  /* pictogramme posé sur l'accent */
  --co-encre:#1b2a3a;       /* texte des bulles et de la légende */
  --co-blanc:#fff;
  --co-police:inherit;
  --co-police-titre:inherit;
  margin:0;background:var(--co-blanc);border-radius:14px;padding:8px;box-shadow:0 26px 50px -26px rgba(0,0,0,.6)
}
/* hauteur explicite obligatoire (un conteneur Leaflet sans hauteur fait 0 px) ; isolation:isolate
   enferme les z-index 400/1000 de Leaflet, qui passeraient sinon sur le menu et les fenêtres du site */
.carte-osm .co-map{height:460px;border-radius:9px;background:#eef2f5;font-family:var(--co-police);isolation:isolate}
/* fonds : les tuiles OSM ne se redessinent pas, elles se filtrent. Deux réglages en option, à juger
   à l'œil avec le client (classe à poser sur la figure) ; sans classe = couleurs OSM d'origine. */
.carte-osm.co-fond-doux .leaflet-tile-pane{filter:saturate(.45) brightness(1.06)}
.carte-osm.co-fond-teinte .leaflet-tile-pane{filter:hue-rotate(38deg) saturate(.6) brightness(1.04)}
.carte-osm figcaption{display:flex;flex-wrap:wrap;gap:6px 18px;padding:10px 8px 4px;font:600 13px/1.3 var(--co-police);color:var(--co-encre)}
.carte-osm .co-lg{display:inline-flex;align-items:center;gap:8px}
.carte-osm .co-lg::before{content:"";flex:none;width:14px;height:14px}
.carte-osm .co-lg-phare::before{border-radius:50%;background:var(--co-accent);box-shadow:0 0 0 3px var(--co-blanc),0 0 0 4px var(--co-fort)}
.carte-osm .co-lg-zone::before{border-radius:3px;background:color-mix(in srgb,var(--co-zone) 26%,transparent);border:2px solid var(--co-fort)}
.carte-osm .co-lg-ville::before{width:10px;height:10px;margin:0 2px;border-radius:50%;background:var(--co-fort);box-shadow:0 0 0 2px var(--co-blanc),0 0 0 3px var(--co-fort)}
/* le point mis en avant : pastille + halo pulsé */
.carte-osm .co-phare{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--co-accent);color:var(--co-sur-accent);font-size:19px;border:3px solid var(--co-blanc);box-shadow:0 0 0 3px var(--co-fort),0 8px 18px rgba(11,37,64,.45)}
.carte-osm .co-phare::after{content:"";position:absolute;inset:-12px;border-radius:50%;border:3px solid var(--co-accent);opacity:0;animation:co-pulse 2.4s ease-out infinite}
@keyframes co-pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(1.35);opacity:0}}
@media(prefers-reduced-motion:reduce){.carte-osm .co-phare::after{animation:none;opacity:.6}}
/* libellés permanents : texte nu cerné de blanc, lisible sur le fond OSM en couleurs */
.carte-osm .leaflet-tooltip.co-label{background:transparent;border:0;box-shadow:none;padding:0 0 0 2px;font:700 14px/1.2 var(--co-police);color:var(--co-fort);text-shadow:0 0 3px var(--co-blanc),0 0 3px var(--co-blanc),0 0 3px var(--co-blanc)}
.carte-osm .leaflet-tooltip.co-label.co-principale{font-size:16px;font-weight:800}
.carte-osm .leaflet-tooltip.co-label.co-label-phare{font-size:16px;font-weight:800}
.carte-osm .leaflet-tooltip.co-commune{background:transparent;border:0;box-shadow:none;padding:0 0 0 1px;font:700 11px/1.2 var(--co-police);color:var(--co-fort);text-shadow:0 0 2px var(--co-blanc),0 0 2px var(--co-blanc),0 0 3px var(--co-blanc),0 0 3px var(--co-blanc)}
.carte-osm .leaflet-tooltip.co-label::before,.carte-osm .leaflet-tooltip.co-commune::before{display:none}
.carte-osm .co-zone-nom{font:800 12px/1.1 var(--co-police);letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb,var(--co-fort) 85%,transparent);white-space:nowrap;text-align:center;pointer-events:none;text-shadow:0 0 3px var(--co-blanc),0 0 3px var(--co-blanc),0 0 4px var(--co-blanc)}
/* bulles : pas de <p>/<h3> dedans (les styles de section du site les recoloreraient), <strong> + <br> */
.carte-osm .leaflet-popup-content{font:14px/1.45 var(--co-police);color:var(--co-encre);margin:12px 14px}
.carte-osm .leaflet-popup-content strong{display:block;font-family:var(--co-police-titre);font-size:15px;margin-bottom:2px}
.carte-osm .leaflet-popup-content a{font-weight:700}
/* ---- points datés (v1) : un losange par lieu, compteur dedans. Le losange est un carré tourné de 45° ;
   le chiffre est redressé. Cerne blanc : le point reste lisible sur n'importe quelle couleur du fond OSM. */
.carte-osm .co-pt-ico{background:none;border:0}
.carte-osm .co-pt{display:grid;place-items:center;width:70.7%;height:70.7%;margin:14.65%;rotate:45deg;background:var(--co-fort);border:2px solid var(--co-blanc);box-shadow:0 2px 6px rgba(0,0,0,.45);transition:background-color .15s,scale .15s}
.carte-osm .co-pt b{rotate:-45deg;font:700 13px/1 var(--co-police-titre);color:var(--co-blanc)}
.carte-osm .co-pt-ico:hover .co-pt,.carte-osm .co-pt-ico.co-actif .co-pt{background:var(--co-accent);border-color:var(--co-fort);scale:1.12}
.carte-osm .co-pt-ico:hover .co-pt b,.carte-osm .co-pt-ico.co-actif .co-pt b{color:var(--co-sur-accent)}
.carte-osm .co-pt-ico:focus-visible{outline:0}
.carte-osm .co-pt-ico:focus-visible .co-pt{outline:3px solid var(--co-accent);outline-offset:3px}
@media(prefers-reduced-motion:reduce){.carte-osm .co-pt{transition:none}}
/* le nom de la ville, posé à côté du losange quand il a la place : texte nu cerné de blanc */
.carte-osm .co-nom{background:none;border:0;pointer-events:none;font:700 12px/16px var(--co-police);color:var(--co-fort);white-space:nowrap;text-shadow:0 0 2px var(--co-blanc),0 0 2px var(--co-blanc),0 0 3px var(--co-blanc),0 0 4px var(--co-blanc)}
.carte-osm .co-nom-d{text-align:left}
.carte-osm .co-nom-g{text-align:right}
.carte-osm .co-nom-b,.carte-osm .co-nom-h{text-align:center}
/* la signature de l'auteur dans la ligne de crédits : même taille, même discrétion */
.carte-osm .leaflet-control-attribution .co-signature{font-weight:600}
.carte-osm .co-lg-pt::before{width:10px;height:10px;margin:0 3px;rotate:45deg;background:var(--co-fort);box-shadow:0 0 0 2px var(--co-blanc),0 0 0 3px var(--co-fort)}
.carte-osm .leaflet-popup-content{max-height:270px;overflow:auto}
.carte-osm .leaflet-popup-content .co-dates{list-style:none;margin:6px 0 0;padding:0}
.carte-osm .leaflet-popup-content .co-dates + strong{margin-top:12px;padding-top:10px;border-top:2px solid var(--co-fort)}
.carte-osm .leaflet-popup-content .co-dates li{padding:6px 0;border-top:1px solid color-mix(in srgb,var(--co-fort) 18%,transparent)}
.carte-osm .leaflet-popup-content .co-dates time{display:block;font-size:12px;font-weight:600;opacity:.8}
.carte-osm .leaflet-popup-content .co-dates a,.carte-osm .leaflet-popup-content .co-dates b{display:block;font-family:var(--co-police-titre);font-weight:700;color:var(--co-fort)}
.carte-osm .leaflet-popup-content .co-dates span{display:block;font-size:13px}
.carte-osm .co-repli{display:grid;place-items:center;height:100%;font-weight:700}
@media(max-width:900px){.carte-osm .co-map{height:380px}.carte-osm figcaption{justify-content:center}}
@media(max-width:560px){.carte-osm .co-map{height:320px}.carte-osm .leaflet-tooltip.co-label{font-size:13px}.carte-osm .co-zone-nom{font-size:10px;letter-spacing:.1em}}
