/* 20260926-voices-shuffle-motion — S1 SNAP DEAL FIX · unmistakable vault riffle */
/* Total ~320–480ms · travel + stack + overshoot 1.00→1.06→1.00 · one-shot CSS */
/* HARD: no setInterval / MutationObserver / IntersectionObserver */

/* Primary deal — cards fly in from left deck stack */
@keyframes voices-snap-deal {
  0% {
    opacity: 0.4;
    transform: translate3d(-78px, -26px, 0) scale(0.76) rotate(-9deg);
    box-shadow: 0 22px 36px rgba(0, 0, 0, 0.65);
    filter: brightness(0.85);
  }
  40% {
    opacity: 1;
    transform: translate3d(12px, 5px, 0) scale(1.04) rotate(2deg);
    box-shadow: 0 14px 24px rgba(0, 0, 0, 0.5);
    filter: brightness(1);
  }
  72% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1.06) rotate(0deg);
    box-shadow: 0 10px 18px rgba(0, 0, 0, 0.4);
    filter: brightness(1);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
    filter: brightness(1);
  }
}

/* Alternate even tiles — opposite fan for card-stack energy */
@keyframes voices-snap-deal-alt {
  0% {
    opacity: 0.4;
    transform: translate3d(-64px, 22px, 0) scale(0.78) rotate(8deg);
    box-shadow: 0 22px 36px rgba(0, 0, 0, 0.65);
    filter: brightness(0.85);
  }
  40% {
    opacity: 1;
    transform: translate3d(-8px, -4px, 0) scale(1.04) rotate(-1.5deg);
    box-shadow: 0 14px 24px rgba(0, 0, 0, 0.5);
    filter: brightness(1);
  }
  72% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1.06) rotate(0deg);
    box-shadow: 0 10px 18px rgba(0, 0, 0, 0.4);
    filter: brightness(1);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
    filter: brightness(1);
  }
}

/* During deal: let cards travel outside the rail clip.
   Beat #view-more #voices-featured overflow-x/y rules (2 IDs). */
#view-more #voices-featured.voices-snap-dealing,
#voices-featured.voices-snap-dealing,
#week-guest-featured.voices-snap-dealing,
#week-guest #week-guest-featured.voices-snap-dealing {
  overflow: visible !important;
  position: relative;
  z-index: 6;
}

#voices-featured.voices-snap-dealing .voice-tile,
#week-guest-featured.voices-snap-dealing .voice-tile {
  animation: voices-snap-deal 340ms cubic-bezier(0.2, 1.2, 0.32, 1) both;
  animation-delay: calc(min(var(--deal-i, 0), 9) * 16ms);
  transform-origin: center center;
  will-change: transform, opacity, filter;
  z-index: calc(60 - var(--deal-i, 0));
  backface-visibility: hidden;
}

#voices-featured.voices-snap-dealing .voice-tile:nth-child(even),
#week-guest-featured.voices-snap-dealing .voice-tile:nth-child(even) {
  animation-name: voices-snap-deal-alt;
}

@media (prefers-reduced-motion: reduce) {
  #voices-featured.voices-snap-dealing,
  #week-guest-featured.voices-snap-dealing {
    overflow: auto;
  }
  #voices-featured.voices-snap-dealing .voice-tile,
  #week-guest-featured.voices-snap-dealing .voice-tile {
    animation: none !important;
    opacity: 1;
    transform: none;
    filter: none;
    box-shadow: none;
    will-change: auto;
  }
}
