/* animations.css — Keyframes, marquee tracks, reduced-motion */

/* ── Keyframes ── */
@keyframes v4-ticker {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@keyframes v4-ticker-rev {
  from { transform: translateX(-50%); }
  to   { transform: translateX(0); }
}

@keyframes v4-cards-left {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@keyframes v4-cards-right {
  from { transform: translateX(-50%); }
  to   { transform: translateX(0); }
}

@keyframes v4-flick-out {
  0%   { transform: scale(1);    opacity: 1; }
  100% { transform: scale(1.12); opacity: 0; }
}

/* ── Marquee clip container ── */
.v4-marquee-clip {
  contain: paint;
  overflow: hidden;
  position: relative;
}

/* ── Ticker tracks ── */
.v4-ticker-track {
  animation: v4-ticker 100s linear infinite;
  display: flex;
  width: max-content;
}

.v4-ticker-rev {
  animation: v4-ticker-rev 90s linear infinite;
  display: flex;
  width: max-content;
}

/* ── Card marquees ── */
.v4-cards-left {
  animation: v4-cards-left 90s linear infinite;
  display: flex;
  width: max-content;
}

.v4-cards-right {
  animation: v4-cards-right 80s linear infinite;
  display: flex;
  width: max-content;
}

.v4-cards-left-c {
  animation: v4-cards-left 70s linear infinite;
  display: flex;
  width: max-content;
}

/* ── Logo marquee ── */
.v4-logo-marquee {
  animation: v4-cards-left 80s linear infinite;
  display: flex;
  width: max-content;
}

/* ── Tab content fade-in (mobile) ── */
@keyframes tab-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  .v4-ticker-track,
  .v4-ticker-rev,
  .v4-cards-left,
  .v4-cards-right,
  .v4-cards-left-c,
  .v4-logo-marquee,
  .v4-tabs-content.active > * {
    animation: none;
  }
}
