.vuc-carousel,
.vuc-carousel *,
.vuc-carousel *::before,
.vuc-carousel *::after {
	box-sizing: border-box;
}

.vuc-carousel {
	width: 100%;
	padding: var(--vuc-outer-padding);
	overflow: hidden;
	background: var(--vuc-bg);
	color: var(--vuc-text);
	font-family: var(--vuc-font);
	font-size: var(--vuc-font-size);
	font-weight: var(--vuc-font-weight);
	line-height: var(--vuc-line-height);
	letter-spacing: var(--vuc-letter-spacing);
	text-transform: var(--vuc-text-transform);
}

.vuc-carousel .vuc-inner {
	width: 100%;
	max-width: var(--vuc-max-width);
	margin-inline: auto;
}

.vuc-carousel .vuc-header {
	max-width: 780px;
	margin: 0 auto 32px;
	text-align: center;
}

.vuc-carousel .vuc-eyebrow {
	margin-bottom: 12px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.vuc-carousel .vuc-heading {
	margin: 0 0 12px;
	color: var(--vuc-title);
	font: inherit;
	font-size: clamp(25px, 3vw, 38px);
	font-weight: 700;
	line-height: 1.15;
}

.vuc-carousel .vuc-subtitle {
	margin: 0;
	color: var(--vuc-secondary);
	font-size: 16px;
	line-height: 1.6;
}

.vuc-carousel .vuc-stage {
	position: relative;
}

.vuc-carousel .vuc-track {
	display: flex;
	width: 100%;
	gap: var(--vuc-gap-desktop);
	padding: 4px;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-behavior: smooth;
	scroll-padding-inline: 4px;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	touch-action: pan-x pan-y;
}

.vuc-carousel .vuc-track::-webkit-scrollbar {
	display: none;
}

.vuc-carousel .vuc-track.is-dragging {
	cursor: grabbing;
	scroll-snap-type: none;
	user-select: none;
}

.vuc-carousel .vuc-slide {
	display: flex;
	min-width: 0;
	flex: 0 0 calc((100% - (var(--vuc-desktop) - 1) * var(--vuc-gap-desktop)) / var(--vuc-desktop));
	flex-direction: column;
	overflow: hidden;
	border: var(--vuc-border-width) solid var(--vuc-border);
	border-radius: var(--vuc-radius);
	background: var(--vuc-card-bg);
	box-shadow: var(--vuc-shadow);
	scroll-snap-align: start;
	text-align: var(--vuc-align);
}

.vuc-carousel .vuc-image {
	display: block;
	width: 100%;
	min-height: 120px;
	overflow: hidden;
	background: var(--vuc-fallback);
}

.vuc-carousel .vuc-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: var(--vuc-image-fit);
	object-position: var(--vuc-image-position);
}

.vuc-carousel .vuc-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: var(--vuc-align);
	padding: var(--vuc-card-padding);
}

.vuc-carousel .vuc-category,
.vuc-carousel .vuc-post-type {
	color: var(--vuc-secondary);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.vuc-carousel .vuc-post-type {
	margin-top: 4px;
}

.vuc-carousel .vuc-card-title {
	margin: 10px 0 0;
	color: var(--vuc-title);
	font-family: var(--vuc-font);
	font-size: calc(var(--vuc-font-size) * 1.18);
	font-weight: var(--vuc-font-weight);
	line-height: var(--vuc-line-height);
	letter-spacing: var(--vuc-letter-spacing);
	text-transform: var(--vuc-text-transform);
}

.vuc-carousel .vuc-card-title a {
	color: inherit;
	text-decoration: none;
}

.vuc-carousel .vuc-card-title a:hover {
	text-decoration: underline;
}

.vuc-carousel .vuc-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 12px;
	margin-top: 9px;
	color: var(--vuc-secondary);
	font-size: 12px;
}

.vuc-carousel .vuc-excerpt {
	display: -webkit-box;
	margin: 12px 0 18px;
	overflow: hidden;
	color: var(--vuc-secondary);
	font-family: var(--vuc-font);
	font-size: var(--vuc-font-size);
	font-weight: var(--vuc-font-weight);
	line-height: var(--vuc-line-height);
	letter-spacing: var(--vuc-letter-spacing);
	text-transform: var(--vuc-text-transform);
	-webkit-box-orient: vertical;
	-webkit-line-clamp: var(--vuc-lines);
}

.vuc-carousel .vuc-button {
	align-self: flex-start;
	margin-top: auto;
	padding: 10px 16px;
	border: 1px solid var(--vuc-button-bg);
	border-radius: var(--vuc-button-radius);
	background: var(--vuc-button-bg);
	color: var(--vuc-button-text);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	transition: background-color .2s, color .2s;
}

.vuc-carousel .vuc-button:hover {
	border-color: var(--vuc-button-hover);
	background: var(--vuc-button-hover);
	color: var(--vuc-button-text);
}

.vuc-carousel .vuc-arrow {
	position: absolute;
	z-index: 3;
	top: 50%;
	display: grid;
	width: 46px;
	height: 46px;
	padding: 0;
	place-items: center;
	transform: translateY(-50%);
	border: 1px solid var(--vuc-border);
	border-radius: 50%;
	background: var(--vuc-arrow-bg);
	box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
	color: var(--vuc-arrow);
	cursor: pointer;
	opacity: .95;
}

.vuc-carousel .vuc-arrow:hover { opacity: 1; }
.vuc-carousel .vuc-arrow:disabled { cursor: default; opacity: .25; }

.vuc-carousel .vuc-arrow svg {
	width: 22px;
	height: 22px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
}

.vuc-carousel .vuc-prev { left: -20px; }
.vuc-carousel .vuc-next { right: -20px; }

.vuc-carousel .vuc-dots {
	display: flex;
	justify-content: center;
	gap: 10px;
	margin-top: 28px;
}

.vuc-carousel .vuc-dot {
	width: 9px;
	height: 9px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--vuc-dot-inactive);
	cursor: pointer;
}

.vuc-carousel .vuc-dot[aria-current="true"] {
	background: var(--vuc-dot-active);
}

.vuc-carousel .vuc-pause {
	display: block;
	width: auto;
	height: auto;
	margin: 12px auto 0;
	padding: 6px 10px;
	border: var(--vuc-pause-border-width) solid currentColor;
	border-radius: var(--vuc-pause-radius);
	background: var(--vuc-pause-bg);
	color: var(--vuc-pause-color);
	cursor: pointer;
	font: inherit;
	text-decoration: none;
}

.vuc-carousel .vuc-pause.vuc-pause-bottom-left { margin-right: auto; margin-left: 0; }
.vuc-carousel .vuc-pause.vuc-pause-bottom-center { margin-right: auto; margin-left: auto; }
.vuc-carousel .vuc-pause.vuc-pause-bottom-right { margin-right: 0; margin-left: auto; }
.vuc-carousel .vuc-pause.vuc-pause-small { font-size: 12px; }
.vuc-carousel .vuc-pause.vuc-pause-medium { font-size: 14px; }
.vuc-carousel .vuc-pause.vuc-pause-large { font-size: 16px; }

.vuc-carousel :focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
}

.vuc-carousel.vuc-mode-static .vuc-track { scroll-behavior: auto; }
.vuc-carousel.vuc-mode-static .vuc-arrow,
.vuc-carousel.vuc-mode-manual .vuc-arrow,
.vuc-carousel.vuc-mode-manual .vuc-dots { display: none; }
.vuc-carousel .vuc-track.is-animating { scroll-snap-type: none; }
.vuc-carousel .vuc-slide.vuc-clone { pointer-events: none; }

.vuc-carousel.vuc-width-inherit {
	width: 100%;
	max-width: none;
}

.vuc-carousel.vuc-width-inherit .vuc-inner,
.vuc-carousel.vuc-width-max .vuc-inner,
.vuc-carousel.vuc-width-full .vuc-inner {
	max-width: none;
}

.vuc-carousel.vuc-width-max {
	width: 100%;
	max-width: var(--vuc-max-width);
	margin-inline: auto;
}

.vuc-carousel.vuc-width-full {
	width: 100vw;
	max-width: 100vw;
	margin-inline: calc(50% - 50vw);
	overflow-x: clip;
}

.vuc-carousel.vuc-carousel {
	margin-top: var(--vuc-container-margin-top);
	margin-right: var(--vuc-container-margin-right);
	margin-bottom: var(--vuc-container-margin-bottom);
	margin-left: var(--vuc-container-margin-left);
	padding: var(--vuc-container-padding-top) var(--vuc-container-padding-right) var(--vuc-container-padding-bottom) var(--vuc-container-padding-left);
	border: var(--vuc-container-border-width) solid var(--vuc-container-border-color);
	border-radius: var(--vuc-container-radius);
	background: var(--vuc-container-bg);
}

.vuc-carousel .vuc-inner {
	background: var(--vuc-bg);
}

.vuc-carousel.vuc-width-full {
	margin-top: var(--vuc-container-margin-top);
	margin-right: calc(50% - 50vw);
	margin-bottom: var(--vuc-container-margin-bottom);
	margin-left: calc(50% - 50vw);
}

@media (max-width: 1024px) {
	.vuc-carousel .vuc-track { gap: var(--vuc-gap-tablet); }
	.vuc-carousel .vuc-slide { flex-basis: calc((100% - (var(--vuc-tablet) - 1) * var(--vuc-gap-tablet)) / var(--vuc-tablet)); }
	.vuc-carousel .vuc-arrow { width: 42px; height: 42px; }
	.vuc-carousel .vuc-prev { left: -10px; }
	.vuc-carousel .vuc-next { right: -10px; }
	.vuc-carousel.vuc-carousel { padding: var(--vuc-container-padding-tablet); }
}

@media (max-width: 640px) {
	.vuc-carousel { padding-inline: max(12px, var(--vuc-outer-padding)); }
	.vuc-carousel .vuc-header { margin-bottom: 24px; text-align: left; }
	.vuc-carousel .vuc-track { gap: var(--vuc-gap-mobile); }
	.vuc-carousel .vuc-slide { flex-basis: calc((100% - (var(--vuc-mobile) - 1) * var(--vuc-gap-mobile)) / var(--vuc-mobile)); }
	.vuc-carousel .vuc-arrow { display: none; }
	.vuc-carousel.vuc-mobile-arrows .vuc-arrow { display: grid; }
	.vuc-carousel .vuc-heading { font-size: 27px; }
	.vuc-carousel .vuc-subtitle { font-size: 14px; }
	.vuc-carousel.vuc-carousel { padding: var(--vuc-container-padding-mobile); }
}

@media (prefers-reduced-motion: reduce) {
	.vuc-carousel .vuc-track { scroll-behavior: auto; }
	.vuc-carousel * { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
