/* Content stays visible even when a mobile browser skips intersection callbacks. */
.reveal {
  opacity: 1;
  transform: none;
}

.reveal.in {
  animation: safe-fade-up .55s cubic-bezier(.2, .7, .2, 1) both;
}

@keyframes safe-fade-up {
  from { opacity: .55; transform: translateY(12px); }
  to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}
