html { scroll-behavior: smooth; }
/* Fade-in: opacity only (no transform — transform on body creates a
   containing block that breaks position:fixed on descendants). */
body {
  opacity: 0;
  animation: dm-fadein 220ms ease-out forwards;
}
@keyframes dm-fadein {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@view-transition { navigation: auto; }
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 180ms;
  animation-timing-function: ease-out;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  body { animation: none; opacity: 1; }
  ::view-transition-old(root),
  ::view-transition-new(root) { animation-duration: 0ms; }
}
