.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity var(--duration-reveal) var(--ease),
              transform var(--duration-reveal) var(--ease);
  will-change: opacity, transform;
}

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

.reveal[data-delay="1"] { transition-delay: 60ms; }
.reveal[data-delay="2"] { transition-delay: 120ms; }
.reveal[data-delay="3"] { transition-delay: 180ms; }
.reveal[data-delay="4"] { transition-delay: 240ms; }
.reveal[data-delay="5"] { transition-delay: 300ms; }

@keyframes pulse-dot {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(138, 149, 88, 0.55);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(138, 149, 88, 0);
  }
}

.pulse-dot {
  animation: pulse-dot 2.4s var(--ease) infinite;
}

@keyframes float-y {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}

.float-y { animation: float-y 4s var(--ease) infinite; }

@keyframes marquee-x {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.marquee-track { animation: marquee-x 40s linear infinite; }

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal.is-visible {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .pulse-dot,
  .float-y,
  .marquee-track {
    animation: none !important;
  }
}
