/*
 * Product Carousel (spruce_inv). Class names are prefixed so they cannot
 * collide with spruce_wsm's highlight carousel (.spruce-highlight-carousel,
 * .spruce-carousel-slide, spruce_wsm_highlight_products_carousel).
 */

.spruce-inv-product-carousel {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 18rem;
    box-sizing: border-box;
    --spruce-inv-pause: 5s;
}

.spruce-inv-product-carousel__viewport {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: inherit;
    overflow: hidden;
    touch-action: pan-y;
}

.spruce-inv-product-carousel__slide {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transform: translateX(100%);
    transition: transform 0.55s ease, opacity 0.55s ease;
    pointer-events: none;
    text-decoration: none;
    color: inherit;
    z-index: 1;
}

.spruce-inv-product-carousel__slide.is-active {
    opacity: 1;
    transform: translateX(0);
    z-index: 2;
    pointer-events: auto;
}

.spruce-inv-product-carousel__slide.is-leave-left {
    opacity: 0;
    transform: translateX(-100%);
    z-index: 1;
}

.spruce-inv-product-carousel__slide.is-leave-right {
    opacity: 0;
    transform: translateX(100%);
    z-index: 1;
}

.spruce-inv-product-carousel__slide.is-from-right,
.spruce-inv-product-carousel__slide.is-from-left {
    transition: none;
}

.spruce-inv-product-carousel__slide.is-from-right {
    transform: translateX(100%);
}

.spruce-inv-product-carousel__slide.is-from-left {
    transform: translateX(-100%);
}

.spruce-inv-product-carousel__photo {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
    -webkit-user-drag: none;
    user-select: none;
}

.spruce-inv-product-carousel--fit-cover .spruce-inv-product-carousel__photo {
    object-fit: cover;
}

.spruce-inv-product-carousel--fit-fill .spruce-inv-product-carousel__photo {
    object-fit: fill;
}

.spruce-inv-product-carousel__arc {
    position: absolute;
    right: 0.75rem;
    bottom: 0.75rem;
    width: 28px;
    height: 28px;
    z-index: 3;
    pointer-events: none;
}

.spruce-inv-product-carousel__arc-track,
.spruce-inv-product-carousel__arc-track-edge,
.spruce-inv-product-carousel__arc-value,
.spruce-inv-product-carousel__arc-value-edge {
    fill: none;
}

/* Light edge under a darker stroke, so the same small arc reads on white and on dark photos. */
.spruce-inv-product-carousel__arc-track-edge,
.spruce-inv-product-carousel__arc-value-edge {
    stroke: #fff;
    stroke-width: 5;
}

.spruce-inv-product-carousel__arc-track {
    stroke: rgba(0, 0, 0, 0.55);
    stroke-width: 2.75;
}

.spruce-inv-product-carousel__arc-value,
.spruce-inv-product-carousel__arc-value-edge {
    stroke-linecap: round;
    stroke-dasharray: 88;
    stroke-dashoffset: 0;
    transform: rotate(-90deg);
    transform-origin: 18px 18px;
}

.spruce-inv-product-carousel__arc-value {
    stroke: #141414;
    stroke-width: 3;
}

.spruce-inv-product-carousel__arc-value.is-running,
.spruce-inv-product-carousel__arc-value-edge.is-running {
    animation-name: spruce-inv-product-carousel-arc;
    animation-duration: var(--spruce-inv-pause);
    animation-timing-function: linear;
    animation-fill-mode: forwards;
}

@keyframes spruce-inv-product-carousel-arc {
    to {
        stroke-dashoffset: 88;
    }
}

.spruce-inv-product-carousel__empty {
    margin: 0;
    padding: 1.5rem;
    text-align: center;
}

@media (prefers-reduced-motion: reduce) {
    .spruce-inv-product-carousel__slide {
        transition: none;
    }

    .spruce-inv-product-carousel__arc-value.is-running,
    .spruce-inv-product-carousel__arc-value-edge.is-running {
        animation: none;
    }
}
