/* ==========================================================================
   Rifiniture mobile — caricato per ultimo su ogni pagina.
   ========================================================================== */

/* Sfondo esplicito: se un browser mostra l'area fuori dal body (overscroll,
   overflow), è bianca e non il nero di default del WebView. */
html {
    background: var(--white, #fff);
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    overscroll-behavior-x: none;
}

/* iOS Safari ignora overflow-x:hidden su body per il pan orizzontale;
   "clip" non crea scroll container e non permette di trascinare di lato. */
html,
body {
    overflow-x: clip;
}

img,
video,
iframe,
svg {
    max-width: 100%;
}

/* Email/indirizzi lunghi vanno a capo invece di allargare la pagina. */
.contact-link,
.footer-contact a,
.footer-contact span,
.footer-description,
.info-card,
.location-card p {
    overflow-wrap: anywhere;
}

/* Una griglia a 1fr non deve mai crescere oltre il viewport per colpa del
   min-content di un figlio (causa dell'overflow su home e contatti). */
.founder-content > *,
.contact-content > *,
.about-content > *,
.about-intro-content > *,
.consultation-content > *,
.consultation-wrapper > *,
.footer-content > *,
.partnership-content > *,
.specs-content > *,
.fast-track-wrapper > *,
.finishes-wrapper > *,
.overview-grid > *,
.overview-highlights > *,
.value-grid > *,
.systems-grid > *,
.benefits-grid > *,
.categories-grid > *,
.materials-grid > *,
.services-grid > *,
.home-services-grid > *,
.contact-cards > *,
.stats-grid > *,
.map-content > * {
    min-width: 0;
}

/* Link footer del tipo "telefono/email" ereditano il colore del testo. */
.footer-contact .contact-item a {
    color: inherit;
    text-decoration: none;
}

.footer-contact .contact-item a:hover {
    color: var(--white, #fff);
}

@media (max-width: 768px) {

    /* --- Animazioni di ingresso senza spostamento laterale ------------
       Gli elementi con reveal "left/right" (sito) e fade-left/right, zoom
       (AOS) partono spostati di 45-100px di lato: fuori dallo schermo
       allargano l'area scrollabile e su iOS si può trascinare la pagina di
       lato, scoprendo il vuoto (nero) a destra. Su mobile entrano dal basso. */
    .js [data-reveal="left"],
    .js [data-reveal="right"] {
        --reveal-x: 0;
        --reveal-y: 32px;
    }

    [data-aos="fade-left"]:not(.aos-animate),
    [data-aos="fade-right"]:not(.aos-animate),
    [data-aos="fade-up-left"]:not(.aos-animate),
    [data-aos="fade-up-right"]:not(.aos-animate),
    [data-aos="zoom-in"]:not(.aos-animate) {
        transform: translate3d(0, 28px, 0);
    }

    /* --- Galleria portfolio: 2 colonne quadrate invece di 17 foto a tutta
       larghezza in fila (scroll interminabile). ------------------------ */
    .portfolio-gallery {
        padding-top: 3rem;
    }

    .gallery-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.5rem;
    }

    .gallery-item {
        aspect-ratio: 1 / 1;
        border-radius: 0.75rem;
    }

    /* --- Area di tocco minima 44px ------------------------------------ */
    .footer-bottom-links {
        display: flex;
        flex-wrap: wrap;
        gap: 0 1rem;
    }

    .footer-bottom-links a,
    .footer-contact .contact-item a {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
    }

    .social-link {
        width: 44px;
        height: 44px;
    }

    .contact-link {
        display: block;
        padding: 0.7rem 0;
        min-height: 44px;
    }

    .leaflet-touch .leaflet-bar a {
        width: 44px;
        height: 44px;
        line-height: 44px;
    }

    /* Un campo con font < 16px fa zoomare Safari iOS al focus.
       I campi ereditano il font del sito (la textarea era monospace). */
    input,
    select,
    textarea {
        font-size: 16px;
        font-family: inherit;
    }

    /* Ritmo verticale uniforme nel modulo: la riga in coppia sommava il
       proprio margine a quello dei campi (60px tra alcuni campi, 24px tra altri). */
    .form-row {
        margin-bottom: 0;
    }

    /* Casella privacy con area di tocco reale: tutta la riga è cliccabile. */
    .checkbox-group {
        align-items: flex-start;
        min-height: 44px;
    }

    .checkbox-group input[type="checkbox"] {
        width: 1.5rem;
        height: 1.5rem;
        margin-top: 0.1rem;
    }

    /* Il pulsante WhatsApp non deve finire sotto la barra home di iOS. */
    .whatsapp-widget {
        bottom: max(1rem, env(safe-area-inset-bottom));
        right: max(1rem, env(safe-area-inset-right));
    }

    /* Il video hero non deve costringere un poster/scroll più alto dello schermo. */
    .hero {
        height: min(90vh, 90svh);
    }
}
