/**
 * Continuous marquee for Elementor image carousels (see aaps-carousel-marquee.js).
 *
 * We DON'T restyle the slides — Elementor's own CSS keeps the images looking
 * exactly as designed (rounded corners, object-fit, spacing). This only clips the
 * strip and turns the existing `.swiper-wrapper` into a single, infinite, linear
 * animation: one glide of -50% (one full copy width), so there are no eased steps
 * and no braking. The cloned second copy makes the wrap-around seam invisible.
 *
 * The glide runs regardless of `prefers-reduced-motion` (Windows "Show animations"
 * off would otherwise leave Elementor's jumpy autoplay in place — the bug we're
 * fixing). See the note in the JS to restore the accessibility opt-out.
 */
/* Shift by an EXACT pixel amount (one full copy of the slides), set per-carousel
   in JS as --aaps-shift. A percentage translate is unreliable here — the custom
   CSS constrains the wrapper width, so `-50%` under-travels and the seam jumps. */
@keyframes aaps-marquee-x {
	from { -webkit-transform: translate3d( 0, 0, 0 ); transform: translate3d( 0, 0, 0 ); }
	to   {
		-webkit-transform: translate3d( calc( -1 * var( --aaps-shift, 0px ) ), 0, 0 );
		transform: translate3d( calc( -1 * var( --aaps-shift, 0px ) ), 0, 0 );
	}
}

/* The existing Swiper wrapper, repurposed as the marquee track. We deliberately
   set NO layout here (display/flex/gap/width/height stay owned by the widget's
   custom CSS) — only the motion. !important on transition stops Swiper's leftover
   inline transition from fighting the keyframe animation. */
.aaps-marquee-wrapper {
	-webkit-transition: none !important;
	transition: none !important;
	will-change: transform;
	-webkit-animation: aaps-marquee-x linear infinite;
	animation: aaps-marquee-x linear infinite;
}
