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

@keyframes pulso {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}

.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.2, 0.9, 0.3, 1),
              transform 0.7s cubic-bezier(0.2, 0.9, 0.3, 1);
}

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

.badge { animation: pulso 3.5s ease-in-out infinite; }

.menu-card .menu-icon {
  transition: transform var(--transicion);
}

.menu-card:hover .menu-icon {
  transform: scale(1.18) rotate(-6deg);
}

/* ── Candy rain ── */
@keyframes candy-fall {
  from { transform: translateY(0) rotate(0deg); }
  to   { transform: translateY(130vh) rotate(360deg); }
}

#candy-rain {
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  overflow: hidden;
}

.candy {
  position: absolute;
  top: -12vh;
  font-size: clamp(1.4rem, 3vw, 2.2rem);
  opacity: 0.35;
  pointer-events: none;
  animation: candy-fall linear infinite;
}

@media (prefers-reduced-motion: reduce) {
  *:not(.candy), *:not(.candy)::before, *:not(.candy)::after {
    animation-duration: 0.001s !important;
    transition-duration: 0.001s !important;
  }
  .reveal { opacity: 1; transform: none; }
}
