/* reset */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

:root {
    --blue: #0044E2;
    --green: #11BA00;
    --red: #F23F4B;
    --cyan: #2DD9FF;
    --black: #000;
    --white: #fff;

    --green-pill: #129D00;
    --blue-pill: var(--blue);
    --red-pill: var(--red);

    --light-green: #5BD34F;

    --bg: var(--white);
    --text: var(--black);
    --page-bg: #FAFAFA;
    --page-henri-dark: #2B2B2B;
    --page-henri-black: #0F0F0F;

    --card-bg: var(--white);
    --card-text: var(--black);

    --tag-text: #737373;

    --cta-bg: #000;
    --cta-fg: #fff;

    --content-width: 1280px;
    --nav-height: 3.5rem;

    --transition: 0.22s cubic-bezier(0.4,0,0.2,1);
}


body {
    font-family: Inter, system-ui, sans-serif;
    font-style: normal;
    font-weight: 400;
    background: var(--page-bg);
    color: var(--text);
    line-height: 1.6;
}

/* headings on Henri, Home */
h1 {
    text-align: left;
    font-size: clamp(1.875rem, calc(1.2rem + 2.4vw), 3.125rem);
    font-weight: 900;
    line-height: clamp(1.875rem, calc(1.1rem + 3vw), 3.475rem);
    text-transform: uppercase;
}

/* headings in CTA */
h2 {
    text-align: left;
    font-size: clamp(1.875rem, calc(1.6rem + 1.2vw), 2.5rem);
    font-weight: 900;
    line-height: 1.25;
    text-transform: uppercase;
}

h3 {
    font-size: 1.875rem;
    font-weight: 700;
    line-height: 2.0625rem; /* 110% */
    letter-spacing: -0.03125rem;
    margin-bottom: 0.875rem;
}

/* headings on feature cards, etc */
h4 {
    font-size: 1.5625rem;
    font-weight: 700;
    line-height: 1.875rem; /* 120% */
    letter-spacing: -0.01875rem;
    color: #171717;
}

h5 {
    font-size: clamp(1rem, calc(0.5rem + 1.9vw), 2rem);
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: -0.0625rem;
    color: #0a0a0a;
}

/* top tagline on service card */
h6 {
    font-size: 0.6875rem;
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: 0.09375rem;
    text-transform: uppercase;
}

p, dt, dd, ul, li {
    font-size: 1rem;
    font-weight: 500;
    line-height: 1.4;
}

dl {
    margin: 0;
}


a.button {
    display: inline-block;
    padding: 1rem 2rem;
    border-radius: 1.875rem;
    text-decoration: none;
    text-align: center;
    font-size: 0.9375rem;
    font-weight: 700;
    line-height: 1.40625rem; /* 150% */
    background-color: var(--bg);
    color: var(--text);
}

a, a.link {
    text-decoration: none;
    color: var(--text);
}
a:hover, a.link:hover {
    text-decoration: underline;
}

.pill {
    display: inline-block;
    text-align: center;
    text-transform: uppercase;
    font-size: 0.75rem;
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: 0.125rem;
    border-radius: 0.4375rem;
    padding: 0.4rem 0.75rem;
}
    /* special case for green background only */
    .pill.bg-green {
        background-color: var(--green-pill);
    }


.tags {
    /* flex only to ignore whitespace between tags */
    display: flex;
    flex-wrap: wrap;
    gap: 0;
}
    .tag {
        display: inline-block;
        padding: 0.4rem 0.8rem;
        margin: 0.4rem 0.6rem 0 0;
        font-size: 0.75rem;
        font-weight: 500;
        line-height: 1.5;
        border-radius: 1.25rem;
    }




/* flex helpers */
.flex-row, .flex-column {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
}
.flex-row {
    flex-direction: row;
}
.flex-column {
    flex-direction: column;
}



header {
    position: absolute;
    top: 0;
    width: 100%;
}

    /* navbar: desktop */
    .nav {
        margin: auto;
        margin-bottom: calc(-1 * var(--nav-height));
        padding: 1.25rem;
        max-width: var(--content-width);
        height: var(--nav-height);
        display: flex;
        justify-content: space-between;
        align-items: center;
    }
        .logo-hendal {
            display: inline-block;
            width: 124px;
            height: 27px;
            background-color: var(--black);
            -webkit-mask: url("icons/hendal-logo.svg") center / contain no-repeat;
            mask: url("icons/hendal-logo.svg") center / contain no-repeat;
        }

        .nav-links {
            display: flex;
            gap: 1.5rem;
        }
            .nav-links a {
                font-size: 0.875rem;
                font-weight: 500;
                line-height: 1.5;
                letter-spacing: -0.00625rem;

                text-decoration: none;
                color: var(--text);
            }
            .nav-links a:hover {
                text-decoration: underline;
            }
            .nav-links a.selected {
                font-weight: 700;
            }

        .menu-toggle {
            display: none;
        }

        .hamburger {
            display: none;
            flex-direction: column;
            justify-content: space-between;
            width: 22px;
            height: 18px;
            margin-left: auto;
            background: none;
            border: none;
            cursor: pointer;
        }
        .hamburger span {
            display: block;
            height: 2px;
            background: var(--text);
            transition: transform var(--transition), opacity var(--transition);
            transform-origin: center;
        }
        .menu-toggle:checked + .hamburger > span:nth-child(1) { transform: translateY(8.25px) rotate(45deg); }
        .menu-toggle:checked + .hamburger > span:nth-child(2) { opacity: 0; }
        .menu-toggle:checked + .hamburger > span:nth-child(3) { transform: translateY(-8.25px) rotate(-45deg); }


/* navbar: mobile */
@media (max-width: 768px) {

    header {
        position: sticky;
        z-index: 100;
        background: white;
    }

        .nav-links {
            position: absolute;
            top: var(--nav-height);
            left: 0;
            width: 100%;
            background: white;
            opacity: 0.8;
            flex-direction: column;
            display: none;
            padding: 1rem;
            border-bottom: 1px solid #aaa;
        }

        .menu-toggle:checked + .hamburger + .nav-links {
            display: flex;
        }

        .hamburger {
            display: flex;
        }
}


.section {
    padding: clamp(1.5rem, calc(0.7rem + 2.8vw), 3rem) 0;
}
    .content {
        margin: 0 auto;
        padding: 0 clamp(1.5rem, calc(0.7rem + 2.8vw), 3rem);
        max-width: var(--content-width);
    }


.section.hero {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: calc(3rem + var(--nav-height)) 2rem 3rem 2rem;
    min-height: clamp(23rem, calc(14.4rem + 32vw), 40rem);
}
    .hero .content {
        padding: 0;
    }

    .hero-wrap {
        display: flex;
        flex-direction: column;
        gap: 1.25rem;
        align-items: center;
        max-width: clamp(24rem, calc(8.3rem + 58.4vw), 55rem);
    }

        .hero h1 {
            text-align: center;
            font-size: clamp(2.375rem, calc(1rem + 4.9vw), 5rem);
            font-weight: 800;
            line-height: clamp(2.75rem, calc(1.5rem + 4.7vw), 5.25rem);
            letter-spacing: clamp(-0.125rem, calc(-0.1rem - 0.1vw), -0.1875rem);
            text-transform: none;
        }

        .hero p {
            text-align: center;
            font-size: clamp(0.9375rem, calc(0.8rem + 0.6vw), 1.25rem);
            font-weight: 700;
            line-height: clamp(1.5rem, calc(1.2rem + 0.9vw), 2rem);
            margin: auto 7vw;
        }

        .hero img {
            margin-top: 0.5rem;
            height: clamp(3rem, calc(2rem + 3.8vw), 5rem);
        }

/* adapt hero per page */
.section.hero.page-home {
    background: url(images/grad-2.jpg) lightgray -12.126px -18.263px / 134.332% 109.062% no-repeat;
}
.section.hero.page-field {
    background: url(images/grad-5.jpg) lightgray -30vw -165px / 177.818% 147.826% no-repeat;
}
.section.hero.page-processing {
    background: url(images/grad-2.jpg) lightgray -12.126px -18.263px / 134.332% 109.062% no-repeat;
}
.section.hero.page-analytics {
    background: url(images/grad-6.jpg) lightgray 50% / cover no-repeat;
}
.section.hero.page-henri {
    background: url(images/henri-grad-3.jpg) #09398B 0px -130.5px / 111.094% 152.575% no-repeat;
    color: var(--white);
}
@media (min-width: 768px) {
    .page-henri .logo-hendal {
        background-color: var(--white);
    }
    .page-henri .nav-links a {
        color: var(--white);
    }
}
.section.hero.page-about {
    background: url(images/grad-1.jpg) lightgray 50% / cover no-repeat;
    color: var(--white);
}


/* FEATURES and SERVICES -- cards */

.section.features {
}

    .features-header {
        text-align: center;
        margin: 0 auto;
        margin-top: 1rem;
        max-width: 42rem;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 2rem;
    }
        .features-header h1 {
            text-align: center;
        }
        .features-header h4 {
            font-weight: 800;
            margin-top: -0.5rem;
        }
        .features-header p {
            font-size: clamp(1rem, calc(0.9rem + 0.5vw), 1.25rem);
            font-weight: 600;
            line-height: 1.5;
        }

    .features-grid {
        padding-top: 3rem;
        display: grid;
        gap: 1.5rem;
        grid-template-columns: minmax(0, 1fr);
    }

        .feature-card {
            background: var(--card-bg);
            padding: 1.5rem;
            border-radius: 1rem;
            box-shadow: 2px 1px 12px 0 rgba(0, 0, 0, 0.09);
        }

            .feature-card-header {
                display: flex;
                flex-direction: row;
                justify-content: space-between;
                align-items: center;
                gap: 0.5rem;
                margin-bottom: 0.5rem;
                width: 100%;
            }
                .feature-card-header h4 {
                    min-width: 0;
                    overflow-wrap: break-word;
                }
                .feature-card-header img {
                    align-self: flex-start;
                }
            .feature-card p {
                line-height: 1.5;
                color: var(--card-text);
            }


@media (min-width: 768px) {
    .features-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (min-width: 960px) {
    .features-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}


/* adapt feature cards for page: analytics */
.section.services {
    background-color: var(--white);
}
    .service-card {
        background: var(--page-bg);
        padding: 2rem;
        border-radius: 1.25rem;
        box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.10);
    }
            .card-number {
                color: var(--red);
                float: right;
                font-size: 1.5625rem;
                font-weight: 800;
                line-height: 2.0625rem;
                letter-spacing: -0.03125rem;
            }

        .service-card h4 {
            font-weight: 800;
            line-height: 2.0625rem;
        }
        .service-card h5 {
            font-size: 1.25rem;
            line-height: 1.2;
            letter-spacing: normal;
        }
        .service-card p {
            margin: 1rem 0;
            font-size: 1.0625rem;
        }

        .service-card-footer {
            border-top: 1px solid #E5E5E5;
            padding-top: 1rem;
        }
            .service-card-footer .tags {
                margin: 0 -0.3rem;
            }
                .service-card-footer .tag {
                    color: var(--white);
                    background-color: var(--black);
                }


@media (min-width: 960px) {
    .section.page-analytics .features-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}


/* PRODUCTS */

.section.products .pill {
    margin-top: 1rem;
    margin-bottom: 2rem;
}
.section.products .feature-card {
    padding: 2rem;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    gap: 1rem;
}

    .section.products .feature-card-header {
        /* margin-bottom: 1.25rem; */
    }

        .section.products .feature-card-header h4 {
            font-size: 2rem;
            line-height: 1;
            letter-spacing: normal;
        }
        .section.products .feature-card-header img {
            align-self: center;
        }

        .section.products .tags {
            margin: 0 -0.3rem;
        }
            .section.products .tag {
                color: var(--tag-text);
                background-color: #F5F5F5;
            }

        .section.products a {
            font-size: 0.875rem;
            font-weight: 600;
            line-height: 1.5;
            /* snap to bottom of the flexbox */
            margin-top: auto;
        }




/* CALLOUT */

.section.callout {
    background-color: var(--bg);
}
    .callout-box {
        padding: clamp(1rem, 3.8vw, 3rem);
        border-radius: 1.25rem;
        text-align: center;
    }
        .callout-box p {
            max-width: 42rem;
            margin: 0 auto;
        }

    /* support inline badges that wrap */
    .callout-box.callout-with-badges {
        display: flex;
        flex-wrap: wrap;

        align-items: center;
        gap: 1rem;
    }
        .callout-text {
            flex: 2 1 30rem;
        }
        .callout-badges {
            flex: 1 1 30rem;

            display: flex;
            flex-wrap: wrap;
            align-items: center;
            justify-content: center;
            gap: 0.5rem;
        }
            .callout-badge {
                width: 10rem;
                height: 6.5rem;

                display: flex;
                flex-direction: column;
                justify-content: center;
                align-items: center;

                font-size: 1.5625rem;
                font-weight: 700;
                line-height: 1.5625rem;
                letter-spacing: -0.0625rem;

                border-radius: 1.25rem;
            }
                .callout-badge-tag {
                    font-size: 0.875rem;
                    font-weight: 600;
                }


/* CTA */

.section.cta {
    background-color: var(--cta-bg);
    color: var(--cta-fg);
}
    .cta h1, .cta h2 {
        text-align: center;
    }
    .cta p {
        max-width: 42rem;
        text-align: center;
    }
    .cta-box {
        padding: 1.5rem clamp(0rem, calc(-3.5rem + 13.2vw), 7rem);
        gap: 2.25rem;
    }
        .cta-box a.red {
            color: var(--bg);
            background-color: var(--red);
        }
        .cta-box a.blue {
            color: var(--bg);
            background-color: var(--blue);
        }
        .cta-box a.cyan {
            color: var(--text);
            background-color: var(--cyan);
        }


.section.cta-henri {
    background: url(images/henri-grad-1.jpg) lightgray 50% / cover no-repeat;
}
    .cta-henri .cta-box {
        gap: 1rem;
        padding-top: 0;
        padding-bottom: 0;
    }
    .cta-henri h1 {
        text-transform: none;
        font-weight: 700;
        margin-top: 1.5rem;
    }
    .cta-henri p {
        font-size: clamp(1rem, calc(0.9rem + 0.5vw), 1.25rem);
        max-width: 38rem;
    }
    .cta-henri a {
        color: var(--cta-fg);
        font-size: 0.875rem;
        line-height: 1.5;
        font-weight: 600;
        margin-top: 1rem;
    }


.section.about-us {
    background: url(images/grad-3.jpg) lightgray 50% / cover no-repeat;
}
    .section.about-us .cta-box p {
        line-height: 1.7;
        font-weight: 600;
    }


.section.credentials {
}
    .credentials-flex {
        gap: 3rem;
        flex-wrap: wrap;
    }
    .credentials-flex h5 {
        text-align: center;
    }
        .credentials-flex h5.condensed {
            font-size: clamp(1rem, calc(0.7rem + 0.9vw), 1.5rem);
            line-height: 1;
            margin-bottom: 0.25rem;
        }
    .credentials-flex p {
        font-size: clamp(0.625rem, calc(0.6rem + 0.2vw), 0.75rem);
        letter-spacing: 0.03125rem;
        color: var(--tag-text);
        text-align: center;
    }


footer.section {
    background-color: var(--page-bg);
}
footer, footer p {
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.5;
}
    footer p.footer-copy {
        font-size: 0.75rem;
        font-weight: 400;
        margin-top: 3rem;
    }

    footer h3 {
        font-size: 1.375rem;
        line-height: 1.5;
        letter-spacing: -0.03125rem;
    }

    footer h4 {
        font-size: 0.875rem;
        line-height: 1.125rem;
        letter-spacing: 0.0625rem;
        margin-bottom: 1rem;
    }

    .footer-flex {
        align-items: flex-start;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: 3rem;
    }
        .footer-flex div:first-of-type {
            flex-grow: 1;
        }
        .footer-flex div:first-of-type p {
            line-height: 1.3rem;
        }


/* HENRI - banner on home */
.section.henri-banner.page-home {
    background: url(images/henri-grad-1.jpg) lightgray top right/cover no-repeat;
    color: var(--white);
}
    .banner-logo {
        margin-bottom: clamp(0.9rem, 3.4vw, 2.7rem);
    }

    .banner-body {
        display: flex;
        align-items: center;
        gap: clamp(1rem, 3.8vw, 3rem);
    }
        .banner-text {
            display: flex;
            flex-direction: column;
            justify-content: space-around;
            align-items: flex-start;
            gap: 1.5rem;
            flex-basis: 55%;
            margin-top: 1.5rem;
        }
            .banner-text h2 {
                /* between h1 and h2 */
                font-size: clamp(1.875rem, calc(1.4rem + 1.7vw), 2.8rem);
                line-height: 1.1;
            }
            .banner-text p {
                font-weight: 600;
                line-height: 1.5;
            }

        .banner-image {
            flex-basis: 45%
        }
            .banner-image img {
                display: block;
                width: 100%;
                object-fit: cover;
            }

/* desktop/mobile image/heading switch */
#img-henri-mobile, #title-mobile {
    display: none;
}
#img-henri-desktop, #title-desktop {
    display: block;
}

@media (max-width: 768px) {
    .banner-text {
        flex: 1;
    }
    .banner-image {
        flex: 1;
        max-width: 9rem;
    }

    #img-henri-mobile, #title-mobile {
        display: block;
    }
    #img-henri-desktop, #title-desktop {
        display: none;
    }
}


/* HENRI - banner on henri page */
.section.cta.page-henri {
    background-color: var(--page-henri-dark);
}

.section.henri-ux {
    background-color: var(--page-henri-dark);
    color: var(--white);
}
    .henri-ux .banner-body {
        justify-content: space-between;
        align-items: flex-start;
        gap: 3rem;
    }
        .henri-ux .banner-text {
            gap: 1.5rem;
            margin: 0;
        }
            .henri-ux .pill {
                color: var(--white);
            }
            .henri-ux h3 {
                font-weight: 800;
                line-height: 1.2;
                margin-bottom: 0;
            }
            .henri-ux p {
                font-size: clamp(1rem, calc(0.9rem + 0.5vw), 1.25rem);
            }

        .henri-ux .banner-image {
            flex-basis: 60%;
        }

    #img-henri-ux-mobile {
        display: none;
    }
    #img-henri-ux-desktop {
        display: block;
    }

/* henri-ux section on mobile */
@media (max-width: 768px) {
    .henri-ux .banner-text {
        align-items: center;
    }
    .henri-ux h3 {
        text-align: center;
    }
    #img-henri-ux-mobile {
        display: block;
        max-width: inherit;
    }
    #img-henri-ux-desktop {
        display: none;
    }
}


/* HENRI - BENEFITS & USECASES GRIDS */

/* adapt feature cards for page: henri */
.section.benefits {
    background-color: var(--page-henri-black);
    color: var(--white);
}

.section.benefits .features-header {
    max-width: inherit;
}
    .section.benefits .features-header p {
        max-width: 42rem;
        line-height: 1.4;
    }

.section.benefits .features-grid {
}
    .benefits-card {
        background: var(--page-henri-dark);
        border-radius: 1.25rem;
        padding: 2rem;
    }
    .benefits-card h4 {
        margin: 1rem 0;
        color: var(--white);
    }
    .benefits-card p {
        color: var(--tag-text);
    }

@media (min-width: 768px) {
    .section.benefits .features-grid,
    .section.usecases .features-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.section.usecases {
    background: url(images/henri-grad-1.jpg) lightgray 50% / cover no-repeat;
    color: var(--white);
}

.icon-rect {
    display: inline-block;
    width: 15px;
    height: 53px;
    margin-right: 11px;
    background-color: var(--cyan);
}

.section.note.page-henri {
    background-color: var(--page-henri-black);
    color: var(--white);
}
.section.note.page-henri p {
    text-align: center;
    font-weight: 700;
}



/* ABOUT */

.section.about {
    background-color: var(--white);
}
.section.about h2 {
    font-size: 2.8125rem;
    min-height: 8rem;
}
.section.about p, dt {
    margin-top: 1rem;
}
.section.about a {
    text-decoration: underline;
}
.section.about a:hover {
    text-decoration: underline dashed;
}


dt {
    font-weight: 700;
}
    dt::after {
        content: ":";
    }

dd {
    margin: 0.25rem 0 0 0;
}

ul {
    padding-left: 1.5rem;
    margin: 1rem 0;
}

.grid-2 {
    display: grid;
    gap: 6rem;
    padding: 3rem;
    grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 768px) {
    .grid-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}



/* color utils */

.bg-black {
    background-color: var(--black);
}
.bg-white {
    background-color: var(--white);
    color: var(--black);
}
.bg-green {
    background-color: var(--green);
}
.bg-blue {
    background-color: var(--blue);
}
.bg-red {
    background-color: var(--red) !important;
}
.bg-cyan, .button.bg-cyan {
    background-color: var(--cyan);
    color: var(--black);
}
.bg-light-green {
    background-color: var(--light-green);
}
.bg-black, .bg-green, .bg-blue, .bg-red, .bg-light-green {
    color: var(--white);
}
