/* ── animations.css ── Keyframes and reveal system ── */

/* ── Entry animations (hero) ── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

.hero-badge   { animation: fadeUp .6s ease both; }
.hero-title   { animation: fadeUp .6s .1s ease both; }
.hero-desc    { animation: fadeUp .6s .2s ease both; }
.hero-btns    { animation: fadeUp .6s .3s ease both; }
.hero-trust   { animation: fadeUp .6s .38s ease both; }
.hero-illo    { animation: fadeUp .8s .3s ease both; }

/* ── Scroll reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s ease, transform .7s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal-d1 { transition-delay: .1s; }
.reveal-d2 { transition-delay: .2s; }
.reveal-d3 { transition-delay: .32s; }

/* ── Badge dot pulse ── */
@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%       { transform: scale(1.35); opacity: .65; }
}
.badge-dot { animation: pulse 2.5s ease-in-out infinite; }

/* ── Floating orbs ── */
@keyframes orbFloat {
  0%, 100% { transform: translate(0, 0); }
  33%       { transform: translate(30px, -20px); }
  66%       { transform: translate(-15px, 15px); }
}

/* ── Floating cards ── */
@keyframes floatCard {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-8px); }
}

/* ── WhatsApp button pop ── */
@keyframes waPop {
  from { opacity: 0; transform: scale(.6) translateY(20px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}

/* ── Shimmer on featured price card ── */
@keyframes shimmer {
  from { background-position: -200% center; }
  to   { background-position: 200% center; }
}
.price-card--featured::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-xl);
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,.04) 50%,
    transparent 100%);
  background-size: 200% 100%;
  animation: shimmer 4s linear infinite;
  pointer-events: none;
}
