/* Enhancement only: content remains visible when JS is unavailable. */
.has-motion [data-reveal] {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity var(--duration-base) var(--ease-out),
    transform var(--duration-base) var(--ease-out);
}

.has-motion [data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

.has-motion .map__graphic {
  opacity: 0.35;
  transform: scale(0.992);
}

.has-motion .map-city {
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.45);
}

.has-motion .map.is-active .map__graphic {
  animation: map-base-in 650ms var(--ease-in-out) forwards;
}

.has-motion .map.is-active .map-city {
  animation: map-city-in 560ms var(--city-delay) both;
}

@keyframes map-base-in {
  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes map-city-in {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.45);
  }

  48% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.16);
  }

  72% {
    transform: translate(-50%, -50%) scale(0.96);
  }

  100% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }

  .has-motion [data-reveal],
  .has-motion .map__graphic,
  .has-motion .map-city {
    opacity: 1;
    transform: none;
  }

  .has-motion .map-city {
    transform: translate(-50%, -50%);
  }
}
