/* =========================================================================
   animations.css — Keyframes & motion utilities
   ========================================================================= */

@keyframes flame-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.08); opacity: .85; }
}

@keyframes bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(6px); }
}

@keyframes pin-pulse {
  0% { transform: scale(.8); opacity: .9; }
  70% { transform: scale(1.9); opacity: 0; }
  100% { opacity: 0; }
}

@keyframes bump {
  0% { transform: scale(1); }
  35% { transform: scale(1.45); }
  60% { transform: scale(.9); }
  100% { transform: scale(1); }
}

@keyframes fav-pop {
  0% { transform: scale(1); }
  40% { transform: scale(1.35) rotate(-8deg); }
  70% { transform: scale(.92); }
  100% { transform: scale(1); }
}

@keyframes shimmer {
  100% { transform: translateX(100%); }
}
.shimmer::after { transform: translateX(-100%); }

@keyframes ripple {
  to { transform: scale(3.6); opacity: 0; }
}

@keyframes fade-up {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: translateY(0); }
}

.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger children of a revealed grid */
.menu-grid.reveal-group .item-card {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .55s var(--ease-out), transform .55s var(--ease-out);
}
.menu-grid.reveal-group.is-visible .item-card {
  opacity: 1;
  transform: translateY(0);
}
.menu-grid.reveal-group.is-visible .item-card:nth-child(1) { transition-delay: .02s; }
.menu-grid.reveal-group.is-visible .item-card:nth-child(2) { transition-delay: .07s; }
.menu-grid.reveal-group.is-visible .item-card:nth-child(3) { transition-delay: .12s; }
.menu-grid.reveal-group.is-visible .item-card:nth-child(4) { transition-delay: .17s; }
.menu-grid.reveal-group.is-visible .item-card:nth-child(5) { transition-delay: .22s; }
.menu-grid.reveal-group.is-visible .item-card:nth-child(6) { transition-delay: .27s; }

/* View Transitions API (progressive enhancement) */
@supports (view-transition-name: none) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation-duration: .4s;
  }
}
.vt-modal { view-transition-name: item-modal; }

/* Parallax hero (desktop only, driven from app.js via CSS var) */
@media (min-width: 901px) {
  .hero-media img {
    transform: translateY(calc(var(--parallax, 0) * 1px)) scale(1.08);
    transition: transform .05s linear;
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .hero-media img { transform: none !important; }
}
