/* Home motion is initialized invisibly, then starts only when the relevant
   section reaches the viewport. */
html.js [data-about-typewriter]:not(.is-typewriter-ready),
html.js [data-enterprise-typewriter]:not(.is-typewriter-ready),
html.js body.hero-light [data-word-blur-reveal]:not(.word-blur-ready) {
    visibility: hidden;
}

/* Keep the three large editorial statements on one responsive type scale. */
body.hero-light .block-about .about-statement,
body.hero-light .clients-proof__title,
body.hero-light .text-message h2 {
    font-size: clamp(36px, 4.05vw, 52px);
    line-height: 1.04;
    letter-spacing: -.95px;
}

@media (min-width: 577px) and (max-width: 991px) {
    body.hero-light .block-about .about-statement,
    body.hero-light .clients-proof__title,
    body.hero-light .text-message h2 {
        font-size: clamp(40px, 6.2vw, 48px);
        line-height: 1.06;
        letter-spacing: -.045em;
    }
}

@media (max-width: 576px) {
    body.hero-light .block-about .about-statement,
    body.hero-light .clients-proof__title,
    body.hero-light .text-message h2 {
        font-size: clamp(30px, 8.3vw, 35px);
        line-height: 1.08;
        letter-spacing: -.042em;
    }
}

/* Sticky footer reveal: desktop sections slide over the footer while the
   Tetris board stays dormant until the footer reaches the viewport. */
[data-origin-footer-trigger] {
    display: block;
    height: 1px;
    pointer-events: none;
}

html.js .origin-footer__board canvas {
    opacity: 0;
    transform: translate3d(0, 24px, 0);
    transition:
        opacity 720ms cubic-bezier(.22, 1, .36, 1),
        transform 900ms cubic-bezier(.22, 1, .36, 1);
}

html.js .origin-footer__board.is-board-active canvas {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

@media (min-width: 992px) {
    .global-div {
        overflow-x: clip;
    }

    .global-div > .wrapper {
        position: relative;
        z-index: 2;
        background: var(--colorWhite);
        box-shadow: 0 28px 64px rgba(18, 19, 23, .16);
    }

    .global-div > .origin-footer-shell {
        position: sticky;
        z-index: 1;
        bottom: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    html.js .origin-footer__board canvas {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .global-div > .wrapper {
        box-shadow: none;
    }

    .global-div > .origin-footer-shell {
        position: relative;
        bottom: auto;
    }
}

/* Hero and About share one white visual plane. Keep their current geometry,
   but let the Hero canvas paint into the beginning of the About section. */
body.hero-light {
    --home-hero-about-z: 2;
    --home-page-gutter: 72px;
    --home-content-max: 1744px;
}

body.hero-light .banner,
body.hero-light .block-about {
    z-index: var(--home-hero-about-z);
}

body.hero-light .banner,
body.hero-light .banner .banner-bg,
body.hero-light .block-about {
    overflow: visible;
}

body.hero-light .banner,
body.hero-light .banner .banner-bg {
    background: var(--colorWhite);
}

body.hero-light .block-about {
    background: transparent;
}

/* One horizontal grid for the header and every home-page section. */
body.hero-light header.fixed-top .navbar,
body.hero-light header.fixed-top .navbar.navbar.bg-white {
    padding-right: var(--home-page-gutter);
    padding-left: var(--home-page-gutter);
}

body.hero-light header.fixed-top .navbar > .container {
    width: 100%;
    max-width: var(--home-content-max);
    margin-right: auto;
    margin-left: auto;
    padding-right: 0;
    padding-left: 0;
}

body.hero-light .banner .container,
body.hero-light .block-about > .container,
body.hero-light .intro-video__frame,
body.hero-light .clients-proof > .container,
body.hero-light .clients-strip > .container,
body.hero-light .first-parallax-bg > .container,
body.hero-light .service > .container,
body.hero-light .text-message > .container-fluid,
body.hero-light .origin-footer__content {
    width: min(calc(100% - var(--home-page-gutter) - var(--home-page-gutter)), var(--home-content-max));
    max-width: var(--home-content-max);
    margin-right: auto;
    margin-left: auto;
    padding-right: 0;
    padding-left: 0;
}

/* The historical hero container forces a full width. Its max-width is
   the non-destructive constraint that keeps the same centered position while
   matching the shared gutters. */
body.hero-light .banner .container {
    max-width: min(calc(100% - var(--home-page-gutter) - var(--home-page-gutter)), var(--home-content-max));
}

body.hero-light .intro-video {
    padding-right: 0;
    padding-left: 0;
}

/* Service-card content follows one left axis, regardless of input device. */
body.hero-light .service .card > .text-star {
    display: flex;
    height: 100%;
    align-items: flex-start;
    flex-direction: column;
    text-align: left;
}

body.hero-light .service .card .icon {
    display: flex;
    width: 100%;
    min-height: 1em;
    align-items: center;
    margin: 0 0 20px;
    line-height: 1;
}

body.hero-light .service .card .nt-service-title,
body.hero-light .service .card:hover .nt-service-title,
body.hero-light .service .card:active .nt-service-title,
body.hero-light .service .card.is-touch-active .nt-service-title {
    display: block;
    width: 100%;
    min-height: 2.5em;
    margin: 0 0 14px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    line-height: 1.25;
    text-align: left;
    text-wrap: balance;
}

body.hero-light .service .card p {
    width: 100%;
    margin: 0;
    text-align: left;
}

@media (max-width: 991px) {
    body.hero-light {
        --home-page-gutter: 20px;
    }
}

@media (max-width: 767px) {
    body.hero-light {
        --home-page-gutter: 16px;
    }

    body.hero-light .service .card .nt-service-title,
    body.hero-light .service .card:hover .nt-service-title,
    body.hero-light .service .card:active .nt-service-title,
    body.hero-light .service .card.is-touch-active .nt-service-title {
        min-height: 0;
    }
}
