.carousel-viewport {
    position: relative;
}

.carousel-viewport--desktop-auto {
    overflow: hidden !important;
}

.carousel-viewport--desktop-manual.carousel-viewport--x {
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
}

.carousel-viewport--desktop-manual.carousel-viewport--y {
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: y proximity;
}

.carousel-viewport--touch-transform-auto.carousel-viewport--x,
.carousel-viewport--touch-native-manual.carousel-viewport--x {
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
}

.carousel-viewport--touch-transform-auto.carousel-viewport--y,
.carousel-viewport--touch-native-manual.carousel-viewport--y {
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
}

.carousel-viewport--touch-native-manual.carousel-viewport--x {
    scroll-snap-type: x proximity;
}

.carousel-viewport--touch-native-manual.carousel-viewport--y {
    scroll-snap-type: y proximity;
}

.carousel-viewport--touch-gesture-x.carousel-viewport--x {
    overflow: hidden !important;
    overflow-y: visible !important;
    touch-action: pan-y;
    -webkit-overflow-scrolling: auto;
}

.carousel-viewport--mobile-disabled {
    overflow: visible !important;
    touch-action: auto;
}

.carousel-track {
    contain: layout paint;
}

.carousel-track--animated {
    will-change: transform;
    transform: translateZ(0);
    backface-visibility: hidden;
}

.carousel-track[data-axis="x"] {
    display: flex;
    align-items: stretch;
    width: max-content;
}

.carousel-track[data-axis="y"] {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.carousel-track__replica[data-axis="x"] {
    display: flex;
    flex-shrink: 0;
    width: max-content;
    gap: inherit;
}

.carousel-track__replica[data-axis="y"] {
    display: flex;
    flex: 0 0 auto;
    flex-direction: column;
    width: 100%;
}

.carousel-track__replica > * {
    scroll-snap-align: start;
}
