/* Caspian Synthetics - motion.
   Reveals use keyframe animations (not transitions) so they never override an element's own
   hover transitions - overriding the card's transition is what made the vial cards snap.
   Individual translate/scale properties never clash with the transforms that position things. */

@keyframes cs-rise  { from { opacity: 0; translate: 0 22px; } to { opacity: 1; translate: 0 0; } }
@keyframes cs-pop   { from { opacity: 0; scale: .965; }       to { opacity: 1; scale: 1; } }
@keyframes cs-lift  { from { opacity: 0; translate: 0 10px; } to { opacity: 1; translate: 0 0; } }
@keyframes cs-slide { from { opacity: 0; translate: -12px 0; } to { opacity: 1; translate: 0 0; } }

.cs-motion .cs-rv { opacity: 0; }
.cs-motion .cs-rv.cs-in { opacity: 1; animation: .7s cubic-bezier(.22, .61, .36, 1) var(--cs-d, 0ms) both; }
.cs-motion .cs-rv-rise.cs-in  { animation-name: cs-rise; }
.cs-motion .cs-rv-pop.cs-in   { animation-name: cs-pop; }
.cs-motion .cs-rv-lift.cs-in  { animation-name: cs-lift; animation-duration: .55s; }
.cs-motion .cs-rv-slide.cs-in { animation-name: cs-slide; }

/* hero vials drift gently */
@keyframes cs-float { 0%, 100% { translate: 0 0; } 50% { translate: 0 -8px; } }
#cs-hero-stage .elementor-element-cs-hs-left img   { animation: cs-float 6.6s ease-in-out -1.1s infinite; }
#cs-hero-stage .elementor-element-cs-hs-centre img { animation: cs-float 7.8s ease-in-out -3.4s infinite; }
#cs-hero-stage .elementor-element-cs-hs-right img  { animation: cs-float 8.6s ease-in-out -5.2s infinite; }

/* buttons: a small, physical press */
.elementor-button, .cs-btn-mint { transition: translate .18s ease, box-shadow .2s ease, background-color .2s ease; }
.elementor-button:active, .cs-btn-mint:active, .checkout-button:active { translate: 0 1px; }

/* search results and cart badge */
@keyframes cs-drop { from { opacity: 0; translate: 0 -6px; } to { opacity: 1; translate: 0 0; } }
.cs-search-results:not([hidden]) { animation: cs-drop .16s ease-out; }
@keyframes cs-bump { 0% { scale: 1; } 40% { scale: 1.35; } 100% { scale: 1; } }
.cs-cart-count.cs-bump { animation: cs-bump .5s cubic-bezier(.3, 1.5, .5, 1); }

/* "Research use only" icon: two slow lab-purple pulses, then still */
@keyframes cs-glow { 0%, 100% { filter: drop-shadow(0 0 0 rgba(122, 90, 248, 0)); } 50% { filter: drop-shadow(0 0 6px rgba(122, 90, 248, .6)); } }
.elementor-element-933aba3a .elementor-icon-list-item:first-child .elementor-icon-list-icon svg { animation: cs-glow 2.4s ease-in-out 1.2s 2; }

@media (prefers-reduced-motion: reduce) {
	.cs-motion .cs-rv { opacity: 1 !important; animation: none !important; }
	#cs-hero-stage img, .cs-cart-count, .cs-search-results, .elementor-icon-list-icon svg { animation: none !important; }
}
