/* ==========================================================================
   Keyframes & motion states
   Initial "hidden" states are only applied when JS + GSAP are running
   (class .motion-ready on <html>), so content is never lost without JS.
   ========================================================================== */

@keyframes cue {
  0% { transform: translateY(-110%); }
  60%, 100% { transform: translateY(260%); }
}
@keyframes pulse {
  0% { box-shadow: 0 0 0 0 rgba(155, 176, 112, 0.55); }
  70% { box-shadow: 0 0 0 8px rgba(155, 176, 112, 0); }
  100% { box-shadow: 0 0 0 0 rgba(155, 176, 112, 0); }
}
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }

/* Pre-hide elements that GSAP will reveal (prevents flash before JS runs) */
.motion-ready [data-reveal] { opacity: 0; }
.motion-ready [data-media-reveal] { clip-path: inset(100% 0 0 0); }
.motion-ready [data-hero-fade] { opacity: 0; }
.motion-ready .hero__title .line__inner { transform: translateY(105%); }
.motion-ready .hero__frame { clip-path: inset(9% 7% 9% 7%); }

/* SplitText line masks */
.split-line { overflow: hidden; padding-bottom: 0.06em; margin-bottom: -0.06em; }

/* Menu category switch */
.menu__panel.is-entering .dish { animation: fade-in 0.5s var(--ease-out) both; }

/* Reduced motion: everything visible, nothing moves */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .motion-ready [data-reveal],
  .motion-ready [data-hero-fade] { opacity: 1; }
  .motion-ready [data-media-reveal],
  .motion-ready .hero__frame { clip-path: none; }
  .motion-ready .hero__title .line__inner { transform: none; }
  .js .preloader { display: none; }
  .hero__embers { display: none; }
  .value__word { --p: 100% !important; }
}

/* Split headings stay hidden until SplitText has measured them */
.motion-ready [data-split], .motion-ready [data-split-lines] { visibility: hidden; }
@media (prefers-reduced-motion: reduce) {
  .motion-ready [data-split], .motion-ready [data-split-lines] { visibility: visible; }
}
