/* ============================================================
   FADE-IN ON SCROLL
   ============================================================ */
.fade-in {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.fade-in.visible {
  opacity: 1;
  transform: none;
}

/* ============================================================
   PAGE TRANSITION ANIMATIONS (View Transitions API)
   ============================================================ */
@view-transition { navigation: auto; }

::view-transition-old(root) {
  animation: 0.25s ease-out both vt-fade-out;
}
::view-transition-new(root) {
  animation: 0.25s ease-in both vt-fade-in;
}

@keyframes vt-fade-out { to { opacity: 0; } }
@keyframes vt-fade-in { from { opacity: 0; } }

/* ============================================================
   REDUCED MOTION OVERRIDE
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  .fade-in {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .cursor { animation: none; opacity: 1; }
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none;
  }
}
