/* Home page hero: contenitore del blocco hero iniziale allineato a sinistra */
.hero-call-left .container {
    display: flex;
    justify-content: flex-start;
}

/* Home page hero: sezione principale con altezza piu contenuta rispetto al full viewport */
.hero-barletta {
    position: relative;
    min-height: 620px;
}

/* Home page hero: la fotografia si vede come e', senza velo scuro sopra.
   La leggibilita' del testo bianco e' affidata all'ombra di un pixel
   dichiarata piu' sotto. */
.hero-barletta::before {
    content: '';
    position: absolute;
    inset: 0;
    background: none;
}

/* Home page hero: contenuto testuale in primo piano sopra l'immagine */
.hero-call-left__content {
    position: relative;
    z-index: 1;
    max-width: 760px;
    margin-left: 0;
    margin-right: auto;
}

/* Home page hero: titolo principale con evidenza sulla parola Barletta */
.hero-call-left__title {
    color: #fff;
    font-size: 4rem;
    font-weight: 700;
    line-height: 1.08;
}

/* Home page hero: parola evidenziata nel titolo */
.hero-call-left__title span {
    color: var(--ip-green);
}

/* Apertura delle pagine: testo descrittivo sotto il titolo.
   Occupa tutta la larghezza del contenitore: gli a capo si decidono dal
   pannello scrivendo <br> nel sottotitolo, non da una misura fissa qui. */
.hero-call-left__subtitle {
    max-width: 100%;
    color: rgba(255, 255, 255, 0.92);
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Home page hero: gruppo pulsanti affiancato e coerente con lo stile del tema */
.hero-call-left__actions {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 12px;
    max-width: 500px;
    align-items: stretch;
}

/* Home page hero: pulsanti principali affiancati con proporzioni da tema */
.hero-call-left__btn {
    flex: 0 0 calc(50% - 6px);
    width: calc(50% - 6px);
    max-width: calc(50% - 6px);
    min-height: 50px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 18px;
    border-radius: 5px;
    font-size: 0.88rem;
    font-weight: 600;
    box-shadow: 0 10px 24px rgba(16, 24, 40, 0.16);
    white-space: nowrap;
    transition: all 0.2s ease-in-out;
}

/* Home page hero: pulsante verde principale cerca immobili in stile tema */
.hero-call-left__btn--primary {
    background-color: var(--ip-green);
    border-color: var(--ip-green);
    color: #fff;
}

/* Home page hero: icona bianca nel pulsante principale */
.hero-call-left__btn--primary i {
    color: #fff;
}

/* Home page hero: hover pulsante principale coerente con il tema */
.hero-call-left__btn--primary:hover,
.hero-call-left__btn--primary:focus {
    background-color: var(--ip-green-dark);
    border-color: var(--ip-green-dark);
    color: #fff;
}

/* Home page hero: pulsante secondario outlined coerente con il tema */
.hero-call-left__btn--secondary {
    background-color: var(--ip-superficie);
    border: 2px solid #fff;
    color: var(--ip-navy-title);
}

/* Home page hero: icona verde nel pulsante secondario */
.hero-call-left__btn--secondary i {
    color: var(--ip-green);
}

/* Home page hero: hover pulsante secondario con contrasto chiaro su sfondo foto */
.hero-call-left__btn--secondary:hover,
.hero-call-left__btn--secondary:focus {
    background-color: var(--ip-green-light);
    border-color: #fff;
    color: var(--ip-navy-title);
}

/* Home page hero: icona secondaria sempre verde anche in hover */
.hero-call-left__btn--secondary:hover i,
.hero-call-left__btn--secondary:focus i {
    color: var(--ip-green-dark);
}

/* Banner contatti: etichetta introduttiva sopra il titolo della hero */
.hero-call-left__eyebrow {
    display: inline-block;
    margin-bottom: 1rem;
    color: var(--ip-green);
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}

/* Banner contatti: overlay chiaro a sinistra per avvicinare il layout al mockup */
.hero-contatti.hero-barletta::before {
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 255, 255, 0.9) 34%, rgba(255, 255, 255, 0.2) 62%, rgba(255, 255, 255, 0.04) 100%);
}

/* Banner contatti: box testo compatto e allineato al mockup desktop */
.hero-contatti .hero-call-left__content {
    max-width: 380px;
}

/* Banner contatti: titolo scuro con resa piu editoriale sul lato sinistro */
.hero-contatti .hero-call-left__title {
    color: var(--ip-navy-title);
    font-size: 4.15rem;
    line-height: 1.02;
}

/* Banner contatti: parola evidenziata con lo stesso blu del titolo */
.hero-contatti .hero-call-left__title span {
    color: var(--ip-navy-title);
}

/* Banner contatti: testo descrittivo scuro e leggibile sul fondo chiaro */
.hero-contatti .hero-call-left__subtitle {
    max-width: 100%;
    color: #3d4a66;
    font-size: 1.08rem;
    font-weight: 500;
    line-height: 1.7;
}

/* Banner contatti: pulsanti impilati in colonna come nel riferimento */
.hero-contatti .hero-call-left__actions--stacked {
    flex-direction: column;
    gap: 14px;
    max-width: 280px;
    align-items: stretch;
}

/* Banner contatti: pulsanti full width con allineamento interno a sinistra */
.hero-contatti .hero-call-left__btn {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
    min-height: 54px;
    justify-content: flex-start;
    padding: 0 20px;
    font-size: 0.95rem;
}

/* Banner contatti: CTA secondaria con bordo verde su sfondo chiaro */
.hero-contatti .hero-call-left__btn--secondary {
    background-color: rgba(255, 255, 255, 0.9);
    border-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 50%, transparent);
    color: var(--ip-green);
}

/* Banner contatti: testo e icona della CTA secondaria coerenti con il brand */
.hero-contatti .hero-call-left__btn--secondary,
.hero-contatti .hero-call-left__btn--secondary i {
    color: var(--ip-green);
}

/* Banner contatti: stato hover della CTA secondaria con contrasto morbido */
.hero-contatti .hero-call-left__btn--secondary:hover,
.hero-contatti .hero-call-left__btn--secondary:focus {
    background-color: var(--ip-green-light);
    border-color: var(--ip-green);
    color: var(--ip-green-dark);
}

/* Layout pagina home: spazio superiore allineato all'altezza reale della top bar desktop */
body {
    padding-top: 144px;
}

/* Home page: wrapper della sezione ricerca senza padding verticale aggiuntivo */
.home-search-shell {
    padding-top: 0;
    padding-bottom: 0;
}

/* Sezioni delle pagine: mezzo respiro sopra e mezzo sotto, cosi' due sezioni
   accostate distano sempre --ip-sp-sezione, su qualsiasi pagina. */
.home-section {
    padding-top: var(--ip-sp-blocco);
    padding-bottom: var(--ip-sp-blocco);
}

/* Prima sezione dopo il banner e ultima prima del pie' di pagina: respiro
   intero, per pareggiare i due margini della pagina alle distanze interne. */
#content > *:not(.home-section) + .home-section {
    padding-top: var(--ip-sp-sezione);
}

#content > .home-section:last-of-type {
    padding-bottom: var(--ip-sp-sezione);
}

/* Testata di sezione: titolo, filetto verde e testo introduttivo. */
.home-section h2.text-heading,
.home-section .services-section-heading,
.home-section .presentation-highlight__title {
    margin-bottom: var(--ip-sp-testata) !important;
}

.home-section .heading-divider {
    margin-top: 0;
    margin-bottom: var(--ip-sp-testata);
}

/* Testo introduttivo subito sotto il filetto: stacca il contenuto della sezione.
   Vale solo per il paragrafo di presentazione: dove sotto al filetto c'e' gia'
   il contenuto vero della sezione (chi siamo "la nostra storia") non serve. */
.home-section .heading-divider + p {
    margin-bottom: var(--ip-sp-blocco) !important;
}

/* Testata senza testo introduttivo: e' il contenitore a staccare il contenuto */
.ip-testata {
    margin-bottom: var(--ip-sp-blocco) !important;
}

/* Pagina servizi: la testata centrata usa lo stesso stacco delle altre */
.services-section__header {
    margin-bottom: var(--ip-sp-blocco);
}

/* Pagina dettaglio immobile: barra delle azioni (preferiti, stampa,
   condividi) chiusa a filo; la distanza dalle fotografie la stabilisce la
   sezione della gallery qui sotto. */
.property-detail-azioni {
    margin-bottom: 0 !important;
}

/* La barra delle azioni appartiene visivamente alle fotografie, non e' una
   sezione a se': qui il respiro non e' quello comune fra sezioni ma i 15px
   richiesti, cosi' i pulsanti restano attaccati al mosaico. */
#content > *:not(.home-section) + .home-section.ip-detail-desktop-gallery {
    padding-top: 15px;
}

/* Nessun margine residuo in fondo alla colonna della scheda: altrimenti si
   sommerebbe al respiro della sezione. */
.property-detail-article > *:last-child {
    margin-bottom: 0 !important;
}

/* Pagina dettaglio immobile: i pannelli della scheda (prezzo, caratteristiche,
   dettagli, descrizione, richiesta informazioni) sono elementi dentro una
   sezione, quindi distano fra loro come gli altri blocchi interni. */
.property-detail-article > .property-detail-panel {
    margin-top: 0 !important;
    margin-bottom: var(--ip-sp-blocco) !important;
}

.property-detail-article > .property-detail-panel:last-child {
    margin-bottom: 0 !important;
}


/* Righe dei quattro riquadri (home "in cosa possiamo aiutarti", chi siamo
   "i nostri valori"): stesso stacco fra le righe e fra i riquadri impilati. */
.ip-blocchi-riga {
    margin-top: 0;
    margin-bottom: 0;
}

.ip-blocchi-riga + .ip-blocchi-riga {
    margin-top: var(--ip-sp-blocco);
}

@media (max-width: 991.98px) {
    .ip-blocchi-riga > [class*="col-"] {
        margin-bottom: var(--ip-sp-blocco);
    }

    .ip-blocchi-riga > [class*="col-"]:last-child {
        margin-bottom: 0;
    }
}

/* Le schede recensione hanno 10px di respiro proprio sopra e sotto (py-2 nel
   markup del template): il recupero qui le riporta a filo della sezione, come
   accade in orizzontale con mx-n2. Sotto i 992px lo slider mostra i pallini di
   scorrimento, che occupano quello spazio: li' il recupero non va applicato. */
@media (min-width: 992px) {
    .google-reviews-home__slider {
        margin-top: -10px;
        margin-bottom: -10px;
    }
}

/* Il box ricerca della home e' alzato di 50px sopra il proprio posto
   (.top-lg-n50px): senza questo recupero lascerebbe sotto di se' 50px vuoti e
   la prima sezione risulterebbe piu' staccata delle altre. */
@media (min-width: 992px) {
    .home-search-shell {
        margin-bottom: -50px;
    }
}

/* Home page: CTA secondarie della pagina con raggio uniforme al sistema bottoni */
.section-cta-button {
    border-radius: 5px !important;
}

/* Header principale: barra menu sempre visibile in alto durante lo scroll */
.main-header.header-sticky,
.main-header.header-mobile-lg {
    position: fixed !important;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1080;
}

/* Header principale: area sticky sempre ancorata con sfondo bianco come il layout originale */
.main-header.header-sticky .sticky-area,
.main-header.header-mobile-lg .sticky-area {
    background-color: var(--ip-superficie) !important;
    box-shadow: 0 11px 30px 0 rgba(51, 51, 51, 0.15);
}

/* Header desktop: banda viola superiore con riferimenti rapidi dell'agenzia */
.desktop-header-topbar {
    background-color: var(--ip-barra-superiore, var(--ip-navy)) !important;
    padding-top: 0.625rem;
    padding-bottom: 0.625rem;
}

/* Header desktop: contenuto della banda superiore allineato tra contatti e social */
.desktop-header-topbar__inner {
    min-height: 32px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

/* Header desktop: gruppo contatti distribuito orizzontalmente con spaziatura coerente al riferimento */
.desktop-header-topbar__contacts {
    display: flex;
    align-items: center;
    gap: 18px;
}

/* Header desktop: gruppo social compatto con spaziatura tra label e icone */
.desktop-header-topbar__social {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Header desktop: link della banda viola leggibili come nella top bar originale */
.desktop-header-topbar__contact-link,
.desktop-header-topbar__social-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--ip-barra-superiore-testo, #ffffff);
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.2;
    text-decoration: none;
}

/* Header desktop: icone dei riferimenti superiori calibrate sulla top bar pubblica */
.desktop-header-topbar__contact-link i {
    font-size: 0.82rem;
}

/* Header desktop: hover dei link contatto coerente con la banda viola */
.desktop-header-topbar__contact-link:hover,
.desktop-header-topbar__contact-link:focus {
    color: var(--ip-barra-superiore-testo, #ffffff);
    text-decoration: none;
    opacity: 0.88;
}

/* Header desktop: icone social nella banda superiore in box da 32px come nel riferimento */
.desktop-header-topbar__social-link {
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* Il contorno e' la stessa tinta delle scritte, resa trasparente: cosi'
       segue la scelta fatta nel pannello invece di restare bianco. */
    border: 1px solid color-mix(in srgb, var(--ip-barra-superiore-testo, #ffffff) 55%, transparent);
    border-radius: 5px;
    color: var(--ip-barra-superiore-testo, #ffffff);
    font-size: 0.9rem;
    line-height: 1;
    text-decoration: none;
}

/* Header desktop: feedback hover delle icone social della banda viola */
.desktop-header-topbar__social-link:hover,
.desktop-header-topbar__social-link:focus {
    background-color: var(--ip-green);
    border-color: var(--ip-green);
    color: #ffffff;
    text-decoration: none;
}

/* Header desktop: navbar con altezza coerente allo spazio riservato sopra il contenuto */
.main-header.header-sticky .navbar {
    min-height: 92px;
}

/* Header desktop: barra bianca resa riferimento per il logo quadrato assoluto */
.main-header.header-sticky .navbar-expand-lg {
    position: relative;
}

/* Header mobile: area azioni a destra allineata verticalmente nella top bar */
.mobile-header-actions {
    align-items: center;
}

/* Header mobile: navbar con elementi distribuiti tra sinistra, centro e destra */
.mobile-navbar-layout {
    position: relative;
}

/* Header condiviso: logo brand con spaziatura corretta nel nuovo header */
.header-brand {
    margin-right: 24px;
}

/* Header desktop: contenitore logo assoluto ripreso dal sito di riferimento */
#logo-container {
    position: absolute;
    top: 2px;
    left: -15px;
    width: 170px;
    height: 170px;
    z-index: 20000;
    box-sizing: border-box;
    background-color: var(--ip-superficie);
    padding: 4px;
    border-radius: 5px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

/* Header desktop: immagine del logo contenuta interamente nel contenitore dedicato */
.header-brand__desktop-logo {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
}

/* Header mobile: pulsante chiamata con contenitore quadrato e round minimo coerente al sistema */
.mobile-call-button {
    width: 42px;
    height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 24%, transparent) !important;
    border-radius: 5px;
    color: var(--ip-green);
    background-color: var(--ip-superficie);
    font-size: 1rem;
}

/* Header mobile: pulsante hamburger dentro contenitore quadrato della stessa dimensione della cornetta */
.mobile-menu-toggle {
    width: 42px;
    height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid color-mix(in srgb, var(--ip-navy, rgb(19, 34, 144)) 16%, transparent) !important;
    border-radius: 5px;
    color: var(--ip-navy);
    background-color: var(--ip-superficie);
}

/* Header mobile: icona interna dell'hamburger centrata nel quadrato */
.mobile-menu-toggle span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
}

/* Header condiviso: nuovo menu principale usato sia da desktop che da mobile */
.custom-main-menu {
    align-items: center;
}

/* Header condiviso: contenitore icone menu mobile nascosto fuori dal breakpoint mobile */
.mobile-menu-item-icon,
.mobile-menu-subitem-icon {
    display: none;
}

/* Header condiviso: voci principali del menu con spaziatura uniforme */
.custom-main-menu > .nav-item {
    position: relative;
    margin: 0 18px;
}

/* Header condiviso: link del menu principale con colore e tipografia del mockup */
.custom-main-menu > .nav-item > .nav-link {
    position: relative;
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-size: 1rem;
    font-weight: 500;
    color: #2c2c2c;
}

/* Header condiviso: underline attiva e hover sotto le voci principali */
.custom-main-menu > .nav-item > .nav-link::before {
    content: '';
    position: absolute;
    left: 0;
    bottom: -2px;
    width: 0;
    height: 2px;
    background-color: var(--ip-green);
    transition: width 0.25s ease;
}

/* Header condiviso: espansione underline su hover e voce attiva */
.custom-main-menu > .nav-item:hover > .nav-link::before,
.custom-main-menu > .nav-item.active > .nav-link::before {
    width: 100%;
}

/* Header condiviso: dropdown nuovo menu immobili */
.custom-main-menu .dropdown-menu {
    min-width: 160px;
    border: 0;
    border-radius: 5px;
    padding: 12px 0;
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.12);
}

/* Header condiviso: item interni del dropdown immobili */
.custom-main-menu .dropdown-item {
    padding: 0;
}

/* Header condiviso: link del dropdown leggibili e ordinati */
.custom-main-menu .dropdown-link {
    display: block;
    padding: 10px 22px;
    color: #2c2c2c;
    transition: background-color 0.18s ease, color 0.18s ease;
}

/* Sottomenu Immobili (Vendite/Affitti): stati hover/focus/active.
   themes.css colora .dropdown-item:active con l'accent turchese #0EC6D5 del tema
   HomeID originale, fuori dalla palette del sito: qui lo riportiamo al verde
   istituzionale. Serve la specificita' su .dropdown-item perche' nel markup e' il
   <li> a ricevere lo stato :active, non il link. */
.custom-main-menu .dropdown-link:hover,
.custom-main-menu .dropdown-link:focus,
.custom-main-menu .dropdown-item:hover > .dropdown-link {
    background-color: var(--ip-green-light);
    color: var(--ip-green);
    text-decoration: none;
}

.custom-main-menu .dropdown-item,
.custom-main-menu .dropdown-item:hover,
.custom-main-menu .dropdown-item:focus,
.custom-main-menu .dropdown-item.active,
.custom-main-menu .dropdown-item:active {
    background-color: transparent;
    color: inherit;
}

.custom-main-menu .dropdown-link:active,
.custom-main-menu .dropdown-item:active > .dropdown-link,
.custom-main-menu .dropdown-item.active > .dropdown-link {
    background-color: var(--ip-green);
    color: #ffffff;
}

/* L'icona pallino segue il colore del link in ogni stato */
.custom-main-menu .dropdown-link:hover .mobile-menu-subitem-icon i,
.custom-main-menu .dropdown-link:focus .mobile-menu-subitem-icon i {
    color: var(--ip-green);
}

.custom-main-menu .dropdown-link:active .mobile-menu-subitem-icon i {
    color: #ffffff;
}

/* Header mobile: intestazione pannello con logo e pulsante chiusura */
.mobile-menu-panel-header {
    display: none;
}

/* Header mobile: overlay dietro il pannello laterale */
.mobile-menu-backdrop {
    display: none;
}

/* Header mobile: pulsanti fissi in basso nel pannello laterale */
.mobile-menu-bottom-actions {
    display: none;
}

/* Mobile home: barra sticky inferiore nascosta di default fuori dal breakpoint mobile */
.mobile-sticky-actions {
    display: none;
}

/* Mobile home: la barra sticky resta nascosta su desktop e tablet grandi */
@media (min-width: 992px) {
    .mobile-sticky-actions {
        display: none !important;
    }
}

/* Header desktop: area contatto a destra del menu */
.header-desktop-actions {
    margin-left: 24px;
}

/* Header desktop: pulsante WhatsApp a destra nella top bar */
.header-contact-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 156px;
    min-height: 40px;
    padding: 0 18px;
    border: 1px solid var(--ip-green);
    border-radius: 5px;
    color: var(--ip-green);
    background-color: var(--ip-superficie);
    font-weight: 600;
}

/* Header desktop: icona WhatsApp del pulsante telefono resa piu evidente */
.header-contact-button i {
    font-size: 1.1rem;
}

/* Header desktop: hover del pulsante telefono in verde con testo bianco */
.header-contact-button:hover,
.header-contact-button:focus {
    background-color: var(--ip-green);
    border-color: var(--ip-green);
    color: #ffffff;
    text-decoration: none;
}

/* Header mobile: contenitore menu laterale da sinistra, fluido e senza scatti */
@media (max-width: 991.98px) {
    body {
        padding-top: 64px;
        padding-bottom: 0;
    }

    /* Header mobile: banda superiore desktop sempre nascosta sul menu mobile */
    .desktop-header-topbar {
        display: none !important;
    }

    /* Header mobile: navbar più compatta per eliminare spazio tra header e contenuto */
    .main-header.header-mobile-lg .navbar {
        padding-top: 8px;
        padding-bottom: 8px;
        min-height: 64px;
    }

    /* Header mobile: contenitore principale con hamburger a sinistra e cornetta a destra */
    .mobile-navbar-layout {
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    /* Header mobile: logo centrato in modo assoluto rispetto alla top bar */
    .mobile-navbar-layout .navbar-brand {
        position: absolute;
        left: 50%;
        top: 50%;
        margin-right: 0;
        transform: translate(-50%, -50%);
    }

    /* Header mobile: logo mobile centrato e proporzionato alla barra */
    .mobile-navbar-layout .navbar-brand img.d-inline-block.d-lg-none {
        max-height: 28px;
        max-width: 190px;
        width: auto;
        height: auto;
        object-fit: contain;
    }

    /* Header mobile: logo del pannello laterale proporzionato al nuovo file panoramico */
    .mobile-panel-brand img {
        max-width: 190px;
        max-height: 54px;
        width: auto;
        height: auto;
        object-fit: contain;
    }

    /* Header mobile: hamburger forzato dentro un quadrato pienamente visibile */
    .main-header.header-mobile-lg .mobile-navbar-layout .mobile-menu-toggle {
        width: 42px !important;
        min-width: 42px !important;
        height: 42px !important;
        min-height: 42px !important;
        padding: 0 !important;
        border: 1px solid color-mix(in srgb, var(--ip-navy, rgb(19, 34, 144)) 16%, transparent) !important;
        border-radius: 5px !important;
        background-color: var(--ip-superficie) !important;
        box-shadow: none !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        flex: 0 0 42px;
    }

    /* Header mobile: icona hamburger centrata otticamente nel quadrato */
    .main-header.header-mobile-lg .mobile-navbar-layout .mobile-menu-toggle span,
    .main-header.header-mobile-lg .mobile-navbar-layout .mobile-menu-toggle i {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        height: 100%;
        color: var(--ip-navy) !important;
        font-size: 1.1rem;
        line-height: 1;
    }

    /* Header mobile: cornetta forzata dentro un quadrato pienamente visibile */
    .main-header.header-mobile-lg .mobile-header-actions .mobile-call-button {
        width: 42px !important;
        min-width: 42px !important;
        height: 42px !important;
        min-height: 42px !important;
        padding: 0 !important;
        border: 1px solid color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 24%, transparent) !important;
        border-radius: 5px !important;
        background-color: var(--ip-superficie) !important;
        box-shadow: none !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        flex: 0 0 42px;
    }

    /* Header mobile: icona cornetta centrata nel quadrato e colorata col verde del tema */
    .main-header.header-mobile-lg .mobile-header-actions .mobile-call-button i {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        height: 100%;
        color: var(--ip-green) !important;
        font-size: 1rem;
        line-height: 1;
    }

    /* Mobile home: barra sticky inferiore fissa in basso con fondo pieno bianco che copre il contenuto sottostante */
    .mobile-sticky-actions {
        position: fixed !important;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 2000;
        display: block !important;
        visibility: visible !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        padding: 10px 10px calc(10px + env(safe-area-inset-bottom));
        background-color: var(--ip-superficie);
        box-shadow: 0 -10px 28px rgba(15, 23, 42, 0.16);
    }

    /* Mobile home: contenitore interno della barra perfettamente bianco e senza trasparenze */
    .mobile-sticky-actions__inner {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
        padding: 6px 0 0;
        border-radius: 0;
        background-color: var(--ip-superficie);
        box-shadow: none;
    }

    /* Mobile home: base comune dei tre pulsanti call to action con tipografia piu leggera e leggibile */
    .mobile-sticky-actions__button {
        min-height: 42px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        padding: 0 8px;
        border: 1px solid transparent;
        border-radius: 5px;
        font-size: 0.74rem;
        font-weight: 500;
        line-height: 1;
        letter-spacing: 0.01em;
        text-decoration: none;
        transition: all 0.2s ease-in-out;
    }

    /* Mobile home: pulsante chiama allineato al verde del brand come WhatsApp */
    .mobile-sticky-actions__button--call {
        background-color: var(--ip-green);
        border-color: var(--ip-green);
        color: #ffffff;
    }

    /* Mobile home: pulsante WhatsApp con verde brand coerente al progetto */
    .mobile-sticky-actions__button--whatsapp {
        background-color: var(--ip-green);
        border-color: var(--ip-green);
        color: #ffffff;
    }

    /* Mobile home: pulsante indicazioni con viola brand richiesto nella bottom bar */
    .mobile-sticky-actions__button--directions {
        background-color: var(--ip-navy);
        border-color: var(--ip-navy);
        color: #ffffff;
    }

    /* Mobile home: icone della sticky bar leggermente piu fini e proporzionate al testo */
    .mobile-sticky-actions__button i {
        font-size: 0.86rem;
        color: inherit;
    }

    /* Mobile home: hover e focus della sticky bar con piccolo feedback visivo */
    .mobile-sticky-actions__button:hover,
    .mobile-sticky-actions__button:focus {
        color: #ffffff;
        text-decoration: none;
        transform: translateY(-1px);
    }

    /* Mobile dettaglio immobile: barra sticky a 2 RIGHE (riga superiore con info immobile + riga inferiore 2 tasti) */
    .mobile-sticky-actions--detail {
        padding: 8px 10px calc(8px + env(safe-area-inset-bottom));
        background-color: var(--ip-superficie);
    }
    .mobile-sticky-actions__inner--detail {
        display: flex !important;
        flex-direction: column;
        grid-template-columns: none !important;
        gap: 10px;
        padding: 0;
    }

    /* Riga 1: info immobile con thumb rotonda a SX + testo accanto */
    .mobile-sticky-actions__property {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 2px 4px 0;
    }
    .mobile-sticky-actions__thumb {
        width: 44px;
        height: 44px;
        min-width: 44px;
        min-height: 44px;
        border-radius: 50%;
        object-fit: cover;
        -o-object-fit: cover;
        display: block;
        border: 1.5px solid #e5e7eb;
        background-color: var(--ip-fascia-tenue);
        flex: 0 0 44px;
        box-shadow: 0 2px 6px rgba(15, 23, 42, 0.08);
    }
    .mobile-sticky-actions__property-info {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        justify-content: center;
        line-height: 1.1;
        min-width: 0;
        flex: 1 1 auto;
    }
    /* Kicker "Chiama per": piccolo, sottile, grigio scuro ma leggibile, lettering minimo */
    .mobile-sticky-actions__property-kicker {
        margin: 0 0 3px 0;
        font-size: 0.65rem;
        font-weight: 400;
        letter-spacing: 0.04em;
        text-transform: uppercase;
        color: #6b7280;
        line-height: 1;
    }
    /* Titolo Appartamento rif. AFF7430: compatto, leggibile, sottile weight 400, ellisse se troppo lungo */
    .mobile-sticky-actions__property-title {
        margin: 0;
        font-size: 0.84rem;
        font-weight: 500;
        color: #1f2937;
        line-height: 1.2;
        overflow: hidden;
        text-overflow: ellipsis;
        -webkit-line-clamp: 1;
        -webkit-box-orient: vertical;
        display: -webkit-box;
        max-width: 100%;
        white-space: normal;
    }

    /* Riga 2: pulsanti Chiama + WhatsApp affiancati, distribuiti 50/50, centrati */
    .mobile-sticky-actions__buttons {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }
    .mobile-sticky-actions--detail .mobile-sticky-actions__button {
        min-height: 44px;
        font-size: 0.85rem;
        font-weight: 600;
        letter-spacing: 0.01em;
        border-radius: 5px;
        gap: 8px;
        padding: 0 10px;
    }
    .mobile-sticky-actions--detail .mobile-sticky-actions__button i {
        font-size: 1rem;
    }

    /* Header mobile: hamburger sempre allineato a sinistra */
    .mobile-navbar-layout .mobile-menu-toggle {
        order: 1;
        position: relative;
        z-index: 2;
    }

    /* Header mobile: area cornetta sempre allineata a destra */
    .mobile-navbar-layout .mobile-header-actions {
        order: 3;
        position: relative;
        z-index: 2;
        margin-left: auto;
    }

    /* Home page hero: altezza piu bassa su mobile per avvicinarsi al mockup approvato */
    .hero-barletta {
        min-height: 300px;
        align-items: flex-start !important;
        background-position: center top;
    }

    /* Nessun velo neanche sul telefono: la fotografia resta pulita come
       sullo schermo grande. */
    .hero-barletta::before {
        background: none;
    }

    /* Banner mobile: spaziatura verticale SIMMETRICA sopra e sotto il testo.
       Prima erano 22px sopra e 72px sotto: il margine inferiore serviva solo
       alle pagine con il box ricerca sovrapposto, ma veniva applicato ovunque
       lasciando un grande vuoto sotto i pulsanti. */
    .hero-call-left .container.py-8.py-lg-12 {
        padding-top: 28px !important;
        padding-bottom: 28px !important;
    }

    /* Solo dove il box ricerca si sovrappone al banner (home ed elenco immobili)
       serve lo spazio inferiore aggiuntivo che lo accoglie. */
    .hero-barletta--with-search .container.py-8.py-lg-12 {
        padding-bottom: 72px !important;
    }

    /* Il testo del banner usa la larghezza disponibile invece di restare
       compresso in una colonna da 250px: meno righe, meno altezza sprecata. */
    .hero-call-left__content {
        max-width: 100%;
    }

    /* Banner contatti mobile: box testo leggermente piu largo per il titolo su due righe */
    .hero-contatti .hero-call-left__content {
        max-width: 290px;
    }

    /* Home page hero: titolo piu compatto su schermi piccoli */
    .hero-call-left__title {
        margin-bottom: 0.55rem !important;
        font-size: 2.1rem;
        line-height: 1.04;
    }

    /* Banner contatti mobile: titolo ridotto per rispettare le proporzioni del mockup */
    .hero-contatti .hero-call-left__title {
        font-size: 2.9rem;
        line-height: 1.02;
    }

    /* Sottotitolo: stessa larghezza del resto del contenuto (era 220px, cioe'
       poco piu' di meta' schermo, e spezzava la frase su molte righe). */
    .hero-call-left__subtitle {
        max-width: 100%;
        margin-bottom: 1.1rem !important;
        font-size: 0.92rem;
        line-height: 1.45;
    }

    /* Banner contatti mobile: sottotitolo piu leggibile su fondo chiaro */
    .hero-contatti .hero-call-left__subtitle {
        max-width: 100%;
        font-size: 0.9rem;
        line-height: 1.55;
    }

    /* Pulsanti del banner: occupano tutta la larghezza disponibile e restano
       affiancati finche' c'e' spazio per etichette leggibili; sotto quella
       soglia vanno a capo uno sotto l'altro (vedi flex-basis sui pulsanti). */
    .hero-call-left__actions {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 10px;
        width: 100%;
        max-width: 100%;
        margin-left: 0;
        margin-right: 0;
        align-items: stretch;
    }

    /* Banner contatti mobile: CTA in colonna anche su schermi piccoli */
    .hero-contatti .hero-call-left__actions--stacked {
        flex-direction: column;
        width: 100%;
        max-width: 250px;
        margin-left: 0;
        margin-right: 0;
        gap: 10px;
    }

    /* La base di 190px e' la larghezza minima con cui l'etichetta resta
       leggibile: due pulsanti stanno affiancati solo da ~390px in su, sotto
       quella soglia il flex-wrap li impila a piena larghezza.
       Il testo puo' andare a capo (niente piu' white-space: nowrap, che
       causava etichette tagliate o ridotte a 0.68rem). */
    .hero-call-left__btn {
        flex: 1 1 190px;
        width: auto;
        max-width: 100%;
        min-height: 46px;
        padding: 10px 14px;
        font-size: 0.82rem;
        line-height: 1.25;
        white-space: normal;
        text-align: center;
        box-shadow: 0 8px 20px rgba(16, 24, 40, 0.16);
    }

    /* Banner contatti mobile: pulsanti pieni e leggibili senza comprimere le etichette */
    .hero-contatti .hero-call-left__btn {
        flex: 0 0 auto;
        width: 100%;
        max-width: 100%;
        min-height: 44px;
        padding: 0 16px;
        font-size: 0.82rem;
    }

    /* Home page hero: contenitore ricerca mobile alzato e senza livelli/ombre ereditati dal desktop */
    .property-search-section--immobiliare {
        position: relative;
        z-index: 1;
        --property-search-shadow: none;
        margin-top: -58px;
        padding-top: 0 !important;
        padding-bottom: 0 !important;
        background-color: transparent !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }

    /* Home page hero: form mobile mostrato come card autonoma sotto l'immagine */
    .property-search-mobile {
        display: block;
    }

    /* Home page hero: nuova card mobile di ricerca ispirata al mockup allegato */
    .property-search-mobile-card {
        padding: 14px 14px 10px;
        border-radius: 5px;
        background-color: var(--ip-superficie);
        box-shadow: 0 18px 30px rgba(27, 30, 72, 0.12);
    }

    /* Home page hero: titolo della card ricerca centrato */
    .property-search-mobile-card__title {
        margin-bottom: 12px;
        color: var(--ip-navy-title);
        font-size: 1.05rem;
        font-weight: 700;
        line-height: 1.2;
        text-align: center;
    }

    /* Home page hero: riga singolo campo della card ricerca */
    .property-search-mobile-card__field {
        display: flex;
        align-items: center;
        gap: 10px;
        min-height: 46px;
        padding: 0 12px;
        border: 1px solid #e5e8f0;
        border-radius: 5px;
        background-color: var(--ip-superficie);
    }

    /* Home page hero: riga contratto del form mobile con contenuto distribuito tra label e radio */
    .property-search-mobile-card__field--contract {
        justify-content: space-between;
    }

    /* Home page hero: separazione verticale uniforme tra i campi della card ricerca */
    .property-search-mobile-card__field + .property-search-mobile-card__field {
        margin-top: 8px;
    }

    /* Home page hero: etichetta campo con icona a sinistra come nel mockup */
    .property-search-mobile-card__label {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        flex: 0 0 106px;
        margin-bottom: 0;
        color: var(--ip-navy);
        font-size: 0.78rem;
        font-weight: 500;
        line-height: 1;
    }

    /* Home page hero: gruppo radio contratto del mobile allineato a destra come nel desktop */
    .property-search-mobile-card__radio-group {
        flex: 1 1 auto;
        justify-content: flex-end;
        gap: 16px;
        min-height: auto;
    }

    /* Home page hero: radio contratto mobile con pallino piu compatto ma stesso stile del desktop */
    .property-search-mobile-card__radio-group .property-search-card__radio input {
        width: 16px;
        height: 16px;
        margin-right: 6px;
        border-width: 2px;
    }

    /* Home page hero: stato checked del radio contratto mobile con riempimento viola */
    .property-search-mobile-card__radio-group .property-search-card__radio input:checked {
        border-width: 5px;
    }

    /* Home page hero: testo radio contratto mobile piu compatto e leggibile */
    .property-search-mobile-card__radio-group .property-search-card__radio span {
        font-size: 0.78rem;
        line-height: 1;
    }

    /* Home page hero: icona dei campi nella card ricerca */
    .property-search-mobile-card__label i {
        width: 14px;
        color: var(--ip-navy);
        font-size: 0.86rem;
        text-align: center;
    }

    /* Ricerca su telefono: campi allineati a sinistra, come si legge il resto
       della pagina. Il corpo del testo e' 1rem: sotto i 16px iOS ingrandisce
       la pagina da solo appena si tocca il campo. */
    .property-search-mobile-card__control {
        flex: 1 1 auto;
        width: 100%;
        height: 44px;
        padding: 0 20px 0 0;
        border: 0;
        background-color: transparent;
        color: var(--ip-navy);
        font-size: 1rem;
        font-weight: 500;
        text-align: left;
        box-shadow: none;
        outline: none;
    }

    .property-search-mobile-card__field select.property-search-mobile-card__control {
        text-align-last: left;
    }

    /* Home page hero: select mobile con freccia custom del tema */
    select.property-search-mobile-card__control {
        appearance: none;
        -webkit-appearance: none;
        -moz-appearance: none;
        background-image: linear-gradient(45deg, transparent 50%, var(--ip-navy) 50%), linear-gradient(135deg, var(--ip-navy) 50%, transparent 50%);
        background-position: calc(100% - 10px) calc(50% - 2px), calc(100% - 5px) calc(50% - 2px);
        background-size: 5px 5px, 5px 5px;
        background-repeat: no-repeat;
    }

    /* Home page hero: input testo del codice immobile con placeholder piu morbido */
    .property-search-mobile-card__control--input::placeholder {
        color: var(--ip-bordo-tenue);
        opacity: 1;
    }

    /* Home page hero: bottone Cerca verde a tutta larghezza */
    .property-search-mobile-card__submit {
        width: 100%;
        min-height: 42px;
        margin-top: 10px;
        border-radius: 5px;
        background-color: var(--ip-green);
        border: 1px solid var(--ip-green);
        color: #ffffff;
        font-size: 0.86rem;
        font-weight: 600;
    }

    /* Home page hero: feedback hover del bottone Cerca */
    .property-search-mobile-card__submit:hover,
    .property-search-mobile-card__submit:focus {
        background-color: var(--ip-green-dark);
        border-color: var(--ip-green-dark);
        color: #ffffff;
    }

    /* Home page hero: link ricerca avanzata piccolo e centrato sotto il pulsante Cerca */
    .property-search-mobile-card__advanced-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        margin-top: 8px;
        color: var(--ip-navy);
        font-size: 0.72rem;
        font-weight: 500;
        text-decoration: none;
    }

    /* Home page hero: pannello avanzato aperto sopra il pulsante Cerca e prima del link toggle */
    .property-search-mobile-card__advanced {
        margin-top: 8px;
    }

    /* Home page hero: link ricerca avanzata sempre viola anche in hover e focus */
    .property-search-mobile-card__advanced-toggle:hover,
    .property-search-mobile-card__advanced-toggle:focus {
        color: var(--ip-navy);
        text-decoration: none;
    }
    }


/* Header mobile: regole del pannello offcanvas applicate solo sotto il breakpoint mobile */
@media (max-width: 991.98px) {
    /* Header mobile: menu offcanvas ancorato in alto a sinistra largo il 90% del viewport */
    .main-header.header-mobile-lg .navbar-collapse,
    .main-header.header-mobile-lg .navbar-collapse.collapse,
    .main-header.header-mobile-lg .navbar-collapse.collapsing {
        position: fixed;
        top: 0;
        left: 0;
        width: 90vw;
        max-width: 90vw;
        height: 100vh !important;
        padding: 22px 18px 110px;
        margin-top: 0 !important;
        background-color: var(--ip-pannello-fondo, var(--ip-superficie));
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        box-shadow: 8px 0 24px rgba(0, 0, 0, 0.18);
        transform: translate3d(-100%, 0, 0);
        opacity: 0;
        pointer-events: none;
        transition: transform 0.28s ease, opacity 0.2s ease;
        display: block !important;
        visibility: hidden;
        will-change: transform;
        z-index: 999999;
    }

    /* Header mobile: stato aperto del pannello laterale con scorrimento fluido da sinistra */
    .main-header.header-mobile-lg .navbar-collapse.show,
    .main-header.header-mobile-lg .navbar-collapse.collapsing {
        transform: translate3d(0, 0, 0);
        opacity: 1;
        pointer-events: auto;
        visibility: visible;
    }

    /* Header mobile: stato chiuso del pannello laterale nascosto fuori viewport a sinistra */
    .main-header.header-mobile-lg .navbar-collapse.collapse:not(.show) {
        display: block !important;
        visibility: hidden;
        transform: translate3d(-100%, 0, 0);
        opacity: 0;
        pointer-events: none;
    }

    /* Header mobile: fase collapsing Bootstrap senza animazione verticale a scatti */
    .main-header.header-mobile-lg .navbar-collapse.collapsing {
        overflow: hidden;
        transition: transform 0.28s ease, opacity 0.2s ease !important;
    }

    /* Header mobile: header pannello con logo e chiusura in alto */
    .mobile-menu-panel-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 28px;
    }

    /* Header mobile: logo interno al pannello leggibile e proporzionato */
    .mobile-panel-brand img {
        max-height: 34px;
        width: auto;
    }

    /* Header mobile: pulsante chiusura del pannello */
    .mobile-menu-close {
        font-size: 1.5rem;
        color: #4b5563;
    }

    /* Header mobile: overlay attivo dietro al menu laterale */
    .mobile-menu-backdrop {
        position: fixed;
        inset: 0;
        background-color: rgba(0, 0, 0, 0.2);
        z-index: 999998;
    }

    /* Header mobile: overlay visibile quando il pannello e aperto */
    .custom-primary-menu.show ~ .mobile-menu-backdrop,
    .custom-primary-menu.collapsing ~ .mobile-menu-backdrop {
        display: block;
    }

    /* Header mobile: nuovo menu verticale con layout chiaro e spazioso */
    .custom-main-menu {
        display: block;
        width: 100%;
        margin: 0;
    }

    /* Header mobile: righe del menu laterale separate e ben leggibili */
    .custom-main-menu > .nav-item {
        width: 100%;
        margin: 0;
    }

    /* Header mobile: voci principali su righe pulite senza box grigi */
    .custom-main-menu > .nav-item > .nav-link {
        width: 100%;
        min-height: 50px;
        padding: 0 4px !important;
        border-radius: 0;
        background-color: transparent;
        border-bottom: 1px dotted color-mix(in srgb, var(--ip-navy, rgb(19, 34, 144)) 30%, transparent);
        color: var(--ip-green) !important;
        align-items: center;
        justify-content: space-between;
        font-size: 0.95rem;
    }

    /* Header mobile: gruppo icona e testo allineato a sinistra e centrato in altezza */
    .mobile-menu-item-content {
        display: inline-flex;
        align-items: center;
        gap: 12px;
        min-height: 50px;
    }

    /* Header mobile: pallini menu mostrati solo nel pannello mobile */
    .mobile-menu-item-icon {
        width: 14px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        color: var(--ip-green) !important;
        font-size: 0.42rem;
        flex: 0 0 14px;
    }

    /* Header mobile: testo e icone delle voci principali sempre verdi e leggibili */
    .custom-main-menu > .nav-item > .nav-link,
    .custom-main-menu > .nav-item > .nav-link span,
    .custom-main-menu > .nav-item > .nav-link i,
    .custom-main-menu > .nav-item > .nav-link .caret {
        color: var(--ip-green) !important;
        opacity: 1 !important;
    }

    /* Header mobile: pallini delle voci principali allineati al verde della label */
    .custom-main-menu > .nav-item > .nav-link .mobile-menu-item-icon,
    .custom-main-menu > .nav-item > .nav-link .mobile-menu-item-icon i {
        color: var(--ip-green) !important;
    }

    /* Header mobile: underline desktop disattivata nelle pill */
    .custom-main-menu > .nav-item > .nav-link::before {
        display: none;
    }

    /* Header mobile: dropdown immobili posizionato in modo naturale nel flusso */
    .custom-main-menu .dropdown-menu {
        position: static;
        min-width: 100%;
        margin-top: 8px;
        border-radius: 0;
        background-color: transparent;
        box-shadow: none;
        padding: 4px 0 0;
    }

    /* Header mobile: link interni dropdown ben distanziati con separatore puntinato */
    .custom-main-menu .dropdown-link {
        display: flex;
        align-items: center;
        gap: 10px;
        min-height: 44px;
        padding: 0 4px 0 34px;
        border-bottom: 1px dotted color-mix(in srgb, var(--ip-navy, rgb(19, 34, 144)) 20%, transparent);
        color: var(--ip-green) !important;
    }

    /* Header mobile: pallini dei sottomenu immobili mostrati nel solo pannello laterale */
    .mobile-menu-subitem-icon {
        width: 14px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        color: var(--ip-green) !important;
        font-size: 0.36rem;
        flex: 0 0 14px;
    }

    /* Header mobile: area social posizionata subito sotto la voce contatti senza cornice */
    .mobile-menu-social-box {
        margin-top: 18px;
        padding: 10px 0 0;
        border: none;
        border-radius: 0;
        background-color: transparent;
    }

    /* Header mobile: etichetta del box social con gerarchia discreta e leggibile */
    .mobile-menu-social-box__title {
        display: block;
        margin-bottom: 12px;
        font-size: 0.82rem;
        font-weight: 600;
        line-height: 1.2;
        color: var(--ip-navy);
        text-transform: uppercase;
        letter-spacing: 0.04em;
    }

    /* Header mobile: icone social distribuite in riga con spaziatura uniforme */
    .mobile-menu-social-box__links {
        display: flex;
        align-items: center;
        gap: 8px;
    }

    /* Header mobile: icone social in quadrati compatti coerenti con il resto dell'interfaccia */
    .mobile-menu-social-box__link {
        width: 38px;
        height: 38px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        border: none;
        border-radius: 5px;
        background-color: color-mix(in srgb, var(--ip-navy, rgb(19, 34, 144)) 7%, transparent);
        color: var(--ip-navy);
        font-size: 0.9rem;
        line-height: 1;
        text-decoration: none;
        transition: all 0.2s ease-in-out;
    }

    /* Header mobile: feedback hover e focus del box social con contrasto brand */
    .mobile-menu-social-box__link:hover,
    .mobile-menu-social-box__link:focus {
        background-color: var(--ip-navy);
        color: #ffffff;
        text-decoration: none;
    }

    /* Header mobile: azioni desktop nascoste */
    .header-desktop-actions {
        display: none !important;
    }
}

/* Header desktop: menu nuovo centrato e azione contatto allineata a destra */
@media (min-width: 992px) {
    /* Header desktop: ancora brand neutra per lasciare il posizionamento al contenitore logo */
    .header-brand {
        position: static;
        margin-right: 0;
    }

    /* Header desktop: link brand senza ingombro nel flusso del menu */
    .header-brand.navbar-brand {
        margin-bottom: 0;
        padding: 0;
        width: 0;
        overflow: visible;
    }

    .custom-primary-menu {
        display: flex !important;
        flex-basis: auto;
        align-items: center;
        justify-content: center;
        flex-grow: 1;
    }

    /* Header desktop: nuovo menu orizzontale centrato */
    .custom-main-menu {
        display: flex;
        justify-content: center;
        transform: translateX(30px);
    }
}

/* Sezione "Perchè scegliere noi": griglia statistiche con colonne ariose come nel layout originale */
.choose-us-stats {
    align-items: stretch;
}

/* Sezione "Perchè scegliere noi": blocco singolo desktop ripristinato senza card */
.choose-us-stat-item {
    position: relative;
    height: 100%;
    display: block;
    padding: 0 24px;
    border: 0;
    border-radius: 0;
    background-color: transparent;
    box-shadow: none;
    transform: none;
    transition: none;
}

/* Sezione "Perchè scegliere noi": divisore verticale desktop tra i blocchi come nel layout originale */
.choose-us-stat-item::after {
    content: '';
    position: absolute;
    top: 18px;
    right: 0;
    width: 1px;
    height: 120px;
    background-color: #d9dee7;
}

/* Sezione "Perchè scegliere noi": ultimo blocco senza divisore finale */
.choose-us-stat-item--last::after {
    display: none;
}

/* Sezione "Perchè scegliere noi": desktop senza effetto hover card */
.choose-us-stat-item:hover {
    transform: none;
    box-shadow: none;
}

/* Sezione "Perchè scegliere noi": contenitore icona con proporzioni originali desktop */
.choose-us-stat-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 84px;
    margin-bottom: 10px;
}

/* Sezione "Perchè scegliere noi": contenitore testuale utile per il layout orizzontale su mobile */
.choose-us-stat-content {
    width: 100%;
}

/* Sezione "Perchè scegliere noi": icone originali desktop ripristinate nella loro dimensione */
.choose-us-stat-icon img {
    max-height: 74px;
    width: auto;
    object-fit: contain;
}

/* Sezione "Perchè scegliere noi": numero o titolo evidenza in blu scuro */
.choose-us-stat-value {
    margin-bottom: 6px;
    color: var(--ip-navy-title);
    font-size: 2.15rem;
    font-weight: 700;
    line-height: 1.15;
}

/* Sezione "Perchè scegliere noi": titolo secondario dell'elemento */
.choose-us-stat-label {
    margin-bottom: 12px;
    color: var(--ip-navy-title);
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.35;
}

/* Sezione "Perchè scegliere noi": descrizione sotto ogni elemento con colore piu morbido */
.choose-us-stat-description {
    color: #5e6b7a;
    font-size: 1rem;
    line-height: 1.7;
}

/* Pagina contatti: titolo sopra i box rapidi centrato e coerente con il tema */
.contact-quick-actions__title {
    margin-bottom: 0.45rem;
    color: var(--ip-navy-title);
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.2;
}

/* Pagina contatti: divider verde sotto il titolo dei box rapidi */
.contact-quick-actions__divider {
    display: inline-block;
    width: 42px;
    height: 4px;
    border-radius: 999px;
    background-color: var(--ip-green);
}

/* Pagina contatti: griglia dei box rapidi con spaziatura uniforme */
.contact-quick-actions {
    align-items: stretch;
    max-width: 1080px;
    margin-left: auto;
    margin-right: auto;
}

/* Pagina contatti: colonne dei box rapide mantenute della stessa altezza */
.contact-quick-actions > [class*='col-'] {
    display: flex;
}

/* Pagina contatti: card dei contatti rapidi con bordo leggero e ombra morbida */
.contact-quick-card {
    width: 100%;
    padding: 24px 20px 22px;
    border: 1px solid #eef2f7;
    border-radius: 5px;
    background-color: var(--ip-superficie);
    box-shadow: 0 8px 20px color-mix(in srgb, var(--ip-navy-title, rgb(30, 43, 92)) 4%, transparent);
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

/* Pagina contatti: rimozione del divisore verticale ereditato dalle statistiche */
.contact-quick-card::after {
    display: none;
}

/* Pagina contatti: leggera elevazione in hover per le card contatto */
.contact-quick-card:hover {
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 28%, transparent);
    box-shadow: 0 14px 26px color-mix(in srgb, var(--ip-navy-title, rgb(30, 43, 92)) 8%, transparent);
}

/* Pagina contatti: icona dentro un cerchio verde chiaro come nel riferimento */
.contact-quick-card .choose-us-stat-icon {
    width: 52px;
    min-width: 52px;
    min-height: 52px;
    margin: 0 auto 14px;
    border-radius: 999px;
    background-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 8%, transparent);
}

/* Pagina contatti: icona font centrata con colore brand */
.contact-quick-card .choose-us-stat-icon i {
    color: var(--ip-green);
    font-size: 1.12rem;
}

/* Pagina contatti: titolo della card compatto e ben leggibile */
.contact-quick-card .choose-us-stat-value {
    margin-bottom: 0.55rem;
    color: var(--ip-navy-title);
    font-size: 1.9rem;
    font-weight: 700;
    line-height: 1.15;
}

/* Pagina contatti: testo descrittivo della card con tono morbido */
.contact-quick-card .choose-us-stat-label {
    margin-bottom: 0.8rem;
    color: #3e4c6a;
    font-size: 0.98rem;
    font-weight: 500;
    line-height: 1.35;
    max-width: 248px;
    margin-left: auto;
    margin-right: auto;
}

/* Pagina contatti: area finale della card senza margini extra */
.contact-quick-card .choose-us-stat-description {
    margin-bottom: 0;
}

/* Pagina contatti: link finale evidenziato in verde come call to action */
.contact-quick-card__link {
    color: var(--ip-green);
    font-size: 1.24rem;
    font-weight: 700;
    line-height: 1.3;
}

/* Pagina contatti: hover dei link con verde piu scuro per il feedback */
.contact-quick-card__link:hover,
.contact-quick-card__link:focus {
    color: var(--ip-green-dark);
    text-decoration: none;
}

/* Pagina contatti: card principale della sezione recapiti con bordo e ombra del tema */
.contact-overview-card {
    overflow: hidden;
}

/* Pagina contatti: colonna sinistra dei recapiti separata visivamente dalla parte illustrata */
.contact-overview-card__left {
    position: relative;
    padding-right: 3rem;
}

/* Pagina contatti: divisore verticale centrale nella card recapiti su desktop */
.contact-overview-card__left::after {
    content: '';
    position: absolute;
    top: 8px;
    right: 0;
    width: 1px;
    height: calc(100% - 16px);
    background-color: #e3e8f0;
}

/* Pagina contatti: lista dei recapiti con spaziatura pulita e ordinata */
.contact-overview-list {
    margin-top: 1.75rem;
}

/* Pagina contatti: singola riga recapito con icona a sinistra e testo a destra */
.contact-overview-list__item {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 1.15rem;
    color: var(--ip-navy-title);
    font-size: 1.08rem;
    font-weight: 600;
    line-height: 1.5;
}

/* Pagina contatti: ultimo recapito senza margine finale superfluo */
.contact-overview-list__item:last-child {
    margin-bottom: 0;
}

/* Pagina contatti: icona circolare dei recapiti in verde tenue */
.contact-overview-list__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    background-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 10%, transparent);
    color: var(--ip-green);
    flex: 0 0 34px;
    margin-top: 1px;
}

/* Pagina contatti: link recapiti coerenti con il blu del tema */
.contact-overview-list__item a {
    color: var(--ip-navy-title);
}

/* Pagina contatti: feedback hover dei link recapiti */
.contact-overview-list__item a:hover,
.contact-overview-list__item a:focus {
    color: var(--ip-green);
    text-decoration: none;
}

/* Pagina contatti: blocco orari disposto in colonna per rispettare il mockup */
.contact-overview-list__item--hours div {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

/* Pagina contatti: intestazione degli orari con tono deciso */
.contact-overview-list__item--hours strong {
    color: var(--ip-navy-title);
    font-weight: 700;
}

/* Pagina contatti: righe secondarie degli orari con gerarchia piu morbida */
.contact-overview-list__item--hours span {
    color: #56657f;
    font-size: 0.98rem;
    font-weight: 500;
    line-height: 1.55;
}

/* Pagina contatti: area illustrata dei recapiti centrata e ariosa */
.contact-overview-illustration {
    position: relative;
    min-height: 290px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* Pagina contatti: telefono decorativo della sezione recapiti */
.contact-overview-illustration__phone {
    position: relative;
    width: 76px;
    height: 126px;
    border: 2px solid color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 70%, transparent);
    border-radius: 5px;
    color: var(--ip-green);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
}

/* Pagina contatti: piccolo speaker del telefono decorativo */
.contact-overview-illustration__phone::before {
    content: '';
    position: absolute;
    top: 10px;
    left: 50%;
    width: 18px;
    height: 3px;
    border-radius: 999px;
    background-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 40%, transparent);
    transform: translateX(-50%);
}

/* Pagina contatti: busta decorativa sovrapposta al telefono */
.contact-overview-illustration__mail {
    position: absolute;
    top: 52px;
    left: calc(50% - 96px);
    width: 64px;
    height: 46px;
    border: 2px solid color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 70%, transparent);
    border-radius: 5px;
    color: var(--ip-green);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.7rem;
    background-color: var(--ip-superficie);
}

/* Pagina contatti: fumetto decorativo sovrapposto al telefono */
.contact-overview-illustration__bubble {
    position: absolute;
    top: 64px;
    left: calc(50% + 36px);
    width: 74px;
    height: 54px;
    border-radius: 5px;
    background-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 12%, transparent);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

/* Pagina contatti: puntini interni del fumetto decorativo */
.contact-overview-illustration__bubble span {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background-color: var(--ip-green);
}

/* Pagina contatti: testo descrittivo sotto l'illustrazione */
.contact-overview-illustration__text {
    max-width: 260px;
    margin-top: 1.75rem;
    color: var(--ip-navy-title);
    font-size: 1.7rem;
    font-weight: 700;
    line-height: 1.4;
    text-align: center;
}

/* Pagina contatti: card singola della sezione sedi con comportamento uniforme */
.contact-office-card {
    overflow: hidden;
}

/* Pagina contatti: colonna immagine della sede con sfondo neutro */
.contact-office-card__media {
    height: 100%;
    min-height: 210px;
    background-color: #f4f7fb;
}

/* Pagina contatti: immagine sede adattata al box senza deformazioni */
.contact-office-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Pagina contatti: corpo testuale della card sede disposto in colonna */
.contact-office-card__body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    height: 100%;
    padding: 1.75rem 1.5rem;
}

/* Pagina contatti: intestazione della sede con pin verde e titolo */
.contact-office-card__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 1rem;
    color: var(--ip-green);
    font-size: 1rem;
    font-weight: 700;
}

/* Pagina contatti: indirizzo della sede con blu del tema */
.contact-office-card__address {
    color: var(--ip-navy-title);
    font-size: 1.12rem;
    font-weight: 500;
    line-height: 1.7;
}

/* Pagina contatti: pulsante maps con bordo verde e allineamento contenuto */
.contact-office-card__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-start;
    border-width: 2px;
    border-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 45%, transparent);
    color: var(--ip-green);
    padding-left: 1.1rem;
    padding-right: 1.1rem;
}

/* Pagina contatti: hover del pulsante maps coerente con il tema */
.contact-office-card__button:hover,
.contact-office-card__button:focus {
    border-color: var(--ip-green);
    background-color: var(--ip-green-light);
    color: var(--ip-green-dark);
}

/* Pagina contatti: card del form messaggi con massimo respiro visivo */
.contact-message-card {
    max-width: 980px;
    margin: 0 auto;
}

/* Pagina contatti: campo form personalizzato con angoli morbidi e bordo tenue */
.contact-message-form__control {
    min-height: 58px;
    border: 1px solid #d7deea;
    border-radius: 5px;
    color: var(--ip-navy-title);
    font-size: 1rem;
    padding: 0.95rem 1rem;
    box-shadow: none;
}

/* Pagina contatti: placeholder del form con tono delicato come nel mockup */
.contact-message-form__control::placeholder {
    color: #77839b;
}

/* Pagina contatti: stato focus dei campi con bordo verde di feedback */
.contact-message-form__control:focus {
    border-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 55%, transparent);
    box-shadow: 0 0 0 0.15rem color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 12%, transparent);
}

/* Pagina contatti: textarea del form con altezza comoda per messaggi piu lunghi */
.contact-message-form__control--textarea {
    min-height: 140px;
    resize: vertical;
}

/* Pagina contatti: bottone invio largo e ben visibile al centro della card */
.contact-message-form__submit {
    min-height: 56px;
    border-radius: 5px;
    font-size: 1.05rem;
    font-weight: 700;
}

/* Pagina contatti: nota privacy sotto il form con gerarchia piu bassa */
.contact-message-form__privacy {
    margin-top: 1rem;
    color: #7b879d;
    font-size: 0.92rem;
    font-weight: 500;
    text-align: center;
}

/* Pagina contatti: adattamento tablet e mobile delle nuove sezioni centrali */
@media (max-width: 991.98px) {
    /* Pagina contatti mobile: colonna recapiti senza spazio fisso a destra */
    .contact-overview-card__left {
        padding-right: 15px;
        margin-bottom: 2rem;
    }

    /* Pagina contatti mobile: rimozione del divisore verticale nella card recapiti */
    .contact-overview-card__left::after {
        display: none;
    }

    /* Pagina contatti mobile: area illustrata piu compatta ma ancora ariosa */
    .contact-overview-illustration {
        min-height: 240px;
    }

    /* Pagina contatti mobile: testo illustrato leggermente ridotto */
    .contact-overview-illustration__text {
        font-size: 1.45rem;
    }

    /* Pagina contatti mobile: card sedi con immagine sopra e contenuto sotto */
    .contact-office-card__media {
        min-height: 240px;
    }

    /* Pagina contatti mobile: corpo card sedi con padding piu regolare */
    .contact-office-card__body {
        padding: 1.5rem 1.35rem;
    }
}

/* Pagina contatti: adattamento smartphone per mantenere compattezza e gerarchia */
@media (max-width: 767.98px) {
    /* Pagina contatti smartphone: lista recapiti con font leggermente piu compatto */
    .contact-overview-list__item {
        font-size: 1rem;
    }

    /* Pagina contatti smartphone: righe orari secondarie ridotte per migliore densita */
    .contact-overview-list__item--hours span {
        font-size: 0.92rem;
    }

    /* Pagina contatti smartphone: elementi decorativi centrati senza sovrapposizioni eccessive */
    .contact-overview-illustration__mail {
        left: calc(50% - 78px);
    }

    /* Pagina contatti smartphone: fumetto decorativo centrato meglio nella colonna destra */
    .contact-overview-illustration__bubble {
        left: calc(50% + 18px);
    }

    /* Pagina contatti smartphone: titolo illustrato piu raccolto */
    .contact-overview-illustration__text {
        max-width: 220px;
        font-size: 1.2rem;
    }

    /* Pagina contatti smartphone: indirizzo delle sedi con corpo piu compatto */
    .contact-office-card__address {
        font-size: 1rem;
    }

    /* Pagina contatti smartphone: pulsante maps a larghezza piena per facilitare il tap */
    .contact-office-card__button {
        align-self: stretch;
        justify-content: center;
    }

    /* Pagina contatti smartphone: card form con padding piu compatto */
    .contact-message-card {
        padding-left: 1.25rem !important;
        padding-right: 1.25rem !important;
    }

    /* Pagina contatti smartphone: textarea con altezza piu equilibrata sul viewport ridotto */
    .contact-message-form__control--textarea {
        min-height: 120px;
    }
}

/* Pagina servizi: hero con contenuto leggermente piu compatto per il banner dedicato */
.hero-servizi .hero-call-left__content {
    max-width: 700px;
}

/* Pagina servizi: parola evidenziata nel titolo hero in verde, come nella
   home e nella pagina valutazione. Prima restava bianca e quindi non si
   distingueva dal resto del titolo: lo <span> scritto nel pannello non
   sortiva alcun effetto visibile. */
.hero-servizi .hero-call-left__title span {
    color: var(--ip-green);
}

/* Pagina servizi: gruppo azioni del banner ridotto a un solo pulsante */
.hero-servizi .hero-call-left__actions--single {
    max-width: 290px;
}

/* Pagina servizi: pulsante unico del banner con larghezza naturale */
.hero-servizi .hero-call-left__actions--single .hero-call-left__btn {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%;
}

/* Pagina servizi: header centrale delle varie sezioni con distanza calibrata dal contenuto */
.services-section__header {
    margin-bottom: 2rem;
}

/* Pagina servizi: titolo sezione con linee laterali come nel riferimento */
/* Stesso trattamento tipografico degli altri titoli di sezione del sito
   (.home-section-title-match): Poppins 2rem peso 500. Prima erano in peso 700 e
   scritti in maiuscolo nel markup, e stonavano rispetto al resto delle pagine.
   I colori restano invariati: navy per il titolo, verde per la parola evidenziata. */
.services-section-heading {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    margin-bottom: 0;
    color: var(--ip-navy-title);
    font-size: 2rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0;
    text-align: center;
}

/* Pagina servizi: linee decorative laterali del titolo sezione */
.services-section-heading::before,
.services-section-heading::after {
    content: '';
    width: 62px;
    height: 1px;
    background-color: #d8deea;
}

/* Pagina servizi: parola finale del titolo sezione evidenziata in verde */
.services-section-heading span {
    color: var(--ip-green);
}

/* Pagina servizi: griglia delle card con gutter verticale coerente al mockup */
.services-card-grid {
    margin-bottom: calc(var(--ip-sp-blocco) * -1);
}

/* Distanza fra le card dei servizi allineata alla scala: la compensazione
   negativa qui sopra la annulla sull'ultima riga. */
.services-card-grid > [class*="col-"] {
    margin-bottom: var(--ip-sp-blocco) !important;
}

/* Pagina servizi: card singola dei servizi con aspetto morbido ma allineato al tema */
.services-card {
    padding: 2rem 1.5rem 1.7rem;
    border-color: var(--ip-navy-light) !important;
    box-shadow: 0 10px 26px color-mix(in srgb, var(--ip-navy-title, rgb(30, 43, 92)) 5%, transparent) !important;
}

/* Pagina servizi: icona principale di ogni card centrata e in verde */
.services-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    margin: 0 auto 1rem;
    color: var(--ip-green);
    font-size: 2rem;
}

/* Pagina servizi: titolo della card con blu del tema e spaziatura contenuta */
.services-card__title {
    margin-bottom: 0.65rem;
    color: var(--ip-navy-title);
    font-size: 1.18rem;
    font-weight: 700;
    line-height: 1.35;
}

/* Pagina servizi: testo della card con misura leggibile e tono morbido */
.services-card__text {
    max-width: 240px;
    margin-left: auto;
    margin-right: auto;
    color: #41506b;
    font-size: 0.96rem;
    font-weight: 500;
    line-height: 1.55;
}

/* Pagina servizi: fascia servizi tecnici con sfondo chiaro e distribuzione uniforme */
.services-tech-strip {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    background-color: var(--ip-green-light);
    border-color: var(--ip-green-light) !important;
    overflow: hidden;
}

/* Pagina servizi: singolo servizio tecnico disposto in riga con check verde */
.services-tech-strip__item {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 1.2rem 1rem;
    border-right: 1px solid #dfe6e2;
    color: var(--ip-navy-title);
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.4;
    text-align: center;
}

/* Pagina servizi: ultimo servizio tecnico senza separatore finale */
.services-tech-strip__item--last {
    border-right: 0;
}

/* Pagina servizi: icona check della fascia tecnica in verde */
.services-tech-strip__item i {
    color: var(--ip-green);
    font-size: 1.2rem;
}

/* Pagina servizi: card processo con bordo leggero e respiro generoso */
.services-process-card {
    padding: 1.1rem 1.5rem;
    border-color: var(--ip-navy-light) !important;
}

/* Pagina servizi: riga singola del processo con tre colonne allineate */
.services-process-card__item {
    display: grid;
    grid-template-columns: 36px 46px 1fr;
    align-items: center;
    gap: 12px;
    padding: 1rem 0;
    border-bottom: 1px solid #eef2f6;
}

/* Pagina servizi: ultima riga del processo senza bordo inferiore */
.services-process-card__item--last {
    border-bottom: 0;
}

/* Pagina servizi: numero progressivo dentro un cerchio verde pieno */
.services-process-card__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 999px;
    background-color: var(--ip-green);
    color: #ffffff;
    font-size: 0.95rem;
    font-weight: 700;
}

/* Pagina servizi: icona del processo con tono neutro e buona leggibilita */
.services-process-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #2e3446;
    font-size: 1.55rem;
}

/* Pagina servizi: titolo della fase di lavoro in blu tema */
.services-process-card__content h3 {
    margin-bottom: 0.2rem;
    color: var(--ip-navy-title);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.35;
}

/* Pagina servizi: testo descrittivo della fase con gerarchia secondaria */
.services-process-card__content p {
    color: #54627b;
    font-size: 0.93rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Pagina servizi: fascia finale consulenza con layout orizzontale e tono chiaro */
.services-cta-card {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 1.35rem 1.5rem;
    background-color: var(--ip-green-light);
    border-color: var(--ip-green-light) !important;
}

/* Pagina servizi: icona della fascia finale in cerchio verde pieno */
.services-cta-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 999px;
    background-color: var(--ip-green);
    color: #ffffff;
    font-size: 2rem;
    flex: 0 0 64px;
}

/* Pagina servizi: contenuto testuale della fascia finale che occupa lo spazio centrale */
.services-cta-card__content {
    flex: 1 1 auto;
}

/* Pagina servizi: titolo della fascia finale con blu del tema */
.services-cta-card__content h2 {
    margin-bottom: 0.2rem;
    color: var(--ip-navy-title);
    font-size: 1.45rem;
    font-weight: 700;
    line-height: 1.3;
}

/* Pagina servizi: sottotitolo della fascia finale con tono piu morbido */
.services-cta-card__content p {
    color: #53627d;
    font-size: 0.96rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Pagina servizi: pulsante finale con proporzioni allineate al mockup */
.services-cta-card__button {
    min-height: 52px;
    padding-left: 1.35rem;
    padding-right: 1.35rem;
    white-space: nowrap;
    flex: 0 0 auto;
}

/* Pagina servizi: adattamento tablet della hero e delle nuove sezioni */
@media (max-width: 991.98px) {
    /* Pagina servizi mobile: contenuto hero piu stretto per il titolo lungo */
    .hero-servizi .hero-call-left__content {
        max-width: 310px;
    }

    /* Pagina servizi mobile: CTA hero a larghezza piena e piu comoda al tap */
    .hero-servizi .hero-call-left__actions--single {
        width: 100%;
        max-width: 250px;
        margin-left: 0;
        margin-right: 0;
    }

    /* Pagina servizi mobile: titolo di sezione leggermente ridotto */
    .services-section-heading {
        font-size: 1.55rem;
        gap: 12px;
    }

    /* Pagina servizi mobile: linee decorative piu corte per i titoli sezione */
    .services-section-heading::before,
    .services-section-heading::after {
        width: 34px;
    }

    /* Pagina servizi mobile: card tecniche in due colonne per mantenere leggibilita */
    .services-tech-strip {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    /* Pagina servizi mobile: card consulenza disposta in colonna e centrata */
    .services-cta-card {
        flex-direction: column;
        text-align: center;
    }
}

/* Pagina servizi: adattamento smartphone per card, processo e CTA finale */
@media (max-width: 767.98px) {
    /* Pagina servizi smartphone: hero con titolo piu compatto e leggibile */
    .hero-servizi .hero-call-left__title {
        font-size: 2.45rem;
        line-height: 1.05;
    }

    /* Pagina servizi smartphone: sottotitolo hero con misura ottimizzata */
    .hero-servizi .hero-call-left__subtitle {
        font-size: 0.9rem;
        line-height: 1.45;
    }

    /* Pagina servizi smartphone: card dei servizi con padding piu compatto */
    .services-card {
        padding: 1.55rem 1.2rem 1.35rem;
    }

    /* Pagina servizi smartphone: icona delle card leggermente ridotta */
    .services-card__icon {
        width: 48px;
        height: 48px;
        font-size: 1.75rem;
    }

    /* Pagina servizi smartphone: titolo card con corpo leggermente ridotto */
    .services-card__title {
        font-size: 1.05rem;
    }

    /* Pagina servizi smartphone: testo card con altezza riga piu ariosa */
    .services-card__text {
        font-size: 0.9rem;
    }

    /* Pagina servizi smartphone: servizi tecnici su una colonna per evitare compressione */
    .services-tech-strip {
        grid-template-columns: 1fr;
    }

    /* Pagina servizi smartphone: ogni servizio tecnico con separatore inferiore invece che laterale */
    .services-tech-strip__item {
        border-right: 0;
        border-bottom: 1px solid #dfe6e2;
    }

    /* Pagina servizi smartphone: ultimo servizio tecnico senza bordo inferiore */
    .services-tech-strip__item--last {
        border-bottom: 0;
    }

    /* Pagina servizi smartphone: righe del processo ridotte a layout piu compatto */
    .services-process-card {
        padding: 0.9rem 1rem;
    }

    /* Pagina servizi smartphone: item processo con icona e testi meglio bilanciati */
    .services-process-card__item {
        grid-template-columns: 32px 38px 1fr;
        gap: 10px;
    }

    /* Pagina servizi smartphone: icone del processo leggermente piu piccole */
    .services-process-card__icon {
        font-size: 1.3rem;
    }

    /* Pagina servizi smartphone: fascia finale con padding piu compatto */
    .services-cta-card {
        padding: 1.2rem 1rem;
    }

    /* Pagina servizi smartphone: pulsante finale a larghezza piena */
    .services-cta-card__button {
        width: 100%;
    }
}

/* Pagina valutazione: hero con contenuto calibrato sul titolo piu verticale del mockup */
.hero-valutazione .hero-call-left__content {
    max-width: 540px;
}

/* Pagina valutazione: parola evidenziata del titolo in verde brand */
.hero-valutazione .hero-call-left__title span {
    color: var(--ip-green);
}

/* Pagina valutazione: parola chiave del sottotitolo in verde come nel riferimento */
.hero-valutazione .hero-call-left__subtitle span {
    color: var(--ip-green);
    font-weight: 700;
}

/* Pagina valutazione: gruppo CTA del banner ridotto a un solo pulsante */
.hero-valutazione .hero-call-left__actions--single {
    max-width: 290px;
}

/* Pagina valutazione: pulsante unico del banner con larghezza naturale */
.hero-valutazione .hero-call-left__actions--single .hero-call-left__btn {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%;
}

/* Pagina valutazione: nota informativa sotto la CTA del hero */
.hero-valutazione__note {
    margin-top: 1rem;
    color: #ffffff;
    font-size: 0.92rem;
    font-weight: 500;
    line-height: 1.45;
    /* Ombra netta di un pixel: stacca il bianco dagli sfondi chiari. */
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.9);
}

/* Pagina valutazione: icona della nota hero allineata al verde del brand */
.hero-valutazione__note i {
    color: var(--ip-green);
}

/* Pagina valutazione: wrapper dei quattro vantaggi con card unica e separatori */
.valuation-benefits-card {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    overflow: hidden;
}

/* Pagina valutazione: singolo vantaggio disposto in colonna e centrato */
.valuation-benefits-card__item {
    padding: 1.85rem 1.2rem 1.55rem;
    text-align: center;
    border-right: 1px solid var(--ip-navy-light);
}

/* Pagina valutazione: ultimo vantaggio senza separatore finale */
.valuation-benefits-card__item--last {
    border-right: 0;
}

/* Pagina valutazione: disegni SVG usati come icona nelle schede della pagina.
   Riempiono il riquadro dell'icona senza deformarsi, cosi' i disegni restano
   allineati fra loro anche quando hanno proporzioni diverse. */
.valuation-card-icon {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

/* Pagina valutazione: icona dei vantaggi in verde con proporzioni leggere */
.valuation-benefits-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    margin: 0 auto 0.8rem;
    color: var(--ip-green);
    font-size: 1.9rem;
}

/* Pagina valutazione: titolo dei vantaggi con blu del tema */
.valuation-benefits-card__title {
    margin-bottom: 0.45rem;
    color: var(--ip-navy-title);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.35;
}

/* Pagina valutazione: testo descrittivo dei vantaggi con gerarchia morbida */
.valuation-benefits-card__text {
    color: #53627d;
    font-size: 0.9rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Pagina valutazione: card step con larghezza controllata e centrata */
.valuation-step-card {
    max-width: 980px;
    margin: 0 auto;
}

/* Pagina valutazione: progress bar dei quattro step distribuita in orizzontale */
.valuation-step-progress {
    display: grid;
    grid-template-columns: auto 1fr auto 1fr auto 1fr auto;
    align-items: start;
    gap: 12px;
    margin-bottom: 2rem;
}

/* Pagina valutazione: singolo step con numero e label centrati */
.valuation-step-progress__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.45rem;
    text-align: center;
}

/* Pagina valutazione: cerchio numerato degli step in stato base */
.valuation-step-progress__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 999px;
    background-color: #eef2f7;
    color: #7a879c;
    font-size: 0.95rem;
    font-weight: 700;
}

/* Pagina valutazione: step attivo evidenziato in verde */
.valuation-step-progress__item.is-active .valuation-step-progress__number {
    background-color: var(--ip-green);
    color: #ffffff;
}

/* Pagina valutazione: etichetta dello step con tono secondario */
.valuation-step-progress__label {
    color: #728096;
    font-size: 0.85rem;
    font-weight: 600;
    line-height: 1.3;
}

/* Pagina valutazione: etichetta dello step attivo in blu piu deciso */
.valuation-step-progress__item.is-active .valuation-step-progress__label {
    color: var(--ip-navy-title);
}

/* Pagina valutazione: linea di collegamento tra i vari step */
.valuation-step-progress__line {
    align-self: center;
    height: 1px;
    margin-top: 14px;
    background-color: #dce2ec;
}

/* Pagina valutazione: contenuto centrale del box step con bordo superiore leggero */
.valuation-step-card__body {
    padding-top: 1.25rem;
    border-top: 1px solid var(--ip-navy-light);
}

/* Pagina valutazione: titolo interno del primo step */
.valuation-step-card__section-title {
    margin-bottom: 0.2rem;
    color: var(--ip-navy-title);
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.3;
}

/* Pagina valutazione: testo introduttivo del primo step */
.valuation-step-card__section-text {
    margin-bottom: 1.25rem;
    color: #617089;
    font-size: 0.95rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Pagina valutazione: wrapper del campo con icona integrata a sinistra */
.valuation-step-form__field {
    position: relative;
}

/* Pagina valutazione: icona dei campi form posizionata internamente */
.valuation-step-form__field i {
    position: absolute;
    top: 50%;
    left: 14px;
    transform: translateY(-50%);
    color: #8a96aa;
    font-size: 0.95rem;
}

/* Pagina valutazione: input del form step con padding adatto all'icona */
.valuation-step-form__control {
    min-height: 54px;
    padding-left: 2.35rem;
    border: 1px solid #d8dfea;
    border-radius: 5px;
    color: var(--ip-navy-title);
    box-shadow: none;
}

/* Pagina valutazione: placeholder dei campi con tono secondario */
.valuation-step-form__control::placeholder {
    color: #8a96aa;
}

/* Pagina valutazione: stato focus dei campi con bordo verde delicato */
.valuation-step-form__control:focus {
    border-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 55%, transparent);
    box-shadow: 0 0 0 0.15rem color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 10%, transparent);
}

/* Pagina valutazione: nota privacy sotto i campi del form */
.valuation-step-form__privacy {
    margin-bottom: 1.1rem;
    color: #7c889d;
    font-size: 0.88rem;
    font-weight: 500;
    text-align: center;
}

/* Pagina valutazione: pulsante avanti con presenza piena e allineamento centrale */
.valuation-step-form__submit {
    min-height: 54px;
    font-size: 1rem;
    font-weight: 700;
}

/* Pagina valutazione: card del flusso processo con elementi distribuiti in riga */
.valuation-flow-card {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: start;
    gap: 0;
    padding: 2rem 1.3rem 1.7rem;
}

/* Pagina valutazione: singolo step del processo disposto in colonna */
.valuation-flow-card__item {
    position: relative;
    text-align: center;
    padding: 0 1rem;
}

/* Pagina valutazione: ultimo step del processo senza modifiche strutturali aggiuntive */
.valuation-flow-card__item--last {
    border-right: 0;
}

/* Pagina valutazione: numero step piccolo e verde sopra l'icona */
.valuation-flow-card__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    margin-bottom: 0.7rem;
    border-radius: 999px;
    background-color: color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 14%, transparent);
    color: var(--ip-green);
    font-size: 0.8rem;
    font-weight: 700;
}

/* Pagina valutazione: icona principale del processo in verde */
.valuation-flow-card__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    margin: 0 auto 0.8rem;
    color: var(--ip-green);
    font-size: 2rem;
}

/* Pagina valutazione: titolo di ogni step del processo */
.valuation-flow-card__title {
    margin-bottom: 0.5rem;
    color: var(--ip-navy-title);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.35;
}

/* Pagina valutazione: testo descrittivo del processo con misura contenuta */
.valuation-flow-card__text {
    color: #53627d;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Pagina valutazione: freccia tra gli step del processo visibile solo su desktop */
.valuation-flow-card__arrow {
    display: none;
}

/* Pagina valutazione: card punti di forza con tre colonne e separatori leggeri */
.valuation-strengths-card {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
}

/* Pagina valutazione: singolo punto di forza centrato con padding uniforme */
.valuation-strengths-card__item {
    padding: 1.8rem 1.35rem 1.55rem;
    text-align: center;
    border-right: 1px solid var(--ip-navy-light);
}

/* Pagina valutazione: ultimo punto di forza senza separatore finale */
.valuation-strengths-card__item--last {
    border-right: 0;
}

/* Pagina valutazione: icona dei punti di forza in verde */
.valuation-strengths-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 50px;
    height: 50px;
    margin: 0 auto 0.5rem;
    color: var(--ip-green);
    font-size: 1.8rem;
}

/* Pagina valutazione: valore numerico del punto di forza con forte evidenza */
.valuation-strengths-card__value {
    color: var(--ip-green);
    font-size: 2.2rem;
    font-weight: 700;
    line-height: 1.05;
}

/* Pagina valutazione: etichetta del punto di forza in blu tema */
.valuation-strengths-card__label {
    margin-bottom: 0.35rem;
    color: var(--ip-navy-title);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.35;
}

/* Pagina valutazione: testo secondario del punto di forza */
.valuation-strengths-card__text {
    color: #56657f;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Pagina valutazione: fascia finale consulenza con due CTA e sfondo chiaro */
.valuation-cta-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    padding: 1.6rem 1.5rem;
    background-color: var(--ip-green-light);
    border-color: var(--ip-green-light) !important;
}

/* Pagina valutazione: contenuto testuale della fascia finale.
   Niente max-width fissa: con 360px il titolo andava a capo anche quando la
   fascia aveva spazio in abbondanza. Ora il testo occupa lo spazio libero
   accanto ai pulsanti e resta su una riga, centrato verticalmente rispetto a
   essi grazie all'align-items:center della card. */
.valuation-cta-card__content {
    flex: 1 1 auto;
    min-width: 0;
    max-width: none;
}

/* Pagina valutazione: titolo della fascia finale */
.valuation-cta-card__content h2 {
    margin-bottom: 0.35rem;
    color: var(--ip-navy-title);
    font-size: 1.7rem;
    font-weight: 700;
    line-height: 1.25;
}

/* Pagina valutazione: testo descrittivo della fascia finale */
.valuation-cta-card__content p {
    color: #52617c;
    font-size: 0.98rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Pagina valutazione: gruppo bottoni della fascia finale disposto in riga */
.valuation-cta-card__actions {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Pagina valutazione: bottone finale con struttura verticale interna */
.valuation-cta-card__button {
    min-width: 190px;
    min-height: 62px;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    border-width: 2px;
    font-size: 0.98rem;
    font-weight: 700;
    line-height: 1.2;
}

/* Pagina valutazione: seconda riga testuale dei bottoni finali piu piccola */
.valuation-cta-card__button small {
    font-size: 0.84rem;
    font-weight: 600;
}

/* Pagina valutazione: frecce di collegamento tra gli step visibili su desktop largo */
@media (min-width: 992px) {
    /* Pagina valutazione desktop: layout del processo con frecce tra i quattro step */
    .valuation-flow-card {
        grid-template-columns: 1fr 34px 1fr 34px 1fr 34px 1fr;
    }

    /* Pagina valutazione desktop: freccia di collegamento resa visibile e centrata */
    .valuation-flow-card__arrow {
        display: flex;
        align-items: center;
        justify-content: center;
        color: #c7cfdd;
        font-size: 1.3rem;
        padding-top: 3.45rem;
    }
}

/* Pagina valutazione: adattamento tablet per hero, benefici, form e CTA finale */
@media (max-width: 991.98px) {
    /* Pagina valutazione tablet: contenuto hero piu raccolto */
    .hero-valutazione .hero-call-left__content {
        max-width: 320px;
    }

    /* Pagina valutazione tablet: CTA hero a larghezza piena e piu comoda al tap */
    .hero-valutazione .hero-call-left__actions--single {
        width: 100%;
        max-width: 250px;
        margin-left: 0;
        margin-right: 0;
    }

    /* Pagina valutazione tablet: benefici in due colonne per non comprimere i contenuti */
    .valuation-benefits-card {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    /* Pagina valutazione tablet: punti di forza in una colonna unica con respiro maggiore */
    .valuation-strengths-card {
        grid-template-columns: 1fr;
    }

    /* Pagina valutazione tablet: item punti di forza con separatore inferiore */
    .valuation-strengths-card__item {
        border-right: 0;
        border-bottom: 1px solid var(--ip-navy-light);
    }

    /* Pagina valutazione tablet: ultimo punto di forza senza bordo inferiore */
    .valuation-strengths-card__item--last {
        border-bottom: 0;
    }

    /* Pagina valutazione tablet: CTA finale in colonna e centrata */
    .valuation-cta-card {
        flex-direction: column;
        align-items: flex-start;
    }

    /* Pagina valutazione tablet: gruppo bottoni finale a capo se necessario */
    .valuation-cta-card__actions {
        width: 100%;
        flex-wrap: wrap;
    }
}

/* Pagina valutazione: adattamento smartphone per tutti i blocchi principali */
@media (max-width: 767.98px) {
    /* Pagina valutazione smartphone: titolo hero piu compatto */
    .hero-valutazione .hero-call-left__title {
        font-size: 2.55rem;
        line-height: 1.04;
    }

    /* Pagina valutazione smartphone: sottotitolo hero piu leggibile sul viewport ridotto */
    .hero-valutazione .hero-call-left__subtitle {
        font-size: 0.92rem;
        line-height: 1.45;
    }

    /* Pagina valutazione smartphone: nota hero leggermente piu piccola */
    .hero-valutazione__note {
        font-size: 0.82rem;
    }

    /* Pagina valutazione smartphone: vantaggi in colonna unica */
    .valuation-benefits-card {
        grid-template-columns: 1fr;
    }

    /* Pagina valutazione smartphone: item vantaggi con separatore inferiore */
    .valuation-benefits-card__item {
        border-right: 0;
        border-bottom: 1px solid var(--ip-navy-light);
    }

    /* Pagina valutazione smartphone: ultimo vantaggio senza bordo inferiore */
    .valuation-benefits-card__item--last {
        border-bottom: 0;
    }

    /* Pagina valutazione smartphone: progress bar step su due colonne per maggiore leggibilita */
    .valuation-step-progress {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px 10px;
    }

    /* Pagina valutazione smartphone: linee step nascoste nel layout compatto */
    .valuation-step-progress__line {
        display: none;
    }

    /* Pagina valutazione smartphone: card step con padding leggermente ridotto */
    .valuation-step-card {
        padding-left: 1.25rem !important;
        padding-right: 1.25rem !important;
    }

    /* Pagina valutazione smartphone: processo in colonna unica */
    .valuation-flow-card {
        grid-template-columns: 1fr;
        padding: 1.4rem 1rem 1.2rem;
    }

    /* Pagina valutazione smartphone: item processo con separatore inferiore */
    .valuation-flow-card__item {
        padding: 0 0 1.1rem;
        margin-bottom: 1.1rem;
        border-bottom: 1px solid var(--ip-navy-light);
    }

    /* Pagina valutazione smartphone: ultimo item processo senza bordo e margine */
    .valuation-flow-card__item--last {
        padding-bottom: 0;
        margin-bottom: 0;
        border-bottom: 0;
    }

    /* Pagina valutazione smartphone: gruppo bottoni finale disposto in colonna piena */
    .valuation-cta-card__actions {
        flex-direction: column;
    }

    /* Pagina valutazione smartphone: bottoni finali a tutta larghezza */
    .valuation-cta-card__button {
        width: 100%;
    }

    /* Pagina valutazione smartphone: gruppo bottoni mobile in colonna piena,
       stesso stile dei pulsanti "Ti interessa questo immobile?" della scheda */
    .valuation-cta-card__actions--mobile {
        flex-direction: column;
        gap: 0.85rem;
    }

    /* Pagina valutazione smartphone: bottone mobile su una riga, icona + testo */
    .valuation-cta-card__button--mobile {
        width: 100%;
        min-height: 56px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 0.625rem;
        border-radius: 5px;
        border-width: 2px;
        font-size: 1.05rem;
        font-weight: 700;
    }
    .valuation-cta-card__button--mobile i {
        font-size: 1.35rem;
    }

    /* Pagina valutazione smartphone: bottone mobile WhatsApp pieno verde tema */
    .valuation-cta-card__button--mobile--whatsapp {
        background-color: var(--ip-green) !important;
        color: #ffffff !important;
        border-color: var(--ip-green) !important;
    }

    /* Pagina valutazione smartphone: bottone mobile Chiama outline verde tema */
    .valuation-cta-card__button--mobile--call {
        background-color: var(--ip-superficie) !important;
        color: var(--ip-green) !important;
        border-color: var(--ip-green) !important;
    }
}

/* Home page: card presentazione agenzia al posto della sezione "Perchè scegliere noi" */
.presentation-highlight {
    overflow: hidden;
    border-radius: 5px;
    border-color: #eef1f6 !important;
}

/* Home page: contenitore immagine profilo tondo della card presentazione */
.presentation-highlight__image-wrap {
    width: 120px;
    height: 120px;
    border-radius: 50%;
    background-color: var(--ip-navy-light);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Home page: immagine profilo nella card presentazione */
.presentation-highlight__image {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    object-fit: cover;
}

/* Home page: titoli chiave della home uniformati allo stile di "In cosa possiamo aiutarti" */
.home-section-title-match {
    color: var(--ip-text-heading);
    font-size: 2rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0;
}

/* Home page: titolo principale della card presentazione */
.presentation-highlight__title {
    color: #333;
    font-size: 2rem;
    font-weight: 500;
    line-height: 1.2;
}

/* Home page: titolo presentazione riallineato ai titoli sezione quando usa la classe comune */
.presentation-highlight__title.home-section-title-match {
    color: var(--ip-text-heading);
}

/* Home page: wrapper titolo recensioni lasciato neutro per usare lo stesso ritmo degli altri section heading */
.google-reviews-home__heading {
    display: block;
}

/* Home page: divider sotto il titolo agenzia con lo stacco della scala comune */
.presentation-highlight .heading-divider {
    display: block;
    margin-bottom: var(--ip-sp-testata);
}

/* Home page: testo descrittivo della card presentazione */
.presentation-highlight__text {
    color: #3f4b5b;
    font-size: 1.25rem;
    line-height: 1.55;
    max-width: 760px;
}

/* Home page: link CTA della card presentazione */
.presentation-highlight__link {
    color: var(--ip-navy-title);
    font-size: 1.25rem;
    font-weight: 700;
}

/* Pagina Chi Siamo: contenitore editoriale della sezione La nostra storia */
.about-story-section__content {
    width: 100%;
    max-width: none;
}

/* Pagina Chi Siamo: blocco testo della sezione La nostra storia allineato al corpo testo delle card valori */
.about-story-section__text {
    color: var(--ip-navy-title);
    font-size: 1rem;
    line-height: 1.7;
    text-align: justify;
}

/* Pagina Chi Siamo: spaziatura tra i paragrafi del racconto aziendale */
.about-story-section__text p {
    margin-bottom: 1.15rem;
}

/* Pagina Chi Siamo: chiusura evidenziata in verde come nel riferimento grafico */
.about-story-section__highlight {
    color: var(--ip-green);
    font-weight: 600;
}

/* Pagina Chi Siamo: controllo espandi testo nascosto di default fuori dallo scenario mobile */
.about-story-section__toggle {
    display: none;
    align-items: center;
    padding: 0;
    margin-top: 0.35rem;
    border: 0;
    background: transparent;
    color: var(--ip-green);
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.4;
    text-decoration: none;
}

/* Pagina Chi Siamo: link espandi con feedback coerente al passaggio del mouse */
.about-story-section__toggle:hover,
.about-story-section__toggle:focus {
    color: var(--ip-green-dark);
    text-decoration: underline;
    outline: none;
}

/* Pagina Chi Siamo: card profilo principale in stile tema */
.about-profile-card {
    border-color: #eef1f6 !important;
    overflow: hidden;
}

/* Pagina Chi Siamo: contenitore circolare della foto profilo */
.about-profile-card__image-wrap {
    width: 180px;
    height: 180px;
    border-radius: 50%;
    background-color: var(--ip-navy-light);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Pagina Chi Siamo: immagine del titolare adattata al ritaglio tondo */
.about-profile-card__image {
    width: 152px;
    height: 152px;
    border-radius: 50%;
    object-fit: cover;
}

/* Pagina Chi Siamo: titolo del profilo con colore heading del brand */
.about-profile-card__title {
    color: var(--ip-text-heading);
    font-size: 2.25rem;
    font-weight: 600;
    line-height: 1.15;
}

/* Pagina Chi Siamo: ruolo professionale evidenziato in verde */
.about-profile-card__role {
    color: var(--ip-green);
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.35;
}

/* Pagina Chi Siamo: testo descrittivo del profilo con stile coerente al tema */
.about-profile-card__text {
    color: var(--ip-navy-title);
    font-size: 1.06rem;
    line-height: 1.75;
    max-width: 760px;
}

/* Pagina Chi Siamo: riga informazioni rapide del profilo */
.about-profile-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 14px 26px;
}

/* Pagina Chi Siamo: singolo punto informativo con icona verde */
.about-profile-card__meta-item {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ip-navy-title);
    font-size: 0.98rem;
    line-height: 1.4;
}

/* Pagina Chi Siamo: icone informative del profilo allineate al verde tema */
.about-profile-card__meta-item i {
    color: var(--ip-green);
    font-size: 1rem;
}

/* Pagina Chi Siamo: pulsante WhatsApp in stile outline verde del tema */
.about-profile-card__whatsapp {
    border: 1px solid color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 50%, transparent);
    border-radius: 5px;
    background-color: var(--ip-superficie);
    color: var(--ip-green);
    font-size: 1.1rem;
    font-weight: 600;
    line-height: 1.2;
    padding: 0.95rem 1.5rem;
}

/* Pagina Chi Siamo: hover del pulsante WhatsApp con pieno verde e testo bianco */
.about-profile-card__whatsapp:hover,
.about-profile-card__whatsapp:focus {
    background-color: var(--ip-green);
    border-color: var(--ip-green);
    color: #ffffff;
}

/* Footer home: contenitore principale del nuovo footer in stile mockup */
.site-footer-home {
    background: linear-gradient(90deg, #232323 0%, #282828 100%) !important;
}

/* Footer home: logo agenzia con spaziatura coerente rispetto ai contenuti */
.site-footer-home__logo {
    display: inline-flex;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 22px;
}

/* Footer home: immagine logo agenzia ridimensionata al mockup */
.site-footer-home__logo img {
    max-width: 156px;
    width: 100%;
    height: auto;
}

/* Footer home: blocco dati aziendali con testo piu compatto e leggibile */
.site-footer-home__company {
    max-width: 300px;
}

/* Footer home: ragione sociale sotto il logo */
.site-footer-home__company-name {
    color: #ffffff;
    font-size: 0.96rem;
    font-weight: 600;
    line-height: 1.3;
}

/* Footer home: lista contatti senza stili browser e con spaziatura verticale */
.site-footer-home__contacts {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* Footer home: singola riga contatto con icona e testo allineati */
.site-footer-home__contact-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    color: #ffffff;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Footer home: icona contatto con tono chiaro coerente al mockup */
.site-footer-home__contact-item i {
    flex: 0 0 18px;
    margin-top: 4px;
    color: #ffffff;
    font-size: 1rem;
}

/* Footer home: link contatto senza colore ciano ereditato dal tema */
.site-footer-home__contact-item a {
    color: inherit;
}

/* Footer home: riga testuale semplice come la partita iva */
.site-footer-home__contact-item--plain {
    padding-left: 30px;
}

/* Footer home: titoli colonna bianchi e con peso coerente al mockup */
.site-footer-home__title {
    margin-bottom: 26px;
    color: #ffffff;
    font-size: 1.02rem;
    font-weight: 600;
    line-height: 1.2;
}

/* Footer home: elenco link senza pallini e senza margini extra */
.site-footer-home__links {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* Footer home: link colonna con tono chiaro e respiro verticale */
.site-footer-home__links a {
    color: #ffffff;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.35;
}

/* Footer home: hover link con sottolineatura bianca come da richiesta */
.site-footer-home__links a:hover,
.site-footer-home__links a:focus,
.site-footer-home__contact-item a:hover,
.site-footer-home__contact-item a:focus {
    color: #ffffff;
    text-decoration: underline;
    text-decoration-color: #ffffff;
}

/* Footer home: testo introduttivo degli orari */
.site-footer-home__hours-intro {
    max-width: 320px;
    margin-bottom: 22px;
    color: #ffffff;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.55;
}

/* Footer home: wrapper orari con icona a sinistra e griglia a destra */
.site-footer-home__hours {
    display: flex;
    align-items: flex-start;
    gap: 18px;
}

/* Footer home: icona orologio dentro cerchio sottile */
.site-footer-home__hours-icon {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 2px solid rgba(255, 255, 255, 0.42);
    border-radius: 50%;
    color: rgba(255, 255, 255, 0.82);
    font-size: 1.15rem;
}

/* Footer home: griglia orari su due colonne come nel mockup */
.site-footer-home__hours-grid {
    display: grid;
    grid-template-columns: auto auto;
    column-gap: 22px;
    row-gap: 10px;
}

/* Footer home: etichette giorni con maggiore evidenza */
.site-footer-home__hours-day {
    color: #ffffff;
    font-size: 0.88rem;
    font-weight: 600;
    line-height: 1.4;
}

/* Footer home: orari in grigio chiaro per creare gerarchia */
.site-footer-home__hours-time {
    color: #ffffff;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.4;
}

/* Footer home: card partner bianca senza cambiare il linguaggio del tema */
.site-footer-home__partner-card {
    min-height: 126px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px 14px;
    border-radius: 5px;
    background-color: var(--ip-superficie);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.12);
}

/* Footer home: logo partner contenuto ordinatamente nella card */
.site-footer-home__partner-card img {
    max-width: 100%;
    max-height: 92px;
    width: auto;
    height: auto;
}

/* Footer home: fascia copyright centrata sotto le colonne */
.site-footer-home__bottom {
    margin-top: 58px;
    color: #ffffff;
    font-size: 0.84rem;
    font-weight: 500;
    line-height: 1.5;
}

/* Home page: adattamento responsive della card presentazione agenzia */
@media (max-width: 991.98px) {
    /* Home page mobile: titoli chiave della home uniformati anche sui dispositivi piccoli */
    .home-section-title-match {
        font-size: 1.32rem;
        line-height: 1.14;
        letter-spacing: -0.02em;
    }

    /* Home page mobile: badge recensioni sotto al titolo con divider per mantenere il layout pulito */
    .google-reviews-home__heading {
        margin-bottom: 0.75rem;
    }

    .presentation-highlight__title:not(.home-section-title-match) {
        font-size: 2rem;
    }

    /* Home page: testo leggermente piu compatto su tablet e mobile */
    .presentation-highlight__text,
    .presentation-highlight__link {
        font-size: 1rem;
    }

    /* Home page: profilo leggermente piu compatto sui dispositivi piccoli */
    .presentation-highlight__image-wrap {
        width: 96px;
        height: 96px;
    }

    /* Home page: immagine profilo scalata per il layout mobile */
    .presentation-highlight__image {
        width: 78px;
        height: 78px;
    }

    /* Footer home: distanze e titoli leggermente piu compatti su tablet e mobile */
    .site-footer-home__title {
        margin-bottom: 18px;
        font-size: 0.98rem;
    }

    /* Footer home: il fondo scuro si estende fino alla bottom bar mobile senza tagliare il contenuto finale */
    .site-footer-home {
        margin-bottom: 0;
        padding-bottom: calc(7rem + 96px);
    }

    /* Footer home: blocco copyright con margine superiore ridotto sui dispositivi piccoli */
    .site-footer-home__bottom {
        margin-top: 34px;
    }

    /* Home page mobile: pulsante back to top sollevato sopra la bottom bar per restare sempre visibile */
    .position-fixed.pos-fixed-bottom-right {
        bottom: calc(92px + 12px) !important;
    }

    /* Sezione "Perchè scegliere noi": su tablet/mobile rimuovo i divisori verticali */
    .choose-us-stat-item::after {
        display: none;
    }

    /* Sezione "Perchè scegliere noi": card piu compatte su schermi piccoli */
    .choose-us-stat-item {
        padding: 0 12px;
    }

    /* Sezione "Perchè scegliere noi": numeri e titoli leggermente ridotti su mobile */
    .choose-us-stat-value {
        font-size: 1.8rem;
    }

    /* Sezione "Perchè scegliere noi": titoli e descrizioni bilanciati anche su mobile */
    .choose-us-stat-label {
        font-size: 1rem;
    }

    /* Sezione "Perchè scegliere noi": descrizione leggibile anche su dispositivi piccoli */
    .choose-us-stat-description {
        font-size: 0.95rem;
        line-height: 1.6;
    }

    /* Sezione "Perchè scegliere noi": icone scalate per il layout mobile */
    .choose-us-stat-icon img {
        max-height: 62px;
    }
}

/* Footer home: layout mobile con contatti e orari piu compatti e leggibili */
@media (max-width: 767.98px) {
    /* Footer home: logo agenzia centrato sui dispositivi piccoli */
    .site-footer-home__logo {
        display: flex;
        justify-content: center;
    }

    .site-footer-home__company-name {
        font-size: 1.2rem;
    }

    /* Footer home: testo contatti e link leggermente ridotto su smartphone */
    .site-footer-home__contact-item,
    .site-footer-home__links a,
    .site-footer-home__hours-intro,
    .site-footer-home__hours-day,
    .site-footer-home__hours-time,
    .site-footer-home__bottom {
        font-size: 0.84rem;
    }

    /* Footer home: copyright mobile piu leggibile e sollevato rispetto alla bottom bar */
    .site-footer-home__bottom {
        max-width: 320px;
        margin-left: auto;
        margin-right: auto;
        padding-bottom: 52px;
        line-height: 1.45;
    }

    /* Footer home: card partner piu raccolta sui dispositivi piccoli */
    .site-footer-home__partner-card {
        max-width: 220px;
        margin-left: auto;
        margin-right: auto;
    }

    /* Footer home: card partner centrata sui dispositivi piccoli */
    .site-footer-home__partner-card {
        text-align: center;
    }
}

/* Sezione recensioni Google: contenitore generale sotto "In cosa possiamo aiutarti" */
.google-reviews-home {
    position: relative;
}

/* Sezione recensioni Google: badge con logo Google e testo descrittivo */
.google-reviews-home__badge {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 8px 14px;
    border-radius: 5px;
    background-color: var(--ip-superficie);
    box-shadow: 0 6px 18px rgba(31, 45, 61, 0.08);
    color: #1f2d3d;
    font-weight: 600;
    font-size: 0.88rem;
    line-height: 1;
}

/* Sezione recensioni Google: logo Google nel badge */
.google-reviews-home__badge img {
    width: 20px;
    height: 20px;
    object-fit: contain;
}

/* Sezione recensioni Google: badge riallineato alla riga del titolo su desktop */
@media (min-width: 992px) {
    .google-reviews-home__badge {
        align-self: flex-start;
        margin-top: 0.2rem;
    }
}

/* Sezione recensioni Google: slider con allineamento coerente al tema */
.google-reviews-home__slider {
    margin-left: -8px;
    margin-right: -8px;
}

/* Sezione recensioni Google: card singola recensione */
.google-review-card {
    border: 1px solid #eef1f6;
    border-radius: 5px;
    box-shadow: 0 10px 24px rgba(31, 45, 61, 0.08);
}

/* Sezione recensioni Google: stelle recensione in colore gold */
.google-review-card__stars {
    color: #f4b400;
    font-size: 1rem;
    letter-spacing: 2px;
}

/* Sezione recensioni Google: testo recensione con leggibilita elevata */
.google-review-card__text {
    color: #1f2d3d;
    font-size: 1.125rem;
    line-height: 1.6;
    font-weight: 500;
}

/* Sezione recensioni Google: autore della recensione */
.google-review-card__author {
    color: var(--ip-navy-title);
    font-size: 1rem;
    font-weight: 700;
}

/* Sezione recensioni Google: piccolo logo Google a chiusura card */
.google-review-card__logo {
    width: 26px;
    height: 26px;
    object-fit: contain;
}

/* Sezione recensioni Google: adattamento mobile del titolo e delle card */
@media (max-width: 991.98px) {
    .google-reviews-home__badge {
        padding: 8px 14px;
        font-size: 0.95rem;
    }

    /* Sezione recensioni Google: testo card leggermente ridotto su mobile */
    .google-review-card__text {
        font-size: 1rem;
    }
}

/* Sezione "In cosa possiamo aiutarti": card servizio con allineamento coerente al nuovo contenuto */
.help-services-card {
    align-items: center;
    min-height: 172px;
    border-radius: 5px;
}

/* Sezione "In cosa possiamo aiutarti": immagine originale del template ripristinata nei box */
.help-services-card__image {
    width: 88px;
    max-width: 88px;
    height: auto;
    object-fit: contain;
}

/* Sezione "In cosa possiamo aiutarti": titolo del box con proporzione coerente agli altri box della home */
.help-services-card__title {
    color: var(--ip-navy-title);
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.35;
}

/* Sezione "In cosa possiamo aiutarti": descrizione del box con colore e dimensione coerenti al tema */
.help-services-card__text {
    max-width: 320px;
    color: #5e6b7a;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.7;
}

/* Form ricerca home: contenitore principale del nuovo form immobiliare */
.property-search-section--immobiliare {
    --property-search-shadow: 0 18px 30px rgba(27, 30, 72, 0.12);
    z-index: 30;
    overflow: visible;
    background-color: var(--ip-superficie);
    border-radius: 5px;
    box-shadow: var(--property-search-shadow) !important;
}

/* Form ricerca home: stato aperto del contenitore principale mantenuto come unico box */
.property-search-section--immobiliare.is-open {
    border-radius: 5px;
}

/* Form ricerca home mobile: il contenitore esterno resta trasparente per non coprire il titolo della sezione successiva */
@media (max-width: 991.98px) {
    .home-search-shell .container.property-search-section--immobiliare {
        --property-search-shadow: none;
        z-index: 1;
        background-color: transparent !important;
        box-shadow: none !important;
        border-radius: 0 !important;
        padding-left: 15px;
        padding-right: 15px;
    }
}

/* Form ricerca home: card interna con layout pulito e senza effetti libreria */
.property-search-card {
    position: relative;
    padding: 18px 22px 20px;
    background-color: var(--ip-superficie);
    border-radius: 5px;
    overflow: hidden;
}

/* Form ricerca home: etichetta campo in maiuscolo come nel mockup */
.property-search-card__label {
    display: block;
    margin-bottom: 10px;
    color: var(--ip-navy);
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* Form ricerca home: gruppo radio contratto disposto in riga */
.property-search-card__radio-group {
    display: flex;
    align-items: center;
    gap: 28px;
    min-height: 53px;
}

/* Form ricerca home: singola opzione contratto */
.property-search-card__radio {
    display: inline-flex;
    align-items: center;
    margin-bottom: 0;
    cursor: pointer;
}

/* Form ricerca home: input radio nativo personalizzato */
.property-search-card__radio input {
    appearance: none;
    -webkit-appearance: none;
    width: 22px;
    height: 22px;
    margin-right: 10px;
    border: 2px solid var(--ip-navy);
    border-radius: 50%;
    background-color: var(--ip-superficie);
    outline: none;
    box-shadow: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

/* Form ricerca home: stato selezionato del radio contratto */
.property-search-card__radio input:checked {
    border-width: 6px;
    border-color: var(--ip-navy);
}

/* Form ricerca home: testo radio contratto */
.property-search-card__radio span {
    color: var(--ip-navy);
    font-size: 1.1rem;
    font-weight: 500;
}

/* Form ricerca home: campi base input/select senza ombre o skin esterne */
.property-search-card__control {
    width: 100%;
    height: 53px;
    padding: 0 18px;
    border: 1px solid var(--ip-navy);
    border-radius: 5px;
    background-color: var(--ip-superficie);
    color: var(--ip-navy);
    font-size: 1rem;
    font-weight: 500;
    box-shadow: none;
    outline: none;
    transition: border-color 0.2s ease, background-color 0.2s ease;
}

/* Form ricerca home: solo le select mostrano la freccia custom a destra */
select.property-search-card__control {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 48px;
    background-image: linear-gradient(45deg, transparent 50%, var(--ip-navy) 50%), linear-gradient(135deg, var(--ip-navy) 50%, transparent 50%);
    background-position: calc(100% - 22px) calc(50% - 3px), calc(100% - 16px) calc(50% - 3px);
    background-size: 6px 6px, 6px 6px;
    background-repeat: no-repeat;
}

/* Form ricerca home: placeholder dei campi testuali */
.property-search-card__control::placeholder {
    color: var(--ip-bordo-tenue);
    opacity: 1;
}

/* Form ricerca home: focus pulito dei campi */
.property-search-card__control:focus {
    border-color: var(--ip-navy);
    background-color: var(--ip-superficie);
    box-shadow: none;
    outline: none;
}

/* Form ricerca home: area pulsanti filtri e cerca allineata a destra */
.property-search-card__actions {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    height: 100%;
    padding-top: 29px;
}

/* Form ricerca home: pulsanti principali del form con altezza uniforme */
.property-search-card__button {
    min-width: 124px;
    height: 53px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 22px;
    border-radius: 5px;
    font-size: 1rem;
    font-weight: 500;
    box-shadow: none;
    transition: all 0.2s ease-in-out;
}

/* Form ricerca home: pulsante filtri viola come da tema */
.property-search-card__button--filter {
    background-color: var(--ip-navy);
    border: 1px solid var(--ip-navy);
    color: #fff;
}

/* Form ricerca home: hover pulsante filtri con viola più scuro */
.property-search-card__button--filter:hover,
.property-search-card__button--filter:focus {
    background-color: var(--ip-navy-dark);
    border-color: var(--ip-navy-dark);
    color: #fff;
}

/* Form ricerca home: pulsante cerca bianco con accento verde */
.property-search-card__button--submit {
    background-color: var(--ip-superficie);
    border: 1px solid var(--ip-green);
    color: var(--ip-green);
}

/* Form ricerca home: icona cerca in verde */
.property-search-card__button--submit i {
    color: var(--ip-green);
    font-size: 1.15rem;
}

/* Form ricerca home: hover pulsante cerca con leggero fondo verde */
.property-search-card__button--submit:hover,
.property-search-card__button--submit:focus {
    background-color: var(--ip-green-light);
    border-color: var(--ip-green-dark);
    color: var(--ip-green-dark);
}

/* Form ricerca home: stato attivo del pulsante filtri */
.property-search-card__button--filter.is-open {
    background-color: var(--ip-navy-dark);
    border-color: var(--ip-navy-dark);
    color: #fff;
}

/* Form ricerca home: pannello filtri avanzati contenuto nello stesso box principale */
.property-search-card__advanced {
    max-height: 0;
    margin-top: 0;
    padding-top: 0;
    padding-bottom: 0;
    border-top: 0;
    background-color: var(--ip-superficie);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    overflow: hidden;
    transform: translateY(-4px);
    transition: max-height 0.26s ease, margin-top 0.26s ease, padding-top 0.26s ease, padding-bottom 0.26s ease, opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease, border-top-color 0.2s ease;
}

/* Form ricerca home: pannello visibile con espansione verticale dentro lo stesso box */
.property-search-card__advanced.is-open {
    max-height: 220px;
    margin-top: 18px;
    padding-top: 18px;
    padding-bottom: 4px;
    border-top: 1px solid #eef0f6;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
}

/* Form ricerca home: spaziatura interna dei campi nel pannello avanzato */
.property-search-card__advanced .col-lg-4 + .col-lg-4 {
    margin-top: 0;
}

/* Form ricerca home: allineamento verticale dei campi avanzati con il box principale */
.property-search-card__advanced .property-search-card__label {
    margin-bottom: 10px;
}

/* Form ricerca home: adattamento mobile e tablet, senza alterare il form mobile esistente */
@media (max-width: 1199.98px) {
    .property-search-card__actions {
        padding-top: 0;
    }
}

/* Sezione banner valutazione: contenitore viola full width coerente col template */
.valuation-strip {
    padding: 28px 32px;
    border-radius: 5px;
    background: linear-gradient(90deg, var(--ip-navy-dark) 0%, var(--ip-navy) 100%);
    box-shadow: 0 18px 42px color-mix(in srgb, var(--ip-navy, rgb(19, 34, 144)) 20%, transparent);
}

/* Sezione banner valutazione: icona circolare nel rosso della casa del logo */
.valuation-strip__icon {
    flex: 0 0 76px;
    width: 76px;
    height: 76px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background-color: var(--ip-red);
    color: #fff;
    font-size: 2rem;
    box-shadow: inset 0 0 0 3px rgba(255, 255, 255, 0.12);
}

/* Sezione banner valutazione: titolo principale bianco ad alta leggibilita */
.valuation-strip__title {
    color: #fff;
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.15;
}

/* Sezione banner valutazione: testo descrittivo chiaro sotto il titolo */
.valuation-strip__text {
    max-width: 560px;
    color: rgba(255, 255, 255, 0.9);
    font-size: 1.15rem;
    font-weight: 500;
    line-height: 1.55;
}

/* Sezione banner valutazione: pulsante nel rosso della casa del logo */
.valuation-strip__button {
    min-width: 240px;
    min-height: 64px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 24px;
    border-radius: 5px;
    background-color: var(--ip-red);
    border: 1px solid var(--ip-red);
    color: #fff;
    font-size: 1.2rem;
    font-weight: 700;
    box-shadow: 0 12px 26px rgba(210, 19, 10, 0.3);
    transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

/* Sezione banner valutazione: al passaggio del mouse il rosso si scurisce e il
   pulsante si solleva appena, cosi' si capisce che e' un comando. */
.valuation-strip__button:hover,
.valuation-strip__button:focus {
    background-color: var(--ip-red-dark);
    border-color: var(--ip-red-dark);
    color: #fff;
    box-shadow: 0 16px 30px rgba(168, 15, 8, 0.38);
    transform: translateY(-2px);
}

.valuation-strip__button:active {
    transform: translateY(0);
    box-shadow: 0 8px 18px rgba(168, 15, 8, 0.32);
}

/* Sezione banner valutazione: nota di supporto con orologio sotto la call to action */
.valuation-strip__note {
    margin-top: 10px;
    color: rgba(255, 255, 255, 0.92);
    font-size: 1rem;
    font-weight: 600;
    text-align: center;
}

/* Sezione banner valutazione: adattamento responsive del banner su tablet e mobile */
@media (max-width: 991.98px) {
    .valuation-strip {
        padding: 24px 22px;
        border-radius: 5px;
    }

    /* Sezione banner valutazione: icona leggermente ridotta su mobile */
    .valuation-strip__icon {
        flex-basis: 64px;
        width: 64px;
        height: 64px;
        font-size: 1.7rem;
    }

    /* Sezione banner valutazione: titolo piu compatto su schermi piccoli */
    .valuation-strip__title {
        font-size: 1.7rem;
    }

    /* Sezione banner valutazione: testo descrittivo piu compatto su mobile */
    .valuation-strip__text {
        font-size: 1rem;
    }

    /* Sezione banner valutazione: pulsante full width su mobile */
    .valuation-strip__button {
        width: 100%;
        min-width: 0;
        min-height: 58px;
        font-size: 1.05rem;
    }

    /* Sezione banner valutazione: nota allineata a sinistra sui dispositivi piccoli */
    .valuation-strip__note {
        text-align: left;
    }
}

/* Home page mobile: compatto generale di titoli e box servizi.
   La spaziatura verticale delle sezioni non si tocca piu' qui: la governa la
   scala unica (--ip-sp-*) valida per tutte le pagine. */
@media (max-width: 991.98px) {
    /* Home page mobile: titoli sezione piu compatti per ridurre l'ingombro verticale */
    h2.text-heading {
        font-size: 1.32rem;
        line-height: 1.14;
        letter-spacing: -0.02em;
    }

    /* Home page mobile: testi introduttivi sotto i titoli sezione piu raccolti */
    .home-section .heading-divider + p {
        font-size: 0.94rem;
        line-height: 1.45;
    }

    /* Home page mobile: banner "Vuoi vendere casa" piu raccolto nelle
       proporzioni. Sopra e sotto ci pensa il respiro della sezione. */
    .valuation-strip {
        padding: 14px 16px;
    }

    /* Home page mobile: icona del banner valutazione ridotta per lasciare piu spazio al testo */
    .valuation-strip__icon {
        flex-basis: 52px;
        width: 52px;
        height: 52px;
        font-size: 1.35rem;
    }

    /* Home page mobile: titolo del banner valutazione reso piu compatto */
    .valuation-strip__title {
        font-size: 1.45rem;
        line-height: 1.15;
        margin-bottom: 0.3rem !important;
    }

    /* Home page mobile: testo del banner valutazione piu corto e fitto */
    .valuation-strip__text {
        font-size: 0.92rem;
        line-height: 1.42;
    }

    /* Home page mobile: CTA del banner valutazione piu compatta ma sempre leggibile */
    .valuation-strip__button {
        min-height: 48px;
        font-size: 0.95rem;
    }

    /* Home page mobile: nota del banner valutazione con spazio ridotto sotto il bottone */
    .valuation-strip__note {
        margin-top: 6px;
        font-size: 0.82rem;
        line-height: 1.35;
        text-align: center;
        justify-content: center;
    }

    /* Home page mobile: griglia "Perche' scegliere noi" attaccata alla testata
       come nelle altre sezioni, con i riquadri distanziati dalla scala. */
    .choose-us-stats {
        margin-top: 0 !important;
    }

    .choose-us-stats > [class*='col-'] {
        margin-bottom: var(--ip-sp-blocco) !important;
    }

    .choose-us-stats > [class*='col-']:last-child {
        margin-bottom: 0 !important;
    }

    /* Home page mobile: singolo box statistiche a larghezza piena per ottenere una colonna unica */
    .choose-us-stats > [class*='col-'] {
        flex: 0 0 100%;
        max-width: 100%;
    }

    /* Home page mobile: singolo box statistiche con layout orizzontale e card compatta */
    .choose-us-stat-item {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: flex-start;
        gap: 14px;
        padding: 5px 6px;
        margin-bottom: 0;
        text-align: left !important;
    }

    /* Home page mobile: icona dei box statistiche allineata a sinistra senza spazio sotto */
    .choose-us-stat-icon {
        flex: 0 0 54px;
        justify-content: flex-start;
        min-height: 54px;
        margin-bottom: 0;
    }

    /* Home page mobile: icone statistiche piu raccolte per il layout orizzontale */
    .choose-us-stat-icon img {
        max-height: 46px;
    }

    /* Home page mobile: contenuto testuale dei box statistiche disposto in colonna */
    .choose-us-stat-content {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        justify-content: center;
        min-width: 0;
        text-align: left;
    }

    /* Home page mobile: numero o titolo principale del box statistiche piu compatto */
    .choose-us-stat-value {
        margin-bottom: 0.15rem;
        font-size: 1.35rem;
        line-height: 1.05;
        text-align: left;
    }

    /* Home page mobile: label del box statistiche piu compatta e vicina al titolo */
    .choose-us-stat-label {
        margin-bottom: 0.3rem;
        font-size: 0.96rem;
        line-height: 1.2;
        text-align: left;
    }

    /* Home page mobile: descrizione del box statistiche piu piccola e leggibile */
    .choose-us-stat-description {
        font-size: 0.86rem;
        line-height: 1.4;
        text-align: left;
    }

    /* Pagina contatti mobile: titolo della sezione box rapidi leggermente piu compatto */
    .contact-quick-actions__title {
        font-size: 1.65rem;
    }

    /* Pagina contatti mobile: ogni box rapido resta su una colonna per maggiore respiro */
    .contact-quick-actions > [class*='col-'] {
        flex: 0 0 100%;
        max-width: 100%;
    }

    /* Pagina contatti mobile: card compatte ma mantenute verticali come nel mockup */
    .contact-quick-card {
        flex-direction: column;
        align-items: center;
        gap: 0;
        padding: 20px 16px 18px;
        text-align: center !important;
    }

    /* Pagina contatti mobile: icona centrata con spazio armonioso sopra il testo */
    .contact-quick-card .choose-us-stat-icon {
        justify-content: center;
        width: 48px;
        min-width: 48px;
        min-height: 48px;
        margin: 0 auto 12px;
    }

    /* Pagina contatti mobile: contenuto testuale delle card nuovamente centrato */
    .contact-quick-card .choose-us-stat-content {
        align-items: center;
        text-align: center;
    }

    /* Pagina contatti mobile: titolo delle card leggermente ridotto */
    .contact-quick-card .choose-us-stat-value {
        font-size: 1.6rem;
        text-align: center;
    }

    /* Pagina contatti mobile: descrizione delle card centrata e piu ariosa */
    .contact-quick-card .choose-us-stat-label {
        font-size: 0.9rem;
        text-align: center;
    }

    /* Pagina contatti mobile: call to action finale ben leggibile anche su schermi piccoli */
    .contact-quick-card__link {
        font-size: 1.08rem;
    }

    /* Home page mobile: righe dei quattro box servizi con stessa distanza verticale */
    .bg-single-image-03 .row.mt-7 {
        margin-top: 0.75rem !important;
    }

    /* Home page mobile: colonne dei quattro servizi con margine inferiore uniforme */
    .bg-single-image-03 .col-lg-6.mb-6 {
        margin-bottom: 0.75rem !important;
    }

    /* Home page mobile: card servizi piu piccole e allineate in alto */
    .help-services-card {
        align-items: flex-start;
        min-height: 132px;
        padding: 14px 14px !important;
    }

    /* Home page mobile: icone dei box servizi piu piccole e con distacco verticale uniforme */
    .help-services-card__image {
        width: 56px;
        max-width: 56px;
        margin-bottom: 12px !important;
    }

    /* Home page mobile: titoli Compra Vendi Valuta Affitta piu compatti */
    .help-services-card__title {
        font-size: 1rem;
        line-height: 1.25;
        margin-bottom: 0.2rem !important;
    }

    /* Home page mobile: testo dei box servizi piu piccolo per ridurre l'altezza complessiva */
    .help-services-card__text {
        font-size: 0.88rem;
        line-height: 1.45;
    }

    /* Home page mobile: badge Google leggermente piu piccolo e raccolto */
    .google-reviews-home__badge {
        gap: 8px;
        padding: 7px 12px;
        font-size: 0.88rem;
    }

    /* Home page mobile: slider recensioni con meno aria ai lati */
    .google-reviews-home__slider {
        margin-left: -4px;
        margin-right: -4px;
    }

    /* Home page mobile: card recensione piu compatta nel padding interno */
    .google-review-card .card-body {
        padding: 1rem !important;
    }

    /* Home page mobile: stelle piu discrete per ridurre l'altezza della card */
    .google-review-card__stars {
        font-size: 0.88rem;
        letter-spacing: 1px;
        margin-bottom: 0.55rem !important;
    }

    /* Home page mobile: testo recensione piu compatto */
    .google-review-card__text {
        font-size: 0.9rem;
        line-height: 1.45;
        margin-bottom: 0.75rem !important;
    }

    /* Home page mobile: autore recensione leggermente ridotto */
    .google-review-card__author {
        font-size: 0.9rem;
    }

    /* Home page mobile: logo Google piu piccolo nella chiusura della card */
    .google-review-card__logo {
        width: 20px;
        height: 20px;
    }
}

/* Home page ultime proposte: box del carosello con card in stile portale immobiliare */
.property-card-home {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    border: 1px solid #e6e8ef;
    border-radius: 5px;
    background-color: var(--ip-superficie);
    box-shadow: 0 14px 30px rgba(29, 41, 57, 0.08);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

/* Home page ultime proposte: lieve sollevamento della card al passaggio del mouse */
.property-card-home:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 34px rgba(29, 41, 57, 0.12);
}

/* Home page ultime proposte: contenitore immagine con proporzioni piu vicine al mockup */
.property-card-home__media {
    position: relative;
    height: 220px;
    overflow: hidden;
}

/* Home page ultime proposte: link immagine esteso a tutta la foto per rendere cliccabile il media */
.property-card-home__media-link {
    display: block;
    width: 100%;
    height: 100%;
}

/* Home page ultime proposte: immagine principale dell'annuncio */
.property-card-home__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Schede degli immobili: il riquadro tiene in posizione le etichette, il
   cuore dei preferiti e il riferimento, ma non copre piu' la fotografia.
   Quelle voci hanno gia' uno sfondo proprio, quindi restano leggibili. */
.property-card-home__overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 14px;
    background: none;
}

/* Home page ultime proposte: gruppo badge allineato in alto a sinistra */
.property-card-home__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding-right: 54px;
}

/* Home page ultime proposte: badge informativi compatti sopra la foto */
.property-card-home__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 0 14px;
    border-radius: 5px;
    color: #ffffff;
    font-size: 0.82rem;
    font-weight: 700;
    line-height: 1;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

/* Home page ultime proposte: badge vendita con verde brand */
.property-card-home__badge--sale {
    background-color: var(--ip-green);
}

/* Home page ultime proposte: badge promozionale o novita con arancio di palette */
.property-card-home__badge--promo,
.property-card-home__badge--new {
    background-color: var(--ip-orange);
}

/* Home page ultime proposte: badge ribasso con rosso ufficiale di brand */
.property-card-home__badge--discount {
    background-color: var(--ip-red);
}

/* Home page ultime proposte: badge esclusiva con tono scuro previsto dalla palette ufficiale */
.property-card-home__badge--exclusive {
    background-color: var(--ip-superficie-scura);
}

/* Home page ultime proposte: pulsante preferiti con raggio minimo coerente alle label */
.property-card-home__favorite {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(214, 219, 232, 0.95);
    border-radius: 5px;
    background-color: var(--ip-superficie);
    color: #5f6b8a;
    font-size: 0.9rem;
    box-shadow: 0 10px 20px rgba(15, 23, 42, 0.12);
}

/* Home page ultime proposte: stato hover del pulsante preferiti */
.property-card-home__favorite:hover,
.property-card-home__favorite:focus {
    color: var(--ip-red);
    border-color: #dcecdf;
    background-color: var(--ip-superficie);
}

/* Home page ultime proposte: etichetta riferimento annuncio sopra il bordo inferiore della foto */
.property-card-home__reference {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 0 14px;
    border-radius: 5px;
    background-color: rgba(20, 24, 34, 0.82);
    border: 1px solid rgba(255, 255, 255, 0.35);
    color: #ffffff;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-decoration: none;
    transition: background-color .18s ease, border-color .18s ease;
}

/* Al passaggio del mouse il riferimento si accende di giallo: e' il dato con
   cui le persone chiamano in agenzia, e cosi' si nota che e' cliccabile. */
.property-card-home__reference:hover,
.property-card-home__reference:focus {
    background-color: rgba(20, 24, 34, 0.92);
    border-color: rgba(255, 214, 10, 0.75);
    color: #ffd60a;
}

/* Home page ultime proposte: corpo della card con spaziatura tipografica coerente */
.property-card-home__body {
    padding: 16px 16px 12px;
}

/* Home page ultime proposte: riga titolo e prezzo allineati orizzontalmente */
.property-card-home__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 6px;
}

/* Home page ultime proposte: titolo annuncio con blu scuro del mockup */
.property-card-home__title {
    min-width: 0;
    color: var(--ip-navy-title);
    font-size: 1.22rem;
    font-weight: 700;
    line-height: 1.1;
}

/* Home page ultime proposte: link titolo senza stili ereditati dal tema demo e senza ritorni a capo */
.property-card-home__title a {
    display: block;
    color: inherit;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Home page ultime proposte: prezzo evidenziato in verde sulla destra */
.property-card-home__price {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    color: var(--ip-green);
    font-size: 1.22rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
}

/* Home page ultime proposte: localita con icona marker discreta e testo su una sola riga */
.property-card-home__location {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    color: #6d7693;
    font-size: 0.82rem;
    font-weight: 500;
    line-height: 1.3;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Home page ultime proposte: icona posizione verde per continuita visiva */
.property-card-home__location i {
    color: #7f88a4;
    font-size: 0.9rem;
}

/* Home page ultime proposte: fascia inferiore separata con feature e call to action */
.property-card-home__footer {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 12px 16px 14px;
    border-top: 1px solid #ebeef5;
}

/* Home page ultime proposte: lista caratteristiche compatta sulla sinistra */
.property-card-home__features {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 10px;
    list-style: none;
    padding: 0;
    margin: 0;
}

/* Home page ultime proposte: singola caratteristica con icona e testo */
.property-card-home__feature {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: #4d5878;
    font-size: 0.8rem;
    font-weight: 500;
    white-space: nowrap;
}

/* Home page ultime proposte: icone delle feature con tono freddo e leggibile */
.property-card-home__feature .icon {
    width: 14px;
    height: 14px;
    color: #7d86a3;
    fill: currentColor;
}

/* Home page ultime proposte: pulsante scopri di piu allineato a destra */
.property-card-home__cta {
    flex-shrink: 0;
    min-height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 11px;
    border: 1px solid #cfe4d4;
    border-radius: 5px;
    background-color: var(--ip-green-light);
    color: var(--ip-green);
    font-size: 0.72rem;
    font-weight: 500;
    white-space: nowrap;
}

/* Home page ultime proposte: stato hover del pulsante con maggiore contrasto */
.property-card-home__cta:hover,
.property-card-home__cta:focus {
    background-color: var(--ip-green);
    border-color: var(--ip-green);
    color: #ffffff;
}

/* Home page ultime proposte: adattamento tipografico e layout del footer sui tablet */
@media (max-width: 1199.98px) {
    .property-card-home__header {
        align-items: center;
        gap: 8px;
    }

    /* Home page ultime proposte: prezzo con dimensione piu contenuta sui tablet */
    .property-card-home__price {
        font-size: 1.12rem;
    }

    /* Home page ultime proposte: footer mantenuto compatto anche su viewport medi */
    .property-card-home__footer {
        align-items: center;
        flex-direction: row;
    }

    /* Home page ultime proposte: pulsante non espanso sui viewport medi */
    .property-card-home__cta {
        width: auto;
    }
}

/* Home page ultime proposte: card piu compatta e immagini piu basse su mobile */
@media (max-width: 767.98px) {
    .property-card-home__media {
        height: 205px;
    }

    /* Home page ultime proposte: padding ridotto nel corpo su smartphone */
    .property-card-home__body {
        padding: 16px 16px 12px;
    }

    /* Home page ultime proposte: titolo piu compatto per mantenere equilibrio visivo */
    .property-card-home__title {
        font-size: 1.08rem;
    }

    /* Home page ultime proposte: prezzo leggermente ridotto sui dispositivi piccoli */
    .property-card-home__price {
        font-size: 1.02rem;
    }

    /* Home page ultime proposte: footer impilato su mobile per preservare la leggibilita */
    .property-card-home__footer {
        align-items: stretch;
        flex-direction: column;
        padding: 12px 16px 16px;
    }

    /* Home page ultime proposte: pulsante full width solo su smartphone */
    .property-card-home__cta {
        width: 100%;
    }
}

/* Pagina immobili: griglia reale delle ultime proposte su due colonne per riga */
.latest-properties-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 24px;
}

/* Pagina immobili: singolo slot della griglia con altezza piena per allineare le card */
.latest-properties-grid__item {
    height: 100%;
}

/* Pagina immobili: area del bottone mostra altri centrata sotto la griglia */
.latest-properties-grid__actions {
    margin-top: 0.5rem;
}

/* Pagina immobili: bottone mostra altri con proporzioni coerenti al sistema CTA */
.latest-properties-grid__button {
    min-width: 190px;
    min-height: 50px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border-radius: 5px;
    font-size: 0.95rem;
    font-weight: 700;
    border-width: 2px;
    background-color: var(--ip-superficie);
}

/* Pagina immobili: icona del bottone mostra altri allineata a sinistra del testo */
.latest-properties-grid__button i {
    font-size: 0.9rem;
}

/* Pagina immobili: nuova fascia di supporto alla ricerca con sfondo chiaro e bordo morbido */
.listing-support-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 1.6rem 1.5rem;
    background-color: var(--ip-green-light);
    border-color: var(--ip-green-light) !important;
}

/* Pagina immobili: lato sinistro della fascia con icona WhatsApp e contenuto testuale */
.listing-support-card__main {
    display: flex;
    align-items: center;
    gap: 18px;
    min-width: 0;
}

/* Pagina immobili: icona WhatsApp illustrata a sinistra del messaggio */
.listing-support-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 82px;
    height: 82px;
    border-radius: 5px;
    background: radial-gradient(circle at 34% 34%, rgba(255, 255, 255, 0.95) 0 18px, transparent 19px), #dff0df;
    color: var(--ip-green);
    font-size: 2.8rem;
    flex: 0 0 82px;
    position: relative;
}

/* Pagina immobili: piccola coda decorativa del fumetto WhatsApp */
.listing-support-card__icon::after {
    content: '';
    position: absolute;
    left: 10px;
    bottom: -8px;
    width: 18px;
    height: 18px;
    border-radius: 5px;
    background-color: #dff0df;
    transform: rotate(28deg);
}

/* Pagina immobili: etichetta introduttiva della nuova fascia */
.listing-support-card__eyebrow {
    display: inline-block;
    margin-bottom: 0.45rem;
    color: var(--ip-green);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}

/* Pagina immobili: titolo della fascia in blu del tema */
.listing-support-card__title {
    margin-bottom: 0.45rem;
    color: var(--ip-navy-title);
    font-size: 1.7rem;
    font-weight: 700;
    line-height: 1.25;
}

/* Pagina immobili: testo descrittivo della fascia con tono secondario */
.listing-support-card__text {
    max-width: 620px;
    color: #52617c;
    font-size: 0.98rem;
    font-weight: 500;
    line-height: 1.6;
}

/* Pagina immobili: gruppo pulsanti della fascia disposto in riga */
.listing-support-card__actions {
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 0 0 auto;
}

/* Pagina immobili: pulsanti della fascia con altezza uniforme e respiro orizzontale */
.listing-support-card__button {
    min-width: 170px;
    min-height: 50px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-width: 2px;
    font-size: 0.95rem;
    font-weight: 700;
}

/* Pagina immobili: adattamento tablet della griglia annunci e della fascia supporto */
@media (max-width: 991.98px) {
    /* Pagina immobili tablet: griglia annunci sempre su due colonne ma con gap piu contenuto */
    .latest-properties-grid {
        gap: 0 18px;
    }

    /* Pagina immobili tablet: fascia supporto disposta in colonna e allineata a sinistra */
    .listing-support-card {
        flex-direction: column;
        align-items: flex-start;
    }

    /* Pagina immobili tablet: blocco principale della fascia allineato in alto */
    .listing-support-card__main {
        align-items: flex-start;
    }
}

/* Pagina immobili: adattamento smartphone per annunci e nuova fascia sotto la griglia */
@media (max-width: 767.98px) {
    /* Pagina immobili smartphone: griglia annunci su una sola colonna per preservare la leggibilita.
       minmax(0, 1fr) e non 1fr: una traccia "1fr" ha min-width auto e si allarga
       fino alla dimensione minima del contenuto, facendo sbordare la card oltre
       il viewport (scroll orizzontale a 360px). */
    .latest-properties-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 0;
    }

    /* Pagina immobili smartphone: titolo fascia leggermente ridotto */
    .listing-support-card__title {
        font-size: 1.4rem;
    }

    /* Pagina immobili smartphone: fascia supporto con icona sopra il testo */
    .listing-support-card__main {
        flex-direction: column;
        align-items: flex-start;
        gap: 14px;
    }

    /* Pagina immobili smartphone: icona WhatsApp leggermente piu compatta */
    .listing-support-card__icon {
        width: 72px;
        height: 72px;
        font-size: 2.35rem;
        flex-basis: 72px;
    }

    /* Pagina immobili smartphone: gruppo CTA della fascia impilato verticalmente */
    .listing-support-card__actions {
        width: 100%;
        flex-direction: column;
    }

    /* Pagina immobili smartphone: pulsanti fascia a tutta larghezza */
    .listing-support-card__button {
        width: 100%;
    }
}

/* --------------------------------------------------------------------------
   SCALA DI SPAZIATURA DELLE PAGINE
   Tutte le sezioni fra il banner e il pie' di pagina usano questi tre passi,
   in proporzione fissa (1 : 1,6 : 3,2). Cambiando qui i valori si sposta la
   spaziatura di tutto il sito senza toccare le singole pagine.

     --ip-sp-testata  titolo -> filetto verde -> testo introduttivo
     --ip-sp-blocco   testata -> contenuto della sezione, ed e' anche il
                      respiro interno sopra e sotto ogni sezione: due sezioni
                      accostate sommano i due respiri e distano --ip-sp-sezione
     --ip-sp-sezione  distanza fra due sezioni (e dal banner e dal footer)
   -------------------------------------------------------------------------- */
:root {
    --ip-sp-testata: 1.25rem;   /* 20px */
    --ip-sp-blocco: 2rem;       /* 32px */
    --ip-sp-sezione: 4rem;      /* 64px */
}

/* Sotto i 992px la stessa proporzione con passi piu' corti */
@media (max-width: 991.98px) {
    :root {
        --ip-sp-testata: 0.75rem;  /* 12px */
        --ip-sp-blocco: 1.25rem;   /* 20px */
        --ip-sp-sezione: 2.5rem;   /* 40px */
    }
}

/* Palette template: variabili ufficiali allineate al file dist/immobiliare-piccolo/css/palette.css */
:root {
    --primary: #2d8a47;
    --secondary: #132290;
    --ip-green: #2d8a47;
    --ip-green-dark: #1b6a35;
    --ip-green-light: #e7f4ea;
    --ip-navy: #132290;
    --ip-navy-dark: #15145f;
    --ip-navy-light: #eceaf9;
    --ip-red: #d2130a;
    --ip-red-dark: #a80f08;
    --ip-red-light: #fbe9e8;
    --ip-orange: #ff9f43;
    --ip-orange-dark: #e07d19;
    --ip-orange-light: #fff2e4;
    --ip-text-body: #4b5563;
    --ip-text-heading: #132290;
    --ip-border: #eeeeee;
    --ip-ring: rgba(36, 136, 69, 0.25);
    --ip-ring-strong: rgba(36, 136, 69, 0.5);
}

/* Palette template: bottone primary del tema con verde brand ufficiale */
.btn-primary {
    color: #fff;
    background-color: var(--ip-green);
    border-color: var(--ip-green);
}

/* Palette template: hover e focus del bottone primary con verde scuro ufficiale */
.btn-primary:hover,
.btn-primary:focus,
.btn-primary.focus {
    color: #fff;
    background-color: var(--ip-green-dark);
    border-color: var(--ip-green-dark);
}

/* Palette template: focus ring del bottone primary coerente con la palette ufficiale */
.btn-primary:focus,
.btn-primary.focus,
.btn-primary:not(:disabled):not(.disabled):active:focus,
.btn-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-primary.dropdown-toggle:focus {
    box-shadow: 0 0 0 0.2rem var(--ip-ring-strong);
}

/* Palette template: stato disabled del bottone primary */
.btn-primary.disabled,
.btn-primary:disabled {
    color: #fff;
    background-color: var(--ip-green);
    border-color: var(--ip-green);
}

/* Palette template: stato attivo del bottone primary con verde scuro */
.btn-primary:not(:disabled):not(.disabled):active,
.btn-primary:not(:disabled):not(.disabled).active,
.show > .btn-primary.dropdown-toggle {
    color: #fff;
    background-color: var(--ip-green-dark);
    border-color: var(--ip-green-dark);
}

/* Palette template: bottone outlined primary aggiornato al verde ufficiale */
.btn-outline-primary {
    color: var(--ip-green);
    border-color: var(--ip-green);
}

/* Palette template: hover e focus del bottone outlined primary */
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary.focus,
.btn-outline-primary:not(:disabled):not(.disabled):active,
.btn-outline-primary:not(:disabled):not(.disabled).active,
.show > .btn-outline-primary.dropdown-toggle {
    color: #fff;
    background-color: var(--ip-green);
    border-color: var(--ip-green);
}

/* Palette template: focus ring del bottone outlined primary */
.btn-outline-primary:focus,
.btn-outline-primary.focus,
.btn-outline-primary:not(:disabled):not(.disabled):active:focus,
.btn-outline-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-primary.dropdown-toggle:focus {
    box-shadow: 0 0 0 0.2rem var(--ip-ring-strong);
}

/* Palette template: stato disabled del bottone outlined primary */
.btn-outline-primary.disabled,
.btn-outline-primary:disabled {
    color: var(--ip-green);
    background-color: transparent;
}

/* Palette template: bottoni secondary allineati al viola ufficiale */
.btn-secondary,
.badge-secondary,
.bg-secondary {
    background-color: var(--ip-navy) !important;
    border-color: var(--ip-navy) !important;
    color: #fff !important;
}

/* Palette template: hover e focus del secondary */
.btn-secondary:hover,
.btn-secondary:focus {
    background-color: var(--ip-navy-dark) !important;
    border-color: var(--ip-navy-dark) !important;
}

/* Palette template: secondary outlined coerente con la palette ufficiale */
.btn-outline-secondary {
    color: var(--ip-navy) !important;
    border-color: var(--ip-navy) !important;
}

/* Palette template: hover e focus del secondary outlined */
.btn-outline-secondary:hover,
.btn-outline-secondary:focus {
    background-color: var(--ip-navy) !important;
    color: #fff !important;
}

/* Palette template: paginazione hover e attiva con il verde ufficiale */
.page-link:hover,
.page-item.active .page-link,
.page-link.active,
.pagination .active > .page-link {
    color: #fff;
    background-color: var(--ip-green);
    border-color: var(--ip-green);
}

/* Palette template: focus della paginazione con ombra verde */
.page-link:focus {
    box-shadow: 0 0 0 0.2rem var(--ip-ring);
}

/* Palette template: badge primary del tema ricolorato in verde */
.badge-primary {
    color: #fff;
    background-color: var(--ip-green);
}

/* Palette template: hover e focus del badge primary */
a.badge-primary:hover,
a.badge-primary:focus {
    color: #fff;
    background-color: var(--ip-green-dark);
}

/* Palette template: focus ring del badge primary */
a.badge-primary:focus,
a.badge-primary.focus {
    box-shadow: 0 0 0 0.2rem var(--ip-ring-strong);
}

/* Palette template: badge danger e ribasso con rosso ufficiale */
.badge-danger,
.badge-ip-ribasso {
    background-color: var(--ip-red) !important;
    color: #fff !important;
}

/* Palette template: utility testo danger coerente con il rosso ufficiale */
.text-danger {
    color: var(--ip-red) !important;
}

/* Palette template: badge arancio per novita e CTA secondarie */
.badge-orange,
.badge-ip-nuovo {
    background-color: var(--ip-orange) !important;
    color: #fff !important;
}

/* Palette template: bottone arancio riutilizzabile per la valutazione */
.btn-orange {
    background-color: var(--ip-orange) !important;
    border-color: var(--ip-orange) !important;
    color: #fff !important;
}

/* Palette template: hover del bottone arancio */
.btn-orange:hover {
    background-color: var(--ip-orange-dark) !important;
    border-color: var(--ip-orange-dark) !important;
}

/* Palette template: alert primary con variante light green ufficiale */
.alert-primary {
    color: var(--ip-green-dark);
    background-color: var(--ip-green-light);
    border-color: #bce3c8;
}

/* Palette template: separatore interno dell'alert primary */
.alert-primary hr {
    border-top-color: #a8d7b8;
}

/* Palette template: link interno dell'alert primary con verde scuro */
.alert-primary .alert-link {
    color: var(--ip-green-dark);
}

/* Palette template: list group primary con variante verde chiaro */
.list-group-item-primary {
    color: var(--ip-green-dark);
    background-color: var(--ip-green-light);
}

/* Palette template: hover dei list group primary */
.list-group-item-primary.list-group-item-action:hover,
.list-group-item-primary.list-group-item-action:focus {
    color: var(--ip-green-dark);
    background-color: #d6ebdc;
}

/* Palette template: elemento list group primary attivo */
.list-group-item-primary.list-group-item-action.active {
    color: #fff;
    background-color: var(--ip-green);
    border-color: var(--ip-green);
}

/* Palette template: utility di background primary del tema */
.bg-primary {
    background-color: var(--ip-green) !important;
}

/* Palette template: hover del background primary */
a.bg-primary:hover,
a.bg-primary:focus,
button.bg-primary:hover,
button.bg-primary:focus {
    background-color: var(--ip-green-dark) !important;
}

/* Palette template: utility di background accent con verde light ufficiale */
.bg-accent {
    background-color: var(--ip-green-light) !important;
}

/* Palette template: utility di bordo primary del tema */
.border-primary {
    border-color: var(--ip-green) !important;
}

/* Palette template: hover del bordo primary del tema */
.border-hover-primary:hover {
    border-color: var(--ip-green) !important;
}

/* Palette template: utility testo primary del tema */
.text-primary {
    color: var(--ip-green) !important;
}

/* Palette template: i titoli di sezione del template erano #333 (nero);
   usano il blu del tema come tutti gli altri testi scuri delle pagine. */
.text-heading {
    color: var(--ip-navy-title) !important;
}

/* Home page: titolo dei riquadri "in cosa possiamo aiutarti" nel verde del tema */
.help-services-card__title--verde,
a:hover .help-services-card__title--verde,
a:focus .help-services-card__title--verde {
    color: var(--ip-green) !important;
}

/* Palette template: utility testo secondary del tema */
.text-secondary {
    color: var(--ip-navy) !important;
}

/* Palette template: hover del testo primary del tema */
a.text-primary:hover,
a.text-primary:focus {
    color: var(--ip-green-dark) !important;
}

/* Palette template: hover del testo secondary del tema */
a.text-secondary:hover,
a.text-secondary:focus {
    color: var(--ip-navy-dark) !important;
}

/* Palette template: utility hover testo primary del tema */
.hover-primary:hover,
a.hover-primary:hover,
a.hover-primary:focus {
    color: var(--ip-green) !important;
}

/* Palette template: utility hover background primary del tema */
.bg-hover-primary:hover,
a.bg-hover-primary:hover,
a.bg-hover-primary:focus {
    background-color: var(--ip-green) !important;
}

/* Home page: icona del pulsante back to top bianca in hover e focus */
.gtf-back-to-top:hover,
.gtf-back-to-top:focus,
.gtf-back-to-top:hover i,
.gtf-back-to-top:focus i {
    color: #ffffff !important;
}

/* Palette template: heading divider delle sezioni allineato al verde ufficiale */
.heading-divider {
    background-color: var(--ip-green) !important;
}

/* Palette template: frecce slick in hover con verde ufficiale al posto del ciano */
.slick-arrow:hover {
    color: #fff;
    background-color: var(--ip-green) !important;
}

/* Palette template: hover frecce top slider con colore primary corretto */
.custom-slider-arrow-top .slick-arrow:hover {
    color: var(--ip-green) !important;
}

/* Palette template: divider testimonianze del tema riallineato al verde ufficiale */
.testimonials .divider {
    background-color: var(--ip-green) !important;
}

/* Palette template: icona accordion aperto con verde ufficiale */
.accordion-02 .btn:not(.collapsed)::before {
    color: var(--ip-green) !important;
}

/* Palette template: stato attivo tabs-02 con verde ufficiale */
.tabs-02 a.active,
.tabs-02 a.nav-link:hover {
    color: var(--ip-green) !important;
}

/* Palette template: underline tabs-03 con verde ufficiale */
.tabs-03 a.nav-link:before {
    background-color: var(--ip-green) !important;
}

/* Palette template: helper active primary del tema senza residui ciano */
.bg-active-primary.active,
.bg-active-primary:focus.active,
.btn-active-primary.active {
    background-color: var(--ip-green) !important;
}

/* Palette template: heading e testo base allineati alla palette ufficiale */
h1, h2, h3, h4, h5, h6,
.headings-color {
    color: var(--ip-text-heading);
}

/* Palette template: testo base del tema coerente con la palette ufficiale */
body {
    color: var(--ip-text-body);
}

/* Pagina dettaglio immobile: article principale a larghezza piena nel container */
.property-detail-article {
    width: 100%;
    max-width: 100%;
    padding-left: 0;
    padding-right: 0;
}

/* Pagina dettaglio immobile: nuovo banner superiore con altezza controllata */
.property-detail-title-banner,
.home-main-banner {
    min-height: var(--home-banner-height, 294px);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
}

/* Pagina dettaglio immobile: contenitore banner a tutta altezza disponibile */
.property-detail-title-banner .container,
.home-main-banner .container {
    min-height: var(--home-banner-height, 294px);
    height: var(--home-banner-height, 294px);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Pagina dettaglio immobile: wrapper titolo banner occupa tutta l'altezza e centra il contenuto */
.home-main-banner .imm-home-banner-title-wrap {
    width: 100%;
    min-height: 100%;
    display: flex !important;
    align-items: center;
    justify-content: center;
    padding: 0 1rem;
}

/* Pagina dettaglio immobile: titolo centrato del banner superiore */
.property-detail-title-banner__title {
    max-width: 540px;
    font-size: 2rem;
    line-height: 1.2;
    letter-spacing: 0;
}

/* Pagina dettaglio immobile: spaziatura verticale tra i pannelli principali */
.property-detail-article > section {
    margin-bottom: 1.5rem;
}

/* Pagina dettaglio immobile: card base delle nuove section in stile tema */
.property-detail-panel {
    background-color: var(--ip-superficie);
    border: 1px solid #e7ece8;
    overflow: hidden;
}

/* Pagina dettaglio immobile: padding interno uniforme per i nuovi pannelli */
.property-detail-panel__body {
    padding: 1.5rem 1.625rem;
}

/* Pagina dettaglio immobile: titolo sezione coerente con il blu del tema */
.property-detail-panel__title {
    margin-bottom: 1rem;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--ip-navy-dark);
}

/* Pagina dettaglio immobile: prezzo principale evidenziato in verde tema */
.property-detail-summary__price {
    font-size: 2rem;
    line-height: 1;
    font-weight: 700;
    color: var(--ip-green);
}

/* Pagina dettaglio immobile: titolo immobile con forte gerarchia visiva */
.property-detail-summary__title {
    font-size: 2rem;
    line-height: 1.15;
    font-weight: 700;
    color: var(--ip-navy-dark);
}

/* Pagina dettaglio immobile: riga localita con icona e testo allineati */
.property-detail-summary__location {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--ip-navy-dark);
    font-weight: 500;
}

/* Pagina dettaglio immobile: icona posizione in verde per richiamare il tema */
.property-detail-summary__location i {
    color: var(--ip-green);
}

/* Pagina dettaglio immobile: griglia caratteristiche SENZA RIQUADRO CARD, solo lineette divisorie mezzo-riga come pulsanti mobile */
.property-detail-features {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    overflow: visible !important;
}

/* Pagina dettaglio immobile: singolo elemento caratteristiche con linea orizzontale e TESTO SU PIU RIGHE COMPATTO (no spaziatura eccessiva) */
.property-detail-features__item {
    position: relative;
    display: flex;
    align-items: flex-start; /* icona in alto a sinistra invece che centrata verticalmente, avvolge testo compatto */
    gap: 0.45rem;
    min-height: 52px;
    padding: 0.7rem 0.9rem;
    color: var(--ip-navy-dark);
    font-weight: 500;
    font-size: 0.93rem;
    border-bottom: 1px solid #e5e7eb;
    line-height: 1.18; /* interlinea piu stretta per testi a capo come Riscaldamento autonomo / Classe F */
}

/* Pagina dettaglio immobile: testo dello span dentro caratteristiche - rendo esplicita l'interlinea compatta */
.property-detail-features__item > span {
    display: block;
    line-height: 1.18;
    padding-top: 2px; /* micro allineamento verticale con l'icona che sta in flex-start */
}

/* Pagina dettaglio immobile: linea VERTICALE a meta altezza (20-80%) tra elementi, identica a barra azioni mobile */
.property-detail-features__item:not(:last-child)::after {
    content: '';
    position: absolute;
    right: 0;
    top: 20%;
    bottom: 20%;
    width: 1px;
    background-color: #e5e7eb;
}

/* Pagina dettaglio immobile desktop: 4 COLONNE x 2 RIGHE per Caratteristiche principali
   (8 dati: mq, camere, bagni, piano | riscaldamento, classe E., tipologia, ascensore) */
@media (min-width: 992px) {
    .property-detail-features {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
    .property-detail-features__item:nth-child(4n)::after {
        display: none;
    }
    .property-detail-features__item:nth-last-child(-n+4) {
        border-bottom: 0;
    }
}

/* Pagina dettaglio immobile: icone caratteristiche con dimensione e colore coordinati */
.property-detail-features__item i {
    color: var(--ip-green);
    font-size: 1.05rem;
    width: 20px;
    text-align: center;
    flex-shrink: 0;
}

/* Pagina dettaglio immobile: testo descrittivo con interlinea comoda */
.property-detail-description {
    color: var(--ip-navy-dark);
    line-height: 1.8;
}

/* Pagina dettaglio immobile: contenitore interno della descrizione gestito dal toggle */
.property-detail-description__content {
    display: block;
}

/* Pagina dettaglio immobile: pulsante testo per il finto expand della descrizione */
.property-detail-read-more {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--ip-green);
    font-weight: 700;
}

/* Pagina dettaglio immobile: icona del toggle sempre ben allineata al testo */
.property-detail-read-more i {
    font-size: 0.95rem;
}

/* Pagina dettaglio immobile: gruppo CTA contatto disposto in due colonne */
.property-detail-contact__actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1.25rem;
}

/* Pagina dettaglio immobile: pulsanti contatto con centratura icona e testo */
.property-detail-contact__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    min-height: 52px;
    font-weight: 700;
}

/* Pagina dettaglio immobile: indirizzo della mappa con allineamento ordinato */
.property-detail-map__address {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--ip-navy-dark);
    font-weight: 500;
}

/* Pagina dettaglio immobile: icona indirizzo mappa in verde tema */
.property-detail-map__address i {
    color: var(--ip-green);
}

/* Pagina dettaglio immobile: area preview mappa con grafica morbida tipo mockup */
.property-detail-map__preview {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 168px;
    margin-bottom: 1rem;
    border-radius: 5px;
    border: 1px solid #e4ebe5;
    background-color: #f5f4ef;
    background-image:
        linear-gradient(90deg, rgba(255, 255, 255, 0.6) 0, rgba(255, 255, 255, 0.6) 2px, transparent 2px, transparent 86px),
        linear-gradient(rgba(255, 255, 255, 0.65) 0, rgba(255, 255, 255, 0.65) 2px, transparent 2px, transparent 66px),
        linear-gradient(135deg, rgba(225, 232, 223, 0.9) 18%, transparent 18.5%),
        linear-gradient(35deg, rgba(232, 236, 229, 0.95) 20%, transparent 20.5%);
    background-size: 96px 96px, 72px 72px, 100% 100%, 100% 100%;
    background-position: center center, center center, center center, center center;
}

/* Pagina dettaglio immobile: pin verde centrale della preview mappa */
.property-detail-map__pin {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background-color: var(--ip-green);
    color: #ffffff;
    font-size: 1.35rem;
    box-shadow: 0 10px 18px color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 20%, transparent);
}

/* Pagina dettaglio immobile: bottone maps con larghezza piena */
.property-detail-map__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    width: 100%;
    min-height: 52px;
    font-weight: 700;
}

/* Pagina dettaglio immobile: link testuale vedi tutte nella sezione correlate */
.property-detail-related__link {
    color: var(--ip-green);
    font-weight: 700;
}

/* Pagina dettaglio immobile: card correlate con altezza immagine piu compatta */
.property-card-home--detail-related .property-card-home__media {
    min-height: 150px;
}

/* Pagina dettaglio immobile: corpo card correlate con padding alleggerito */
.property-card-home--detail-related .property-card-home__body {
    padding: 1rem 1rem 1.125rem;
}

/* Pagina dettaglio immobile: titolo card correlate con dimensione piu raccolta */
.property-card-home--detail-related .property-card-home__title {
    font-size: 1rem;
}

/* Pagina dettaglio immobile: prezzo card correlate con maggiore enfasi cromatica */
.property-card-home--detail-related .property-card-home__price {
    font-size: 1.2rem;
}

/* Pagina dettaglio immobile: fascia finale di supporto con layout orizzontale */
.property-detail-help {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    padding: 1.75rem 1.875rem;
    border: 1px solid #e7ece8;
    background-color: #f7f9f7;
}

/* Pagina dettaglio immobile: icona home INGRANDITA (piu evidente come da mockup) */
.property-detail-help__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 96px;
    height: 96px;
    border-radius: 50%;
    background-color: #e8f3ea;
    color: var(--ip-green);
    font-size: 2.65rem;
    flex: 0 0 96px;
}

/* Pagina dettaglio immobile: contenuto testuale della fascia finale flessibile */
.property-detail-help__content {
    flex: 1 1 auto;
}

/* Pagina dettaglio immobile: titolo fascia finale con tono deciso ma compatto */
.property-detail-help__title {
    font-size: 1.45rem;
    font-weight: 700;
    color: var(--ip-navy-dark);
}

/* Pagina dettaglio immobile: testo fascia finale con lunghezza ben leggibile */
.property-detail-help__text {
    color: var(--ip-navy-dark);
    line-height: 1.7;
}

/* Pagina dettaglio immobile: bottone WhatsApp outlined FINALE - STESSE DIMENSIONI dei pulsanti "Ti interessa questo immobile?" */
.property-detail-help__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    min-height: 58px;
    line-height: 1.1;
    min-width: 320px;
    font-size: 1.18rem;
    font-weight: 700 !important;
    letter-spacing: 0.01em;
    border-width: 2px !important;
    border-radius: 5px;
    color: var(--ip-green) !important;
    border-color: var(--ip-green) !important;
    background-color: var(--ip-superficie) !important;
    transition: all 0.22s ease;
    padding: 0.6rem 1.1rem;
    white-space: nowrap;
}
.property-detail-help__button span {
    line-height: 1;
    display: inline-block;
}
.property-detail-help__button i {
    font-size: 1.5rem;
    line-height: 1;
}
.property-detail-help__button:hover {
    background-color: var(--ip-green) !important;
    color: #ffffff !important;
    border-color: var(--ip-green) !important;
    transform: translateY(-2px);
    box-shadow: 0 12px 24px color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 22%, transparent);
}

/* Pagina dettaglio immobile: caratteristiche principali - RIMUOVE EFFETTO CARD in modo esplicito tramite classe dedicata */
.property-detail-panel--features {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 0 1rem 0 !important;
    overflow: visible !important;
}

/* Pagina dettaglio immobile: caratteristiche principali - azzero padding interno del body e imposto titolo compatto */
.property-detail-panel--features .property-detail-panel__body {
    padding: 0 !important;
}
.property-detail-panel--features .property-detail-panel__title {
    padding-top: 1rem;
    margin-bottom: 1rem;
}

/* Pagina dettaglio immobile: DESCRIZIONE - RIMUOVE EFFETTO CARD (stesso identico trattamento delle caratteristiche) */
.property-detail-panel--description {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 0 1rem 0 !important;
    overflow: visible !important;
}

/* Pagina dettaglio immobile: DESCRIZIONE - azzero padding interno body e imposto titolo compatto */
.property-detail-panel--description .property-detail-panel__body {
    padding: 0 !important;
}
.property-detail-panel--description .property-detail-panel__title {
    padding-top: 1rem;
    margin-bottom: 1rem;
}

/* Pagina dettaglio immobile: TI INTERESSA QUESTO IMMOBILE? - sfondo GRIGIO CHIARISSIMO (non piu verde) palette neutra tema */
.property-detail-panel--interest {
    background-color: #f5f6f8 !important;
    border: 1px solid #e5e7eb !important;
    border-radius: 5px !important;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05) !important;
    -webkit-box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05) !important;
    padding: 2.25rem !important;
    margin: 0 0 1.5rem 0 !important;
}

/* Pagina dettaglio immobile: TI INTERESSA - padding interno body azzerato (gestito dal section) e titolo navy scuro + grande */
.property-detail-panel--interest .property-detail-panel__body {
    padding: 0 !important;
}
.property-detail-panel--interest .property-detail-panel__title {
    color: #0f172a;
    font-size: 1.75rem !important;
    font-weight: 700 !important;
    letter-spacing: -0.01em;
    margin-bottom: 0.5rem !important;
    padding-top: 0 !important;
}

/* Pagina dettaglio immobile: TI INTERESSA - testo sottotitolo navy leggermente piu scuro, interlinea comoda */
.property-detail-panel--interest .property-detail-contact__text {
    /* corpo e colore allineati al testo standard del sito */
    color: var(--ip-text-color);
    font-size: var(--ip-text-size) !important;
    line-height: var(--ip-text-line);
    margin-bottom: 1.75rem !important;
    font-weight: 500;
}

/* Pagina dettaglio immobile: TI INTERESSA - griglia 2 pulsanti larghi uguali, piu evidenti e con gap */
.property-detail-panel--interest .property-detail-contact__actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem;
}

/* Pagina dettaglio immobile: TI INTERESSA - stile comune pulsanti, alto, font grosso, icone grandi */
.property-detail-panel--interest .property-detail-contact__button {
    min-height: 64px;
    border-radius: 5px;
    font-size: 1.2rem;
    font-weight: 700 !important;
    letter-spacing: 0.01em;
    border-width: 2px !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 0 1rem;
    transition: all 0.22s ease;
}
.property-detail-panel--interest .property-detail-contact__button i {
    font-size: 1.55rem;
}

/* Pagina dettaglio immobile: TI INTERESSA - pulsante WhatsApp PIENO VERDE TEMA + testo bianco + effetto hover sollevato */
.property-detail-panel--interest .property-detail-contact__button--whatsapp {
    background-color: var(--ip-green) !important;
    color: #ffffff !important;
    border-color: var(--ip-green) !important;
    box-shadow: 0 8px 20px color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 22%, transparent);
}
.property-detail-panel--interest .property-detail-contact__button--whatsapp:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 24px color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 28%, transparent);
    background-color: var(--ip-green-dark) !important;
    border-color: var(--ip-green-dark) !important;
}

/* Pagina dettaglio immobile: TI INTERESSA - pulsante Chiama OUTLINED BIANCO VERDE + hover pieno con testo bianco */
.property-detail-panel--interest .property-detail-contact__button--call {
    background-color: var(--ip-superficie) !important;
    color: var(--ip-green) !important;
    border-color: var(--ip-green) !important;
}
.property-detail-panel--interest .property-detail-contact__button--call:hover {
    background-color: var(--ip-green) !important;
    color: #ffffff !important;
    border-color: var(--ip-green) !important;
    transform: translateY(-2px);
    box-shadow: 0 12px 24px color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 22%, transparent);
}

/* Pagina dettaglio immobile: TI INTERESSA - responsive mobile 1 colonna */
@media (max-width: 767.98px) {
    .property-detail-panel--interest {
        padding: 1.5rem !important;
        border-radius: 5px !important;
    }
    .property-detail-panel--interest .property-detail-panel__title {
        font-size: 1.4rem !important;
    }
    .property-detail-panel--interest .property-detail-contact__text {
        font-size: var(--ip-text-size) !important;
        margin-bottom: 1.25rem !important;
    }
    .property-detail-panel--interest .property-detail-contact__actions {
        grid-template-columns: 1fr;
        gap: 0.85rem;
    }
    .property-detail-panel--interest .property-detail-contact__button {
        min-height: 56px;
        font-size: 1.05rem;
    }
    .property-detail-panel--interest .property-detail-contact__button i {
        font-size: 1.35rem;
    }
}

/* Pagina dettaglio immobile: DOVE SI TROVA - rimuove effetto card (tipo caratteristiche/descrizione) */
.property-detail-panel--map {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 0 1.5rem 0 !important;
    overflow: visible !important;
}
.property-detail-panel--map .property-detail-panel__body {
    padding: 0 !important;
}
.property-detail-panel--map .property-detail-panel__title {
    padding-top: 1rem;
    margin-bottom: 1rem;
}
.property-detail-panel--map .property-detail-map__address {
    color: #4b5563;
    font-size: 1rem;
}

/* Pagina dettaglio immobile: VIDEO - rimuove effetto card (stesso pattern features/description/map) */
.property-detail-panel--video {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 0 1.5rem 0 !important;
    overflow: visible !important;
}
.property-detail-panel--video .property-detail-panel__body {
    padding: 0 !important;
}
.property-detail-panel--video .property-detail-panel__title {
    padding-top: 1rem;
    margin-bottom: 1rem;
}

/* Pagina dettaglio immobile: PLANIMETRIE - rimuove effetto card (stesso pattern video/map) */
.property-detail-panel--floorplan {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 0 1.5rem 0 !important;
    overflow: visible !important;
}
.property-detail-panel--floorplan .property-detail-panel__body {
    padding: 0 !important;
}
.property-detail-panel--floorplan .property-detail-panel__title {
    padding-top: 1rem;
    margin-bottom: 1rem;
}

/* Pagina dettaglio immobile: DETTAGLI AGGIUNTIVI - rimuove effetto card (stesso pattern features/description/map) */
.property-detail-panel--additional {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 0 1rem 0 !important;
    margin: 0 0 1.5rem 0 !important;
    overflow: visible !important;
}
.property-detail-panel--additional .property-detail-panel__body {
    padding: 0 !important;
}
.property-detail-panel--additional.additional-details.pt-6 {
    padding-top: 1rem !important;
}
.property-detail-panel--additional.additional-details.pb-4 {
    padding-bottom: 0.5rem !important;
}

/* Pagina dettaglio immobile: DETTAGLI AGGIUNTIVI - righe 60% label / 40% valore, spaziature coerenti */
.additional-details .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
}
.additional-details .row > [class*="col-"] {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
.additional-details__row {
    border-bottom: 1px solid #eef2f4;
    padding: 0.85rem 0;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
    display: flex !important;
    flex-direction: row !important;
    justify-content: space-between !important;
    gap: 0.75rem;
}
/* Desktop: GAP TRA LE DUE COLONNE applicato DIRETTAMENTE sulle .col-sm-6 (non sul figlio dl): sx padding 60px DX, dx padding 60px SX → 120px gap TOTALE AL CENTRO */
@media (min-width: 576px) {
    .additional-details .row > [class*="col-"] {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    .additional-details .row > .col-sm-6:nth-child(odd) {
        padding-right: 3.75rem !important;
    }
    .additional-details .row > .col-sm-6:nth-child(even) {
        padding-left: 3.75rem !important;
    }
    .additional-details .row > .col-sm-6:nth-last-child(-n+2) .additional-details__row {
        border-bottom: 0;
    }
}
@media (max-width: 575.98px) {
    .additional-details__row {
        padding: 0.85rem 0;
    }
    .additional-details .row > *:last-child .additional-details__row {
        border-bottom: 0;
    }
}

/* LABEL a SX (non comprimibile oltre un certo minimo) */
.additional-details__label {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 0.92rem;
    line-height: 1.4;
    color: #1f2937;
    display: inline-flex;
    align-items: center;
}
/* VALORE a DX (forzato a destra con margin-left auto + justify space-between) */
.additional-details__value {
    flex: 0 0 auto;
    min-width: 0;
    max-width: 55%;
    font-size: 0.92rem;
    line-height: 1.4;
    font-weight: 600;
    color: #0f172a;
    text-align: right !important;
    margin-left: auto !important;
    margin-right: 0 !important;
    word-break: break-word;
    overflow-wrap: break-word;
    align-self: center;
    justify-self: flex-end;
}

/* Icone check VERDI TEMA invece che viola text-primary BS, coerente con palette Immobiliare Piccolo */
.additional-details__check {
    color: var(--ip-green) !important;
    font-weight: 700;
    font-size: 0.95rem;
}

/* ============================================================
   Pagina dettaglio immobile: "DOVE SI TROVA" — mappa Leaflet
   Sostituisce la vecchia griglia statica 3x3 di tile OSM: quella non
   consentiva pan reale, lo zoom ricalcolava i tile disallineando il
   marker dalla posizione, e i tile quadrati venivano deformati da
   object-fit: cover. Leaflet gestisce tutto nativamente.
   ============================================================ */
#map.ip-detail-map-wrap,
.ip-detail-map-wrap {
    width: 100%;
    max-width: 100%;
    height: 420px;
    border-radius: 5px;
    overflow: hidden;
    border: 1px solid #e5e7eb;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);
    background-color: var(--ip-navy-light);
    position: relative;
    box-sizing: border-box;
    z-index: 0; /* tiene i pane Leaflet sotto header/menu sticky del sito */
}

@media (max-width: 767.98px) {
    /* altezza mobile definita in fondo al file, nel blocco interfaccia mobile */
    #map.ip-detail-map-wrap,
    .ip-detail-map-wrap {
        border-radius: 5px;
    }
}

/* Marker: stesso pin navy del resto del sito, reso come divIcon Leaflet */
.ip-detail-map-pin {
    background: none;
    border: 0;
}

.ip-detail-map-pin svg {
    position: relative;
    z-index: 2;
    width: 46px;
    height: 54px;
    display: block;
    filter: drop-shadow(0 6px 10px rgba(15, 23, 42, 0.25));
}

/* Alone pulsante ancorato alla punta del pin */
.ip-detail-map-pin__pulse {
    position: absolute;
    left: 50%;
    bottom: 0;
    width: 30px;
    height: 30px;
    margin-left: -15px;
    border-radius: 50%;
    background: rgba(56, 189, 248, 0.42);
    transform: scale(0.4);
    animation: ipMapPulse 2.2s ease-out infinite;
    pointer-events: none;
    z-index: 1;
}

@keyframes ipMapPulse {
    0%   { transform: scale(0.4); opacity: 0.95; }
    70%  { transform: scale(3.4); opacity: 0; }
    100% { transform: scale(3.4); opacity: 0; }
}

/* Controlli zoom Leaflet allineati allo stile del template */
.ip-detail-map-wrap .leaflet-control-zoom {
    border: 0;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
    border-radius: 5px;
    overflow: hidden;
}

.ip-detail-map-wrap .leaflet-control-zoom a {
    width: 34px;
    height: 34px;
    line-height: 34px;
    color: #334155;
    background: var(--ip-superficie);
    border-bottom: 1px solid #e5e7eb;
    font-size: 18px;
    font-weight: 600;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.ip-detail-map-wrap .leaflet-control-zoom a:last-child {
    border-bottom: 0;
}

.ip-detail-map-wrap .leaflet-control-zoom a:hover {
    background-color: var(--ip-fascia-chiara);
    color: var(--ip-green);
}

.ip-detail-map-wrap .leaflet-control-zoom a.leaflet-disabled {
    color: #cbd5e1;
    background-color: var(--ip-fascia-chiara);
}

/* Attribuzione OSM: obbligatoria per licenza, resa discreta */
.ip-detail-map-wrap .leaflet-control-attribution {
    font-size: 0.65rem;
    background: rgba(255, 255, 255, 0.78);
    color: rgba(15, 23, 42, 0.72);
    padding: 1px 5px;
}

.ip-detail-map-wrap .leaflet-control-attribution a {
    color: rgba(15, 23, 42, 0.85);
}

/* Popup con l'indirizzo dell'immobile */
.ip-detail-map-wrap .leaflet-popup-content {
    font-size: 0.92rem;
    line-height: 1.5;
    color: #0f172a;
    margin: 0.7rem 0.9rem;
}

.ip-detail-map-wrap .leaflet-popup-content-wrapper {
    border-radius: 5px;
    box-shadow: 0 3px 12px rgba(15, 23, 42, 0.18);
}

/* Bordo di richiamo quando la rotella del mouse controlla lo zoom */
.ip-detail-map-wrap.is-scroll-active {
    box-shadow: 0 0 0 3px var(--ip-ring), 0 2px 10px rgba(0, 0, 0, 0.06);
}

/* Istruzioni d'uso sotto la mappa */
.ip-detail-map-hint {
    margin: 0.75rem 0 0;
    font-size: 0.82rem;
    line-height: 1.5;
    color: #64748b;
}

.ip-detail-map-hint i {
    color: var(--ip-green);
    margin-right: 0.35rem;
}

.ip-detail-map-hint kbd {
    display: inline-block;
    min-width: 18px;
    padding: 0 4px;
    font-size: 0.78rem;
    font-family: inherit;
    text-align: center;
    color: #334155;
    background: var(--ip-navy-light);
    border: 1px solid #e2e8f0;
    border-radius: 5px;
}

/* Pagina dettaglio immobile: adattamento tablet della griglia caratteristiche (2 colonne) */
@media (max-width: 991.98px) {
    .property-detail-features {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* Pagina dettaglio immobile: adattamento tablet della fascia finale */
@media (max-width: 991.98px) {
    .property-detail-help {
        flex-wrap: wrap;
    }
}

/* Pagina dettaglio immobile: adattamento tablet del blocco azioni finale */
@media (max-width: 991.98px) {
    .property-detail-help__actions {
        width: 100%;
    }
}

/* Pagina dettaglio immobile: adattamento smartphone dei pannelli */
@media (max-width: 767.98px) {
    .property-detail-title-banner {
        min-height: 150px;
    }
}

/* Pagina dettaglio immobile: titolo banner piu compatto su smartphone */
@media (max-width: 767.98px) {
    .property-detail-title-banner__title {
        font-size: 1.55rem;
    }
}

/* Pagina dettaglio immobile: adattamento smartphone dei pannelli */
@media (max-width: 767.98px) {
    .property-detail-panel__body {
        padding: 1.25rem;
    }
}

/* Pagina dettaglio immobile desktop: rimuove EFFETTO CARD dal summary ma mantiene il testo (prezzo titolo posizione) visibile senza contenitore */
@media (min-width: 768px) {
    .property-detail-panel.property-detail-summary,
    .property-detail-summary {
        display: block !important;
        background: transparent !important;
        box-shadow: none !important;
        -webkit-box-shadow: none !important;
        border-radius: 0 !important;
        border: 0 !important;
        padding: 0 !important;
        margin-bottom: var(--ip-sp-blocco) !important;
    }
    .property-detail-summary .property-detail-panel__body {
        padding: 0 !important;
    }
    .property-detail-summary .mb-2 {
        margin-bottom: 0.6rem !important;
    }
}

/* Pagina dettaglio immobile: barra nav pulsanti desktop - contenuta in div.container Bootstrap, quindi gia allineata ai bordi della gallery foto sotto */
.property-detail-naviprevnext {
    width: 100%;
    row-gap: 0.75rem;
    column-gap: 1.25rem;
    /* Stesso stacco delle sezioni sopra; sotto, verso la barra delle azioni,
       lo stacco fra elementi della stessa fascia. */
    margin-top: var(--ip-sp-sezione) !important;
    margin-bottom: var(--ip-sp-blocco) !important;
}

/* Pagina dettaglio immobile: pulsanti outlined VERDI compatti (altezza 38px, non piu giganti 48px) */
.property-detail-naviprevnext .btn {
    min-height: 38px;
    height: 38px;
    font-size: 0.92rem;
    font-weight: 600;
    background-color: var(--ip-superficie);
    padding: 0 1rem !important;
    transition: all 0.2s ease;
}

/* Pagina dettaglio immobile: icone dei pulsanti nav compatto */
.property-detail-naviprevnext .btn i {
    font-size: 1rem;
}

/* Pagina dettaglio immobile: HOVER VERDE TEMA PIENO con icone e testi BIANCHI (non piu viola) */
.property-detail-naviprevnext a.btn:hover {
    background-color: var(--ip-green) !important;
    color: #ffffff !important;
    border-color: var(--ip-green) !important;
}
.property-detail-naviprevnext a.btn:hover i {
    color: #ffffff !important;
}

/* Pagina dettaglio immobile: label "Annuncio X di Y" compatta per armonizzare con i pulsanti piccoli */
.property-detail-naviprevnext .fs-13,
.property-detail-naviprevnext [style*="fs-14"] {
    font-size: 0.92rem !important;
    font-weight: 600 !important;
    color: #111827 !important;
    padding: 0 0.25rem;
}

/* Pagina dettaglio immobile mobile: nasconde la card summary con i testi perché abbiamo gia la sezione light dopo i 4 pulsanti */
@media (max-width: 767.98px) {
    .property-detail-panel.property-detail-summary,
    .property-detail-summary {
        display: none !important;
    }
}

/* Pagina dettaglio immobile: titolo immobile piu compatto su tablet/piccoli desktop per stare in riga unica */
@media (max-width: 991.98px) {
    .property-detail-summary__title {
        font-size: 1.3rem !important;
        line-height: 1.2;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
}

/* Pagina dettaglio immobile: titolo immobile compatto anche su grandi desktop se contenuto lungo */
@media (min-width: 992px) {
    .property-detail-summary__title {
        font-size: 1.45rem;
        line-height: 1.25;
    }
}

/* Pagina dettaglio immobile: griglia caratteristiche a DUE colonne su smartphone (come richiesto) + rimozione divisori verticali dopo ogni 2 elem. */
@media (max-width: 767.98px) {
    .property-detail-features {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .property-detail-features__item {
        min-height: 58px;
        padding: 0.85rem 0.9rem;
        font-size: 0.85rem;
        gap: 0.45rem;
    }
    .property-detail-features__item i {
        font-size: 0.95rem;
        width: 16px;
    }
    /* Su mobile 2 colonne: nascondo linea verticale dopo ogni 2° elemento */
    .property-detail-features__item:nth-child(2n)::after {
        display: none;
    }
    /* Tolgo bordo inferiore agli ultimi 2 elementi dell'ultima riga */
    .property-detail-features__item:nth-last-child(-n+2) {
        border-bottom: 0;
    }
}

/* Pagina dettaglio immobile: tablet 2 colonne - nascondo divisori verticali dopo ogni 2 elementi e ultimi 2 no border-bottom */
@media (min-width: 768px) and (max-width: 991.98px) {
    .property-detail-features__item:nth-child(2n)::after {
        display: none;
    }
    .property-detail-features__item:nth-last-child(-n+2) {
        border-bottom: 0;
    }
}

/* Pagina dettaglio immobile: CTA contatto in colonna su smartphone */
@media (max-width: 767.98px) {
    .property-detail-contact__actions {
        grid-template-columns: 1fr;
    }
}

/* Pagina dettaglio immobile: testata correlati impilata su smartphone */
@media (max-width: 767.98px) {
    .property-detail-related .d-flex {
        flex-direction: column;
        align-items: flex-start !important;
        gap: 0.5rem;
    }
}

/* Pagina dettaglio immobile: fascia finale in colonna su smartphone */
@media (max-width: 767.98px) {
    .property-detail-help {
        flex-direction: column;
        align-items: flex-start;
        padding: 1.25rem 1.35rem;
        gap: 1rem;
    }
    .property-detail-help__icon {
        width: 80px;
        height: 80px;
        font-size: 2.1rem;
        flex: 0 0 80px;
    }
}

/* Pagina dettaglio immobile: bottone finale a larghezza piena su smartphone */
@media (max-width: 767.98px) {
    .property-detail-help__button {
        width: 100%;
        min-width: 0;
        min-height: 56px;
        font-size: 1.05rem;
    }
    .property-detail-help__button i {
        font-size: 1.35rem;
    }
}

/* Pagina dettaglio immobile mobile: nasconde il banner titolo superiore */
@media (max-width: 767.98px) {
    .property-detail-title-banner {
        display: none;
    }
}

/* Pagina dettaglio immobile mobile: nasconde il modulo ricerca mantenendolo invariato sul desktop */
@media (max-width: 767.98px) {
    .home-search-shell {
        display: none;
    }
}

/* Pagina dettaglio immobile: hero banner principale con immagine e badges iniziali */
.property-detail-hero-section {
    padding-top: 0;
    padding-bottom: 0;
}

/* Pagina dettaglio immobile: wrapper hero con padding laterale coerente sul desktop */
.property-detail-hero {
    position: relative;
    overflow: hidden;
    border-radius: 0;
}

/* Pagina dettaglio immobile: badges iniziali di stato nell'angolo in alto a sinistra */
.property-detail-hero__badges {
    position: absolute;
    top: 18px;
    left: 18px;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Pagina dettaglio immobile: badge singolo con padding e raggio coerenti al tema */
.property-detail-hero__badge {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 14px;
    border-radius: 5px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #ffffff;
    line-height: 1;
}

/* Pagina dettaglio immobile: badge vendita in verde tema */
.property-detail-hero__badge--sale {
    background-color: var(--ip-green);
}

/* Pagina dettaglio immobile: badge esclusiva in grigio scuro per contrasto */
.property-detail-hero__badge--exclusive {
    background-color: #111827;
}

/* Pagina dettaglio immobile: pulsante cuore preferiti in alto a destra */
.property-detail-hero__fav {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: var(--ip-superficie);
    color: #111827;
    border: 0;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.12);
    font-size: 1rem;
}

/* Pagina dettaglio immobile: contenitore immagine hero */
.property-detail-hero__media {
    position: relative;
    display: block;
    width: 100%;
    min-height: 420px;
}

/* Pagina dettaglio immobile: immagine hero a piena altezza con bg-size cover */
.property-detail-hero__img {
    position: absolute;
    inset: 0;
    display: block;
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;
}

/* Pagina dettaglio immobile: contatore foto in basso a sinistra */
.property-detail-hero__counter {
    position: absolute;
    left: 18px;
    bottom: 18px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 32px;
    padding: 0 12px;
    border-radius: 5px;
    background-color: rgba(17, 24, 39, 0.82);
    color: #ffffff;
    font-size: 0.8rem;
    font-weight: 500;
    line-height: 1;
}

/* Pagina dettaglio immobile: puntini navigazione foto in basso al centro */
.property-detail-hero__dots {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 18px;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

/* Pagina dettaglio immobile: singolo puntino inattivo */
.property-detail-hero__dots span {
    display: block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.55);
}

/* Pagina dettaglio immobile: puntino attivo nella galleria */
.property-detail-hero__dots span.active {
    background-color: var(--ip-superficie);
    transform: scale(1.15);
}

/* Pagina dettaglio immobile: contenitore principale delle sezioni, centrato */
.property-detail-main {
    max-width: 1120px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 12px;
    padding-right: 12px;
}

/* Pagina dettaglio immobile: spaziatura coerente tra i pannelli interni */
.property-detail-main .property-detail-panel,
.property-detail-main > .property-detail-help {
    margin-bottom: 1rem;
}

/* Pagina dettaglio immobile: griglia a 3 colonne per annunci correlati */
.property-detail-related-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
}

/* Pagina dettaglio immobile mobile: griglia correlati passa a 1 colonna */
@media (max-width: 991.98px) {
    .property-detail-related-grid {
        grid-template-columns: 1fr;
        gap: 1.125rem;
    }
}

/* Pagina dettaglio immobile: primo pannello summary con raggio coerente */
.property-detail-panel--summary {
    border-top-left-radius: 14px;
    border-top-right-radius: 14px;
}

/* Pagina dettaglio immobile: wrapper card correlati con raggio uniforme */
.property-detail-panel--related {
    border-radius: 5px;
}

/* Pagina dettaglio immobile: hero più alto su tablet/desktop */
@media (min-width: 992px) {
    .property-detail-hero {
        border-radius: 5px;
        overflow: hidden;
    }
    .property-detail-hero__media {
        min-height: 520px;
    }
    .property-detail-main {
        padding-left: 16px;
        padding-right: 16px;
    }
}

/* Pagina dettaglio immobile mobile: hero altezza ridotta e senza angoli */
@media (max-width: 767.98px) {
    .property-detail-hero__media {
        min-height: 320px;
    }
    .property-detail-main {
        padding-left: 10px;
        padding-right: 10px;
    }
}

/* Pagina dettaglio immobile mobile: bottom bar solo 2 pulsanti, centrata e distribuita */
@media (max-width: 767.98px) {
    .mobile-sticky-actions--detail .mobile-sticky-actions__inner--detail {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-width: 520px;
        margin: 0 auto;
        gap: 12px;
        justify-content: center;
    }
}

/* Pagina dettaglio immobile mobile: pulsante WhatsApp in verde tema */
@media (max-width: 767.98px) {
    .mobile-sticky-actions--detail .mobile-sticky-actions__button--whatsapp {
        background-color: var(--ip-green);
        border-color: var(--ip-green);
        color: #ffffff;
    }
}

/* Pagina dettaglio immobile mobile: pulsante Chiama in viola tema */
@media (max-width: 767.98px) {
    .mobile-sticky-actions--detail .mobile-sticky-actions__button--call {
        background-color: var(--ip-navy);
        border-color: var(--ip-navy);
        color: #ffffff;
    }
}

/* Pagina dettaglio immobile mobile: 2 pulsanti più equilibrati in altezza e font */
@media (max-width: 767.98px) {
    .mobile-sticky-actions--detail .mobile-sticky-actions__button {
        min-height: 48px;
        font-size: 0.9rem;
        font-weight: 600;
        letter-spacing: 0.01em;
        justify-content: center;
        border-radius: 5px;
    }
}

/* Pagina dettaglio immobile mobile: info rapide che sostituiscono il banner blu + modulo ricerca */
.property-detail-mobile-quickinfo {
    display: none;
}

/* Pagina dettaglio immobile mobile: quickinfo visibile e sticky solo sotto i 768px */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo {
        display: block;
        position: -webkit-sticky;
        position: sticky;
        top: 0;
        z-index: 1500;
        background-color: var(--ip-superficie);
        border-top: 1px solid var(--ip-navy-light);
        border-bottom: 1px solid var(--ip-navy-light);
        padding: 10px 14px 10px;
        box-shadow: 0 1px 0 rgba(15, 23, 42, 0.03);
        -webkit-transition: -webkit-box-shadow 220ms ease;
        transition: box-shadow 220ms ease;
    }
}

/* Pagina dettaglio immobile mobile: quando il quickinfo diventa sticky sullo scroll aggiunge ombra per staccarlo dal contenuto */
@media (max-width: 767.98px) {
    body.ip-detail-stuck .property-detail-mobile-quickinfo {
        -webkit-box-shadow: 0 8px 22px rgba(15, 23, 42, 0.08);
        box-shadow: 0 8px 22px rgba(15, 23, 42, 0.08);
    }
}

/* ============================================================
   MODALE CONDIVISIONE SOCIAL (Bottom Sheet mobile / Centrata desktop)
   ============================================================ */
.ip-share-modal {
    position: fixed;
    inset: 0 0 0 0;
    z-index: 9999;
    display: none;
    align-items: flex-end;
    justify-content: center;
    box-sizing: border-box;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.ip-share-modal.is-open {
    display: flex;
}
.ip-share-modal[hidden] {
    display: none !important;
}

/* Backdrop sfondo scuro semi-trasparente, transizione opacita */
.ip-share-modal__backdrop {
    position: absolute;
    inset: 0 0 0 0;
    background: rgba(15, 23, 42, 0.58);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    opacity: 0;
    transition: opacity 0.22s ease;
    cursor: pointer;
}
.ip-share-modal.is-open .ip-share-modal__backdrop {
    opacity: 1;
}

/* Sheet (pannello): MOBILE FIRST = attaccato al basso, slide-up dal basso */
.ip-share-modal__sheet {
    position: relative;
    width: 100%;
    max-width: 100%;
    background: var(--ip-superficie);
    border-top-left-radius: 20px;
    border-top-right-radius: 20px;
    box-shadow: 0 -12px 40px rgba(15, 23, 42, 0.22);
    -webkit-box-shadow: 0 -12px 40px rgba(15, 23, 42, 0.22);
    max-height: calc(92vh - env(safe-area-inset-bottom));
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    transform: translateY(102%);
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
    margin-top: auto;
    padding-bottom: calc(0.25rem + env(safe-area-inset-bottom));
    z-index: 2;
    box-sizing: border-box;
}
.ip-share-modal.is-open .ip-share-modal__sheet {
    transform: translateY(0);
}

/* Desktop: sheet centrata in viewport, angoli arrotondati tutti */
@media (min-width: 768px) {
    .ip-share-modal {
        align-items: center;
    }
    .ip-share-modal__sheet {
        width: 100%;
        max-width: 480px;
        margin: 0 auto;
        border-radius: 5px;
        transform: translateY(16px) scale(0.98);
        opacity: 0;
        transition: transform 0.26s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.26s ease;
        box-shadow: 0 18px 60px rgba(15, 23, 42, 0.32);
        -webkit-box-shadow: 0 18px 60px rgba(15, 23, 42, 0.32);
        max-height: 88vh;
        padding-bottom: 1.25rem;
    }
    .ip-share-modal.is-open .ip-share-modal__sheet {
        transform: translateY(0) scale(1);
        opacity: 1;
    }
}

/* Header sheet: titolo + X chiusura */
.ip-share-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.1rem 1.25rem;
    border-bottom: 1px solid #eef2f4;
    position: sticky;
    top: 0;
    background: var(--ip-superficie);
    z-index: 3;
    border-top-left-radius: 20px;
    border-top-right-radius: 20px;
}
.ip-share-modal__title {
    margin: 0;
    font-size: 1.12rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.2;
}
.ip-share-modal__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 0;
    background: var(--ip-fascia-tenue);
    color: #475569;
    cursor: pointer;
    font-size: 1rem;
    transition: background-color 0.16s ease, color 0.16s ease, transform 0.16s ease;
    padding: 0;
}
.ip-share-modal__close:hover,
.ip-share-modal__close:focus-visible {
    background: #fee2e2;
    color: #dc2626;
    outline: none;
}
.ip-share-modal__close:active {
    transform: scale(0.96);
}

/* Body della modale */
.ip-share-modal__body {
    padding: 1.25rem;
}
.ip-share-modal__subtitle {
    margin: 0 0 1.1rem 0;
    font-size: 0.95rem;
    color: #475569;
    line-height: 1.4;
    font-weight: 400;
}
.ip-share-modal__subtitle strong {
    color: #0f172a;
    font-weight: 600;
}

/* Griglia social 3 colonne */
.ip-share-modal__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem 0.5rem;
    padding: 0;
    margin: 0 0 0.25rem 0;
    list-style: none;
}
@media (min-width: 576px) {
    .ip-share-modal__grid {
        gap: 1rem 0.75rem;
    }
}

/* Pulsante singolo social */
.ip-share-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 0.5rem;
    width: 100%;
    padding: 0.85rem 0.5rem 0.75rem;
    border: 0;
    background: transparent;
    border-radius: 5px;
    cursor: pointer;
    color: #0f172a;
    transition: background-color 0.18s ease, transform 0.18s ease;
    font-family: inherit;
    -webkit-appearance: none;
    appearance: none;
    position: relative;
}
.ip-share-btn:hover,
.ip-share-btn:focus-visible {
    background-color: var(--ip-fascia-chiara);
    outline: none;
}
.ip-share-btn:focus-visible {
    box-shadow: 0 0 0 2px var(--ip-green);
}
.ip-share-btn:active {
    transform: scale(0.965);
    background-color: var(--ip-navy-light);
}

/* Icona cerchio colorato social (colore ufficiale ogni brand) */
.ip-share-btn__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    min-width: 56px;
    min-height: 56px;
    border-radius: 50%;
    color: #ffffff;
    font-size: 1.45rem;
    flex: 0 0 56px;
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.12);
    -webkit-box-shadow: 0 4px 12px rgba(15, 23, 42, 0.12);
    position: relative;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.ip-share-btn:hover .ip-share-btn__icon,
.ip-share-btn:focus-visible .ip-share-btn__icon {
    transform: translateY(-2px);
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18);
}
.ip-share-btn__icon--whatsapp  { background: #25D366; }
.ip-share-btn__icon--facebook  { background: #1877F2; }
.ip-share-btn__icon--instagram { background: linear-gradient(135deg, #833AB4 0%, #E1306C 52%, #F77737 75%, #FCAF45 100%); }
.ip-share-btn__icon--twitter   { background: #000000; }
.ip-share-btn__icon--linkedin  { background: #0A66C2; }
.ip-share-btn__icon--telegram  { background: #229ED9; }
.ip-share-btn__icon--copy      { background: #64748b; }

/* Label testo social */
.ip-share-btn__label {
    font-size: 0.82rem;
    font-weight: 500;
    color: #334155;
    line-height: 1.2;
    text-align: center;
}

/* Pulsante "Copia link" riga unica grande sotto */
.ip-share-modal__copy-wrap {
    border-top: 1px solid #eef2f4;
    padding-top: 1rem;
    margin-top: 1rem;
}
.ip-share-btn--copy {
    flex-direction: row;
    justify-content: flex-start;
    padding: 0.9rem 1rem;
    gap: 0.85rem;
    background: var(--ip-fascia-chiara);
    border-radius: 5px;
    width: 100%;
}
.ip-share-btn--copy:hover,
.ip-share-btn--copy:focus-visible {
    background: var(--ip-navy-light);
}
.ip-share-btn--copy .ip-share-btn__icon {
    width: 42px;
    height: 42px;
    min-width: 42px;
    min-height: 42px;
    flex: 0 0 42px;
    font-size: 1.1rem;
    box-shadow: none;
}
.ip-share-btn--copy .ip-share-btn__label {
    font-size: 0.95rem;
    font-weight: 600;
    color: #0f172a;
}

/* Stato "copiato" dopo click copy link */
.ip-share-btn__ok {
    display: none;
    margin-left: auto;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--ip-green);
}
.ip-share-btn.is-copied .ip-share-btn__label { display: none; }
.ip-share-btn.is-copied .ip-share-btn__ok { display: inline-flex; }

/* Scroll lock quando la modale condivisione è aperta (non rompere sticky) */
body.ip-share-open {
    overflow: hidden !important;
    touch-action: none;
}

/* ============================================================
   DRAWER RICERCA MOBILE — pannello laterale scorrevole DA DESTRA A SINISTRA 90vw
   ============================================================ */
.ip-search-drawer {
    position: fixed;
    inset: 0 0 0 0;
    z-index: 9998;
    display: none;
    box-sizing: border-box;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.ip-search-drawer.is-open {
    display: block;
}
.ip-search-drawer[hidden] { display: none !important; }

/* Backdrop — sfondo scuro */
.ip-search-drawer__backdrop {
    position: absolute;
    inset: 0 0 0 0;
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(1.5px);
    -webkit-backdrop-filter: blur(1.5px);
    opacity: 0;
    transition: opacity 0.22s ease;
    cursor: pointer;
}
.ip-search-drawer.is-open .ip-search-drawer__backdrop {
    opacity: 1;
}

/* Pannello: MOBILE FIRST = attaccato a destra, 90% viewport width, slide da DX → SX */
.ip-search-drawer__panel {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 90%;
    max-width: 90%;
    background: var(--ip-superficie);
    box-shadow: -10px 0 40px rgba(15, 23, 42, 0.22);
    -webkit-box-shadow: -10px 0 40px rgba(15, 23, 42, 0.22);
    transform: translateX(102%);
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
    display: flex;
    flex-direction: column;
    z-index: 2;
    box-sizing: border-box;
}
.ip-search-drawer.is-open .ip-search-drawer__panel {
    transform: translateX(0);
}

/* Desktop (tablet/desktop): larghezza massima 480px invece di 90% */
@media (min-width: 576px) {
    .ip-search-drawer__panel {
        width: 100%;
        max-width: 480px;
    }
}

/* Header del drawer — sticky in alto */
.ip-search-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.1rem 1.1rem 1rem 1.25rem;
    border-bottom: 1px solid #eef2f4;
    background: var(--ip-superficie);
    position: sticky;
    top: 0;
    z-index: 3;
    flex: 0 0 auto;
    padding-top: calc(1.1rem + env(safe-area-inset-top));
}
.ip-search-drawer__title {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.2;
    display: flex;
    align-items: center;
    gap: 0.55rem;
}
.ip-search-drawer__title i {
    color: var(--ip-green);
    font-size: 1rem;
}
.ip-search-drawer__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 0;
    background: var(--ip-fascia-tenue);
    color: #475569;
    cursor: pointer;
    font-size: 1rem;
    transition: background-color 0.16s ease, color 0.16s ease, transform 0.16s ease;
    padding: 0;
    flex: 0 0 36px;
}
.ip-search-drawer__close:hover,
.ip-search-drawer__close:focus-visible {
    background: #fee2e2;
    color: #dc2626;
    outline: none;
}
.ip-search-drawer__close:active { transform: scale(0.96); }

/* Body del drawer: scrollabile verticalmente */
.ip-search-drawer__body {
    padding: 1.25rem 1.25rem 1rem;
    flex: 1 1 auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: calc(1rem + env(safe-area-inset-bottom));
    box-sizing: border-box;
}

/* ====== Singolo campo di ricerca ====== */
.ip-search-field {
    margin: 0 0 1.15rem 0;
}
.ip-search-field:last-child { margin-bottom: 0; }
.ip-search-field--grid-2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.9rem;
    margin-bottom: 1.15rem;
}
.ip-search-field--grid-2 .ip-search-field {
    margin-bottom: 0;
}

/* Label con icona a sinistra */
.ip-search-field__label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.45rem 0;
    font-size: 0.87rem;
    font-weight: 600;
    color: #1e293b;
    line-height: 1.2;
}
.ip-search-field__label i {
    color: var(--ip-green);
    font-size: 0.9rem;
    flex: 0 0 auto;
    width: 14px;
    text-align: center;
}
.ip-search-field__label--block {
    margin-bottom: 0.55rem;
}

/* ====== Controlli (select / input text / number) — UI coerente con il tema ====== */
.ip-search-field__control {
    width: 100%;
    display: block;
    box-sizing: border-box;
    height: 46px;
    padding: 0.7rem 0.95rem;
    font-size: 0.92rem;
    font-weight: 400;
    line-height: 1.2;
    color: #0f172a;
    background-color: var(--ip-superficie);
    background-image: none;
    border: 1.5px solid #e5e7eb;
    border-radius: 5px;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    font-family: inherit;
}
select.ip-search-field__control {
    background-image:
        linear-gradient(45deg, transparent 50%, #64748b 50%),
        linear-gradient(135deg, #64748b 50%, transparent 50%);
    background-position:
        calc(100% - 20px) calc(1em + 3px),
        calc(100% - 14px) calc(1em + 3px);
    background-size: 6px 6px, 6px 6px;
    background-repeat: no-repeat;
    padding-right: 2.5rem;
}
.ip-search-field__control--input {
    background-color: var(--ip-superficie);
}
.ip-search-field__control:hover {
    border-color: #cbd5e1;
}
.ip-search-field__control:focus,
.ip-search-field__control:focus-visible {
    border-color: var(--ip-green);
    outline: none;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--ip-green, rgb(46, 184, 128)) 16%, transparent);
}

/* Input adornati con prefisso (€) o suffisso (mq) */
.ip-search-field__input-adorned {
    position: relative;
    display: flex;
    align-items: stretch;
    width: 100%;
}
.ip-search-field__input-adorned .ip-search-field__control {
    border-radius: 5px;
}
.ip-search-field__input-adorned .ip-search-field__control--input {
    width: 100%;
}
.ip-search-field__prefix,
.ip-search-field__suffix {
    position: absolute;
    top: 0;
    bottom: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #64748b;
    font-size: 0.9rem;
    font-weight: 600;
    pointer-events: none;
    z-index: 2;
}
.ip-search-field__prefix {
    left: 0;
    width: 2.4rem;
}
.ip-search-field__suffix {
    right: 0;
    width: 2.6rem;
    font-size: 0.82rem;
    text-transform: lowercase;
}
.ip-search-field__input-adorned .ip-search-field__control--input {
    padding-left: 2.35rem;
}
.ip-search-field__input-adorned.has-suffix .ip-search-field__control--input,
.ip-search-field__input-adorned:not(:has(.ip-search-field__prefix)) .ip-search-field__control--input {
    padding-right: 2.6rem;
}
/* fallback per browser che non supportano :has() */
.ip-search-field__input-adorned + * { /* empty */ }
/* specifico per riga superficie che ha solo suffix */
.ip-search-field .ip-search-field__suffix + .ip-search-field__control, /* wrong */
#ip-s-superficie {
    padding-right: 2.6rem !important;
    padding-left: 0.95rem !important;
}

/* ====== Gruppi radio (Contratto / Ascensore) ====== */
.ip-search-field__radio-group {
    display: flex;
    align-items: stretch;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.ip-search-radio {
    position: relative;
    flex: 1 1 0;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.7rem 0.5rem;
    border-radius: 5px;
    border: 1.5px solid #e5e7eb;
    background-color: var(--ip-superficie);
    color: #334155;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.15;
    cursor: pointer;
    transition: background-color 0.16s ease, border-color 0.16s ease, color 0.16s ease;
    text-align: center;
    margin: 0;
    font-family: inherit;
    user-select: none;
}
.ip-search-radio input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}
.ip-search-radio:hover {
    border-color: #cbd5e1;
    background: var(--ip-fascia-chiara);
}
.ip-search-radio input[type="radio"]:checked + span,
.ip-search-radio:has(input[type="radio"]:checked) {
    background: color-mix(in srgb, var(--ip-green, rgb(46, 184, 128)) 10%, transparent);
    border-color: var(--ip-green);
    color: var(--ip-green-dark);
    font-weight: 600;
}
.ip-search-radio:has(input[type="radio"]:checked) span {
    color: var(--ip-green-dark);
}
/* fallback per browser senza :has support */
.ip-search-radio input[type="radio"]:checked {
    /* niente — il :has() copre Chrome/FF/Safari recenti */
}

/* ====== Pulsanti azione Cerca/Annulla in basso ====== */
.ip-search-drawer__actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
    padding-top: 0.5rem;
    margin-top: 0.25rem;
    border-top: 1px solid #eef2f4;
    padding-top: 1.1rem;
    margin-top: 0.5rem;
}
.ip-search-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    height: 52px;
    border-radius: 5px;
    border: 0;
    font-size: 0.96rem;
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.18s ease, color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
    font-family: inherit;
    -webkit-appearance: none;
    appearance: none;
    padding: 0 0.9rem;
}
.ip-search-btn:active { transform: scale(0.98); }
.ip-search-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--ip-green, rgb(46, 184, 128)) 25%, transparent);
}
.ip-search-btn--ghost {
    background: var(--ip-fascia-tenue);
    color: #475569;
    border: 1.5px solid #e5e7eb;
    background-clip: padding-box;
}
.ip-search-btn--ghost:hover,
.ip-search-btn--ghost:focus-visible {
    background: #e5e7eb;
    color: #1e293b;
}
.ip-search-btn--primary {
    background: var(--ip-green);
    color: #ffffff;
    box-shadow: 0 4px 14px color-mix(in srgb, var(--ip-green, rgb(46, 184, 128)) 28%, transparent);
    -webkit-box-shadow: 0 4px 14px color-mix(in srgb, var(--ip-green, rgb(46, 184, 128)) 28%, transparent);
}
.ip-search-btn--primary:hover,
.ip-search-btn--primary:focus-visible {
    background: var(--ip-green);
    color: #ffffff;
}

/* Scroll lock body quando il drawer ricerca è aperto — non rompere altri sticky */
body.ip-search-open {
    overflow: hidden !important;
    touch-action: none;
}

/* ====== Accessibilità: focus visibile per tutti gli elementi interattivi ====== */
#ip-mobile-search-drawer button:focus-visible,
#ip-mobile-search-drawer select:focus-visible,
#ip-mobile-search-drawer input:focus-visible,
#ip-mobile-search-drawer label:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px var(--ip-green) !important;
}
#ip-mobile-search-drawer label.ip-search-radio:focus-within {
    outline: none;
    box-shadow: 0 0 0 2px var(--ip-green);
}

/* ====== Responsive extra-small schermi (<380px) ====== */
@media (max-width: 379px) {
    .ip-search-field--grid-2 {
        grid-template-columns: 1fr;
        gap: 1.05rem;
    }
    .ip-search-drawer__actions {
        grid-template-columns: 1fr;
    }
    .ip-search-field__control {
        height: 44px;
        font-size: 0.9rem;
    }
    .ip-search-btn {
        height: 50px;
    }
    .ip-search-drawer__title {
        font-size: 0.95rem;
    }
}

/* Pagina dettaglio immobile mobile: header del tema, si nasconde con translazione verticale fluida */
@media (max-width: 767.98px) {
    .main-header {
        -webkit-transition: -webkit-transform 260ms ease;
        transition: transform 260ms ease;
        will-change: transform;
    }
}

/* Pagina dettaglio immobile mobile: quando abbiamo scrollato, header esce completamente verso l'alto */
@media (max-width: 767.98px) {
    body.ip-detail-stuck .main-header {
        -webkit-transform: translateY(-100%);
        transform: translateY(-100%);
    }
}

/* Pagina dettaglio immobile mobile: menu aperto → info box sticky scompare per non stare sopra l'overlay del menu */
@media (max-width: 767.98px) {
    body.ip-detail-menu-open .property-detail-mobile-quickinfo {
        display: none !important;
    }
}

/* Pagina dettaglio immobile mobile: menu aperto → header torna sempre visibile in cima anche se stavamo scrollando */
@media (max-width: 767.98px) {
    body.ip-detail-menu-open .main-header,
    body.ip-detail-menu-open.ip-detail-stuck .main-header {
        -webkit-transform: none !important;
        transform: none !important;
    }
}

/* Pagina dettaglio immobile mobile: nasconde il banner blu del titolo */
@media (max-width: 767.98px) {
    .home-main-banner {
        display: none !important;
    }
}

/* Pagina dettaglio immobile mobile: nasconde il modulo di ricerca bianco sotto il banner */
@media (max-width: 767.98px) {
    .home-search-shell {
        display: none !important;
    }
}

/* Pagina dettaglio immobile mobile: griglia principale a 3 parti (sinistra / separatore / destra WhatsApp) */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__grid {
        display: grid;
        grid-template-columns: 1fr auto auto;
        align-items: center;
        column-gap: 14px;
    }
}

/* Pagina dettaglio immobile mobile: colonna sinistra con 2 righe (prezzo + chip) */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__left {
        display: flex;
        flex-direction: column;
        gap: 6px;
        min-width: 0;
    }
}

/* Pagina dettaglio immobile mobile: prezzo ridotto e compatto */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__price {
        display: flex;
        align-items: baseline;
        gap: 4px;
        color: var(--ip-navy);
        line-height: 1;
    }
    .property-detail-mobile-quickinfo__price span {
        font-size: 1.35rem;
        font-weight: 800;
        letter-spacing: -0.01em;
    }
    .property-detail-mobile-quickinfo__price small {
        font-size: 0.78rem;
        font-weight: 600;
        color: #4b5563;
    }
}

/* Pagina dettaglio immobile mobile: riga chip compatta con spazi ridotti */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__meta {
        display: flex;
        align-items: center;
        flex-wrap: wrap;
        gap: 12px;
    }
}

/* Pagina dettaglio immobile mobile: singolo chip icona + testo rimpicciolito */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__chip {
        display: inline-flex;
        align-items: center;
        gap: 5px;
        color: #374151;
        font-size: 0.78rem;
        font-weight: 500;
    }
    .property-detail-mobile-quickinfo__chip i {
        color: var(--ip-green);
        font-size: 0.82rem;
    }
}

/* Pagina dettaglio immobile mobile: separatore verticale tra colonna sinistra e pulsante WhatsApp */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__divider {
        width: 1px;
        height: 42px;
        background-color: #e5e7eb;
        justify-self: center;
        align-self: center;
    }
}

/* Pagina dettaglio immobile mobile: colonna WhatsApp centrata verticalmente su 2 righe sx */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__wa {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 3px;
        color: inherit;
        text-decoration: none;
        align-self: center;
        border: 0 !important;
        background: transparent !important;
        padding: 0 !important;
        cursor: pointer;
        font-family: inherit;
        line-height: 1;
        -webkit-appearance: none;
        appearance: none;
    }
    .property-detail-mobile-quickinfo__wa:focus-visible,
    .ip-share-open-btn:focus-visible {
        outline: 2px solid var(--ip-green);
        outline-offset: 3px;
        border-radius: 5px;
    }
}

/* Pagina dettaglio immobile mobile: bottone CONDIVIDI outlined VERDE tema (non piu grigio) */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__wa-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 34px;
        height: 34px;
        border-radius: 50%;
        background-color: var(--ip-superficie);
        border: 1.5px solid var(--ip-green);
        color: var(--ip-green);
        box-shadow: none;
        transition: all 0.18s ease;
    }
    .property-detail-mobile-quickinfo__wa-btn:hover,
    .property-detail-mobile-quickinfo__wa-btn:active {
        background-color: var(--ip-green);
        color: #ffffff;
    }
    .property-detail-mobile-quickinfo__wa-btn i {
        font-size: 0.95rem;
    }
}

/* Pagina dettaglio immobile mobile: label Condividi sotto il pulsante, verde tema + font piu sottile leggero + distacco verticale aumentato di 3px */
@media (max-width: 767.98px) {
    .property-detail-mobile-quickinfo__wa-label {
        font-size: 0.68rem;
        font-weight: 400;
        color: var(--ip-green);
        line-height: 1;
        letter-spacing: 0.01em;
        margin-top: 8px; /* prima circa 5px, aumentato di 3px */
    }
}

/* Pagina dettaglio immobile mobile: gallery foto scorrevole visibile solo su smartphone */
.property-detail-mobile-gallery {
    display: none;
}

/* Pagina dettaglio immobile mobile: gallery attiva con rapporto 4:3 e posizione relativa per dots */
@media (max-width: 767.98px) {
    .property-detail-mobile-gallery {
        display: block;
        position: relative;
        background-color: var(--ip-fascia-tenue);
        overflow: hidden;
    }
}

/* Pagina dettaglio immobile mobile: nasconde SOLO la gallery desktop (NON piu anche i correlati che usano la stessa classe generica home-section--after-search) */
@media (max-width: 767.98px) {
    .ip-detail-desktop-gallery,
    .home-section.ip-detail-desktop-gallery,
    .property-detail-hero-section {
        display: none !important;
    }
}

/* Pagina dettaglio immobile mobile: sezione "Potrebbero interessarti anche" visibile e compatta */
@media (max-width: 767.98px) {
    .ip-detail-related-section {
        display: block !important;
    }
    .ip-detail-related-section .text-heading {
        font-size: 1.3rem !important;
    }
    .ip-detail-related-section .section-cta-button {
        padding: 0.6rem 1.25rem !important;
        margin-bottom: 1.25rem !important;
        font-size: 0.85rem !important;
    }
    /* Slick dots del correlati compatto mobile */
    .ip-detail-related-section .slick-dots {
        bottom: -20px;
    }
}

/* Pagina dettaglio immobile mobile: singolo slide gallery a piena larghezza e 4:3 */
@media (max-width: 767.98px) {
    .property-detail-mobile-gallery__slide {
        width: 100%;
        aspect-ratio: 4 / 3;
        min-height: 280px;
        background-repeat: no-repeat;
        background-position: center center;
        background-size: cover;
    }
}

/* Pagina dettaglio immobile mobile: frecce slick galleria in posizione assoluta */
@media (max-width: 767.98px) {
    .property-detail-mobile-gallery .slick-hero-gallery {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        z-index: 10;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 38px;
        height: 38px;
        border-radius: 50%;
        background-color: rgba(255, 255, 255, 0.88);
        color: #111827;
        border: 0;
        box-shadow: 0 6px 16px rgba(15, 23, 42, 0.12);
        font-size: 0.95rem;
    }
    .property-detail-mobile-gallery .slick-prev.slick-hero-gallery {
        left: 14px;
    }
    .property-detail-mobile-gallery .slick-next.slick-hero-gallery {
        right: 14px;
    }
}

/* Pagina dettaglio immobile mobile: dots slick colorati e centrati in basso */
@media (max-width: 767.98px) {
    .property-detail-mobile-gallery .slick-dots {
        position: absolute;
        left: 0;
        right: 0;
        bottom: 12px;
        margin: 0;
        padding: 0;
        list-style: none;
        display: flex !important;
        align-items: center;
        justify-content: center;
        gap: 8px;
        z-index: 10;
    }
    .property-detail-mobile-gallery .slick-dots li {
        width: auto;
        height: auto;
        margin: 0;
    }
    .property-detail-mobile-gallery .slick-dots li button {
        width: 10px;
        height: 10px;
        padding: 0;
        border-radius: 50%;
        background-color: rgba(255, 255, 255, 0.6);
        border: 0;
        font-size: 0;
        line-height: 0;
    }
    .property-detail-mobile-gallery .slick-dots li button::before {
        display: none;
    }
    .property-detail-mobile-gallery .slick-dots li.slick-active button {
        background-color: var(--ip-green);
        transform: scale(1.15);
    }
}

/* Pagina dettaglio immobile mobile: contatore foto in basso a destra */
@media (max-width: 767.98px) {
    .property-detail-mobile-gallery__counter {
        position: absolute;
        right: 14px;
        top: 14px;
        z-index: 10;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        min-height: 28px;
        padding: 0 10px;
        border-radius: 5px;
        background-color: rgba(17, 24, 39, 0.78);
        color: #ffffff;
        font-size: 0.78rem;
        font-weight: 600;
        line-height: 1;
    }
}

/* Pagina dettaglio immobile mobile: barra 5 pulsanti azioni rapide dopo gallery */
.property-detail-mobile-actions {
    display: none;
}

/* Pagina dettaglio immobile mobile: attiva la barra azioni e la dispone in griglia 4 */
@media (max-width: 767.98px) {
    .property-detail-mobile-actions {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        background-color: var(--ip-superficie);
        border-top: 1px solid var(--ip-navy-light);
        border-bottom: 1px solid var(--ip-navy-light);
    }
}

/* Pagina dettaglio immobile mobile: singolo pulsante azioni con icona sopra e label sotto */
@media (max-width: 767.98px) {
    .property-detail-mobile-actions__item {
        position: relative;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 5px;
        padding: 14px 6px;
        color: #374151;
        text-decoration: none;
        font-size: 0.72rem;
        font-weight: 600;
        line-height: 1.1;
        text-align: center;
        /* "Foto" e "Planim." sono <button> (aprono il lightbox), gli altri sono <a>:
           senza questo reset il browser disegna bordo, sfondo e font propri del
           controllo nativo e i due pulsanti stonano rispetto ai link accanto. */
        border: 0;
        background: transparent;
        font-family: inherit;
        -webkit-appearance: none;
        appearance: none;
        border-radius: 0;
        box-shadow: none;
        cursor: pointer;
        width: 100%;
        -webkit-tap-highlight-color: transparent;
    }
    .property-detail-mobile-actions__item:focus,
    .property-detail-mobile-actions__item:active {
        outline: none;
        box-shadow: none;
        background: transparent;
        color: var(--ip-green);
    }
    .property-detail-mobile-actions__item:focus-visible {
        outline: 2px solid var(--ip-green);
        outline-offset: -2px;
    }
    .property-detail-mobile-actions__item:active i {
        color: var(--ip-green);
    }
    .property-detail-mobile-actions__item i {
        font-size: 1.2rem;
        color: #4b5563;
        transition: color 0.15s ease;
    }
}

/* Pagina dettaglio immobile mobile: divisore verticale tra i pulsanti azioni (tranne ultimo) */
@media (max-width: 767.98px) {
    .property-detail-mobile-actions__item:not(:last-child)::after {
        content: '';
        position: absolute;
        right: 0;
        top: 20%;
        bottom: 20%;
        width: 1px;
        background-color: #e5e7eb;
    }
}

/* Pagina dettaglio immobile mobile: titolo + posizione visibile DOPO i 4 pulsanti azioni */
.property-detail-mobile-title {
    display: none;
}

/* Pagina dettaglio immobile mobile: attiva titolo leggero sotto la action bar (solo < 768px) */
@media (max-width: 767.98px) {
    .property-detail-mobile-title {
        display: block;
        padding: 14px 16px 14px;
        background-color: var(--ip-superficie);
        border-bottom: 1px solid var(--ip-navy-light);
    }
}

/* Pagina dettaglio immobile mobile: heading compatto, riga singola, ellisse se troppo lungo */
@media (max-width: 767.98px) {
    .property-detail-mobile-title__heading {
        margin: 0 0 6px 0;
        font-size: 1.08rem;
        font-weight: 700;
        color: #111827;
        line-height: 1.2;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
}

/* Pagina dettaglio immobile mobile: riga location con icona verde e testo */
@media (max-width: 767.98px) {
    .property-detail-mobile-title__location {
        margin: 0;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        color: #4b5563;
        font-size: 0.85rem;
        font-weight: 500;
        line-height: 1;
    }
    .property-detail-mobile-title__location i {
        color: var(--ip-green);
        font-size: 0.85rem;
    }
}

/* ============================================================
   OVERRIDE DI SICUREZZA MODUOLOBOX — impedisci pagina bianca
   Assicura che l'holder del lightbox sia totalmente invisibile
   (display:none invece di solo opacity/visibility) quando non
   è aperto, su TUTTI i browser. .mobx-open viene aggiunto da JS
   dentro ModuloBox proto.show() al momento dell'apertura lightbox.
   ============================================================ */
div.mobx-holder:not(.mobx-open) {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    background: transparent !important;
}
div.mobx-holder.mobx-open {
    display: block !important;
}

/* ============================================================
   RIPRISTINO FEDELE STILI ORIGINALI HOMEID (themes.css)
   Rispetta TUTTI i font di default del tema prima di ModuloBox.
   Lo scopo è: ripristinare esattamente themes.css riga 70 (body)
   e riga 18789 (.primary-font) usando !important per vincere
   su eventuali regole globali iniettate da terzi — MA senza
   alterare altre regole (nessun LibreBaskerville globale sugli h).

   Stile ORIGINALE themes.css (RIGHE ORIGINALI, non toccate):
     L70  body { font-family: "Poppins", sans-serif; }
     L76  body { background-color: var(--ip-superficie); }
     L18789 .primary-font { font-family: "Libre Baskerville", serif !important; }
   => Nessun h1..h6 globale usa LibreBaskerville nel tema originale!
   => LibreBaskerville e' applicato solo via classe .primary-font.
   ============================================================ */
html body {
    /* Fedele a themes.css L76. Non transparent! (bg corretto) */
    background-color: var(--ip-superficie) !important;
    /* Fedele a themes.css L70. Nessun "inherit". */
    font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI",
                 Roboto, "Helvetica Neue", Arial, sans-serif !important;
    /* Anti styles.min.css overflow-x:hidden */
    overflow-x: auto !important;
    /* Anti styles.min.css sovrascritture */
    color: inherit;
}
/* Fedele a themes.css L18789 — l'UNICO selettore del tema che usa Libre Baskerville.
   Specificita' aumentata (html body .primary-font invece di .primary-font)
   cosi' vince su eventuali iniezioni future senza toccare altri elementi. */
html body .primary-font,
body .primary-font {
    font-family: "Libre Baskerville", Georgia, "Times New Roman", Times, serif !important;
}
/* Assicura che la variante small di primary-font erediti la famiglia giusta */
html body .primary-font,
html body .primary-font *,
html body .primary-font h1,
html body .primary-font h2,
html body .primary-font h3,
html body .primary-font h4,
html body .primary-font h5,
html body .primary-font h6 {
    font-family: "Libre Baskerville", Georgia, "Times New Roman", Times, serif !important;
}

/* ========== FONT INTERNI AL SOLO LIGHTBOX MODUOLOBOX ==========
   Il file modulobox.css imposta .mobx-holder { font-family: Arial,
   Helvetica, sans-serif } (stili controlli interni: counter, caption,
   pulsanti, tooltip condivisione). Noi uniformiamo al tema HomeID
   (Poppins) ESCLUSIVAMENTE all'interno dell'holder — NESSUN impatto
   sul resto del documento, nessun cambiamento fuori dal lightbox. */
div.mobx-holder,
div.mobx-holder *:not(.fa):not(.fab):not(.fas):not(.far):not(.fal):not([class*="fa-"]),
div.mobx-holder .mobx-caption,
div.mobx-holder .mobx-counter,
div.mobx-holder .mobx-share,
div.mobx-holder .mobx-button,
div.mobx-holder button,
div.mobx-holder input,
div.mobx-holder select,
div.mobx-holder textarea {
    font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI",
                 Roboto, "Helvetica Neue", Arial, sans-serif !important;
}
/* Escludiamo icone Font Awesome (devono restare FA) */
div.mobx-holder .fa,
div.mobx-holder .fab,
div.mobx-holder .fas,
div.mobx-holder .far,
div.mobx-holder .fal,
div.mobx-holder [class*="fa-"] {
    font-family: inherit !important;
}

/* ========== LIGHTBOX MODUOLOBOX: DISATTIVA PULSANTI NON VOLUTI + ORDINE ICONE ==========
   Disattivazione forzata via CSS (safety oltre al JS options.controls) per:
   - download:     scarica immagine      => NON VOLUTO
   - share:        condividi social      => NON VOLUTO (abbiamo il nostro bottom-sheet)
   - fullscreen:   pulsante pieno schermo => NON VOLUTO
   Ordine icone top-bar: CLOSE deve essere la PRIMA icona visibile a destra,
                         subito dopo (a sinistra) il pulsante zoom.
   Uso display:flex su top-bar + ordine CSS sulle singole classi invece di float:right
   in modo da sovrascrivere qualsiasi altro ordine di rendering del plugin.
   ===================================================================================== */
div.mobx-holder .mobx-top-bar {
    display: flex !important;
    justify-content: flex-end !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    float: none !important;
    direction: ltr !important;
}
div.mobx-holder .mobx-top-bar * {
    float: none !important;
}
/* Ordine desiderato da destra verso sinistra: [close | zoom]   ( = zoom a sinistra, close a estrema destra )
   Con order piu basso = piu vicino a destra in flex-direction:row-reverse.
   Semplice soluzione senza bugs: order: 1 close (piu a dx), order: 2 zoom (subito dopo piu a sx).
   Flexbox justify-content:flex-end su row = visualizza dal piu grande order in su partendo da destra. */
div.mobx-holder .mobx-top-bar > .mobx-button.close,
div.mobx-holder .mobx-top-bar > button.close {
    order: 1 !important;
}
div.mobx-holder .mobx-top-bar > .mobx-button.zoom,
div.mobx-holder .mobx-top-bar > button.zoom {
    order: 2 !important;
}
div.mobx-holder .mobx-top-bar > .mobx-button.play,
div.mobx-holder .mobx-top-bar > button.play {
    order: 3 !important;
}

/* Pulsanti disattivati forzatamente (se per caso il plugin li ri-genera) */
div.mobx-holder .mobx-top-bar > .mobx-button.download,
div.mobx-holder .mobx-top-bar > button.download,
div.mobx-holder .mobx-button.download,
div.mobx-holder button.download {
    display: none !important;
    visibility: hidden !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    overflow: hidden !important;
}
div.mobx-holder .mobx-top-bar > .mobx-button.share,
div.mobx-holder .mobx-top-bar > button.share,
div.mobx-holder .mobx-share,
div.mobx-holder .mobx-button.share,
div.mobx-holder button.share {
    display: none !important;
    visibility: hidden !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    overflow: hidden !important;
}
div.mobx-holder .mobx-top-bar > .mobx-button.fullScreen,
div.mobx-holder .mobx-top-bar > button.fullScreen,
div.mobx-holder .mobx-button.fullScreen,
div.mobx-holder button.fullScreen {
    display: none !important;
    visibility: hidden !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    overflow: hidden !important;
}

/* ========== CONTROMISURE SE STYLES.MIN.CSS VENISSE CARICATO PER ERRORE ==========
   Il template demo autore di ModuloBox (demos.html) include styles.css
   che applica REGOLE GLOBALI DISTRUTTIVE (MBV font, body sfondo,
   overflow-x hidden, preloader bianco fullscreen). Queste regole sono
   del SITO DIMOSTRATIVO autore, NON di ModuloBox lightbox. Qui le
   neutralizziamo chirurgicamente — MA SENZA toccare font-family e
   colori del body (perche' quelli devono tornare a themes.css sopra).
   - Preloader fullscreen body:not(.loaded)::before/after  =>  display:none
   - MBV font-family sul body                               =>  gia' vinto da html body{ Poppins !important } sopra
   - html/body overflow-x:hidden                             =>  gia' vinto da overflow-x:auto !important sopra
   ============================================================================= */
body:not(.loaded)::before,
body:not(.loaded)::after {
    display: none !important;
    content: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    width: 0 !important;
    height: 0 !important;
    background: transparent !important;
    position: static !important;
    left: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    z-index: -1 !important;
    border: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* ============================================================================
   PAGINA DETTAGLIO IMMOBILE — INTERFACCIA MOBILE
   Blocco aggiunto in fase di audit: pulsanti header, trigger galleria,
   altezza mappa. Tutte le regole sono limitate al breakpoint mobile.
   ============================================================================ */

/* --- Pulsante "Indietro" in alto a sinistra (sostituisce l'hamburger nella
       scheda immobile: riporta all'elenco annunci, come nelle app di annunci) --- */
.ip-mobile-back-btn {
    display: none;
}

@media (max-width: 991.98px) {
    /* Solo icona: quadrato 42x42, stessa forma del pulsante Chiama a destra */
    .ip-mobile-back-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 42px;
        min-width: 42px;
        height: 42px;
        padding: 0;
        border: 1px solid color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 24%, transparent);
        border-radius: 5px;
        background-color: var(--ip-superficie);
        color: var(--ip-green);
        font-size: 0.85rem;
        font-weight: 600;
        line-height: 1;
        text-decoration: none;
        white-space: nowrap;
        -webkit-tap-highlight-color: transparent;
        transition: background-color 0.15s ease, color 0.15s ease;
    }

    .ip-mobile-back-btn i {
        font-size: 1.15rem;
        line-height: 1;
    }

    .ip-mobile-back-btn:hover,
    .ip-mobile-back-btn:focus,
    .ip-mobile-back-btn:active {
        background-color: var(--ip-green-light);
        color: var(--ip-green-dark);
        text-decoration: none;
    }
}

/* --- Pulsante "Chiama" in alto a destra: stesso stile di "Indietro" --- */
@media (max-width: 991.98px) {
    /* Solo icona: quadrato 42x42, speculare al pulsante Indietro a sinistra */
    .main-header .mobile-header-actions .ip-mobile-call-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 42px;
        min-width: 42px;
        height: 42px;
        padding: 0;
        flex: 0 0 42px;
        border: 1px solid color-mix(in srgb, var(--ip-green, rgb(36, 136, 69)) 24%, transparent);
        border-radius: 5px;
        background-color: var(--ip-superficie);
        color: var(--ip-green);
        font-size: 0.85rem;
        font-weight: 600;
        line-height: 1;
        text-decoration: none;
        white-space: nowrap;
        -webkit-tap-highlight-color: transparent;
        transition: background-color 0.15s ease, color 0.15s ease;
    }

    .main-header .mobile-header-actions .ip-mobile-call-btn i {
        font-size: 1rem;
        line-height: 1;
    }

    .main-header .mobile-header-actions .ip-mobile-call-btn:hover,
    .main-header .mobile-header-actions .ip-mobile-call-btn:focus,
    .main-header .mobile-header-actions .ip-mobile-call-btn:active {
        background-color: var(--ip-green-light);
        color: var(--ip-green-dark);
        outline: none;
        box-shadow: none;
    }
}

/* --- Slide della galleria mobile: ora sono <button> (aprono il lightbox),
       vanno ripuliti dallo stile nativo del controllo --- */
@media (max-width: 767.98px) {
    .property-detail-mobile-gallery__slide.ip-mobile-gallery-trigger {
        display: block;
        padding: 0;
        border: 0;
        border-radius: 0;
        -webkit-appearance: none;
        appearance: none;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

    .property-detail-mobile-gallery__slide.ip-mobile-gallery-trigger:focus {
        outline: none;
    }

    .property-detail-mobile-gallery__slide.ip-mobile-gallery-trigger:focus-visible {
        outline: 3px solid var(--ip-green);
        outline-offset: -3px;
    }
}

/* --- Mappa piu' bassa su mobile: 420px occupavano quasi tutto lo schermo
       e spingevano fuori vista il pulsante "Apri in Google Maps" --- */
@media (max-width: 767.98px) {
    #map.ip-detail-map-wrap,
    .ip-detail-map-wrap {
        height: 240px;
    }

    .ip-detail-map-hint {
        font-size: 0.78rem;
    }
}

@media (max-width: 379px) {
    #map.ip-detail-map-wrap,
    .ip-detail-map-wrap {
        height: 210px;
    }
}

/* Nella scheda immobile l'hamburger e' sostituito dal pulsante "Indietro".
   La regola dell'header mobile imposta display:inline-flex !important sul
   toggle, quindi la sola classe .d-none del markup non basta a nasconderlo. */
.main-header.header-mobile-lg .mobile-navbar-layout .mobile-menu-toggle.d-none,
.mobile-navbar-layout .mobile-menu-toggle.d-none {
    display: none !important;
}

/* ----------------------------------------------------------------------------
   Scheda immobile — pulsanti di navigazione tra annunci
   ("Ritorna a elenco annunci", "Indietro", "Avanti").
   Sostituiscono gli style inline che, avendo color:!important, impedivano
   all'hover di portare il testo a bianco: il risultato era testo verde su
   fondo verde.
   ---------------------------------------------------------------------------- */
.ip-nav-annunci-btn {
    height: 38px;
    padding: 0 1rem;
    border: 1.5px solid var(--ip-green);
    border-radius: 5px;
    background-color: var(--ip-superficie);
    color: var(--ip-green);
    font-size: 0.88rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.ip-nav-annunci-btn i {
    color: inherit; /* l'icona segue il testo in ogni stato */
}

.ip-nav-annunci-btn:hover,
.ip-nav-annunci-btn:focus,
.ip-nav-annunci-btn:active {
    background-color: var(--ip-green);
    border-color: var(--ip-green);
    color: #ffffff;
    text-decoration: none;
}

.ip-nav-annunci-btn:focus-visible {
    outline: 2px solid var(--ip-green-dark);
    outline-offset: 2px;
}

/* Variante non cliccabile: nessun cambio di stato al passaggio del mouse */
.ip-nav-annunci-btn--disabled,
.ip-nav-annunci-btn--disabled:hover,
.ip-nav-annunci-btn--disabled:focus {
    background-color: #f8f9fa;
    border-color: var(--ip-bordo-tenue);
    color: #9ca3af;
    cursor: not-allowed;
    opacity: 1;
}

.ip-nav-annunci-counter {
    color: #111827;
}

/* Icona "condividi" iOS nel box informazioni rapide (accanto ai dati mq/locali/servizi) */
.ip-share-ios-icon {
    width: 20px;
    height: 20px;
    display: block;
}

/* ----------------------------------------------------------------------------
   Scheda immobile — descrizione con "Leggi tutto" / "Nascondi"
   Il testo oltre i 300 caratteri e' presente nell'HTML ma nascosto: si alterna
   fra l'anteprima e il testo completo (vedi lo script in fondo alla pagina).
   ---------------------------------------------------------------------------- */
.property-detail-description__full > p:not(:last-child) {
    margin-bottom: 0.9rem;
}

.property-detail-description.is-expanded .property-detail-description__full {
    animation: ipDescrizioneApre 0.25s ease-out;
}

@keyframes ipDescrizioneApre {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

.property-detail-read-more {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: 0.85rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--ip-green);
    font-family: inherit;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    transition: color 0.15s ease;
}

.property-detail-read-more:hover,
.property-detail-read-more:focus {
    color: var(--ip-green-dark);
    text-decoration: underline;
}

.property-detail-read-more:focus-visible {
    outline: 2px solid var(--ip-green);
    outline-offset: 3px;
}

.property-detail-read-more i {
    font-size: 0.8rem;
    transition: transform 0.2s ease;
}

/* ----------------------------------------------------------------------------
   Scheda immobile mobile — carosello foto: contenimento e frecce
   Lo slider ereditava i margini negativi di -15px della griglia Bootstrap:
   sbordava di 15px per lato oltre il viewport (scroll orizzontale) e le frecce,
   pur posizionate a 14px dal contenitore, finivano a filo dello schermo.
   ---------------------------------------------------------------------------- */
@media (max-width: 767.98px) {
    .property-detail-mobile-gallery__slider {
        margin-left: 0;
        margin-right: 0;
        max-width: 100%;
        overflow: hidden;
    }

    /* Almeno 10px di distacco dal bordo laterale della pagina */
    .property-detail-mobile-gallery .slick-prev.slick-hero-gallery {
        left: 12px;
    }

    .property-detail-mobile-gallery .slick-next.slick-hero-gallery {
        right: 12px;
    }
}

/* ============================================================================
   CONSENSO PRIVACY — casella nei form e finestra con l'informativa
   Componente condiviso da form contatti e form richiesta valutazione.
   ============================================================================ */

.ip-privacy-consent {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 1rem;
}

.ip-privacy-consent__check {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin-top: 2px;
    accent-color: var(--ip-green);
    cursor: pointer;
}

.ip-privacy-consent__label {
    margin: 0;
    font-size: 0.85rem;
    line-height: 1.5;
    color: #4b5563;
    cursor: pointer;
}

/* Il link dell'informativa e' un <button>: va ripulito dallo stile nativo */
.ip-privacy-consent__link {
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    color: var(--ip-green);
    font-weight: 600;
    text-decoration: underline;
    cursor: pointer;
}

.ip-privacy-consent__link:hover,
.ip-privacy-consent__link:focus {
    color: var(--ip-green-dark);
}

.ip-privacy-consent__error {
    margin: -0.5rem 0 1rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ip-red);
}

/* --- Finestra dell'informativa --- */
.ip-privacy-modal {
    position: fixed;
    inset: 0;
    z-index: 30000; /* sopra header sticky (20000) e lightbox */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.ip-privacy-modal[hidden] {
    display: none;
}

body.ip-privacy-modal-aperta {
    overflow: hidden; /* blocca lo scorrimento della pagina sotto la finestra */
}

.ip-privacy-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
}

.ip-privacy-modal__dialog {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 680px;
    max-height: 88vh;
    background: var(--ip-superficie);
    border-radius: 5px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.28);
    overflow: hidden;
    animation: ipPrivacyEntra 0.22s ease-out;
}

@keyframes ipPrivacyEntra {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

.ip-privacy-modal__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--ip-navy-light);
}

.ip-privacy-modal__title {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1.3;
    color: var(--ip-text-heading);
}

.ip-privacy-modal__close {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: #6b7280;
    font-size: 1.1rem;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.ip-privacy-modal__close:hover,
.ip-privacy-modal__close:focus {
    background-color: var(--ip-fascia-tenue);
    color: #111827;
}

.ip-privacy-modal__body {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 1.25rem 1.5rem;
    font-size: 0.88rem;
    line-height: 1.6;
    color: var(--ip-text-body);
    -webkit-overflow-scrolling: touch;
}

.ip-privacy-modal__body:focus {
    outline: none;
}

.ip-privacy-modal__body h3 {
    margin: 1.4rem 0 0.5rem;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--ip-text-heading);
}

.ip-privacy-modal__body h3:first-of-type {
    margin-top: 1rem;
}

.ip-privacy-modal__body p {
    margin: 0 0 0.75rem;
}

.ip-privacy-modal__intro {
    padding: 0.85rem 1rem;
    border-left: 3px solid var(--ip-green);
    border-radius: 5px;
    background-color: var(--ip-green-light);
    color: var(--ip-navy-title);
}

.ip-privacy-modal__note {
    margin-top: 1.25rem;
    padding-top: 0.85rem;
    border-top: 1px dashed #e5e7eb;
    font-weight: 600;
    color: var(--ip-text-heading);
}

.ip-privacy-modal__footer {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    flex-wrap: wrap;
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--ip-navy-light);
    background-color: #fbfbfc;
}

.ip-privacy-modal__btn {
    min-height: 44px;
    padding: 0 1.35rem;
    border-radius: 5px;
    font-size: 0.9rem;
    font-weight: 600;
    border: 1.5px solid transparent;
    transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.ip-privacy-modal__btn--cancel {
    border-color: #d1d5db;
    background-color: var(--ip-superficie);
    color: #4b5563;
}

.ip-privacy-modal__btn--cancel:hover,
.ip-privacy-modal__btn--cancel:focus {
    background-color: var(--ip-fascia-tenue);
    color: #111827;
}

.ip-privacy-modal__btn--accept {
    border-color: var(--ip-green);
    background-color: var(--ip-green);
    color: #ffffff;
}

.ip-privacy-modal__btn--accept:hover,
.ip-privacy-modal__btn--accept:focus {
    background-color: var(--ip-green-dark);
    border-color: var(--ip-green-dark);
    color: #ffffff;
}

@media (max-width: 767.98px) {
    .ip-privacy-modal {
        padding: 12px;
    }

    .ip-privacy-modal__dialog {
        max-height: 92vh;
    }

    .ip-privacy-modal__header,
    .ip-privacy-modal__body,
    .ip-privacy-modal__footer {
        padding-left: 1.1rem;
        padding-right: 1.1rem;
    }

    .ip-privacy-modal__title {
        font-size: 1.02rem;
    }

    /* A schermo stretto i due pulsanti occupano tutta la larghezza */
    .ip-privacy-modal__btn {
        flex: 1 1 100%;
    }
}

/* ============================================================================
   FORM VALUTAZIONE A PASSAGGI
   La barra di avanzamento esisteva gia' ma il form aveva un solo passaggio:
   qui gli stili dei pannelli, dei pulsanti di navigazione e del riepilogo.
   ============================================================================ */

.valuation-step-panel {
    padding: 0;
    margin: 0;
    border: 0;
    min-width: 0; /* i fieldset hanno min-width auto: senza questo sbordano in flex/grid */
}

.valuation-step-panel[hidden] {
    display: none;
}

.valuation-step-panel.is-active {
    animation: ipStepEntra 0.25s ease-out;
}

@keyframes ipStepEntra {
    from { opacity: 0; transform: translateX(10px); }
    to   { opacity: 1; transform: translateX(0); }
}

/* Campo non valido evidenziato al tentativo di avanzare */
.valuation-step-form__control.is-invalid {
    border-color: var(--ip-red);
    background-color: var(--ip-red-light);
}

.valuation-step-form__control.is-invalid:focus {
    box-shadow: 0 0 0 3px rgba(210, 19, 10, 0.15);
}

/* --- Pulsanti di navigazione --- */
.valuation-step-form__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: stretch;
}

.valuation-step-form__actions .valuation-step-form__submit {
    flex: 1 1 200px;
}

.valuation-step-form__back {
    flex: 0 1 150px;
    border: 1.5px solid #d1d5db;
    background-color: var(--ip-superficie);
    color: #4b5563;
    font-weight: 600;
    transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.valuation-step-form__back:hover,
.valuation-step-form__back:focus {
    background-color: var(--ip-fascia-tenue);
    border-color: #9ca3af;
    color: #111827;
}

.valuation-step-form__back[hidden],
.valuation-step-form__submit[hidden],
.valuation-step-form__done[hidden] {
    display: none;
}

/* --- Messaggio di conferma dopo l'invio --- */
.valuation-step-form__done {
    margin: 0.5rem 0 0;
    padding: 1rem 1.15rem;
    border-radius: 5px;
    border-left: 3px solid var(--ip-green);
    background-color: var(--ip-green-light);
    color: var(--ip-green-dark);
    font-weight: 600;
}

/* --- Riepilogo del passaggio finale --- */
.valuation-step-summary {
    display: grid;
    grid-template-columns: minmax(0, auto) minmax(0, 1fr);
    gap: 0.4rem 1.25rem;
    margin: 0 0 1.35rem;
    padding: 1.1rem 1.25rem;
    border-radius: 5px;
    background-color: var(--ip-fascia-chiara);
    border: 1px solid var(--ip-navy-light);
    font-size: 0.88rem;
}

.valuation-step-summary dt {
    margin: 0;
    color: #6b7280;
    font-weight: 500;
}

.valuation-step-summary dd {
    margin: 0;
    color: var(--ip-text-heading);
    font-weight: 600;
    word-break: break-word;
}

.valuation-step-summary__empty {
    grid-column: 1 / -1;
    margin: 0;
    color: #6b7280;
}

/* --- Barra di avanzamento: passaggi completati e cliccabili --- */
.valuation-step-progress__item.is-done {
    cursor: pointer;
}

.valuation-step-progress__item.is-done .valuation-step-progress__number {
    background-color: var(--ip-green);
    border-color: var(--ip-green);
    color: #ffffff;
}

@media (max-width: 575.98px) {
    .valuation-step-form__actions {
        flex-direction: column-reverse; /* "Avanti" resta sopra, piu' a portata di pollice */
    }

    .valuation-step-form__back,
    .valuation-step-form__actions .valuation-step-form__submit {
        flex: 1 1 100%;
        width: 100%;
    }

    .valuation-step-summary {
        grid-template-columns: minmax(0, 1fr);
        gap: 0.15rem;
    }

    .valuation-step-summary dd {
        margin-bottom: 0.6rem;
    }
}

/* ----------------------------------------------------------------------------
   Banner pagina servizi su smartphone
   Il contenuto era vincolato a max-width:310px mentre la parola evidenziata del
   titolo ("compravendita") ne misura 316: sforava di 6px oltre il viewport e
   generava scorrimento orizzontale a 360px. Il contenuto usa ora tutta la
   larghezza disponibile, come negli altri banner.
   ---------------------------------------------------------------------------- */
@media (max-width: 767.98px) {
    .hero-servizi .hero-call-left__content,
    .hero-valutazione .hero-call-left__content,
    .hero-contatti .hero-call-left__content {
        max-width: 100%;
    }

    .hero-servizi .hero-call-left__actions--single,
    .hero-valutazione .hero-call-left__actions--single {
        max-width: 100%;
    }

    /* Rete di sicurezza: una parola piu' larga del contenitore va spezzata
       invece di sfondare il layout */
    .hero-call-left__title,
    .hero-call-left__title span,
    .hero-call-left__subtitle {
        overflow-wrap: break-word;
        word-break: break-word;
    }
}

/* ============================================================================
   CORREZIONI DI IMPAGINAZIONE — secondo giro di audit
   ============================================================================ */

/* --- 2. Menu laterale mobile ------------------------------------------------
   Voci nel viola istituzionale (era verde) e sottomenu "Immobili" gia' aperto,
   senza doverlo espandere a mano. */
@media (max-width: 991.98px) {
    .custom-main-menu > .nav-item > .nav-link,
    .custom-main-menu > .nav-item > .nav-link span,
    .custom-main-menu > .nav-item > .nav-link i,
    .custom-main-menu > .nav-item > .nav-link .caret,
    .custom-main-menu > .nav-item > .nav-link .mobile-menu-item-icon,
    .custom-main-menu > .nav-item > .nav-link .mobile-menu-item-icon i {
        color: var(--ip-navy) !important;
    }

    .mobile-menu-item-icon {
        color: var(--ip-navy) !important;
    }

    /* Sottomenu Immobili sempre visibile nel pannello laterale */
    .custom-main-menu .nav-item.dropdown .dropdown-menu {
        display: block;
        position: static;
        float: none;
        width: 100%;
        min-width: 0;
        margin: 0;
        padding: 2px 0 6px;
        border: 0;
        box-shadow: none;
        background: transparent;
    }

    /* Voci del sottomenu: stesso viola, rientrate sotto la voce padre */
    .custom-main-menu .dropdown-link,
    .custom-main-menu .dropdown-link span,
    .custom-main-menu .dropdown-link .mobile-menu-subitem-icon,
    .custom-main-menu .dropdown-link .mobile-menu-subitem-icon i {
        color: var(--ip-navy) !important;
    }

    .custom-main-menu .dropdown-link {
        padding: 9px 0 9px 26px;
        font-size: 0.94rem;
    }

    .custom-main-menu .dropdown-link:hover,
    .custom-main-menu .dropdown-link:focus {
        background-color: var(--ip-navy-light);
    }

    /* La freccetta del menu padre non serve: il sottomenu e' gia' aperto */
    .custom-main-menu > .nav-item.dropdown > .nav-link .caret {
        display: none;
    }

    /* Pulsanti in fondo al pannello coerenti col viola delle voci */
    .mobile-menu-bottom-actions .btn-outline-primary {
        border-color: var(--ip-navy) !important;
        color: var(--ip-navy) !important;
    }
}

/* --- 3. Pagina valutazione: titoli di sezione allineati a sinistra ----------
   Erano centrati tramite .text-center nel markup; qui si allineano a sinistra
   insieme al filetto decorativo sotto il titolo. */
.valuation-step-section .text-center,
.valuation-flow-section .text-center,
.valuation-strengths-section .text-center {
    text-align: left !important;
}

.valuation-step-section .heading-divider,
.valuation-flow-section .heading-divider,
.valuation-strengths-section .heading-divider {
    margin-left: 0;
    margin-right: auto;
}

/* --- 4. Card del modulo a passaggi -----------------------------------------
   Larghezza allineata agli altri blocchi della pagina (prima era limitata a
   980px mentre le card vicine usano tutta la colonna). */
.valuation-step-card {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
}

/* Cerchi degli step piu' grandi, con numero centrato otticamente */
.valuation-step-progress__number {
    width: 42px;
    height: 42px;
    font-size: 1.05rem;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    border: 2px solid transparent;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.valuation-step-progress__line {
    margin-top: 21px; /* meta' del cerchio: la linea resta sul suo asse */
}

/* Pulsanti del modulo tutti della stessa altezza e impostazione grafica */
.valuation-step-form__submit,
.valuation-step-form__back {
    min-height: 52px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 0 1.35rem;
    border-radius: 5px;
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1;
}

@media (max-width: 767.98px) {
    /* I quattro passaggi restano su una sola riga: le linee di collegamento
       sono nascoste e non occupano celle della griglia. */
    .valuation-step-progress {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 10px 6px;
    }

    .valuation-step-progress__number {
        width: 38px;
        height: 38px;
        font-size: 0.98rem;
    }

    .valuation-step-progress__label {
        font-size: 0.72rem;
        line-height: 1.25;
    }
}

@media (max-width: 379px) {
    .valuation-step-progress__number {
        width: 34px;
        height: 34px;
        font-size: 0.9rem;
    }

    .valuation-step-progress__label {
        font-size: 0.66rem;
    }
}


/* ============================================================================
   Scheda immobile — SERVIZI NELLE VICINANZE
   Riusa l'impaginazione di "Dettagli Aggiuntivi" (.additional-details__row):
   qui restano solo l'introduzione, i titoli di gruppo e l'evidenza della
   distanza, che e' un dato numerico e va letto a colpo d'occhio.
   ============================================================================ */
.property-detail-nearby__intro {
    margin: -0.35rem 0 1.35rem;
    color: var(--ip-text-body);
    font-size: 0.9rem;
}

.additional-details__group-title {
    display: flex;
    align-items: center;
    gap: 9px;
    margin: 1.5rem 0 0.35rem;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--ip-text-heading);
}

.additional-details__group-title:first-of-type {
    margin-top: 0;
}

.additional-details__group-title i {
    color: var(--ip-green);
    font-size: 0.9rem;
    width: 18px;
    text-align: center;
}

/* La distanza e' un numero: allineato a destra e in cifre tabellari */
.property-detail-panel--nearby .additional-details__value {
    color: var(--ip-green);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* --- Video: riquadro piu' basso su mobile ---------------------------------
   L'iframe aveva height="430" fisso, che su smartphone occupava quasi tutto
   lo schermo. Qui l'altezza segue le proporzioni 16:9 del video. */
@media (max-width: 767.98px) {
    .property-detail-panel--video iframe {
        height: auto;
        aspect-ratio: 16 / 9;
        max-height: 210px;
        border-radius: 5px;
    }
}

/* Pagina Chi Siamo: su smartphone il pulsante "Scrivimi su WhatsApp" occupa
   tutta la larghezza della card, come le altre azioni principali del sito. */
@media (max-width: 767.98px) {
    .about-profile-card__whatsapp {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 100%;
    }
}

/* ============================================================================
   TESTO DI CONTENUTO — CORPO E COLORE UNIFORMI
   Riferimento: "Esperienza consolidata nel mercato immobiliare" della pagina
   Chi Siamo (Poppins 1rem, interlinea 1.7, #5e6b7a). Prima i paragrafi
   andavano da 13 a 27px con oltre dieci colori diversi a seconda della pagina.

   Restano fuori, di proposito, i testi che devono avere un altro trattamento:
   quelli chiari sopra foto o fasce colorate, i messaggi di errore e le note
   di servizio in corpo minore.
   ============================================================================ */
:root {
    --ip-text-size: 1rem;
    --ip-text-line: 1.7;
    --ip-text-color: #5e6b7a;
}

main p:not(.hero-call-left__subtitle):not(.valuation-strip__text):not(.ip-privacy-consent__error):not(.contact-message-form__privacy):not(.valuation-step-form__privacy):not(.ip-detail-map-hint):not(.about-story-section__highlight):not(.valuation-step-form__done):not(.property-detail-mobile-title__location):not(.hero-valutazione__note) {
    font-size: var(--ip-text-size);
    line-height: var(--ip-text-line);
    color: var(--ip-text-color);
}

/* Le stesse misure per i testi di contenuto che non sono paragrafi */
.services-card__text,
.google-review-card__text,
.presentation-highlight__text,
.contact-overview-illustration__text,
.property-detail-help__text,
.property-detail-nearby__intro,
.property-detail-contact__text,
.choose-us-stat-description,
.help-services-card__text {
    font-size: var(--ip-text-size);
    line-height: var(--ip-text-line);
    color: var(--ip-text-color);
}

/* ============================================================================
   RAGGIO DEGLI ANGOLI UNIFORME — 5px
   Il template partiva da quindici raggi diversi (2, 3, 4, 6, 8, 10, 12, 14,
   16, 20, 24px…). Qui si normalizzano anche gli elementi che prendono il
   raggio dal tema base, senza toccare cerchi (50%) e pillole (999px).
   ============================================================================ */
.btn,
.card,
.card-img,
.card-img-top,
.card-img-bottom,
.form-control,
.custom-select,
.rounded,
.rounded-sm,
.rounded-lg,
.badge,
.alert,
.modal-content,
.dropdown-menu,
.input-group > .form-control,
.input-group-text,
.bootstrap-select .dropdown-toggle,
.leaflet-control-zoom,
.leaflet-control-zoom a,
.leaflet-popup-content-wrapper,
img.card-img,
.container > .rounded-lg {
    border-radius: 5px;
}

/* Gli angoli interni dei gruppi di controlli restano squadrati dove servono */
.leaflet-control-zoom a:first-child {
    border-radius: 5px 5px 0 0;
}

.leaflet-control-zoom a:last-child {
    border-radius: 0 0 5px 5px;
}

/* Elementi che devono restare tondi */
.rounded-circle,
.avatar,
.mobile-menu-item-icon,
.property-detail-nearby__icon {
    border-radius: 50%;
}

/* La sezione "Servizi nelle vicinanze" usa le stesse classi di "Dettagli
   Aggiuntivi": qui si azzerano gli avanzi della vecchia resa a schede
   (sfondo pieno, bordo e ombra), così le due sezioni sono indistinguibili. */
.property-detail-panel--nearby {
    background-color: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.property-detail-panel--nearby .property-detail-panel__body {
    padding: 0;
    background: transparent;
    box-shadow: none;
    border: 0;
}

/* ============================================================================
   PAGINE LEGALI (privacy e cookie policy)
   Impaginazione a colonna singola, misura di lettura contenuta e tabelle
   che scorrono da sole su schermi stretti invece di allargare la pagina.
   ============================================================================ */
/* La colonna di testo usa la stessa larghezza delle altre pagine del sito:
   nessun max-width dedicato, così i margini restano allineati ovunque. */

.legal-page__updated {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 1.75rem;
    padding: 0.45rem 0.9rem;
    border-radius: 5px;
    background-color: var(--ip-green-light);
    color: var(--ip-green-dark);
    font-size: 0.85rem;
    font-weight: 600;
}

/* --- Indice --- */
.legal-page__toc {
    margin-bottom: 2.5rem;
    padding: 1.35rem 1.6rem;
    border: 1px solid var(--ip-border);
    border-radius: 5px;
    background-color: #fbfbfc;
}

.legal-page__toc-title {
    margin: 0 0 0.85rem;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ip-text-heading);
}

.legal-page__toc ol {
    margin: 0;
    padding-left: 1.15rem;
    columns: 2;
    column-gap: 2rem;
}

.legal-page__toc li {
    margin-bottom: 0.45rem;
    font-size: 0.92rem;
    break-inside: avoid;
}

.legal-page__toc a {
    color: var(--ip-text-body);
    text-decoration: none;
}

.legal-page__toc a:hover,
.legal-page__toc a:focus {
    color: var(--ip-green);
    text-decoration: underline;
}

/* --- Corpo del documento --- */
.legal-page__body h2 {
    margin: 2.4rem 0 0.85rem;
    font-size: 1.28rem;
    font-weight: 600;
    color: var(--ip-text-heading);
    scroll-margin-top: 120px; /* l'intestazione è fissa: evita che il titolo finisca sotto */
}

.legal-page__body h2:first-child {
    margin-top: 0;
}

.legal-page__body a {
    color: var(--ip-green);
}

.legal-page__cookie-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 2rem 0 0.6rem;
    font-size: 1.02rem;
    font-weight: 600;
    color: var(--ip-text-heading);
    scroll-margin-top: 120px;
}

.legal-page__cookie-title i {
    color: var(--ip-green);
    font-size: 0.95rem;
}

/* --- Tabella dei cookie --- */
.legal-page__table-wrap {
    overflow-x: auto;
    margin: 0 0 1.5rem;
    border: 1px solid var(--ip-border);
    border-radius: 5px;
}

.legal-page__table {
    width: 100%;
    min-width: 480px;
    border-collapse: collapse;
    font-size: 0.88rem;
}

.legal-page__table th,
.legal-page__table td {
    padding: 0.7rem 1rem;
    text-align: left;
    border-bottom: 1px solid var(--ip-border);
    vertical-align: top;
}

.legal-page__table th {
    background-color: var(--ip-fascia-chiara);
    color: var(--ip-text-heading);
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.legal-page__table tbody tr:last-child td {
    border-bottom: 0;
}

.legal-page__table td:first-child {
    font-weight: 600;
    color: var(--ip-text-heading);
    white-space: nowrap;
}

.legal-page__browsers {
    padding-left: 1.2rem;
}

.legal-page__browsers li {
    margin-bottom: 0.4rem;
}

/* --- Riquadro finale di contatto --- */
.legal-page__contact-box {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    margin-top: 3rem;
    padding: 1.6rem 1.75rem;
    border-radius: 5px;
    background-color: var(--ip-green-light);
}

.legal-page__contact-icon {
    flex: 0 0 52px;
    width: 52px;
    height: 52px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background-color: var(--ip-superficie);
    color: var(--ip-green);
    font-size: 1.4rem;
}

.legal-page__contact-box > div:nth-child(2) {
    flex: 1 1 260px;
    min-width: 0;
}

.legal-page__contact-title {
    margin: 0 0 0.3rem;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--ip-text-heading);
}

.legal-page__contact-button {
    flex: 0 0 auto;
    min-height: 46px;
    display: inline-flex;
    align-items: center;
}

@media (max-width: 767.98px) {
    .legal-page__toc ol {
        columns: 1;
    }

    .legal-page__toc {
        padding: 1.1rem 1.2rem;
    }

    .legal-page__body h2 {
        font-size: 1.15rem;
        margin-top: 2rem;
    }

    .legal-page__contact-box {
        padding: 1.25rem 1.2rem;
    }

    .legal-page__contact-button {
        width: 100%;
        justify-content: center;
    }
}

/* Variante "stampa" della fascia di richiamo: stessa struttura di
   "Non è la casa giusta?", icona in tinta neutra per distinguerla. */
.property-detail-help--print .property-detail-help__icon {
    background-color: var(--ip-navy-light);
    color: var(--ip-navy);
}

/* ============================================================================
   FOGLIO DI STAMPA
   Serve al pulsante "Stampa l'annuncio" della scheda immobile, ma vale per
   tutte le pagine: toglie navigazione, barre e comandi e lascia il contenuto.
   ============================================================================ */
@media print {
    /* Elementi che non hanno senso sulla carta */
    header.main-header,
    footer,
    .mobile-sticky-actions,
    .property-detail-mobile-actions,
    .property-detail-help__actions,
    .property-detail-contact__actions,
    .property-detail-mobile-quickinfo__wa,
    .ip-privacy-modal,
    .ip-search-drawer,
    .property-detail-naviprevnext,
    .ip-detail-related-section,
    .property-detail-read-more,
    .ip-detail-map-hint,
    .slick-arrow,
    .slick-dots,
    .scroll-top,
    .property-search-section--immobiliare,
    .home-main-banner {
        display: none !important;
    }

    body {
        background: var(--ip-superficie) !important;
        color: #000000 !important;
        font-size: 11pt;
    }

    main#content {
        padding: 0 !important;
    }

    /* Niente ombre né fondi colorati: sprecano inchiostro */
    .property-detail-panel,
    .property-detail-help,
    .card,
    .shadow-xs-2 {
        box-shadow: none !important;
        background: var(--ip-superficie) !important;
        border: 0 !important;
    }

    /* La descrizione completa non deve essere spezzata a metà */
    .property-detail-panel,
    .additional-details__row,
    .property-detail-nearby__intro {
        page-break-inside: avoid;
    }

    /* La mappa si stampa come immagine statica: i tile parziali sono inutili */
    #map.ip-detail-map-wrap {
        height: 220px !important;
        border: 1px solid #cccccc !important;
    }

    .leaflet-control-container {
        display: none !important;
    }

    /* Il video non è stampabile: al suo posto resta il titolo della sezione */
    .property-detail-panel--video iframe {
        display: none !important;
    }

    /* Gli indirizzi dei link utili vanno esplicitati sulla carta */
    .property-detail-panel a[href^="http"]::after {
        content: " (" attr(href) ")";
        font-size: 9pt;
        color: #555555;
        word-break: break-all;
    }

    /* La galleria: si stampa solo la prima foto, in formato contenuto */
    .property-detail-mobile-gallery__slider .slick-slide:not(.slick-current) {
        display: none !important;
    }

    a {
        text-decoration: none !important;
        color: #000000 !important;
    }
}
