@layer base, demo;
@import url(https://fonts.bunny.net/css?family=abel:400);

@layer demo {
	.carousel {
		--items: 6;
		--carousel-duration: 40s;
		@media (width > 300px) {
			--carousel-duration: 30s;
		}
		--carousel-width: min(98vw, 95%);
		--carousel-item-width: 280px;
		--carousel-item-height: 350px;
		--carousel-item-gap: 2rem;

		--clr-cta: rgb(0, 132, 209);

		position: relative;
		width: var(--carousel-width);
		height: var(--carousel-item-height);
		overflow: clip;

		&[mask] {
			mask-image: linear-gradient(to right, transparent, black 10% 90%, transparent);
		}

		&[reverse] > article {
			animation-direction: reverse;
		}

		&:hover > article {
			animation-play-state: paused;
		}
	}

	.carousel > article {
		position: absolute;
		top: 20px;
		left: calc(100% + var(--carousel-item-gap));
		width: var(--carousel-item-width);
		height: var(--carousel-item-height);
		display: grid;
		grid-template-rows: auto auto 1fr auto;
		gap: 0.25rem;
		border: 1px solid light-dark(rgba(0 0 0 / 0.25), rgba(255 255 255 / 0.15));
		padding-block-end: 1rem;
		border-radius: 10px;
		background: light-dark(white, rgba(255 255 255 / 0.05));
		color: light-dark(rgb(49, 65, 88), white);

		will-change: transform;
		animation-name: marquee;
		animation-duration: var(--carousel-duration);
		animation-timing-function: linear;
		animation-iteration-count: infinite;
		animation-delay: calc(var(--carousel-duration) / var(--items) * 1 * var(--i) * -1);

		&:nth-child(1) { --i: 0; }
		&:nth-child(2) { --i: 1; }
		&:nth-child(3) { --i: 2; }
		&:nth-child(4) { --i: 3; }
		&:nth-child(5) { --i: 4; }
		&:nth-child(6) { --i: 5; }
		&:nth-child(7) { --i: 6; }
		&:nth-child(8) { --i: 7; }
	}

	.carousel img {
		width: 100%;
		height: 200px;
		object-fit: cover;
		border-radius: 10px 10px 0 0;
	}

	.carousel > article > *:not(img) {
		padding: 0 1rem;
	}

	.carousel > article > div {
		display: grid;
		grid-template-rows: subgrid;
		font-size: 0.8rem;
	}

	.carousel > article h2 {
		font-size: 1.2rem;
		font-weight: 300;
		padding-block: 0.75rem 0.25rem;
		margin: 0;
	}

	.carousel > article p {
		margin: 0;
		z-index: 999999;
	}

	.carousel > article a {
		text-decoration: none;
		text-transform: lowercase;
		border: 1px solid var(--clr-cta);
		color: light-dark(var(--clr-cta), white);
		border-radius: 3px;
		padding: 0.25rem 0.5rem;
		place-self: start;
		transition: 150ms ease-in-out;
		&:hover,
		&:focus-visible {
			background-color: var(--clr-cta);
			color: white;
			outline: none;
		}
	}

	@keyframes marquee {
		100% {
			transform: translateX(
				calc((var(--items) * (var(--carousel-item-width) + var(--carousel-item-gap))) * -1)
			);
		}
	}

	@media (max-width: 300px) {
		.carousel {
			--carousel-item-width: 90vw;
			--carousel-item-height: auto;
		}
	}
}
