/* =====================================================================
   SUNDRA FARMS — animations.css
   Keyframes + scroll-reveal + micro-interactions
   ===================================================================== */

@keyframes loaderSlide { 0% { transform: translateX(-100%); } 100% { transform: translateX(350%); } }
@keyframes float { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-22px) rotate(3deg); } }
@keyframes scrollLine { 0% { transform: scaleY(0); transform-origin: top; } 50% { transform: scaleY(1); transform-origin: top; } 50.1% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes pulse { 0% { transform: scale(1); opacity: .8; } 100% { transform: scale(1.8); opacity: 0; } }
@keyframes popIn { 0% { transform: scale(.9); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
@keyframes spinSlow { to { transform: rotate(360deg); } }
@keyframes shimmer { 0% { background-position: -400px 0; } 100% { background-position: 400px 0; } }

/* --------------------- Scroll reveal (custom, no dep) ---------------- */
[data-reveal] { opacity: 0; transform: translateY(38px); transition: opacity .9s var(--ease), transform .9s var(--ease); will-change: opacity, transform; }
[data-reveal].is-in { opacity: 1; transform: none; }
[data-reveal="left"] { transform: translateX(-46px); }
[data-reveal="right"] { transform: translateX(46px); }
[data-reveal="scale"] { transform: scale(.92); }
[data-reveal="left"].is-in, [data-reveal="right"].is-in, [data-reveal="scale"].is-in { transform: none; }
[data-reveal-delay="1"] { transition-delay: .12s; }
[data-reveal-delay="2"] { transition-delay: .24s; }
[data-reveal-delay="3"] { transition-delay: .36s; }
[data-reveal-delay="4"] { transition-delay: .48s; }
[data-reveal-delay="5"] { transition-delay: .6s; }

/* Hero / page-hero entrance.
   SAFETY: content is always fully visible (opacity is never animated or set to 0).
   The entrance animates TRANSFORM ONLY, so if the animation is paused, blocked,
   unsupported or interrupted, the text simply sits in place — it can NEVER go blank. */
@keyframes heroRise { from { transform: translateY(24px); } to { transform: translateY(0); } }
.gsap-hero { animation: heroRise .8s var(--ease) both; }
.hero__eyebrow.gsap-hero, .pagehero .gsap-hero:first-child { animation-delay: .05s; }
.hero h1 .gsap-hero:nth-of-type(1) { animation-delay: .12s; }
.hero h1 .gsap-hero:nth-of-type(2) { animation-delay: .2s; }
.hero h1 .gsap-hero:nth-of-type(3) { animation-delay: .28s; }
.hero__lead.gsap-hero { animation-delay: .3s; }
.hero__cta.gsap-hero { animation-delay: .38s; }
.pagehero h1.gsap-hero { animation-delay: .12s; }
.pagehero p.gsap-hero { animation-delay: .22s; }

/* Word-by-word hero reveal */
.reveal-line { display: block; overflow: hidden; }
.reveal-line > span { display: inline-block; transform: translateY(110%); transition: transform 1s var(--ease); }
.is-loaded .reveal-line > span { transform: translateY(0); }
.is-loaded .reveal-line:nth-child(1) > span { transition-delay: .15s; }
.is-loaded .reveal-line:nth-child(2) > span { transition-delay: .3s; }
.is-loaded .reveal-line:nth-child(3) > span { transition-delay: .45s; }

/* Hover image reveal for gallery */
.hover-rise { transition: transform .5s var(--ease); }
.hover-rise:hover { transform: translateY(-6px); }

/* Shimmer skeleton (product loading) */
.skeleton { background: linear-gradient(90deg, var(--cream-2) 25%, #e4e0d6 37%, var(--cream-2) 63%); background-size: 800px 100%; animation: shimmer 1.4s infinite linear; border-radius: var(--radius-lg); }

/* Link underline sweep */
.link-sweep { position: relative; }
.link-sweep::after { content: ""; position: absolute; left: 0; bottom: -3px; width: 100%; height: 1.5px; background: var(--gold); transform: scaleX(0); transform-origin: right; transition: transform .4s var(--ease); }
.link-sweep:hover::after { transform: scaleX(1); transform-origin: left; }

/* Page transition fade */
.page-fade { animation: fadeInUp .7s var(--ease) both; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
  .gsap-hero { opacity: 1 !important; transform: none !important; animation: none !important; }
  .reveal-line > span { transform: none !important; }
}
