/* Loyalsnap motion: page transitions + scroll reveal */
@view-transition { navigation: auto; }
header { view-transition-name: ls-header; }
::view-transition-group(ls-header) { animation-duration: 0s; }
::view-transition-old(root) { animation: ls-vt-out .28s cubic-bezier(.4,0,1,1) both; }
::view-transition-new(root) { animation: ls-vt-in .55s cubic-bezier(.16,1,.3,1) .05s both; }
@keyframes ls-vt-out { to { opacity: 0; transform: translateY(-12px) scale(.985); filter: blur(6px); } }
@keyframes ls-vt-in { from { opacity: 0; transform: translateY(28px) scale(.99); filter: blur(8px); } }

.ls-rv { opacity: 0; transform: translateY(32px) scale(.98); filter: blur(8px); }
.ls-rv.ls-in { opacity: 1; transform: none; filter: none;
  transition: opacity .8s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1), filter .8s cubic-bezier(.16,1,.3,1);
  transition-delay: var(--ls-d, 0ms); }

@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
  .ls-rv { opacity: 1; transform: none; filter: none; }
}
details.ls-closing > summary::after { transform: none !important; }
