/**
 * Component 9 — infinite scroll loading states.
 *
 * Skeleton cards reuse .comp-9-card so width, padding and responsive rules
 * come from the main stylesheet; only the shimmer blocks are defined here.
 */

/* --- Skeleton cards (shown while the next batch is fetched) --- */
.comp-9-card.comp-9-skeleton {
	pointer-events: none;
	user-select: none;
}

.comp-9-skeleton .sk {
	display: block;
	border-radius: 8px;
	background: linear-gradient(90deg, #edf1f4 25%, #e0e7ed 50%, #edf1f4 75%);
	background-size: 200% 100%;
	animation: comp9-shimmer 1.2s linear infinite;
}

.comp-9-skeleton .sk-media {
	width: 100%;
	height: 100%;
	border-radius: 16px;
}

.comp-9-skeleton .sk-title {
	height: 24px;
	width: 70%;
}

.comp-9-skeleton .sk-line {
	height: 14px;
	width: 100%;
}

.comp-9-skeleton .sk-line.is-short {
	width: 55%;
}

.comp-9-skeleton .sk-btn {
	height: 20px;
	width: 40%;
	margin-top: 6px;
}

@keyframes comp9-shimmer {
	to {
		background-position: -200% 0;
	}
}

/* --- Entrance animation for freshly loaded cards --- */
.comp-9-card.is-entering {
	opacity: 0;
	transform: translateY(24px);
}

.comp-9-card.is-visible {
	opacity: 1;
	transform: translateY(0);
	transition: opacity 0.5s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

@media (prefers-reduced-motion: reduce) {
	.comp-9-skeleton .sk {
		animation: none;
	}

	.comp-9-card.is-entering {
		opacity: 1;
		transform: none;
	}

	.comp-9-card.is-visible {
		transition: none;
	}
}
