@media (prefers-reduced-motion: no-preference) {
  @view-transition {
    navigation: auto;
  }

  ::view-transition-group(root) {
    animation-duration: 500ms;
    animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
  }

  ::view-transition-old(root),
  ::view-transition-new(root) {
    backface-visibility: hidden;
    mix-blend-mode: normal;
  }

  ::view-transition-old(root) {
    animation: pharaohs-page-out 180ms cubic-bezier(0.4, 0, 1, 1) both;
  }

  ::view-transition-new(root) {
    animation: pharaohs-page-in 420ms 25ms cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  main h1 {
    transform-origin: left 70%;
    animation: pharaohs-title-arrival 1.45s 70ms cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  .hero-media,
  .page-hero__stamp,
  .pickup-card {
    animation: pharaohs-visual-arrival 1.5s 120ms cubic-bezier(0.22, 1, 0.36, 1) both;
  }
}

@keyframes pharaohs-page-out {
  to {
    opacity: 0;
    transform: translate3d(0, -6px, 0) scale(0.995);
  }
}

@keyframes pharaohs-page-in {
  from {
    opacity: 0;
    transform: translate3d(0, 10px, 0) scale(0.995);
  }

  to {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}

@keyframes pharaohs-title-arrival {
  0% {
    opacity: 0;
    transform: translate3d(0, 18px, 0) scale(0.985);
  }

  38% {
    opacity: 1;
    transform: translate3d(0, -3px, 0) scale(1.005) rotate(-0.25deg);
  }

  56% {
    transform: translate3d(0, 2px, 0) scale(0.998) rotate(0.12deg);
  }

  76% {
    transform: translate3d(0, -1px, 0) scale(1.001) rotate(-0.06deg);
  }

  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0);
  }
}

@keyframes pharaohs-visual-arrival {
  0% {
    opacity: 0;
    translate: 0 18px;
    scale: 0.96;
  }

  46% {
    opacity: 1;
    translate: 0 -4px;
    scale: 1.012;
  }

  68% {
    translate: 0 2px;
    scale: 0.997;
  }

  100% {
    opacity: 1;
    translate: 0 0;
    scale: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  main h1,
  .hero-media,
  .page-hero__stamp,
  .pickup-card {
    animation: none;
  }
}
