/* Effyclean Carte de Loire-Atlantique 1.2.0 : reprend les couleurs du thème Effyclean (variables --effy-*), valeurs de secours identiques. Unités : rem uniquement. */
.effy-carte{
	--ec-primary:var(--effy-c-primary,#0a6b8e);
	--ec-dark:var(--effy-c-primary-dark,#07566f);
	--ec-ink:var(--effy-c-ink,#1f3d4d);
	--ec-muted:var(--effy-c-muted,#55707d);
	--ec-tint:var(--effy-c-tint,#e9f4fb);
	--ec-border:var(--effy-c-border,#d4e4ee);
	--ec-light:var(--effy-c-wave-b,#8dc5e0);
	--ec-mid:var(--effy-c-wave-a,#54a4c9);
	--ec-dep:color-mix(in srgb,var(--ec-primary) 14%,#fff);
	--ec-nm:color-mix(in srgb,var(--ec-mid) 55%,#fff);
	--ec-radius:var(--effy-radius,1rem);
	margin:2rem 0;
	color:var(--ec-ink);
}
.effy-carte *{box-sizing:border-box}
.effy-carte__head{text-align:center;margin:0 auto 1.75rem;max-width:47.5rem}
.effy-carte__title{margin:0 0 .5rem}
.effy-carte__intro{margin:0;color:var(--ec-muted)}

/* Mise en page : la carte prend la largeur disponible, la liste est à côté */
.effy-carte__layout{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr)}
@media (min-width:62rem){
	.effy-carte__layout{grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);align-items:start}
	.effy-carte__panel{position:sticky;top:6rem;max-height:calc(100vh - 8rem);overflow:auto}
}

/* Disposition « stack » : carte, puis panneau dessous (colonne étroite d'un thème) */
.effy-carte--stack{margin:0}
.effy-carte--stack .effy-carte__layout{grid-template-columns:minmax(0,1fr)}
.effy-carte--stack .effy-carte__panel{position:static;max-height:none}
.effy-carte--stack .effy-carte__list{columns:1}

/* Carte : fond blanc, cadre discret et ombre portée */
.effy-carte__map{
	position:relative;width:100%;margin:0 auto;padding:1.25rem 1.25rem 1rem;
	background:#fff;border:.0625rem solid var(--ec-border);border-radius:var(--ec-radius);
	box-shadow:0 .75rem 2rem color-mix(in srgb,var(--ec-ink) 9%,transparent)
}
.effy-carte__svg{display:block;width:100%;height:auto;overflow:visible}

/* Zone 1 : le département (points pâles + contour fin) */
.effy-carte__dep{fill:none;stroke:color-mix(in srgb,var(--ec-primary) 22%,#fff);stroke-width:1.5;stroke-linejoin:round}
.effy-carte__dot{fill:var(--ec-dep);transition:fill .18s,opacity .18s,transform .18s;transform-box:fill-box;transform-origin:center}
/* Zone 2 : Nantes Métropole, zone desservie garantie (points colorés + contour) */
.effy-carte__nm{fill:color-mix(in srgb,var(--ec-mid) 9%,transparent);stroke:var(--ec-mid);stroke-width:2;stroke-linejoin:round;stroke-dasharray:6 5}
.effy-carte__dot.is-nm{fill:var(--ec-nm)}
/* Zone 3 : communes avec une page dédiée (points foncés cliquables) */
.effy-carte__dot.is-on{fill:var(--ec-primary);cursor:pointer;filter:drop-shadow(0 0 .15rem #fff)}
.effy-carte__dot.is-on:focus{outline:0}
.effy-carte__dot.is-on:focus-visible{stroke:var(--ec-ink);stroke-width:2.5}
.effy-carte__dot.is-hover{fill:var(--ec-dark);transform:scale(1.35)}
.effy-carte__dot.is-sel{fill:var(--ec-dark);transform:scale(1.7);filter:drop-shadow(0 0 .3rem color-mix(in srgb,var(--ec-primary) 70%,transparent))}

.effy-carte__legend{display:flex;flex-wrap:wrap;gap:.4rem 1.25rem;justify-content:center;margin:1rem 0 0;padding:0;list-style:none;font-size:.8125rem;color:var(--ec-muted)}
.effy-carte__legend li::before{content:"";display:inline-block;width:.7rem;height:.7rem;margin-right:.45rem;border-radius:50%;vertical-align:-.05rem;background:var(--ec-dep);border:.0625rem solid color-mix(in srgb,var(--ec-primary) 30%,#fff)}
.effy-carte__legend .is-nm::before{background:var(--ec-nm);border-color:var(--ec-mid)}
.effy-carte__legend .is-own::before{background:var(--ec-primary);border-color:var(--ec-primary)}

.effy-carte__tip{
	position:absolute;z-index:3;pointer-events:none;transform:translate(-50%,-135%);
	padding:.4rem .65rem;border-radius:.4rem;font-size:.8125rem;white-space:nowrap;
	background:var(--ec-ink);color:#fff;box-shadow:0 .25rem .9rem color-mix(in srgb,var(--ec-ink) 30%,transparent)
}
.effy-carte__tip[hidden]{display:none}

/* Panneau */
.effy-carte__panel{
	padding:1.25rem 1.4rem;border:.0625rem solid var(--ec-border);border-radius:var(--ec-radius);
	background:#fff;box-shadow:0 .75rem 2rem color-mix(in srgb,var(--ec-ink) 9%,transparent)
}
.effy-carte__hint{margin:0 0 1rem;font-size:.875rem;color:var(--ec-muted)}
.effy-carte__panel h3{margin:1.1rem 0 .5rem;font-size:.8125rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ec-primary)}
.effy-carte__all h3:first-of-type{margin-top:0}
.effy-carte__sec h3{margin:0 0 .75rem;font-size:1.35rem;font-weight:700;letter-spacing:0;text-transform:none;color:var(--ec-ink)}
.effy-carte__sec h3 span{color:var(--ec-muted);font-size:.8em;font-weight:400}
.effy-carte__txt{margin:0 0 1rem;color:var(--ec-muted)}
.effy-carte__back{margin:0 0 .6rem}
.effy-carte__back button{appearance:none;background:none;border:0;padding:0;font:inherit;font-size:.8125rem;color:var(--ec-primary);cursor:pointer;text-align:left}
.effy-carte__back button:hover{text-decoration:none;color:var(--ec-dark)}
.effy-carte .effy-carte__list{list-style:none;margin:0;padding:0;columns:2;column-gap:1.4rem}
@media (max-width:30rem){.effy-carte .effy-carte__list{columns:1}}
.effy-carte__list li{break-inside:avoid;padding:.3rem 0;display:flex;align-items:center;gap:.5rem;list-style:none}
.effy-carte__link{color:var(--ec-ink);text-decoration:none;border-bottom:.0625rem solid var(--ec-border);transition:color .15s,border-color .15s}
.effy-carte__link:hover,.effy-carte__link:focus-visible{color:var(--ec-primary);border-color:var(--ec-primary)}
.effy-carte__go{appearance:none;background:none;border:0;padding:0 .2rem;font-size:.6rem;line-height:1;color:var(--ec-primary);cursor:pointer;opacity:.7}
.effy-carte__go:hover,.effy-carte__go:focus-visible{opacity:1}
.effy-carte__btn{display:inline-block;padding:.65rem 1.1rem;border-radius:var(--effy-btn-radius,62rem);background:var(--ec-primary);color:#fff;text-decoration:none;font-weight:600;font-size:.9375rem;transition:background .2s}
.effy-carte__btn:hover,.effy-carte__btn:focus-visible{background:var(--ec-dark);color:#fff}
.effy-carte__btn--ghost{background:transparent;color:var(--ec-primary);border:.0625rem solid var(--ec-primary)}
.effy-carte__btn--ghost:hover,.effy-carte__btn--ghost:focus-visible{background:var(--ec-tint);color:var(--ec-dark)}

/* Panneau par défaut : les trois zones de la carte */
.effy-carte__panel h3.effy-carte__ptitle{margin:0 0 1rem;font-size:1.1rem;font-weight:700;letter-spacing:0;text-transform:none;color:var(--ec-ink)}
.effy-carte .effy-carte__zones{list-style:none;margin:0;padding:0;display:grid;gap:1rem}
.effy-carte__zones li{display:grid;grid-template-columns:auto 1fr;column-gap:.75rem;align-items:start;list-style:none}
.effy-carte__zones li::before{content:"";width:.85rem;height:.85rem;margin-top:.3rem;border-radius:50%;background:var(--ec-dep);border:.0625rem solid color-mix(in srgb,var(--ec-primary) 30%,#fff)}
.effy-carte__zones .is-nm::before{background:var(--ec-nm);border-color:var(--ec-mid)}
.effy-carte__zones .is-own::before{background:var(--ec-primary);border-color:var(--ec-primary)}
.effy-carte__zones strong{display:block;color:var(--ec-ink)}
.effy-carte__zones span{grid-column:2;color:var(--ec-muted);font-size:.9375rem}
.effy-carte__cta{margin:1.5rem 0 0}
/* Légende sous la carte : seulement dans la disposition « stack » (le panneau n'y est pas affiché) */
.effy-carte:not(.effy-carte--stack) .effy-carte__legend{display:none}
/* Liste des communes pour les lecteurs d'écran et les moteurs, invisible à l'écran */
.effy-carte__index{position:absolute;width:.0625rem;height:.0625rem;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.effy-carte{position:relative}

/* Avec JavaScript : la liste de toutes les communes cède la place à la commune choisie. Sans JavaScript : la liste reste visible et indexable. */
.effy-carte__sec{display:none}
.effy-carte.is-ready .effy-carte__sec.is-open{display:block}
.effy-carte.is-ready.has-open .effy-carte__all{display:none}

@media (prefers-reduced-motion:reduce){
	.effy-carte__dot{transition:none}
	.effy-carte__dot.is-hover,.effy-carte__dot.is-sel{transform:none}
}
