/* ------------------------------------------------------------------
   Facette · La carte des cabinets (10/10/2026)
   Les couleurs de la carte sont des variables de #vue-carte, redéfinies
   pour le fond clair ; le reste vient de styles.css. Les contours sont
   des chemins SVG de Leaflet : leurs classes (ct-pays, ct-region…)
   l'emportent sur les couleurs que Leaflet écrit dans le SVG.
   ------------------------------------------------------------------ */

#vue-carte{
  --ct-mer:#0A0517;
  --ct-voisin:#150E2B;
  --ct-terre:#21163F;
  --ct-frontiere:color-mix(in srgb,var(--texte) 46%,transparent);
  --ct-region:color-mix(in srgb,var(--texte) 26%,transparent);
  --ct-dep:color-mix(in srgb,var(--texte) 13%,transparent);
  --ct-commune:color-mix(in srgb,var(--texte) 14%,transparent);
  --ct-cabinet:var(--orange);
  --ct-evidence:#8B63FF;
  --ct-halo:var(--ct-terre);
  --ct-panneau:var(--carte);
  --ct-ombre:0 18px 50px -18px rgba(0,0,0,0.6);
  --ct-ambre:#FFB054;
  --ct-ouverte:var(--vert);
}
html[data-theme="clair"] #vue-carte{
  --ct-mer:#DCE5EA;
  --ct-voisin:#ECE6DA;
  --ct-terre:#FFFCF6;
  --ct-cabinet:#EF7A0A;
  --ct-evidence:#6E3AF7;
  --ct-ombre:0 18px 50px -22px rgba(80,60,30,0.35);
  --ct-ambre:#EE8A12;
  --ct-ouverte:#14996F;
}

/* ---- l'en-tête ---- */
#vue-carte .ct-tete{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 12px}
#vue-carte .ct-tete > div{display:flex;align-items:baseline;gap:4px 14px;flex-wrap:wrap}
#vue-carte .ct-tete .espace{flex:1}
#vue-carte .ct-titre{font-family:var(--display);font-weight:800;font-size:24px;letter-spacing:-0.01em}
#vue-carte .ct-resume{color:var(--texte-doux);font-size:14px}

/* ---- le cadre et la carte ---- */
#vue-carte .ct-cadre{position:relative;isolation:isolate;border:1px solid var(--trait);border-radius:var(--rayon);overflow:hidden;background:var(--ct-mer)}
#vue-carte .ct-carte{height:max(460px,calc(100vh - 330px));height:max(460px,calc(100dvh - 330px));background:var(--ct-mer);
  font-family:var(--corps);outline:none}
#vue-carte .leaflet-container{background:var(--ct-mer);font-family:var(--corps)}
#vue-carte .leaflet-container:focus-visible{outline:2px solid var(--violet);outline-offset:-2px}

#vue-carte .ct-voisin{fill:var(--ct-voisin);fill-opacity:1;stroke:none}
#vue-carte .ct-pays{fill:var(--ct-terre);fill-opacity:1;stroke:none}
#vue-carte .ct-frontiere{fill:none;stroke:var(--ct-frontiere);stroke-width:1.4px;stroke-linejoin:round}
#vue-carte .ct-region{fill:none;stroke:var(--ct-region);stroke-width:1px;stroke-linejoin:round}
#vue-carte .ct-dep{fill:none;stroke:var(--ct-dep);stroke-width:0.8px;stroke-dasharray:3 3}
#vue-carte .ct-commune{fill:var(--texte);fill-opacity:0;stroke:var(--ct-commune);stroke-width:0.6px;transition:fill-opacity .12s}
#vue-carte .ct-commune:hover{fill-opacity:0.06}
#vue-carte .ct-commune-evidence{fill:var(--ct-evidence);fill-opacity:0.10;stroke:var(--ct-evidence);stroke-width:2.4px;stroke-linejoin:round}

/* ---- les villes : un point, un nom ---- */
#vue-carte .ct-ville i{position:absolute;left:-2.5px;top:-2.5px;width:5px;height:5px;border-radius:50%;
  background:color-mix(in srgb,var(--texte) 55%,transparent)}
#vue-carte .ct-ville span{position:absolute;left:6px;top:-9px;white-space:nowrap;font-size:11.5px;line-height:18px;
  color:var(--texte-doux);text-shadow:0 0 3px var(--ct-halo),0 0 3px var(--ct-halo),0 0 2px var(--ct-halo)}
#vue-carte .ct-ville-grande i{width:6px;height:6px;left:-3px;top:-3px;background:var(--texte-doux)}
#vue-carte .ct-ville-grande span{font-size:12.5px;font-weight:600;color:var(--texte)}
#vue-carte .ct-nom-region span{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;
  font-size:10px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--texte-faible);
  text-shadow:0 0 3px var(--ct-halo),0 0 3px var(--ct-halo)}

/* ---- les cabinets ---- */
#vue-carte .ct-cabinet{cursor:pointer}
#vue-carte .ct-cabinet i{position:absolute;left:-8px;top:-8px;width:16px;height:16px;border-radius:50%;
  background:var(--ct-cabinet);border:2.5px solid var(--ct-terre);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--ct-cabinet) 28%,transparent),0 2px 6px rgba(0,0,0,0.35);transition:transform .15s}
#vue-carte .ct-cabinet span{position:absolute;left:13px;top:-11px;white-space:nowrap;font-size:12.5px;font-weight:700;line-height:20px;
  padding:0 8px;border-radius:999px;color:var(--texte);background:color-mix(in srgb,var(--ct-panneau) 92%,transparent);
  border:1px solid color-mix(in srgb,var(--ct-cabinet) 45%,transparent);box-shadow:0 2px 8px -2px rgba(0,0,0,0.3)}
#vue-carte .ct-cabinet:hover i,#vue-carte .ct-cabinet:focus-visible i{transform:scale(1.2)}
#vue-carte .ct-cabinet:focus-visible{outline:none}
#vue-carte .ct-cabinet:focus-visible span{outline:2px solid var(--violet)}
#vue-carte .ct-choisi i{transform:scale(1.25);box-shadow:0 0 0 5px color-mix(in srgb,var(--ct-evidence) 45%,transparent),0 2px 6px rgba(0,0,0,0.35)}
#vue-carte .ct-choisi span{border-color:var(--ct-evidence)}
#vue-carte .ct-edition i{background:var(--ct-evidence);cursor:grab}
#vue-carte .ct-edition span{border-color:var(--ct-evidence)}
#vue-carte .ct-groupe{cursor:pointer}
#vue-carte .ct-groupe i{position:absolute;left:-14px;top:-14px;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-style:normal;font-weight:800;font-size:13px;color:#fff;background:var(--ct-cabinet);border:2.5px solid var(--ct-terre);
  box-shadow:0 0 0 5px color-mix(in srgb,var(--ct-cabinet) 28%,transparent),0 2px 8px rgba(0,0,0,0.35);transition:transform .15s}
#vue-carte .ct-groupe:hover i{transform:scale(1.12)}

/* ---- la mise en évidence d'une recherche ---- */
#vue-carte .ct-pulse i{position:absolute;left:-9px;top:-9px;width:18px;height:18px;border-radius:50%;background:var(--ct-evidence);
  border:2.5px solid var(--ct-terre)}
#vue-carte .ct-pulse i + i{left:-9px;top:-9px;background:none;border:2px solid var(--ct-evidence);animation:ct-onde 1.8s ease-out infinite}
#vue-carte .ct-pulse span{position:absolute;left:14px;top:-12px;white-space:nowrap;font-size:14px;font-weight:800;color:var(--ct-evidence);
  text-shadow:0 0 3px var(--ct-halo),0 0 3px var(--ct-halo),0 0 3px var(--ct-halo)}
@keyframes ct-onde{from{transform:scale(1);opacity:0.9}to{transform:scale(3.4);opacity:0}}
@media (prefers-reduced-motion:reduce){#vue-carte .ct-pulse i + i{animation:none;transform:scale(2);opacity:0.5}}

/* ---- la barre de recherche ---- */
#vue-carte .ct-recherche{position:absolute;z-index:1001;top:14px;left:14px;width:min(380px,calc(100% - 28px))}
#vue-carte .ct-recherche input{width:100%;height:46px;padding:0 40px 0 42px;border-radius:12px;font:inherit;font-size:15px;
  color:var(--texte);background:var(--ct-panneau);border:1px solid var(--trait-fort);box-shadow:var(--ct-ombre);-webkit-appearance:none;appearance:none}
#vue-carte .ct-recherche input::-webkit-search-cancel-button{display:none}
#vue-carte .ct-recherche input::placeholder{color:var(--texte-faible)}
#vue-carte .ct-recherche input:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 25%,transparent),var(--ct-ombre)}
#vue-carte .ct-loupe{position:absolute;left:15px;top:15px;width:14px;height:14px;border:2px solid var(--texte-faible);border-radius:50%;pointer-events:none}
#vue-carte .ct-loupe::after{content:"";position:absolute;width:2px;height:7px;background:var(--texte-faible);right:-4px;bottom:-6px;transform:rotate(-45deg);border-radius:2px}
#vue-carte .ct-effacer{position:absolute;right:6px;top:7px;width:32px;height:32px;border-radius:8px;font-size:20px;line-height:1;color:var(--texte-faible)}
#vue-carte .ct-effacer:hover{color:var(--texte);background:color-mix(in srgb,var(--texte) 8%,transparent)}
#vue-carte .ct-effacer[hidden]{display:none}
#vue-carte .ct-suggestions{list-style:none;margin-top:6px;padding:6px;border-radius:12px;background:var(--ct-panneau);
  border:1px solid var(--trait-fort);box-shadow:var(--ct-ombre);max-height:min(360px,60vh);overflow:auto}
#vue-carte .ct-suggestions[hidden]{display:none}
#vue-carte .ct-suggestions li{display:flex;align-items:baseline;gap:8px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:14px}
#vue-carte .ct-suggestions li b{font-weight:650;white-space:nowrap}
#vue-carte .ct-suggestions li span{color:var(--texte-faible);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#vue-carte .ct-suggestions li:hover,#vue-carte .ct-suggestions li.ct-sel{background:color-mix(in srgb,var(--violet) 14%,transparent)}
#vue-carte .ct-suggestions li.ct-rien{cursor:default;color:var(--texte-faible)}
#vue-carte .ct-suggestions li.ct-rien:hover{background:none}
#vue-carte .ct-puce-cabinet,#vue-carte .ct-puce-ville{flex:none;width:9px;height:9px;border-radius:50%;align-self:center}
#vue-carte .ct-puce-cabinet{background:var(--ct-cabinet)}
#vue-carte .ct-puce-ville{width:6px;height:6px;margin:0 1.5px;background:var(--texte-faible)}

/* ---- la fiche d'un cabinet ---- */
#vue-carte .ct-fiche{position:absolute;z-index:1001;top:14px;right:14px;width:min(350px,calc(100% - 28px));max-height:calc(100% - 28px);overflow:auto;
  padding:18px 18px 16px;border-radius:14px;background:var(--ct-panneau);border:1px solid var(--trait-fort);box-shadow:var(--ct-ombre)}
#vue-carte .ct-fiche[hidden]{display:none}
#vue-carte .ct-fermer{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:8px;font-size:22px;line-height:1;color:var(--texte-faible)}
#vue-carte .ct-fermer:hover{color:var(--texte);background:color-mix(in srgb,var(--texte) 8%,transparent)}
#vue-carte .ct-surtitre{font-size:12px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;color:var(--ct-cabinet);padding-right:30px}
#vue-carte .ct-fiche-nom{font-family:var(--display);font-weight:800;font-size:20px;line-height:1.25;margin-top:4px;padding-right:30px}
#vue-carte .ct-praticien{color:var(--texte-doux);font-size:14.5px;margin-top:2px}
#vue-carte .ct-lignes{margin-top:14px;display:grid;gap:9px}

/* ---- la ville sur le test des dentistes (bloquée ou ouverte) ---- */
#vue-carte .ct-test{margin-top:12px;padding:10px 12px 12px;border-radius:10px;border:1px solid var(--trait);
  background:color-mix(in srgb,var(--texte) 4%,transparent);display:grid;gap:6px;justify-items:start}
#vue-carte .ct-test-titre{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;letter-spacing:0.05em;text-transform:uppercase;color:var(--texte-doux)}
#vue-carte .ct-test-point{flex:none;width:9px;height:9px;border-radius:50%;background:var(--ct-ambre);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ct-ambre) 25%,transparent)}
#vue-carte .ct-test-point.ct-ouverte{background:var(--ct-ouverte);box-shadow:0 0 0 3px color-mix(in srgb,var(--ct-ouverte) 22%,transparent)}
#vue-carte .ct-test-texte{font-size:13.5px;line-height:1.45;color:var(--texte-doux)}
#vue-carte .ct-test-texte b{color:var(--texte)}
#vue-carte .ct-test-note{font-size:13px;font-weight:600;color:var(--texte-doux)}
#vue-carte .ct-test-erreur{color:var(--rose)}
#vue-carte .ct-petit{padding:5px 12px;font-size:13px;margin-top:2px}
#vue-carte .ct-ligne{display:grid;grid-template-columns:86px 1fr;gap:10px;font-size:13.5px;line-height:1.45}
#vue-carte .ct-ligne dt{color:var(--texte-faible)}
#vue-carte .ct-ligne dd{margin:0;overflow-wrap:anywhere}
#vue-carte .ct-ligne a{color:inherit;text-decoration:underline;text-decoration-color:var(--trait-fort);text-underline-offset:3px}
#vue-carte .ct-ligne a:hover{text-decoration-color:currentColor}
#vue-carte .ct-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
#vue-carte .ct-aide{color:var(--texte-doux);font-size:13.5px;margin-top:8px}
#vue-carte .ct-erreur{margin-top:10px;font-size:13.5px;color:var(--rose)}
#vue-carte .ct-erreur[hidden]{display:none}

/* ---- les boutons ---- */
#vue-carte .ct-bouton{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;font-size:13.5px;font-weight:600;
  color:var(--texte);border:1px solid var(--trait-fort);text-decoration:none;background:none;transition:border-color .15s,background .15s}
#vue-carte .ct-bouton:hover{border-color:var(--violet)}
#vue-carte .ct-bouton[hidden]{display:none}
#vue-carte .ct-bouton:disabled{opacity:0.45;cursor:default}
#vue-carte .ct-principal{background:var(--violet);border-color:var(--violet);color:#fff}
#vue-carte .ct-principal:hover:not(:disabled){background:#5B2BE0}
#vue-carte .ct-discret{color:var(--texte-doux)}
#vue-carte .ct-danger{color:var(--rose);border-color:color-mix(in srgb,var(--rose) 40%,transparent)}
#vue-carte .ct-danger:hover{border-color:var(--rose)}
#vue-carte .ct-attention{border-color:var(--ct-cabinet);background:color-mix(in srgb,var(--ct-cabinet) 14%,transparent)}

/* ---- placer un cabinet ---- */
#vue-carte .ct-a-placer{list-style:none;margin-top:12px;display:grid;gap:6px}
#vue-carte .ct-a-placer button{width:100%;text-align:left;display:flex;flex-direction:column;padding:9px 12px;border-radius:10px;
  border:1px solid var(--trait-fort);font-size:14px}
#vue-carte .ct-a-placer button:hover{border-color:var(--ct-cabinet)}
#vue-carte .ct-a-placer span{color:var(--texte-faible);font-size:12.5px}
#vue-carte .ct-formulaire{display:grid;gap:9px;margin-top:12px}
#vue-carte .ct-champ{display:grid;gap:3px;font-size:12.5px;color:var(--texte-faible)}
#vue-carte .ct-champ input,#vue-carte .ct-champ textarea{font:inherit;font-size:14px;color:var(--texte);padding:7px 10px;border-radius:8px;
  background:color-mix(in srgb,var(--texte) 5%,transparent);border:1px solid var(--trait);resize:vertical}
#vue-carte .ct-champ input:focus,#vue-carte .ct-champ textarea:focus{outline:none;border-color:var(--violet)}

/* ---- un souci de lecture ---- */
#vue-carte .ct-message{position:absolute;z-index:1001;left:50%;bottom:16px;transform:translateX(-50%);max-width:calc(100% - 32px);
  padding:9px 14px;border-radius:10px;font-size:13.5px;background:var(--ct-panneau);border:1px solid var(--rose);color:var(--texte)}
#vue-carte .ct-message[hidden]{display:none}

/* ---- les commandes de Leaflet, à nos couleurs ---- */
#vue-carte .leaflet-bar{border:1px solid var(--trait-fort);box-shadow:var(--ct-ombre);border-radius:10px;overflow:hidden}
#vue-carte .leaflet-bar a{width:36px;height:36px;line-height:34px;font-size:20px;background:var(--ct-panneau);color:var(--texte);border-bottom:1px solid var(--trait)}
#vue-carte .leaflet-bar a:last-child{border-bottom:0}
#vue-carte .leaflet-bar a:hover{background:color-mix(in srgb,var(--violet) 14%,var(--ct-panneau))}
#vue-carte .leaflet-bar a.leaflet-disabled{color:var(--texte-faible);background:var(--ct-panneau)}
#vue-carte .leaflet-control-attribution{background:none;color:var(--texte-faible);font-size:10px;padding:0 8px 2px}
#vue-carte .ct-bulle{background:var(--ct-panneau);color:var(--texte);border:1px solid var(--trait-fort);border-radius:6px;padding:2px 8px;
  font-size:12px;font-weight:600;box-shadow:0 4px 12px -4px rgba(0,0,0,0.4)}
#vue-carte .ct-bulle::before{display:none}

/* ---- sur téléphone : la fiche monte du bas ---- */
@media (max-width:760px){
  #vue-carte .ct-titre{font-size:22px}
  #vue-carte .ct-carte{height:max(440px,calc(100dvh - 190px))}
  #vue-carte .ct-recherche{top:10px;left:10px;width:calc(100% - 20px)}
  #vue-carte .ct-fiche{top:auto;bottom:10px;left:10px;right:10px;width:auto;max-height:58%}
  #vue-carte .leaflet-bottom.leaflet-right{display:none}
}
