/* Smooth page transitions — cross-document View Transitions + enter fade fallback */

@view-transition {
  navigation: auto;
}

::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 0.45s;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Case study pages (and any shell without styles.css) get a soft enter */
body {
  opacity: 0;
  transition: opacity 0.45s cubic-bezier(0.16, 1, 0.3, 1);
}

body.loaded {
  opacity: 1;
}

/* Keep the new page fully visible while a view transition snapshots it */
html:active-view-transition body {
  opacity: 1;
  transition: none;
}

/* JS fallback exit for browsers without cross-document view transitions */
html.page-exit body {
  opacity: 0;
  transition: opacity 0.28s ease;
}

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

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

  body {
    opacity: 1;
    transition: none;
  }

  html.page-exit body {
    transition: none;
    opacity: 1;
  }
}
