/*
 * Homepage "We've funded" logos marquee  (added by the static mirror)
 *
 * Why this exists:
 *   This is a Webflow IX2 "loop" interaction ("Logos Move", page-load trigger,
 *   config.loop:true): translateX 0% -> -50% over 30000ms on `.logo_carousel_wrap`
 *   (confirmed by reading the interaction JSON baked into
 *   webflow.schunk.370101f0e3d690c1.js), then reset instantly and repeat. The
 *   logo list is rendered twice back-to-back inside the wrap for exactly this
 *   reason, so a -50% shift loops seamlessly.
 *
 *   Like every other IX2 page-load animation in this mirror (see
 *   ix2-safety-net.js), it depends on document.readyState still being
 *   'loading'/'interactive' when IX2 first checks it. With every asset local and
 *   analytics disabled, `load` fires almost immediately, readyState is already
 *   'complete' by the time IX2 processes the trigger, and - unlike a simple
 *   opacity reveal - a *looping* animation that never gets its first
 *   requestAnimationFrame tick doesn't just skip to an end state, it just never
 *   starts: the wrap sits frozen at its initial translate3d(0%, ...) forever.
 *
 * How it works:
 *   An independent CSS animation reproducing IX2's own timing exactly (0% to
 *   -50%, 30s, linear, infinite). CSS animations win the cascade over an
 *   inline transform (animations sit above normal author rules, including
 *   inline style, in the cascade), so this overrides whatever inert inline
 *   transform IX2 left behind.
 *
 *   No prefers-reduced-motion opt-out here on purpose: the live site's own
 *   version of this marquee doesn't check for that preference either (IX2
 *   interactions aren't reduced-motion-aware), so skipping it here would be a
 *   mismatch from "looks exactly like growthcapifly.com," not an improvement.
 */
.section_main.logos .logo_carousel_wrap {
  animation: logos-marquee 30s linear infinite;
}

@keyframes logos-marquee {
  from { transform: translate3d(0%, 0, 0); }
  to   { transform: translate3d(-50%, 0, 0); }
}
