/* ========================================================
   TESTIMONIALS — KIND WORDS
   ======================================================== */

.testimonials-section {
    position: relative;

    padding:
        100px 5%
        90px;

    background:
        #f3eee5;

    overflow: hidden;
}


.testimonials-section::before {
    content: "";

    position: absolute;

    width: 460px;
    height: 460px;

    right: -300px;
    top: 110px;

    border:
        1px solid
        rgba(145,123,94,.11);

    border-radius: 50%;

    pointer-events: none;
}


.testimonials-inner {
    position: relative;

    z-index: 2;

    max-width: 1450px;

    margin: auto;
}


/* ========================================================
   HEADING
   ======================================================== */

.testimonials-heading {
    display: grid;

    grid-template-columns:
        1.15fr .85fr;

    gap:
        clamp(
            45px,
            7vw,
            110px
        );

    align-items: end;

    margin-bottom: 55px;
}


.testimonials-heading .section-eyebrow {
    grid-column: 1 / -1;

    margin-bottom: -12px;
}


.testimonials-title {
    max-width: 760px;

    font-family:
        var(--serif);

    font-size:
        clamp(
            46px,
            4.8vw,
            74px
        );

    font-weight: 500;

    line-height: 1.04;

    letter-spacing:
        -2.3px;
}


.testimonials-title em {
    display: block;

    color:
        var(--champagne);

    font-weight: 500;
}


.testimonials-intro {
    max-width: 500px;

    color:
        var(--muted);

    font-size: 15px;

    line-height: 1.85;
}


/* ========================================================
   CAROUSEL
   ======================================================== */

.testimonials-carousel {
    position: relative;

    max-width: 1120px;

    margin:
        0 auto;
}


.testimonials-viewport {
    position: relative;

    min-height: 365px;

    overflow: hidden;

    border:
        1px solid
        rgba(145,123,94,.18);

    border-radius:
        0 38px
        0 0;

    background:
        rgba(255,255,255,.23);
}


.testimonials-track {
    position: relative;

    min-height: inherit;
}


/* ========================================================
   SLIDE
   ======================================================== */

.testimonial-slide {
    position: absolute;

    inset: 0;

    padding:
        52px 78px
        48px;

    display: flex;

    flex-direction: column;

    justify-content: center;

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    transform:
        translateX(28px);

    transition:
        opacity .55s ease,
        transform .65s
        cubic-bezier(.16,1,.3,1),
        visibility .55s ease;
}


.testimonial-slide.is-active {
    opacity: 1;

    visibility: visible;

    pointer-events: auto;

    transform:
        translateX(0);
}


/* ========================================================
   QUOTE MARK
   ======================================================== */

.testimonial-quote-mark {
    margin-bottom: 6px;

    color:
        rgba(145,123,94,.42);

    font-family:
        var(--serif);

    font-size: 68px;

    line-height: .75;
}


/* ========================================================
   QUOTE
   ======================================================== */

.testimonial-quote {
    max-width: 890px;

    margin: 0;

    color:
        var(--ink);

    font-family:
        var(--serif);

    font-size:
        clamp(
            25px,
            2vw,
            32px
        );

    font-weight: 500;

    line-height: 1.38;
}


/* ========================================================
   PERSON
   ======================================================== */

.testimonial-person {
    margin-top: 34px;

    display: flex;

    align-items: center;

    gap: 18px;
}


.testimonial-person-line {
    width: 52px;
    height: 1px;

    flex-shrink: 0;

    background:
        var(--champagne);
}


.testimonial-person > div {
    display: flex;

    flex-direction: column;

    gap: 5px;
}


.testimonial-person strong {
    color:
        var(--ink);

    font-family:
        var(--serif);

    font-size: 18px;

    font-weight: 500;
}


.testimonial-person > div > span {
    color:
        var(--champagne);

    font-size: 8px;

    font-weight: 600;

    text-transform:
        uppercase;

    letter-spacing:
        1.6px;
}


/* ========================================================
   NAVIGATION ARROWS
   ======================================================== */

.testimonials-nav {
    position: absolute;

    top: 50%;

    z-index: 4;

    width: 44px;
    height: 44px;

    display: grid;

    place-items: center;

    border:
        1px solid
        rgba(145,123,94,.23);

    border-radius: 50%;

    background:
        rgba(248,245,239,.92);

    color:
        var(--champagne);

    font-family:
        var(--serif);

    font-size: 21px;

    cursor: pointer;

    transform:
        translateY(-50%);

    transition:
        background .3s ease,
        color .3s ease,
        transform .3s ease,
        border-color .3s ease;
}


.testimonials-nav-prev {
    left: -70px;
}


.testimonials-nav-next {
    right: -70px;
}


.testimonials-nav:hover {
    background:
        var(--ink);

    color:
        white;

    border-color:
        var(--ink);
}


.testimonials-nav-prev:hover {
    transform:
        translateY(-50%)
        translateX(-3px);
}


.testimonials-nav-next:hover {
    transform:
        translateY(-50%)
        translateX(3px);
}


/* ========================================================
   DOTS
   ======================================================== */

.testimonials-dots {
    margin-top: 22px;

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 10px;
}


.testimonials-dot {
    width: 8px;
    height: 8px;

    padding: 0;

    border:
        1px solid
        rgba(145,123,94,.55);

    border-radius: 50%;

    background:
        transparent;

    cursor: pointer;

    transition:
        background .3s ease,
        transform .3s ease;
}


.testimonials-dot.is-active {
    background:
        var(--champagne);

    transform:
        scale(1.15);
}


/* ========================================================
   MORE REVIEWS
   ======================================================== */

.testimonials-more-wrap {
    margin-top: 28px;

    display: flex;

    justify-content: center;
}


.testimonials-more-link {
    position: relative;

    display: inline-flex;

    align-items: center;

    gap: 16px;

    padding-bottom: 7px;

    color:
        var(--ink);

    font-size: 9px;

    font-weight: 600;

    line-height: 1;

    text-transform:
        uppercase;

    letter-spacing:
        1.7px;

    text-decoration: none;
}


.testimonials-more-link::after {
    content: "";

    position: absolute;

    left: 0;
    bottom: 0;

    width: 100%;
    height: 1px;

    background:
        var(--champagne);

    transform:
        scaleX(.32);

    transform-origin:
        left;

    transition:
        transform .38s
        cubic-bezier(.77,0,.18,1);
}


.testimonials-more-link:hover::after {
    transform:
        scaleX(1);
}


.testimonials-more-arrow {
    display: inline-block;

    font-size: 18px;

    line-height: 1;

    transition:
        transform .3s ease;
}


.testimonials-more-link:hover
.testimonials-more-arrow {
    transform:
        translateX(5px);
}


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

@media (max-width: 1180px) {

    .testimonials-nav-prev {
        left: 12px;
    }

    .testimonials-nav-next {
        right: 12px;
    }

}


@media (max-width: 980px) {

    .testimonials-heading {
        grid-template-columns:
            1fr;

        gap: 24px;

        margin-bottom: 45px;
    }


    .testimonials-heading
    .section-eyebrow {
        grid-column: auto;

        margin-bottom: 0;
    }


    .testimonials-viewport {
        min-height: 390px;
    }


    .testimonial-slide {
        padding:
            50px 70px
            46px;
    }


    .testimonial-quote {
        font-size:
            clamp(
                23px,
                3vw,
                29px
            );
    }

}


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

@media (max-width: 620px) {

    .testimonials-section {
        padding:
            62px 0
            52px;
    }


    .testimonials-heading {
        display: block;

        margin:
            0 6%
            34px;
    }


    .testimonials-heading
    .section-eyebrow {
        margin-bottom:
            24px;
    }


    .testimonials-title {
        margin-bottom:
            22px;

        font-size:
            clamp(
                42px,
                12vw,
                56px
            );

        letter-spacing:
            -1.5px;
    }


    .testimonials-intro {
        max-width: 100%;

        font-size: 14px;

        line-height: 1.75;
    }


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

    .testimonials-carousel {
        margin:
            0 6%;
    }


    .testimonials-viewport {
        min-height:
            430px;

        border-radius:
            0 32px
            0 0;


        /*
         * IMPORTANT:
         *
         * Vertical scrolling stays native.
         * Horizontal gestures are available
         * for testimonial swiping.
         */

        touch-action:
            pan-y;

        -webkit-user-select:
            none;

        user-select:
            none;

        cursor:
            grab;
    }


    .testimonials-viewport:active {
        cursor:
            grabbing;
    }


    .testimonial-slide {
        padding:
            36px 28px
            58px;
    }


    .testimonial-quote-mark {
        margin-bottom:
            4px;

        font-size:
            52px;
    }


    .testimonial-quote {
        max-width:
            none;

        font-size:
            clamp(
                18px,
                5.2vw,
                21px
            );

        line-height:
            1.48;
    }


    .testimonial-person {
        margin-top:
            28px;

        gap:
            13px;
    }


    .testimonial-person-line {
        width:
            34px;
    }


    .testimonial-person strong {
        font-size:
            17px;
    }


    .testimonial-person
    > div
    > span {
        font-size:
            7px;

        letter-spacing:
            1.3px;
    }


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

    .testimonials-nav {
        width:
            38px;

        height:
            38px;

        top:
            auto;

        bottom:
            15px;

        transform:
            none;

        background:
            rgba(248,245,239,.95);
    }


    .testimonials-nav-prev {
        left:
            16px;
    }


    .testimonials-nav-next {
        right:
            16px;
    }


    .testimonials-nav-prev:hover,
    .testimonials-nav-next:hover {
        transform:
            none;
    }


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

    .testimonials-dots {
        margin-top:
            18px;

        gap:
            8px;
    }


    .testimonials-dot {
        width:
            7px;

        height:
            7px;
    }


    /* ====================================================
       MORE REVIEWS
       ==================================================== */

    .testimonials-more-wrap {
        margin-top:
            24px;
    }


    .testimonials-more-link {
        font-size:
            8px;

        letter-spacing:
            1.4px;
    }


    .testimonials-more-arrow {
        font-size:
            16px;
    }

}


/* ========================================================
   VERY SMALL MOBILE
   ======================================================== */

@media (max-width: 390px) {

    .testimonials-viewport {
        min-height:
            450px;
    }


    .testimonial-slide {
        padding:
            33px 23px
            58px;
    }


    .testimonial-quote {
        font-size:
            17px;
    }

}


/* ========================================================
   ACCESSIBILITY
   ======================================================== */

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

    .testimonial-slide,
    .testimonials-nav,
    .testimonials-dot,
    .testimonials-more-link::after,
    .testimonials-more-arrow {
        transition:
            none !important;
    }

}