/**
 * ETheme Carousel — shared visual and interaction contract.
 * Scene styles retain card/media layout; this layer owns controls, dragging,
 * pagination, focus and motion behavior.
 */
.eth-carousel {
    --eth-carousel-control-size: 3rem;
    --eth-carousel-control-offset: clamp(0.4rem, 1.4vw, 1rem);
    --eth-carousel-control-bg: color-mix(in srgb, var(--eth-bg-surface) 92%, transparent);
    --eth-carousel-control-border: color-mix(in srgb, var(--eth-border) 82%, transparent);
    --eth-carousel-control-color: var(--eth-text-title);
    --eth-carousel-control-shadow: 0 8px 28px rgba(15, 23, 42, 0.14);
    --eth-carousel-dot: color-mix(in srgb, var(--eth-text-muted) 42%, transparent);
    --eth-carousel-dot-active: var(--eth-primary);
    --eth-carousel-focus: color-mix(in srgb, var(--eth-primary) 38%, transparent);
    position: relative;
}

.eth-carousel--scroll.is-ready .eth-carousel__track {
    display: flex;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-behavior: smooth;
    scroll-padding-inline: 0.25rem;
    scroll-snap-type: x mandatory;
    touch-action: pan-y;
    cursor: grab;
    transform: none;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.eth-carousel--switch {
    touch-action: pan-y;
}

.eth-carousel--switch img {
    -webkit-user-drag: none;
    user-select: none;
}

.eth-carousel--scroll.is-ready .eth-carousel__track::-webkit-scrollbar {
    display: none;
}

.eth-carousel--scroll.is-ready .eth-carousel__slide {
    scroll-snap-align: start;
    scroll-snap-stop: normal;
}

.eth-carousel.is-dragging,
.eth-carousel.is-dragging .eth-carousel__track {
    cursor: grabbing;
    scroll-behavior: auto;
    scroll-snap-type: none;
    user-select: none;
}

.eth-carousel__button {
    position: absolute;
    z-index: 6;
    top: 50%;
    display: inline-flex;
    width: var(--eth-carousel-control-size);
    height: var(--eth-carousel-control-size);
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid var(--eth-carousel-control-border);
    border-radius: 50%;
    background: var(--eth-carousel-control-bg);
    box-shadow: var(--eth-carousel-control-shadow);
    color: var(--eth-carousel-control-color);
    cursor: pointer;
    opacity: 1;
    transform: translateY(-50%);
    backdrop-filter: blur(12px);
    transition: background 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 180ms ease, opacity 180ms ease;
}

.eth-carousel__button--prev { left: var(--eth-carousel-control-offset); }
.eth-carousel__button--next { right: var(--eth-carousel-control-offset); }

.eth-carousel__button svg,
.eth-carousel__autoplay-toggle svg {
    display: block;
    width: 1.4rem;
    height: 1.4rem;
}

.eth-carousel__button[disabled] {
    cursor: default;
    opacity: 0.4;
}

.eth-carousel__pagination {
    display: flex;
    min-height: 1.75rem;
    align-items: center;
    justify-content: center;
    gap: 0.42rem;
    margin-top: var(--eth-space-s);
}

.eth-carousel__dot {
    width: 0.5rem;
    height: 0.5rem;
    flex: 0 0 auto;
    padding: 0;
    border: 0;
    border-radius: 99px;
    background: var(--eth-carousel-dot);
    cursor: pointer;
    transition: width 180ms ease, background 180ms ease, transform 180ms ease;
}

.eth-carousel__dot.is-active {
    width: 1.5rem;
    background: var(--eth-carousel-dot-active);
}

.eth-carousel__autoplay-toggle {
    position: absolute;
    right: 0;
    bottom: -0.05rem;
    z-index: 5;
    display: inline-flex;
    width: 2rem;
    height: 2rem;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid var(--eth-carousel-control-border);
    border-radius: 50%;
    background: var(--eth-carousel-control-bg);
    color: var(--eth-carousel-control-color);
    cursor: pointer;
}

.eth-carousel__autoplay-toggle .eth-carousel__play-icon { display: none; }
.eth-carousel__autoplay-toggle.is-paused .eth-carousel__pause-icon { display: none; }
.eth-carousel__autoplay-toggle.is-paused .eth-carousel__play-icon { display: block; }

.eth-carousel__status {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.eth-carousel__button:focus-visible,
.eth-carousel__dot:focus-visible,
.eth-carousel__autoplay-toggle:focus-visible,
.eth-carousel:focus-visible {
    outline: 3px solid var(--eth-carousel-focus);
    outline-offset: 3px;
}

.eth-carousel.is-static .eth-carousel__button,
.eth-carousel.is-static .eth-carousel__pagination,
.eth-carousel.is-static .eth-carousel__autoplay-toggle {
    display: none;
}

@media (hover: hover) and (pointer: fine) {
    .eth-carousel__button:not([disabled]):hover,
    .eth-carousel__autoplay-toggle:hover {
        border-color: var(--eth-primary);
        background: var(--eth-primary);
        color: var(--eth-text-invert);
        box-shadow: var(--eth-shadow-primary-md);
    }

    .eth-carousel__dot:hover {
        background: var(--eth-carousel-dot-active);
        transform: scale(1.15);
    }
}

@media (max-width: 600px) {
    .eth-carousel {
        --eth-carousel-control-size: 2.75rem;
        --eth-carousel-control-offset: 0.55rem;
    }

    .eth-carousel__button svg { width: 1.25rem; height: 1.25rem; }
}

@media (prefers-reduced-motion: reduce) {
    .eth-carousel *,
    .eth-carousel *::before,
    .eth-carousel *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
    }
}
