@keyframes rise-in {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes orbit {
  to { transform: rotate(360deg); }
}

@keyframes pulse {
  50% { transform: scale(1.75); opacity: .48; }
}

@keyframes photo-arrive {
  from { opacity: 0; transform: translateY(12px) scale(.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.can-animate .reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .65s ease, transform .65s ease;
  transition-delay: var(--reveal-delay, 0ms);
}

.can-animate .reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.memory-card.open .photo-grid a { animation: photo-arrive .45s both; }
.memory-card.open .photo-grid a:nth-child(2) { animation-delay: .08s; }
.memory-card.open .photo-grid a:nth-child(3) { animation-delay: .16s; }
.memory-card.open .photo-grid a:nth-child(4) { animation-delay: .24s; }
.memory-card.open .photo-grid a:nth-child(5) { animation-delay: .32s; }
.memory-card.open .photo-grid a:nth-child(6) { animation-delay: .4s; }

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