/*

1. COMPONENTS
    Theme card
    Section header
    Section button
    Background image
    List markers
    Content blocks
    Article blocks
    Header
2. START PAGE
3. PROJECTS PAGE
4. PROJECT PAGE
5. CONTACT PAGE
6. NEWS PAGE
7. 404 PAGE

*/

/** 1. COMPONENTS **/

/* ---------- Theme card ---------- */

.theme-card {
    background-color: #FFFFFF;
    border-radius: 8px;
    box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.25), 0px 1px 4px 0px rgba(0, 0, 0, 0.15);
    display: flex;
    flex-direction: column;
    position: relative;
}

.theme-card-image {
    border-radius: 0.5rem 0.5rem 0 0 ;
    width: 100%;
    aspect-ratio: 3 / 2;
    overflow: hidden;
}

.theme-card-image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
}

.theme-card-caption {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    justify-content: space-between;
    gap: 1rem;
    padding: clamp(1rem, 0.794rem + 0.429vw, 1.25rem);
}

p.theme-card-tag {
    margin-bottom: 0;
    text-transform: uppercase;
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--primary-color);
}

p.theme-card-tag + h2,
p.theme-card-tag + h3 {
    margin-top: 0.25rem;
}

.theme-card-text h2, 
.theme-card-text h3 {
    margin-bottom: 0.5rem;
}

.theme-card-text h2:last-child {
    margin-bottom: 0;
}

.read-more {
    font-weight: 500;
    text-transform: uppercase;
    margin-bottom: 0;
    display: flex;
    align-items: center;
}

.read-more svg {
    transition: all ease 0.2s;
}

.read-more img {
    transition: all ease 0.2s;
    height: 0.75em;
    margin-left: 0.25em;
}

.read-more a:hover,
.read-more:hover {
    color: var(--neutral-color-dark);
}

.read-more:hover img,
.read-more a:hover img {
    filter: grayscale(1);
    opacity: 0.58;
}

/* Linked box */

a.theme-card {
    display: flex;
    color: var(--text-dark);
}

/* ---------- Section header ---------- */

.section-header p {
    max-width: 80ch;
}

.section-header.text-center p {
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 0;
}

.section-header h2:has(+ p) {
    margin-bottom: clamp(0.25rem, 0.179rem + 0.302vw, 0.5rem);
}

.section-header {
    margin-bottom: clamp(1.5rem, 1.075rem + 1.811vw, 3rem);
}

/* ---------- Section button ---------- */

.section-button .theme-btn {
    margin-top: 2.5em;
}

/* ------- Background image ------- */

.banner-background-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    overflow: hidden;
}

.banner-background-image img {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 100%;
    opacity: 0.15;
    max-width: unset;
}

@media screen and (min-width: 600px) {

    .banner-background-image img {
        left: unset;
        right: 0;
    }
}

/* ------- List markers in text ------- */

.intro-text ul:not(.list-style-none),
.banner-content ul:not(.list-style-none) {
    list-style-image: url("/media/q1ejizgu/triangle-right.svg");
}

.intro-text ul li + li,
.banner-content ul li + li {
    margin-top: 0.5em;
}

/* -------- Content blocks ------- */

.content-blocks .content-block:nth-child(2n+1) {
    background-color: var(--primary-color-400); /* Gray bg on every other block */
}

.content-blocks .content-block:nth-child(2n) {
    margin-bottom: calc(-1*clamp(2rem, 1.444rem + 2.406vw, 4rem)); /* Remove bottom padding on white blocks*/
}

@media screen and (min-width: 992px) {

    .content-blocks .content-block:nth-child(2n) {
        margin-bottom: 0;
    }
}

/* Text and image banner */

.text-image-banner {
    display: flex;
    flex-wrap: wrap;
    border-radius: 0.5rem;
    overflow: hidden;
}

.text-image-banner > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 992px) {

    .text-image-banner {
        gap: 0;
    }

    .text-image-banner > div {
        flex-basis: 50%;
    }
}

.banner-content {
    padding: clamp(2rem, 1.722rem + 1.203vw, 3rem);
}

.banner-content p:has(+ a.theme-btn) {
    margin-bottom: 0;
}

.banner-content a.theme-btn {
    margin-top: clamp(1.5rem, 1.361rem + 0.602vw, 2rem);
}

.banner-image img {
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit:cover;
}

@media screen and (min-width: 992px) {

    .banner-image img {
        height: 100%;
    }
}

/* Text image banner on gray background*/

.content-blocks .text-image-banner-section:nth-child(2n+1) .text-image-banner {
    background-color: #FFFFFF;
}

.content-blocks .text-image-banner-section:nth-child(2n) .banner-image img {
    border-radius: 0;
}

@media screen and (min-width: 992px) {

    .banner-image {
        order: 2;
    }

    .banner-content {
        order: 1;
    }

    .text-image-banner-section.alternate-order .banner-image {
        order: 1;
    }

    .text-image-banner-section.alternate-order .banner-content {
        order: 2;
    }
}

/* Text and icon banner */

.text-icon-banner .banner-image-icon {
    background-color: var(--neutral-color-light);
    display: flex;
    justify-content: center;
    align-items: center;
    aspect-ratio: 3 / 2;
    order: 1;
}

.text-icon-banner .banner-image-icon img {
    max-width: 80%;
    max-height: 80%;
    aspect-ratio: unset;
    height: unset;
    object-fit: unset;
}

.text-icon-banner .banner-content {
    order: 2;
}

.content-blocks .content-block:nth-child(2n+1) .text-icon-banner {
    background-color: #FFFFFF;
}

@media screen and (min-width: 1700px) {

    .text-icon-banner .banner-image-icon img {
        max-width: 60%;
    }
}

/* Numbered cards */

.numbered-cards-section {
    position: relative;
}

.numbered-cards-section-cards {
    display: flex;
    flex-wrap: nowrap;
    gap: 2rem;
    overflow-x: auto;
    margin: 0 -1.25rem;
    padding: 1rem 1.25rem 1rem 1.875rem;;
    scroll-snap-type: x mandatory;    
    scrollbar-width: none;
    position: relative;
    z-index: 4;
}

.numbered-cards-section-cards > div {
    flex: 0 0 230px;
    scroll-snap-align: center;
}

@media screen and (min-width: 360px) {

    .numbered-cards-section-cards > div {
        flex-basis: 280px;
    }
}

@media screen and (min-width: 768px) {

    .numbered-cards-section-cards {
        margin-right: -2rem;
        margin-left: -2rem;
    }

    .numbered-cards-section-cards > div {
        flex-basis: 340px;
    }
}

@media screen and (min-width: 992px) {

    .numbered-cards-section-cards {
        flex-wrap: wrap;
        justify-content: center;
        scroll-snap-type: unset;
        overflow: visible;
        padding-bottom: 0;
        margin-left: 0;
        padding-left: 0;
        margin-right: 0;
        padding-right: 0;
    }

    .card-section-cards > div {
        flex: 0 0 calc(33.33% - 1.333rem);
    }
}

@media screen and (min-width: 1200px) {

    .numbered-cards-section-cards {
        gap: 3rem;
    }

    .numbered-cards-section-cards > div {
        flex: 0 0 calc(33.33% - 2rem);
    }
}

.numbered-theme-card .theme-card-caption {
    position: relative;
    z-index: 1;
    padding: 2rem 1.25rem;
    background-color:#FFFFFF;
    border-radius: 0.5rem;
}

@media screen and (min-width: 1200px) {

    .numbered-theme-card .theme-card-caption {
        padding: 2rem;
    }
}

.theme-card-number {
    position: absolute;
    z-index: 2;
    top: -0.75rem;
    left: -0.75rem;
    font-size: 1.25rem;
    font-weight: 700;
    color: #FFFFFF;
    background-color: var(--secondary-color);
    border: 2px solid #FFFFFF;
    border-radius: 50%;
    height: 2.5rem;
    width: 2.5rem;
    display: flex;
    justify-content: center;
    align-items: center;
}

@media screen and (min-width: 1200px) {

    .theme-card-number {
        top: -1rem;
        left: -1rem;
        font-size: 1.5rem;
        height: 3rem;
        width: 3rem;
    }
}

.theme-card-number-backdrop {
    position: absolute;
    top: -0.75rem;
    left: -0.75rem;
    border: none;
    border-radius: 50%;
    height: 2.5rem;
    width: 2.5rem;
    z-index: 0;
    box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.25), 0px 1px 4px 0px rgba(0, 0, 0, 0.15);
}

@media screen and (min-width: 1200px) {

    .theme-card-number-backdrop {
        top: -1rem;
        left: -1rem;
        font-size: 1.5rem;
        height: 3rem;
        width: 3rem;
    }
}

.numbered-cards-background {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    overflow: hidden;
}

.numbered-cards-background video,
.numbered-cards-background img {
    position: absolute;
    top: 0;
    right: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 2;
    opacity: 0.7;
    filter: grayscale(1);
    mix-blend-mode: soft-light;
}

.numbered-cards-overlay {
    z-index: 1;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    overflow: hidden;
    background-color: rgba(0, 99, 125, 0.9);    
}

.numbered-cards-section .section-header {
    position: relative;
    z-index: 3;
}

.numbered-cards-section .section-header {
    position: relative;
    z-index: 3;
}

.numbered-cards-cards {
    position: relative;
    z-index: 4;
}

.numbered-cards-section:has(.numbered-cards-background) .section-header h2,
.numbered-cards-section:has(.numbered-cards-background) .section-header p {
    color: var(--text-white);
}

/* List section */

.list-section {
    position: relative;
}

.list-section-background {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 0;
}

.list-section-background img {
    height: 80%;
    width: auto;
    max-width: 90%;
}

.list-section-content {
    position: relative;
    z-index: 1;
}

.list-item {
    border-top: 1px solid var(--neutral-color);
    padding: clamp(1rem, 0.861rem + 0.602vw, 1.5rem) 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
}

.list-item:last-child {
    padding-bottom: 0;
}

.list-item > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 768px) {

    .list-item {
        gap: 0;
    }

    .list-item > div {
        flex-basis: 50%;
    }
}

.list-item-headline-wrap {
    display: flex;
}

.list-item-headline-number {
    flex: 0 0 2rem;
    display: flex;
    justify-content: center;
}

.list-item-headline {
    flex: 0 0 calc(100% - 2rem);
}

.list-item-headline h3 {
    margin: 0;
}

@media screen and (min-width: 768px) {

    .list-item {
        gap: 0;
    }

    .list-item > div {
        flex-basis: 50%;
    }

    .list-item-headline {
        padding-right: 2rem;
    }

}

@media screen and (min-width: 1200px) {

    .list-item-headline-number {
        flex-basis: 3rem;
    }

    .list-item-headline {
        flex-basis: calc(100% - 3rem);
    }
}

.list-item-text {
    padding-left: 2rem;
}

@media screen and (min-width: 768px) {
    .list-item-text {
        padding-left: 0;
    }
}

.list-process-figure {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    column-gap: 0.75rem;
    row-gap: 0.5rem;
    margin-bottom: clamp(2rem, 1.444rem + 2.406vw, 4rem);
}

.list-process-figure > div.list-process-step {
    flex: 0 0 calc(33.33% - 25px - 1.5rem);
    max-width: calc(33.33% - 25px - 1.5rem);
}

@media screen and (min-width: 576px){

    .list-process-figure > div.list-process-step {
        flex: 0 0 calc(20% - 25px - 1.5rem);
        max-width: calc(20% - 25px - 1.5rem);
    }
}

@media screen and (min-width: 768px){

    .list-process-figure {
        padding: 0 2rem;
        justify-content: center;
        gap: 1rem;
    }

    .list-process-figure > div.list-process-step {
        flex: 0 0 80px;
        max-width: 80px;
    }
}

@media screen and (min-width: 992px){

    .list-process-figure {
        gap: 1.5rem;
    }

    .list-process-figure > div.list-process-step {
        flex: 0 0 100px;
        max-width: 100px;
    }
}


@media screen and (min-width: 1400px){

    .list-process-figure {
        padding: 0 4rem;
    }

    .list-process-figure > div.list-process-step {
        flex: 0 0 120px;
        max-width: 120px;
    }
}


@media screen and (min-width: 1700px){

    .list-process-figure {
        justify-content: space-between;
    }

    .list-process-figure > div.list-process-step {
        flex: 0 0 140px;
        max-width: 140px;
    }
}

.list-process-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
}

.list-process-step img {
    width: 100%;
}

.list-process-step-arrow {
    display: flex;
    padding-top: 25px;
}

.list-process-step-arrow:last-child {
    display: none;
}

.list-process-step-arrow svg {
    font-size: 30px;
    color: var(--secondary-color);
}

p.list-process-step-text {
    text-align: center;
    font-weight: 500;
    margin-top: 0.5rem;
    margin-bottom: 0;
    line-height: 1.1;
}

@media screen and (min-width: 768px) {
    
    p.list-process-step-text {
        font-size: clamp(1rem, 0.794rem + 0.429vw, 1.25rem);

    }
}

@media screen and (min-width: 768px){

    .list-process-step-arrow {
        padding-top: 20px;
    }

    .list-process-step-arrow svg {
        font-size: 40px;
    }
}

@media screen and (min-width: 992px){

    .list-process-step-arrow {
        padding-top: 30px;
    }

    .list-process-step-arrow svg {
        font-size: 50px;
    }
}

@media screen and (min-width: 1400px){

    .list-process-step-arrow {
        padding-top: 30px;
    }

    .list-process-step-arrow svg {
        font-size: 60px;
    }
}


@media screen and (min-width: 1700px){

    .list-process-step-arrow {
        padding-top: 35px;
    }

    .list-process-step-arrow svg {
        font-size: 70px;
    }
}

.section-header:has(+ .list-process-figure) {
    margin-bottom: clamp(2rem, 1.444rem + 2.406vw, 4rem);
}

/* Contact banner */

.contact-banner-wrap {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    margin: 0 auto;
    max-width: 1000px;
}

.contact-banner-wrap > div {
    flex: 0 0 100%;
}

.contact-banner-wrap > div:first-child {
    margin-bottom: 1.5rem;
}

@media screen and (min-width: 768px) {

    .contact-banner-wrap > div:first-child {
        flex-basis: 250px;
        margin-bottom: 0;
    }

    .contact-banner-wrap > div:last-child {
        flex-basis: calc(100% - 250px);
    }
}

@media screen and (min-width: 992px) {

    .contact-banner-wrap > div:first-child {
        flex-basis: 344px;
        margin-bottom: 0;
    }

    .contact-banner-wrap > div:last-child {
        flex-basis: calc(100% - 344px);
    }
}

.contact-banner-image img {
    display: block;
    width: 100%;
    max-width: 300px;
    margin: 0 auto;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 50%
}

.contact-person-wrap {
    margin-top: 1.25rem;
}

.contact-person-wrap h3 {
    margin-bottom: 0;
    padding-top: calc(1.25rem + 4px);
    position: relative;
}

.contact-person-wrap h3::before {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    left: calc(50% - 62px);
    height: 4px;
    width: 124px;
    border-top: 4px solid var(--secondary-color);
}

.contact-banner-text {
    text-align: center;
}

@media screen and (min-width: 768px){
    .contact-banner-text {
        text-align: left;
        padding-left: 2rem;
    }
    
    .contact-person-wrap {
        border-left: 4px solid var(--secondary-color);
        padding-left: clamp(0.875rem, 0.771rem + 0.451vw, 1.25rem);
    }

    .contact-person-wrap {
        margin-top: 2rem;
    }

    .contact-person-wrap h3 {
        margin-bottom: 0;
        padding-top: 0;
    }

    .contact-person-wrap h3::before {
        display: none;
    }
}

/* Related articles */

.related-article-boxes {
    display: flex;
    overflow-x: auto;
    gap: 1.5rem;
    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: 0.25rem;
    padding-bottom: 0.25rem;
}

.related-article-boxes > a {
    flex: 0 0 240px;
    scroll-snap-align: center;
}

@media screen and (min-width: 360px) {

    .related-article-boxes > a {
        flex-basis: 280px;
    }
}

@media screen and (min-width: 576px) {

    .related-article-boxes > a {
        flex-basis: 360px;
    }
}

@media screen and (min-width: 992px) {

    .related-article-boxes {
        gap: 1rem;
    }

    .related-article-boxes > a {
        flex-basis: calc(33.33% - 0.6667rem);        
    }
}

@media screen and (min-width: 1200px) {

    .related-article-boxes {
        gap: 2rem;
    }

    .related-article-boxes > a {
        flex-basis: calc(33.33% - 1.3333rem);
    }
}

@media screen and (min-width: 1700px) {

    .related-article-boxes {
        gap: 3rem;
    }

    .related-article-boxes > a {
        flex-basis: calc(33.33% - 2rem);        
    }
}

/* Key concepts section */

.subpage-key-concept-boxes {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.5rem;
}

.subpage-key-concept-boxes > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 576px) {

    .subpage-key-concept-boxes {
        gap: 1rem;
    }

    .subpage-key-concept-boxes > div {
        flex-basis: calc(50% - 0.5rem)
    }
}

@media screen and (min-width: 992px) {

    .subpage-key-concept-boxes {
        gap: 1rem;
    }

    .subpage-key-concept-boxes > div {
        flex-basis: calc(25% - 0.75rem)
    }
}

@media screen and (min-width: 1200px) {

    .subpage-key-concept-boxes {
        gap: 1.5rem;
    }

    .subpage-key-concept-boxes > div {
        flex-basis: calc(25% - 1.5rem)
    }
}

@media screen and (min-width: 1200px) {

    .subpage-key-concept-boxes {
        gap: 2rem;
    }

    .subpage-key-concept-boxes > div {
        flex-basis: calc(25% - 1.5rem)
    }
}

@media screen and (min-width: 1700px) {

    .subpage-key-concept-boxes {
        gap: 3rem;
    }

    .subpage-key-concept-boxes > div {
        flex-basis: calc(25% - 2.25rem)
    }
}

.subpage-key-concept-box {
    padding: clamp(2rem, 1.722rem + 1.203vw, 3rem) clamp(1rem, 0.722rem + 1.203vw, 2rem);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}


/* Key figure section */

.key-figure-boxes {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.5rem;
}

.key-figure-boxes > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 400px) {

    .key-figure-boxes {
        gap: 1rem;
    }

    .key-figure-boxes > div {
        flex-basis: calc(50% - 0.5rem)
    }
}

@media screen and (min-width: 768px) {

    .key-figure-boxes {
        gap: 1rem;
    }

    .key-figure-boxes > div {
        flex-basis: calc(25% - 0.75rem)
    }
}

@media screen and (min-width: 1200px) {

    .key-figure-boxes {
        gap: 2rem;
    }

    .key-figure-boxes > div {
        flex-basis: calc(25% - 1.5rem)
    }
}

.key-figure-box {
    padding: clamp(2rem, 1.722rem + 1.203vw, 3rem) clamp(1rem, 0.722rem + 1.203vw, 2rem);  
    container-type: inline-size;
}

.key-figure-description {
    position: relative;
    line-height: 1.3;
    font-weight: 400;
    font-size: clamp(1rem, 0.929rem + 0.302vw, 1.25rem);
    text-wrap: balance;
    margin-bottom: 32px;
}

.key-figure-description::after {
    content: "";
    position: absolute;
    height: 4px;
    width: 80px;
    background-color: var(--secondary-color);
    bottom: -16px;
    left: calc(50% - 40px);
}

.key-figure-nbr {
    font-size: clamp(2.5rem, -0.833rem + 19.048cqi, 3.5rem);
    font-weight: 500;
    line-height: 1;
    color: var(--primary-color);
}

/* ------- Article content blocks ------- */

.article-content-blocks {
    max-width: 1000px;
    margin: 0 auto;
}

.article-block + .article-block{
    margin-top: 2rem;
}

.article-headline + .text-article-block{
    margin-top: 1rem;
}

.article-block p:last-child {
    margin-bottom: 0;
}

.article-headline h2 {
    font-weight: 700;
}

.image-article-block img {
    border-radius: 0.5rem;
}

/* Quote article block */

.article-block + .quote-article-block {
    margin-top: 3rem;
}

.quote-article-block + .article-block {
    margin-top: 2rem;
}

.quote-article-block .quote-text-box {
    position: relative;
    margin-bottom: 1rem;
}

.quote-article-block .quote-text-box p {
    font-size: clamp(1.125rem, 1.022rem + 0.215vw, 1.25rem);
    font-weight: 400;
    max-width: 62ch;
    margin-right: auto;
    margin-left: auto;
}

.quote-article-block .quote-text-box img  {
    width: 60px;
    display: block;
    margin: 0 auto 1rem;
}

.quote-article-block p.quote-name {
    color: var(--secondary-color);
}

/* Contact article block */

.contact-article-block {
    border-top: 1px solid var(--neutral-color-200);
    padding-top: clamp(2rem, 1.893rem + 0.571vw, 2.5rem);
}

.article-block + .contact-article-block {
    margin-top: clamp(2rem, 1.893rem + 0.571vw, 2.5rem);
}

.contact-article-block .contact-person-box {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}

.contact-article-block .contact-person-box > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 600px) {

    .contact-article-block .contact-person-box > div.contact-person-image {
        flex-basis: 160px;
    }

    .contact-article-block .contact-person-box > div.contact-person-text {
        flex-basis: calc(100% - 160px);
        padding-left: 1.5rem;
    }
}

.contact-person-image img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover; 
    border-radius: 50%;
    max-width: 160px;
}

/** 2. START PAGE **/

/* ---------- Hero section ---------- */

.hero-mobile {
    position: relative;
    min-height: calc(100vh - var(--top-margin-lg));
    min-height: calc(100svh - var(--top-margin-sm));
    padding-top: 90vw;
    padding-bottom: 1.25rem;
}

.hero-desktop {
    position: relative;
    min-height: calc(100vh - var(--top-margin-sm));
    min-height: calc(100svh - var(--top-margin-sm));
}

.hero-overlay {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    z-index: 1;
    overflow: hidden;
    background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0));
}

.hero-overlay img {
    position: absolute;
    bottom: 0;
    right: 0;
    display: none;
}

@media screen and (min-width: 992px) {

    .hero-overlay {
        background-image: unset;
        background-color: rgba(0,0,0,0.12)
    }

    .hero-desktop {
        min-height: calc(100vh - var(--top-margin-lg));
    }

    .hero-overlay img {        
        width: unset;
        height: 50%;
        opacity: 1;
        display: block;
    }
}

@media screen and (min-width: 1700px) {

    .hero-desktop {
        min-height: calc(100vh - var(--top-margin-xl));
    }
}

@media screen and (min-width: 2100px) {

    .hero-desktop {
        min-height: unset;
        height: 70vh;
        max-height: 70vh;
    }
}

/* Hero background image*/

.hero-background-image {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
}

.hero-background-image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    object-position: top center;
}

@media screen and (min-width: 992px) {

    .hero-background-image img {
        object-position: center;
    }
}

/* Hero video */

.hero-section video {
    position: absolute;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* Hero caption */

.hero-caption {
    position: relative;
    z-index: 1;
    width: 100%;
    background-color: rgba(255,255,255,0.9);
    padding: clamp(1.25rem, 0.972rem + 1.203vw, 2.25rem); /* 370-1700 */
    border-radius: 8px;
    margin-bottom: 2rem;
}

@media screen and (min-width: 992px) {

    .hero-caption {
        width: 50%;
        margin-bottom: 0;
    }
}

.hero-caption h1 {
    font-size: clamp(2rem, 1.583rem + 1.805vw, 3.5rem);
    color:var(--text-dark);
    font-weight: 300;
    margin-bottom: 1rem;
    width: 100%;
}

.hero-mobile .hero-caption h1 {
    text-align: center;
}

.hero-caption h1 strong {
    font-weight: 800;
}

.hero-caption p {
    text-align: center;
    font-size: clamp(1.125rem, 1.09rem + 0.15vw, 1.25rem);
    font-weight: 400;
    margin-left: auto;
    margin-right: auto;
}

.hero-buttons {
    margin-top: clamp(1.25rem, 1.18rem + 0.301vw, 1.5rem);
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.75rem;
}

@media screen and (min-width: 992px) {

    .hero-caption p {
        text-align: left;
        margin-left: 0;
    }

    .hero-buttons {
        justify-content: flex-start;
        gap: 1.5rem;
    }
}

/* ------- Intro text section ------- */

.intro-text-section {
    position: relative;
    background-color: #FFFFFF;
}

.intro-text-wrap {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}

.intro-text-wrap > div {
    flex: 0 0 100%;
}

@media screen and (min-width: 768px) {

    .intro-text-wrap > div {
        flex: 0 0 calc(50% - 1rem);
    }
}

@media screen and (min-width: 1200px) {

    .intro-text-wrap {
        flex: 0 0 calc(50% - 1.75rem);
    }
}

.intro-text {
    margin-bottom: 2rem;
}

@media screen and (min-width: 768px) {

    .intro-text {
        margin-bottom: 0;
    }
}

.key-concept-box {
    padding: 1.375rem 1rem;
    display: flex;
    gap: 1rem;
    align-items: center;
    border-radius: 0.5rem;
}

.key-concept-box {
    background-color: var(--neutral-color-light);
}

.key-concept-box + .key-concept-box {
    margin-top: 1rem;
}

.key-concept-box > div:first-child {
    flex-basis: 50px;
}

.key-concept-box > div:last-child {
    flex-basis: calc(100% - 50px - 1rem);
}

.key-concept-box > div:first-child img {
    width: 100%;
}

@media screen and (min-width: 576px) {

    .key-concept-box > div:first-child {
        flex-basis: 64px;
    }

    .key-concept-box > div:last-child {
        flex-basis: calc(100% - 64px - 1rem);
    }
}

.key-concept-box h3 {
    margin-bottom: 0;
}

.key-concept-box p {
    margin-bottom: 0;
}

/* ------- Our services section ------- */

.our-services-section {
    position: relative;
}

.our-services-section.bg-dark h2 {
    color: var(--primary-color-200);
}

.our-services-section.bg-dark p {
    color: var(--neutral-color-50);
}

.services-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    justify-content: center;
}

.bg-dark .services-wrap {
    gap: 0;
}

.services-wrap > a {
    flex: 0 0 100%;
}

@media screen and (min-width: 768px) {

    .services-wrap > a {
        flex: 0 0 calc(50% - 0.5rem);
    }

    .bg-dark .services-wrap > a {
        flex: 0 0 50%;
    }
}

@media screen and (min-width: 1200px) {

    .services-wrap,
    .bg-dark .services-wrap {
        gap: 1.5rem;
    }

    .services-wrap > a,
    .bg-dark .services-wrap > a {
        flex: 0 0 calc(33.33% - 1rem);
    }
}

@media screen and (min-width: 1700px) {
    
    .services-wrap {
        row-gap: 2rem;
    }

    .services-wrap > a,
    .bg-dark .services-wrap > a {
        flex: 0 0 calc(25% - 1.5rem);
    }
}

a.service-box {
    text-align: center;
    padding: 1.75rem;
    border-radius: 8px;
    background-color: var(--white-color);
    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06), 0 1px 2px 0 rgba(0, 0, 0, 0.15);
}

.service-box-icon img {
    height: 100%;
    width: 100%;
    object-fit:cover;
    aspect-ratio: 16/9;
}

a.service-box h3 {
    color: var(--text-dark);
    margin: 0.75rem 0 0.5rem;
    font-size: 1.5rem;
}

a.service-box p {
    color: var(--text-dark);
    font-size: 1rem;
}

a.service-box:hover {
    box-shadow: 0 8px 24px -4px rgba(0, 0, 0, 0.20), 0 2px 4px 0 rgba(0, 0, 0, 0.10);
}


/* ------- Companies banner -------- */

.companies-section {
    position: relative;
    background-color: #FFFFFF;;
}

.company-logo-boxes {
    display: flex;
    overflow-x: auto;
    gap: 1.5rem;
    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: 0.25rem;
    padding-bottom: 0.25rem;
}

.company-logo-boxes > * {
    flex: 0 0 200px;
    scroll-snap-align: center;    
}

@media screen and (min-width: 768px) {

    .company-logo-boxes {
        overflow: hidden;
        display: flex;
        flex-wrap: wrap;
        gap: 1rem;
        justify-content: center;
        margin: 0 auto;
        padding-left: 0;
        padding-right: 0;
    }

    .company-logo-boxes > * {
        flex-basis: 200px;
    }
}

@media screen and (min-width: 1200px) {

    .company-logo-boxes {
        gap: 1.5rem;
    }

    .company-logo-boxes > * {
        flex-basis: 250px;
    }
}

@media screen and (min-width: 1700px) {

    .company-logo-boxes > * {
        flex-basis: 300px;
    }
}

.logo-block {
    display: block;
    border-radius: 0.5rem;
    box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.25), 0px 1px 4px 0px rgba(0, 0, 0, 0.15);
    overflow: hidden;
}

.logo-block img {
    filter: saturate(0);
    transition: all ease 0.15s;
}

.logo-block img:hover {
    filter: saturate(1);
}

/* ------- Quotes carousel -------- */

.quotes-section {
    position: relative;
    padding-bottom: 0;
}

.quotes-carousel {
    position: relative;
    z-index: 1;
    padding-bottom: clamp(6rem, 5.722rem + 1.203vw, 7rem);
}

.quotes-background-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}

.quotes-background-image img {
    position: absolute;
    bottom:0;
    right: 0;
    height: 100%;
    opacity: 0;
}

@media screen and (min-width: 1200px) {

    .quotes-background-image img {
        opacity: 0.15;
    }
}

.quote-carousel-indicators {
    margin: 0;
    padding-bottom: 2rem;
    gap: 1rem;
}

.quote-carousel-indicators button[data-bs-target] {
    background-color: var(--primary-color-400);
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1px solid var(--primary-color-300);
    margin: 0;
    opacity: 1;
    background-clip: unset;
}

.quote-carousel-indicators button[data-bs-target].active {
    background-color: var(--primary-color-300);
}

.carousel-quote-wrap {
    text-align: center;
    padding: 0 1rem;
}

.carousel-quote-icon {
    margin-bottom: 1.125rem;
}

.carousel-quote-icon img {
    height: 46px;
}

.carousel-quote-wrap p {
    color: var(--neutral-color-100);
    max-width: 60ch;
    margin-left: auto;
    margin-right: auto;
}

p.carousel-quote-text {
    line-height: 1.3;
    font-size: clamp(1.125rem, 1.09rem + 0.15vw, 1.25rem);
    font-weight: 400;
}

p.quote-name {
    color: var(--neutral-color-800);
    font-weight:600;
    margin-bottom: 0;
    line-height: 1.5;
    font-size: 1rem;
}

p.quote-title {
    font-size: 1rem;
}

/* ------- Our projects section ------- */

.our-projects-section {
    background-color: #FFFFFF;
    position: relative;
}

.project-boxes-wrap {
    display: flex;
    overflow-x: auto;
    gap: 1.5rem;
    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: 0.25rem;
    padding-bottom: 2rem;
}

.project-boxes-wrap > a {
    flex: 0 0 240px;
    scroll-snap-align: center;    
}

@media screen and (min-width: 360px) {

    .project-boxes-wrap > a {
        flex-basis: 280px;
    }
}

@media screen and (min-width: 576px) {

    .project-boxes-wrap > a {
        flex-basis: 360px;
    }
}

@media screen and (min-width: 992px) {

    .project-boxes-wrap {
        gap: 1rem;
    }

    .project-boxes-wrap > a {
        flex-basis: calc(33.33% - 0.6667rem);
    }
}

@media screen and (min-width: 1200px) {

    .project-boxes-wrap {
    gap: 2rem;
  }
    .project-boxes-wrap > a {
        flex-basis: calc(33.33% - 1.3333rem);
    }
}

.project-box:hover {
    box-shadow: 0 8px 24px -4px rgba(0, 0, 0, 0.20), 0 2px 4px 0 rgba(0, 0, 0, 0.10);
}
/* ------- CTA banner ------- */

.content-blocks.even + .cta-banner-section {
    background-color: var(--neutral-color-50);
}

.cta-banner-image img {
    border-radius: 8px;
}

.cta-banner-content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;    
    justify-content: center;
    padding: 1.5rem 0 0;
}

@media screen and (min-width: 992px) {
    .cta-banner-content {
        padding: clamp(2rem, 1.722rem + 1.203vw, 3rem);
    }
}

.cta-banner-content p.preamble {
    margin-bottom: 1.5rem;
}

.cta-banner-buttons {
    width: 100%;
    border-top: 2px solid var(--secondary-color);
    padding-top: 1.5rem;
}

.cta-banner-content .cta-banner-buttons a.theme-btn {
    margin-top: 0;
}

/** 3. PROJECTS PAGE **/

.all-project-boxes-wrap {
    display: flex;
    flex-wrap: wrap;
    column-gap: 1rem;
    row-gap: 1.5rem;
}

.all-project-boxes-wrap > a {
    flex: 0 0 100%;
}

@media screen and (min-width: 600px) {

    .all-project-boxes-wrap > a {
        flex-basis: calc(50% - 0.5rem);
    }
}

@media screen and (min-width: 992px) {

    .all-project-boxes-wrap {
        gap: 1rem;
    }

    .all-project-boxes-wrap > a {
        flex-basis: calc(33.33% - 0.6667rem);
    }
}

@media screen and (min-width: 1200px) {

    .all-project-boxes-wrap {
        gap: 2rem;
    }

    .all-project-boxes-wrap > a {
        flex-basis: calc(33.33% - 1.3333rem);
    }
}

/** 4. PROJECT PAGE **/

.project-info-banner-content h2 {
    margin-bottom: 0.625em;
}

.project-info-banner-content h2 span {
    white-space: nowrap;
}

.intro-text-info-item strong {
    text-transform: uppercase;
    margin-right: 0.375em;
} 

.project-article-section {
    padding-top: 0;
}

/* ------- Green banner ------- */

.green-banner-section {
    background-color: var(--primary-color-200);
    position: relative;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.green-banner-section img {
    width: 100%;

}

.green-banner-content {
    position: relative;
    z-index: 2;
    padding: 0;
}

@media screen and (min-width: 992px) {

    .green-banner-content {
        max-width: 50%;
    }
}

/** 5. CONTACT PAGE **/

/* ------- Contact info section ------- */

.contact-info-text h3 {
    font-size: 1.25rem;
}

.contact-info-text h3 {
    margin-top: 1.5rem;
}

ul.contact-info-address li + li {
    margin: 0;
}

ul.contact-info-address li + li.contact-info-address-map-link {
    margin-top: 0.25rem;
}

.contact-info-text li svg {
    color: var(--secondary-color);
    width: 1em;
}

/* ------- Contact persons section ------- */

.contact-persons-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem;
}

.contact-persons-wrap > div {
    flex: 0 0 100%;
    max-width: 100%;
}

@media screen and (min-width: 600px) {

    .contact-persons-wrap {
        gap: 1rem;
    }

    .contact-persons-wrap > div {
        flex-basis: calc(50% - 0.5rem);
        max-width: calc(50% - 0.5rem);
    }
}

@media screen and (min-width: 992px) {

    .contact-persons-wrap > div {
        flex-basis: calc(33.33% - 0.667rem);
        max-width: calc(33.33% - 0.667rem);
    }
}

@media screen and (min-width: 1200px) {

    .contact-persons-wrap {
        gap: 2rem;
    }

    .contact-persons-wrap > div {
        flex-basis: calc(33.33% - 1.3333rem);
        max-width: calc(33.33% - 1.3333rem);
    }
}

/* Contact person box */

ul.contact-person-contact-info {
    list-style: none;
    padding: 0;
}

.contact-person-box.theme-card ul.contact-person-contact-info {
    padding-top: 1rem;
    border-top: 1px solid var(--neutral-color-200);
}

h3:has(+ p.contact-person-title) {
    margin-bottom: 0;
}

p.contact-person-title {
    font-weight: 400;
    margin-bottom: 0.75rem;
}

ul.contact-person-contact-info li {
    white-space: nowrap;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
}

ul.contact-person-contact-info li a {
    color: var(--text-dark);
}

ul.contact-person-contact-info li a:hover {
    color: var(--primary-color);
}

    ul.contact-person-contact-info li svg {
        width: 1em;
        margin-right: 0.375rem;
        color: var( --accent-color);
    }

/* ------- CTA on Contact page ------- */

.contact-page + .cta-banner-section {
    background-color: var(--neutral-color-light);
}


/** 6. NEWS PAGE **/

.news-item-boxes {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem;
}

.news-item-boxes > a {
    flex: 0 0 100%;
}

@media screen and (min-width: 576px) {

    .news-item-boxes {
        gap: 1rem;
    }

    .news-item-boxes > a {
        flex: 0 0 calc(50% - 0.5rem);
    }
}

@media screen and (min-width: 992px) {

    .news-item-boxes {
        gap: 1rem;
    }

    .news-item-boxes > a {
        flex: 0 0 calc(33.33% - 0.66667rem);
    }
}

@media screen and (min-width: 1200px) {

    .news-item-boxes {
        gap: 2rem;
    }

    .news-item-boxes > a {
        flex: 0 0 calc(33.33% - 1.3333rem);
    }
}

@media screen and (min-width: 1700px) {

    .news-item-boxes {
        gap: 3rem;
    }

    .news-item-boxes > a {
        flex: 0 0 calc(33.33% - 2rem);
    }
}

.news-item-box .theme-card-caption {
    padding: clamp(1rem, 0.722rem + 1.203vw, 2rem);
}

/** 7. 404 PAGE **/

.four-o-four-page h1 {
    font-size: clamp(4rem, 3.536rem + 2.319vw, 6rem);
    margin-bottom: 0.125em;
}

.four-o-four-page p.ingress {
    font-size: clamp(1.5rem, 1.384rem + 0.58vw, 2rem);
    margin-bottom: 1em;
}

/** Process card **/

.process {
    background-color: var(--white-color);
}


.process-heading {
    margin-bottom: 3rem;
    font-size: 2rem;
    font-weight: 600;
    line-height: 1.25;
    color: #1a1a1a;
    text-align: center;
}

.process-list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    padding: 0;
    margin: 0;
    list-style: none;
}

@media (min-width: 48rem) {
    .process-list {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 64rem) {
    .process-list {
        grid-template-columns: repeat(4, 1fr);
    }
}

.process-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 2rem 1.5rem;
    border-radius: 8px;
    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06), 0 1px 2px 0 rgba(0, 0, 0, 0.15);
}

.process-card-number {
    margin-bottom: 0.75rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--accent-color);
}

.process-card-title {
    margin-top: 0;
    margin-bottom: 0.5rem;
    font-size: 1.125rem;
    color: var(--text-dark);
    font-weight: 700;
}

.process-card-text {
    margin: 0;
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.35;
    color: var(--text-dark);
}


.contact-cta-headline {
    margin-bottom: 1.5rem;
}

.contact-cta-list {
    margin: 0;
}

.contact-card {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    height: 100%;
    padding: 1.25rem 1.5rem;
    background: #fff;
    border: 1px solid #ddd;
}

.contact-card-image {
    flex: 0 0 160px;
    width: 160px;
    height: 160px;
    border-radius: 50%;
    overflow: hidden;
    background: #e5e5e5; /* visas om bild saknas */
}

    .contact-card-image img {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

.contact-card-body {
    display: flex;
    flex-direction: column;
    min-width: 0; /* låter långa mejladresser brytas */
}

    .contact-card-body p {
        margin: 0;
    }

.contact-card-name {
    font-weight: 700;
    font-size: 1.125rem;
}

.contact-card-title {
    font-size: 0.875rem;
    color: #666;
    margin-bottom: 0.5rem !important;
}

.contact-card-phone {
    font-weight: 700;
    font-size: 1.125rem;
    color: inherit;
    text-decoration: none;
}

.contact-card-email {
    font-size: 0.875rem;
    color: inherit;
    text-decoration: none;
    overflow-wrap: anywhere;
}

    .contact-card-phone:hover,
    .contact-card-email:hover {
        text-decoration: underline;
    }

.contact-card-body svg {
    width: 1em;
    margin-right: 0.375rem;
    color: var(--secondary-color);
}

.text-article-block.article-block {
    max-width: 1000px;
    margin: 0 auto;
}


.byline {
    position: absolute;
    bottom: 1rem;
    left: 1rem;
    color: var(--text-white);
    font-size: 0.75rem;
}