/* =============================================
   FAVO DE MEL — Scroll Animations
   ============================================= */

/* Base: elementos ficam invisíveis antes de animar */
[data-anim] {
  opacity: 0;
  transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
  transition-property: opacity, transform, filter;
  transition-duration: 700ms;
}

[data-anim="fade-up"]    { transform: translateY(40px); }
[data-anim="fade-down"]  { transform: translateY(-30px); }
[data-anim="fade-left"]  { transform: translateX(-50px); }
[data-anim="fade-right"] { transform: translateX(50px); }
[data-anim="zoom-in"]    { transform: scale(0.88); }
[data-anim="flip"]       { transform: rotateX(20deg) translateY(30px); transform-origin: top center; }

/* Quando visível */
[data-anim].is-visible {
  opacity: 1;
  transform: none;
  filter: none;
}

/* Delays escalonados para grids */
[data-delay="100"] { transition-delay: 100ms; }
[data-delay="200"] { transition-delay: 200ms; }
[data-delay="300"] { transition-delay: 300ms; }
[data-delay="400"] { transition-delay: 400ms; }
[data-delay="500"] { transition-delay: 500ms; }
[data-delay="600"] { transition-delay: 600ms; }

/* Parallax hero blob */
.parallax-hero {
  will-change: transform;
  transition: transform 0.1s linear;
}

/* Número contador */
.count-up {
  display: inline-block;
}

/* Pulse ring no badge */
@keyframes ping-soft {
  0%   { transform: scale(1); opacity: 0.6; }
  80%  { transform: scale(1.6); opacity: 0; }
  100% { transform: scale(1.6); opacity: 0; }
}
.badge-ping::before {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 9999px;
  border: 2px solid currentColor;
  animation: ping-soft 2.5s ease-out infinite;
  opacity: 0;
}

/* Blob morphing background */
@keyframes blob-morph {
  0%,100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
  25%      { border-radius: 40% 60% 55% 45% / 35% 65% 45% 55%; }
  50%      { border-radius: 50% 50% 40% 60% / 50% 40% 60% 50%; }
  75%      { border-radius: 35% 65% 60% 40% / 55% 35% 65% 45%; }
}
.blob-morph {
  animation: blob-morph 8s ease-in-out infinite;
}

/* Floating particles */
@keyframes float-particle {
  0%, 100% { transform: translateY(0) rotate(0deg); opacity: 0.4; }
  50%       { transform: translateY(-20px) rotate(180deg); opacity: 0.8; }
}
.particle {
  position: absolute;
  pointer-events: none;
  animation: float-particle var(--dur, 4s) ease-in-out infinite;
  animation-delay: var(--delay, 0s);
}
