/* ═══════════════════════════════════════════════════════
   Farm Diamond — Animations CSS
   Scroll Reveals · Hover States · Keyframes
   ═══════════════════════════════════════════════════════ */

/* ─── Scroll Fade-Up (IntersectionObserver driven) ───── */
.fd-fade-up {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.fd-fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Staggered children */
.fd-stagger > * {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.fd-stagger.visible > *:nth-child(1) { transition-delay: 0.05s; }
.fd-stagger.visible > *:nth-child(2) { transition-delay: 0.15s; }
.fd-stagger.visible > *:nth-child(3) { transition-delay: 0.25s; }
.fd-stagger.visible > *:nth-child(4) { transition-delay: 0.35s; }
.fd-stagger.visible > * {
  opacity: 1;
  transform: translateY(0);
}

/* Fade in from left */
.fd-fade-left {
  opacity: 0;
  transform: translateX(-30px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.fd-fade-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* Fade in from right */
.fd-fade-right {
  opacity: 0;
  transform: translateX(30px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.fd-fade-right.visible {
  opacity: 1;
  transform: translateX(0);
}

/* Scale up reveal */
.fd-scale-in {
  opacity: 0;
  transform: scale(0.94);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.fd-scale-in.visible {
  opacity: 1;
  transform: scale(1);
}

/* ─── Custom delay helpers ───────────────────────────── */
[data-delay="100"] { transition-delay: 0.1s; }
[data-delay="200"] { transition-delay: 0.2s; }
[data-delay="300"] { transition-delay: 0.3s; }
[data-delay="400"] { transition-delay: 0.4s; }
[data-delay="500"] { transition-delay: 0.5s; }
[data-delay="600"] { transition-delay: 0.6s; }

/* ─── Nutrition bar animation ────────────────────────── */
.nut-bar {
  width: 0;
  transition: width 1.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.nut-bar.animate {
  /* width set inline via data-width */
}

/* ─── Button micro-interactions ──────────────────────── */
.btn {
  position: relative;
  overflow: hidden;
}
.btn::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0);
  transition: background 0.2s ease;
}
.btn:active::after {
  background: rgba(255, 255, 255, 0.1);
}

/* ─── Hero entrance animation ────────────────────────── */
.fd-hero .hero-content {
  animation: hero-enter 0.8s ease both;
}
.fd-hero .hero-visual {
  animation: hero-enter 0.8s ease 0.2s both;
}
@keyframes hero-enter {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ─── Step circles stagger on scroll ─────────────────── */
.steps-row.visible .step-item:nth-child(1) { transition-delay: 0.05s; }
.steps-row.visible .step-item:nth-child(2) { transition-delay: 0.15s; }
.steps-row.visible .step-item:nth-child(3) { transition-delay: 0.25s; }
.steps-row.visible .step-item:nth-child(4) { transition-delay: 0.35s; }

/* ─── Smooth hover lift helper ───────────────────────── */
.fd-lift {
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.fd-lift:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-hover);
}

/* ─── Orange underline link hover ────────────────────── */
.fd-link {
  position: relative;
  color: var(--fd-orange);
  font-weight: 600;
}
.fd-link::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--fd-orange);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.25s ease;
}
.fd-link:hover::after {
  transform: scaleX(1);
}
