/* Stili globali — condivisi da tutte le pagine */
@import url("./variables.css");
html {
    scroll-behavior: smooth;
    scroll-padding-top: var(--header-height);
}

h1,h2,h3,h4,h5,h6{
    color: var(--dark-gray);
}

p{
    color: var(--soft-gray);
}

.gray-text{
    color: var(--soft-gray);
}

.secondary-text{
    color: var(--secondary-ui);
}

.dark-text{
    color: var(--dark-gray);
}

.fit-content{
    width: fit-content;
}

.custom-my{
    margin-top: 5rem;
    margin-bottom: 7.5rem;
}

.custom-mb{
    margin-bottom: 2.25rem;
}
.mb-80{
    margin-bottom: 7.5rem;
}
@media (max-width: 767.98px) {
    .mb-80{
        margin-bottom: 3rem; /* = mb-5 */
    }
}
.pb-80{
    padding-bottom: 7.5rem;
}
.custom-py{
    padding-block: 7.7rem;
}
@media (max-width: 767.98px) {
    .custom-py{
        padding-block: 3rem;
    }
}
.title-stroke{
    max-width: 100%;
    height: auto;
}
header{
    background-color: white;
    position: fixed;
    top: 0;
    width: 100%;
    z-index: 2;
}
nav ul li a {
    color: var(--dark-gray);
    text-decoration: none;
    font-weight: 600;
}
.hero h1{
    line-height: 0.9;
}
.hero{
    background-image: url('../img/EditHeroDEF.webp');
    min-height: 200vh;
    background-size: cover;
    background-repeat: no-repeat;
    box-shadow: inset 0 0 0 2000px rgba(0, 0, 0, 0.4);
}
.proj-hero{
    margin-top: var(--header-height);
    min-height: 50vh;
}
@media (max-width: 767.98px) {
    .container-mobile{
        padding-inline: 0.75rem;
        margin-inline: auto;
    }
}
@media (min-width: 576px) and (max-width: 767.98px) {
    .container-mobile{
        max-width: 540px;
    }
}
/* Override container Bootstrap su mobile: più margine laterale */
@media (max-width: 767.98px) {
    .container,
    .container-mobile{
        padding-inline: 1.5rem;
    }
}
.hero-text-section{
    height: 100vh;
    display: flex;
    align-items: center;
}
.offset-top{
    padding-top: 10vh;
}
.scroll-btn{
    width: 50px;
    aspect-ratio: 1/1;
    border-radius: 50%;
    background-color: var(--primary-ui);
    display: flex;
    justify-content: center;
    align-items: center;
    border: none;
    transition: background-color 0.3s ease-in-out;
}
.scroll-btn:hover{
    background-color: var(--primary-hover);
}
.cta-btn{
    background-color: var(--secondary-ui);
    padding: 0.6rem 1rem;
    border-radius: 2rem;
    text-decoration: none;
    color: white;
    transition: 0.3s ease-in-out;
    text-transform: uppercase;
}
.negative-cta-btn{
    background-color: white;
    padding: 0.6rem 1rem;
    border-radius: 2rem;
    text-decoration: none;
    color: var(--secondary-ui);
    transition: 0.3s ease-in-out;
    text-transform: uppercase;

}
.negative-cta-btn:hover{
    background-color: rgb(232, 232, 232);
    color: var(--secondary-hover);
}
.cta-btn:hover{
    background-color: var(--secondary-hover);
}
.btn-null{
    background: transparent;
    border: none;
}
.per-text-bg{
    position: relative;
    isolation: isolate;
}
.per-text-bg::before{
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: url('../img/metroritracciata.svg') center / contain no-repeat;
    opacity: 0.1;
    pointer-events: none;
}
@media (max-width: 767.98px) {
    .per-text-bg::before{
        background-image: url('../img/metroritracciata-verticale.svg');
    }
}
.percorso-img-wrapper{
    height: 500px;
    border-radius: 10px;
    overflow: hidden;
}
.percorso-img-wrapper img{
    object-position: 20%;
}
@media(max-width: 768px){
    .percorso-img-wrapper{
        height: 200px;
        border-radius: 10px;
        overflow: hidden;
    }
}

.secondary-bg{
    background-color: var(--secondary-ui);
    position: relative;
    min-height: 700px;
    overflow-x: clip;
    /* taglia solo il bordo inferiore: il mockup emerge dal fondo durante l'animazione */
    clip-path: inset(-100vh 0 0 0);
}
.webapp-mockup{
    position: relative;
    z-index: 1;
    width: 100%;
    height: auto;
    margin-top: 3rem;
}
@media (min-width: 992px) {
    .webapp-mockup-col{
        position: relative;
    }
    .webapp-mockup{
        position: absolute;
        right: -5%;
        bottom: -1.5rem;
        width: 120%;
        max-width: none;
        margin-top: 0;
        pointer-events: none;
    }
}
.logo-abs{
    position: absolute;
    bottom: 0;
    right: 0;
    height: 430px;
    max-height: 430px;
    object-fit: cover;
}
footer{
    background-color: var(--footer-bg);
    padding: 6.25rem 0;
}

/* Mobile: loghi impilati, uno per riga, senza separatori */
.footer-logos{
    --logos-scale: 1.4;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem;
}
.footer-logo{
    display: flex;
    align-items: center;
}
.footer-logo img{
    display: block;
    width: auto;
    max-width: 100%;
    object-fit: contain;
}
.footer-logo .logo-unige{
    height: calc(26px * var(--logos-scale));
}
.footer-logo .logo-comune{
    height: calc(42px * var(--logos-scale));
}
.footer-logo .logo-sanpaolo{
    height: calc(30px * var(--logos-scale));
}
.footer-logo-col{
    border-bottom: 2px solid white;
    padding-bottom: 3rem;
}

.bg-img-sect{
    background-image: url('../img/sottoripaEdit.webp');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    border-radius: 10px;
    overflow: hidden;
    min-height: 500px;
    display: flex;
}
.bg-img-sect > .row{
    flex: 1;
}
.bg-img-bars{
    display: block;
    width: 100%;
    height: 100%;
}
@media (min-width: 768px) {
    .footer-logo-col{
        border-right: 2px solid white;
        border-bottom: none;
        padding-right: 3rem;
    }
    .footer-logos{
        --logos-scale: 1;
        flex-direction: row;
        align-items: stretch;
        gap: 0;
    }
    .footer-logo{
        padding-inline: calc(16px * var(--logos-scale));
    }
    .footer-logo:first-child{
        padding-inline-start: 0;
    }
    .footer-logo:nth-child(2){
        padding-inline-end: calc(24px * var(--logos-scale));
    }
    .footer-logo:last-child{
        padding-inline: calc(24px * var(--logos-scale)) 0;
    }
    .footer-logo + .footer-logo{
        border-inline-start: 1px solid rgb(255 255 255 / 0.35);
    }
}
@media (min-width: 992px) {
    .footer-logos{
        --logos-scale: 1.4;
    }
}
@media (min-width: 1200px) {
    .footer-logos{
        --logos-scale: 1.7;
    }
}
@media (min-width: 1400px) {
    .footer-logos{
        --logos-scale: 2;
    }
}

.partner-logos{
    --partner-scale: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2.5rem;
}
.partner-logo{
    display: flex;
    align-items: center;
}
.partner-logo img{
    display: block;
    width: auto;
    max-width: 100%;
    object-fit: contain;
}
.partner-logo .logo-unige{
    height: calc(26px * var(--partner-scale));
}
.partner-logo .logo-comune{
    height: calc(42px * var(--partner-scale));
}
.partner-logo .logo-sanpaolo{
    height: calc(30px * var(--partner-scale));
}

.partner-text a{
    color: var(--primary-ui);
}
@media (min-width: 768px) {
    .partner-logos{
        --partner-scale: 1.8;
        --partner-gap: 2.5;
        flex-direction: row;
        justify-content: center;
        gap: 0;
    }
    .partner-logo{
        padding-inline: calc(16px * var(--partner-gap));
    }
    .partner-logo:first-child{
        padding-inline-start: 0;
    }
    .partner-logo:nth-child(2){
        padding-inline-end: calc(24px * var(--partner-gap));
    }
    .partner-logo:last-child{
        padding-inline: calc(24px * var(--partner-gap)) 0;
    }
}
@media (min-width: 992px) {
    .partner-logos{
        --partner-scale: 2.2;
        --partner-gap: 3;
    }
}
@media (min-width: 1200px) {
    .partner-logos{
        --partner-scale: 2.6;
        --partner-gap: 3.5;
    }
}
@media (min-width: 1400px) {
    .partner-logos{
        --partner-scale: 3;
        --partner-gap: 4;
    }
}