/* Carousel configuration variables */
.carousel {
    --viewport-height: 70rem;
    --viewport-height-m: 28rem;
    --perspective: 800px;
    --perspective-m: 300px;
    --block-offset: -18rem;
    --block-offset-m: -7rem;
    --fadeout: none;
}

/* Fadeout effect */
.carousel.fadeout {
    --fadeout: linear-gradient(90deg, transparent, white 10%, white 90%, transparent 100%);
}

/* Carousel container */
.carousel {
    position: relative;
    width: 100%;
    height: var(--viewport-height);
    margin-block: var(--block-offset);
    transform-style: preserve-3d;
    user-select: none;
    overflow: visible;
    z-index: 1;
    -webkit-mask-image: var(--fadeout);
    mask-image: var(--fadeout);
}

/* Ensure frontend container hides overflow */
.carousel-container {
    margin-top: -5%;
    overflow: hidden;
    width: 100%;
    display: inline-table;
}

/* Carousel stage (perspective) */
.carousel-stage {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    perspective: var(--perspective);
    width: 100%;
    height: 100%;
}

/* Carousel ring */
.carousel-ring {
    position: absolute;
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    will-change: transform;
}

/* Carousel slides */
.carousel-slide {
    position: absolute;
    transform-style: preserve-3d;
    overflow: hidden;
    will-change: transform, opacity;
}

/* Media inside each slide */
.carousel-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 0;
}

/* Responsive adjustments */
@media (max-width: 767px) {
    .carousel {
        height: var(--viewport-height-m);
        margin-block: var(--block-offset-m);
    }

    .carousel-stage {
        perspective: var(--perspective-m);
    }
}