/* Plan du site (choix de l'hébergement, arrivée, planning). */
.site-map { margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.site-map__canvas { position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); background: #e7efe3; }
.site-map__art { position: absolute; inset: 0; width: 100%; height: 100%; }
.site-map__place { position: absolute; transform: translate(-50%, -50%); font-size: 0.68rem; font-weight: 650; letter-spacing: 0.04em; text-transform: uppercase; color: #5b6258; white-space: nowrap; pointer-events: none; }
.site-map__place--sea { color: #2f6c66; }
.map-pin { position: absolute; transform: translate(-50%, -50%); display: inline-grid; place-items: center; min-width: 26px; height: 20px; padding: 0 3px; border-radius: 999px; font-size: 0.6rem; font-weight: 700; color: #fff; background: #3b7a74; border: 2px solid #fff; box-shadow: 0 1px 3px rgb(0 0 0 / 25%); }
.map-pin--cabin { background: #8c6a48; }
.map-pin--pitch { background: #6d8a52; }
.map-pin.is-muted { opacity: 0.28; }
.map-pin.is-selectable { cursor: pointer; min-width: 32px; height: 26px; font-size: 0.66rem; }
.map-pin.is-selectable:hover { transform: translate(-50%, -50%) scale(1.12); }
.map-pin:has(input:checked) { background: var(--ochre); transform: translate(-50%, -50%) scale(1.2); z-index: 2; }
.map-pin:has(input:focus-visible) { outline: 3px solid var(--focus); outline-offset: 2px; }
.map-pin.is-highlight { background: var(--ochre); z-index: 2; transform: translate(-50%, -50%) scale(1.25); }
.map-pin.is-highlight::after { content: ""; position: absolute; inset: -8px; border-radius: 999px; border: 2px solid var(--ochre); animation: map-pulse 2s ease-out infinite; }
@keyframes map-pulse { from { opacity: 1; transform: scale(0.8); } to { opacity: 0; transform: scale(1.6); } }
.site-map__legend { display: flex; flex-wrap: wrap; gap: var(--space-3); font-size: 0.82rem; color: var(--ink-2); }
.site-map__legend .dot { display: inline-block; width: 10px; height: 10px; border-radius: 999px; margin-right: 6px; vertical-align: middle; }
.dot--lodge { background: #3b7a74; } .dot--cabin { background: #8c6a48; } .dot--pitch { background: #6d8a52; }
/* Sur téléphone, 42 étiquettes se chevauchent : de simples points, sauf l'hébergement mis en avant ou coché.
   Le choix se fait aussi dans la liste accessible sous le plan. */
@media (max-width: 560px) {
  .map-pin { min-width: 11px; width: 11px; height: 11px; padding: 0; border-width: 1.5px; }
  .map-pin > span:not(.sr-only) { display: none; }
  .map-pin.is-selectable { width: 18px; min-width: 18px; height: 18px; }
  .map-pin.is-highlight, .map-pin:has(input:checked) { width: auto; min-width: 30px; height: 20px; padding: 0 4px; }
  .map-pin.is-highlight > span, .map-pin:has(input:checked) > span { display: inline; font-size: 0.6rem; }
  .site-map__place { font-size: 0.56rem; }
}
