/*
 * Property media carousel.
 * Bootstrap 5+. Load: asset('css/libraries/carousel-lightbox.css') + <x-property::assets />.
 */

.media-carousel {
    --media-carousel-control-bg: rgba(0, 0, 0, 0.45);
    --media-carousel-accent: var(--bs-primary, #0d6efd);
}

.media-carousel__viewport {
    position: relative;
}

.media-carousel .carousel-inner {
    border-radius: 0;
}

.media-carousel__hero-aspect {
    aspect-ratio: 16 / 10;
    max-height: min(72vh, 640px);
}

.media-carousel__hero-img {
    object-fit: cover;
    display: block;
}

.media-carousel__control {
    z-index: 2;
    width: 2.75rem;
    height: 2.75rem;
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
    border-radius: 50%;
    background: var(--media-carousel-control-bg);
    opacity: 1;
    margin: 0 0.35rem;
}

.media-carousel__control:hover,
.media-carousel__control:focus {
    opacity: 1;
    background: rgba(0, 0, 0, 0.55);
}

.media-carousel__control .carousel-control-prev-icon,
.media-carousel__control .carousel-control-next-icon {
    width: 1.35rem;
    height: 1.35rem;
}

.media-carousel__counter {
    position: absolute;
    right: 0.65rem;
    bottom: 0.65rem;
    z-index: 1;
    pointer-events: none;
    padding: 0.2rem 0.55rem;
    font-size: 0.75rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
    color: #fff;
    background: rgba(0, 0, 0, 0.5);
    border-radius: 999px;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    line-height: 1.35;
}

.media-carousel__counter-sep {
    opacity: 0.75;
    margin: 0 0.1em;
}

.media-carousel__thumb-strip {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.5rem;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

.media-carousel__thumb-strip::-webkit-scrollbar {
    height: 6px;
}

.media-carousel__thumb-strip::-webkit-scrollbar-thumb {
    background-color: rgba(0, 0, 0, 0.2);
    border-radius: 3px;
}

.media-carousel__thumb-item {
    width: 112px;
}

.media-carousel__thumb-img {
    aspect-ratio: 3 / 2;
    object-fit: cover;
    width: 112px;
    height: auto;
    display: block;
    transition: opacity 0.15s ease, box-shadow 0.15s ease;
}

.media-carousel__thumb-item.is-active .media-carousel__thumb-img {
    box-shadow: 0 0 0 2px var(--media-carousel-accent);
    opacity: 1;
}

.media-carousel__thumb-item:not(.is-active) .media-carousel__thumb-img {
    opacity: 0.72;
}

.media-carousel__thumb-item:hover:not(.is-active) .media-carousel__thumb-img {
    opacity: 0.92;
}

.media-carousel__thumb-btn {
    cursor: pointer;
}

.media-carousel__thumb-btn:focus-visible {
    outline: 2px solid var(--media-carousel-accent);
    outline-offset: 2px;
}
