[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
}

.js-ready [data-reveal] {
  transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out);
}

.no-js [data-reveal],
.reveal-done {
  opacity: 1 !important;
  transform: none !important;
}

[data-reveal="fade"] {
  transform: none;
}

[data-reveal="scale"] {
  transform: scale(0.92);
}

[data-reveal="left"] {
  transform: translateX(-40px);
}

[data-reveal="right"] {
  transform: translateX(40px);
}

.hover-tilt {
  transition: transform 0.4s var(--ease-out);
}

@media (prefers-reduced-motion: no-preference) {
  .hover-tilt:hover {
    transform: translateY(-4px) rotate(-0.3deg);
  }
}

.float-slow {
  animation: floatY 6s ease-in-out infinite;
}

@keyframes floatY {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-14px);
  }
}

.pulse-dot {
  animation: pulseDot 2.2s ease-in-out infinite;
}

@keyframes pulseDot {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(255, 95, 46, 0.4);
  }
  50% {
    box-shadow: 0 0 0 8px rgba(255, 95, 46, 0);
  }
}
