@layer fc.components {
.fc-carousel {
--fc-carousel-item: clamp(12rem, 42%, 22rem);
display: grid;
grid-template-columns: minmax(0, 1fr);
inline-size: 100%;
gap: var(--fc-space-2);
min-inline-size: 0;
}
.fc-carousel__track {
display: flex;
gap: var(--fc-space-2);
margin: 0;
padding: 0;
padding-block-end: var(--fc-space-2);
list-style: none;
overflow-x: auto;
overscroll-behavior-inline: contain;
scroll-snap-type: var(--fc-carousel-snap, inline mandatory);
scrollbar-width: thin;
border-radius: var(--fc-radius-xl);
}
@media (prefers-reduced-motion: no-preference) {
.fc-carousel__track {
scroll-behavior: smooth;
}
}
.fc-carousel__item {
position: relative;
flex: 0 0 var(--fc-carousel-item);
min-inline-size: 0;
overflow: hidden;
scroll-snap-align: start;
background-color: var(--fc-color-bg-muted);
color: var(--fc-color-text-default);
border-radius: var(--fc-radius-xl);
}
.fc-carousel__item > :is(img, video, picture) {
display: block;
inline-size: 100%;
block-size: 100%;
object-fit: cover;
}
.fc-carousel__caption {
position: absolute;
inset-inline: 0;
inset-block-end: 0;
margin: 0;
padding: var(--fc-space-3);
background-color: var(--fc-color-bg-inverse);
color: var(--fc-color-text-inverse);
font-size: var(--fc-font-size-sm);
font-weight: var(--fc-font-weight-medium);
}
.fc-carousel--hero {
--fc-carousel-item: 85%;
}
.fc-carousel--free {
--fc-carousel-snap: none;
}
@media (hover: hover) {
.fc-carousel__item:has(a, button):hover {
background-color: color-mix(in oklab, var(--fc-color-text-default) calc(var(--fc-opacity-hover-overlay) * 100%), var(--fc-color-bg-muted));
}
}
.fc-carousel__item:has(:focus-visible) {
outline: var(--fc-border-width-focus) solid var(--fc-color-focus-ring);
outline-offset: calc(var(--fc-border-width-focus) * -1);
}
.fc-carousel__controls {
display: flex;
justify-content: flex-end;
gap: var(--fc-space-2);
}
@media (forced-colors: active) {
.fc-carousel__item {
border: var(--fc-border-width-thin) solid CanvasText;
}
.fc-carousel__caption {
background-color: Canvas;
color: CanvasText;
}
}
}