/* One layout/interaction contract for every horizontal carousel. */
.au-carousel {
    --carousel-visible: 1;
    --carousel-gap: 14px;
    --carousel-card-width: 46vw;
    --carousel-fade: min(34px, var(--carousel-peek, 34px));
    --carousel-fade-bg: transparent;
    position: relative;
    width: 100%;
    min-width: 0;
}

.au-carousel::before,
.au-carousel::after {
    position: absolute;
    z-index: 3;
    top: 0;
    bottom: 0;
    width: var(--carousel-fade);
    content: "";
    pointer-events: none;
}

.au-carousel::before {
    left: 0;
    background: linear-gradient(90deg, var(--carousel-fade-bg), transparent);
}

.au-carousel::after {
    right: 0;
    background: linear-gradient(270deg, var(--carousel-fade-bg), transparent);
}

.au-carousel__viewport {
    width: 100%;
    min-width: 0;
    padding: 0;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-behavior: auto;
    scroll-snap-type: x mandatory;
    scroll-padding: 0;
    touch-action: pan-x pan-y pinch-zoom;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    cursor: grab;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 var(--carousel-fade), #000 calc(100% - var(--carousel-fade)), transparent);
    mask-image: linear-gradient(90deg, transparent, #000 var(--carousel-fade), #000 calc(100% - var(--carousel-fade)), transparent);
}

.au-carousel__viewport::-webkit-scrollbar { display: none; }
.au-carousel__viewport:focus-visible { outline: 2px solid var(--accent, #00f5b9); outline-offset: 4px; }

.au-carousel__track {
    display: flex;
    width: max-content;
    min-width: 100%;
    margin: 0;
    padding: 6px var(--carousel-edge-padding, 0px) 24px;
    align-items: stretch;
    gap: var(--carousel-gap);
}

.au-carousel__track > * {
    flex: 0 0 var(--carousel-card-width);
    width: var(--carousel-card-width);
    min-width: 0;
    max-width: none;
    margin: 0;
    scroll-snap-align: center;
    scroll-snap-stop: always;
    overflow-wrap: anywhere;
}

.au-carousel__track,
.au-carousel__track * {
    -webkit-user-select: none;
    user-select: none;
}
.au-carousel__track img,
.au-carousel__track a { -webkit-user-drag: none; }

.au-carousel.is-mouse-dragging .au-carousel__viewport,
.au-carousel.is-programmatic .au-carousel__viewport,
.au-carousel.is-rebasing .au-carousel__viewport { scroll-snap-type: none; }
.au-carousel.is-mouse-dragging,
.au-carousel.is-mouse-dragging * { cursor: grabbing; }
.au-carousel.is-single .au-carousel__track { width: 100%; justify-content: center; }
.au-carousel.is-single .au-carousel__viewport { -webkit-mask-image: none; mask-image: none; }

.au-carousel--agenda {
    --carousel-gap: 16px;
    --agenda-divider-offset: -8px;
    --carousel-fade: min(32px, var(--carousel-peek, 32px));
    --carousel-fade-bg: #fff;
}
.au-carousel--agenda .au-carousel__viewport {
    -webkit-mask-image: linear-gradient(
        90deg,
        transparent 0,
        rgba(0, 0, 0, 0.18) calc(var(--carousel-fade) * 0.28),
        rgba(0, 0, 0, 0.72) calc(var(--carousel-fade) * 0.72),
        #000 var(--carousel-fade),
        #000 calc(100% - var(--carousel-fade)),
        rgba(0, 0, 0, 0.72) calc(100% - (var(--carousel-fade) * 0.72)),
        rgba(0, 0, 0, 0.18) calc(100% - (var(--carousel-fade) * 0.28)),
        transparent 100%
    );
    mask-image: linear-gradient(
        90deg,
        transparent 0,
        rgba(0, 0, 0, 0.18) calc(var(--carousel-fade) * 0.28),
        rgba(0, 0, 0, 0.72) calc(var(--carousel-fade) * 0.72),
        #000 var(--carousel-fade),
        #000 calc(100% - var(--carousel-fade)),
        rgba(0, 0, 0, 0.72) calc(100% - (var(--carousel-fade) * 0.72)),
        rgba(0, 0, 0, 0.18) calc(100% - (var(--carousel-fade) * 0.28)),
        transparent 100%
    );
}
.au-carousel--agenda .au-carousel__track { padding-block: 8px 28px; }
.au-carousel--discography .au-carousel__track { padding-bottom: 12px; }
.au-carousel--videos .au-carousel__track { padding-block: 2px 14px; }
.au-carousel--testimonials { --carousel-visible: 1; --carousel-gap: 18px; }
.au-carousel--testimonials .au-carousel__track { padding-block: 4px 22px; }
.au-carousel--instagram { --carousel-visible: 3; --carousel-gap: 0px; --carousel-fade: 0px; margin-top: 30px; padding-top: 3px; }
.au-carousel--instagram::before,
.au-carousel--instagram::after { display: none; }
.au-carousel--instagram .au-carousel__viewport { -webkit-mask-image: none; mask-image: none; scroll-snap-type: none; }
.au-carousel--instagram .au-carousel__track { padding: 0; }
.au-carousel--sponsors { --carousel-gap: 12px; --carousel-fade: 8px; }
.au-carousel--sponsors .au-carousel__track { padding-block: 2px 10px; }

@media (min-width: 768px) {
    .au-carousel--discography { --carousel-visible: 3; --carousel-gap: 18px; }
    .au-carousel--sponsors { --carousel-visible: 3; }
}

@media (min-width: 992px) {
    .au-carousel--agenda { --carousel-visible: 3; }
    .au-carousel--videos { --carousel-visible: 3; }
    .au-carousel--instagram { --carousel-visible: 5; }
    .au-carousel--testimonials { --carousel-gap: 20px; }
}

@media (max-width: 599px) {
    .au-carousel--agenda { --carousel-card-scale: 1.2; }
    .au-carousel--agenda .schedule-date > strong { font-size: clamp(76px, 23vw, 122px); }
    .au-carousel--agenda .schedule-meta { gap: 5px; }
    .au-carousel--agenda .schedule-month,
    .au-carousel--agenda .schedule-clock { font-size: clamp(10px, 3vw, 13px); }
    .au-carousel--testimonials { --carousel-card-scale: 1.72; --carousel-fade: 24px; }
    .au-carousel--testimonials .testimonial-card { padding: 22px 16px; }
    .au-carousel--testimonials .testimonial-card blockquote { margin-block: 20px 26px; font-size: 17px; line-height: 1.45; }
    .au-carousel--testimonials .testimonial-card figcaption { gap: 8px; }
    .au-carousel--testimonials .avatar-placeholder { width: 36px; height: 36px; }
}
