/* ===== GRANI FOOTER RUNTIME CSS BLOCK 01 ===== */
/* GRANI V85.5 — responsive footer mobile refinement.
   Existing HTML, contacts and schema.org data are preserved. */

footer {
    position: relative !important;
    isolation: isolate !important;
}

footer::before {
    content: "" !important;
    position: absolute !important;
    z-index: 0 !important;
    inset: 0 !important;
    background: rgba(255,255,255,0.12) !important;
    pointer-events: none !important;
}

footer > * {
    position: relative !important;
    z-index: 1 !important;
}

footer > .graniFooterMain {
    display: grid !important;
    box-sizing: border-box !important;
    margin-right: auto !important;
    margin-left: auto !important;
    border: 1px solid rgba(123,87,44,0.10) !important;
    background: rgba(255,255,255,0.94) !important;
    box-shadow: 0 12px 36px rgba(39,31,22,0.07) !important;
    -webkit-backdrop-filter: blur(10px) saturate(115%) !important;
    backdrop-filter: blur(10px) saturate(115%) !important;
}

footer > .graniFooterMain .graniFooterBrand,
footer > .graniFooterMain .graniFooterAddress,
footer > .graniFooterMain .graniFooterHours,
footer > .graniFooterMain .graniFooterContact {
    align-self: center !important;
    min-width: 0 !important;
}

footer > .graniFooterMain .f_logo {
    display: block !important;
    margin: 0 !important;
    background-size: contain !important;
    background-position: 0 50% !important;
    background-repeat: no-repeat !important;
}

footer > .graniFooterMain .graniFooterAddress .f_icon,
footer > .graniFooterMain .graniFooterHours .f_icon {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    color: #484848 !important;
    font-family: 'Onest', sans-serif !important;
    font-weight: 400 !important;
    line-height: 1.35 !important;
}

footer > .graniFooterMain .graniFooterContact {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    justify-content: center !important;
}

footer > .graniFooterMain .graniFooterSocial {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin: 0 !important;
}

footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
    display: block !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    border: 1px solid rgba(123,87,44,0.38) !important;
    border-radius: 12px !important;
    background-color: #fff !important;
    background-position: 50% 50% !important;
    background-repeat: no-repeat !important;
    box-shadow: none !important;
    transition: border-color 160ms ease, background-color 160ms ease !important;
}

footer > .graniFooterMain .graniFooterSocial .top_soc_elem:hover {
    border-color: #7b572c !important;
    background-color: rgba(123,87,44,0.07) !important;
    transform: none !important;
}

footer > .graniFooterMain .graniFooterPhone .f_phone {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    color: #484848 !important;
    font-family: 'Jun', Georgia, serif !important;
    font-weight: 400 !important;
    line-height: 1.05 !important;
    white-space: nowrap !important;
    text-decoration: none !important;
}

footer .footer_after {
    box-sizing: border-box !important;
    margin-right: auto !important;
    margin-left: auto !important;
    padding: 0 !important;
    background: transparent !important;
}

footer .footer_after .graniFooterLegal {
    box-sizing: border-box !important;
    display: grid !important;
    align-items: center !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    border: 1px solid rgba(123,87,44,0.08) !important;
    background: rgba(255,255,255,0.80) !important;
    color: rgba(72,72,72,0.84) !important;
    font-family: 'Onest', sans-serif !important;
    line-height: 1.3 !important;
    box-shadow: 0 8px 24px rgba(39,31,22,0.035) !important;
}

footer .graniFooterCopyright,
footer .graniFooterLegalText,
footer .graniFooterCaptcha {
    min-width: 0 !important;
    margin: 0 !important;
}

footer .graniFooterCopyright .f_copy,
footer .graniFooterLegalText,
footer .graniFooterLegalText p,
footer .graniFooterLegalText .f_privacy {
    color: inherit !important;
    font-size: inherit !important;
    line-height: inherit !important;
}

footer .graniFooterLegalText p {
    margin: 0 !important;
    padding: 0 !important;
}

footer .graniFooterLegalText .f_privacy {
    text-decoration: underline !important;
    text-underline-offset: 2px !important;
}

footer .graniFooterCaptcha {
    align-self: center !important;
}

/* Wide desktop: current approved four-column composition. */
@media screen and (min-width: 1280px) {
    footer > .graniFooterMain {
        width: min(1380px, calc(100% - 56px)) !important;
        max-width: 1380px !important;
        grid-template-columns: 190px 190px minmax(320px, 1fr) 330px !important;
        align-items: center !important;
        column-gap: clamp(30px, 2.6vw, 42px) !important;
        row-gap: 10px !important;
        padding: 20px 36px !important;
        border-radius: 28px !important;
    }

    footer > .graniFooterMain .f_logo {
        width: 174px !important;
        height: 60px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 14px !important;
    }

    footer > .graniFooterMain .graniFooterContact {
        justify-self: end !important;
        width: 330px !important;
        max-width: 100% !important;
        gap: 9px !important;
    }

    footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 46px !important;
        height: 46px !important;
        background-size: 20px auto !important;
    }

    footer > .graniFooterMain .graniFooterPhone .f_phone {
        font-size: clamp(26px, 2vw, 31px) !important;
    }

    footer .footer_after {
        width: min(1380px, calc(100% - 56px)) !important;
        max-width: 1380px !important;
        margin-top: 7px !important;
        margin-bottom: 16px !important;
    }

    footer .footer_after .graniFooterLegal {
        grid-template-columns: auto minmax(0, 1fr) auto !important;
        gap: 14px 28px !important;
        padding: 8px 18px !important;
        border-radius: 16px !important;
        font-size: 11.5px !important;
    }

    footer .graniFooterCopyright,
    footer .graniFooterLegalText {
        white-space: nowrap !important;
    }

    footer .graniFooterLegalText {
        display: flex !important;
        align-items: center !important;
        gap: 12px !important;
    }

    footer .graniFooterCaptcha {
        justify-self: end !important;
    }
}

/* Medium desktop / landscape tablet: stable 2x2 grid. */
@media screen and (min-width: 700px) and (max-width: 1279px) {
    footer > .graniFooterMain {
        width: min(900px, calc(100% - 32px)) !important;
        max-width: 900px !important;
        grid-template-columns: minmax(180px, 0.8fr) minmax(260px, 1.2fr) !important;
        grid-template-areas:
            "brand address"
            "hours contact" !important;
        align-items: center !important;
        column-gap: clamp(34px, 6vw, 72px) !important;
        row-gap: 20px !important;
        padding: 22px 30px !important;
        border-radius: 24px !important;
    }

    footer > .graniFooterMain .graniFooterBrand { grid-area: brand !important; }
    footer > .graniFooterMain .graniFooterAddress { grid-area: address !important; }
    footer > .graniFooterMain .graniFooterHours { grid-area: hours !important; }
    footer > .graniFooterMain .graniFooterContact { grid-area: contact !important; }

    footer > .graniFooterMain .f_logo {
        width: 168px !important;
        height: 58px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 14px !important;
    }

    footer > .graniFooterMain .graniFooterContact {
        width: auto !important;
        justify-self: start !important;
        gap: 8px !important;
    }

    footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 46px !important;
        height: 46px !important;
        background-size: 20px auto !important;
    }

    footer > .graniFooterMain .graniFooterPhone .f_phone {
        font-size: 27px !important;
    }

    footer .footer_after {
        width: min(900px, calc(100% - 32px)) !important;
        max-width: 900px !important;
        margin-top: 7px !important;
        margin-bottom: 14px !important;
    }

    footer .footer_after .graniFooterLegal {
        grid-template-columns: minmax(180px, .75fr) minmax(0, 1.65fr) !important;
        grid-template-areas:
            "copy legal"
            "captcha legal" !important;
        gap: 7px 20px !important;
        padding: 10px 16px !important;
        border-radius: 15px !important;
        font-size: 11.5px !important;
    }

    footer .graniFooterCopyright { grid-area: copy !important; }
    footer .graniFooterLegalText { grid-area: legal !important; }
    footer .graniFooterCaptcha { grid-area: captcha !important; justify-self: start !important; }

    footer .graniFooterLegalText {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        gap: 4px 10px !important;
    }
}

/* Compact portrait / mobile: keep a 2x2 information grid instead of a long vertical tail. */
@media screen and (max-width: 699px) {
    footer::before {
        background: rgba(255,255,255,0.18) !important;
    }

    footer > .graniFooterMain {
        width: calc(100% - 24px) !important;
        max-width: 640px !important;
        grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr) !important;
        grid-template-areas:
            "brand address"
            "hours contact" !important;
        align-items: start !important;
        column-gap: 18px !important;
        row-gap: 18px !important;
        padding: 19px 20px !important;
        border-radius: 22px !important;
    }

    footer > .graniFooterMain .graniFooterBrand { grid-area: brand !important; }
    footer > .graniFooterMain .graniFooterAddress { grid-area: address !important; }
    footer > .graniFooterMain .graniFooterHours { grid-area: hours !important; }
    footer > .graniFooterMain .graniFooterContact { grid-area: contact !important; }

    footer > .graniFooterMain .f_logo {
        width: min(100%, 160px) !important;
        height: 58px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 14px !important;
        line-height: 1.38 !important;
    }

    footer > .graniFooterMain .graniFooterContact {
        width: 100% !important;
        gap: 8px !important;
    }

    footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 44px !important;
        height: 44px !important;
        background-size: 19px auto !important;
    }

    footer > .graniFooterMain .graniFooterPhone .f_phone {
        font-size: clamp(18px, 4.8vw, 24px) !important;
        white-space: nowrap !important;
    }

    footer .footer_after {
        width: calc(100% - 24px) !important;
        max-width: 640px !important;
        margin-top: 6px !important;
        margin-bottom: 10px !important;
    }

    footer .footer_after .graniFooterLegal {
        grid-template-columns: 1fr !important;
        gap: 7px !important;
        padding: 10px 14px !important;
        border-radius: 14px !important;
        color: rgba(72,72,72,0.92) !important;
        font-size: 11.5px !important;
        line-height: 1.38 !important;
    }

    footer .graniFooterCopyright,
    footer .graniFooterLegalText,
    footer .graniFooterCaptcha {
        justify-self: start !important;
        width: 100% !important;
    }

    footer .graniFooterLegalText {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 4px 8px !important;
    }
}

/* Very narrow phones: retain 2x2, reduce visual mass. */
@media screen and (max-width: 399px) {
    footer > .graniFooterMain {
        width: calc(100% - 16px) !important;
        column-gap: 12px !important;
        row-gap: 16px !important;
        padding: 16px 14px !important;
        border-radius: 18px !important;
    }

    footer > .graniFooterMain .f_logo {
        width: min(100%, 138px) !important;
        height: 52px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 13px !important;
    }

    footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 42px !important;
        height: 42px !important;
    }

    footer > .graniFooterMain .graniFooterPhone .f_phone {
        font-size: 18px !important;
    }

    footer .footer_after {
        width: calc(100% - 16px) !important;
    }

    footer .footer_after .graniFooterLegal {
        padding: 9px 12px !important;
        font-size: 11px !important;
        line-height: 1.36 !important;
    }
}
/* END GRANI V85.5 */

/* GRANI V85.6 — breakpoint tuning + compact legal strip */
footer,
footer .footer_after,
footer .footer_after .graniFooterLegal {
    height: auto !important;
    min-height: 0 !important;
}

/* System controls must not participate in the legal strip grid height. */
footer .footer_after .graniFooterLegal {
    position: relative !important;
}

footer .graniFooterCaptcha {
    position: absolute !important;
    z-index: 2 !important;
    right: 12px !important;
    bottom: 7px !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

footer .graniFooterCaptcha .f_captcha {
    display: block !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

footer .graniFooterLegal > .almaUp {
    position: fixed !important;
    z-index: 100 !important;
    right: 12px !important;
    bottom: 12px !important;
    left: auto !important;
    top: auto !important;
    width: 50px !important;
    height: 50px !important;
    margin: 0 !important;
}

/* Four-column footer remains viable much longer than in V85.5. */
@media screen and (min-width: 1100px) {
    footer > .graniFooterMain {
        width: min(1380px, calc(100% - 56px)) !important;
        max-width: 1380px !important;
        grid-template-columns: 180px 170px minmax(300px, 1fr) minmax(270px, 320px) !important;
        grid-template-areas: none !important;
        align-items: center !important;
        column-gap: clamp(20px, 2.2vw, 36px) !important;
        row-gap: 8px !important;
        padding: 18px 24px !important;
        border-radius: 28px !important;
    }

    footer > .graniFooterMain .graniFooterBrand,
    footer > .graniFooterMain .graniFooterAddress,
    footer > .graniFooterMain .graniFooterHours,
    footer > .graniFooterMain .graniFooterContact {
        grid-area: auto !important;
    }

    footer > .graniFooterMain .f_logo {
        width: 166px !important;
        height: 58px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 14px !important;
        line-height: 1.34 !important;
    }

    footer > .graniFooterMain .graniFooterContact {
        justify-self: end !important;
        width: min(100%, 300px) !important;
        gap: 8px !important;
    }

    footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 46px !important;
        height: 46px !important;
        background-size: 20px auto !important;
    }

    footer > .graniFooterMain .graniFooterPhone .f_phone {
        font-size: clamp(25px, 2vw, 31px) !important;
    }

    footer .footer_after {
        width: min(1380px, calc(100% - 56px)) !important;
        max-width: 1380px !important;
        margin-top: 7px !important;
        margin-bottom: 12px !important;
    }

    footer .footer_after .graniFooterLegal {
        grid-template-columns: auto minmax(0, 1fr) !important;
        grid-template-areas: "copy legal" !important;
        align-items: center !important;
        gap: 6px 24px !important;
        padding: 7px 84px 7px 16px !important;
        border-radius: 15px !important;
        font-size: 11.5px !important;
        line-height: 1.28 !important;
    }

    footer .graniFooterCopyright {
        grid-area: copy !important;
        white-space: nowrap !important;
    }

    footer .graniFooterLegalText {
        grid-area: legal !important;
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        gap: 3px 12px !important;
        min-width: 0 !important;
    }
}

/* Mid-size screens: true compact 2x2, without excessive vertical air. */
@media screen and (min-width: 700px) and (max-width: 1099px) {
    footer > .graniFooterMain {
        width: min(980px, calc(100% - 32px)) !important;
        max-width: 980px !important;
        grid-template-columns: minmax(180px, .9fr) minmax(260px, 1.1fr) !important;
        grid-template-areas:
            "brand address"
            "hours contact" !important;
        align-items: start !important;
        column-gap: clamp(28px, 5vw, 48px) !important;
        row-gap: 12px !important;
        padding: 18px 24px !important;
        border-radius: 24px !important;
    }

    footer > .graniFooterMain .f_logo {
        width: 158px !important;
        height: 54px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 13.5px !important;
        line-height: 1.34 !important;
    }

    footer > .graniFooterMain .graniFooterContact {
        width: auto !important;
        justify-self: start !important;
        gap: 7px !important;
    }

    footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 44px !important;
        height: 44px !important;
        background-size: 19px auto !important;
    }

    footer > .graniFooterMain .graniFooterPhone .f_phone {
        font-size: 25px !important;
    }

    footer .footer_after {
        width: min(980px, calc(100% - 32px)) !important;
        max-width: 980px !important;
        margin-top: 6px !important;
        margin-bottom: 10px !important;
    }

    footer .footer_after .graniFooterLegal {
        grid-template-columns: auto minmax(0, 1fr) !important;
        grid-template-areas: "copy legal" !important;
        align-items: start !important;
        gap: 5px 18px !important;
        padding: 8px 72px 8px 13px !important;
        border-radius: 14px !important;
        font-size: 11.3px !important;
        line-height: 1.30 !important;
    }

    footer .graniFooterCopyright {
        grid-area: copy !important;
        white-space: nowrap !important;
    }

    footer .graniFooterLegalText {
        grid-area: legal !important;
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: flex-start !important;
        gap: 3px 9px !important;
        min-width: 0 !important;
    }
}

/* Mobile: keep the approved 2x2 contact card, compress only spacing and legal text. */
@media screen and (max-width: 699px) {
    footer > .graniFooterMain {
        width: calc(100% - 20px) !important;
        max-width: 640px !important;
        grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr) !important;
        grid-template-areas:
            "brand address"
            "hours contact" !important;
        column-gap: 16px !important;
        row-gap: 12px !important;
        padding: 16px 17px !important;
        border-radius: 21px !important;
    }

    footer > .graniFooterMain .f_logo {
        width: min(100%, 152px) !important;
        height: 54px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 13.5px !important;
        line-height: 1.34 !important;
    }

    footer > .graniFooterMain .graniFooterContact {
        gap: 6px !important;
    }

    footer .footer_after {
        width: calc(100% - 20px) !important;
        max-width: 640px !important;
        margin-top: 6px !important;
        margin-bottom: 8px !important;
    }

    footer .footer_after .graniFooterLegal {
        display: grid !important;
        grid-template-columns: 1fr !important;
        grid-template-areas:
            "copy"
            "legal" !important;
        gap: 3px !important;
        padding: 8px 58px 8px 12px !important;
        border-radius: 13px !important;
        font-size: 11.5px !important;
        line-height: 1.34 !important;
    }

    footer .graniFooterCopyright {
        grid-area: copy !important;
        width: auto !important;
    }

    footer .graniFooterLegalText {
        grid-area: legal !important;
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 2px 7px !important;
        width: auto !important;
    }

    footer .graniFooterCaptcha {
        right: 8px !important;
        bottom: 7px !important;
    }
}

@media screen and (max-width: 399px) {
    footer > .graniFooterMain {
        width: calc(100% - 14px) !important;
        column-gap: 10px !important;
        row-gap: 10px !important;
        padding: 14px 12px !important;
        border-radius: 18px !important;
    }

    footer > .graniFooterMain .f_logo {
        width: min(100%, 132px) !important;
        height: 48px !important;
    }

    footer > .graniFooterMain .graniFooterAddress .f_icon,
    footer > .graniFooterMain .graniFooterHours .f_icon {
        font-size: 12.5px !important;
    }

    footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 40px !important;
        height: 40px !important;
    }

    footer > .graniFooterMain .graniFooterPhone .f_phone {
        font-size: 17.5px !important;
    }

    footer .footer_after {
        width: calc(100% - 14px) !important;
    }

    footer .footer_after .graniFooterLegal {
        padding: 7px 52px 7px 10px !important;
        font-size: 11px !important;
        line-height: 1.32 !important;
    }
}
/* END GRANI V85.6 */

/* GRANI V85.7 — final footer spacing polish */
footer {
    padding-top: 52px !important;
}

/* The old AlmaCMS back-to-top control renders as a grey circle because its
   legacy background shorthand suppresses the arrow icon. With a permanent
   header it is redundant, so remove it from the visual interface. */
footer .almaUp,
footer .footer_after .graniFooterLegal > .almaUp {
    display: none !important;
}

@media screen and (min-width: 1100px) {
    footer > .graniFooterMain {
        padding-top: 17px !important;
        padding-bottom: 17px !important;
    }

    footer .footer_after {
        margin-top: 6px !important;
        margin-bottom: 8px !important;
    }

    footer .footer_after .graniFooterLegal {
        padding-top: 6px !important;
        padding-bottom: 6px !important;
    }
}

@media screen and (min-width: 700px) and (max-width: 1099px) {
    footer {
        padding-top: 42px !important;
    }

    footer > .graniFooterMain {
        row-gap: 8px !important;
        padding-top: 15px !important;
        padding-bottom: 15px !important;
    }

    footer .footer_after {
        margin-top: 5px !important;
        margin-bottom: 7px !important;
    }

    footer .footer_after .graniFooterLegal {
        padding-top: 7px !important;
        padding-bottom: 7px !important;
    }
}

@media screen and (max-width: 699px) {
    footer {
        padding-top: 30px !important;
    }

    footer > .graniFooterMain {
        row-gap: 8px !important;
        padding-top: 14px !important;
        padding-bottom: 14px !important;
    }

    footer .footer_after {
        margin-top: 5px !important;
        margin-bottom: 6px !important;
    }

    footer .footer_after .graniFooterLegal {
        padding-top: 7px !important;
        padding-bottom: 7px !important;
    }
}

@media screen and (max-width: 399px) {
    footer {
        padding-top: 24px !important;
    }

    footer > .graniFooterMain {
        row-gap: 7px !important;
        padding-top: 12px !important;
        padding-bottom: 12px !important;
    }

    footer .footer_after {
        margin-top: 4px !important;
        margin-bottom: 5px !important;
    }
}
/* END GRANI V85.7 */

/* GRANI V86 — footer stabilization from fresh 2026-08-11 archive.
   Keep the approved V85.x layout; fix only shell alignment and visual artifacts. */
footer::before {
    content: none !important;
    display: none !important;
}

footer > .graniFooterMain {
    background: #fff !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}

/* The legal strip now uses exactly the same available width as the main card.
   This avoids the independent side drift seen at intermediate breakpoints. */
footer .footer_after {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 1380px !important;
    margin-right: auto !important;
    margin-left: auto !important;
    background: transparent !important;
}

footer .footer_after .graniFooterLegal {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    margin-right: 0 !important;
    margin-left: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}

footer .almaUp,
footer .footer_after .graniFooterLegal > .almaUp {
    display: none !important;
}
/* END GRANI V86 */
/* GRANI V86.2 — keep rounded outlines, remove footer-image bleed-through.
   The cards are now fully opaque white; existing borders/radii remain untouched. */

/* GRANI V86.3 — remove only the top border of the main footer card.
   The side/bottom outline and all border-radius values remain unchanged. */
footer > .graniFooterMain {
    border-top: 0 !important;
}
/* END GRANI V86.3 */

/* GRANI V86.6 — actual fix for the footer background cut on <=1381px.
   Legacy adaptive CSS sets `footer .mid { min-width:100%; }`. Because the
   contact card is also `.mid`, that rule forced it to span the whole footer
   and covered the bg_footer.png artwork in the side gutters. Reset only that
   inherited min-width so the approved breakpoint widths can work again. */
footer > .graniFooterMain {
    min-width: 0 !important;
    background: #fff !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    box-shadow: none !important;
}
/* END GRANI V86.6 */

/* GRANI V86.8 — remove the flat gray substrate baked into bg_footer.png.
   Use a separate transparent-background asset so the original image remains
   untouched and rollback is trivial. Geometry of the approved V86.6 footer
   stays unchanged. */
footer {
    background-color: #fff !important;
    background-image: url('/well/templates/ae01/pics/bg_footer_clean.png') !important;
    background-image: image-set(
        url('/well/templates/ae01/pics/bg_footer_clean.webp') type('image/webp') 1x,
        url('/well/templates/ae01/pics/bg_footer_clean.png') type('image/png') 1x
    ) !important;
    background-position: 50% 50% !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}

/* V86's generic 100% footer_after width was later than the approved V85.6
   breakpoint widths. Reassert the same shell width as the contact card. */
@media screen and (min-width: 1100px) {
    footer .footer_after {
        width: min(1380px, calc(100% - 56px)) !important;
        max-width: 1380px !important;
        margin-right: auto !important;
        margin-left: auto !important;
    }
}

@media screen and (min-width: 700px) and (max-width: 1099px) {
    footer .footer_after {
        width: min(980px, calc(100% - 32px)) !important;
        max-width: 980px !important;
        margin-right: auto !important;
        margin-left: auto !important;
    }
}

@media screen and (max-width: 699px) {
    footer .footer_after {
        width: calc(100% - 20px) !important;
        max-width: 640px !important;
        margin-right: auto !important;
        margin-left: auto !important;
    }
}

@media screen and (max-width: 399px) {
    footer .footer_after {
        width: calc(100% - 14px) !important;
    }
}
/* END GRANI V86.8 */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 02 ===== */
/* GRANI V87.4 — structural fix for the legal footer card.
   The legal card no longer has the legacy AlmaCMS .mid class, therefore
   .footer_after .mid { border-radius:0 } and responsive .mid rules cannot
   reset its geometry. One shared radius variable keeps both cards matched. */
footer {
    --grani-footer-card-radius: 28px;
}

footer > .graniFooterMain,
footer .footer_after > .graniFooterLegal {
    border-radius: var(--grani-footer-card-radius) !important;
}

footer .footer_after > .graniFooterLegal {
    position: relative !important;
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
    clip-path: none !important;
    overflow: visible !important;
}

@media screen and (min-width: 700px) and (max-width: 1099px) {
    footer { --grani-footer-card-radius: 24px; }
}

@media screen and (min-width: 400px) and (max-width: 699px) {
    footer { --grani-footer-card-radius: 21px; }
}

@media screen and (max-width: 399px) {
    footer { --grani-footer-card-radius: 18px; }
}
/* END GRANI V87.4 */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 03 ===== */
.privacyPolicyAcknowledgement {
	display: block !important;
	margin-top: 2px !important;
}

.formInlineValidationMessage {
	display: block !important;
	box-sizing: border-box;
	width: 100%;
	min-height: 24px;
	margin: 6px 0 0;
	padding: 3px 8px 0;
	text-align: center;
	font-size: 13px;
	line-height: 18px;
	color: #d22b2b;
	background: transparent;
	border: 0;
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
}

.formInlineValidationMessage.is-visible {
	visibility: visible;
	opacity: 1;
}

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 04 ===== */
/* GRANI deep consent layout v18 */
.style.checkboxes.privacyPolicyCont > .input_cont.input_check.common_checkbox > label {
	display: grid !important;
	grid-template-columns: 30px minmax(0, 1fr) !important;
	column-gap: 10px !important;
	align-items: start !important;
	width: 100% !important;
	min-width: 0 !important;
	box-sizing: border-box !important;
}

.style.checkboxes.privacyPolicyCont > .input_cont.input_check.common_checkbox > label > .check {
	grid-column: 1 !important;
	float: none !important;
	flex: none !important;
	width: 30px !important;
	min-width: 30px !important;
	margin: 0 !important;
}

.style.checkboxes.privacyPolicyCont > .input_cont.input_check.common_checkbox > label > .field_name_value {
	grid-column: 2 !important;
	display: block !important;
	width: 100% !important;
	min-width: 0 !important;
	margin: 0 !important;
	vertical-align: top !important;
	white-space: normal !important;
	overflow-wrap: normal !important;
	word-break: normal !important;
	box-sizing: border-box !important;
}

.privacyPolicyCont .privacyPolicyText,
.privacyPolicyCont .privacyPolicyPurpose,
.privacyPolicyCont .privacyPolicyAcknowledgement {
	display: block !important;
}

.privacyPolicyCont .privacyPolicyPurposeLine {
	display: inline !important;
}

.privacyPolicyCont .privacyPolicyPurposeLine2::before {
	content: " ";
}

.privacyPolicyCont .privacyPolicyAcknowledgement {
	margin-top: 2px !important;
}

.form_line .form .field_cont:has(.privacyPolicyCont) {
	left: 5px !important;
	right: 5px !important;
	width: auto !important;
	max-width: none !important;
	box-sizing: border-box !important;
}

.form_line .privacyPolicyCont,
.form_line .privacyPolicyCont > .input_cont,
.form_line .privacyPolicyCont > .input_cont > label {
	width: 100% !important;
	max-width: 100% !important;
	min-width: 0 !important;
	box-sizing: border-box !important;
}

.form_line .privacyPolicyCont .privacyPolicyPurposeLine {
	display: block !important;
}

.form_line .privacyPolicyCont .privacyPolicyPurposeLine2::before {
	content: "";
}
/* END GRANI deep consent layout v18 */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 05 ===== */
/* GRANI stable validation spacing v19 */

/*
 * jQuery Validate добавляет классу .style.invalid margin-bottom:24px.
 * Раньше этот отступ появлялся только после ошибки и сдвигал поле комментария.
 * Теперь под каждым телефонным полем постоянно зарезервированы те же 24px.
 */
.style.grani_phone_field,
.style:has(> input[data-grani-phone="1"]),
.style:has(> input[type="tel"]) {
	margin-bottom: 24px !important;
}

.style.grani_phone_field.invalid,
.style.invalid:has(> input[data-grani-phone="1"]),
.style.invalid:has(> input[type="tel"]) {
	margin-bottom: 24px !important;
}

.style.grani_phone_field .validation_fail_tooltip,
.style:has(> input[data-grani-phone="1"]) .validation_fail_tooltip,
.style:has(> input[type="tel"]) .validation_fail_tooltip {
	box-sizing: border-box !important;
	min-height: 20px !important;
	margin: 0 !important;
	padding: 2px 0 0 !important;
	line-height: 16px !important;
}

/*
 * Текст согласия делаем заметнее, не меняя оформление самой галочки.
 */
.almaPopupWindow .privacyPolicyCont .field_name_value,
.almaPopupWindow .privacyPolicyCont .privacyPolicyText,
.almaPopupWindow .privacyPolicyCont .privacyPolicyPurpose,
.almaPopupWindow .privacyPolicyCont .privacyPolicyAcknowledgement,
.form_line .privacyPolicyCont .field_name_value,
.form_line .privacyPolicyCont .privacyPolicyText,
.form_line .privacyPolicyCont .privacyPolicyPurpose,
.form_line .privacyPolicyCont .privacyPolicyAcknowledgement {
	color: #666666 !important;
	opacity: 1 !important;
	font-weight: 500 !important;
}

.almaPopupWindow .privacyPolicyCont .privacyPolicyLink,
.form_line .privacyPolicyCont .privacyPolicyLink {
	color: #525252 !important;
	opacity: 1 !important;
	font-weight: 500 !important;
}

/* END GRANI stable validation spacing v19 */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 06 ===== */
/* GRANI popup spacing v20 */

/*
 * Реальная структура окна:
 * .almaPopupWindow
 *   > .h1
 *   > .contentsScroll > .contents > .formCont
 *       > form > .form
 *
 * Заголовок занимает всю область от верхнего края окна
 * до начала первого поля. Верхний padding внутренней .form
 * переносим в высоту заголовка, поэтому положение первого поля
 * остаётся практически прежним.
 */
.almaPopupWindow:has(> .contentsScroll .formCont) > .h1 {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	box-sizing: border-box !important;
	width: 100% !important;
	height: 110px !important;
	min-height: 110px !important;
	margin: 0 !important;
	padding: 0 70px !important;
	text-align: center !important;
}

/*
 * Сохраняем боковые отступы 30px, но убираем верхний и нижний.
 * Верхний отступ уже включён в область заголовка.
 */
.almaPopupWindow:has(> .contentsScroll .formCont) .form {
	padding: 0 30px !important;
}

/*
 * formCont по умолчанию добавляет ещё 10px снизу.
 * Убираем их только во всплывающей форме.
 *
 * Под кнопкой уже находится постоянный служебный слот 30px
 * (24px высота + 6px margin). Поэтому нижний отступ окна
 * становится равным боковому отступу кнопки — 30px.
 */
.almaPopupWindow:has(> .contentsScroll .formCont) .formCont {
	padding-bottom: 0 !important;
}

/* END GRANI popup spacing v20 */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 07 ===== */
/* GRANI popup plain fields v21 */

/*
 * Имя и телефон во всплывающей форме:
 * никаких icon_* / left_inuse и плавающих подписей.
 */
.almaPopupWindow .grani_plain_field::before,
.almaPopupWindow .grani_plain_field::after,
.almaPopupWindow .grani_plain_field[class*="icon_"]::before,
.almaPopupWindow .grani_plain_field.left_inuse::before {
	content: none !important;
	display: none !important;
	background: none !important;
}

.almaPopupWindow .grani_plain_field .label {
	display: none !important;
}

.almaPopupWindow .grani_plain_field > input {
	min-height: 56px !important;
	height: 56px !important;
	padding: 10px !important;
	line-height: 22px !important;
}

/*
 * Резервная защита для старой закэшированной разметки:
 * если icon_* ещё присутствует, он всё равно не показывается.
 */
.almaPopupWindow .field:has(> .style > input[data-grani-plain-field="1"]) > .style::before,
.almaPopupWindow .field:has(> .style > input[data-grani-phone="1"]) > .style::before {
	content: none !important;
	display: none !important;
	background: none !important;
}

.almaPopupWindow .field:has(> .style > input[data-grani-plain-field="1"]) > .style > input,
.almaPopupWindow .field:has(> .style > input[data-grani-phone="1"]) > .style > input {
	padding-left: 10px !important;
}

/*
 * Нижняя форма: точный порядок строк.
 * 1 — до «указанных в форме,»
 * 2 — со слов «для рассмотрения заявки…»
 * 3 — «Я ознакомлен(а)…»
 */
.form_line .privacyPolicyPurposeLine1,
.form_line .privacyPolicyPurposeLine2,
.form_line .privacyPolicyAcknowledgement {
	display: block !important;
	margin-left: 0 !important;
}

.form_line .privacyPolicyPurposeLine2::before {
	content: none !important;
}



/* END GRANI popup plain fields v21 */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 08 ===== */
/* GRANI v23 exact lower consent lines */
.privacyPolicyCont.graniLowerConsent .privacyPolicyPurposeLine1,
.privacyPolicyCont.graniLowerConsent .privacyPolicyPurposeLine2,
.privacyPolicyCont.graniLowerConsent .privacyPolicyAcknowledgement {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    white-space: normal !important;
}
.privacyPolicyCont.graniLowerConsent .privacyPolicyPurposeLine2,
.privacyPolicyCont.graniLowerConsent .privacyPolicyAcknowledgement { margin-top: 2px !important; }
.privacyPolicyCont.graniLowerConsent .field_name_value,
.privacyPolicyCont.graniLowerConsent .privacyPolicyText,
.privacyPolicyCont.graniLowerConsent .privacyPolicyPurpose {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}

/* END GRANI v23 exact lower consent lines */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 09 ===== */
/* GRANI V25 stable mouse pointer */
form .style:has(> input[type="text"]),
form .style:has(> input[type="email"]),
form .style:has(> input[type="tel"]),
form .style:has(> input[type="password"]),
form .style:has(> input:not([type])),
form .style:has(> textarea),
form input[type="text"],
form input[type="email"],
form input[type="tel"],
form input[type="password"],
form input:not([type]),
form textarea,
form .style .label {
	cursor: default !important;
}

form input[type="text"],
form input[type="email"],
form input[type="tel"],
form input[type="password"],
form input:not([type]),
form textarea {
	caret-color: #3c3c3c !important;
	pointer-events: auto !important;
}
/* END GRANI V25 stable mouse pointer */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 10 ===== */
/* GRANI V26 runtime popup stability */
.form_line .grani_plain_field > input[type="text"],
.form_line .grani_plain_field > input[type="email"],
.form_line .grani_plain_field > input:not([type]),
.form_line .grani_phone_field > input[type="tel"],
.form_line input[data-grani-plain-field="1"],
.form_line input[data-grani-phone="1"] {
	display: block !important;
	box-sizing: border-box !important;
	height: 56px !important;
	min-height: 56px !important;
	padding: 17px 10px !important;
	line-height: 22px !important;
}

@media screen and (max-width: 999px) {
	.almaPopupWindow .textarea.style {
		box-sizing: border-box !important;
		height: 120px !important;
		min-height: 120px !important;
		overflow: hidden !important;
		transition-property: box-shadow !important;
	}

	.almaPopupWindow .textarea.style > textarea {
		box-sizing: border-box !important;
		display: block !important;
		height: 120px !important;
		min-height: 120px !important;
		margin: 0 !important;
	}
}
/* END GRANI V26 runtime popup stability */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 11 ===== */
/* GRANI V27 exact lower alignment and mobile popup stability */
.block_send_order .form_order .style > input[type="text"],
.block_send_order .form_order .style > input[type="email"],
.block_send_order .form_order .style > input[type="tel"],
.block_send_order .form_order .style > input:not([type]),
.block_send_order .form_order input[data-grani-plain-field="1"],
.block_send_order .form_order input[data-grani-phone="1"] {
	display: block !important;
	box-sizing: border-box !important;
	height: 56px !important;
	min-height: 56px !important;
	padding: 0 10px !important;
	line-height: 56px !important;
	vertical-align: middle !important;
}

.almaPopupWindow .grani_comment_field {
	box-sizing: border-box !important;
	height: 120px !important;
	min-height: 120px !important;
	overflow: hidden !important;
	transition: box-shadow 0.2s ease !important;
}

.almaPopupWindow .grani_comment_field::before,
.almaPopupWindow .grani_comment_field.active::before,
.almaPopupWindow .grani_comment_field.set::before {
	top: 17px !important;
	transition: none !important;
}

.almaPopupWindow .grani_comment_field .label {
	display: none !important;
}

.almaPopupWindow .grani_comment_field > textarea {
	display: block !important;
	box-sizing: border-box !important;
	height: 120px !important;
	min-height: 120px !important;
	margin: 0 !important;
	padding: 17px 10px 10px 30px !important;
	line-height: 22px !important;
}

body.noscroll {
	position: fixed !important;
	overflow: hidden !important;
	width: 100% !important;
	height: 100% !important;
	min-height: 0 !important;
}
/* END GRANI V27 exact lower alignment and mobile popup stability */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 12 ===== */
/* GRANI V28 mobile popup width */

/*
 * Нижняя форма находится в основном контейнере сайта
 * с боковым отступом 15px. На мобильном popup повторяем
 * тот же размер вместо прежних 30px.
 */
@media screen and (max-width: 999px) {
	.almaPopupWindow:has(> .contentsScroll .formCont) .form {
		padding-left: 15px !important;
		padding-right: 15px !important;
	}

	.almaPopupWindow:has(> .contentsScroll .formCont)
		.contentsScroll,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.contents,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.formCont,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form {
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: 100% !important;
	}

	/*
	 * Все элементы формы используют одну горизонтальную сетку:
	 * поля, комментарий, согласие и кнопка.
	 */
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form > .field_cont {
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .field,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .style,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .privacyPolicyCont,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .button,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .jsSubmitBtn {
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: 100% !important;
	}

	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .field_cont:has(.privacyPolicyCont) {
		left: auto !important;
		right: auto !important;
		width: 100% !important;
		max-width: 100% !important;
	}

	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .privacyPolicyCont
		> .input_cont,
	.almaPopupWindow:has(> .contentsScroll .formCont)
		.form .privacyPolicyCont
		> .input_cont
		> label {
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: 100% !important;
	}
}

/* END GRANI V28 mobile popup width */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 13 ===== */
/* GRANI V29 phone error message */

/*
 * Под телефонным полем постоянно резервируем место
 * под две строки, чтобы форма не меняла высоту при ошибке.
 */
.style.grani_phone_field,
.style:has(> input[data-grani-phone="1"]),
.style:has(> input[type="tel"]) {
	margin-bottom: 40px !important;
}

.style.grani_phone_field.invalid,
.style.invalid:has(> input[data-grani-phone="1"]),
.style.invalid:has(> input[type="tel"]) {
	margin-bottom: 40px !important;
}

.style.grani_phone_field .validation_fail_tooltip,
.style:has(> input[data-grani-phone="1"])
	.validation_fail_tooltip,
.style:has(> input[type="tel"])
	.validation_fail_tooltip {
	box-sizing: border-box !important;
	min-height: 36px !important;
	margin: 0 !important;
	padding: 2px 0 0 !important;
	line-height: 16px !important;
	text-align: right !important;
	white-space: normal !important;
}

.graniPhoneErrorLine {
	display: block !important;
}

.formInlineValidationMessage {
	white-space: pre-line !important;
}

/* END GRANI V29 phone error message */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 14 ===== */
/* GRANI V34 next and stable refocus */
@media screen and (max-width: 999px) {
    .block_send_order .form_order input[data-grani-lower-name="1"] {
        scroll-margin-top: 16px !important;
    }
}

.block_send_order .form_order .style.grani_plain_field > label.label,
.block_send_order .form_order .style:has(> input[data-grani-lower-name="1"]) > label.label {
    display: none !important;
}

.block_send_order .form_order .style.grani_plain_field::before,
.block_send_order .form_order .style:has(> input[data-grani-lower-name="1"])::before {
    content: none !important;
    display: none !important;
}

.block_send_order .form_order input[data-grani-lower-name="1"],
.block_send_order .form_order .grani_plain_field > input[type="text"],
.block_send_order .form_order .grani_plain_field > input:not([type]) {
    box-sizing: border-box !important;
    display: block !important;
    width: 100% !important;
    height: 56px !important;
    min-height: 56px !important;
    padding: 0 10px !important;
    line-height: 56px !important;
    font-size: 16px !important;
}

.block_send_order .form_order .style.grani_phone_field,
.block_send_order .form_order .style:has(> input[data-grani-phone="1"]),
.block_send_order .form_order .style:has(> input[type="tel"]),
.block_send_order .form_order .style.grani_phone_field.invalid,
.block_send_order .form_order .style.invalid:has(> input[data-grani-phone="1"]),
.block_send_order .form_order .style.invalid:has(> input[type="tel"]) {
    margin-bottom: 24px !important;
}

.block_send_order .form_order .style.grani_phone_field .validation_fail_tooltip,
.block_send_order .form_order .style:has(> input[data-grani-phone="1"]) .validation_fail_tooltip,
.block_send_order .form_order .style:has(> input[type="tel"]) .validation_fail_tooltip {
    min-height: 24px !important;
    padding: 0 !important;
    font-size: 12px !important;
    line-height: 12px !important;
}
/* END GRANI V34 next and stable refocus */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 15 ===== */
/* GRANI V35 mobile popup top and consent wrap */

@media screen and (max-width: 999px) {
	.almaPopupWindow:has(> .contentsScroll .formCont) {
		top: 0 !important;
		margin-top: 0 !important;
		max-height: 100vh !important;
		max-height: 100dvh !important;
		border-top-left-radius: 0 !important;
		border-top-right-radius: 0 !important;
	}

	.almaPopupWindow:has(> .contentsScroll .formCont)
		.contentsScroll {
		max-height: 100vh !important;
		max-height: 100dvh !important;
	}
}

.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.privacyPolicyPurposeLine1,
.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.privacyPolicyPurposeLine2,
.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.privacyPolicyAcknowledgement {
	display: block !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	white-space: normal !important;
	word-break: normal !important;
	overflow-wrap: normal !important;
	hyphens: none !important;
}

.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.field_name_value,
.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.privacyPolicyText,
.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.privacyPolicyPurpose {
	display: block !important;
	box-sizing: border-box !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
	white-space: normal !important;
	word-break: normal !important;
	overflow-wrap: normal !important;
	hyphens: none !important;
}

.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.privacyPolicyPurposeLine2::before {
	content: none !important;
}

.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	> .input_cont
	> label {
	display: grid !important;
	grid-template-columns: 26px minmax(0, 1fr) !important;
	column-gap: 10px !important;
	align-items: start !important;
	box-sizing: border-box !important;
	width: 100% !important;
	max-width: 100% !important;
}

.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	input[type="checkbox"] {
	grid-column: 1 !important;
	grid-row: 1 !important;
}

.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.field_name_value,
.block_send_order .form_order
	.privacyPolicyCont.graniLowerConsent
	.privacyPolicyText {
	grid-column: 2 !important;
	grid-row: 1 !important;
}

/* END GRANI V35 mobile popup top and consent wrap */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 16 ===== */
/* GRANI V39 justified consent without manual breaks */

/* GRANI V84: obsolete V38 header patch removed; current header CSS remains authoritative. */

/*
 * Нижняя форма: заголовок и форма занимают всю ширину
 * на разрешениях до 899px.
 */
@media screen and (max-width: 899px) {
	.block_send_order > .mid,
	.block_send_order .mid {
		display: block !important;
		box-sizing: border-box !important;
		width: 100% !important;
		max-width: 100% !important;
	}

	.block_send_order .mid > .text,
	.block_send_order .text {
		display: block !important;
		box-sizing: border-box !important;
		flex: 0 0 100% !important;
		width: 100% !important;
		min-width: 0 !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.block_send_order .text > *,
	.block_send_order .text_big,
	.block_send_order .text_big_up {
		box-sizing: border-box !important;
		width: 100% !important;
		min-width: 0 !important;
		max-width: 100% !important;
		white-space: normal !important;
		word-break: normal !important;
		overflow-wrap: normal !important;
		hyphens: none !important;
	}

	.block_send_order .form_order {
		box-sizing: border-box !important;
		flex: 0 0 100% !important;
		width: 100% !important;
		min-width: 0 !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}
}

/*
 * Нижнее согласие.
 *
 * Первое предложение является одним непрерывным абзацем:
 * никаких line1/line2, no-break span и ручного переноса
 * перед словами «для рассмотрения заявки» больше нет.
 */
.block_send_order .form_order
	.privacyPolicyPurposeSentence {
	display: block !important;
	box-sizing: border-box !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	white-space: normal !important;
	word-break: normal !important;
	overflow-wrap: normal !important;
	hyphens: none !important;
	text-align: justify !important;
	text-align-last: left !important;
	text-justify: inter-word !important;
	letter-spacing: normal !important;
	word-spacing: normal !important;
}

.block_send_order .form_order
	.privacyPolicyAcknowledgement {
	display: block !important;
	box-sizing: border-box !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
	margin: 3px 0 0 !important;
	padding: 0 !important;
	white-space: normal !important;
	word-break: normal !important;
	overflow-wrap: normal !important;
	hyphens: none !important;
	text-align: left !important;
}

.block_send_order .form_order
	.privacyPolicyPurposeLine1,
.block_send_order .form_order
	.privacyPolicyPurposeLine2,
.block_send_order .form_order
	.privacyPolicyNoBreak,
.block_send_order .form_order
	.privacyPolicyNoBreakLong {
	display: inline !important;
	white-space: normal !important;
	word-break: normal !important;
	overflow-wrap: normal !important;
}

.block_send_order .form_order
	.privacyPolicyPurposeLine2::before {
	content: " " !important;
}

@media screen and (max-width: 899px) {
	.block_send_order .form_order
		.privacyPolicyText {
		font-size: 13px !important;
		line-height: 1.45 !important;
	}
}

/* END GRANI V39 justified consent without manual breaks */

/* GRANI V41 lower form desktop left alignment */
@media screen and (min-width: 900px) {
	.block_send_order > .mid,
	.block_send_order .mid {
		box-sizing: border-box !important;
		width: 1380px !important;
		max-width: 100% !important;
		display: flex !important;
		flex-direction: column !important;
		flex-wrap: nowrap !important;
		align-items: flex-start !important;
		justify-content: flex-start !important;
	}

	.block_send_order .text {
		box-sizing: border-box !important;
		flex: 0 0 auto !important;
		width: 60% !important;
		max-width: 828px !important;
		min-width: 0 !important;
		margin-left: 0 !important;
		margin-right: auto !important;
	}

	.block_send_order .form_order {
		box-sizing: border-box !important;
		flex: 0 0 auto !important;
		width: 60% !important;
		max-width: 828px !important;
		min-width: 0 !important;
		margin-top: 40px !important;
		margin-left: 0 !important;
		margin-right: auto !important;
	}
}
/* END GRANI V41 lower form desktop left alignment */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 17 ===== */
/* GRANI V85.8 — cookie settings button: move to the free right side */
.graniCookieSettings,
#graniCookieSettings {
	left: auto !important;
	right: max(12px, env(safe-area-inset-right, 0px)) !important;
}

@media screen and (max-width: 760px) {
	.graniCookieSettings,
	#graniCookieSettings {
		left: auto !important;
		right: max(10px, env(safe-area-inset-right, 0px)) !important;
	}
}
/* END GRANI V85.8 */


/* GRANI V86.10 — mask only the footer top gap.
   The decorative background must begin visually at the contact card, not above it.
   Reuse footer::before as an opaque white mask whose height exactly matches the
   current responsive top padding. All footer content stays above it (z-index:1). */
footer {
    --grani-footer-top-gap: 52px;
}

footer::before {
    content: "" !important;
    display: block !important;
    position: absolute !important;
    z-index: 0 !important;
    top: 0 !important;
    right: 0 !important;
    left: 0 !important;
    height: var(--grani-footer-top-gap) !important;
    background: #fff !important;
    pointer-events: none !important;
}

@media screen and (min-width: 700px) and (max-width: 1099px) {
    footer {
        --grani-footer-top-gap: 42px;
    }
}

@media screen and (max-width: 699px) {
    footer {
        --grani-footer-top-gap: 30px;
    }
}

@media screen and (max-width: 399px) {
    footer {
        --grani-footer-top-gap: 24px;
    }
}
/* END GRANI V86.10 */

/* GRANI V86.11 — footer cards use the same soft off-white surface as site cards.
   Geometry, rounding, spacing, responsive breakpoints and V86.10 top-gap mask stay unchanged. */
footer > .graniFooterMain,
footer .footer_after .graniFooterLegal {
    background: #f4f4f4 !important;
}
/* END GRANI V86.11 */

/* GRANI V87.5 — isolate the problematic 400–559px footer corridor.
   A stale mobile footer rule switches geometry/typography only in this range.
   Force the approved 2x2 structure and compact legal layout here only. */
@media screen and (min-width: 400px) and (max-width: 559px) {
	html body footer > .graniFooterMain {
		display: grid !important;
		width: calc(100% - 20px) !important;
		max-width: 640px !important;
		grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr) !important;
		grid-template-areas:
			"brand address"
			"hours contact" !important;
		align-items: start !important;
		column-gap: 14px !important;
		row-gap: 8px !important;
		padding: 14px 16px !important;
		border-radius: 21px !important;
	}

	html body footer > .graniFooterMain > .graniFooterBrand,
	html body footer > .graniFooterMain > .graniFooterAddress,
	html body footer > .graniFooterMain > .graniFooterHours,
	html body footer > .graniFooterMain > .graniFooterContact {
		width: auto !important;
		min-width: 0 !important;
		grid-column: auto !important;
		text-align: left !important;
		justify-self: stretch !important;
	}

	html body footer > .graniFooterMain > .graniFooterBrand {
		grid-area: brand !important;
	}

	html body footer > .graniFooterMain > .graniFooterAddress {
		grid-area: address !important;
	}

	html body footer > .graniFooterMain > .graniFooterHours {
		grid-area: hours !important;
	}

	html body footer > .graniFooterMain > .graniFooterContact {
		grid-area: contact !important;
	}

	html body footer > .graniFooterMain .f_logo {
		width: min(100%, 142px) !important;
		height: 50px !important;
	}

	html body footer > .graniFooterMain .graniFooterAddress .f_icon,
	html body footer > .graniFooterMain .graniFooterHours .f_icon {
		font-size: 12.5px !important;
		line-height: 1.30 !important;
	}

	html body footer > .graniFooterMain .graniFooterContact {
		display: flex !important;
		flex-direction: column !important;
		align-items: flex-start !important;
		justify-content: flex-start !important;
		gap: 6px !important;
	}

	html body footer > .graniFooterMain .graniFooterSocial {
		justify-content: flex-start !important;
		gap: 7px !important;
	}

	html body footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
		width: 40px !important;
		height: 40px !important;
		border-radius: 11px !important;
		background-size: 18px auto !important;
	}

	html body footer > .graniFooterMain .graniFooterPhone,
	html body footer > .graniFooterMain .graniFooterPhone .f_phone,
	html body footer > .graniFooterMain .graniFooterPhone a.f_phone {
		font-size: 18px !important;
		line-height: 1.05 !important;
		text-align: left !important;
	}

	html body footer .footer_after {
		width: calc(100% - 20px) !important;
		max-width: 640px !important;
		margin-top: 5px !important;
		margin-bottom: 6px !important;
	}

	html body footer .footer_after > .graniFooterLegal {
		display: grid !important;
		grid-template-columns: 1fr !important;
		grid-template-areas:
			"copy"
			"legal" !important;
		align-items: start !important;
		width: 100% !important;
		min-width: 0 !important;
		margin: 0 !important;
		padding: 9px 12px !important;
		gap: 4px !important;
		border-radius: 21px !important;
		font-size: 11px !important;
		line-height: 1.32 !important;
		text-align: left !important;
	}

	html body footer .footer_after > .graniFooterLegal > .graniFooterCopyright,
	html body footer .footer_after > .graniFooterLegal > .graniFooterLegalText {
		width: 100% !important;
		min-width: 0 !important;
		justify-self: stretch !important;
		text-align: left !important;
	}

	html body footer .footer_after > .graniFooterLegal > .graniFooterCopyright {
		grid-area: copy !important;
	}

	html body footer .footer_after > .graniFooterLegal > .graniFooterLegalText {
		grid-area: legal !important;
		display: flex !important;
		flex-wrap: wrap !important;
		align-items: flex-start !important;
		justify-content: flex-start !important;
		gap: 2px 7px !important;
	}
}
/* END GRANI V87.5 */

/* GRANI V87.6 — exact narrow viewport fix (<=399px).
   The previous V87.5 started at 400px and therefore never affected the
   289–399px corridor shown in the user's screenshot. Legacy V46/V85 rules
   collapse both footer cards to one column here. Force the intended compact
   two-column composition and explicit inner spacing only in this corridor. */
@media screen and (max-width: 399px) {
    html body footer > .graniFooterMain {
        display: grid !important;
        width: calc(100% - 12px) !important;
        max-width: 399px !important;
        min-width: 0 !important;
        grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr) !important;
        grid-template-areas:
            "brand address"
            "hours contact" !important;
        align-items: start !important;
        column-gap: 8px !important;
        row-gap: 8px !important;
        padding: 11px 10px !important;
        border-radius: 18px !important;
    }

    html body footer > .graniFooterMain > .graniFooterBrand,
    html body footer > .graniFooterMain > .graniFooterAddress,
    html body footer > .graniFooterMain > .graniFooterHours,
    html body footer > .graniFooterMain > .graniFooterContact {
        width: auto !important;
        min-width: 0 !important;
        max-width: 100% !important;
        grid-column: auto !important;
        margin: 0 !important;
        padding: 0 !important;
        justify-self: stretch !important;
        text-align: left !important;
    }

    html body footer > .graniFooterMain > .graniFooterBrand {
        grid-area: brand !important;
    }

    html body footer > .graniFooterMain > .graniFooterAddress {
        grid-area: address !important;
    }

    html body footer > .graniFooterMain > .graniFooterHours {
        grid-area: hours !important;
    }

    html body footer > .graniFooterMain > .graniFooterContact {
        grid-area: contact !important;
        display: flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        justify-content: flex-start !important;
        gap: 5px !important;
    }

    html body footer > .graniFooterMain .f_logo {
        width: min(100%, 112px) !important;
        height: 42px !important;
        margin: 0 !important;
    }

    html body footer > .graniFooterMain .graniFooterAddress .f_icon,
    html body footer > .graniFooterMain .graniFooterHours .f_icon {
        margin: 0 !important;
        padding: 0 !important;
        font-size: 10.5px !important;
        line-height: 1.28 !important;
        text-align: left !important;
        overflow-wrap: anywhere !important;
    }

    html body footer > .graniFooterMain .graniFooterSocial {
        display: flex !important;
        justify-content: flex-start !important;
        gap: 5px !important;
        margin: 0 !important;
    }

    html body footer > .graniFooterMain .graniFooterSocial .top_soc_elem {
        width: 34px !important;
        height: 34px !important;
        min-width: 34px !important;
        border-radius: 10px !important;
        background-size: 16px auto !important;
    }

    html body footer > .graniFooterMain .graniFooterPhone,
    html body footer > .graniFooterMain .graniFooterPhone .f_phone,
    html body footer > .graniFooterMain .graniFooterPhone a.f_phone {
        max-width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
        font-size: 15px !important;
        line-height: 1.08 !important;
        text-align: left !important;
        white-space: nowrap !important;
    }

    html body footer .footer_after {
        box-sizing: border-box !important;
        width: calc(100% - 12px) !important;
        max-width: 399px !important;
        min-width: 0 !important;
        margin: 4px auto 5px !important;
        padding: 0 !important;
    }

    html body footer .footer_after > .graniFooterLegal {
        display: grid !important;
        box-sizing: border-box !important;
        width: 100% !important;
        min-width: 0 !important;
        grid-template-columns: minmax(76px, .42fr) minmax(0, .58fr) !important;
        grid-template-areas: "copy legal" !important;
        align-items: start !important;
        column-gap: 9px !important;
        row-gap: 0 !important;
        margin: 0 !important;
        padding: 10px 10px 11px !important;
        border-radius: 18px !important;
        font-size: 9.5px !important;
        line-height: 1.30 !important;
        text-align: left !important;
    }

    html body footer .footer_after > .graniFooterLegal > .graniFooterCopyright {
        grid-area: copy !important;
        width: auto !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        justify-self: stretch !important;
        text-align: left !important;
        white-space: normal !important;
    }

    html body footer .footer_after > .graniFooterLegal > .graniFooterLegalText {
        grid-area: legal !important;
        display: block !important;
        width: auto !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        justify-self: stretch !important;
        text-align: left !important;
        overflow-wrap: anywhere !important;
    }

    html body footer .footer_after > .graniFooterLegal .f_copy,
    html body footer .footer_after > .graniFooterLegal .f_copy > span,
    html body footer .footer_after > .graniFooterLegal .graniFooterLegalText,
    html body footer .footer_after > .graniFooterLegal .graniFooterLegalText p,
    html body footer .footer_after > .graniFooterLegal .graniFooterLegalText .f_privacy {
        margin: 0 !important;
        padding: 0 !important;
        font-size: 9.5px !important;
        line-height: 1.30 !important;
        white-space: normal !important;
    }

    html body footer .footer_after > .graniFooterLegal .graniFooterLegalText p + p,
    html body footer .footer_after > .graniFooterLegal .graniFooterLegalText .f_privacy {
        margin-top: 3px !important;
    }

    html body footer .footer_after > .graniFooterLegal > .graniFooterCaptcha {
        display: none !important;
    }
}
/* END GRANI V87.6 */

/* ===== GRANI FOOTER RUNTIME CSS BLOCK 18 ===== */
/* GRANI V87.13 — cookie settings is a viewport control, not part of footer layout. */
.graniCookieSettings,
#graniCookieSettings,
body .graniCookieSettings,
body #graniCookieSettings {
    position: fixed !important;
    z-index: 99990 !important;
    left: auto !important;
    top: auto !important;
    right: max(12px, env(safe-area-inset-right, 0px)) !important;
    bottom: max(12px, env(safe-area-inset-bottom, 0px)) !important;
    margin: 0 !important;
    transform: none !important;
}

@media screen and (max-width: 760px) {
    .graniCookieSettings,
    #graniCookieSettings,
    body .graniCookieSettings,
    body #graniCookieSettings {
        right: max(10px, env(safe-area-inset-right, 0px)) !important;
        bottom: max(10px, env(safe-area-inset-bottom, 0px)) !important;
    }
}
/* END GRANI V87.13 */
