/* Annuaire SISD : carte, communes, catégories, fiches. Reprend les couleurs du thème SISD. */

.sisd-ann-map-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: start; }

/* Carte : points cliquables placés sur l'image des communes. */
.sisd-ann-map { position: relative; max-width: 624px; margin-inline: auto; }
.sisd-ann-map img { display: block; width: 100%; height: auto; }
.sisd-ann-map__pins { list-style: none; margin: 0; padding: 0; }
.sisd-ann-map__pins li { position: absolute; transform: translate(-50%, -50%); }
.sisd-ann-map__pins a {
	display: block; width: 16px; height: 16px; border-radius: 50%;
	background: var(--sisd-lime, #c4d96f); border: 2px solid var(--sisd-slate, #2e4357);
	box-shadow: 0 0 0 4px rgba(196, 217, 111, .35); transition: transform .2s, background-color .2s;
}
.sisd-ann-map__pins a span {
	position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%);
	white-space: nowrap; pointer-events: none; opacity: 0; transition: opacity .15s;
	background: var(--sisd-slate, #2e4357); color: #fff; border-radius: 8px; padding: 6px 9px;
	font: 600 13px/1 var(--sisd-display, sans-serif);
}
.sisd-ann-map__pins a:hover, .sisd-ann-map__pins a:focus-visible { transform: scale(1.3); background: #fff; }
.sisd-ann-map__pins a:hover span, .sisd-ann-map__pins a:focus-visible span { opacity: 1; }

/* Liste des communes avec recherche. */
.sisd-ann-filter { display: grid; gap: 8px; margin-bottom: 18px; font: 600 15px/1.2 var(--sisd-display, sans-serif); color: var(--sisd-slate, #2e4357); }
.sisd-ann-communes__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.sisd-ann-communes__list a {
	display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
	padding: 12px 14px; border: 1px solid var(--sisd-line, #dfe6d4); border-radius: 14px;
	text-decoration: none; color: var(--sisd-slate, #2e4357); background: #fff; transition: border-color .2s, background-color .2s;
}
.sisd-ann-communes__list a:hover { border-color: var(--sisd-lime, #c4d96f); background: var(--sisd-mist, #f7f9f2); }
.sisd-ann-communes__name { font: 600 15.5px/1.2 var(--sisd-display, sans-serif); }
.sisd-ann-communes__count { font-size: 13px; color: var(--sisd-ink-soft, #5e6e7b); white-space: nowrap; }
.sisd-ann-communes__none { margin-top: 12px; }

/* Appels pour les prestataires. */
.sisd-ann-cta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; padding-bottom: 24px; }
.sisd-ann-cta__card {
	display: grid; gap: 8px; padding: 26px 28px; border-radius: 22px; text-decoration: none;
	background: var(--sisd-slate, #2e4357); color: #fff; transition: transform .25s, box-shadow .25s;
}
.sisd-ann-cta__card strong { font: 600 19px/1.3 var(--sisd-display, sans-serif); color: #fff; }
.sisd-ann-cta__card span { color: var(--sisd-lime, #c4d96f); font: 600 15px/1.2 var(--sisd-display, sans-serif); }
.sisd-ann-cta__card:hover { transform: translateY(-3px); box-shadow: 0 24px 44px -26px rgba(46, 67, 87, .6); color: #fff; }

/* Catégories (dans une commune) et communes (dans une catégorie). */
.sisd-ann-cats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 12px; }
.sisd-ann-cats a {
	display: flex; justify-content: space-between; align-items: center; gap: 12px;
	padding: 18px 20px; border: 1px solid var(--sisd-line, #dfe6d4); border-radius: 18px; background: #fff;
	text-decoration: none; color: var(--sisd-slate, #2e4357); transition: transform .2s, border-color .2s, box-shadow .2s;
}
.sisd-ann-cats a:hover { transform: translateY(-3px); border-color: var(--sisd-lime, #c4d96f); box-shadow: 0 20px 36px -26px rgba(46, 67, 87, .5); }
.sisd-ann-cats__name { font: 600 17px/1.25 var(--sisd-display, sans-serif); }
.sisd-ann-cats__count {
	min-width: 34px; height: 34px; padding: 0 10px; border-radius: 999px; display: inline-grid; place-items: center;
	background: var(--sisd-lime-soft, #e3ecbf); font: 700 14px/1 var(--sisd-display, sans-serif); font-variant-numeric: tabular-nums;
}
.sisd-ann-back { margin-top: 36px; }

/* Fiches dans une liste. */
.sisd-ann-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 16px; }
.sisd-ann-card { display: grid; gap: 12px; align-content: start; padding: 22px 24px; border: 1px solid var(--sisd-line, #dfe6d4); border-radius: 20px; background: #fff; }
.sisd-ann-card__name { margin: 0; font: 600 19px/1.25 var(--sisd-display, sans-serif); }
.sisd-ann-card__name a { color: var(--sisd-slate, #2e4357); text-decoration: none; }
.sisd-ann-card__name a:hover { color: var(--sisd-green, #55721a); }
.sisd-ann-card__more { justify-self: start; font: 600 14.5px/1.2 var(--sisd-display, sans-serif); color: var(--sisd-slate, #2e4357); text-decoration: none; padding-bottom: 2px; border-bottom: 2px solid var(--sisd-lime, #c4d96f); }

/* Coordonnées. */
.sisd-ann-contact { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: 15.5px; }
.sisd-ann-contact__adr { margin-bottom: 4px; }
.sisd-ann-contact__label { display: inline-block; min-width: 76px; font: 600 13px/1.4 var(--sisd-display, sans-serif); color: var(--sisd-ink-soft, #5e6e7b); }
.sisd-ann-contact a { overflow-wrap: anywhere; }

/* Fiche détaillée. */
.sisd-ann-fiche { display: grid; grid-template-columns: minmax(0, 340px) minmax(0, 1fr); gap: 48px; align-items: start; }
.sisd-ann-fiche__side { padding: 26px; border-radius: 22px; background: var(--sisd-mist, #f7f9f2); border: 1px solid var(--sisd-line, #dfe6d4); position: sticky; top: calc(var(--sisd-header-h, 82px) + 24px); }
.sisd-ann-fiche__photo img { width: 100%; height: auto; border-radius: 16px; margin-bottom: 18px; display: block; }
.sisd-ann-fiche__main { display: grid; gap: 30px; }
.sisd-ann-fiche__h { margin: 0 0 10px; font: 600 1.25rem/1.25 var(--sisd-display, sans-serif); }
.sisd-ann-gallery { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.sisd-ann-gallery img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 14px; display: block; }

@media (max-width: 960px) {
	.sisd-ann-map-wrap, .sisd-ann-fiche { grid-template-columns: 1fr; }
	.sisd-ann-fiche__side { position: static; }
}
@media (max-width: 640px) {
	.sisd-ann-cta { grid-template-columns: 1fr; }
	.sisd-ann-map__pins a { width: 12px; height: 12px; }
}
@media (max-width: 420px) {
	.sisd-ann-communes__list { grid-template-columns: 1fr; }
}
