/* Page-change animation, driven by htmx's hx-boost + the View Transitions API. */

::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 0.5s;
  animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
  animation-fill-mode: both;
  mix-blend-mode: normal;
}

::view-transition-old(root) {
  animation-name: knp-page-out;
}

::view-transition-new(root) {
  animation-name: knp-page-in;
}

@keyframes knp-page-out {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(-16px) scale(0.98);
  }
}

@keyframes knp-page-in {
  from {
    opacity: 0;
    transform: translateY(20px) scale(1.01);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation-duration: 0.01ms;
  }
}
