/* .is-hover and .is-pressed only exist so the design-system page can show those states statically. */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    height: 3rem;
    padding: 0.75rem 1.5rem;
    border: 0;
    border-radius: 3.625rem;
    background: var(--gradient-blue-2);
    color: var(--color-white);
    font: 500 var(--text-body-m)/var(--leading-body-m) var(--font-sans);
    font-variation-settings: var(--opsz-medium);
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}

.btn--m {
    height: 2.5rem;
    padding: 0.5rem 1rem;
    background: var(--color-blue-300);
}

.btn--block {
    display: flex;
    width: 100%;
}

.btn--m.btn--icon-only:not(.btn--block) {
    width: 2.5rem;
    padding: 0;
}

.btn--m.btn--icon-only .icon {
    width: 1.25rem;
    height: 1.25rem;
}

.btn:is(:hover, .is-hover) {
    background: var(--color-blue-400);
}

.btn:is(:active, .is-pressed) {
    background: #2c407d;
}

.btn--m:is(:active, .is-pressed) {
    background: var(--color-blue-500);
}

.btn:focus-visible {
    outline: 2px solid var(--color-blue-300);
    outline-offset: 2px;
}

.btn:is(:disabled, [aria-disabled="true"]) {
    background: var(--color-gray-50);
    color: var(--color-dark-blue-50);
    cursor: not-allowed;
}

.btn--outline-white {
    padding-inline: calc(1.5rem - 1px);
    border: 1px solid var(--color-white);
    background: none;
}

.btn--outline-white:is(:hover, .is-hover) {
    background: rgb(255 255 255 / 0.12);
}

.btn--outline-white:is(:active, .is-pressed) {
    background: rgb(255 255 255 / 0.2);
}

.btn--outline-white:focus-visible {
    outline-color: var(--color-white);
}

.btn--secondary {
    border: 1px solid var(--color-gray-50);
    background: var(--color-white);
    color: var(--color-gray-200);
}

.btn--secondary:is(:hover, .is-hover) {
    background: var(--color-blue-50);
}

.btn--secondary:is(:active, .is-pressed) {
    border-color: var(--color-blue-75);
    background: var(--color-blue-50);
}

/* Errors of an api-form.js form. The text stays dark: --color-red-500 on white is below 4.5:1 for small text,
   so only the icon is red. */
.form-error,
.form-alert {
    display: flex;
    align-items: flex-start;
    color: var(--color-gray-200);
    font-size: var(--text-body-s);
    line-height: var(--leading-body-s);
    text-align: start;
}

.form-error {
    gap: 0.375rem;
}

.form-alert {
    gap: 0.625rem;
    padding: 0.75rem 0.875rem;
    border-radius: 0.625rem;
    background: rgb(239 57 57 / 0.1);
}

.form-error[hidden],
.form-alert[hidden] {
    display: none;
}

.form-error .icon {
    width: 1.25rem;
    height: 1.25rem;
    color: var(--color-red-500);
}

.form-alert .icon {
    width: 1.125rem;
    height: 1.125rem;
    color: var(--color-red-500);
}

.icon {
    display: inline-block;
    flex: none;
    width: 1.5rem;
    height: 1.5rem;
    background-color: currentColor;
    -webkit-mask: var(--icon) center / contain no-repeat;
    mask: var(--icon) center / contain no-repeat;
}

.icon--arrow-up-right {
    --icon: url("../images/icons/arrow-up-right.svg");
}

.icon--arrow-left {
    --icon: url("../images/icons/arrow-left.svg");
}

.icon--arrow-right {
    --icon: url("../images/icons/arrow-right.svg");
}

.icon--check {
    --icon: url("../images/icons/check.svg");
}

.icon--plus {
    --icon: url("../images/icons/plus.svg");
}

.icon--mail {
    --icon: url("../images/icons/mail.svg");
}

.icon--phone {
    --icon: url("../images/icons/phone.svg");
}

.icon--pin {
    --icon: url("../images/icons/pin.svg");
}

.icon--clock {
    --icon: url("../images/icons/clock.svg");
}

.icon--alert {
    --icon: url("../images/icons/alert.svg");
}

.icon--check-bold {
    --icon: url("../images/icons/check-bold.svg");
}

.icon--search {
    --icon: url("../images/icons/search.svg");
}

.icon--arrow-up-right-short {
    --icon: url("../images/icons/arrow-up-right-short.svg");
}

.icon--chevron-right {
    --icon: url("../images/icons/chevron-right.svg");
}

.icon--user {
    --icon: url("../images/icons/user.svg");
}

.icon--link {
    --icon: url("../images/icons/link.svg");
}

.icon--share {
    --icon: url("../images/icons/share.svg");
}

.icon--globe {
    --icon: url("../images/icons/globe.svg");
    -webkit-mask-size: calc(22 / 24 * 100%);
    mask-size: calc(22 / 24 * 100%);
}

.icon--facebook {
    --icon: url("../images/icons/facebook.svg");
}

.icon--instagram {
    --icon: url("../images/icons/instagram.svg");
}

.icon--linkedin {
    --icon: url("../images/icons/linkedin.svg");
}

.icon--briefcase {
    --icon: url("../images/icons/briefcase.svg");
}

.icon--building {
    --icon: url("../images/icons/building.svg");
    -webkit-mask-size: calc(28.6667 / 32 * 100%);
    mask-size: calc(28.6667 / 32 * 100%);
}

.icon--accordion {
    --icon: url("../images/icons/accordion-plus.svg");
}

details[open] > summary .icon--accordion {
    --icon: url("../images/icons/accordion-minus.svg");
}

.icon--social {
    width: 2rem;
    height: 2rem;
}

.site-logo {
    --logo-size: 2.5rem;
    display: inline-flex;
    align-items: center;
    gap: calc(var(--logo-size) * 0.32);
    color: var(--brand-ink);
    font: 600 calc(var(--logo-size) * 0.56)/1.15 var(--font-display);
    text-decoration: none;
    white-space: nowrap;
}

.site-logo img {
    width: auto;
    height: var(--logo-size);
}

.site-logo--large {
    --logo-size: 3.125rem;
}

.app-bar {
    background: var(--color-dark-blue-100);
    color: var(--color-white);
    font-size: var(--text-body-s);
    line-height: var(--leading-body-s);
}

.app-bar__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1.5rem;
    padding-block: 0.5rem;
}

.app-bar nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
}

.app-bar :is(a, button.link) {
    color: var(--color-white);
    text-decoration: none;
}

.app-bar :is(a, button.link):hover {
    text-decoration: underline;
}

.app-bar__account {
    display: flex;
    gap: 1rem;
    margin-left: auto;
}

:root {
    --site-header-gap: 1.5rem;
    --site-header-bar: 4rem;
    --site-header-height: calc(var(--site-header-gap) + var(--site-header-bar));
}

html {
    scroll-padding-top: calc(var(--site-header-height) + 1rem);
}

.site-header {
    position: sticky;
    top: 0;
    z-index: 20;
    padding-top: var(--site-header-gap);
}

.site-header__bar {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: var(--site-header-bar);
    padding: 0.75rem 1.5rem;
    border-radius: 5.5rem;
    background: var(--color-white);
    box-shadow: var(--shadow-floating);
}

.site-header__toggle {
    display: grid;
    gap: 0.3125rem;
    padding: 0.625rem;
    border: 0;
    border-radius: 50%;
    background: none;
}

.site-header__toggle span:not(.sr-only) {
    display: block;
    width: 1.25rem;
    height: 2px;
    border-radius: 1px;
    background: var(--color-gray-200);
}

.site-header__toggle:focus-visible {
    outline: 2px solid var(--color-blue-300);
}

.site-header__menu {
    position: absolute;
    top: calc(100% + 0.5rem);
    right: 0;
    left: 0;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 1.5rem;
    padding: 1.5rem;
    border-radius: 1.5rem;
    background: var(--color-white);
    box-shadow: var(--shadow-floating);
}

.site-header__menu.is-open {
    display: flex;
}

.site-header__links {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-header__links a {
    color: #3a3a3a;
    font-size: var(--text-body-l);
    line-height: var(--leading-body-l);
    text-decoration: none;
    white-space: nowrap;
}

.site-header__links a:hover {
    color: var(--color-blue-300);
}

.site-header__links a[aria-current="page"] {
    color: var(--color-blue-300);
    font-weight: 600;
}

@media (min-width: 77.5rem) {
    :root {
        --site-header-bar: 5rem;
    }

    .site-header__bar {
        padding: 1rem 2rem;
    }

    .site-header__toggle {
        display: none;
    }

    .site-header__menu,
    .site-header__menu.is-open {
        position: static;
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 2.5rem;
        padding: 0;
        border-radius: 0;
        box-shadow: none;
    }

    .site-header__links {
        flex-direction: row;
        gap: 1.5rem;
    }
}

@media (min-width: 90rem) {
    .site-header__bar {
        padding-inline: 4rem;
    }

    .site-header__menu,
    .site-header__menu.is-open {
        gap: 5rem;
    }

    .site-header__links {
        gap: 2.5rem;
    }
}

.site-footer {
    padding-block: 2.5rem;
    background: var(--color-white);
}

.site-footer__top {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 2.5rem;
}

.site-footer__about {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    justify-items: start;
    gap: 1.5rem;
    width: 33.8125rem;
    max-width: 100%;
}

.site-footer :is(p, ul) {
    margin: 0;
}

.site-footer__aside {
    display: flex;
    justify-content: space-between;
    gap: 2rem;
    width: 26.5625rem;
    max-width: 100%;
}

.site-footer__links {
    display: grid;
    align-content: start;
    gap: 1.5rem;
    padding: 0;
    list-style: none;
}

.site-footer__links a {
    color: var(--color-gray-100);
    text-decoration: none;
}

.site-footer__links a:is(:hover, [aria-current="page"]) {
    color: var(--color-blue-300);
    font-weight: 600;
}

.site-footer__social {
    display: grid;
    align-content: start;
    gap: 1.5rem;
}

.site-footer__social p {
    color: var(--color-gray-75);
}

.site-footer__social ul {
    display: flex;
    gap: 1.5rem;
    padding: 0;
    list-style: none;
}

.site-footer__social :is(a, span) {
    display: block;
    color: var(--color-gray-75);
}

.site-footer__social a:hover {
    color: var(--color-blue-300);
}

.site-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 2.5rem;
    padding-top: 2.5rem;
    border-top: 1px solid var(--color-gray-50);
}

.site-footer__copyright {
    font-size: var(--text-body-l);
    font-variation-settings: "opsz" 36;
    line-height: 1.5;
}

.language-switch {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border: 1px solid var(--color-dark-blue-50);
    border-radius: 1.5rem;
    background: none;
    color: var(--color-dark-blue-75);
    font-size: var(--text-body-l);
    text-decoration: none;
    font-variation-settings: "opsz" 36;
    line-height: 1.5;
}

.language-switch:focus-visible {
    outline: 2px solid var(--color-blue-300);
    outline-offset: 2px;
}
