:root {
    --font-sans: "Helvetica Neue", HelveticaNeue, Helvetica, Arial, sans-serif;
    --font-serif: "Libre Bodoni", Georgia, serif;
    --blue: #00286E;
    --cerulean: #59B4E3;
    --light-cerulean: #C6E5F5;
    --white: #FFFFFF;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    color: var(--blue);
}

html {
    font-size: 4px;
    scroll-behavior: smooth;
}

html, body {
    width: 100%;
    overflow-x: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

html::-webkit-scrollbar,
body::-webkit-scrollbar {
    display: none;
}

body, * {
    font-family: var(--font-sans);
    font-weight: 300;
    font-size: 3rem;
    color: var(--blue);
    line-height: 1.2;
    text-wrap: pretty;
    -webkit-text-wrap: pretty;
}





/* typography */

p strong {
    font-size: inherit;
    font-family: inherit;
    font-weight: 700;
    color: inherit;
}

h1, h2, h3, .metodo-item-number, .servizi-item-copy {
    font-family: var(--font-serif);
    font-weight: 300;
    line-height: 1;
}

h1 strong {
    font-size: inherit;
    font-family: inherit;
    font-weight: inherit;
    color: var(--cerulean);
}

p {
    text-transform: uppercase;
}

small, small a, .footer-credits small span {
    font-family: inherit;
    font-size: 2rem;
    font-weight: inherit;
    color: inherit;
    text-transform: inherit;
}

p:has(small) {
    line-height: 0.5;
}

h1 {
    font-size: 9rem;
}

h2 {
    font-size: 7rem;
}

h3 {
    color: var(--cerulean) !important;
    font-size: 9rem;
    text-transform: uppercase;
}

.word, .line {
    font-family: inherit;
    font-weight: inherit;
    font-size: inherit;
    color: inherit;
    line-height: inherit;
    text-transform: inherit;
    text-wrap: inherit;
    text-align: inherit;
    text-decoration: inherit;
}



/* sections */

main, nav {
    padding-inline: 12.5rem;
}

section {
    padding-block: 25rem;
}

#title {
    border-bottom: 1rem solid var(--cerulean);
}




/* nav */

nav {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(255, 255, 255, .7);
    z-index: 100;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 10rem;
    backdrop-filter: blur(2rem);
    -webkit-backdrop-filter: blur(2rem);
    visibility: hidden;
    opacity: 0;
    transition: opacity 2s cubic-bezier(.3,0,0,1), visibility 0s 2s;
}

nav.open {
    visibility: visible;
    opacity: 1;
    transition-delay: 0s;
}

nav a {
    width: 70%;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    text-decoration: none;
    opacity: 0;
    filter: blur(1rem);
    transition: opacity 2s cubic-bezier(.6,0,0,1), width 2s cubic-bezier(.6,0,0,1), filter 2s cubic-bezier(.6,0,0,1);
}

nav.open a {
    opacity: 1;
    width: 100%;
    filter: blur(0rem);
}

nav a p {
    color: var(--cerulean);
}

nav a:nth-of-type(even) {
    flex-direction: row-reverse;
}

.nav-toggle {
    position: fixed;
    top: 12.5rem;
    right: 12.5rem;
    width: 5rem;
    height: 5rem;
    z-index: 101;
    cursor: pointer;
}

.nav-toggle span {
    width: 100%;
    height: 1px;
    background: var(--blue);
    position: absolute;
    transition: transform 2s cubic-bezier(.6,0,0,1);
}

.nav-toggle span:nth-of-type(1) {
    top: 0;
    transform: translate(0, 0) scaleX(1) rotate(0deg);
}

.nav-toggle span:nth-of-type(2) {
    top: 50%;
    transform: translate(0, -50%) scaleX(1) rotate(0deg);
}

.nav-toggle span:nth-of-type(3) {
    bottom: 0;
    transform: translate(0, 0) scaleX(1) rotate(0deg);
}

.nav-toggle.open span:nth-of-type(1) {
    top: 0;
    transform: translate(0, 2.5rem) scaleX(1) rotate(-45deg);
}

.nav-toggle.open span:nth-of-type(2) {
    top: 50%;
    transform: translate(0, -50%) scaleX(0) rotate(0deg);
}

.nav-toggle.open span:nth-of-type(3) {
    bottom: 0;
    transform: translate(0, -2.275rem) scaleX(1) rotate(45deg);
}





/* header */

header, footer {
    height: 70vh;
    position: relative;
    background: linear-gradient(to bottom, var(--cerulean), var(--light-cerulean));
    overflow: hidden;
}

.header-logo {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10rem;
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    transform: translateY(calc(-50% + 3rem + 10rem));
}

.header-logo img {
    width: 45%;
    height: auto;
}

.cloud {
    position: absolute;
    height: auto;
    width: 400vw;
    top: -60vw;
    left: 0;
    filter: blur(1rem);
    animation: cloud 20s linear infinite;
    pointer-events: none;
}

.cloud:nth-of-type(2) {
    width: 400vw;
    top: auto;
    bottom: -55vw;
    animation-duration: 25s;
}

@keyframes cloud {
    0% {
        transform: translate(0, 10%);
    }

    50% {
        transform: translate(-25%, -10%);
    }

    100% {
        transform: translate(-50%, 10%);
    }
}




/* metodo */

#metodo {
    display: flex;
    flex-direction: column;
    gap: 10rem;
}

.metodo-item {
    display: grid;
    grid-template-columns: 15rem auto
}

.metodo-item-number {
    color: var(--cerulean);
    align-self: center;
    font-size: 8rem;
}

.metodo-item-text {
    align-self: center;
    display: flex;
    flex-direction: column;
    gap: 2rem;
}



/* servizi */

#servizi {
    width: calc(100% + 25rem);
    margin-left: -12.5rem;
    background: var(--blue);
    padding-inline: 12.5rem;
    display: flex;
    flex-direction: column;
    gap: 10rem;
}

#servizi * {
    color: var(--white);
}

#servizi h3, #servizi h3 * {
    color: var(--cerulean) !important;
}

.servizi-item-copy {
    font-size: 3rem;
    text-transform: uppercase;
    opacity: 0.2;
    letter-spacing: 0.2em;
}

.servizi-item {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.servizi-item-description {
    margin-top: 1.5rem;
}

.servizi-item:nth-of-type(2) {
    text-align: right;
}



/* footer */

.footer-logo, .footer-contacts, .footer-credits {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: absolute;
    left: 0;
    width: 100%;
    text-align: center;
}

.footer-logo {    
    gap: 5rem;
    top: 50%;
    transform: translateY(-50%);
}

.footer-contacts {    
    gap: 5rem;
    top: 75%;
    transform: translateY(-50%);
}

.footer-credits {
    bottom: 10rem;
}




/* portfolio */

#portfolio {
    padding-bottom: 35rem;
}


.portfolio-wrapper {
    width: calc(100% + 25rem);
    margin-left: -12.5rem;
    margin-block: 10rem;
    position: relative;
}

.portfolio-ticker {
    width: 300vw;
    position: relative;
    left: -12.5rem;
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    animation: ticker 15s linear infinite;
    gap: 10vw;
    margin-block: 10rem;
}

.portfolio-ticker:nth-of-type(2) {
    animation-direction: reverse;
}

.portfolio-item {
    width: 20vw;
    height: 10vw;
    object-fit: contain;
    filter: grayscale(100%);
}

@keyframes ticker {
    0% {
        transform: translateX(0);
    }
    100% {
        transform: translateX(-50%);
    }
}

.portfolio-shader {
    position: absolute;
    width: 100%;
    height: 100%;
    background: linear-gradient(to right, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
    top: 0;
    left: 0;
}




/* animations */

.animate.split-word .word {
    transform: translateY(30%);
    opacity: 0;
    filter: blur(1rem);
    transition: transform 1s cubic-bezier(.45,0,0,1), opacity 1s cubic-bezier(.45,0,0,1), filter 1s cubic-bezier(.45,0,0,1);    
    transition-delay: calc(var(--word-index) * 100ms);
}

.animate.show.split-word .word {
    transform: translateY(0);
    opacity: 1;
    filter: blur(0rem);
}

.metodo-item-number {
    transform: scale(0);
    opacity: 0;
    filter: blur(1rem);
    transition: transform 1s cubic-bezier(.45,0,0,1), opacity 1s cubic-bezier(.45,0,0,1), filter 1s cubic-bezier(.45,0,0,1);  
}

.metodo-item.show .metodo-item-number {
    transform: scale(1);
    opacity: 1;
    filter: blur(0rem);
}

.metodo-item .split-word .word, .servizi-item .split-word .word {    
    transform: translateY(30%);
    opacity: 0;
    filter: blur(1rem);
    transition: transform 1s cubic-bezier(.45,0,0,1), opacity 1s cubic-bezier(.45,0,0,1), filter 1s cubic-bezier(.45,0,0,1);
    transition-delay: calc((var(--word-index) * 100ms) + 250ms);
}

.metodo-item .split-line .word, .servizi-item .split-line .word {    
    transform: translateY(30%);
    opacity: 0;
    filter: blur(.5rem);
    transition: transform 1s cubic-bezier(.45,0,0,1), opacity 1s cubic-bezier(.45,0,0,1), filter 1s cubic-bezier(.45,0,0,1);
    transition-delay: calc((var(--line-index) * 100ms) + 500ms);
}

.metodo-item.show .split-line .word, .metodo-item.show .split-word .word, .servizi-item.show .split-line .word, .servizi-item.show .split-word .word {
    transform: translateY(0);
    opacity: 1;
    filter: blur(0rem);
}

.servizi-item .servizi-item-copy {
    transform: translateY(30%);
    opacity: 0;
    filter: blur(1rem);
    transition: transform 1s cubic-bezier(.45,0,0,1), opacity 1s cubic-bezier(.45,0,0,1), filter 1s cubic-bezier(.45,0,0,1);
}

.servizi-item.show .servizi-item-copy {
    transform: translateY(0);
    opacity: 1;
    filter: blur(0rem);
}





/* desktop */

@media (min-width: 1024px) {

    html {
        font-size: 5px;
    }

    main, nav {
        padding-inline: 20vw;
    }

    header, footer {
        height: 80vh;
    }

    section {
        padding-block: 35rem;
    }

    .header-logo, .footer-logo {
        gap: 5rem;
        transform: translateY(calc(-50% + 3rem + 5rem));
    }

    .header-logo img, .footer-logo img {
        width: 20%;
    }

    .cloud {
        width: 200vw;
        top: -40vw;
    }

    .cloud:nth-of-type(2) {
        width: 200vw;
        bottom: -35vw;
    }

    #title h1 {
        font-size: 12rem;
    }

    #metodo {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 7.5rem;
    }

    #servizi, .portfolio-wrapper {
        width: calc(100% + 40vw);
        margin-left: -20vw;
    }

    #servizi {
        padding-inline: 20vw;
        gap: 0;
    }

    .servizi-item:nth-of-type(1), .servizi-item:nth-of-type(3) {
        padding-inline-end: 60%;
    }

    .servizi-item:nth-of-type(2) {
        padding-inline-start: 60%;
    }

    .portfolio-ticker {
        gap: 20vw;
        animation-duration: 30s;
    }

    .portfolio-item {
        width: 10vw;
        height: 5vw;
    }

    footer .cloud {
        top: -35vw;
    }

    @keyframes cloud {
        0% {
            transform: translate(0, 5%);
        }
    
        50% {
            transform: translate(-25%, -5%);
        }
    
        100% {
            transform: translate(-50%, 5%);
        }
    }

}