/* Shared, responsive banner video treatment across page templates. */
.hero-banner,
.sub-banner,
.sub-banner-landing,
.details-sub-banner {
    position: relative;
    overflow: hidden;
}

.mg-banner-video {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: var(--mg-video-position, center center);
    opacity: 0;
    transition: opacity 300ms ease;
}

.mg-banner-video-ready .mg-banner-video {
    opacity: 1;
}

.mg-banner-video-overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    background: rgba(0, 0, 0, var(--mg-video-overlay, .35));
}

.mg-has-banner-video > .desktop-banner,
.mg-has-banner-video > .mobile-banner {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.mg-has-banner-video > :not(.mg-banner-video):not(.mg-banner-video-overlay):not(.desktop-banner):not(.mobile-banner),
.mg-has-banner-video + .container,
.hero-banner-slider .mg-has-banner-video ~ .container {
    position: relative;
    z-index: 3;
}

@media (min-width: 1440px) {
    .hero-banner,
    .sub-banner.big,
    .sub-banner-landing {
        min-height: clamp(440px, 36vw, 620px);
    }
}

@media (min-width: 768px) and (max-width: 1439px) {
    .hero-banner,
    .sub-banner.big,
    .sub-banner-landing {
        min-height: clamp(390px, 44vw, 540px);
    }
}

@media (max-width: 767px) {
    .hero-banner,
    .sub-banner,
    .sub-banner.big,
    .sub-banner.large,
    .sub-banner-landing,
    .details-sub-banner {
        min-height: clamp(420px, 128vw, 620px);
    }

    .mg-banner-video {
        object-position: var(--mg-video-position, center center);
    }
}

@media (max-width: 380px) {
    .hero-banner,
    .sub-banner,
    .sub-banner-landing {
        min-height: 460px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mg-banner-video {
        opacity: 0;
    }

    .mg-banner-video-overlay {
        display: none;
    }
}
