/* =============================================
   GLOBALREACH - Animations CSS
   ============================================= */

/* Hero text entrance */
.hero-content .eyebrow {
  animation: fadeInUp 0.6s ease both;
  animation-delay: 0.1s;
}
.hero-heading .line { display: block; overflow: hidden; }
.hero-heading .word {
  display: inline-block;
  opacity: 0;
  transform: translateY(110%) rotate(4deg);
  animation: wordRise 0.75s cubic-bezier(0.2,0.7,0.2,1) both;
  animation-delay: calc(var(--i, 0) * 0.09s + 0.25s);
}
@keyframes wordRise {
  to { opacity: 1; transform: translateY(0) rotate(0deg); }
}
.hero-content p {
  animation: fadeInUp 0.7s ease both;
  animation-delay: 1.05s;
}
.hero-actions {
  animation: fadeInUp 0.7s ease both;
  animation-delay: 1.2s;
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Hero stats bar — animates when scrolled into view */
.hero-stats-bar.reveal-section.visible .hero-stat {
  animation: fadeInUp 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.hero-stats-bar.reveal-section.visible .hero-stat:nth-child(1) { animation-delay: 0.05s; }
.hero-stats-bar.reveal-section.visible .hero-stat:nth-child(2) { animation-delay: 0.12s; }
.hero-stats-bar.reveal-section.visible .hero-stat:nth-child(3) { animation-delay: 0.19s; }
.hero-stats-bar.reveal-section.visible .hero-stat:nth-child(4) { animation-delay: 0.26s; }

/* CTA band glow pulse when visible */
.cta-band.reveal-section.visible::before {
  animation: ctaGlow 6s ease-in-out infinite;
}
@keyframes ctaGlow {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.08); opacity: 0.85; }
}

/* Number count-up shimmer */
.counter {
  display: inline-block;
}

/* Floating badge */
.approach-badge {
  animation: floatBadge 4s ease-in-out infinite;
}
@keyframes floatBadge {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-8px); }
}

/* Gradient text flow on hero h1 */
.hero-heading em.word {
  background: linear-gradient(90deg, #e8b455, #ffffff, #e8b455);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: wordRise 0.75s cubic-bezier(0.2,0.7,0.2,1) both,
             shimmerText 3.5s linear infinite;
  animation-delay: calc(var(--i, 0) * 0.09s + 0.25s), 1.3s;
}
@keyframes shimmerText {
  0%   { background-position: 0% center; }
  100% { background-position: 200% center; }
}

/* Card hover lift */
.service-card,
.solution-item,
.insight-card,
.testimonial-card,
.related-link-card {
  will-change: transform;
}

/* Line animation for divider — only when parent is visible */
.reveal.visible .divider,
.reveal-section.visible .divider,
.section-intro.visible .divider {
  transform-origin: left;
  animation: growLine 0.8s cubic-bezier(0.4,0,0.2,1) both;
  animation-delay: 0.15s;
}
.divider--center {
  transform-origin: center;
}
@keyframes growLine {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* Stats band number glow */
.stat-block .num {
  text-shadow: 0 0 40px rgba(200,150,60,0.4);
}

/* Mobile nav slide */
.mobile-nav {
  will-change: transform;
}

/* Search overlay backdrop blur entrance */
.search-overlay {
  will-change: opacity;
}

/* Trust strip — subtle fade when section animates in */
.trust-strip.reveal-section.visible p {
  animation: fadeInUp 0.6s ease both;
}

/* Smooth scroll body class (desktop lerp active) */
html.is-smooth-scrolling {
  scroll-behavior: auto;
}

/* Reduced motion */
@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;
  }
  .reveal, .reveal-section, .reveal-left, .reveal-right, .reveal-scale {
    opacity: 1 !important;
    transform: none !important;
  }
}
