/* ------- Scroll animations ------- */

/* Fade-in */

.fade-in {
    opacity: 0;
}

.animate {
    animation-name: fadeUp;
    animation-duration: 1s;
    animation-timing-function: ease;
    animation-fill-mode: forwards;
}

@keyframes fadeUp {
	0% {
		opacity: 0;
	} to {
		opacity: 1;
	}
}

/*

/* Scroll animation */

/* The keyframes */
@keyframes grow-progress {
    from {
        transform: scaleX(0);
    }

    to {
        transform: scaleX(1);
    }
}

@keyframes move-left-headline-left {
    from {
        bottom: 0;
    }

    to {
        bottom: 50vh;
    }
}

@keyframes move-right-headline {
    from {
        top: 0;
    }

    to {
        top: 50vh;
    }
}

/* Style and position the progress bar */
#progress {
    position: fixed;
    z-index: 10000;
    left: 0;
    top: 0;
    width: 100%;
    height: 1em;
    transform-origin: 0 50%;
    background:var(--primary-color);
}

/* Create scroll-timeline on the root */
html {
    scroll-timeline: --page-scroll block;
}

/* Attach the animation using an anonymous Scroll Progress Timeline */
#progress {
    animation: grow-progress auto linear;
    animation-timeline: --page-scroll;
}

/*
.hero-headline-right-wrap {
    container: scroll-state;
    animation: move-right-headline auto linear;
    animation-range: contain;
    animation-timeline: view();
}
*/

/* ------- Grid background ------ */


.grid-background {
    background-image: url('/media/qmbfn3dk/grid-background-md-900-0-09.svg');
    background-size: 900px auto;  
    background-position: top center;
    background-repeat: no-repeat;
}

@media screen and (min-width: 900px) {

    .grid-background {
        background-image: url('/media/gcsjpjy5/grid-background-1920-0-09.svg');
        background-size: 1920px auto;  
    }
}

/* Short grid background*/

.grid-background-short {
    background-image: url('/media/xwkd3nio/grid-background-short-md-900-0-09.svg');
}

@media screen and (min-width: 900px) {

    .grid-background-short {
        background-image: url('/media/5bmg3yml/grid-background-short-1920-03.svg');
    }
}

/* Inverted grid background */

.grid-background-invert {
    background-image: url('/media/yxijdkll/grid-background-short-invert-05.svg');
    background-position: bottom center;
}

@media screen and (min-width: 900px) {

    .grid-background-invert {
        background-image: url('/media/dgchqhqi/grid-background-short-invert-1920-02.svg');
    }
}

/* Lines background */

.lines-background {
    background-image: url('/media/cqocuah2/lines-background-transparent.svg');
    background-size: 100% auto;    
    background-position: top center;
}

@media screen and (min-width: 1988px) {

    .lines-background {
        background-size: 1920px auto;
    }
}

.repeat-background {
    background-repeat: repeat-y;
}

/* ------- Theme cards ------- */

.theme-cards {
    display: flex;
    flex-wrap: wrap;
    column-gap: 0;
    row-gap: 2rem;
}

.theme-cards > .theme-card {
    flex: 0 0 100%;
}

@media screen and (min-width: 768px) {

    .theme-cards {
        row-gap: 3rem;
    }

    .theme-cards > .theme-card {
        flex-basis: 50%;
    }
}

@media screen and (min-width: 992px) {

    .theme-cards {
        row-gap: 4.5rem;
    }

    .theme-cards > .theme-card {
        flex-basis: 33.33%;
    }
}

.theme-card-caption {
    padding: 3rem 1.5rem 0;
    position: relative;
    text-align: center;
}

.theme-card-caption::before {
    content: "";
    height: 4rem;
    width: 5px;
    background-color: var(--primary-color);
    position: absolute;
    top: -2rem;
    left: calc(50% - 2px);
    box-shadow: 0 0 20px 10px rgba(0,0,0,0.1), 0 0 2px 1px rgba(0,0,0,0.2);
}


@media screen and (min-width: 600px) {

    .theme-card-caption {
        padding: 4.5rem 2.5rem 0;
    }

    .theme-card-caption::before {
        height: 6rem;
        width: 5px;
        top: -3rem;
    }
}

@media screen and (min-width: 992px) {

    .theme-card-caption {
        padding: 4.5rem 2.5rem 0;
    }

    .theme-card-caption::before {
        height: 6rem;
        width: 5px;
        top: -3rem;
    }
}

.theme-card-caption p {
    font-weight: 300;
}

.theme-card-caption p:last-child {
    margin-bottom: 0;
}

.theme-card-image {
    width: 100%;
    aspect-ratio: 3 / 2;
    overflow: hidden;
}

.theme-card img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    transition: all ease 0.5s;
}

a.theme-card img {
    transform: scale(1.02);
}

a.theme-card:hover .theme-card-image img {
    transform: scale(1.20);
}


/** START PAGE **/

/* ------- Hero section ------- */

/* Hero headlines */

.hero-section {
    border-bottom: 1px solid var(--grid-color);
}

.hero-inner {
    position: relative;
    max-width: 1200px;
    margin: 0 auto;
}

.hero-headline-top h1 {
    text-transform: uppercase;
    font-size: clamp(1.75rem, 0.846rem + 3.91vw, 5rem);
    text-align: center;
    max-width: 1200px;
    margin: 0 auto 0.5em;;
}

@media screen and (min-width: 768px) {
    
    .hero-headline-top h1 {
        margin: 0 auto 0.375em;;
    }
}

.hero-headline-left-wrap {
    position: relative;
}

.hero-headline-left {
    text-transform: uppercase;
    position: absolute;
    left: 0;
    bottom: 0;
    transform: rotate(-90deg) translateY(100%);
    transform-origin: bottom left;
}

.hero-headline-left span {
    text-transform: uppercase;
    margin-bottom: 0;
    font-size: clamp(1.5rem, 0.805rem + 3.008vw, 4rem);
    color: var(--primary-color);
    font-weight: 700;
}

.hero-headline-right-wrap {
    position: absolute;
    transition: all ease 0.2s;
    bottom: unset;
    top: 0;
    right: 0;
}

.hero-headline-right {
    position: absolute;
    top: 0;
    right: 0;
    transform: rotate(90deg) translateX(100%);
    transform-origin: top right;
}

.hero-headline-right span {
    text-transform: uppercase;
    margin-bottom: 0;
    font-size: clamp(1.5rem, 0.805rem + 3.008vw, 4rem);
    color: var(--primary-color);
    font-weight: 700;
}

/* Hero image*/

.hero-image-wrap {
    position: relative;
    max-width: calc(100% - clamp(6rem, 4.217rem + 7.711vw, 10rem));
    margin: 0 auto;
}

@media screen and (min-width: 1200px) {

    .hero-image-wrap {
        max-width: 900px;
    }
}

.hero-image img {
    display: block;
    margin: 0 auto;
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
}

@media screen and (min-width: 1200px) {

    .hero-image img {
        aspect-ratio: 16 / 9;
    }
}


@media screen and (min-width: 1200px) {

    .hero-image img {
        width: 900px;
    }
}


/* Hero caption */

.hero-caption {
    margin: 0 auto;
    padding-top: 2rem
}

.hero-caption p {
    max-width: 65ch;
}

.hero-link {
    margin-top: 1.75rem;
}

/* Services section */

.services-section {
    background-color: var(--primary-bg-color);
}

.services-images-wrap {
    display: flex;
    align-items: center;
}

.services-images-left {
    display: flex;
    flex: 0 0 100%;
    align-items: center;
}

.services-images-right {
    display: none;
    flex: 0 0 50%;
}

@media screen and (min-width: 992px) {

    .services-images-left {
        display: flex;
        flex-basis: 50%;
        max-width: 50%;
        position: relative;
        z-index: 1;
    }

    .services-images-right {
        display: block;
        position: relative;
        z-index: 0;
    }
}

.services-images-left > img {
    display: block;
    flex: 0 0 50%;
    max-width: 50%;
}
.services-images-left > img:last-child {
    box-shadow: 0 0 10px rgba(48, 51, 34,0.75);
}

.our-services-content {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    row-gap: 1rem;
}

.our-services-content > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 768px) {

    .our-services-content > div {
        flex: 0 0 50%;
    }

    .our-services-content > div:first-child {
        padding-right: clamp(3rem, 0.528rem + 5.15vw, 6rem);
    }
}

.our-services-text p {
    font-size: clamp(1rem, 0.861rem + 0.602vw, 1.5rem);
    line-height: 1.4;
}

ul.our-services-link-list {
    list-style: none;
    padding: 0;
}

ul.our-services-link-list li {
    font-size: 1.375rem;
    font-weight: 500;
    padding: 0.25em 0;
}

ul.our-services-link-list li span {
    font-weight: 700;
    color: var(--secondary-color);
    margin-right: 0.5em;
    transition: all ease 0.15s;
}

ul.our-services-link-list li a {
    color: #FFFFFF;
}

ul.our-services-link-list li:has(a:hover) span {
    color: var(--primary-color);
}

@media screen and (min-width: 768px) {

    ul.our-services-link-list {
        list-style: none;
        padding-left: 1.5rem;;
    }
}

/* Articles list */

.articles-section {
    border-top: 1px solid var(--grid-color);
}

.articles-list-wrap {
    display: flex;
    gap: 0;
    justify-content: flex-start;
    margin-top: clamp(0.5rem, 0.075rem + 1.811vw, 2rem);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    scroll-snap-type: x mandatory;
    margin-left: -1.25rem;
    margin-right: -1.25rem;
    padding-left: 1.25rem;
    padding-right: 1.25rem;
    padding-top: 1rem;
    padding-bottom: 1rem;
    margin-bottom: -1rem;
    flex-wrap: nowrap;
}

.articles-list-wrap > .article-box {
    flex: 0 0 80%;
}

@media screen and (min-width: 768px) {

    .articles-list-wrap {
        margin-left: -2rem;
        margin-right: -2rem;
    }

    .articles-list-wrap > .article-box {
        flex: 0 0 60%;
    }
}

@media screen and (min-width: 992px) {
    
    .articles-list-wrap {
        overflow-x: hidden;
    }

    .articles-list-wrap > .article-box {
        flex: 0 0 33.33%;
    }
}

/* ------- Contact banner section ------- */

.contact-banner-section {
    border-top: 1px solid var(--grid-color);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    row-gap: 2rem;
}

.contact-banner-section > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 768px) {

    .contact-banner-section > div {
        flex-basis: 50%;
    }

    .contact-banner-section > div:first-child {
        padding-right: 2rem;
    }
}

.contact-banner-image {
    order: 1;
}

.contact-banner-text {
    order: 2;
}

@media screen and (min-width: 768px) {

    .contact-banner-image {
        order: 2;
    }

    .contact-banner-text {
        order: 1;
    }
}

.contact-banner-text h2 {
    text-transform: none;
    margin-bottom: 2rem;
    max-width: 25ch;
}

.contact-banner-text h2 strong {
}

.contact-banner-text h2 + p {
    display: none
}

.contact-banner-image img {
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit: cover;
}

/* ------- Career banner ------- */

.career-section {
    border-top: 1px solid var(--grid-color);
}

.career-inner {
    text-align: center;
    margin: 0 auto;
}

.career-section p {
    font-size: clamp(1.125rem, 1.055rem + 0.301vw, 1.375rem);
    font-weight: 400;
    line-height: 1.4;
    max-width: 68ch;
    margin-left: auto;
    margin-right: auto;
}

.career-buttons {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    margin-top: 2.5rem;
    gap: 1.25rem;
}

.career-buttons a.theme-btn {
    min-width: 210px;
}

/** TEXT PAGE **/

.header-section + .article-section {
    padding-top: 0;
}

/* ------- Article blocks ------- */

.article-block {
    max-width: 800px;
    margin-right: auto;
    margin-left: auto;
}

.article-block + .article-block {
    margin-top: clamp(3.5rem, 2.944rem + 2.406vw, 5.5rem);
}

.article-block h2 {
    font-size: clamp(1.5rem, 1.361rem + 0.602vw, 2rem);
    font-weight: 500;
    text-transform: none;
}

.article-block h2 strong {
    font-weight: 500;
}

.article-block h3 {
    font-size: 1.25rem;
    margin-top: 2.5rem;
    line-height: 1.4;
}

.article-block p {
    font-weight: 300;
}
.article-block p.ingress,
.article-block p.preamble {
    font-weight: 400;
}

.article-block p:last-child {
    margin-bottom: 0;
}

.article-block p:last-child {
    margin-bottom: 0;
}

/* Text article block */

.article-block + .article-block:has(p.asterisk) {
    margin-top: 2.5rem;
}

.text-article-block + .text-article-block,
.text-article-block + .quote-article-block,
.text-article-block + .image-article-block,
.image-article-block + .text-article-block {
    margin-top: 2.5rem;
}

.button-article-block + .text-article-block:has(h2:first-child),
.text-article-block + .text-article-block:has(h2:first-child),
.quote-article-block + .text-article-block:has(h2:first-child) {
    margin-top: 3.5rem;
}

.text-article-block + .text-article-block:has(h2:first-child) {
    margin-top: 3.5rem;
}

.text-article-block h2:not(:first-child) {
    margin-top: 3.5rem;
}

/* image block */

.image-article-block img {
    width: 100%;
    border-radius: 4px;
}

.image-article-block video {
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit: cover;
    border-radius: 4px;
}

/* Quote block */

.quote-article-block + .quote-article-block,
.quote-article-block + .text-article-block,
.quote-article-block + .image-article-block {
    margin-top: 2.5rem;
}

.quote-banner-text {
    padding: 0 1.25rem;
}

p.quote-text {
    border-left: 3px solid var(--primary-color);
    padding-left: 1rem;
    font-weight: 400;
    font-size: 1.375rem;
    line-height: 1.3;
    max-width: 55ch;
}

p.quote-name {
    font-size: 1rem;
}

/* Button article block */

.text-article-block + .button-article-block {
    margin-top: 0;
}

.button-article-block + .text-article-block,
.button-article-block + .image-article-block {
    margin-top: 2.5rem;
}

.text-article-block + .button-article-block a.theme-btn {
    margin-top: 1.5rem;
}

/* Text cards article blocks */

.cards-article-block {
    max-width: 1200px;
}

.article-block + .cards-article-block {
    margin-top: clamp(3.5rem, 2.944rem + 2.406vw, 5.5rem);
}

.text-cards-header {
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 3.5rem;
}

.text-cards {
    display: flex;
    flex-wrap: wrap;
    row-gap: 3rem;    
}

.text-cards > * {
    flex: 0 0 100%;
}

@media screen and (min-width: 600px) {

    .text-cards {
        column-gap: 2rem;
    }

    .text-cards > * {
        flex: 0 0 calc(50% - 1rem);
    }
}

@media screen and (min-width: 992px) {

    .text-cards {
        column-gap: 3rem;
    }

    .text-cards > * {
        flex: 0 0 calc(33.33% - 2rem);
    }
}

a.text-card {
    display: block;
}

a.text-card h3, 
a.text-card p {
    transition: 0.2s;
}

a.text-card h3 {
    color: var(--primary-color);
}

a.text-card:hover h3,
a.text-card:hover p {
    color: var(--primary-color);
}

.text-card h3 {
    border-bottom: 1px solid rgba(212,237,23,0.5);
    padding-bottom: 0.5rem;
    margin-bottom: 0.5rem;
    margin-top: 0;
}

/* Contact text block */

.contact-article-block {
    text-align: center;
    border-top: 1px solid var(--primary-color);
    padding-top: 2.5rem;
}

.contact-article-block a.theme-btn {
    margin-top: 1rem;
}

.contact-article-block h2 {
    font-size: clamp(2rem, calc(2rem + ((1vw - 0.36rem) * 0.8929)), 2.75rem);
}

.contact-article-buttons {
    margin-top: 1.5rem;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/** NEWS PAGE **/

ul.pagination a.page-link {
    background-color: transparent;
    border-color: rgba(255,255,255, 0.5);
    color: var(--text-white);
}

ul.pagination a.page-link:hover,
ul.pagination a.page-link:active,
ul.pagination a.page-link:focus {
    background-color:var(--primary-color);
    color: var(--text-dark);
    box-shadow: none;
}

ul.pagination .page-item:first-child .page-link,
ul.pagination .page-item:last-child .page-link {
    border-radius: 0;
}

.article-block + .linkedin-article-block {
    margin-top: 2.5rem;
}

.linkedin-article-block {
    margin-top: 2.5rem;
    border-top: 1px solid var(--primary-color);
}

.linkedin-article-block p {
    padding-top: 1.5em;
    text-align: center;
}

.linkedin-article-block svg {
    margin-right: 0.25em;
}

.linkedin-article-block a {
    color: var(--text-white);
}
.linkedin-article-block a:hover {
    color: var(--primary-color);
}

/** CONTACT PAGE **/

.contact-header-section .header-image {

}

.contact-header-section .header-image {

}

@media screen and (min-width: 768px) {

    .contact-header-section .header-image {
        order: 2;
    }
    .contact-header-section .header-headline {
        order: 1;
    }
}

@media screen and (min-width: 768px) {

    .contact-header-section:has(.header-image) .header-headline {
        order: 1;
        padding-left: 0;
        padding-right: 4rem;
    }
}

.contact-header-section h2 {
    text-transform: none;
    font-weight: 500;
    margin-top: 1.5em;
}

p.header-email svg {
    color: var(--secondary-color);
    margin-right: 0.5rem;
}

p.header-email a {
    color: var(--text-white);
    font-weight: 300;
}

p.header-email a:hover {
    color: var(--primary-color);
}

.header-address li {
    line-height: 2;
    font-weight: 300;
}

/* ------- Coworkers -------*/

.coworkers-section {
    scroll-margin-top: var(--top-margin-sm);
}

@media screen and (min-width: 992px) {
    
    .coworkers-section {
        scroll-margin-top: var(--top-margin-lg);
    }
}

@media screen and (min-width: 1700px) {
    
    .coworkers-section {
        scroll-margin-top: var(--top-margin-xl);
    }
}

.coworkers-section h2 {
    margin-bottom: 0;
}

.coworker-box h3 {
    margin-bottom: 0.125em;
}

ul.contact-info-list {
    list-style: none;
    margin-top: 1rem;
    padding: 0;
}

ul.contact-info-list li {
    line-height: 1.8;
}

ul.contact-info-list li a {
    color: var(--text-white);
    font-weight: 300;
}

ul.contact-info-list li a:hover {
    color: var(--primary-color);
}

ul.contact-info-list li svg {
    margin-right: 0.5em;
    color: var(--secondary-color);
}

p.coworker-city {
    font-weight: 400;
}

/* Coworkers mobile */
.coworkers-list-mobile {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem;
    margin-top: 1rem;
}

.coworker-box-mobile {
    padding: 1.5rem 1rem;
    border: 1px solid var(--grid-color);
    background-color: #1a1b1b;
    width: 100%;
    max-width: 500px;
    container-type: inline-size;
}

.coworker-image-name-wrap-mobile {
    display: flex;
    border-bottom: 1px solid var(--primary-color);
    padding-bottom: 1rem;
    align-items: flex-end;
    margin-bottom: 1rem;
}

.coworker-image-mobile {
    flex: 0 0 100px;
}

.coworker-image-mobile img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 50%;
}

.coworker-name-mobile {
    flex: 0 0 calc(100% - 100px);
    padding-left: 1rem;
}

.coworker-name-mobile h3 {
  margin-bottom: 0.125em;
}

.coworker-name-mobile p {
    margin-bottom: 0;
}

.coworker-caption-mobile p {
    font-weight: 300;
}

.coworker-caption-mobile p:last-child {
    margin-bottom: 0;
}

.coworker-buttons-mobile {
    display: flex;
    flex-direction: row;
    row-gap: 1rem;
    align-items: flex-start;
    justify-content: space-between;
}

.coworker-buttons-mobile > a.theme-btn {
    flex: 0 0 calc(50% - 0.25rem);
    min-width: unset;
    max-width: calc(50% - 0.25rem);
    padding: 0.875em;
}

/** SERVICES PAGE **/

p.services-top-headline {
    font-size: clamp(2rem, calc(2rem + ((1vw - 0.36rem) * 0.8929)), 2.75rem);
    font-weight: 700;
    text-transform: uppercase;
    margin-bottom: 0;
    line-height: 1.1;
}

.service-header-section h1 {
    margin-left: clamp(2rem, 1.722rem + 1.203vw, 3rem);
    margin-bottom: 0;
}

.service-header-section h1 a {
    margin-left: clamp(-3rem, -1.722rem - 1.203vw, -2rem);
    margin-bottom: 0;
}

.services-header-section p.preamble {
    max-width: 68ch;
}

.services-header-section {
    padding-bottom: clamp(3.5rem, 2.944rem + 2.406vw, 5.5rem);
}

/** COOKIE BANNER **/

#CookieConsent dialog.cookie-popup {
    --color_primary: #93d500;
    --color_secondary: #757575;
    --color_primary_text: #000000;
    --color_secondary_text: #fff;
}