/**
 * Sleek Woo Products — Animations.
 * All entrance animations are additive (opacity/transform only) and are
 * fully disabled for visitors who prefer reduced motion.
 */

@keyframes swp-fade {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes swp-fade-up {
	from { opacity: 0; transform: translateY(24px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes swp-fade-down {
	from { opacity: 0; transform: translateY(-24px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes swp-zoom {
	from { opacity: 0; transform: scale(0.92); }
	to   { opacity: 1; transform: scale(1); }
}

@keyframes swp-slide-up {
	from { opacity: 0; transform: translateY(40px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes swp-slide-left {
	from { opacity: 0; transform: translateX(40px); }
	to   { opacity: 1; transform: translateX(0); }
}

@keyframes swp-slide-right {
	from { opacity: 0; transform: translateX(-40px); }
	to   { opacity: 1; transform: translateX(0); }
}

@keyframes swp-spin {
	to { transform: rotate(360deg); }
}

.swp-animate[data-swp-animate] {
	opacity: 0;
	will-change: opacity, transform;
}

.swp-animate[data-swp-animate].swp-in-view {
	animation-name: var(--swp-anim-name, swp-fade-up);
	animation-duration: var(--swp-anim-duration, 350ms);
	animation-delay: var(--swp-anim-delay, 0ms);
	animation-timing-function: var(--swp-anim-easing, ease-out);
	animation-fill-mode: forwards;
}

.swp-spin {
	animation: swp-spin 0.8s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
	.swp-animate[data-swp-animate] {
		opacity: 1 !important;
		animation: none !important;
		transform: none !important;
	}

	.swp-card,
	.swp-card__image,
	.swp-card__button,
	.swp-detail__main-image,
	.swp-modal,
	.swp-modal__panel {
		transition: none !important;
	}

	.swp-spin {
		animation-duration: 1.4s;
	}
}
