:root {

    /* =====================
       TYPOGRAPHY
    ===================== */
    --font-family-primary:   var(--e-a-font-family, 'Inter', sans-serif);
    --font-family-secondary: var(--e-global-typography-secondary-font-family, 'EB Garamond', serif);

    --font-size-xs:          0.75rem;
    --font-size-sm:          0.875rem;
    --font-size-base:        1rem;
    --font-size-md:          1.125rem;
    --font-size-lg:          1.25rem;
    --font-size-xl:          1.5rem;
    --font-size-2xl:         2rem;
    --font-size-3xl:         2.5rem;
    --font-size-4xl:         3rem;
    --font-size-5xl:         4rem;

    --line-height-tight:     1.1;
    --line-height-snug:      1.3;
    --line-height-normal:    1.5;
    --line-height-relaxed:   1.7;

    --letter-spacing-tight:  -0.02em;
    --letter-spacing-normal:  0em;
    --letter-spacing-wide:    0.05em;
    --letter-spacing-wider:   0.1em;

    --font-weight-light:     300;
    --font-weight-regular:   400;
    --font-weight-medium:    500;
    --font-weight-semibold:  600;
    --font-weight-bold:      700;

    /* =====================
       SPACING
    ===================== */
    --space-1:               0.25rem;
    --space-2:               0.5rem;
    --space-3:               0.75rem;
    --space-4:               1rem;
    --space-5:               1.25rem;
    --space-6:               1.5rem;
    --space-8:               2rem;
    --space-10:              2.5rem;
    --space-12:              3rem;
    --space-16:              4rem;
    --space-20:              5rem;
    --space-24:              6rem;
    --space-32:              8rem;

    --section-padding-y:     var(--space-20);
    --section-padding-x:     var(--space-6);
    --container-max-width:   1440px;
    --container-padding:     var(--space-6);

    /* =====================
       BORDER RADIUS
    ===================== */
    --radius-sm:             var(--e-a-border-radius, 4px);
    --radius-md:             8px;
    --radius-lg:             16px;
    --radius-xl:             24px;
    --radius-2xl:            32px;
    --radius-full:           9999px;

    /* =====================
       TRANSITIONS
    ===================== */
    --transition-fast:       150ms ease;
    --transition-base:       300ms ease;
    --transition-slow:       600ms ease;
    --transition-slower:     1000ms ease;

    /* =====================
       Z-INDEX
    ===================== */
    --z-below:               -1;
    --z-base:                0;
    --z-above:               1;
    --z-dropdown:            100;
    --z-sticky:              200;
    --z-overlay:             300;
    --z-modal:               400;
    --z-toast:               500;

}

html {
    font-size: 62.5%; /* 1rem = 10px — desktop */
}

@media (max-width: 1024px) {
    html {
        font-size: 56.25%; /* 1rem = 9px — tablet */
    }
}

@media (max-width: 767px) {
    html {
        font-size: 50%; /* 1rem = 8px — mobile */
    }
}

.elementor-heading-title{
    line-height: 1em!important;
}

/* overflow-x:hidden su html/body rompe position:sticky (containing block
   diventa il body, lo scroll non avviene più sulla finestra come si aspetta
   sticky). Usiamo overflow-x:clip che impedisce lo scroll orizzontale senza
   creare uno scroll container → sticky continua a funzionare. */
body{
    overflow-x: clip;
}

/* Reset stili default browser/Elementor per i <button> nudi (es. swiper
   nav del widget storia, eventuali custom widget).
   ESCLUSIONI:
   - .elementor-button: button widget Elementor (anche quando è un <button>
     submit di un form, non solo <a>) — ha il suo styling completo.
   - .elementor-menu-toggle: hamburger del nav menu mobile — Elementor lo
     stila come icon button.
   Tenere transparent + border:0 con !important per battere eventuali
   regole Elementor che riprendono i button sui custom widget. */
button:not(.elementor-button):not(.elementor-menu-toggle) {
    background: transparent !important;
    border: 0 !important;
    padding: 0;
    margin: 0;
    color: inherit;
    font: inherit;
    line-height: inherit;
    text-align: inherit;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
}

.elementor-section-wrap > .elementor-section > .elementor-container,
.e-con-inner {
    width: calc(100% - 5rem);
    max-width: 1440px;
    margin-inline: auto;
}

/* =========================
   UTILITY: padding allineato al container (max-width 1440px)
   Attive SOLO da 1440px in su (sotto, Elementor mantiene il suo padding).
========================= */
@media (min-width: 1440px) {
    .pl-container-offset {
        --padding-inline-start: calc((100vw - var(--container-max-width)) / 2)!important;
        --padding-left: calc((100vw - var(--container-max-width)) / 2)!important;
        padding-left: calc((100vw - var(--container-max-width)) / 2)!important;
    }

    .pr-container-offset {
        --padding-inline-end: calc((100vw - var(--container-max-width)) / 2)!important;
        --padding-right: calc((100vw - var(--container-max-width)) / 2)!important;
        padding-right: calc((100vw - var(--container-max-width)) / 2)!important;
    }
}

/* =========================
   BREADCRUMB (Rank Math)
========================= */
.rank-math-breadcrumb {
    display: inline-block;
    background: var(--e-global-color-bc1c632);
    padding: 0.6rem 1.6rem;
    border-radius: var(--radius-full);
    font-size: 1.3rem;
    line-height: 1.4;
    color: #fff;
}

.rank-math-breadcrumb p {
    margin: 0;
}

.rank-math-breadcrumb a {
    color: #fff;
    text-decoration: none;
    transition: opacity var(--transition-fast);
}

.rank-math-breadcrumb a:hover {
    color: #fff;
    opacity: 0.7;
}

.rank-math-breadcrumb .separator {
    color: #fff;
    opacity: 0.6;
    margin: 0 0.4rem;
}


.elementor-counter-title{
    display: flex;
    line-height: 1.2!important;
    flex-direction: column;
}

#atf{
    position: relative;
}

#atf:after{
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 20%;
    background: linear-gradient(to bottom, transparent, #21211F);
}



@media (min-width: 1280px){
    .slider{
        width: calc(100vw - ((100vw - 1440px) / 2))!important;
        margin-left: auto;
        margin-right: 0 !important;
    }
}



.card-collaboratore{
    position: relative;
    overflow: hidden!important;
}

.card-collaboratore::after {
    position: absolute;
    bottom: 0;
    left: 0;
    background: linear-gradient(to bottom, transparent,  #00456f);
    height: 250px;
    width: 100%;
    content: "";
}

.pattern-card{
    opacity: .6;
}

.accent{
    font-family: var(--font-family-secondary);
    font-size: 6.2rem;
}

.accent.small{
    font-size: 3.6rem;
}

.accent.gold{
    color: var(--e-global-color-accent);
}

.accent.blue{
    color: var(--e-global-color-primary);
}


.elementor-button-icon svg {
    width: 4rem!important;
}

.cta-button .elementor-button{
    position: relative;
}

.cta-button .elementor-button svg{
    position: absolute;
    top: 50%;
    right: -5rem;
    transform: translateY(-50%);
    transition: all .3s ease;
}

.cta-button .elementor-button:hover svg{
    right: -5.5rem;
}

/*TOPSCROLL*/

#topScroll {
    opacity: 0;
    pointer-events: none;
    transform: translatey(10px);
    transition: all 0.3s ease;
}

#topScroll:hover{
    cursor: pointer;
}

#topScroll.visible {
    opacity: 1;
    transform: translatey(0px);
    pointer-events: auto;
}

.elementor-button{
    position: relative;
}
.elementor-button:hover .elementor-button-icon .e-font-icon-svg {
    right:10px;
}

.elementor-button .elementor-button-content-wrapper{
    align-items: center;
}

.elementor-button-icon .e-font-icon-svg {
    position:absolute;
    right:15px;
    height: 1.5em;
    width: 1.5em;
    fill: var(--e-global-color-primary);
    transition: right 0.3s ease;
}

.cta-menu{
    background: var(--e-global-color-primary);
    color: #fff;
    padding-right: 20px!important;
    border-radius: 5px;

    a{
        color: inherit!important;
        text-transform: uppercase;
        justify-self: center;
    }
}

@media (max-width: 1280px) {
    .elementor-nav-menu--main .elementor-nav-menu ul {
        position: relative!important;
        margin-left: 0 !important;
        margin-top: 0 !important;
    }

    .has-submenu{
        display: flex;
        justify-content: space-between;
    }
}

#navbar.elementor-sticky--active {
    background: white;
    /* Sostituisci il box-shadow con: */
    filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.12))
    drop-shadow(0 2px 5px rgba(0, 0, 0, 0.24));
}


.carosello-recensioni .swiper-wrapper,
.card-home .swiper-wrapper
{
    align-items: center;
    transition-timing-function: linear !important;
    pointer-events: none;
}

.dialog-lightbox-widget-content {
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}

.jet-popup__container-inner{
    padding: 0!important;
}

.jet-popup__container-content,
[data-elementor-type="jet-popup"],
[data-elementor-type="jet-popup"] .e-con-boxed,
[data-elementor-type="jet-popup"] .e-con-inner {
    height: 100%;
}

.subagenzia-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 20px;
    font-size: 18px;
    border-bottom: 1px solid #eee;
    align-items: start!important;
    background-color: color-mix(in srgb, var(--e-global-color-secondary) 20%, transparent);
    border-radius: 8px;

}
.sub-via:empty,
.sub-tel:empty,
.sub-cell:empty,
.sub-orario:empty,
.sub-email:empty {
    display: none;
}

.sub-tel::before { content: "📞 "; }
.sub-cell::before { content: "📱 "; }
.sub-orario::before { content: "🕐 "; }
.sub-email::before { content: "✉️ "; }
.subagenzia-item:last-child {
    border-bottom: none;
}

.jet-listing-dynamic-repeater__items:has(.jet-listing-dynamic-repeater__item:nth-child(2)) {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
}

@media (max-width: 768px) {
    .jet-listing-dynamic-repeater__items:has(.jet-listing-dynamic-repeater__item:nth-child(2)) {
        grid-template-columns: 1fr;
    }
}

.page-team.card-collaboratore:hover::after {
    opacity: 0;
    transition: opacity var(--transition-base);
}

.page-team.card-collaboratore:hover svg{
    fill: white!important;
}


css.page-team.card-collaboratore::after {
    transition: opacity var(--transition-base);
}

/* =========================
   PARALLAX IMAGES
========================= */
.elementor-widget-image.parallax-img {
    overflow: hidden;
    inset: 0;
}

.elementor-widget-image.parallax-img img {
    will-change: transform;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.elementor-widget-image.card-servizio {
    position: relative;
}

.elementor-widget-image.card-servizio::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 50%;
    background: linear-gradient(to top, #031e2f, transparent);
    pointer-events: none;
    z-index: 1;
}


#prevIcon,
#nextIcon {
    cursor: pointer;
}

.grid_valori_img {
    grid-column: 2!important;
    grid-row: 1 / span 2!important;
}

.grid_valori {
    grid-column-gap: 16px!important;
    grid-row-gap: 16px!important;
    grid-template-rows: auto auto!important;
    grid-template-columns: 1fr 1fr 1fr!important;
    grid-template-areas:
        "testo1 img testo3"
        "testo2 img testo4";
    display: grid!important;
}

.grid_valori_img .e-con-inner {
    grid-area: img!important;
}


@media (max-width: 1024px) {
    .grid_valori {
        display: flex !important;
        flex-direction: column !important;
    }

    /* immagine al centro */
    .grid_valori > .e-con:nth-child(1) { order: 3 !important; }

    .grid_valori > .e-con:nth-child(2) { order: 1 !important; }
    .grid_valori > .e-con:nth-child(3) { order: 2 !important; }
    .grid_valori > .e-con:nth-child(4) { order: 4 !important; }
    .grid_valori > .e-con:nth-child(5) { order: 5 !important; }

}

/* Nascondiamo i figli "veri" da animare:
   - su e-con-full sono i direct children del container
   - su e-con-boxed sono i direct children di .e-con-inner
   IMPORTANTE: il :not(.e-con-inner) sulla prima regola è obbligatorio.
   Senza, sui boxed la .e-con-inner stessa viene messa a opacity:0 e
   moltiplica i figli (che GSAP anima a 1) lasciandoli invisibili. */
.e-con.fade-up > *:not(.e-con-inner),
.e-con.fade-up > .e-con-inner > * {
    opacity: 0;
}

.categorie-blog .elementor-post-info{
    display: flex;
    align-items: center;
    gap: 10px;
}

.categorie-blog .elementor-inline-item{
    background: var(--e-global-color-accent);
    padding: 5px 10px!important;
    border-radius: 5px;
}


#form-field-curriculum::file-selector-button {
    height: 100%;
    padding: 10px 16px;
    cursor: pointer;
}

#form-field-curriculum {
    height: 40px;
    font-size:16px;
    line-height:1;/* match con gli altri input Elementor */
    padding: 0;
}

.elementor-field-option{
    font-size: 18px;
    display: flex;
    gap: 5px;
}


.frm_opt_container {
    text-align: left;
}

.swiper-pagination-progressbar {
    background: var(--e-global-color-f0a2e8a)!important;
    position: absolute;
    top: 110% !important;
    width: 50% !important;
    left: 50% !important;
    transform: translateX(-50%)!important;
    height: 24px !important;
    border-radius: 20px;
}

.elementor-widget-loop-carousel .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
    border-radius: 20px;
    left: 8px !important;
    top: 8px !important;
    width: calc(100% - 16px) !important;
    height: calc(100% - 16px) !important;
}

/* =========================
   LANGUAGE SWITCHER (shortcode [hcs_lang_switch])
   Solo testo (IT/EN), bianco. Override anche del color inherited
   da link Elementor / link globali del tema.
========================= */
.hcs-lang-switch,
.hcs-lang-switch:link,
.hcs-lang-switch:visited,
.hcs-lang-switch:hover,
.hcs-lang-switch:focus,
.hcs-lang-switch:active {
    color: #fff;
    text-decoration: none;
    font-weight: 600;
    letter-spacing: 0.05em;
    transition: opacity 0.2s ease;
}

.hcs-lang-switch:hover,
.hcs-lang-switch:focus {
    opacity: 0.75;
}

/* =========================
   GLASSMORPHISM NAVBAR / PILL
   Bianco semi-trasparente + blur sullo sfondo + bordo sottile.
   Da applicare via "CSS Classes" in Elementor (Avanzato → CSS Classes:
   navbar-glass) su un container/section. Padding e border-radius restano
   gestiti dai control Elementor — qui solo l'effetto visivo.
   !important per battere eventuali background del container.
========================= */
.navbar-glass {
    background-color: rgba(255, 255, 255, 0.1) !important;
    -webkit-backdrop-filter: blur(17px);
    backdrop-filter: blur(17px);
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
}