/* Shared site navigation motion — hash zoom + cross-page tower wipe */

.pm-overlay {
  position: fixed;
  inset: 0;
  z-index: 100000;
  pointer-events: none;
  background: #0c0c0f;
  transform: translateY(105%);
  display: grid;
  place-items: center;
  overflow: hidden;
}

.pm-overlay::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent 0%, #e8ff47 35%, #e8ff47 65%, transparent 100%);
  box-shadow: 0 0 24px rgba(232, 255, 71, 0.55);
}

.pm-overlay::after {
  content: "Monster Tower Infinite";
  position: relative;
  font-family: "Syne", sans-serif;
  font-weight: 800;
  font-size: clamp(1.75rem, 5vw, 2.75rem);
  letter-spacing: -0.02em;
  color: #e8ff47;
  text-shadow: 0 0 28px rgba(232, 255, 71, 0.35);
  opacity: 0.92;
}

.pm-overlay.pm-leave-active {
  pointer-events: auto;
  animation: pm-tower-rise 0.4s cubic-bezier(0.75, 0, 1, 1) forwards;
}

.pm-overlay.pm-enter-active {
  transform: translateY(0);
  animation: pm-tower-reveal 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes pm-tower-rise {
  0% {
    transform: translateY(105%);
  }
  100% {
    transform: translateY(0);
  }
}

@keyframes pm-tower-reveal {
  0% {
    transform: translateY(0);
  }
  100% {
    transform: translateY(-105%);
  }
}

/* Destination section: brief zoom-in settle after accelerated scroll */
.pm-arrive {
  animation: pm-arrive 0.48s cubic-bezier(0.16, 1, 0.3, 1) both;
  transform-origin: 50% 12%;
}

@keyframes pm-arrive {
  0% {
    transform: scale(0.965);
    filter: brightness(1.12);
  }
  55% {
    transform: scale(1.012);
    filter: brightness(1.04);
  }
  100% {
    transform: scale(1);
    filter: brightness(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .pm-overlay,
  .pm-arrive {
    animation: none !important;
  }

  .pm-overlay.pm-leave-active,
  .pm-overlay.pm-enter-active {
    display: none;
  }
}
