/**
 * animations/reveal.css — Animações de scroll reveal e float
 */

/* ========== REVEAL ON SCROLL ========== */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal.visible {
  opacity: 1;
  transform: none;
}

/* ========== FLOATING ANIMATIONS ========== */
@keyframes floatUp {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-12px); }
}
@keyframes floatDown {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(12px); }
}

/* ========== TEXT CLIP ANIMATION ========== */
.text-clip-anim {
  animation: textReveal 1.2s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes textReveal {
  from { opacity: 0; transform: translateY(40px); }
  to   { opacity: 1; transform: none; }
}

/* ========== REVIEWS MARQUEE ========== */
@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.reviews-wrap {
  overflow: hidden;
}
.reviews-wrap:hover .reviews-track {
  animation-play-state: paused;
}
.reviews-track {
  display: flex;
  gap: 24px;
  animation: marquee 35s linear infinite;
  width: max-content;
}
