:root {
    --clay:             hsl(14, 23%, 51%);  /* #9f7365 */

    --clay-darken-1:    hsl(14, 26%, 41%);

    --clay-lighten-1:   hsl(14, 35%, 56%);
    --clay-lighten-2:   hsl(14, 50%, 70%);  /* #d99e8c */
    --clay-lighten-3:   hsl(14, 55%, 80%);  /* #d99e8c */

    --clay-fade-60:     hsla(14, 23%, 51%, 0.6);


    --stone:            hsl(38, 8%, 65%);   /* #ada89f */

    --stone-darken-1:   hsl(38, 6%, 55%);
    --stone-darken-2:   hsl(38, 5%, 50%);
    --stone-darken-3:   hsl(38, 3%, 35%);

    --stone-fade-8:     hsla(38, 3%, 35%, 0.08);
    --stone-fade-15:    hsla(38, 3%, 35%, 0.15);
    --stone-fade-25:    hsla(38, 3%, 35%, 0.25);


    --ivory-lighten-1:  hsl(52, 9%, 95%);

    --ivory:            hsl(52, 6%, 88%);   /* #e2e2df */

    --ivory-darken-0:   hsl(52, 5%, 82%);
    --ivory-darken-1:   hsl(52, 5%, 80%);
    --ivory-darken-2:   hsl(52, 4%, 60%);
    --ivory-darken-3:   hsl(52, 4%, 50%);

    --ivory-fade-15:    hsla(52, 6%, 88%, 0.15);
    --ivory-fade-25:    hsla(52, 6%, 88%, 0.25);
    --ivory-fade-33:    hsla(52, 6%, 88%, 0.33);
    --ivory-fade-40:    hsla(52, 6%, 88%, 0.40);
    --ivory-fade-50:    hsla(52, 6%, 88%, 0.50);


    --forest:           hsl(160, 45%, 7%);  /* #0a1a15 */

    --forest-fade-0:    hsla(160, 45%, 7%, 0.01);
    --forest-fade-15:   hsla(160, 45%, 7%, 0.15);
    --forest-fade-25:   hsla(160, 45%, 7%, 0.25);
    --forest-fade-50:   hsla(160, 45%, 7%, 0.50);
    --forest-fade-60:   hsla(160, 45%, 7%, 0.60);
    --forest-fade-75:   hsla(160, 45%, 7%, 0.75);
    --forest-fade-80:   hsla(160, 45%, 7%, 0.80);


    --charcoal:         hsl(152, 6%, 16%);  /* #262b29 */
    --charcoal-fade-80: hsla(152, 6%, 16%, 0.80);
    --charcoal-fade-60: hsla(152, 6%, 16%, 0.60);
    --charcoal-fade-40: hsla(152, 6%, 16%, 0.40);
    --charcoal-fade-25: hsla(152, 6%, 16%, 0.25);
    --charcoal-fade-0:  hsla(152, 6%, 16%, 0.01);
    
    --clay-on-stone:          hsl(17, 25%, 38%); /* #795648; */

    --clay-on-stone-darken-1: hsl(17, 35%, 28%);

    --forest-faded-on-stone:  hsla(60, 4%, 30%, 0.85);

    --clay-on-stone-fade-50:  hsla(17, 25%, 38%, 0.50);
}

.page {
    background: var(--charcoal);
    color: var(--ivory);
}

.footer {
    background: var(--forest);
}

/* #region Base scale */

:root {
    --max-width: min(1350px, calc(100vw - 15rem));
    --side-margin-width: calc((100vw - var(--max-width)) / 2);

    --gap-xs: 0.625rem;
    --gap-s: 1.25rem;
    --gap-m: 2.5rem;
    --gap-n: 3.75rem;
    --gap-l: 4rem;
    --gap-xl: 8rem;

    --button-height: 3.25rem;
    --button-horizontal-padding: 1.7rem;

    --box-radius: 0.5rem;

    --border-width: 0.18rem;

    --mobile-pre-header-gap: calc(var(--gap-l) * 0.6);
}

html {
    background-color: var(--charcoal);
    
    font-size: clamp(10px, min(0.90vw, 1.55vh), 13px);

    --smalltext-size: calc(var(--bodytext-size) * 0.87);
    --smalltext-lineheight: calc(var(--bodytext-lineheight) * 0.80);
    --smalltext-weight: 500;
    --smalltext-letterspacing: 0.005rem;

    --bodytext-size: 1.35rem;
    --bodytext-lineheight: 2rem;
    --bodytext-weight: 400;
    --bodytext-letterspacing: 0.005rem;

    --emphasized-size: 1.7rem;
    --emphasized-lineheight: 2.3rem;
    --emphasized-weight: 400;
    --emphasized-letterspacing: 0.005rem;

    --h3-fontsize: calc(var(--bodytext-size) * 1.5);
    --h3-lineheight: calc(var(--bodytext-lineheight) * 1.5);
    --h3-fontweight: 500;
    --h3-letterspacing: 0.015rem;

    --h2-fontsize: 3rem;
    --h2-lineheight: 3.5rem;
    --h2-fontweight: 500;
    --h2-letterspacing: -0.01rem;

    --h1-fontsize: calc(var(--bodytext-size) * 3.65);
    --h1-lineheight: calc(var(--h1-fontsize) * 1.15);
    --h1-fontweight: 600;
    --h1-letterspacing: calc(var(--h1-fontsize) * -0.03);

    --hero-fontsize: calc(var(--bodytext-size) * 4.55);
    --hero-lineheight: calc(var(--hero-fontsize) * 1.15);
    --hero-fontweight: 600;
    --hero-letterspacing: calc(var(--hero-fontsize) * -0.03);
}

/* #endregion */

/* #region Structure */

*, *::before, *::after {
    box-sizing: border-box;
}

.page {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    width: 100%;
    overflow-x: hidden;
    justify-content: space-between;
}

.main {
    width: 100%;
}

.has-js .on-scroll--fade-in { opacity: 0; }

.reduced-motion .on-scroll--fade-in { opacity: 1 !important; }

.has-js .on-scroll--grid-cell-one-by-one > * {
    opacity: 0;
}

.reduced-motion .on-scroll--grid-cell-one-by-one > * {
    opacity: 1 !important;
    transform: none !important;
}

.section {
    margin: var(--gap-xl) 0 0 0;
    position: relative;
}

.main .section:first-child {
    margin-top: calc(var(--gap-l) * 1.5);
}

@media (max-width: 480px)  {
    .main .section:first-child {
        margin-top: calc(var(--gap-l) * 0.5);
    }
}

.section--background,
.main .section--background:first-child {
    padding: var(--gap-xl) 0;
}

.section--background + .section--background {
    margin-top: 0;
}

.main .section:last-child {
    margin-bottom: var(--gap-xl);
}

.main .section--background:last-child {
    margin-bottom: 0;
}

.section--background-clay {
    background-color: var(--stone);
}

.section--background-forest {
    background-color: var(--forest);
}

.section--background-forest + .section--background-forest { 
    padding-top: 0;
}

.section--background-stone {
    background-color: var(--stone);
    color: var(--forest);
}

.section--background-stone + .section--background-stone {
    padding-top: 0;
}

.section--background-charcoal + .section--background-charcoal {
    padding-top: 0;
}

.section .layout + .layout {
    margin-top: var(--gap-m);
}

@media (max-width: 480px)  {
    .section .layout + .layout {
        margin-top: var(--gap-m);
    }
}

.layout {
    margin: 0 auto;
    width: 100%;
    max-width: var(--max-width);
    display: grid;
    gap: var(--gap-m);
}

.layout--gap-xs {
    gap: var(--gap-xs);
}

.layout--gap-s {
    gap: var(--gap-s);
}

.layout--gap-m {
    gap: var(--gap-m);
}

.layout--gap-n {
    gap: var(--gap-n);
}

.layout--gap-l {
    gap: var(--gap-l);
}

.layout--gap-xl {
    gap: var(--gap-xl);
}

.layout--min-height-1 > *,
.object--min-height-1 {
    min-height: min(15rem, 22vw);
}

.layout--min-height-2 > *,
.object--min-height-2 {
    min-height: min(16rem, 30vw);
}

.layout--min-height-3 > *,
.object--min-height-3 {
    min-height: 22rem;
}

.layout--min-height-4 > *,
.object--min-height-4 {
    min-height: 28rem;
}

.layout--min-height-5 > *,
.object--min-height-5 {
    min-height: 32rem;
}

@media (max-width: 768px)  {
    .layout,
    .layout--gap-xs, 
    .layout--gap-s, 
    .layout--gap-m, 
    .layout--gap-n, 
    .layout--gap-l, 
    .layout--gap-xl {
        gap: var(--gap-xs) !important;
    }

    .layout--service-listing {
        gap: var(--gap-l) !important;
    }
}

.object {
    border-radius: var(--box-radius);
    font-size: var(--bodytext-size);
    line-height: var(--bodytext-lineheight);
    font-weight: var(--bodytext-weight);
    letter-spacing: var(--bodytext-letterspacing);
}

.object--span-2 {
    grid-column: span 2;
}

.object--row-span-2 {
    grid-row: span 2;
}

.object--relative {
    position: relative;
}

.object--vertical-center {
    display: flex;
    flex-direction: column;
    justify-content: center;
    height: 100%;
}

.object--sticky {
    position: relative;
}

.object--sticky > * {
    position: sticky;
    left: 0;
    top: var(--gap-n);
}

.object--pad {
    padding: var(--gap-m);
    padding-top: calc(var(--gap-m) * 0.90);
    padding-bottom: calc(var(--gap-m) * 0.85);
}

.object--background-stone {
    background-color: var(--stone);
}

.object--background-stone-fade-25 {
    background-color: var(--stone-fade-25);
}

.object--background-ivory {
    background-color: var(--ivory);
}

.object--background-ivory-fade-33 {
    background-color: var(--ivory-fade-33);
}

.object--background-clay {
    background-color: var(--clay);
}

.object--background-ivory-on-stone-highlight-edge {
    background-color: var(--ivory-fade-15);
    border: var(--border-width) var(--ivory-fade-25) solid;
}

.object--background-forest {
    background-color: var(--forest);
}

.object--outline-clay {
    background-color: transparent;
    border: var(--border-width) var(--clay) solid;
}

.object--outline-stone {
    background-color: transparent;
    border: var(--border-width) var(--stone) solid;
}

.object--outline-ivory {
    background-color: transparent;
    border: var(--border-width) var(--ivory) solid;
}

.object--outline-ivory-fade-40 {
    background-color: transparent;
    border: var(--border-width) var(--ivory-fade-40) solid;
}

.object--outline-forest {
    background-color: transparent;
    border: var(--border-width) var(--forest) solid;
}

.object--outline-charcoal {
    background-color: transparent;
    border: var(--border-width) var(--charcoal) solid;
}

.object--outline-charcoal-fade-25 {
    background-color: transparent;
    border: var(--border-width) var(--charcoal-fade-25) solid;
}

.object--forest {
    color: var(--forest);
}

.object--ivory {
    color: var(--ivory);
}

.separator {
    display: flex;
    align-items: center;
    justify-content: center;
}

.separator--chevron-down {
    margin-top: 0.75rem !important;
}

.separator--chevron-down + * {
    margin-top: 1rem !important;
}

.separator--chevron-down::before {
    content: "";
    display: inline-block;
    width: 1rem;
    height: 1rem;
    border: solid currentColor;
    border-width: 0 calc(var(--border-width) * 1.55) calc(var(--border-width) * 1.55) 0;
    transform: rotate(45deg);
}

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

/* #endregion */

/* #region Cropped photos */

.fill-crop {
    display: block;
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
    min-height: min(15rem, 32vw);
}

.fill-crop--top-half {
    height: 18rem;
    min-height: auto;
}

.fill-crop--darken-to-bottom:after {
    content: " ";
    z-index: 2;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-image: linear-gradient(
        180deg, 
        hsla(152, 6%, 16%, 0.00) 30%,
        hsla(152, 6%, 16%, 0.80) 80%
    );
}

.fill-crop--to-left-window-edge {
    margin-left: calc((var(--side-margin-width) + 0.5rem) * -1);
    width: calc(100% + var(--side-margin-width) + 0.5rem);
}

.fill-crop--to-left-window-edge, 
.fill-crop--to-left-window-edge * {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.fill-crop--to-right-window-edge {
    margin-right: calc((var(--side-margin-width) + 0.5rem) * -1);
    width: calc(100% + var(--side-margin-width) + 0.5rem);
}

.fill-crop--to-right-window-edge, 
.fill-crop--to-right-window-edge * {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.fill-crop__link {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    font-size: 0;
    z-index: 20;
}

.fill-crop__photo {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--box-radius);
}

.fill-crop--top-half .fill-crop__photo {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.fill-crop__photo--certification {
    top: calc(var(--gap-m) * 0.5);
    left: calc(var(--gap-m) * 1.5);
    width: calc(100% - (var(--gap-m) * 3));
    height: calc(100% - (var(--gap-m) * 1.6) - var(--smalltext-lineheight));
    object-fit: contain;
    object-position: center center;
}

@media (max-width: 768px)  {
    .fill-crop__photo {
        aspect-ratio: 16 / 9;
    }
}

.fill-crop__photo--align-top {
    object-position: 50% 25%;
}

.fill-crop__photo--align-hard-top {
    object-position: 50% 0%;
}

.fill-crop__photo--align-left {
    object-position: 25% 50%;
}

.fill-crop__photo--align-left-15 {
    object-position: 15% 50%;
}

.fill-crop__photo--align-hard-left {
    object-position: 0% 50%;
}

.fill-crop__photo--align-right {
    object-position: 75% 50%;
}

.fill-crop__photo--align-hard-right {
    object-position: 100% 50%;
}

.fill-crop__edge {
    position: absolute;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 10;
    box-shadow: inset 0 0 0 var(--border-width) var(--ivory-fade-15);
    border-radius: var(--box-radius);
    pointer-events: none;
}

.fill-crop__edge--stone {
    box-shadow: inset 0 0 0 var(--border-width) var(--ivory-fade-33);
}

.fill-crop__caption,
.object .fill-crop__caption {
    position: absolute;
    left: var(--gap-m);
    width: calc(100% - (var(--gap-m) * 2));
    text-align: center;
    font-size: var(--smalltext-fontsize);
    line-height: var(--smalltext-lineheight);
    font-weight: var(--smalltext-fontweight);
    letter-spacing: var(--smalltext-letterspacing);
    z-index: 10;
    height: auto;
}

.object .fill-crop__caption--truncate {
    height: var(--smalltext-lineheight);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.fill-crop__caption--bottom {
    bottom: calc(var(--gap-m) * 0.8);
}

.object .fill-crop__caption--h2 {
    height: auto;
    font-size: var(--h2-fontsize);
    line-height: var(--h2-lineheight);
    font-weight: var(--h2-fontweight);
    letter-spacing: var(--h2-letterspacing);
}

.object .fill-crop__caption--h3 {
    height: auto;
    font-size: var(--h3-fontsize);
    line-height: var(--h3-lineheight);
    font-weight: var(--h3-fontweight);
    letter-spacing: var(--h3-letterspacing);
    max-width: 20ch;
}

.fill-crop__caption--left-align {
    text-align: left !important;
}

.fill-crop__caption--ivory {
    color: var(--ivory);
}

/* #endregion */

/* #region Object images */

.object--centered {
    display: flex;
    justify-content: center;
    align-items: center;
}

.object__image {
    max-width: 100%;
    display: block;
}

@media (max-width: 768px)  {
    .object--testimonial-logo-container {
        border: 0;
        justify-content: left;
    }
}

.object__image--testimonial-logo {
    width: clamp(50%, 18rem, 70%);
    aspect-ratio: 16 / 9;
    object-fit: contain;
    object-position: 50% 43%;
    margin: var(--gap-m);
}

.object__image--testimonial-logo--middle {
    object-position: 50% 50%;
}

@media (max-width: 768px)  {
    .object__image--testimonial-logo,
    .object__image--testimonial-logo--middle
    {
        width: clamp(33%, 15rem, 50%);
        aspect-ratio: 16 / 9;
        object-position: left center;
        margin: 0;
    }
}

/* #endregion */

/* #region Layout for columns */

.layout--2col {
    grid-template-columns: repeat(2, 1fr);
}

.layout--2col-40-60 {
    grid-template-columns: 2fr 3fr;
}

.layout--2col-60-40 {
    grid-template-columns: 3fr 2fr;
}

.layout--2col-45-55 {
    grid-template-columns: 45fr 55fr;
}

.layout--2col-55-45 {
    grid-template-columns: 55fr 45fr;
}

.layout--2col-33-66 {
    grid-template-columns: 1fr 2fr;
}

.layout--2col-66-33 {
    grid-template-columns: 2fr 1fr;
}

.layout--2col-75-25 {
    grid-template-columns: 3fr 1fr;
}

.layout--3col {
    grid-template-columns: repeat(3, 1fr);
}

.layout--3col-45-27-27 {
    grid-template-columns: 45fr 27.5fr 27.5fr;
}

.layout--3col-50-25-25 {
    grid-template-columns: 2fr 1fr 1fr;
}

.layout--3col-66-16-16 {
    grid-template-columns: 4fr 1fr 1fr;
}

.layout--4col {
    grid-template-columns: repeat(4, 1fr);
}

.layout--4col > * {
    min-width: 0;
}

.layout--5col {
    grid-template-columns: repeat(5, 1fr);
}

.layout--16pc,
.layout--6col {
    grid-template-columns: repeat(6, 1fr);
}


/* #endregion */

/* #region mini-hero */

.section--with-mini-hero,
.main .section.section--with-mini-hero:first-child {
    padding-top: 0;
    margin-top: 0;
}

.section--with-mini-hero > * {
    position: relative;
    z-index: 1;
}

.section--with-mini-hero > .header {
    z-index: 20;
}

.section--with-mini-hero + .section--background-charcoal {
    margin-top: 0;
}

@media (max-width: 480px) {
    .section--with-mini-hero + .section--background-charcoal {
        padding-top: 0;
    }
}

.object--mini-hero {
    padding-top: calc(var(--gap-xl) * 2.00);
    padding-bottom: calc(var(--gap-l) * 1.00);
    padding-bottom: 0;
}

@media (max-width: 480px) {
    .object--mini-hero {
        padding-top: calc(var(--gap-xl) * 4.00);
        padding-bottom: var(--gap-l);
    }
}

.fill-crop--mini-hero-background {
    position: absolute;
    left: 0;
    top: 0;
    z-index: 0;
    pointer-events: none;
}

.fill-crop--mini-hero-background:after {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    content: " ";
    background-image: linear-gradient(
        180deg, 
        hsla(0, 0%, 0%, 0.70) calc(var(--gap-m) * 1.8), 
        hsla(0, 0%, 0%, 0.00) calc(var(--gap-xl) * 2.5),
        hsla(152, 6%, 16%, 1.00) 100%
    );
    z-index: 2;
}

.fill-crop--mini-hero-background--left-darker-1:before,
.fill-crop--mini-hero-background--left-darker-2:before {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    content: " ";
    z-index: 1;
}

.fill-crop--mini-hero-background--left-darker-1:before {
    background-image: linear-gradient(90deg, hsla(0, 0%, 0%, 0.50) 25%, hsla(0, 0%, 0%, 0.00) 80%);  
}

.fill-crop--mini-hero-background--left-darker-2:before {
    background-image: linear-gradient(90deg, hsla(0, 0%, 0%, 0.80) 15%, hsla(0, 0%, 0%, 0.00) 80%);  
}

@media (max-width: 768px) {
    .fill-crop--mini-hero-background:after {
        background-image: linear-gradient(
            180deg, 
            hsla(152, 0%, 0%, 0.80) 15%, 
            hsla(152, 6%, 16%, 0.25) 45%, 
            hsla(152, 6%, 16%, 0.35) 50%, 
            hsla(152, 6%, 16%, 1.00) 100%
        );  
    }

    .fill-crop--mini-hero-background--left-darker-1:before,
    .fill-crop--mini-hero-background--left-darker-2:before {
        display: none;
    }
}

/* #endregion */

/* #region Buttons */

.button {
    display: inline-block;
    text-decoration: none;
    min-height: var(--button-height);
    font-size: var(--bodytext-size);
    font-weight: var(--bodytext-weight);
    letter-spacing: var(--bodytext-letterspacing);
    line-height: calc(var(--button-height) - (var(--border-width) * 2)) !important;
    border: var(--border-width) var(--stone) solid;
    padding: 0 var(--button-horizontal-padding);
    border-radius: var(--box-radius);
    transition: opacity 0.5s, color 0.5s, border-color 0.5s;

}

.button--outline-clay {
    background-color: transparent;
    border-color: var(--clay);
    color: var(--clay-lighten-1) !important;
}

.button--outline-clay:hover {
    color: var(--clay-lighten-2) !important;
    border-color: currentColor;
}

.button--outline-stone {
    background-color: transparent;
    border-color: var(--stone);
    color: var(--stone) !important;
}

.button--outline-ivory {
    background-color: transparent;
    border-color: var(--ivory);
    color: var(--ivory) !important;
}

.button--outline-ivory:hover {
    opacity: 0.5;
}

.button--outline-charcoal {
    background-color: transparent;
    border-color: var(--charcoal);
    color: var(--charcoal) !important;
}

.button--outline-ivory:hover {
    opacity: 0.5;
}

.button--outline-stone:hover {
    color: var(--stone-lighten-2) !important;
    border-color: currentColor;
}

.button--outline-forest {
    background-color: transparent;
    border-color: var(--forest);
    color: var(--forest) !important;
}

.button--outline-forest-faded {
    background-color: transparent;
    color: var(--forest-faded-on-stone) !important;
    border-color: currentColor;
}

.button--outline-forest-faded:hover {
    color: var(--forest) !important;
}

.button--outline-forest:hover {
    opacity: 0.5;
}

.button--bg-forest {
    background-color: var(--clay);
    color: var(--ivory);
}

/* #endregion */

/* #region Responsive */

@media (max-width: 1024px) {
    :root {
        --max-width: calc(100vw - 6rem);

        --gap-l: 4rem;
        --gap-xl: 6rem;
    }

    html {
        --smalltext-size: calc(var(--bodytext-size) * 1);
    }
}

@media (max-width: 768px)  {
    :root {
        --max-width: calc(100vw - 3rem);

        --gap-xs: 0.5rem;
        --gap-s: 1.25rem;
        --gap-m: 2rem;
        --gap-n: 3rem;
        --gap-l: 5rem;
        --gap-xl: 8rem;
    }

    html {
        --h1-fontsize: clamp(2rem, calc(var(--bodytext-size) * 3.5), 7.75vw);

        --hero-fontsize: 8.2vw;
        --hero-lineheight: calc(var(--hero-fontsize) * 1.15);
    }

    .layout {
        grid-template-columns: repeat(1, 1fr);
    }

    .mobile-space--before {
        margin-top: var(--gap-m);
    }

    .mobile-space--after {
        margin-bottom: var(--gap-m);
    }

    .object--span-2 {
        grid-column: span 1;
    }
}

@media (max-width: 480px) {
    :root {
        --max-width: calc(100vw - (var(--gap-m) * 2));

        --gap-m: var(--bodytext-lineheight);
        --gap-l: 6rem;
        --gap-xl: 6rem;
    }

    html {      
        font-size: clamp(11px, 0.95vw, 13px);

        --bodytext-weight: 500;
        --bodytext-letterspacing: 0.002rem;
        --bodytext-lineheight: 2.05rem;

        --h2-fontsize: max(7.9vw, 2.5rem);
        --h2-lineheight: calc(var(--h2-fontsize) * 1.15);

        --h1-fontsize: var(--h2-fontsize);
        --h1-lineheight: var(--h2-lineheight);
        --h1-fontweight: var(--h2-fontweight);
        --h1-letterspacing: var(--h2-letterspacing);

        --hero-fontsize: var(--h2-fontsize);
        --hero-lineheight: var(--h2-lineheight);
        --hero-fontweight: var(--h2-fontweight);
        --hero-letterspacing: var(--h2-letterspacing);
    }

    .layout--mobile-2col {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* #endregion */

/* #region Header */

:root {
    --dropdown-duration: 200ms;
    --dropdown-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
}

.header {
    width: 100%;
}

.header__row {
    max-width: var(--max-width);
    margin: 0 auto;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    padding: var(--gap-n) 0 1rem 0;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap-m);
}

@media (max-width: 767px)  {
    .header__row {
        padding-top: var(--mobile-pre-header-gap);
    }
}

.menu {
    flex-grow: 0;
}

@media (max-width: 767px)  {
    .menu {
        display: none;
    }
}

.logo {
    flex-grow: 0;
    font-size: 0;
    padding-bottom: 0.5rem;
}

.logo__link {
    transition: opacity 0.6s;
}

.logo__link:hover {
    opacity: 0.65;
}

.logo__img {
    height: 4.25rem;
}

.menu__list {
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--gap-m);
    align-items: center;
}

@media (max-width: 767px)  {
    .menu__list {
        gap: var(--gap-s);
        /* justify-content: center; */
    }
}

.menu__item {
    display: block;
    margin: 0;
    padding: 0;
    font-size: var(--bodytext-size);
    line-height: var(--bodytext-lineheight);
}

.menu__link {
    display: block;
    text-decoration: none;
    color: var(--ivory);
    font-size: var(--bodytext-size);
    line-height: var(--bodytext-lineheight);
    font-weight: var(--bodytext-weight);
    letter-spacing: var(--bodytext-letterspacing);
    transition: color 0.4s;
}

.menu__link:hover {
    color: var(--ivory-darken-3);
}

.menu__link .icon {
    transition: opacity 0.4s;
}

.menu__link .icon:hover {
    opacity: 0.6;
}

/* #endregion */

/* #region Drop-down menu */

.menu__item--has-dropdown {
    position: relative;
}

.menu__button {
    background: none;
    border: 0;
    appearance: none;
    padding: 0;
    color: inherit;
    font: inherit;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    cursor: pointer;
}

.menu__button:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 4px;
}

.menu__arrow {
    width: 0.5rem;
    height: 0.5rem;
    border-right: var(--border-width) solid currentColor;
    border-bottom: var(--border-width) solid currentColor;
    transform: rotate(45deg);
    transition: transform var(--dropdown-duration) var(--dropdown-ease), margin var(--dropdown-duration) var(--dropdown-ease);
    margin-top: calc(var(--bodytext-size) * -0.15);
    margin-left: calc(var(--bodytext-size) * 0.25);
    margin-right: calc(var(--bodytext-size) * -0.30);
    display: inline-block;
}

.menu__button:hover .menu__arrow {
    transform: rotate(45deg);
}

.menu__item--has-dropdown.is-open .menu__arrow {
    transform: translateY(calc(var(--bodytext-size) * 0.010)) rotate(225deg);
    margin-top: calc(var(--bodytext-size) * 0.15);
}

.menu__dropdown {
    list-style: none;
    margin: 0;
    margin-left: calc(var(--gap-m) * -1);
    padding: calc(var(--gap-m) * 0.5);
    position: absolute;
    top: calc(100% + var(--gap-s));
    left: 0;
    min-width: clamp(15ch, 30ch, 33vw);
    background: var(--ivory);
    color: var(--forest);
    box-shadow: 0 0.75rem 1.6rem rgba(0, 0, 0, 0.18);
    border-radius: var(--box-radius);
    opacity: 0;
    transform: translateY(calc(var(--gap-m) * -2)) scale(1.0, 0.75);
    visibility: hidden;
    pointer-events: none;
    transition: opacity var(--dropdown-duration) var(--dropdown-ease), transform var(--dropdown-duration) var(--dropdown-ease), visibility var(--dropdown-duration) var(--dropdown-ease);
    z-index: 30;
    box-shadow: 0 var(--gap-l) var(--gap-l) var(--forest-fade-50), 0 0 var(--border-width) var(--forest-fade-50);
}

.menu__item--has-dropdown.is-open .menu__dropdown {
    opacity: 1;
    transform: translateY(0) scale(1.0, 1.0);
    visibility: visible;
    pointer-events: auto;
}

.menu__dropdown:after {
    --menu-triangle-size: calc(var(--gap-s) * 0.9);
    position: absolute;
    left: 0;
    top: 0;
    content: " ";
    background: var(--ivory);
    width: var(--menu-triangle-size);
    aspect-ratio: 1 / 1;
    transform: rotate(45deg);
    margin-left: calc((var(--bodytext-size) * 1.6) + var(--gap-m) + (var(--menu-triangle-size) * 0.5));
    margin-top: calc(var(--menu-triangle-size) * -0.43);
    border-radius: calc(var(--box-radius) * 0.35);
}

.menu__dropdown-item {
    margin: 0;
    padding: 0;
}

.menu__dropdown-link {
    display: block;
    color: var(--charcoal);
    text-decoration: none;
    font-size: var(--bodytext-size);
    line-height: var(--button-height);
    letter-spacing: var(--bodytext-letterspacing);
    font-weight: var(--bodytext-weight);
    background-color: var(--ivory);
    border-radius: var(--box-radius);
    /* transition: color 0.5s, background-color 0.3s; */
    padding: 0 calc(var(--gap-m) * 0.5);
    white-space: nowrap;
    text-overflow: ellipsis;
}

.menu__dropdown-link:hover,
.menu__dropdown-link:focus-visible {
    outline: none;
    background-color: var(--ivory-darken-0);
    color: var(--clay-darken-1);
}

/* #endregion */

/* #region Mobile menu */

.mobile-nav {
    display: none;
    margin-left: auto;
    flex-shrink: 0;
}

.mobile-nav__toggle {
    background: none;
    border: 0;
    appearance: none;
    width: 4.25rem;
    height: 4.25rem;
    min-width: 56px;
    min-height: 56px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    color: var(--ivory);
    border-radius: var(--box-radius);
    position: relative;
    z-index: 200;
}

.mobile-nav__toggle:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 4px;
}

.mobile-nav__icon {
    position: relative;
    width: 32px;
    height: 22px;
    display: block;
    transform: translateY(-2px);
}

.mobile-nav__line {
    position: absolute;
    left: 0;
    width: 100%;
    height: 3px;
    background: currentColor;
    border-radius: 999px;
    transition: transform 200ms var(--dropdown-ease), opacity 180ms var(--dropdown-ease);
}

.mobile-nav__line:nth-child(1) {
    top: 0;
}

.mobile-nav__line:nth-child(2) {
    top: 9px;
}

.mobile-nav__line:nth-child(3) {
    top: 18px;
}

.is-menu-open .mobile-nav__line:nth-child(1) {
    transform: translateY(9px) rotate(45deg);
}

.is-menu-open .mobile-nav__line:nth-child(2) {
    opacity: 0;
}

.is-menu-open .mobile-nav__line:nth-child(3) {
    transform: translateY(-9px) rotate(-45deg);
}

@media (max-width: 767px)  {
    .mobile-nav {
        display: block;
    }

    .mobile-nav__toggle {
        margin-right: calc(var(--gap-s) * -1);
    }
}

body.is-menu-open {
    overflow: hidden;
}

.mobile-menu {
    display: none;
}

@media (max-width: 767px)  {
    .mobile-menu {
        display: block;
        position: fixed;
        inset: 0;
        padding: calc(var(--mobile-pre-header-gap) + 0.5rem) var(--gap-m) var(--gap-l) var(--gap-m);
        background: var(--forest);
        color: var(--ivory);
        transform: translateY(-12%);
        opacity: 0;
        visibility: hidden;
        transition: transform 240ms var(--dropdown-ease), opacity 240ms var(--dropdown-ease), visibility 240ms var(--dropdown-ease);
        pointer-events: none;
        z-index: 100;
        overflow-y: auto;
    }
}

.is-menu-open .mobile-menu {
    transform: translateY(0);
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.mobile-menu__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--gap-s);
    max-width: 24rem;
    text-align: left;
}

.mobile-menu__item {
    width: 100%;
}

.mobile-menu__link {
    display: block;
    text-decoration: none;
    color: var(--clay);
    font-size: var(--h3-fontsize);
    line-height: var(--h3-lineheight);
    font-weight: var(--h3-fontweight);
    letter-spacing: var(--h3-letterspacing);
}

.mobile-menu__link:hover,
.mobile-menu__link:focus-visible {
    color: var(--ivory-darken-1);
    outline: none;
}

@media (min-width: 768px)  {
    .mobile-nav,
    .mobile-menu {
        display: none !important;
    }
}

/* #endregion */

/* #region Footer */

.footer {
    padding: var(--gap-xl) 0;
}

.footer__grid {
    width: var(--max-width);
    margin: 0 auto;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
}

.footer__logo, .footer__logolink, .footer__logoimg {
    height: 3rem;
}

.footer__logo {
    font-size: 0;
}

.footer__logolink {
    display: inline-block;
    font-size: 0;
    transition: opacity 0.4s;
}

.footer__logolink:hover {
    opacity: 0.5;
}

.footer__logoimg {
    display: block;
}

.footer__logoflex {
    display: flex;
    flex-direction: column;
    gap: var(--gap-s);
}

.footer .layout + .layout {
    margin-top: var(--gap-l);
}

.footer__pitch-flex {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: var(--gap-m);
}

.footer__pitchheading {
    color: var(--stone);
}

.footer__social {
    display: flex;
    flex-direction: row;
    gap: var(--gap-s);
    flex-wrap: wrap;
    align-items: center;
}

.footer__smallprint {
    font-size: var(--smalltext-size);
    line-height: var(--smalltext-lineheight);
    font-weight: var(--smalltext-weight);
    letter-spacing: var(--smalltext-letterspacing);;
    color: var(--stone);
}

.footer__social__logo {
    font-size: 0;
    transition: opacity 0.5s;
}

.footer__social__logo:hover {
    opacity: 0.5;
}

@media (max-width: 768px)  {
    .footer__sitemap {
        gap: var(--gap-s) !important;
    }
}

.footer__col {
    min-width: 0;
}

.footer__items {
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gap-xs);
}

@media (max-width: 768px)  {
    .footer__items {
        gap: var(--gap-s);
    }
}

.footer__item {
    margin: 0;
    padding: 0;
    display: block;
    font-size: var(--smalltext-size);
    line-height: var(--smalltext-lineheight);
    font-weight: var(--smalltext-weight);
    letter-spacing: var(--smalltext-letterspacing);;
    max-width: 100%;
    height: var(--smalltext-lineheight);
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
}

.footer__link {
    color: var(--stone);
    text-decoration: none;
    transition: color 0.4s;
}

.footer__link:hover {
    color: var(--stone-darken-3);
}

/* #endregion */

/* #region Icons */

.icon {
    width: 1.5rem;
    height: 1.5rem;
    background-size: contain;
    background-position: center center;
    display: block;
    position: relative;
}

.icon--small {
    width: 1.35rem;
    height: 1.35rem;
}

.icon--email-white {
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjZmZmZmZmIj48cGF0aCBkPSJNMTYwLTE2MHEtMzMgMC01Ni41LTIzLjVUODAtMjQwdi00ODBxMC0zMyAyMy41LTU2LjVUMTYwLTgwMGg2NDBxMzMgMCA1Ni41IDIzLjVUODgwLTcyMHY0ODBxMCAzMy0yMy41IDU2LjVUODAwLTE2MEgxNjBabTMyMC0yODAgMzIwLTIwMHYtODBMNDgwLTUyMCAxNjAtNzIwdjgwbDMyMCAyMDBaIi8+PC9zdmc+);
}

.icon--email-stone {
    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIEFkb2JlIElsbHVzdHJhdG9yIDI5LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSI3MnB4IiBoZWlnaHQ9IjcycHgiIHZpZXdCb3g9IjAgMCA3MiA3MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNzIgNzI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojQURBODlGO30KPC9zdHlsZT4KPGc+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTM4LjUsNDMuNGwtMC4yLDAuMWMtMC4xLDAuMS0wLjIsMC4xLTAuMywwLjFjLTAuNCwwLjItMC45LDAuMy0xLjMsMC40Yy0wLjIsMC0wLjQsMC0wLjcsMHMtMC40LDAtMC43LDAKCQkJCWMtMC41LTAuMS0wLjktMC4yLTEuMy0wLjRjLTAuMi0wLjEtMC4zLTAuMS0wLjUtMC4yTDAsMjUuNlY2NGMwLDQuNCwzLjYsOCw4LDhoNTZjNC40LDAsOC0zLjYsOC04VjI1LjZMMzguNSw0My40eiIvPgoJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzYsMzMuOGwzNi0xOS4xVjhjMC00LjQtMy42LTgtOC04SDhDMy42LDAsMCwzLjYsMCw4djYuN0wzNiwzMy44eiIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8L3N2Zz4K);
}
.icon--linkedin-white {
    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8c3ZnIGhlaWdodD0iODAwcHgiIHdpZHRoPSI4MDBweCIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgCgkgdmlld0JveD0iMCAwIDM4MiAzODIiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBzdHlsZT0iZmlsbDojRkZGRkZGOyIgZD0iTTM0Ny40NDUsMEgzNC41NTVDMTUuNDcxLDAsMCwxNS40NzEsMCwzNC41NTV2MzEyLjg4OUMwLDM2Ni41MjksMTUuNDcxLDM4MiwzNC41NTUsMzgyaDMxMi44ODkKCUMzNjYuNTI5LDM4MiwzODIsMzY2LjUyOSwzODIsMzQ3LjQ0NFYzNC41NTVDMzgyLDE1LjQ3MSwzNjYuNTI5LDAsMzQ3LjQ0NSwweiBNMTE4LjIwNywzMjkuODQ0YzAsNS41NTQtNC41MDIsMTAuMDU2LTEwLjA1NiwxMC4wNTYKCUg2NS4zNDVjLTUuNTU0LDAtMTAuMDU2LTQuNTAyLTEwLjA1Ni0xMC4wNTZWMTUwLjQwM2MwLTUuNTU0LDQuNTAyLTEwLjA1NiwxMC4wNTYtMTAuMDU2aDQyLjgwNgoJYzUuNTU0LDAsMTAuMDU2LDQuNTAyLDEwLjA1NiwxMC4wNTZWMzI5Ljg0NHogTTg2Ljc0OCwxMjMuNDMyYy0yMi40NTksMC00MC42NjYtMTguMjA3LTQwLjY2Ni00MC42NjZTNjQuMjg5LDQyLjEsODYuNzQ4LDQyLjEKCXM0MC42NjYsMTguMjA3LDQwLjY2Niw0MC42NjZTMTA5LjIwOCwxMjMuNDMyLDg2Ljc0OCwxMjMuNDMyeiBNMzQxLjkxLDMzMC42NTRjMCw1LjEwNi00LjE0LDkuMjQ2LTkuMjQ2LDkuMjQ2SDI4Ni43MwoJYy01LjEwNiwwLTkuMjQ2LTQuMTQtOS4yNDYtOS4yNDZ2LTg0LjE2OGMwLTEyLjU1NiwzLjY4My01NS4wMjEtMzIuODEzLTU1LjAyMWMtMjguMzA5LDAtMzQuMDUxLDI5LjA2Ni0zNS4yMDQsNDIuMTF2OTcuMDc5CgljMCw1LjEwNi00LjEzOSw5LjI0Ni05LjI0Niw5LjI0NmgtNDQuNDI2Yy01LjEwNiwwLTkuMjQ2LTQuMTQtOS4yNDYtOS4yNDZWMTQ5LjU5M2MwLTUuMTA2LDQuMTQtOS4yNDYsOS4yNDYtOS4yNDZoNDQuNDI2CgljNS4xMDYsMCw5LjI0Niw0LjE0LDkuMjQ2LDkuMjQ2djE1LjY1NWMxMC40OTctMTUuNzUzLDI2LjA5Ny0yNy45MTIsNTkuMzEyLTI3LjkxMmM3My41NTIsMCw3My4xMzEsNjguNzE2LDczLjEzMSwxMDYuNDcyCglMMzQxLjkxLDMzMC42NTRMMzQxLjkxLDMzMC42NTR6Ii8+Cjwvc3ZnPg==);
}

.icon--linkedin-stone {
    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8c3ZnIGhlaWdodD0iODAwcHgiIHdpZHRoPSI4MDBweCIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgCgkgdmlld0JveD0iMCAwIDM4MiAzODIiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBzdHlsZT0iZmlsbDojYWRhODlmOyIgZD0iTTM0Ny40NDUsMEgzNC41NTVDMTUuNDcxLDAsMCwxNS40NzEsMCwzNC41NTV2MzEyLjg4OUMwLDM2Ni41MjksMTUuNDcxLDM4MiwzNC41NTUsMzgyaDMxMi44ODkKCUMzNjYuNTI5LDM4MiwzODIsMzY2LjUyOSwzODIsMzQ3LjQ0NFYzNC41NTVDMzgyLDE1LjQ3MSwzNjYuNTI5LDAsMzQ3LjQ0NSwweiBNMTE4LjIwNywzMjkuODQ0YzAsNS41NTQtNC41MDIsMTAuMDU2LTEwLjA1NiwxMC4wNTYKCUg2NS4zNDVjLTUuNTU0LDAtMTAuMDU2LTQuNTAyLTEwLjA1Ni0xMC4wNTZWMTUwLjQwM2MwLTUuNTU0LDQuNTAyLTEwLjA1NiwxMC4wNTYtMTAuMDU2aDQyLjgwNgoJYzUuNTU0LDAsMTAuMDU2LDQuNTAyLDEwLjA1NiwxMC4wNTZWMzI5Ljg0NHogTTg2Ljc0OCwxMjMuNDMyYy0yMi40NTksMC00MC42NjYtMTguMjA3LTQwLjY2Ni00MC42NjZTNjQuMjg5LDQyLjEsODYuNzQ4LDQyLjEKCXM0MC42NjYsMTguMjA3LDQwLjY2Niw0MC42NjZTMTA5LjIwOCwxMjMuNDMyLDg2Ljc0OCwxMjMuNDMyeiBNMzQxLjkxLDMzMC42NTRjMCw1LjEwNi00LjE0LDkuMjQ2LTkuMjQ2LDkuMjQ2SDI4Ni43MwoJYy01LjEwNiwwLTkuMjQ2LTQuMTQtOS4yNDYtOS4yNDZ2LTg0LjE2OGMwLTEyLjU1NiwzLjY4My01NS4wMjEtMzIuODEzLTU1LjAyMWMtMjguMzA5LDAtMzQuMDUxLDI5LjA2Ni0zNS4yMDQsNDIuMTF2OTcuMDc5CgljMCw1LjEwNi00LjEzOSw5LjI0Ni05LjI0Niw5LjI0NmgtNDQuNDI2Yy01LjEwNiwwLTkuMjQ2LTQuMTQtOS4yNDYtOS4yNDZWMTQ5LjU5M2MwLTUuMTA2LDQuMTQtOS4yNDYsOS4yNDYtOS4yNDZoNDQuNDI2CgljNS4xMDYsMCw5LjI0Niw0LjE0LDkuMjQ2LDkuMjQ2djE1LjY1NWMxMC40OTctMTUuNzUzLDI2LjA5Ny0yNy45MTIsNTkuMzEyLTI3LjkxMmM3My41NTIsMCw3My4xMzEsNjguNzE2LDczLjEzMSwxMDYuNDcyCglMMzQxLjkxLDMzMC42NTRMMzQxLjkxLDMzMC42NTR6Ii8+Cjwvc3ZnPg==);
}

/* #endregion */

/* #region Cookie consent */

.cookieconsent-overlay {
    position: fixed;
    inset: 0;
    background: linear-gradient(0deg, hsla(160, 45%, 7%, 0.8) 20%, hsla(160, 45%, 7%, 0) 40%);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.8s ease;
    z-index: 9998;
}

.cookieconsent-overlay--visible {
    opacity: 1;
}

.cc-window {
    font-family: inherit !important;
    font-size: var(--smalltext-size) !important;
    line-height: var(--smalltext-lineheight) !important;
    font-weight: var(--smalltext-weight) !important;
    letter-spacing: var(--smalltext-letterspacing) !important;
}

.cc-window.cc-floating {
    width: min(32rem, calc(100vw - 2rem)) !important;
    max-width: calc(100vw - 2rem) !important;
    border-radius: var(--box-radius);
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
    background-color: var(--forest) !important;
    background-color: var(--clay) !important;
    color: var(--ivory);
    left: calc((100vw - var(--max-width)) / 2) !important;
    right: auto;
    bottom: 0;
    padding: var(--gap-m) !important;
    padding-top: calc(var(--gap-m) * 0.80) !important;
    padding-bottom: calc(var(--gap-m) * 0.90) !important;
    opacity: 0;
    transform: translateY(100%);
    animation: cookieconsent-slide-up 0.4s ease-out forwards;
    z-index: 9999;
}

@media (max-width: 768px)  {
    .cc-window.cc-floating {
        width: var(--max-width) !important;
    }
}

.cc-window.cc-floating.cookieconsent--closing {
    animation: cookieconsent-slide-down 0.35s ease-in forwards;
}

.cc-floating .cc-message {
    color: var(--ivory);
    margin-bottom: var(--gap-s) !important;
}

.cc-window .cc-compliance {
    display: flex !important;
    justify-content: flex-start !important;
    width: 100%;
    text-align: left !important;
}

.cc-window .cc-link {
    color: var(--ivory) !important;
    padding: 0 !important;
}

.cc-floating .cc-btn {
    border-radius: var(--box-radius)  !important;
    box-shadow: 0 0 0 var(--border-width) inset var(--ivory);
    min-height: var(--button-height)  !important;
    line-height: calc(var(--button-height) - (var(--border-width) * 2)) !important;
    padding: 0 var(--button-horizontal-padding) !important;
    background-color: transparent !important;
    /* background-color: var(--ivory) !important; */
    margin-left: 0 !important;
    color: var(--ivory) !important;
    font-size: var(--bodytext-size) !important;
    font-weight: var(--bodytext-weight) !important;
    letter-spacing: var(--bodytext-letterspacing) !important;
    transition: background-color 0.25s, color 0.25s, opacity 0.25s;
    flex-grow: 0 !important;
    min-width: auto !important;
    white-space: nowrap;
}

.cc-floating .cc-btn:hover,
.cc-floating .cc-btn:focus {
    opacity: 0.6;
}

@keyframes cookieconsent-slide-up {
    from {
        transform: translateY(100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes cookieconsent-slide-down {
    from {
        transform: translateY(0);
        opacity: 1;
    }
    to {
        transform: translateY(100%);
        opacity: 0;
    }
}

/* #endregion */

/* #region Hero */

.layout--hero {
    min-height: clamp(38rem, 88vh, 65rem);
    align-items: center;
    padding: var(--gap-l) 0 var(--gap-xl) 0;
}

@media (max-width: 480px)  {
    .layout--hero {
        min-height: clamp(32rem, 75vh, 46rem);
        padding-top: var(--gap-l);
        margin-bottom: var(--gap-l);
        padding-bottom: 0;
    }
}

.hero__elements {
    display: flex;
    flex-direction: column;
    gap: var(--gap-m);
    align-items: center;
}

.hero__h1 {
    font-size: var(--hero-fontsize);
    line-height: var(--hero-lineheight);
    font-weight: var(--hero-fontweight);
    letter-spacing: var(--hero-letterspacing);
    margin: 0 -0.5rem;
    padding: 0;
    text-align: center;
}

@media (max-width: 768px)  {
    .hero__h1 {
        margin: 0 -1.5rem;
    }
}

.hero__explainer {
    max-width: 40ch;
    color: var(--ivory-darken-1);
    text-align: center;
}

@media (max-width: 480px)  {
    .hero__explainer {
        max-width: 30ch;
    }
}

.hero__explainer * {
    margin: 0;
}

.hero__buttons--shadow {
    background-color: var(--forest-fade-50);
    box-shadow: 0 5px 20px 15px var(--forest-fade-50);
}

.section--background-photo {
    background-size: 140%;
    background-position: center center;
    background-repeat: no-repeat;
    max-width: 150rem;
    margin: 0 auto;
}

.section--background-photo--road {
    background-image: 
        linear-gradient(
            180deg, 
            hsla(152, 6%, 16%, 1.00) calc(var(--gap-m) * 1.5),
            hsla(152, 6%, 16%, 0.00) 15%, 
            hsla(152, 6%, 16%, 0.00) 50%, 
            hsla(152, 6%, 16%, 1.00) 100%
        ), 
        url(../images/hero/aerial-crop.jpg);
    background-position: 50% 90%;
}

@media (max-width: 1024px)  {
    .section--background-photo--road {
        background-size: cover;
        background-position: 80% 100%;
    }
}

@media (max-width: 480px)  {
    .section--background-photo--road {
        background-position: 80% 100%;
    }
}

.main .section.section--background-photo:first-child {
    margin-top: 0;
}

.main .section.section--background-photo + .section {
    margin-top: 0;
}

/* #endregion */

/* #region Client logos */

.client-logo-line {
    width: 100%;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    gap: var(--gap-s);
    font-size: 0;
    flex-wrap: wrap;
    --client-logo-width: min(25vw, 12rem);
}

@media (max-width: 1024px)  {
    .client-logo-line {
        gap: var(--gap-xs) var(--gap-m);
        --client-logo-width: 20vw;
    }
}

@media (max-width: 480px)  {
    .client-logo-line {
        justify-content: center;
        gap: var(--gap-xs) var(--gap-n);
    }
}

.client-logo {
    width: var(--client-logo-width);
    font-size: 0;
    aspect-ratio: 16 / 8;
    position: relative;
    flex-shrink: 1;
}

.client-logo--sq {
    width: calc(var(--client-logo-width) * 0.55);
    aspect-ratio: 1 / 1;
}

.client-logo__img {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center center;
    font-size: 0;
}

/* #endregion */

/* #region Typography */

.h2 {
    margin: 0;
    padding: 0;
    font-size: var(--h2-fontsize);
    line-height: var(--h2-lineheight);
    font-weight: var(--h2-fontweight);
    letter-spacing: var(--h2-letterspacing);
    display: block;
}

.h2--22ch {
    max-width: 22ch;
}

.h2--clay {
    color: var(--clay);
}

.abstract {
    font-size: var(--bodytext-size);
    line-height: var(--bodytext-lineheight);
    font-weight: var(--bodytext-weight);
    letter-spacing: var(--bodytext-letterspacing);
    max-width: 55ch;
}

.abstract--clay {
    color: var(--clay);
}

.testimonial-quote {
    --quote-size: calc(var(--bodytext-lineheight) * 1.5);
    --quote-offset: calc(var(--quote-size) * 0.045);
    position: relative;
    display: block;
    padding: 0 calc(var(--quote-size) + var(--gap-xs)) !important;
}

@media (max-width: 480px)  {
    .testimonial-quote {
        --quote-size: calc(var(--bodytext-lineheight) * 1.0);
        --quote-offset: calc(var(--quote-size) * 0.085);
    }
}

.testimonial-quote:before,
.testimonial-quote:after {
    position: absolute;
    content: " ";
    width: var(--quote-size);
    aspect-ratio: 1 / 1;
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMSIgZmlsbD0iIzlmNzM2NSIgc3Ryb2tlPSJub25lIiBjbGFzcz0iYmkgYmktcXVvdGUiIHZpZXdCb3g9IjIgMiAxMiAxMSI+CiAgPHBhdGggZD0iTTEyIDEyYTEgMSAwIDAgMCAxLTFWOC41NThhMSAxIDAgMCAwLTEtMWgtMS4zODhxMC0uNTI3LjA2Mi0xLjA1NC4wOTMtLjU1OC4zMS0uOTkydC41NTktLjY4M3EuMzQtLjI3OS44NjgtLjI3OVYzcS0uODY4IDAtMS41Mi4zNzJhMy4zIDMuMyAwIDAgMC0xLjA4NS45OTIgNC45IDQuOSAwIDAgMC0uNjIgMS40NThBNy43IDcuNyAwIDAgMCA5IDcuNTU4VjExYTEgMSAwIDAgMCAxIDF6bS02IDBhMSAxIDAgMCAwIDEtMVY4LjU1OGExIDEgMCAwIDAtMS0xSDQuNjEycTAtLjUyNy4wNjItMS4wNTQuMDk0LS41NTguMzEtLjk5Mi4yMTctLjQzNC41NTktLjY4My4zNC0uMjc5Ljg2OC0uMjc5VjNxLS44NjggMC0xLjUyLjM3MmEzLjMgMy4zIDAgMCAwLTEuMDg1Ljk5MiA0LjkgNC45IDAgMCAwLS42MiAxLjQ1OEE3LjcgNy43IDAgMCAwIDMgNy41NThWMTFhMSAxIDAgMCAwIDEgMXoiLz4KPC9zdmc+);
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center center;
    display: inline-block;
}

.article--forest .testimonial-quote:before,
.article--forest .testimonial-quote:after {
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMSIgZmlsbD0iIzBhMWExNSIgc3Ryb2tlPSJub25lIiBjbGFzcz0iYmkgYmktcXVvdGUiIHZpZXdCb3g9IjIgMiAxMiAxMSI+CiAgPHBhdGggZD0iTTEyIDEyYTEgMSAwIDAgMCAxLTFWOC41NThhMSAxIDAgMCAwLTEtMWgtMS4zODhxMC0uNTI3LjA2Mi0xLjA1NC4wOTMtLjU1OC4zMS0uOTkydC41NTktLjY4M3EuMzQtLjI3OS44NjgtLjI3OVYzcS0uODY4IDAtMS41Mi4zNzJhMy4zIDMuMyAwIDAgMC0xLjA4NS45OTIgNC45IDQuOSAwIDAgMC0uNjIgMS40NThBNy43IDcuNyAwIDAgMCA5IDcuNTU4VjExYTEgMSAwIDAgMCAxIDF6bS02IDBhMSAxIDAgMCAwIDEtMVY4LjU1OGExIDEgMCAwIDAtMS0xSDQuNjEycTAtLjUyNy4wNjItMS4wNTQuMDk0LS41NTguMzEtLjk5Mi4yMTctLjQzNC41NTktLjY4My4zNC0uMjc5Ljg2OC0uMjc5VjNxLS44NjggMC0xLjUyLjM3MmEzLjMgMy4zIDAgMCAwLTEuMDg1Ljk5MiA0LjkgNC45IDAgMCAwLS42MiAxLjQ1OEE3LjcgNy43IDAgMCAwIDMgNy41NThWMTFhMSAxIDAgMCAwIDEgMXoiLz4KPC9zdmc+);
}

.testimonial-quote:before {
    left: 0;
    top: var(--quote-offset);
}

.testimonial-quote:after {
    right: 0;
    bottom: var(--quote-offset);
    transform-origin: center center;
    transform: rotate(180deg);    
}

.text-align-right {
    text-align: right;
}


/* #endregion */

/* #region Fact box */

.testimonial-boxes + .testimonial-boxes {
    padding-top: var(--gap-l);
}

@media (max-width: 480px)  {
    .testimonial-boxes + .testimonial-boxes {
        padding-top: var(--gap-n);
    }
}

.fact-box {
    display: flex;
    flex-direction: column;
}

.fact-box__fact {
    border-color: var(--ivory-fade-40);
    border-style: solid;
    border-width: var(--border-width) 0 0 0;
    line-height: var(--button-height);
    display: relative;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fact-box .fact-box__fact:last-child {
    border-bottom-width: var(--border-width);
}

/* #endregion */

/* #region Avatar */

.avatar__flex {
    display: flex;
    flex-direction: row;
    gap: var(--gap-m);
    align-items: center;
}

@media (max-width: 480px)  {
    .avatar__flex {
        align-items: start;
    }
}

.avatar {
    --avatar-diameter: 12rem;
    position: relative;
}

@media (max-width: 480px)  {
    .avatar {
        --avatar-diameter: 7rem;
    }
}

.avatar__image,
.avatar__link,
.avatar:after {
    width: var(--avatar-diameter);
    aspect-ratio: 1 / 1;
    border-radius: calc(var(--avatar-diameter) / 2);
}

.avatar__image {
    object-fit: cover;
    object-position: top;
    display: block;
}

.avatar__link {
    position: absolute;
    left: 0;
    top: 0;
    z-index: 10;
}

.avatar:after {
    content: " ";
    position: absolute;
    left: 0;
    top: 0;
    border: var(--border-width) var(--ivory-fade-33) solid;
}

/* #endregion */

/* #region Article */

.article, .article > * {
    font-size: var(--bodytext-size);
    line-height: var(--bodytext-lineheight);
    font-weight: var(--bodytext-weight);
    letter-spacing: var(--bodytext-letterspacing);
    color: var(--ivory);
}

.article--pad {
    padding: var(--gap-m);
}

.article--line-break-before {
    border-top: var(--border-width) var(--stone) solid;
}

.article--max-60ch {
    max-width: 60ch;
    margin: 0 auto;
}

.article--background-stone {
    background-color: var(--stone);
    padding: var(--gap-m);
    border-radius: var(--box-radius);
}

.article--clay, .article--clay p {
    color: var(--clay);
}

.article--forest,
.article--forest > * {
    color: var(--forest);
}

.article--charcoal,
.article--charcoal > * {
    color: var(--charcoal);
}

.article--forest-faded > * {
    color: var(--forest-faded-on-stone);
}

.article--stone,
.article--stone > * {
    color: var(--stone);
}

.article--clay > * {
    color: var(--clay);
}

.article--align-center {
    text-align: center;
}

.article--align-center .h2--circle {
    margin: 0 auto;
}

@media (max-width: 1024px) {
    .article--dashed-horizontal-middle-charcoal:before {
        display: none;
    }
}

.article > * {
    margin: 0;
    padding: 0;
}

.article p:first-child {
    margin-top: calc(var(--bodytext-lineheight) * -0.15);
}

.article p:last-child {
    margin-bottom: calc(var(--bodytext-lineheight) * -0.20);
}

.article > * + * {
    margin-top: var(--bodytext-lineheight);
}

.article ul {
    padding-left: var(--bodytext-lineheight);
    list-style: none;
}

.article ul li {
    position: relative;
    padding-left: calc(var(--bodytext-lineheight) * 0.6);
}

.article ul li::before {
    content: "";
    position: absolute;
    left: -1.25rem;
    top: 0.8rem;
    width: 1.35rem;
    height: 0.45rem;
    background-color: var(--stone);
    border-radius: 0.225rem;
}

.article ul li + li {
    margin-top: 0;
}

.article .text-link {
    color: var(--clay-lighten-1);
    text-decoration: underline;
    text-decoration-color: var(--clay-fade-60);
    text-decoration-thickness: 0.13rem;
    text-underline-offset: 0.28rem;
    transition: color 0.2s ease, text-decoration-color 0.2s ease;
}

.article .text-link:hover,
.article .text-link:focus-visible {
    color: var(--clay-lighten-2);
    text-decoration-color: currentColor;
}

.section--background-stone .article--forest .text-link,
.object--background-stone .article--forest .text-link {
    color: var(--clay-on-stone);
    text-decoration-color: var(--clay-on-stone-fade-50);
}


.section--background-ivory .article--forest .text-link,
.object--background-ivory .article--forest .text-link {
    color: var(--clay);
    text-decoration-color: var(--clay);

}

.section--background-stone .article--forest .text-link:hover,
.section--background-stone .article--forest .text-link:focus-visible,
.object--background-stone .article--forest .text-link:hover,
.object--background-stone .article--forest .text-link:focus-visible {
    color: var(--clay-on-stone-darken-1);
    text-decoration-color: currentColor;
}

.section--background-charcoal .article--ivory .text-link,
.object--background-charcoal .article--ivory .text-link {
    color: var(--clay-lighten-2);
    text-decoration-color: var(--clay-fade-60);
}

.section--background-charcoal .article--ivory .text-link:hover,
.section--background-charcoal .article--ivory .text-link:focus-visible,
.object--background-charcoal .article--ivory .text-link:hover,
.object--background-charcoal .article--ivory .text-link:focus-visible {
    color: var(--clay-lighten-3);
    text-decoration-color: currentColor;
}

.large-para, .large-para * {
    font-size: var(--emphasized-size);
    line-height: var(--emphasized-lineheight);
    font-weight: var(--emphasized-weight);
    letter-spacing: var(--emphasized-letterspacing);
}

.large-para + .large-para {
    margin-top: var(--emphasized-lineheight);
}

.chevron-text-link {
    display: inline-block;
}

.article--clay .chevron-text-link {
    color: var(--clay-lighten-2);
}

.section--background-stone .article--forest .chevron-text-link {
    color: var(--clay-on-stone);
}

.chevron-text-link:after {
    display: inline-block;
    content: " ";
    text-decoration: none;
    height: calc(var(--bodytext-size) * 0.8);
    width: calc(var(--bodytext-size) * 0.66);
    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE5cHgiIHZpZXdCb3g9IjUgMSAxMiAxOSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjEgMjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojZDk5ZThjO30KPC9zdHlsZT4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxNS4zOCwxMC41IDEwLjEyLDE4IDcuMTIsMTggMTIuMzgsMTAuNSA3LjEyLDMgMTAuMTIsMyAiLz4KPC9zdmc+Cg==);
    background-size: contain;
    background-position: center center;
    margin-left: calc(var(--bodytext-size) * 0.15);
    vertical-align: -0.065rem;
}

.object--background-stone .article--forest .chevron-text-link:after,
.section--background-stone .article--forest .chevron-text-link:after {
    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE5cHgiIHZpZXdCb3g9IjUgMSAxMiAxOSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjEgMjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojNzk1NjQ4O30KPC9zdHlsZT4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxNS4zOCwxMC41IDEwLjEyLDE4IDcuMTIsMTggMTIuMzgsMTAuNSA3LjEyLDMgMTAuMTIsMyAiLz4KPC9zdmc+Cg==);
}

.article hr {
    border: 0;
    height: var(--border-width);
    opacity: 0.3;
    background-color: var(--stone);
    margin: calc(var(--bodytext-lineheight) * 2) 0;
}

.article .faq-hr {
    width: var(--gap-xl);
    margin: calc(var(--bodytext-lineheight) * 1) 0;
    opacity: 0.45;
}

.article .h1 {
    font-size: var(--h1-fontsize);
    line-height: var(--h1-lineheight);
    font-weight: var(--h1-fontweight);
    letter-spacing: var(--h1-letterspacing);
}

.article .h1:first-child {
    margin-top: calc(var(--h1-lineheight) * -0.15)   
}

.article .h2 {
    font-size: var(--h2-fontsize);
    line-height: var(--h2-lineheight);
    font-weight: var(--h2-fontweight);
    letter-spacing: var(--h2-letterspacing);
}

.h2--circle {
    background-color: var(--clay);
    --circle-radius: calc(var(--h2-lineheight) * 1.5);
    width: var(--circle-radius);
    aspect-ratio: 1 / 1;
    border-radius: calc(var(--circle-radius) / 2);
    line-height: var(--circle-radius) !important;
    color: var(--forest);
    text-align: center;
}

.h2--circle--stone-on-forest {
    background-color: var(--stone);
    color: var(--forest);
}

.h2--circle--forest-on-ivory {
    background-color: var(--forest);
    color: var(--ivory);
}

.h2--circle--forest-on-stone {
    background-color: var(--forest);
    color: var(--stone);
}

.h2--circle--stone-on-ivory {
    background-color: var(--stone);
    color: var(--ivory);
}

.article .h2:first-child,
.object .h2:first-child {
    margin-top: calc(var(--h2-fontsize) * -0.17);
}

.article .h3 {
    font-size: var(--h3-fontsize);
    line-height: var(--h3-lineheight);
    font-weight: var(--h3-fontweight);
    letter-spacing: var(--h3-letterspacing);
}

.article .h3:first-child {
    margin-top: calc(var(--bodytext-lineheight) * -0.25)
}

.article .h3 + p {
    margin-top: calc(var(--bodytext-lineheight) * 0.5)
}

.article strong,
.article .strong {
    font-weight: 600;
    letter-spacing: calc(var(--bodytext-letterspacing) * 2);
}

.keep-together {
    white-space: nowrap;
}

/* #endregion */
