/* =========================================================
   NETMORE SCROLL CAROUSEL
   ISOLATED PIN VERSION

   IMPORTANT:
   - Root only reserves carousel scroll space
   - Inner stage is pinned by JS
   - No sticky
   - No GSAP pin spacer
   - Does not pin Elementor widget wrapper
   - Does not interfere with following sections
========================================================= */


/* =========================================================
   ROOT
========================================================= */

.netmore-scroll-carousel {
    --nsc-bg: #0b0b0b;

    position: relative;

    display: block;

    width: 100%;

    /*
     * JS will replace this with:
     *
     * viewport height + carousel scroll distance
     *
     * This space is consumed while the stage is pinned.
     */
    height: 100vh;
    min-height: 100vh;

    margin: 0 !important;
    padding: 0 !important;

    background: var(--nsc-bg);

    overflow: visible;

    isolation: isolate;
}


.netmore-scroll-carousel *,
.netmore-scroll-carousel *::before,
.netmore-scroll-carousel *::after {
    box-sizing: border-box;
}


/* =========================================================
   ELEMENTOR WIDGET

   Do NOT change its height.
   Do NOT pin it.
========================================================= */

.elementor-widget-netmore_scroll_carousel {
    position: relative;

    width: 100%;

    margin: 0 !important;
    padding: 0 !important;

    overflow: visible !important;
}


.elementor-widget-netmore_scroll_carousel
> .elementor-widget-container {
    position: relative;

    width: 100%;

    margin: 0 !important;
    padding: 0 !important;

    overflow: visible !important;
}


/* =========================================================
   STAGE

   This is the ONLY element GSAP pins.
========================================================= */

.netmore-scroll-carousel-stage {
    position: relative;

    width: 100%;

    height: 100vh !important;
    min-height: 100vh !important;

    margin: 0 !important;
    padding: 0 !important;

    overflow: hidden !important;

    background: var(--nsc-bg);

    isolation: isolate;

    z-index: 2;
}


/* =========================================================
   VIEWPORT
========================================================= */

.netmore-scroll-carousel-viewport {
    position: absolute;

    inset: 0;

    display: block;

    width: 100%;
    height: 100%;

    margin: 0;
    padding: 0;

    overflow: hidden;
}


/* =========================================================
   TRACK
========================================================= */

.netmore-scroll-carousel-track {
    position: absolute;

    top: 50%;
    left: 0;

    display: flex;

    flex-flow: row nowrap;

    align-items: center;

    gap: 2.2vw;

    width: max-content;
    min-width: max-content;

    height: auto;

    margin: 0;

    padding:
        0
        7vw;

    /*
     * JS controls x + yPercent.
     */
    transform: translate3d(0, -50%, 0);

    will-change: transform;

    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}


/* =========================================================
   CARD
========================================================= */

.netmore-scroll-carousel-card {
    position: relative;

    flex: 0 0 auto;

    margin: 0;

    overflow: hidden;

    background: #171717;

    will-change: transform;

    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}


/* =========================================================
   LARGE
========================================================= */

.netmore-scroll-carousel-card-large {
    width: 42vw;
    height: 58vh;

    min-width: 620px;
    min-height: 450px;

    max-width: 850px;
    max-height: 650px;
}


/* =========================================================
   MEDIUM
========================================================= */

.netmore-scroll-carousel-card-medium {
    width: 31vw;
    height: 48vh;

    min-width: 450px;
    min-height: 370px;

    max-width: 630px;
    max-height: 540px;
}


/* =========================================================
   TALL
========================================================= */

.netmore-scroll-carousel-card-tall {
    width: 25vw;
    height: 61vh;

    min-width: 370px;
    min-height: 470px;

    max-width: 510px;
    max-height: 680px;
}


/* =========================================================
   SMALL
========================================================= */

.netmore-scroll-carousel-card-small {
    width: 23vw;
    height: 37vh;

    min-width: 340px;
    min-height: 290px;

    max-width: 460px;
    max-height: 430px;
}


/* =========================================================
   CARD VERTICAL POSITIONS

   IMPORTANT:
   Visual transform only.
   Does not affect document flow.
========================================================= */

.netmore-scroll-carousel-card-v-top {
    translate: 0 -10vh;
}


.netmore-scroll-carousel-card-v-center {
    translate: 0 0;
}


.netmore-scroll-carousel-card-v-bottom {
    translate: 0 10vh;
}


/* =========================================================
   SIX BOX EDITORIAL RHYTHM
========================================================= */

.netmore-scroll-carousel-card:nth-child(1).netmore-scroll-carousel-card-v-center {
    translate: 0 3vh;
}


.netmore-scroll-carousel-card:nth-child(2).netmore-scroll-carousel-card-v-center {
    translate: 0 -10vh;
}


.netmore-scroll-carousel-card:nth-child(3).netmore-scroll-carousel-card-v-center {
    translate: 0 9vh;
}


.netmore-scroll-carousel-card:nth-child(4).netmore-scroll-carousel-card-v-center {
    translate: 0 -3vh;
}


.netmore-scroll-carousel-card:nth-child(5).netmore-scroll-carousel-card-v-center {
    translate: 0 -8vh;
}


.netmore-scroll-carousel-card:nth-child(6).netmore-scroll-carousel-card-v-center {
    translate: 0 6vh;
}


/* =========================================================
   LINK
========================================================= */

.netmore-scroll-carousel-card-link {
    position: relative;

    display: block;

    width: 100%;
    height: 100%;

    color: inherit;

    text-decoration: none;

    overflow: hidden;
}


/* =========================================================
   MEDIA
========================================================= */

.netmore-scroll-carousel-card-media {
    position: absolute;

    inset: 0;

    width: 100%;
    height: 100%;

    overflow: hidden;
}


/* =========================================================
   IMAGE
========================================================= */

.netmore-scroll-carousel-image {
    position: absolute !important;

    top: -5% !important;
    left: -5% !important;

    display: block !important;

    width: 110% !important;
    height: 110% !important;

    max-width: none !important;
    max-height: none !important;

    margin: 0 !important;
    padding: 0 !important;

    object-fit: cover;

    object-position: center center;

    transform: translate3d(0, 0, 0);

    will-change: transform;

    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}


/* =========================================================
   DARK IMAGE OVERLAY
========================================================= */

.netmore-scroll-carousel-card-overlay {
    position: absolute;

    inset: 0;

    z-index: 2;

    pointer-events: none;

    background:
        linear-gradient(
            to top,
            rgba(0, 0, 0, 0.72) 0%,
            rgba(0, 0, 0, 0.17) 40%,
            rgba(0, 0, 0, 0) 70%
        );
}


/* =========================================================
   COPY
========================================================= */

.netmore-scroll-carousel-card-copy {
    position: absolute;

    left: 0;
    right: 0;
    bottom: 0;

    z-index: 4;

    padding:
        24px
        26px;

    pointer-events: none;
}


/* =========================================================
   TITLE
========================================================= */

.netmore-scroll-carousel-card-title {
    margin: 0;

    color: #ffffff;

    font-size:
        clamp(
            23px,
            2vw,
            38px
        );

    font-weight: 500;

    line-height: 1;

    letter-spacing: -0.04em;
}


/* =========================================================
   SUBTITLE
========================================================= */

.netmore-scroll-carousel-card-subtitle {
    margin-top: 8px;

    color:
        rgba(
            255,
            255,
            255,
            0.72
        );

    font-size: 12px;

    font-weight: 400;

    line-height: 1.3;
}


/* =========================================================
   LAPTOP
========================================================= */

@media
(
    min-width: 1200px
)
and
(
    max-width: 1699px
) {

    .netmore-scroll-carousel-track {
        gap: 2vw;

        padding:
            0
            6vw;
    }


    .netmore-scroll-carousel-card-large {
        width: 43vw;
        height: 55vh;

        min-width: 540px;
        min-height: 410px;
    }


    .netmore-scroll-carousel-card-medium {
        width: 33vw;
        height: 46vh;

        min-width: 420px;
        min-height: 350px;
    }


    .netmore-scroll-carousel-card-tall {
        width: 27vw;
        height: 57vh;

        min-width: 350px;
        min-height: 430px;
    }


    .netmore-scroll-carousel-card-small {
        width: 25vw;
        height: 35vh;

        min-width: 320px;
        min-height: 270px;
    }
}


/* =========================================================
   TABLET
========================================================= */

@media
(
    min-width: 768px
)
and
(
    max-width: 1199px
) {

    .netmore-scroll-carousel-track {
        gap: 4vw;

        padding:
            0
            7vw;
    }


    .netmore-scroll-carousel-card-large {
        width: 68vw;
        height: 51vh;

        min-width: 490px;
        min-height: 370px;
    }


    .netmore-scroll-carousel-card-medium {
        width: 53vw;
        height: 43vh;

        min-width: 390px;
        min-height: 320px;
    }


    .netmore-scroll-carousel-card-tall {
        width: 42vw;
        height: 55vh;

        min-width: 320px;
        min-height: 410px;
    }


    .netmore-scroll-carousel-card-small {
        width: 42vw;
        height: 33vh;

        min-width: 310px;
        min-height: 250px;
    }


    .netmore-scroll-carousel-card-v-top {
        translate: 0 -7vh;
    }


    .netmore-scroll-carousel-card-v-bottom {
        translate: 0 7vh;
    }
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 767px) {

    .netmore-scroll-carousel-track {
        gap: 5vw;

        padding:
            0
            6vw;
    }


    .netmore-scroll-carousel-card-large {
        width: 82vw;
        height: 47vh;

        min-width: 290px;
        min-height: 310px;
    }


    .netmore-scroll-carousel-card-medium {
        width: 70vw;
        height: 41vh;

        min-width: 270px;
        min-height: 280px;
    }


    .netmore-scroll-carousel-card-tall {
        width: 64vw;
        height: 52vh;

        min-width: 250px;
        min-height: 350px;
    }


    .netmore-scroll-carousel-card-small {
        width: 62vw;
        height: 33vh;

        min-width: 240px;
        min-height: 235px;
    }


    .netmore-scroll-carousel-card-v-top {
        translate: 0 -5vh;
    }


    .netmore-scroll-carousel-card-v-center {
        translate: 0 0 !important;
    }


    .netmore-scroll-carousel-card-v-bottom {
        translate: 0 5vh;
    }


    .netmore-scroll-carousel-card-copy {
        padding:
            17px
            18px;
    }


    .netmore-scroll-carousel-card-title {
        font-size:
            clamp(
                20px,
                6vw,
                29px
            );
    }


    .netmore-scroll-carousel-card-subtitle {
        margin-top: 5px;

        font-size: 10px;
    }
}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (
    prefers-reduced-motion: reduce
) {

    .netmore-scroll-carousel {
        height: auto !important;
        min-height: auto !important;
    }


    .netmore-scroll-carousel-stage {
        position: relative !important;

        height: auto !important;
        min-height: auto !important;

        padding:
            50px
            0;
    }


    .netmore-scroll-carousel-viewport {
        position: relative;

        inset: auto;

        height: auto;

        overflow-x: auto;
    }


    .netmore-scroll-carousel-track {
        position: relative;

        top: auto;
        left: auto;

        transform: none !important;

        padding:
            0
            20px;
    }
}