/* ===== P’tites Ondes V1.6 — MapLibre + OpenFreeMap vectoriel ===== */
.outings-map-shell{position:relative;border-radius:30px;overflow:hidden;background:#d9eef7;border:1px solid rgba(21,58,99,.08);box-shadow:0 18px 48px rgba(21,58,99,.12)}
.outings-map{height:540px;border:0;border-radius:0;box-shadow:none;background:#d9eef7}
.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 15px;background:linear-gradient(90deg,#f2fbfa,#fffaf3);border-bottom:1px solid rgba(21,58,99,.07)}
.map-toolbar-copy{min-width:0}.map-toolbar-copy strong{display:block;font-size:14px;line-height:1.2}.map-toolbar-copy span{display:block;margin-top:2px;color:#667f94;font-size:11px;font-weight:650}
.map-recenter{flex:0 0 auto;border:1px solid rgba(21,58,99,.10);background:#fff;color:var(--navy);border-radius:14px;padding:9px 12px;font:inherit;font-size:12px;font-weight:900;cursor:pointer;box-shadow:0 4px 12px rgba(21,58,99,.06)}
.map-recenter:hover{background:#e9f8f6}.map-recenter:focus-visible{outline:3px solid var(--turq);outline-offset:2px}
.map-badge{position:absolute;z-index:5;left:14px;bottom:14px;pointer-events:none;display:inline-flex;align-items:center;gap:7px;padding:8px 10px;border-radius:999px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);box-shadow:0 6px 18px rgba(21,58,99,.12);color:#557087;font-size:10px;font-weight:850}
.map-badge-dot{width:8px;height:8px;border-radius:50%;background:var(--turq);box-shadow:0 0 0 4px rgba(76,200,193,.17)}

/* MapLibre controls harmonisés avec l’univers P’tites Ondes. */
.outings-map .maplibregl-ctrl-top-left{top:2px;left:2px}
.outings-map .maplibregl-ctrl-group{border:0;box-shadow:0 8px 20px rgba(21,58,99,.13);background:transparent}
.outings-map .maplibregl-ctrl-group button{width:36px;height:36px;background-color:rgba(255,255,255,.96);border:0;color:var(--navy)}
.outings-map .maplibregl-ctrl-group button:first-child{border-radius:13px 13px 5px 5px}.outings-map .maplibregl-ctrl-group button:last-child{border-radius:5px 5px 13px 13px;margin-top:2px}
.outings-map .maplibregl-ctrl-group button:hover{background-color:#e9f8f6}
.outings-map .maplibregl-ctrl-attrib{margin:0 8px 7px 0;padding:3px 7px;border-radius:8px 0 0 0;background:rgba(255,255,255,.82);font-size:8px;color:#789}
.outings-map .maplibregl-ctrl-attrib a{color:#557087}
.outings-map .maplibregl-canvas:focus-visible{outline:3px solid rgba(76,200,193,.65);outline-offset:-3px}

/* Une seule silhouette d’épingle : sortie et regroupement ont exactement la même forme. */
.map-pin{appearance:none;-webkit-appearance:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;padding:0;border:3px solid rgba(255,255,255,.98);box-shadow:0 7px 18px rgba(21,58,99,.24);position:relative;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;color:#153a63;font-family:inherit;font-weight:950}
.map-pin::after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:8px;transform:translateX(-50%) rotate(45deg);background:inherit;border-right:2px solid #fff;border-bottom:2px solid #fff;border-radius:1px}
.map-pin span{position:relative;z-index:1;font-size:16px;line-height:1}.map-pin:hover,.map-pin:focus-visible{transform:translateY(-2px) scale(1.06);box-shadow:0 10px 22px rgba(21,58,99,.29);outline:none}
.marker-eveil{background:#4cc8c1}.marker-conte{background:#b8aaf1}.marker-spectacle{background:#ff7b70}.marker-atelier{background:#ffd166}.marker-concert{background:#aad8f5}
.map-pin-cluster{background:#7fd7d1}.map-pin-cluster span{font-size:13px;color:#153a63;letter-spacing:-.3px}.map-pin-cluster[aria-label^="100"] span{font-size:11px}

/* Popups : petites cartes P’tites Ondes, sans style cartographique générique. */
.outings-map .maplibregl-popup{z-index:7}
.outings-map .maplibregl-popup-content{padding:0;border-radius:20px;overflow:hidden;box-shadow:0 16px 42px rgba(21,58,99,.20);border:1px solid rgba(21,58,99,.07);min-width:245px;max-width:310px}
.outings-map .maplibregl-popup-tip{border-top-color:#fff!important}
.outings-map .maplibregl-popup-close-button{width:30px;height:30px;line-height:28px;margin:5px 5px 0 0;color:#648098;font-size:20px;border-radius:50%}
.outings-map .maplibregl-popup-close-button:hover{background:#edf7f6;color:var(--navy)}
.outing-popup{padding:15px 16px 14px;background:#fff}
.outing-popup-top{display:flex;align-items:flex-start;gap:10px}.outing-popup-emoji{width:36px;height:36px;flex:0 0 36px;border-radius:12px;display:grid;place-items:center;background:#e9f8f6;font-size:18px}
.outing-popup h3{margin:0;font-size:14px;line-height:1.25;color:var(--navy);letter-spacing:-.1px}.outing-popup-place{margin:5px 0 0!important;color:#60798f!important;font-size:11px!important;font-weight:750}
.outing-popup-meta{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 11px}.outing-popup-meta span{padding:5px 7px;border-radius:999px;background:#f1f8fa;color:#526f87;font-size:9px;font-weight:900}.outing-popup-meta span.age{background:#fff3d2;color:#765f24}
.outing-popup a{display:flex;align-items:center;justify-content:center;text-decoration:none;background:var(--navy);color:#fff!important;border-radius:11px;padding:9px 10px;font-size:10px;font-weight:900}

.legend-list{grid-template-columns:1fr!important}.dot-concert{background:#aad8f5}.legend-list .legend-emoji{width:19px;text-align:center;font-size:13px}

@media(max-width:900px){
  .outings-map{height:500px}.map-toolbar{padding:11px 13px}.legend-list{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:640px){
  .outings-map-shell{border-radius:22px}.outings-map{height:410px}.map-toolbar{align-items:flex-start}.map-toolbar-copy span{max-width:205px}.map-recenter{padding:8px 9px;font-size:10px}.map-badge{left:10px;bottom:10px;font-size:9px}.outings-map .maplibregl-ctrl-group{margin:10px}.outings-map .maplibregl-popup-content{min-width:220px}.legend-list{grid-template-columns:1fr 1fr!important}
}


/* ===== V1.6.8 — liste synchronisée avec la zone visible de la carte ===== */
.map-visible-panel{
  margin-top:16px;
  border:1px solid rgba(21,58,99,.08);
  border-radius:24px;
  overflow:hidden;
  background:rgba(255,255,255,.92);
  box-shadow:0 14px 34px rgba(21,58,99,.08);
}
.map-visible-heading{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:18px;
  padding:18px 20px 15px;
  background:linear-gradient(90deg,#f2fbfa 0%,#fffaf3 100%);
  border-bottom:1px solid rgba(21,58,99,.07);
}
.map-visible-kicker{
  display:block;
  margin-bottom:3px;
  color:#4b9f9a;
  font-size:10px;
  line-height:1;
  font-weight:950;
  letter-spacing:.10em;
  text-transform:uppercase;
}
.map-visible-heading h2{
  margin:0;
  color:var(--navy);
  font-size:20px;
  line-height:1.15;
}
.map-visible-heading p{
  margin:5px 0 0;
  color:#6d8293;
  font-size:11px;
  line-height:1.4;
  font-weight:650;
}
.map-visible-actions{
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:5px;
}
.map-visible-actions strong{
  color:var(--navy);
  font-size:13px;
  font-weight:950;
  white-space:nowrap;
}
.map-visible-actions a{
  color:#4b9f9a;
  font-size:10px;
  font-weight:900;
  text-decoration:none;
}
.map-visible-actions a:hover{text-decoration:underline}

.map-visible-list{
  max-height:350px;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  scrollbar-color:#b9dcd9 transparent;
}
.map-visible-row{
  width:100%;
  display:grid;
  grid-template-columns:48px 38px minmax(0,1fr) 24px;
  align-items:center;
  gap:10px;
  padding:11px 16px;
  border:0;
  border-bottom:1px solid rgba(21,58,99,.065);
  background:#fff;
  color:inherit;
  font:inherit;
  text-align:left;
  cursor:pointer;
  transition:background .15s ease,transform .15s ease;
}
.map-visible-row:last-child{border-bottom:0}
.map-visible-row:hover{background:#f4fbfa}
.map-visible-row:focus-visible{
  position:relative;
  z-index:1;
  outline:3px solid rgba(76,200,193,.45);
  outline-offset:-3px;
}
.map-visible-date{
  width:44px;
  height:44px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border-radius:14px;
  background:#fff2dd;
  color:#765f24;
  line-height:1;
}
.map-visible-date strong{font-size:17px;font-weight:950}
.map-visible-date span{
  margin-top:3px;
  font-size:9px;
  font-weight:900;
  text-transform:uppercase;
}
.map-visible-emoji{
  width:36px;
  height:36px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:#e9f8f6;
  font-size:17px;
}
.map-visible-copy{min-width:0;display:flex;flex-direction:column;gap:2px}
.map-visible-copy strong{
  overflow:hidden;
  color:var(--navy);
  font-size:12px;
  line-height:1.25;
  font-weight:900;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.map-visible-copy span{
  overflow:hidden;
  color:#5d7487;
  font-size:10px;
  line-height:1.25;
  font-weight:750;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.map-visible-copy small{
  overflow:hidden;
  color:#8395a3;
  font-size:9px;
  line-height:1.25;
  font-weight:750;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.map-visible-arrow{
  justify-self:end;
  color:#77bcb7;
  font-size:27px;
  line-height:1;
  font-weight:500;
}
.map-visible-empty{
  padding:20px;
  color:#6d8293;
  font-size:12px;
  font-weight:750;
  text-align:center;
  background:#fff;
}

@media(max-width:640px){
  .map-visible-panel{border-radius:20px}
  .map-visible-heading{align-items:flex-start;padding:15px 14px 13px}
  .map-visible-heading p{max-width:220px}
  .map-visible-actions{gap:4px}
  .map-visible-actions strong{font-size:11px}
  .map-visible-actions a{font-size:9px}
  .map-visible-list{max-height:310px}
  .map-visible-row{
    grid-template-columns:43px 34px minmax(0,1fr) 18px;
    gap:8px;
    padding:10px 11px;
  }
  .map-visible-date{width:40px;height:40px;border-radius:12px}
  .map-visible-date strong{font-size:15px}
  .map-visible-emoji{width:32px;height:32px;border-radius:10px;font-size:15px}
}


/* ===== V1.6.9 — explorateur responsive carte + sorties visibles ===== */
.map-explorer-layout{
  display:grid;
  grid-template-columns:minmax(310px,360px) minmax(0,1fr);
  grid-template-areas:"visible map";
  gap:16px;
  align-items:stretch;
  margin-top:0;
}
.map-explorer-layout .map-visible-panel{
  grid-area:visible;
  margin-top:0;
  display:flex;
  flex-direction:column;
  min-width:0;
  height:100%;
}
.map-explorer-layout .outings-map-shell{
  grid-area:map;
  min-width:0;
  height:100%;
}
.map-explorer-layout .map-visible-heading{
  flex:0 0 auto;
  flex-direction:column;
  align-items:stretch;
  gap:12px;
  padding:17px 17px 14px;
}
.map-explorer-layout .map-visible-actions{
  flex-direction:row;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  width:100%;
}
.map-explorer-layout .map-visible-actions a{
  white-space:nowrap;
}
.map-explorer-layout .map-visible-list{
  flex:1 1 auto;
  min-height:0;
  max-height:540px;
}
.map-explorer-layout .map-visible-empty{
  flex:1 1 auto;
  display:grid;
  place-items:center;
}
.map-explorer-layout .map-visible-empty[hidden]{display:none}

/* Sur un écran plus étroit ou en portrait, on retrouve la lecture naturelle :
   la carte d'abord, puis la liste juste dessous. */
@media (max-width:1000px), (orientation:portrait){
  .map-explorer-layout{
    grid-template-columns:1fr;
    grid-template-areas:
      "map"
      "visible";
  }
  .map-explorer-layout .map-visible-panel{
    height:auto;
  }
  .map-explorer-layout .map-visible-heading{
    flex-direction:row;
    align-items:flex-end;
    justify-content:space-between;
    gap:18px;
    padding:18px 20px 15px;
  }
  .map-explorer-layout .map-visible-actions{
    width:auto;
    flex:0 0 auto;
    flex-direction:column;
    align-items:flex-end;
    justify-content:flex-end;
    gap:5px;
  }
  .map-explorer-layout .map-visible-list{
    max-height:350px;
  }
}

@media (max-width:640px){
  .map-explorer-layout{gap:12px}
  .map-explorer-layout .map-visible-heading{
    align-items:flex-start;
    padding:15px 14px 13px;
  }
  .map-explorer-layout .map-visible-actions{
    align-items:flex-end;
  }
  .map-explorer-layout .map-visible-list{
    max-height:310px;
  }
}
