/* ============================================================
   60 : carte (stacking, chrome Leaflet, pin goutte, popup riche in-frame,
   liste latérale synchronisée, zone, états vide/erreur)
   PARTICULARITÉ : leaflet.css est injecté lazy APRÈS nos feuilles. Toute
   surcharge du chrome Leaflet gagne donc par SPÉCIFICITÉ
   (.pxd-disc-pinpop-wrap .leaflet-* = 0,2,0), jamais par ordre.
   Seul !important du fichier : la largeur de .leaflet-popup-content sous
   900px (Leaflet l'écrit en style inline à chaque ouverture).
   ============================================================ */

#pxd-disc-map-root[hidden]{display:none}

/* Contexte d'empilement : les panes Leaflet (z 200-1000) restent enfermées,
   la filterbar sticky (z 30) repasse devant au scroll. */
.pxd-disc-map{position:relative;isolation:isolate;z-index:0;border-radius:var(--pxd-radius-lg);overflow:hidden}
#pxd-disc-leaflet{position:relative;isolation:isolate;z-index:0;width:100%;height:100%;font-family:var(--pxd-font-sans);background:#e9efee}
#pxd-disc-leaflet .leaflet-control-attribution{font-size:10px;background:rgba(255,255,255,0.78);color:var(--pxd-fg-tertiary);padding:2px 6px;border-radius:6px 0 0 0}
#pxd-disc-leaflet .leaflet-control-attribution a{color:var(--pxd-secondary-hover)}

/* --- Pin goutte 36x44 : .pxd-disc-pin-wrap (divIcon) > .pxd-disc-pin > .pxd-disc-pin-body > b ---
   20-maquette pose .pxd-disc-pin en position:absolute + translate (maquette
   statique) : incompatible avec le marker Leaflet, surchargé ici par
   .pxd-disc-pin-wrap > .pxd-disc-pin (0,2,0). */
.pxd-disc-pin-wrap{background:transparent;border:none}
.pxd-disc-pin-wrap>.pxd-disc-pin{position:static;transform:none;display:block;width:36px;height:44px;cursor:pointer;z-index:auto}
.pxd-disc-pin-wrap .pxd-disc-pin-body{width:36px;height:36px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);transform-origin:center;background:var(--pxd-gradient-icon);border:2px solid #fff;box-shadow:0 6px 14px rgba(1,40,39,0.28);display:flex;align-items:center;justify-content:center;transition:transform var(--pxd-dur-fast) var(--pxd-ease-bounce),background var(--pxd-dur-fast),box-shadow var(--pxd-dur-fast)}
.pxd-disc-pin-wrap .pxd-disc-pin-body b{transform:rotate(45deg);color:#fff;font-weight:800;font-size:0.72rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.pxd-disc-pin-wrap .pxd-disc-pin-body b .ic{font-size:15px}
.pxd-disc-pin-wrap.is-cluster .pxd-disc-pin-body{box-shadow:0 0 0 3px rgba(32,201,184,0.45),0 6px 14px rgba(1,40,39,0.28)}
.pxd-disc-pin-wrap:hover .pxd-disc-pin-body,.pxd-disc-pin-wrap.is-hover .pxd-disc-pin-body,.pxd-disc-pin-wrap:focus .pxd-disc-pin-body{transform:rotate(-45deg) scale(1.08)}
.pxd-disc-pin-wrap.act .pxd-disc-pin-body{transform:rotate(-45deg) scale(1.12);background:var(--pxd-gradient);box-shadow:0 0 0 3px rgba(32,201,184,0.55),0 8px 18px rgba(1,40,39,0.32)}
.pxd-disc-pin-wrap:focus{outline:none}
.pxd-disc-pin-wrap:focus-visible .pxd-disc-pin-body{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--pxd-secondary),0 6px 14px rgba(1,40,39,0.28)}

/* --- Chrome Leaflet de la popup : transparent, la carte porte le verre --- */
.pxd-disc-pinpop-wrap .leaflet-popup-content-wrapper{padding:0;background:transparent;box-shadow:none;border-radius:var(--pxd-radius-lg)}
.pxd-disc-pinpop-wrap .leaflet-popup-content{margin:0;width:272px;line-height:1.4;font-size:inherit}
.pxd-disc-pinpop-wrap .leaflet-popup-content p{margin:0}
/* La flèche = pointe Leaflet repeinte en verre (le losange ::after de la maquette est retiré) */
.pxd-disc-pinpop-wrap .leaflet-popup-tip{width:14px;height:14px;padding:0;margin:-7px auto 0;background:var(--pxd-glass-popup);border:1px solid var(--pxd-border-popup);border-top:none;border-left:none;box-shadow:none}
/* .leaflet-container a (0,1,1) colore les liens : on repasse devant en 0,2,1 */
.pxd-disc-pinpop-wrap .pxd-disc-pinpop-card a{color:inherit;text-decoration:none}
/* ... mais cette règle (0,2,1) battait aussi .pxd-disc-pinpop-btn{color:#fff} (0,1,0) :
   le CTA « Voir le voyage » sortait en vert foncé #0A3D3A sur son propre dégradé vert,
   soit un contraste quasi nul. On le repasse devant en (0,3,1). */
.pxd-disc-pinpop-wrap .pxd-disc-pinpop-card a.pxd-disc-pinpop-btn{color:#fff}
.pxd-disc-pinpop-wrap .pxd-disc-pinpop-card a.pxd-disc-pinpop-btn:hover,
.pxd-disc-pinpop-wrap .pxd-disc-pinpop-card a.pxd-disc-pinpop-btn:focus,
.pxd-disc-pinpop-wrap .pxd-disc-pinpop-card a.pxd-disc-pinpop-btn:active{color:#fff}
/* .leaflet-container impose 12px : la carte héritait d'une taille de police de conteneur. */
.pxd-disc-pinpop-wrap .pxd-disc-pinpop-card{font-size:0.82rem}

/* --- Carte popup (racine .pxd-disc-pinpop-card, jamais .pxd-disc-pinpop) --- */
.pxd-disc-pinpop-card{width:272px;overflow:hidden;border-radius:var(--pxd-radius-lg);background:var(--pxd-glass-popup);backdrop-filter:var(--pxd-blur-popup);-webkit-backdrop-filter:var(--pxd-blur-popup);border:1px solid var(--pxd-border-popup);box-shadow:var(--pxd-shadow-popup);color:var(--pxd-primary);font-family:var(--pxd-font-sans);transform-origin:50% 100%;animation:pxd-pop-in 160ms var(--pxd-ease-smooth) backwards}
@keyframes pxd-pop-in{from{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:none}}
.pxd-disc-pinpop-img{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:0;background:var(--pxd-gray-100)}
.pxd-disc-pinpop-img img{width:100%;height:100%;object-fit:cover;display:block}
.pxd-disc-pinpop-img::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(1,40,39,0.3) 0%,transparent 40%,transparent 60%,rgba(1,40,39,0.42) 100%);pointer-events:none;z-index:1}
.pxd-disc-pinpop-ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--pxd-gradient)}
.pxd-disc-pinpop-ph span{color:rgba(255,255,255,0.85);font-weight:800;font-size:1.1rem}
.pxd-disc-pinpop-img .pxd-disc-match{top:8px;left:8px;height:26px;font-size:0.72rem;padding:0 10px;z-index:3}
.pxd-disc-pinpop-img .pxd-disc-fav{top:8px;right:42px;width:30px;height:30px;z-index:4}
.pxd-disc-pinpop-img .pxd-disc-fav .ic{font-size:15px}
.pxd-disc-pinpop-close{position:absolute;top:8px;right:8px;z-index:4;width:30px;height:30px;padding:0;border-radius:50%;border:1px solid rgba(255,255,255,0.25);background:rgba(7,43,40,0.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.pxd-disc-pinpop-close .ic{font-size:15px}
.pxd-disc-pinpop-close:hover{background:rgba(7,43,40,0.9)}
.pxd-disc-pinpop-close:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,0.7)}
.pxd-disc-pinpop-rating{z-index:3}
.pxd-disc-pinpop-body{padding:12px 14px 14px;background:transparent;border-radius:0}
.pxd-disc-pinpop-body::after{content:none}
.pxd-disc-pinpop-body h4{font-size:1rem;font-weight:800;color:var(--pxd-primary-dark);margin:4px 0 0;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pxd-disc-pinpop-body h4 a:hover{color:var(--pxd-secondary-hover)}
.pxd-disc-pinpop-meta{flex-wrap:wrap;gap:6px 13px}
.pxd-disc-pinpop-author{margin-top:10px}
.pxd-disc-pinpop-author .pxd-disc-author-av{width:26px;height:26px;font-size:0.62rem}
.pxd-disc-pinpop-foot .pxd-disc-price .amt{font-size:0.98rem}
.pxd-disc-pinpop-btn{text-decoration:none;flex:none}
.pxd-disc-pinpop-btn .ic{font-size:14px}
.pxd-disc-pinpop-more{margin-top:9px;font-size:0.74rem;font-weight:600;color:var(--pxd-fg-tertiary)}

/* --- Bouton « Rechercher dans cette zone » : visible seulement après un geste utilisateur --- */
.pxd-disc-mapsearch[hidden]{display:none}
.pxd-disc-mapsearch.is-active{background:var(--pxd-gradient);color:#fff;border-color:transparent}
.pxd-disc-mapsearch.is-active .ic{color:var(--pxd-turquoise)}

/* --- État vide / erreur : overlay sur la carte --- */
.pxd-disc-map-empty{position:absolute;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(240,244,244,0.45);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.pxd-disc-map-empty-card{border-radius:var(--pxd-radius-lg);padding:22px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;max-width:360px}
.pxd-disc-map-empty-card img{width:56px;height:56px;object-fit:contain}
.pxd-disc-map-empty-card h4{margin:6px 0 0;font-size:1.05rem;font-weight:800;color:var(--pxd-primary-dark)}
.pxd-disc-map-empty-card p{margin:0;color:var(--pxd-fg-tertiary);font-weight:500;font-size:0.88rem}
.pxd-disc-map-empty-card .pxd-disc-btn{margin-top:10px;height:42px;padding:0 18px;font-size:0.88rem}

/* --- Liste latérale --- */
.pxd-disc-maplist{display:flex;flex-direction:column;min-height:0;padding:8px;border-radius:var(--pxd-radius-lg);overflow:hidden}
.pxd-disc-maplist-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 8px 10px;margin-bottom:6px;border-bottom:1px solid var(--pxd-gray-200);flex:none}
.pxd-disc-maplist-head b{font-weight:800;color:var(--pxd-primary-dark);font-size:0.95rem}
.pxd-disc-maplist-head b small{font-weight:600;color:var(--pxd-fg-tertiary);font-size:0.78rem}
.pxd-disc-maplist-widen{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border-radius:var(--pxd-radius-full);border:1px solid var(--pxd-tint-secondary-30);background:var(--pxd-tint-secondary-8);color:var(--pxd-secondary-hover);font:inherit;font-weight:700;font-size:0.76rem;cursor:pointer;flex:none}
.pxd-disc-maplist-widen .ic{font-size:13px}
.pxd-disc-maplist-widen:hover{background:var(--pxd-tint-secondary-15)}
.pxd-disc-maplist-widen[hidden]{display:none}
#pxd-disc-maplist-rows{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;display:flex;flex-direction:column;gap:2px}
.pxd-disc-mlrow{display:flex;gap:12px;padding:9px;border-radius:var(--pxd-radius-md);cursor:pointer;border:1px solid transparent;transition:background var(--pxd-dur-fast),border-color var(--pxd-dur-fast),box-shadow var(--pxd-dur-fast)}
.pxd-disc-mlrow[hidden]{display:none}
.pxd-disc-mlrow:hover,.pxd-disc-mlrow.is-hover{background:rgba(255,255,255,0.85);border-color:rgba(15,163,107,0.16);box-shadow:var(--pxd-shadow-sm)}
.pxd-disc-mlrow.act{background:#fff;border-color:var(--pxd-secondary);box-shadow:inset 3px 0 0 var(--pxd-secondary),var(--pxd-shadow-sm)}
.pxd-disc-mlrow:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pxd-tint-secondary-30)}
.pxd-disc-mlrow img,.pxd-disc-mlrow-ph{width:88px;height:66px;border-radius:var(--pxd-radius-sm);object-fit:cover;flex:none}
.pxd-disc-mlrow-ph{background:var(--pxd-gradient)}
.pxd-disc-mlrow .b{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.pxd-disc-mlrow .b .rt{display:flex;align-items:center;gap:5px;color:var(--pxd-fg-tertiary);font-weight:600;font-size:0.7rem;min-width:0}
.pxd-disc-mlrow .b .rt .ic{font-size:12px;color:var(--pxd-secondary);flex:none}
.pxd-disc-mlrow .b .rt .dest{color:var(--pxd-primary-dark);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pxd-disc-mlrow .b h4{margin:0;font-size:0.9rem;font-weight:800;color:var(--pxd-primary-dark);line-height:1.2;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pxd-disc-mlrow .b .mmeta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 11px;margin-top:3px;color:var(--pxd-fg-tertiary);font-weight:600;font-size:0.7rem}
.pxd-disc-mlrow .b .mmeta span{display:inline-flex;align-items:center;gap:4px}
.pxd-disc-mlrow .b .mmeta .ic{font-size:11px;color:var(--pxd-secondary)}
.pxd-disc-mlrow .b .mr{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:5px}
.pxd-disc-mmatch.is-fair{background:rgba(7,43,40,0.08);color:var(--pxd-primary)}
.pxd-disc-mlrow .b .pr{color:var(--pxd-primary-dark);font-weight:800;font-size:0.82rem;margin-left:auto;display:inline-flex;align-items:baseline;gap:4px}
.pxd-disc-mlrow .b .pr small{color:var(--pxd-fg-tertiary);font-weight:600;font-size:0.66rem}
.pxd-disc-mlrow--sk{pointer-events:none;cursor:default}

/* --- Responsive --- */
@media (max-width:900px){
    /* Zone du pouce */
    .pxd-disc-mapsearch{top:auto;bottom:14px}
    .pxd-disc-mapsearch:hover{transform:translateX(-50%)}
    .pxd-disc-mlrow img,.pxd-disc-mlrow-ph{width:76px;height:58px}
    .pxd-disc-pinpop-wrap .leaflet-popup-content{width:min(272px,calc(100vw - 64px)) !important}
    .pxd-disc-pinpop-card{width:min(272px,calc(100vw - 64px))}
}
@media (max-width:640px){
    .pxd-disc-map-empty-card{padding:18px;flex-direction:column}
}
@media (hover:none){
    .pxd-disc-mlrow:hover{background:transparent;border-color:transparent;box-shadow:none}
    .pxd-disc-mlrow.act{background:#fff;border-color:var(--pxd-secondary);box-shadow:inset 3px 0 0 var(--pxd-secondary),var(--pxd-shadow-sm)}
    .pxd-disc-pin-wrap:hover .pxd-disc-pin-body{transform:rotate(-45deg)}
    .pxd-disc-pin-wrap.act .pxd-disc-pin-body{transform:rotate(-45deg) scale(1.12)}
}
@media (prefers-reduced-motion:reduce){
    .pxd-disc-pinpop-card{animation:none}
    .pxd-disc-pin-wrap .pxd-disc-pin-body,.pxd-disc-mlrow{transition:none}
}
