/* Lieux de diffusion — maquette. S'appuie sur les variables du thème quand elles existent. */
.clb-ld{--ld-encre:#1d1b19;--ld-doux:#6a635c;--ld-trait:rgba(29,27,25,.12);
  --ld-fond:#fbf9f6;--ld-carte:#fff;--ld-accent:var(--clb-accent,#b8342f);
  --ld-rayon:14px;--ld-ombre:0 1px 2px rgba(29,27,25,.05),0 8px 24px rgba(29,27,25,.06);
  color:var(--ld-encre);}

.clb-ld h2{font-size:clamp(1.3rem,2.4vw,1.75rem);margin:0 0 .35em;letter-spacing:-.01em}
.clb-ld .clb-ld-sub{color:var(--ld-doux);max-width:56ch;margin:0 0 1.5rem;line-height:1.6}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}

/* ---- recherche + villes ---- */
.clb-ld-choix{margin-bottom:1.6rem}
.clb-ld-recherche{margin:0 0 1.1rem}
.clb-ld-recherche input{width:100%;max-width:34rem;font-size:1rem;padding:.8rem 1rem;
  border:1px solid var(--ld-trait);border-radius:var(--ld-rayon);background:var(--ld-carte);
  color:inherit;box-shadow:var(--ld-ombre)}
.clb-ld-recherche input:focus{outline:2px solid var(--ld-accent);outline-offset:2px;border-color:transparent}

.clb-ld-villes{display:flex;flex-wrap:wrap;gap:.5rem;position:relative}
.clb-ld-villes.est-repliee{max-height:var(--ld-repli,8.4rem);overflow:hidden}
.clb-ld-villes-plus{margin:.6rem 0 0;padding:.45rem .95rem;min-height:40px;cursor:pointer;
  border:1px solid rgba(29,27,25,.18);border-radius:999px;background:transparent;
  font-size:.88rem;font-weight:600;color:#1d1b19}
.clb-ld-villes-plus:hover{border-color:#1d1b19}
.clb-ld-villes-plus[hidden]{display:none}
.clb-ld-ville{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem .85rem;
  border:1px solid var(--ld-trait);border-radius:999px;background:var(--ld-carte);
  color:inherit;text-decoration:none;font-size:.92rem;line-height:1.2;
  transition:border-color .15s,background .15s,color .15s}
.clb-ld-ville:hover{border-color:var(--ld-accent);color:var(--ld-accent);text-decoration:none}
.clb-ld-ville:focus-visible{outline:2px solid var(--ld-accent);outline-offset:2px}
.clb-ld-ville.is-on{background:var(--ld-encre);color:#fff;border-color:var(--ld-encre)}
.clb-ld-n{font-size:.78rem;opacity:.65;font-variant-numeric:tabular-nums}
.clb-ld-ville.is-on .clb-ld-n{opacity:.8}

/* ---- carte ---- */
.clb-ld-carte-wrap{margin:0 0 2rem}
.clb-ld-carte{position:relative;height:clamp(320px,46vh,460px);border-radius:var(--ld-rayon);
  overflow:hidden;background:var(--ld-fond);border:1px solid var(--ld-trait);box-shadow:var(--ld-ombre)}
.clb-ld-carte-echec{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:.6rem;text-align:center;padding:1.5rem}
.clb-ld-carte.est-en-chargement{background:linear-gradient(100deg,#f0ede6 30%,#f7f5f0 50%,#f0ede6 70%);
  background-size:220% 100%;animation:clb-ld-attente 1.25s linear infinite}
@keyframes clb-ld-attente{from{background-position:120% 0}to{background-position:-20% 0}}
@media (prefers-reduced-motion:reduce){.clb-ld-carte.est-en-chargement{animation:none}}
.clb-ld-carte .leaflet-container{height:100%;width:100%}
/* Coutures : au rapport de pixels fractionnaire, deux tuiles voisines laissent un
   lisere clair. Leaflet fixe la taille en style en ligne, il faut donc passer devant. */
.clb-ld-carte .leaflet-tile{outline:1px solid transparent;outline-offset:-1px}
.clb-ld-carte-echec[hidden]{display:none}

/* ---- grille continue ---- */
.clb-ld-liste{ margin-top:.5rem }
.clb-ld-grille{display:grid;gap:1.25rem;grid-template-columns:repeat(4,1fr)}
@media (max-width:1200px){ .clb-ld-grille{grid-template-columns:repeat(3,1fr)} }
@media (max-width:860px){ .clb-ld-grille{grid-template-columns:repeat(2,1fr)} }
@media (max-width:560px){ .clb-ld-grille{grid-template-columns:1fr} }

.clb-ld-salle{display:flex;flex-direction:column;background:var(--ld-carte);
  border:1px solid var(--ld-trait);border-radius:var(--ld-rayon);overflow:hidden;
  box-shadow:var(--ld-ombre);transition:transform .18s ease,box-shadow .18s ease}
.clb-ld-salle:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(29,27,25,.06),0 14px 32px rgba(29,27,25,.10)}
.clb-ld-salle.is-cible{outline:2px solid var(--ld-accent);outline-offset:2px}

/* visuel + ville en surimpression : la ville reste l'information dominante */
.clb-ld-visuel{position:relative;aspect-ratio:16/10;background:var(--ld-fond);overflow:hidden}
.clb-ld-visuel img{width:100%;height:100%;object-fit:cover;display:block}
.clb-ld-visuel-vide{width:100%;height:100%;
  background:repeating-linear-gradient(135deg,var(--ld-fond),var(--ld-fond) 10px,rgba(29,27,25,.035) 10px,rgba(29,27,25,.035) 20px)}
.clb-ld-ville-tag{position:absolute;left:.6rem;bottom:.6rem;margin:0;
  font-size:.76rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:#fff;background:rgba(20,18,16,.72);backdrop-filter:blur(3px);
  padding:.3rem .6rem;border-radius:999px;max-width:calc(100% - 1.2rem);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.clb-ld-corps{padding:.9rem 1rem 1rem;display:flex;flex-direction:column;gap:.3rem;flex:1}
.clb-ld-salle-nom{margin:0;font-size:1rem;line-height:1.32;letter-spacing:-.01em;font-weight:600}
.clb-ld-adresse{margin:.1rem 0 0;font-size:.85rem;color:var(--ld-doux);line-height:1.45}
.clb-ld-actions{margin-top:auto;padding-top:.85rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}

.clb-ld-btn{display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;padding:.5rem .9rem;border-radius:999px;font-size:.88rem;font-weight:500;
  text-decoration:none;cursor:pointer;border:1px solid transparent;line-height:1.2}
.clb-ld-btn:focus-visible{outline:2px solid var(--ld-accent);outline-offset:2px}
.clb-ld-btn-primaire{background:var(--ld-accent);color:#fff}
.clb-ld-btn-primaire:hover{filter:brightness(.93);color:#fff;text-decoration:none}
.clb-ld-btn-second{background:transparent;color:var(--ld-encre);border-color:var(--ld-trait)}
.clb-ld-btn-second:hover{border-color:var(--ld-encre)}
.clb-ld-avenir{font-size:.82rem;color:var(--ld-doux);font-style:italic}
.clb-ld-vide{padding:2rem 0;color:var(--ld-doux)}
.clb-ld-plus-wrap{margin:1.6rem 0 0;text-align:center}

.clb-ld [hidden]{display:none!important}

@media (max-width:640px){
  .clb-ld-carte{height:min(62vh,420px)}
  .clb-ld-villes{gap:.4rem}
  .clb-ld-ville{font-size:.88rem;padding:.5rem .75rem}
}
@media (prefers-reduced-motion:reduce){
  .clb-ld-salle{transition:none}.clb-ld-salle:hover{transform:none}
}
@media (prefers-color-scheme:dark){
  .clb-ld{--ld-encre:#f2efea;--ld-doux:#a9a29a;--ld-trait:rgba(242,239,234,.14);
    --ld-fond:#1a1917;--ld-carte:#222120;
    --ld-ombre:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.35)}
  .clb-ld-ville.is-on{background:#f2efea;color:#1a1917;border-color:#f2efea}
}

/* ==== V2 (2026-08-14) — la vignette mene a la page dediee de la salle ==========
   Le lien du titre est etendu a toute la carte : un seul vrai lien, navigable au
   clavier, les actions (Voir la salle / Voir sur la carte) restent au-dessus. */
.clb-ld-salle{ position:relative; }
.clb-ld-salle-nom a.clb-ld-salle-lien{ color:inherit; text-decoration:none; }
.clb-ld-salle-nom a.clb-ld-salle-lien::after{ content:""; position:absolute; inset:0; }
.clb-ld-salle-nom a.clb-ld-salle-lien:focus-visible{ outline:2px solid currentColor; outline-offset:2px; }
.clb-ld-actions{ position:relative; z-index:1; }
.clb-ld-salle:hover .clb-ld-salle-nom a.clb-ld-salle-lien{ text-decoration:underline; }
/* Le compteur remplace l'ancien texte d'attente : il n'apparait que s'il compte. */
.clb-ld-futures{ margin:4px 0 0; font-size:.85rem; font-weight:700; color:#3a5372;
  background:#eef2f7; border:1px solid #cdd8e6; border-radius:999px; display:inline-block;
  padding:2px 10px; }
