/**
 * Motion — small, purposeful animations. Nothing decorative-only; every
 * transition here communicates state (hover, loading, added-to-cart).
 */

/* Fade-up entrance for grid items, triggered by IntersectionObserver in JS
   via the .bz-in-view class toggle (progressive enhancement — content is
   fully visible without JS). */
.bz-fade-up {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity var(--bz-duration-slow) var(--bz-ease), transform var(--bz-duration-slow) var(--bz-ease);
}
.bz-fade-up.bz-in-view {
	opacity: 1;
	transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
	.bz-fade-up { opacity: 1; transform: none; }
}

/* Add-to-cart success pulse */
@keyframes bz-pulse {
	0% { box-shadow: 0 0 0 0 var(--bz-accent-light); }
	100% { box-shadow: 0 0 0 10px rgba(31, 61, 52, 0); }
}
.bz-added-pulse { animation: bz-pulse var(--bz-duration-slow) var(--bz-ease); }

/* Skeleton loading shimmer, used while ajax mini-cart / filters refresh */
.bz-skeleton {
	background: linear-gradient(90deg, var(--bz-surface-alt) 25%, var(--bz-border) 37%, var(--bz-surface-alt) 63%);
	background-size: 400% 100%;
	animation: bz-shimmer 1.4s ease infinite;
	border-radius: var(--bz-radius-sm);
}
@keyframes bz-shimmer {
	0% { background-position: 100% 50%; }
	100% { background-position: 0 50%; }
}

/* Smooth WooCommerce blockUI overlay restyle instead of default grey box */
.blockUI.blockOverlay {
	background: rgba(250, 249, 246, 0.7) !important;
}
.blockUI.blockOverlay::after {
	content: "";
	position: fixed;
	top: 50%;
	left: 50%;
	width: 28px;
	height: 28px;
	margin: -14px 0 0 -14px;
	border: 3px solid var(--bz-border-strong);
	border-top-color: var(--bz-ink);
	border-radius: 50%;
	animation: bz-spin 0.7s linear infinite;
}
@keyframes bz-spin { to { transform: rotate(360deg); } }
