/* =========================
   FOOTER
========================= */

.site-footer {
    position: relative;

    margin-top: 2px;
    padding: 70px 64px;

    overflow: hidden;

    background: #040D1A;
    color: #ffffff;
}

.footer-inner {
    position: relative;
    z-index: 2;

    display: grid;
    grid-template-columns:
        minmax(480px, 1.6fr)
        repeat(3, minmax(180px, 1fr));

    align-items: flex-start;
    column-gap: clamp(48px, 5vw, 100px);
}


/* =========================
   NEWSLETTER
========================= */

.footer-newsletter {
    width: 100%;
    max-width: 650px;
}

.footer-newsletter-title {
    margin: -13px 0 28px;

    color: #ffffff;

    font-family: var(--font-decorative);
    font-size: 36px;
    font-weight: 300;
    font-style: italic;
    line-height: 1;

    white-space: nowrap;
}

.footer-newsletter-text {
    max-width: 620px;

    margin: 0 0 28px;

    color: #ffffff;

    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 300;
    line-height: 1.45;
}

.footer-newsletter-form {
    width: 100%;
    max-width: 640px;
}


/* =========================
   CONTACT FORM 7 RESET
========================= */

.footer-newsletter-form .wpcf7,
.footer-newsletter-form .wpcf7-form,
.footer-newsletter-form .wpcf7-form p {
    margin: 0;
    padding: 0;
}


/* =========================
   NEWSLETTER FORM
========================= */

.newsletter-form-row {
    position: relative;

    width: 100%;
    height: 50px;

    display: flex;
    align-items: center;

    border: 1px solid rgba(255, 255, 255, 0.9);

    box-sizing: border-box;
}

.newsletter-form-row .wpcf7-form-control-wrap {
    display: block;

    width: 100%;
    height: 100%;
}

.newsletter-email {
    display: block;

    width: 100%;
    height: 100%;

    padding: 0 76px 0 24px;

    border: 0;
    outline: 0;
    border-radius: 0;

    background: transparent;
    color: #ffffff;

    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 300;
    line-height: 1;
    text-transform: uppercase;

    box-sizing: border-box;
}

.newsletter-email::placeholder {
    color: rgba(255, 255, 255, 0.9);
    opacity: 1;
}

.newsletter-submit {
    position: absolute;
    top: 0;
    right: 0;

    width: 72px;
    height: 100%;

    padding: 0;
    border: 0;

    background: transparent;

    cursor: pointer;
}

.newsletter-submit span {
    position: absolute;
    top: 48%;
    left: 50%;

    width: 12px;
    height: 12px;

    border-top: 2px solid #ffffff;
    border-right: 2px solid #ffffff;

    transform: translate(-60%, -50%) rotate(45deg);
}


/* =========================
   FOOTER MENUS
========================= */

.footer-menu-column {
    min-width: 0;
}

.footer-menu-column h3 {
    margin: 0 0 30px;

    color: #ffffff;

    font-family: var(--font-body);
    font-size: 16px;
    font-weight: 400;
    line-height: 1;
    text-transform: uppercase;
}

.footer-menu {
    display: flex;
    flex-direction: column;
    gap: 16px;

    margin: 0;
    padding: 0;

    list-style: none;
}

.footer-menu li {
    margin: 0;
    padding: 0;
}

.footer-menu a {
    position: relative;

    display: inline-block;
    width: fit-content;

    padding-bottom: 4px;

    color: #ffffff;

    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 300;
    line-height: 1.3;
    text-decoration: none;

    white-space: nowrap;
}

.footer-menu a::after {
    content: "";

    position: absolute;
    left: 0;
    bottom: 0;

    width: 100%;
    height: 1px;

    background: currentColor;

    transform: scaleX(0);
    transform-origin: right center;

    transition: transform 0.35s ease;
}

.footer-menu a:hover::after,
.footer-menu a:focus-visible::after {
    transform: scaleX(1);
    transform-origin: left center;
}


/* =========================
   CF7 TECHNICAL ELEMENTS
========================= */

.footer-newsletter-form .wpcf7-spinner,
.footer-newsletter-form .wpcf7-not-valid-tip,
.footer-newsletter-form .wpcf7-response-output {
    display: none !important;
}


/* =========================
   FOOTER — ULTRA-WIDE
   1620px → standard desktop
   2953px → maximum scale
========================= */

@media (min-width: 1620px) {

    /*
     * Горизонтальний відступ залишається 64px,
     * щоб футер збігався з початком хедера.
     */

    .site-footer {
        padding:
            clamp(
                70px,
                calc(26.25px + 2.7vw),
                106px
            )
            64px;
    }

    .footer-inner {
        grid-template-columns:
            minmax(
                clamp(
                    480px,
                    calc(174.95px + 18.83vw),
                    731px
                ),
                1.6fr
            )
            repeat(
                3,
                minmax(
                    clamp(
                        180px,
                        calc(65.76px + 7.052vw),
                        274px
                    ),
                    1fr
                )
            );

        column-gap: clamp(
            80px,
            5vw,
            148px
        );
    }


    /* Newsletter container */

    .footer-newsletter {
        max-width: clamp(
            650px,
            calc(236.8px + 25.506vw),
            990px
        );
    }

    .footer-newsletter-form {
        max-width: clamp(
            640px,
            calc(234.09px + 25.056vw),
            974px
        );
    }


    /*
     * 36px → 55px
     */

    .footer-newsletter-title {
        margin:
            clamp(
                -20px,
                calc(-4.49px - 0.525vw),
                -13px
            )
            0
            clamp(
                28px,
                calc(9.78px + 1.125vw),
                43px
            );

        font-size: clamp(
            36px,
            calc(12.91px + 1.425vw),
            55px
        );
    }


    /*
     * 14px → 21px
     */

    .footer-newsletter-text {
        max-width: clamp(
            620px,
            calc(226.24px + 24.306vw),
            944px
        );

        margin-bottom: clamp(
            28px,
            calc(9.78px + 1.125vw),
            43px
        );

        font-size: clamp(
            14px,
            calc(5.49px + 0.525vw),
            21px
        );
    }


    /* Newsletter form */

    .newsletter-form-row {
        height: clamp(
            50px,
            calc(18.4px + 1.95vw),
            76px
        );
    }

    /*
     * 13px → 20px
     */

    .newsletter-email {
        padding-right: clamp(
            76px,
            calc(27.39px + 3.001vw),
            116px
        );

        padding-left: clamp(
            24px,
            calc(9.42px + 0.9vw),
            36px
        );

        font-size: clamp(
            13px,
            calc(4.49px + 0.525vw),
            20px
        );
    }

    .newsletter-submit {
        width: clamp(
            72px,
            calc(25.82px + 2.851vw),
            110px
        );
    }

    .newsletter-submit span {
        width: clamp(
            12px,
            calc(4.71px + 0.45vw),
            18px
        );

        height: clamp(
            12px,
            calc(4.71px + 0.45vw),
            18px
        );

        border-top-width: clamp(2px, 0.1vw, 3px);
        border-right-width: clamp(2px, 0.1vw, 3px);
    }


    /* Menu headings: 16px → 24px */

    .footer-menu-column h3 {
        margin-bottom: clamp(
            30px,
            calc(10.56px + 1.2vw),
            46px
        );

        font-size: clamp(
            16px,
            calc(6.28px + 0.6vw),
            24px
        );
    }


    /* Menu links: 14px → 21px */

    .footer-menu {
        gap: clamp(
            16px,
            calc(6.28px + 0.6vw),
            24px
        );
    }

    .footer-menu a {
        padding-bottom: clamp(
            4px,
            calc(1.57px + 0.15vw),
            6px
        );

        font-size: clamp(
            14px,
            calc(5.49px + 0.525vw),
            21px
        );
    }
}


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

@media (max-width: 1199px) {

    .site-footer {
        min-height: 540px;
        padding: 40px 24px 0;
    }

    .footer-inner {
        grid-template-columns:
            repeat(3, minmax(0, 1fr));

        column-gap: 40px;
        row-gap: 54px;
    }

    .footer-newsletter {
        grid-column: 1 / -1;

        max-width: 640px;
    }

    .footer-newsletter-title {
        margin-top: 0;

        font-size: 34px;
        white-space: normal;
    }
}


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

@media (max-width: 767px) {

    .site-footer {
        min-height: auto;
        padding: 42px 18px;
    }

    .footer-inner {
        display: block;
    }

    .footer-newsletter {
        max-width: none;
        margin-bottom: 46px;
    }

    .footer-newsletter-title {
        margin: 0 0 20px;

        font-size: 30px;
        line-height: 1.05;

        white-space: normal;
    }

    .footer-newsletter-text {
        margin-bottom: 24px;

        font-size: 14px;
        line-height: 1.45;
    }

    .footer-newsletter-form {
        max-width: none;
    }

    .newsletter-form-row {
        height: 50px;
    }

    .newsletter-email {
        height: 50px;

        padding-right: 64px;
        padding-left: 18px;

        font-size: 16px;
    }

    .newsletter-submit {
        width: 58px;
    }

    .footer-menu-column {
        padding: 20px 0;

        border-top:
            1px solid
            rgba(255, 255, 255, 0.28);
    }

    .footer-menu-column h3 {
        margin: 0 0 18px;

        font-size: 13px;
    }

    .footer-menu {
        gap: 12px;
    }

    .footer-menu a {
        font-size: 14px;
    }
}


/* =========================
   SCROLL TO TOP
========================= */

.scroll-top {
    position: fixed;
    right: 24px;
    bottom: 24px;
    z-index: 9000;

    width: 38px;
    height: 38px;

    padding: 0;
    border: 1px solid #ffffff;

    background: #040D1A;
    color: #ffffff;

    font-size: 18px;
    line-height: 1;

    cursor: pointer;

    opacity: 0;
    visibility: hidden;

    transform: translateY(12px);

    transition:
        opacity 0.25s ease,
        visibility 0.25s ease,
        transform 0.25s ease;
}

.scroll-top.is-visible {
    opacity: 1;
    visibility: visible;

    transform: translateY(0);
}


/* =========================
   SCROLL TO TOP — ULTRA-WIDE
========================= */

@media (min-width: 1620px) {

    .scroll-top {
        right: clamp(
            24px,
            calc(9.42px + 0.9vw),
            36px
        );

        bottom: clamp(
            24px,
            calc(9.42px + 0.9vw),
            36px
        );

        width: clamp(
            38px,
            calc(13.69px + 1.5vw),
            58px
        );

        height: clamp(
            38px,
            calc(13.69px + 1.5vw),
            58px
        );

        font-size: clamp(
            18px,
            calc(7.07px + 0.675vw),
            27px
        );
    }
}


/* =========================
   SCROLL TO TOP — MOBILE
========================= */

@media (max-width: 767px) {

    .scroll-top {
        right: 16px;
        bottom: 16px;

        width: 40px;
        height: 40px;

        font-size: 20px;
    }
}