/* ============================================================
   TCM — Carte interactive du resort Disneyland Paris
   Shortcode [tcm_carte_resort] — assets/js/carte-resort.js
   ============================================================ */
.tcm-map{
  --tcm-bg:#001b58; --tcm-bg-soft:#0a2a6e; --tcm-gold:#c9a84c; --tcm-gold-soft:#e0c878;
  --tcm-text:#ffffff; --tcm-text-muted:#aab4d4; --tcm-radius:14px;
  font-family:'Poppins','Open Sans',system-ui,sans-serif;
  max-width:960px;margin:0 auto;color:var(--tcm-text);
}
.tcm-map-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.tcm-map-filters button{
  font:500 13px/1 'Poppins',sans-serif;padding:7px 16px;border-radius:22px;
  border:1px solid rgba(201,168,76,.4);background:transparent;color:var(--tcm-text-muted);
  cursor:pointer;transition:all .15s
}
.tcm-map-filters button:hover{border-color:var(--tcm-gold);color:var(--tcm-text)}
.tcm-map-filters button.on{background:var(--tcm-gold);color:var(--tcm-bg);border-color:var(--tcm-gold);font-weight:600}

.tcm-map-canvas{
  position:relative;width:100%;border-radius:var(--tcm-radius);overflow:hidden;
  background:var(--tcm-bg-soft);line-height:0;user-select:none;
  box-shadow:0 8px 30px rgba(0,0,0,.25)
}
.tcm-map-canvas img.tcm-map-img{width:100%;height:auto;display:block}

.tcm-zoom-btn{
  position:absolute;top:10px;right:10px;z-index:5;display:inline-flex;align-items:center;gap:6px;
  background:rgba(0,27,88,.85);color:#fff;border:1px solid var(--tcm-gold);border-radius:9px;
  padding:7px 13px;font:600 12px 'Poppins',sans-serif;cursor:pointer;transition:all .15s
}
.tcm-zoom-btn:hover{background:var(--tcm-gold);color:var(--tcm-bg)}
.tcm-zoom-close{
  display:none;position:absolute;top:10px;right:10px;z-index:6;width:36px;height:36px;border-radius:50%;
  background:rgba(0,27,88,.9);color:#fff;border:1px solid var(--tcm-gold);font-size:22px;cursor:pointer;line-height:1
}
.tcm-map-canvas.zoomed .tcm-zoom-btn{display:none}
.tcm-map-canvas.zoomed .tcm-zoom-close{display:flex;align-items:center;justify-content:center}

.tcm-map-backdrop{display:none;position:fixed;inset:0;background:rgba(0,10,40,.82);z-index:9998}
.tcm-map-backdrop.show{display:block}
.tcm-map-canvas.zoomed{
  position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(80vw,172vh);z-index:9999;box-shadow:0 20px 80px rgba(0,0,0,.6)
}
@media(max-width:600px){.tcm-map-canvas.zoomed{width:96vw}}

.tcm-mk{
  position:absolute;transform:translate(-50%,-50%);cursor:pointer;z-index:2;
  width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font:600 12px/1 'Poppins',sans-serif;color:#fff;border:2.5px solid #fff;
  box-shadow:0 2px 10px rgba(0,0,0,.35);transition:transform .15s
}
.tcm-mk:hover{transform:translate(-50%,-50%) scale(1.18);z-index:3}
.tcm-mk[data-cat="parc"]{background:#2d8a63}
.tcm-mk[data-cat="hotel"]{background:#c9a84c}
.tcm-mk[data-cat="partenaire"]{background:#8a6bb5}
.tcm-mk[data-cat="poi"]{background:#6c8fb5}

.tcm-popup{
  display:none;position:absolute;z-index:10;width:260px;line-height:1.5;box-sizing:border-box;
  max-height:calc(100% - 20px);overflow-y:auto;
  background:var(--tcm-bg);border:1px solid var(--tcm-gold);border-radius:var(--tcm-radius);
  padding:14px 16px 16px;box-shadow:0 10px 40px rgba(0,0,0,.5)
}
.tcm-popup.show{display:block;animation:tcmPop .18s ease}
@keyframes tcmPop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
.tcm-popup h3{margin:0 24px 8px 0;font:600 15px/1.3 'Poppins',sans-serif;color:var(--tcm-gold-soft)}
.tcm-popup-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.tcm-popup-meta .tag{font:500 10px/1.4 'Poppins',sans-serif;padding:3px 9px;border-radius:11px;background:rgba(201,168,76,.18);color:var(--tcm-gold-soft)}
.tcm-popup p{margin:0 0 12px;font:400 12.5px/1.55 'Open Sans',sans-serif;color:var(--tcm-text-muted)}
.tcm-popup-link{font:600 12.5px/1 'Poppins',sans-serif;color:var(--tcm-gold);text-decoration:none}
.tcm-popup-link:hover{color:var(--tcm-gold-soft)}
.tcm-popup-close{
  position:absolute;top:8px;right:8px;width:24px;height:24px;border:none;border-radius:50%;
  background:rgba(255,255,255,.12);color:#fff;font-size:16px;cursor:pointer;line-height:1
}

.tcm-map-legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:12px}
.tcm-map-legend span{display:flex;align-items:center;gap:6px;font:400 12px/1 'Open Sans',sans-serif;color:var(--tcm-text-muted)}
.tcm-map-legend i{width:11px;height:11px;border-radius:50%;border:1.5px solid rgba(255,255,255,.7)}

/* ---- Panneau détail mobile (affiché SOUS la carte) ---- */
.tcm-map-detail{
  display:none;margin-top:14px;line-height:1.5;position:relative;box-sizing:border-box;
  background:var(--tcm-bg);border:1px solid var(--tcm-gold);border-radius:var(--tcm-radius);
  padding:16px 18px
}
.tcm-map-detail.show{display:block;animation:tcmPop .18s ease}
.tcm-map-detail h3{margin:0 30px 8px 0;font:600 16px/1.3 'Poppins',sans-serif;color:var(--tcm-gold-soft)}
.tcm-detail-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.tcm-detail-meta .tag{font:500 11px/1.4 'Poppins',sans-serif;padding:3px 10px;border-radius:11px;background:rgba(201,168,76,.18);color:var(--tcm-gold-soft)}
.tcm-map-detail p{margin:0 0 12px;font:400 13.5px/1.55 'Open Sans',sans-serif;color:var(--tcm-text-muted)}
.tcm-detail-link{font:600 13.5px/1 'Poppins',sans-serif;color:var(--tcm-gold);text-decoration:none}
.tcm-detail-link:hover{color:var(--tcm-gold-soft)}
.tcm-detail-close{position:absolute;top:10px;right:12px;width:26px;height:26px;border:none;border-radius:50%;
  background:rgba(255,255,255,.12);color:#fff;font-size:17px;cursor:pointer;line-height:1}

/* ---- Filtres rendus accessibles en mode zoom (barre flottante) ---- */
.tcm-map-filters.tcm-filters-zoomed{
  position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:10000;
  margin:0;padding:9px 14px;background:rgba(0,27,88,.92);
  border:1px solid var(--tcm-gold);border-radius:30px;max-width:94vw;
  box-shadow:0 8px 30px rgba(0,0,0,.5);justify-content:center
}
/* Bouton « Agrandir » masqué quand on est déjà en zoom (prioritaire sur Bootstrap) */
.tcm-map-canvas.zoomed .tcm-zoom-btn{display:none!important}

/* Marqueurs un peu plus compacts sur petits écrans */
@media(max-width:767.98px){
  .tcm-mk{width:26px;height:26px;font-size:11px}
}

