/* Native page transitions preserve real URLs, browser history and normal links. */
@view-transition {
  navigation: auto;
}

.site-header {
  view-transition-name: site-header;
}

/* The page transition supplies the entrance when returning to the homepage. */
html:active-view-transition .intro-enter {
  animation: none;
  opacity: 1;
  transform: none;
}

::view-transition-group(root),
::view-transition-group(site-header) {
  animation-duration: 420ms;
  animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
}

::view-transition-old(root) {
  animation: page-leave 220ms ease-out both;
  mix-blend-mode: normal;
}

::view-transition-new(root) {
  animation: page-arrive 420ms cubic-bezier(0.19, 1, 0.22, 1) both;
  mix-blend-mode: normal;
}

/* Keep the navigation anchored while the page beneath it changes. */
::view-transition-old(site-header),
::view-transition-new(site-header) {
  animation: none;
  mix-blend-mode: normal;
}

::view-transition-old(site-header) {
  opacity: 0;
}

@keyframes page-leave {
  to {
    opacity: 0;
    transform: translateY(-5px);
  }
}

@keyframes page-arrive {
  from {
    opacity: 0;
    transform: translateY(9px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  @view-transition {
    navigation: none;
  }

  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*) {
    animation: none !important;
  }
}
