:root {
    --blue: #014cf0;
    --blue-dark: #001b55;
    --blue-deep: #011031;
    --cyan: #2ab5ff;
    --text: #050505;
    --muted: #696969;
    --line: #c5c5c5;
    --page: #fafafa;
    --header-height: 80px;
    --container: 1200px;
    --font-display: "eurostile", "Arial Narrow", Arial, sans-serif;
    --font-body: "tt-commons-pro", Inter, Arial, sans-serif;
}

* {
    box-sizing: border-box;
}

html {
    min-width: 320px;
    background: var(--page);
    color: var(--text);
    font-family: var(--font-body);
}

body {
    margin: 0;
    overflow-x: hidden;
    background: var(--page);
}

button,
input {
    font: inherit;
}

a {
    color: inherit;
    text-decoration: none;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.site-header {
    position: fixed;
    z-index: 30;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--header-height);
    color: #fff;
    background: rgba(255, 255, 255, 0);
    transition: background-color .28s ease, box-shadow .28s ease, color .28s ease;
}

.site-header:hover,
.site-header.is-open,
.site-header.header-solid {
    color: #000;
    background: #fff;
    box-shadow: 1px 1px 20px rgba(0, 0, 0, .1);
}

.header-inner {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: min(var(--container), calc(100vw - 32px));
    height: 100%;
    margin: 0 auto;
}

.brand {
    position: relative;
    display: block;
    width: 137px;
    height: 35px;
    min-width: 137px;
}

.brand-mark-img {
    position: absolute;
    left: 0;
    top: 4px;
    display: block;
    width: 27px;
    height: 27px;
}

.brand-name {
    position: absolute;
    left: 39px;
    top: 0;
    display: block;
    font-family: var(--font-body);
    font-size: 32px;
    font-style: normal;
    font-weight: 500;
    line-height: 35px;
    color: #d4d4d4;
    letter-spacing: 0;
    text-transform: uppercase;
    transition: color .28s ease;
}

.site-header:hover .brand-name,
.site-header.is-open .brand-name,
.site-header.header-solid .brand-name,
.brand-dark .brand-name {
    color: #303030;
}

.desktop-nav {
    display: flex;
    align-items: center;
    gap: 32px;
    margin-left: auto;
    margin-right: auto;
    font-family: var(--font-display);
    font-size: 14px;
    line-height: 16px;
    text-transform: uppercase;
}

.nav-link {
    border: 0;
    padding: 30px 0;
    color: currentColor;
    background: transparent;
    font-style: normal;
    font-weight: 500;
    letter-spacing: .24px;
    text-transform: uppercase;
    cursor: pointer;
}

.nav-services span {
    color: var(--cyan);
    transition: color .28s ease;
}

.site-header:hover .nav-services span,
.site-header.is-open .nav-services span {
    color: var(--blue);
}

.services-nav:hover .nav-services,
.services-nav:focus-within .nav-services,
.services-nav:hover .nav-services span,
.services-nav:focus-within .nav-services span {
    color: var(--muted);
}

.header-actions {
    display: flex;
    align-items: center;
    gap: 34px;
}

.primary-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 150px;
    height: 44px;
    padding: 15px 21px 11px;
    border: 1px solid #0240c7;
    border-radius: 3px;
    color: #fff;
    background: var(--blue);
    font-family: var(--font-display);
    font-size: 12px;
    font-style: normal;
    font-weight: 500;
    line-height: 18px;
    letter-spacing: .24px;
    text-transform: uppercase;
    transition: background-color .2s ease, transform .2s ease;
}

.primary-button:hover {
    background: #0240c7;
}

.login-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--cyan);
    font-size: 14px;
    font-weight: 500;
    line-height: 16px;
    transition: color .28s ease;
}

.login-link img {
    display: block;
    width: 16px;
    height: 16px;
}

.site-header:hover .login-link,
.site-header.is-open .login-link {
    color: #0242c8;
}

.services-nav {
    position: relative;
}

.services-nav::after {
    content: "";
    position: absolute;
    left: 0;
    top: 100%;
    width: 620px;
    height: 32px;
    pointer-events: none;
}

.services-nav:hover::after,
.services-nav:focus-within::after {
    pointer-events: auto;
}

.services-menu {
    position: absolute;
    z-index: 31;
    top: 100%;
    left: 0;
    width: 620px;
    height: 261px;
    padding: 32px 0 33px;
    background: #fff;
    box-shadow: 0 0 0 100vmax #fff;
    clip-path: inset(0 -100vmax);
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
    visibility: hidden;
}

.services-nav:hover .services-menu,
.services-nav:focus-within .services-menu {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
    transition-delay: 0s;
    visibility: visible;
}

.services-menu-grid {
    position: relative;
    z-index: 29;
    width: max-content;
    height: 100%;
    color: var(--muted);
    font-family: var(--font-display);
    font-size: 14px;
    font-style: normal;
    font-weight: 500;
    line-height: 16px;
    text-transform: uppercase;
}

.services-menu-column {
    position: absolute;
    top: 0;
    display: grid;
    grid-template-rows: repeat(6, 16px);
    row-gap: 20px;
}

.services-menu-column-left {
    left: 0;
}

.services-menu-column-right {
    left: 295px;
}

.services-menu-column a {
    display: block;
    color: var(--muted);
    font-family: var(--font-display);
    font-size: 14px;
    font-style: normal;
    font-weight: 500;
    line-height: 16px;
    text-transform: uppercase;
    white-space: nowrap;
}

.menu-count {
    font-family: var(--font-display);
    font-size: 14px;
    font-style: normal;
    font-weight: 500;
    line-height: 16px;
    text-transform: uppercase;
}

.services-menu-grid a:hover {
    color: var(--blue);
}

.mobile-menu-button {
    display: none;
}

.hero {
    position: relative;
    min-height: 850px;
    overflow: hidden;
    color: #fff;
    background:
        radial-gradient(1100px 540px at 52% 70%, rgba(255, 255, 255, .98) 0 26%, rgba(106, 196, 255, .86) 43%, rgba(1, 76, 240, .95) 59%, #012e91 71%, #001b55 100%);
}

.hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(to bottom, rgba(0, 27, 85, .9) 0 23%, rgba(0, 27, 85, .2) 40%, rgba(255, 255, 255, .95) 76%, #fff 100%);
    opacity: .98;
}

.hero::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 176px;
    height: 190px;
    background:
        linear-gradient(90deg, transparent 0 6%, rgba(1, 76, 240, .6) 6% 10%, transparent 10% 14%, rgba(1, 76, 240, .55) 14% 19%, transparent 19% 23%, rgba(1, 76, 240, .58) 23% 28%, transparent 28% 33%, rgba(1, 76, 240, .5) 33% 38%, transparent 38% 43%, rgba(1, 76, 240, .6) 43% 51%, transparent 51% 58%, rgba(1, 76, 240, .58) 58% 67%, transparent 67% 74%, rgba(1, 76, 240, .55) 74% 81%, transparent 81% 87%, rgba(1, 76, 240, .5) 87% 100%);
    clip-path: polygon(0 38%, 5% 38%, 5% 26%, 10% 26%, 10% 12%, 14% 12%, 14% 26%, 20% 26%, 20% 43%, 25% 43%, 25% 29%, 30% 29%, 30% 45%, 36% 45%, 36% 28%, 43% 28%, 43% 20%, 52% 20%, 52% 29%, 58% 29%, 58% 18%, 64% 18%, 64% 28%, 70% 28%, 70% 42%, 77% 42%, 77% 29%, 83% 29%, 83% 15%, 88% 15%, 88% 28%, 94% 28%, 94% 18%, 98% 18%, 98% 38%, 100% 38%, 100% 66%, 0 66%);
    opacity: .9;
}

.pixel-cloud {
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
}

.pixel {
    position: absolute;
    display: block;
    background: var(--blue-deep);
}

.pixel-a { width: 25px; height: 25px; left: 25%; top: 154px; }
.pixel-b { width: 44px; height: 44px; right: 23%; top: 88px; }
.pixel-c { width: 65px; height: 25px; right: 14%; top: 325px; }
.pixel-d { width: 50px; height: 28px; left: 23%; top: 460px; background: var(--cyan); }
.pixel-e { width: 25px; height: 25px; right: 40%; top: 344px; }
.pixel-f { width: 23px; height: 23px; right: 18%; top: 440px; }

.hero-inner {
    position: relative;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: min(920px, calc(100vw - 32px));
    margin: 0 auto;
    padding-top: 300px;
}

.hero h1 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 72px;
    font-weight: 500;
    line-height: 72px;
    letter-spacing: 0;
    text-align: center;
}

.hero-kicker {
    align-self: flex-start;
    width: 330px;
    margin: 56px 0 54px 72px;
    padding-left: 36px;
    color: #fff;
    font-weight: 700;
    font-size: 18px;
    line-height: 26px;
    text-transform: uppercase;
    background: linear-gradient(90deg, var(--cyan) 0 50px, transparent 50px);
}

.hero-form {
    position: relative;
    width: 100%;
    height: 58px;
    border: 1px solid var(--blue);
    border-radius: 3px;
    background: rgba(255, 255, 255, .6);
}

.hero-form input,
.chat-input-row input {
    width: 100%;
    height: 100%;
    border: 0;
    outline: 0;
    padding: 0 78px 0 31px;
    color: #111;
    background: transparent;
    font-size: 14px;
    line-height: 18px;
}

.hero-form input::placeholder,
.chat-input-row input::placeholder {
    color: var(--muted);
}

.send-button {
    position: absolute;
    top: 5px;
    right: 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border: 1px solid #0240c7;
    border-radius: 2px;
    color: #fff;
    background: var(--blue);
    font-size: 31px;
    line-height: 1;
    cursor: pointer;
}

.send-button span {
    transform: translateY(-2px);
}

.hero-chips {
    display: flex;
    justify-content: center;
    gap: 12px;
    width: 100%;
    margin-top: 34px;
}

.hero-chips button {
    height: 38px;
    padding: 0 16px;
    border: 1px solid #c9c9c9;
    border-radius: 3px;
    color: #575757;
    background: rgba(255, 255, 255, .4);
    font-size: 14px;
    line-height: 16px;
    cursor: pointer;
}

.hero-chips button:hover {
    border-color: var(--blue);
    color: var(--blue-dark);
    background: rgba(255, 255, 255, .75);
}

.mobile-menu {
    position: fixed;
    z-index: 60;
    inset: 0;
    display: none;
    background: var(--page);
    color: var(--blue-dark);
}

.mobile-menu-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 56px;
    padding: 0 16px;
}

.mobile-menu .brand {
    min-width: 0;
    gap: 9px;
}

.mobile-menu .brand-name {
    color: #000;
    font-size: 28px;
    line-height: 28px;
}

.mobile-close {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    border: 0;
    background: transparent;
    color: #000;
    font-weight: 700;
    font-size: 12px;
    line-height: 12px;
    text-transform: uppercase;
    cursor: pointer;
}

.close-icon,
.hamburger {
    position: relative;
    display: inline-block;
    width: 32px;
    height: 20px;
}

.close-icon::before,
.close-icon::after {
    content: "";
    position: absolute;
    top: 9px;
    left: 4px;
    width: 24px;
    height: 2px;
    background: currentColor;
}

.close-icon::before { transform: rotate(28deg); }
.close-icon::after { transform: rotate(-28deg); }

.mobile-menu-panel {
    padding: 54px 16px 0;
}

.mobile-menu-label {
    width: 130px;
    margin: 0 0 24px;
    font-family: var(--font-display);
    font-size: 12px;
    line-height: 16px;
    text-transform: uppercase;
}

.mobile-menu-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 60px;
    border: 0;
    border-top: 1px solid var(--line);
    color: var(--blue-dark);
    background: transparent;
    font-family: var(--font-display);
    font-size: 24px;
    line-height: 28px;
    text-align: left;
    cursor: pointer;
}

.mobile-menu-row:last-of-type {
    border-bottom: 1px solid var(--line);
}

.mobile-menu-row em {
    color: #b0b0b0;
    font-style: normal;
}

.mobile-menu-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 58px;
    margin-top: 32px;
    border: 2px solid var(--blue);
    border-radius: 3px;
    color: var(--blue);
    background: rgba(1, 76, 240, .1);
    font-family: var(--font-display);
    font-size: 14px;
    font-weight: 700;
    line-height: 18px;
    text-transform: uppercase;
}

.mobile-services-panel {
    padding-top: 54px;
}

.mobile-back {
    width: 44px;
    height: 44px;
    margin-bottom: 10px;
    border: 0;
    color: var(--blue);
    background: transparent;
    font-size: 34px;
    line-height: 1;
    cursor: pointer;
}

.chat-backdrop {
    position: fixed;
    z-index: 39;
    inset: 0;
    border: 0;
    background: rgba(0, 0, 0, .18);
}

.chat-sheet {
    position: fixed;
    z-index: 50;
    right: 32px;
    bottom: 32px;
    display: flex;
    flex-direction: column;
    width: min(420px, calc(100vw - 32px));
    height: min(680px, calc(100vh - 64px));
    padding: 42px 16px 42px;
    border-radius: 14px;
    background: #fff;
    box-shadow: 1px 1px 40px rgba(0, 0, 0, .12);
    opacity: 0;
    transform: translateY(18px);
    pointer-events: none;
    transition: opacity .22s ease, transform .22s ease;
}

.chat-sheet.is-open {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.chat-handle {
    position: absolute;
    top: 16px;
    left: 50%;
    width: 36px;
    height: 3px;
    border-radius: 30px;
    background: #636a73;
    transform: translateX(-50%);
}

.chat-date {
    margin-bottom: 26px;
    color: #838383;
    font-size: 12px;
    line-height: 14px;
    text-align: center;
}

.chat-messages {
    flex: 1;
    overflow-y: auto;
    padding: 0 0 18px;
}

.chat-bubble {
    max-width: 76%;
    margin-left: auto;
    margin-bottom: 28px;
    padding: 14px 18px;
    border-radius: 20px;
    background: #f2f2f2;
    color: #000;
    font-size: 16px;
    line-height: 22px;
}

.chat-answer {
    max-width: 95%;
    color: #000;
    font-size: 16px;
    line-height: 22px;
}

.chat-answer + .chat-bubble,
.chat-bubble + .chat-answer {
    margin-top: 24px;
}

.typing {
    color: #838383;
}

.chat-input-row {
    position: relative;
    height: 58px;
    margin-top: 12px;
    border: 1px solid var(--blue);
    border-radius: 3px;
    background: rgba(255, 255, 255, .6);
}

.chat-input-row input {
    padding-left: 23px;
    font-size: 16px;
}

.chat-disclaimer {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 12px;
    margin: 0;
    color: #8a8a8a;
    font-size: 10px;
    line-height: 12px;
    text-align: center;
}

@media (max-width: 900px) {
    :root {
        --header-height: 56px;
    }

    .site-header {
        color: #fff;
        background: transparent;
        box-shadow: none;
    }

    .site-header:hover {
        color: #fff;
        background: transparent;
        box-shadow: none;
    }

    .header-inner {
        width: 100%;
        padding: 0 16px;
    }

    .brand {
        width: 105px;
        height: 24px;
        min-width: 0;
    }

    .brand-mark-img {
        left: 0;
        top: 0;
        width: 21px;
        height: 21px;
    }

    .brand-name,
    .site-header:hover .brand-name {
        left: 31px;
        top: 0;
        color: #d4d4d4;
        font-size: 24px;
        font-weight: 500;
        line-height: 24px;
    }

    .desktop-nav,
    .header-actions {
        display: none;
    }

    .mobile-menu-button {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        border: 0;
        color: currentColor;
        background: transparent;
        font-weight: 700;
        font-size: 12px;
        line-height: 12px;
        text-transform: uppercase;
        cursor: pointer;
    }

    .hamburger::before,
    .hamburger::after {
        content: "";
        position: absolute;
        right: 0;
        width: 26px;
        height: 2px;
        background: currentColor;
    }

    .hamburger::before {
        top: 6px;
    }

    .hamburger::after {
        top: 16px;
        width: 20px;
    }

    .mobile-menu.is-open {
        display: block;
    }

    .hero {
        min-height: 785px;
        background:
            radial-gradient(640px 520px at 58% 68%, rgba(255, 255, 255, .98) 0 24%, rgba(106, 196, 255, .9) 42%, rgba(1, 76, 240, .96) 61%, #012e91 73%, #001b55 100%);
    }

    .hero::before {
        background:
            linear-gradient(to bottom, rgba(0, 27, 85, .95) 0 30%, rgba(1, 76, 240, .45) 55%, rgba(255, 255, 255, .95) 82%, #fff 100%);
    }

    .hero::after {
        top: 118px;
        height: 170px;
    }

    .pixel-a { width: 19px; height: 19px; left: 18%; top: 164px; }
    .pixel-b { width: 41px; height: 41px; right: 8%; top: 8px; }
    .pixel-c { width: 64px; height: 20px; right: 3%; top: 335px; }
    .pixel-d { width: 44px; height: 22px; left: 16px; top: 382px; }
    .pixel-e { width: 28px; height: 28px; right: 25%; top: 229px; }
    .pixel-f { width: 20px; height: 20px; right: 8%; top: 396px; }

    .hero-inner {
        align-items: flex-start;
        width: 100%;
        padding: 260px 16px 0;
    }

    .hero h1 {
        width: min(343px, 100%);
        font-size: 44px;
        line-height: 40px;
        text-align: left;
    }

    .hero-kicker {
        width: 212px;
        margin: 48px 0 118px;
        padding-left: 17px;
        font-size: 16px;
        line-height: 24px;
        background: linear-gradient(90deg, var(--cyan) 0 44px, transparent 44px);
    }

    .hero-form {
        order: 4;
        width: 100%;
        height: 58px;
        margin-top: 32px;
    }

    .hero-form input {
        padding-left: 23px;
    }

    .hero-chips {
        order: 3;
        display: grid;
        grid-template-columns: repeat(6, max-content);
        grid-auto-rows: 38px;
        justify-content: center;
        gap: 8px;
        width: 100%;
        margin-top: 0;
    }

    .hero-chips button {
        padding: 0 11px;
        font-size: 12px;
    }

    .hero-chips button:nth-child(1) {
        grid-column: 2 / span 2;
    }

    .hero-chips button:nth-child(2) {
        grid-column: 4 / span 2;
    }

    .hero-chips button:nth-child(3) {
        grid-column: 1 / span 2;
    }

    .hero-chips button:nth-child(4) {
        grid-column: 3 / span 2;
    }

    .hero-chips button:nth-child(5) {
        grid-column: 5 / span 2;
    }

    .chat-backdrop {
        background: transparent;
    }

    .chat-sheet {
        right: 0;
        bottom: 0;
        width: 100%;
        max-width: none;
        height: calc(100vh - 71px);
        min-height: 714px;
        padding: 42px 16px 42px;
        border-radius: 10px 10px 0 0;
        transform: translateY(100%);
    }

    .chat-sheet.is-open {
        transform: translateY(0);
    }
}

@media (max-width: 380px) {
    .hero-chips {
        transform: translateX(-1px);
    }
}
