/* =============================================================================
   F&M Ingegneria — Main Stylesheet
   Mobile-first · CSS custom properties · BEM + Bootstrap 5
   ============================================================================= */


/* ── Custom Properties ───────────────────────────────────────────────────────── */

:root {
    /* Palette F&M Ingegneria */
    --color-white:          #ffffff;
    --color-white-rgb:      255, 255, 255;
    --color-navy:           #001E43;
    --color-navy-rgb:       0, 30, 67;
    --color-red:            #BA0C2F;
    --color-red-rgb:        186, 12, 47;
    --color-blue-light:     #8793A8;
    --color-blue-light-rgb: 135, 147, 168;
    --color-grey-light:     #E0E3E8;
    --color-grey-light-rgb: 224, 227, 232;

    /* Alias semantici */
    --color-primary:        var(--color-navy);
    --color-primary-rgb:    var(--color-navy-rgb);
    --color-text:           var(--color-navy);
    --color-accent:         var(--color-red);
    --color-accent-rgb:     var(--color-red-rgb);
    --color-secondary:      var(--color-blue-light);
    --color-text-muted:     var(--color-blue-light);
    --color-bg:             var(--color-white);
    --color-bg-alt:         var(--color-grey-light);
    --color-bg-section:     #f6f6f6;             /* sfondo sezioni alternate neutre */
    --color-border:         var(--color-grey-light);
    --color-border-ui:      #D2D2D2;                 /* bordi card, pulsanti interattivi */

    /* Bootstrap override */
    --bs-primary:           var(--color-accent);
    --bs-primary-rgb:       var(--color-accent-rgb);

    /* Focus ring */
    --focus-rgba:           rgba(186, 12, 47, 0.35);
    --focus-ring:           0 0 0 3px var(--focus-rgba);

    /* Tipografia */
    --font-family-base:     'Aptos', system-ui, -apple-system, sans-serif;
    --font-family-label:    'Barlow Condensed', system-ui, sans-serif;
    --font-family-heading:  var(--font-family-base);
    --line-height-base:     1.6;

    /* Type scale — valori target a 1920px */
    --fs-15:   0.9375rem;
    --fs-17:   1.0625rem;
    --fs-20:   1.25rem;
    --fs-23:   clamp(0.9375rem, 0.53vw  + 0.8rem,   1.4375rem);
    --fs-25:   clamp(1rem,      1vw     + 0.625rem,  1.5625rem);
    --fs-36:   clamp(1.375rem,  0.94vw  + 1.125rem,  2.25rem);
    --fs-40:   clamp(1.5rem,    1.25vw  + 1rem,      2.5rem);
    --fs-55:   clamp(1.75rem,   2.03vw  + 1rem,      3.4375rem);
    --fs-64:   clamp(2rem,      2.5vw   + 1rem,      4rem);
    --fs-86:   clamp(2.375rem,  3.12vw  + 1.625rem,  5.375rem);
    --fs-100:  clamp(2.625rem,  3.75vw  + 1.75rem,   6.25rem);
    --fs-120:  clamp(3.125rem,  4.53vw  + 2.06rem,   7.5rem);
    --fs-170:  clamp(3.5rem,    7.38vw  + 1.75rem,   10.625rem);

    /* Spacing verticale — nome = valore target px a 1920px */
    --p-40:   clamp(16px, 1.55vw + 10px, 40px);
    --p-60:   clamp(20px, 3.125vw, 60px);
    --p-90:   clamp(30px, 4.69vw,  90px);
    --p-120:  clamp(60px, 6.25vw,  120px);
    --p-160:  clamp(90px, 8.33vw,  160px);

    /* Offset top blocchi introduttivi (header trasparente sopra) */
    --p-head:        clamp(7.5rem, 9.06vw + 5.38rem, 16.25rem);   /* 120px → 260px @1920 — archivi + page-intro */
    --p-head-single: clamp(8.125rem, 12.3vw + 5.24rem, 20rem);    /* 130px → 320px @1920 — single project/news */

    /* Gutter */
    --gutter-off:   max(1.25rem, 5.2083vw);   /* 100px @ 1920px */
    --gutter-half:  calc(var(--gutter-off) / 2);
    --gutter-in:    max(0.9375rem, 0.8125vw); /* gap colonne Bootstrap */

    /* Transizioni */
    --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
    --transition-base:   0.25s var(--transition-timing);

    /* Header — SOLO per scroll-padding e spacer, MAI su .header stesso */
    --header-height: 90px;
}


/* ── Font: Aptos (self-hosted) ────────────────────────────────────────────────
   Microsoft Aptos — woff2 in assets/fonts/
   ─────────────────────────────────────────────────────────────────────────── */

@font-face {
    font-family: 'Barlow Condensed';
    src: url('../fonts/BarlowCondensed-Medium.woff2') format('woff2');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Aptos';
    src: url('../fonts/Aptos-Light.woff2') format('woff2');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Aptos';
    src: url('../fonts/Aptos.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Aptos';
    src: url('../fonts/Aptos-SemiBold.woff2') format('woff2');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Aptos';
    src: url('../fonts/Aptos-Bold.woff2') format('woff2');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}


/* ── Reset & Base ─────────────────────────────────────────────────────────── */

*, *::before, *::after { box-sizing: border-box; }

html {
    scroll-behavior: smooth;
    scroll-padding-top: calc(var(--header-height) + 1rem);
    -webkit-text-size-adjust: 100%;
}

body {
    font-family: var(--font-family-base);
    font-size: 1rem;
    line-height: var(--line-height-base);
    color: var(--color-text);
    background-color: var(--color-bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

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

p { margin-block: 0; }

a {
    color: inherit;
    text-decoration: none;
    transition: color var(--transition-base);
}


/* ── Selezione testo ──────────────────────────────────────────────────────── */

::selection {
    background: var(--color-accent);
    color: var(--color-white);
}


/* ── Layout: container-fluid + gutter custom ─────────────────────────────── */

.container-fluid {
    --bs-gutter-x: var(--gutter-off);
}

.container-fluid .row {
    --bs-gutter-x: var(--gutter-in);
}


/* ── Accessibilità: skip link ─────────────────────────────────────────────── */

.skip-link {
    position: absolute;
    top: -100%;
    left: 1rem;
    z-index: 9999;
    padding: 0.5rem 1rem;
    background: var(--color-accent);
    color: var(--color-white);
    font-weight: 600;
    text-decoration: none;
    border-radius: 0 0 4px 4px;
    transition: top 0.2s;
}
.skip-link:focus { top: 0; }


/* ── Accessibilità: focus ring ────────────────────────────────────────────── */

:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
}

a:focus:not(:focus-visible) { outline: none; box-shadow: none; }


/* ── Media utilities ──────────────────────────────────────────────────────── */

.media {
    position: relative;
    display: block;
    width: 100%;
    height: auto;
}

.media-bg::after {
    user-select: none;
    pointer-events: none;
}

.img-cover,
.img-contain,
.img-scale,
.media-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    pointer-events: none;
    user-select: none;
    -webkit-user-drag: none;
}

.img-contain { object-fit: contain; }
.img-scale   { object-fit: scale-down; }


/* ── Typography utilities ─────────────────────────────────────────────────── */

/* Prosa editoriale — wrapper per qualsiasi blocco testuale */
.text {
    font-weight: 300;
    font-size: var(--fs-25);
    line-height: 1.4;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}

.text :is(h1, h2)   { font-size: 1.5em; }
.text :is(h3, h4)   { font-size: 1.25em; }
.text :is(h5, h6)   { font-size: 1.1em; }

.text :is(h1, h2, h3, h4, h5, h6) {
    font-weight: 600;
    line-height: 1.3;
}

.text :is(h1, h2, h3, h4, h5, h6):not(:first-child) { padding-block-start: 2em; }

.text :is(p, ul, ol):not(:first-child) { padding-block-start: 1.2em; }

.text :is(ul, ol) { padding-inline-start: 1em; }

.text strong { font-weight: 600; }

.text a:not(.btn) {
    color: var(--color-accent);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.text a:not(.btn):hover { text-decoration: none; }

/* Sopratitolo uppercase */
.eyebrow {
    font-family: var(--font-family-label);
    font-size: var(--fs-15);
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

/* Titolo modulo */
.title {
    font-size: var(--fs-40);
    font-weight: 700;
    line-height: 1.15;
    color: var(--color-text);
}

/* Pagine legali / 404 — page.php */
.page-wrap {
    padding-block-start: var(--p-head);
    padding-block-end: var(--p-120);
}

.page-title {
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 1.1;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
}

.page-divider {
    border: 0;
    border-top: 1px solid #CFCFCF;
    margin: 0 0 var(--p-60);
    opacity: 1;
}


/* ── Brand ────────────────────────────────────────────────────────────────── */

.brand__mark { fill: var(--brand-mark-color, #BA0C2F); }
.brand__text { fill: var(--brand-text-color, #192440); }


/* ── Header ───────────────────────────────────────────────────────────────── */

.header {
    position: fixed;
    inset-inline: 0;
    top: 0;
    z-index: 1000;
    padding-block: clamp(10px, 0.833vw, 16px);
    transition: transform 0.45s var(--transition-timing);
}

/* Scroll up → bianco */
.header.is-pinned {
    background: var(--color-white);
}

/* Cover pages (front-page, single service/location/job) → bianco anche a top */
.header--solid {
    background: var(--color-white);
}

.header.is-unpinned {
    transform: translateY(-100%);
}

/* Logo */
.header__logo {
    width: clamp(60px, 4.667vw, 70px);
    display: block;
}

.header__logo svg {
    width: 100%;
    height: auto;
}

/* Menu — visibile solo da lg */
.header__menu {
    display: none;
    align-items: center;
    gap: clamp(16px, 1.5625vw, 30px);
    list-style: none;
    margin: 0;
    padding: 0;
}

@media (min-width: 992px) {
    .header__menu { display: flex; }
}

.header__menu a {
    display: block;
    font-family: var(--font-family-base);
    font-size: 1.1875rem;
    font-weight: 400;
    color: var(--color-navy);
    text-decoration: none;
    text-transform: capitalize;
    letter-spacing: -0.01em;
    white-space: nowrap;
    transition: color 0.2s ease;
}

.header__menu a:hover,
.header__menu .current-menu-item > a,
.header__menu a[aria-current="page"] {
    color: var(--color-accent);
}

/* Hamburger */
/* Language switch — visibile solo con menu aperto */
.header__lang-switch {
    display: none;
    list-style: none;
    padding: 0;
    margin: 0;
    margin-inline-end: 4em;
    align-items: center;
    gap: 1.5em;
    font-size: var(--fs-15);
}

body.menu-open .header__lang-switch {
    display: flex;
}

.header__lang-switch a {
    font-family: var(--font-family-base);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-decoration: none;
    opacity: 0.5;
    transition: opacity 0.2s ease;
}

.header__lang-switch a[aria-current="true"] {
    font-weight: 700;
    opacity: 1;
}

.header__menu-btn {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding-block: 0.5rem;
    padding-inline: 0;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--color-navy);
    transition: color 0.2s ease;
}

/* Linee hamburger — 55px @ 1920px */
.header__burger {
    position: relative;
    display: block;
    width: clamp(32px, 2.864vw, 55px);
    height: 11px;
}

.header__burger::before,
.header__burger::after {
    content: '';
    position: absolute;
    left: 0;
    width: 100%;
    height: 2px;
    background: currentColor;
    border-radius: 1px;
    transition: transform 0.3s var(--transition-timing);
}

.header__burger::before { top: 0; }
.header__burger::after  { bottom: 0; }

/* Burger → X quando drawer aperto */
body.menu-open .header__burger::before {
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
}
body.menu-open .header__burger::after {
    bottom: 50%;
    transform: translateY(50%) rotate(-45deg);
}

/* Nav centrale header → invisibile mentre drawer aperto */
body.menu-open .header__menu {
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

/* Lock scroll body */
body.menu-open {
    overflow: hidden;
}

/* Bordo bottom header largo come container-fluid */
body.menu-open .header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: var(--gutter-half);
    right: var(--gutter-half);
    height: 1px;
    background: var(--color-border);
}


/* ── Nav Overlay (mega-menu drawer) ───────────────────────────────────────── */

.nav-overlay__backdrop {
    position: fixed;
    inset: 0;
    z-index: 997;
    background: rgba(var(--color-navy-rgb), 0.35);
    opacity: 0;
    visibility: hidden;
    transition:
        opacity 0.3s var(--transition-timing),
        visibility 0s linear 0.3s;
}

body.menu-open .nav-overlay__backdrop {
    opacity: 1;
    visibility: visible;
    transition:
        opacity 0.3s var(--transition-timing),
        visibility 0s linear 0s;
}

.nav-overlay {
    position: fixed;
    inset-inline: 0;
    top: 0;
    z-index: 999;
    background: var(--color-white);
    max-height: 100dvh;
    overflow-y: auto;
    overscroll-behavior: contain;
    opacity: 0;
    visibility: hidden;
    transform: translateY(20px);
    transition:
        opacity 0.3s var(--transition-timing),
        transform 0.3s var(--transition-timing),
        visibility 0s linear 0.3s;
}

body.menu-open .nav-overlay {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition:
        opacity 0.3s var(--transition-timing),
        transform 0.3s var(--transition-timing),
        visibility 0s linear 0s;
}

.nav-overlay__body {
    padding-block-start: calc(var(--header-height, 72px) + var(--p-120));
}

.nav-overlay__col + .nav-overlay__col {
    border-left: 1px solid var(--color-border);
}

.nav-overlay__body .row {
    --bs-gutter-x: var(--gutter-off);
}

.nav-overlay__col {
    padding-block-end: var(--p-90);
}

.nav-overlay__eyebrow {
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0;
    text-transform: uppercase;
    color: var(--color-text-muted);
    margin: 0 0 2em;
}

.nav-overlay__menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

.nav-overlay__menu li + li {
    margin-block-start: clamp(8px, 0.62vw + 0.16rem, 16px);
}

.nav-overlay__menu a {
    display: inline-block;
    font-family: var(--font-family-base);
    font-size: var(--fs-36);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.nav-overlay__menu a:hover,
.nav-overlay__menu .current-menu-item > a,
.nav-overlay__menu a[aria-current="page"] {
    opacity: 0.55;
}

/* Footer drawer */
.nav-overlay__footer {
    border-top: 1px solid var(--color-border);
    padding-block-start: clamp(16px, 1.3vw, 25px);
    padding-block-end: max(clamp(16px, 1.3vw, 25px), env(safe-area-inset-bottom));
}

.nav-overlay__brands {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: clamp(15px, 1.04vw + 0.32rem, 25px);
}

.nav-overlay__brands img {
    display: block;
    height: clamp(20px, 1.5vw + 0.32rem, 36px);
    width: auto;
    object-fit: contain;
    filter: invert(1);
    opacity: 0.35;
}

.nav-overlay__tools {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1.4em;
    justify-content: flex-end;
    font-size: var(--fs-17);
}

.nav-overlay__tools a {
    font-family: var(--font-family-base);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.nav-overlay__tools a:hover { opacity: 0.55; }

/* Mobile: stack single column */
@media (max-width: 767px) {
    .nav-overlay__col + .nav-overlay__col {
        border-left: none;
        border-top: 1px solid var(--color-border);
        margin-block-start: clamp(20px, 4vw, 30px);
        padding-block-start: clamp(20px, 4vw, 30px);
    }


    .nav-overlay__tools {
        justify-content: flex-start;
        margin-block-start: 1rem;
    }
}


/* ── Bootstrap Buttons — override globali progetto ───────────────────────── */

.btn {
    --bs-btn-font-family:      var(--font-family-base);
    --bs-btn-font-size:        var(--fs-17);
    --bs-btn-font-weight:      600;
    --bs-btn-padding-x:        1.875rem;
    --bs-btn-padding-y:        0.765rem;
    --bs-btn-border-radius:    100px;
    --bs-btn-focus-box-shadow: var(--focus-ring);
    letter-spacing: -0.01em;
}

.btn-light {
    --bs-btn-bg:                 var(--color-white);
    --bs-btn-border-color:       var(--color-white);
    --bs-btn-color:              var(--color-navy);
    --bs-btn-hover-bg:           rgba(var(--color-white-rgb), 0.88);
    --bs-btn-hover-border-color: var(--color-white);
    --bs-btn-hover-color:        var(--color-navy);
}

.btn-secondary {
    --bs-btn-bg:                  var(--color-grey-light);
    --bs-btn-border-color:        var(--color-grey-light);
    --bs-btn-color:               var(--color-navy);
    --bs-btn-hover-bg:            #cdd1d8;
    --bs-btn-hover-border-color:  #cdd1d8;
    --bs-btn-hover-color:         var(--color-navy);
    --bs-btn-active-bg:           #c0c5cd;
    --bs-btn-active-border-color: #c0c5cd;
    --bs-btn-active-color:        var(--color-navy);
}

.btn-primary {
    --bs-btn-bg:                  var(--color-accent);
    --bs-btn-border-color:        var(--color-accent);
    --bs-btn-color:               var(--color-white);
    --bs-btn-hover-bg:            #9a0a27;
    --bs-btn-hover-border-color:  #9a0a27;
    --bs-btn-hover-color:         var(--color-white);
    --bs-btn-active-bg:           #9a0a27;
    --bs-btn-active-border-color: #9a0a27;
    --bs-btn-active-color:        var(--color-white);
}


/* ── Homepage Hero ────────────────────────────────────────────────────────── */

.hp-hero {
    position: relative;
    height: 100svh;
    min-height: 480px;
    overflow: hidden;
    background: var(--color-navy);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding-block-start: var(--p-120);
    padding-block-end: var(--gutter-half);
}

/* Gradiente overlay — pseudo-elemento sul media-bg, niente div extra */
.hp-hero__bg::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(194deg, rgba(217, 217, 217, 0) 45%, rgba(43, 43, 43, 0.9) 82%);
    mix-blend-mode: multiply;
    pointer-events: none;
}

.hp-hero__content {
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
}

.hp-hero__title {
    font-size: var(--fs-170);
    font-weight: 300;
    line-height: 0.85;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-white);
    margin: 0;
    flex: 1 1 auto;
    max-width: 11ch;
}

.hp-hero__title--image {
    max-width: none;
    line-height: 0;
}

/* Scala sul type scale del titolo testuale, così l'immagine segue lo stesso clamp */
.hp-hero__title-img {
    display: block;
    height: calc(var(--fs-170) * 3.8);
    width: auto;
    max-width: 100%;
    max-height: 60svh;
    pointer-events: none;
    user-select: none;
    -webkit-user-select: none;
    -webkit-user-drag: none;
}

.hp-hero__ctas {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    flex-shrink: 0;
    padding-block-end: 0.25rem;
}

.hp-hero__cta { min-width: 165px; }

@media (max-width: 767px) {
    .hp-hero__content {
        flex-direction: column;
        align-items: flex-start;
    }

    .hp-hero__ctas {
        padding-block-end: 0;
    }
}


/* ── Pre-footer ───────────────────────────────────────────────────────────── */

.prefooter {
    background: var(--color-blue-light);
    padding-block: 1.375rem;
}

.prefooter__content {
    font-size: var(--fs-25);
    font-weight: 400;
    color: var(--color-white);
    letter-spacing: -0.01em;
}

.prefooter__content a {
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    white-space: nowrap;
}

.prefooter__content a:hover { text-decoration: none; }

.prefooter__content a::after {
    content: '';
    display: inline-block;
    width: 0.6em;
    height: 0.6em;
    margin-inline-start: 0.2em;
    vertical-align: baseline;
    background-image: url("data:image/svg+xml,%3Csvg width='9' height='9' viewBox='0 0 9 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.13184 0C8.40792 7.13924e-05 8.63184 0.223902 8.63184 0.5V4.99902C8.63184 5.27512 8.40792 5.49895 8.13184 5.49902C7.85569 5.49902 7.63184 5.27517 7.63184 4.99902V1.70703L0.707031 8.63184L0 7.9248L6.9248 1H3.63184C3.35588 0.999811 3.13188 0.775987 3.13184 0.5C3.13184 0.223974 3.35585 0.00018825 3.63184 0H8.13184Z' fill='white'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}

.prefooter__logos {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(12px, 2.5vw, 48px);
    list-style: none;
    margin: 0;
    padding: 0;
}

.prefooter__logos img {
    max-height: 32px;
    width: auto;
    display: block;
}


/* ── Footer ───────────────────────────────────────────────────────────────── */

.footer {
    background: var(--color-navy);
    color: var(--color-white);
}

.footer__main {
    padding-block: var(--p-90);
}

/* Logo */
.footer__logo {
    display: inline-block;
    margin-block-end: var(--p-60);
}

.footer__logo .brand {
    width: 120px;
    height: auto;
    --brand-mark-color: var(--color-white);
    --brand-text-color: var(--color-white);
}

/* Eyebrow colonna */
.footer__col-label {
    font-size: var(--fs-17);
    color: var(--color-blue-light);
    margin-block-end: 0.875rem;
}

/* Nav menu colonne */
.footer__menu {
    list-style: none;
    margin: 0;
    padding: 0;
}

.footer__menu li + li { margin-block-start: 0.125rem; }

.footer__menu a {
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.6;
    color: var(--color-white);
    text-decoration: none;
    letter-spacing: -0.01em;
    transition: opacity 0.2s ease;
}

.footer__menu a:hover { opacity: 0.65; }

/* Colonna testo wysiwyg */
.footer__col-text {
    font-size: var(--fs-23);
    line-height: 1.6;
    letter-spacing: -0.01em;
    color: currentColor;
}

.footer__col-text p { margin-block-end: 0; }

/* Social */
.footer__social {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.footer__social a {
    display: inline-flex;
    align-items: baseline;
    gap: 0.25em;
    font-size: var(--fs-23);
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-white);
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.footer__social a span[aria-hidden] {
    flex-shrink: 0;
}

.footer__social a:hover { opacity: 0.65; }

/* Colophon */
.footer__colophon {
    border-block-start: 1px solid rgba(var(--color-white-rgb), 0.15);
    padding-block: 1.25rem;
}

.footer__copyright {
    font-size: var(--fs-15);
    color: var(--color-grey-light);
    letter-spacing: -0.01em;
    margin: 0;
}

.footer__legal-menu {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0 1.5rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.footer__legal-menu a {
    font-size: var(--fs-15);
    color: var(--color-grey-light);
    text-decoration: none;
    letter-spacing: -0.01em;
    white-space: nowrap;
    transition: opacity 0.2s ease;
}

.footer__legal-menu a:hover { opacity: 0.65; }


/* =============================================================================
   Flexible Content — Moduli
   ============================================================================= */


/* ── Page Intro ───────────────────────────────────────────────────────────── */

.page-intro {
    padding-block-start: var(--p-head);
    padding-block-end: var(--p-60);
}

.page-intro__title {
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 1.1;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
}

.page-intro__divider {
    border: 0;
    border-top: 1px solid #CFCFCF;
    margin: 0 0 var(--p-60);
    opacity: 1;
}

.page-intro__eyebrow {
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0;
    text-transform: uppercase;
    color: var(--color-accent);
    margin: 0;
}

.page-intro__headline {
    font-size: var(--fs-40);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}

.page-intro__headline p { margin: 0; }
.page-intro__headline p + p { margin-block-start: 1em; }

.page-intro__text--has-headline { margin-top: 1.2em; }


/* ── Full-Width Image ─────────────────────────────────────────────────────── */

.fullwidth-image { display: block; }

.fullwidth-image__media {
    aspect-ratio: 2 / 1;
    min-height: 400px;
    overflow: hidden;
}

/* Nasconde l'immagine quando il video è in riproduzione */
.fullwidth-image__fallback { display: none; }


/* ── Rich Text ────────────────────────────────────────────────────────────── */

.editorial { padding-block: var(--p-90); }

.editorial__title {
    font-size: var(--fs-36);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: currentcolor;
    margin: 0 0 1em;
}


/* ── Gallery ──────────────────────────────────────────────────────────────── */

.gallery { padding-block: var(--p-60); }

.contact-map-section + .gallery { padding-block-start: calc(var(--gutter-in) * 2); }

.gallery__swiper { overflow: hidden; }

.gallery__item {
    display: block;
    aspect-ratio: 3 / 2;
    overflow: hidden;
}

.gallery__media { height: 100%; }

.gallery__nav {
    display: flex;
    gap: 0.75rem;
    margin-block-start: 1.5rem;
}

.gallery__btn {
    width: clamp(2.25rem, 0.91vw + 2.04rem, 3.125rem);
    height: clamp(2.25rem, 0.91vw + 2.04rem, 3.125rem);
    border-radius: 50%;
    border: 1px solid var(--color-border-ui);
    background: transparent;
    color: var(--color-navy);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: border-color var(--transition-base), background-color var(--transition-base), color var(--transition-base);
}

.gallery__btn:hover {
    border-color: var(--color-navy);
    background: var(--color-navy);
    color: var(--color-white);
}

.gallery__btn svg {
    width: clamp(0.625rem, 0.39vw + 0.53rem, 1rem);
    height: auto;
    flex-shrink: 0;
}

.gallery__btn--prev svg { transform: rotate(180deg); }


/* ── Text Section ─────────────────────────────────────────────────────────── */

/* ── Quote ────────────────────────────────────────────────────────────────── */

.quote { padding-block: var(--p-90); }

.quote__media { aspect-ratio: 1 / 1; }

.quote__icon {
    width: clamp(2.625rem, 1.29vw + 2.32rem, 3.875rem);
    height: clamp(2.625rem, 1.29vw + 2.32rem, 3.875rem);
    background: var(--color-navy);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-block-end: var(--p-60);
}

.quote__icon svg {
    width: clamp(0.875rem, 0.45vw + 0.77rem, 1.3125rem);
    height: auto;
}

.quote__text {
    font-size: var(--fs-36);
    font-weight: 300;
    line-height: 1.4;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
    padding: 0;
}

.quote__text p { margin: 0; }

.quote__name {
    display: block;
    font-style: normal;
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.57;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin-block-end: 0.25rem;
}

.quote__role {
    font-family: var(--font-family-label);
    font-size: var(--fs-15);
    font-weight: 500;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-blue-light);
    margin: 0;
}


/* ── Content Teaser ───────────────────────────────────────────────────────── */

.content-teaser {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    padding-block: var(--p-120);
    min-height: 50vw;
    display: flex;
    align-items: center;
}

.content-teaser__bg {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.content-teaser__box {
    background: var(--color-white);
    padding: var(--p-60);
}

.content-teaser__eyebrow {
    color: var(--color-accent);
    margin: 0 0 var(--p-120);
}

.content-teaser__title {
    font-size: var(--fs-55);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-wrap: balance;
    margin: 0 0 0.36em;
}

.content-teaser__text {
    font-size: var(--fs-23);
    font-weight: 300;
    line-height: 1.57;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
}

.content-teaser__text p { margin: 0; }

.content-teaser__cta { margin-block-start: var(--p-60); }


/* ── Featured Project ─────────────────────────────────────────────────────── */

.featured-project {
    position: relative;
    padding-block-start: var(--p-160);
}

.featured-project__header { margin-block-end: var(--p-40); }

.featured-project__title {
    font-size: var(--fs-64);
    font-weight: 300;
    line-height: 1;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
    transition: color var(--transition-base);
}

.featured-project:has(.stretched-link:hover) .featured-project__title {
    color: var(--color-accent);
}

.featured-project__link {
    color: inherit;
    text-decoration: none;
}

.featured-project__meta { --bs-gutter-x: 2.5rem; }

.featured-project__meta-label {
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: normal;
    color: var(--color-accent);
    margin-bottom: 0.5em;
}

.featured-project__meta-value {
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.56;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0;
}

.featured-project__media {
    aspect-ratio: 2 / 1;
    min-height: 400px;
}


/* ── Projects Grid ────────────────────────────────────────────────────────── */

.projects-grid { padding-block: var(--p-120); }

.projects-grid__items {
    --bs-gutter-y: var(--p-90);
}

.projects-grid__footer { display: none; }

@media (max-width: 767px) {
    .projects-grid__header .projects-grid__link-all { display: none; }

    .projects-grid__footer {
        display: block;
        margin-block-start: var(--p-120);
        text-align: center;
    }
}

.projects-grid__header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-block-end: var(--p-60);
}

.projects-grid__heading {
    font-size: var(--fs-36);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
}


/* ── CTA Tagline ──────────────────────────────────────────────────────────── */

.cta-tagline { padding-block-start: var(--p-160); padding-block-end: var(--p-90); }

.cta-tagline__title {
    font-size: var(--fs-55);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-wrap: balance;
    margin-block-end: var(--p-90);
}

.cta-tagline__title strong {
    color: var(--color-accent);
    font-weight: 300;
}

.cta-tagline__card {
    position: relative;
    border: 1px solid var(--color-border-ui);
    aspect-ratio: 2 / 1;
    display: flex;
    align-items: center;
    padding: var(--p-40);
}

.cta-tagline__card-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-family: var(--font-family-base);
    font-size: var(--fs-25);
    font-weight: 400;
    line-height: 1.1;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    text-decoration: none;
    text-wrap: balance;
}

.cta-tagline__card-link::after {
    position: absolute;
    inset: 0;
    content: '';
}

.cta-tagline__arrow {
    width: 0.52em;
    height: auto;
    color: var(--color-accent);
    flex-shrink: 0;
    transition: transform var(--transition-base);
}

.cta-tagline__card:hover .cta-tagline__arrow { transform: translate(2px, -2px); }

/* ── Services BIM ──────────────────────────────────────────────────────────── */

.services-grid {
    padding-block: var(--p-90);
}

.services-bim {
    background-color: var(--color-bg-section);
    padding-block: var(--p-90);
}

.services-bim__eyebrow {
    font-size: var(--fs-17);
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1.2;
    color: var(--color-accent);
    margin-bottom: var(--p-120);
}

.services-bim__headline {
    font-size: var(--fs-55);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin-bottom: var(--p-90);
}

.services-bim__headline a {
    color: var(--color-accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    white-space: nowrap;
}

.services-bim__headline a:hover { text-decoration: none; }

.services-bim__headline a::after {
    content: '';
    display: inline-block;
    width: 0.45em;
    height: 0.45em;
    margin-inline-start: 0.2em;
    vertical-align: baseline;
    background-image: url("data:image/svg+xml,%3Csvg width='9' height='9' viewBox='0 0 9 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.13184 0C8.40792 7.13924e-05 8.63184 0.223902 8.63184 0.5V4.99902C8.63184 5.27512 8.40792 5.49895 8.13184 5.49902C7.85569 5.49902 7.63184 5.27517 7.63184 4.99902V1.70703L0.707031 8.63184L0 7.9248L6.9248 1H3.63184C3.35588 0.999811 3.13188 0.775987 3.13184 0.5C3.13184 0.223974 3.35585 0.00018825 3.63184 0H8.13184Z' fill='%23BA0C2F'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}


/* ── Services Grid ─────────────────────────────────────────────────────────── */


.services-grid__grid {
    display: grid;
    grid-template-columns: 1fr;
    row-gap: var(--p-60);
}

/* Desktop: 3 colonne + subgrid sulle righe → bande (media, categoria, intro,
   lista) allineate tra le colonne, le liste partono alla stessa altezza */
@media (min-width: 992px) {
    .services-grid__grid {
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: auto auto auto auto;
        column-gap: var(--gutter-in);
        row-gap: 0;
    }

    .services-grid__col {
        display: grid;
        grid-row: 1 / -1;
        grid-template-rows: subgrid;
    }
}

.services-grid__media {
    aspect-ratio: 6 / 7;
    margin-bottom: clamp(15px, 1.94vw + 0.48rem, 45px);
    background-color: var(--color-bg-alt);
}

/* Respiro sul testo (non sull'immagine), come il vecchio .services-grid__body */
.services-grid__category,
.services-grid__intro,
.services-list {
    max-width: 96%;
}

.services-grid__category {
    font-size: var(--fs-40);
    font-weight: 300;
    line-height: 0.85;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    text-wrap: balance;
    color: var(--color-navy);
    margin-bottom: clamp(10px, 1.3vw + 0.32rem, 30px);
}

.services-grid__intro {
    font-size: var(--fs-17);
    font-weight: 300;
    line-height: 1.4;
    color: var(--color-navy);
    margin-bottom: clamp(17px, 2.14vw + 0.56rem, 50px);
}

.services-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.services-list__item + .services-list__item {
    border-top: 1px solid var(--color-border-ui);
}

.services-list__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.7em 0;
    font-size: var(--fs-20);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-decoration: none;
    transition: color var(--transition-base);
}

.services-list__link:hover {
    color: var(--color-accent);
}

.services-list__arrow {
    width: 0.7em;
    height: auto;
    color: var(--color-accent);
    flex-shrink: 0;
    transition: transform var(--transition-base);
}

.services-list__link:hover .services-list__arrow {
    transform: translate(2px, -2px);
}


/* ── Section Headline ──────────────────────────────────────────────────────── */

.section-headline {
    font-size: var(--fs-55);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-wrap: balance;
}

.section-headline strong,
.section-headline em {
    font-weight: 300;
    font-style: normal;
    color: var(--color-accent);
}

.section-headline a {
    color: var(--color-accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

.section-headline a:hover { text-decoration: none; }

.section-headline a::after {
    content: '';
    display: inline-block;
    width: 0.4em;
    height: 0.4em;
    margin-inline-start: 0.15em;
    vertical-align: baseline;
    background-image: url("data:image/svg+xml,%3Csvg width='9' height='9' viewBox='0 0 9 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.13184 0C8.40792 7.13924e-05 8.63184 0.223902 8.63184 0.5V4.99902C8.63184 5.27512 8.40792 5.49895 8.13184 5.49902C7.85569 5.49902 7.63184 5.27517 7.63184 4.99902V1.70703L0.707031 8.63184L0 7.9248L6.9248 1H3.63184C3.35588 0.999811 3.13188 0.775987 3.13184 0.5C3.13184 0.223974 3.35585 0.00018825 3.63184 0H8.13184Z' fill='%23BA0C2F'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}

/* modifier: testo bianco su sfondi scuri */
.section-headline--light { color: var(--color-white); }
.section-headline--light strong,
.section-headline--light em { color: var(--color-white); opacity: 0.6; }


/* ── HP Double Teaser ──────────────────────────────────────────────────────── */

.hp-teaser {
    padding-block: var(--p-120);
}

.hp-teaser__headline {
    margin-bottom: var(--p-60);
}

.hp-teaser__card {
    position: relative;
    overflow: hidden;
}

.hp-teaser__media {
    aspect-ratio: 4 / 3;
    margin-bottom: 1.375em;
    overflow: hidden;
}

.hp-teaser__media img {
    transition: transform 0.45s var(--transition-timing);
}

.hp-teaser__card:has(.stretched-link:hover) .hp-teaser__media img {
    transform: scale(1.04);
}

.hp-teaser__card:has(.stretched-link:hover) .hp-teaser__link {
    color: var(--color-accent);
}

.hp-teaser__link {
    display: flex;
    align-items: center;
    gap: 0.5em;
    font-size: var(--fs-25);
    font-weight: 400;
    line-height: 1.1;
    letter-spacing: 0.01em;
    color: var(--color-navy);
    text-decoration: none;
}

.hp-teaser__link svg {
    flex-shrink: 0;
    width: 0.7em;
    height: auto;
    color: var(--color-accent);
}


/* ── HP News ───────────────────────────────────────────────────────────────── */

.hp-news {
    padding-block: var(--p-120);
    background-color: var(--color-bg-section);
}

.hp-news__headline {
    margin-bottom: var(--p-60);
}

.news-card {
    position: relative;
}

.news-card__media {
    aspect-ratio: 1 / 1;
    margin-bottom: 1rem;
    overflow: hidden;
    background-color: var(--color-grey-light);
}

/* F&M Post — singolo: cover verticale piccola sotto il titolo */
.single-fm-post__cover {
    aspect-ratio: 5 / 7;
    max-width: 28rem;
    margin-inline: auto;
    margin-bottom: var(--p-60);
}

/* F&M Post — singolo: spazio sopra il bottone PDF */
.single-fm-post__download {
    margin-top: var(--p-40);
}

/* F&M Post: gutter archivio come progetti */
.archive-fm-post__grid {
    --bs-gutter-y: var(--p-160);
}

/* Cover verticale 5/7 (vecchio sito: padding-top 140%), no bg — archivio + correlati */
.fm-cover-grid .news-card__media {
    aspect-ratio: 5 / 7;
    background-color: transparent;
}

.news-card__media img {
    transition: transform 0.45s var(--transition-timing);
}

.news-card:has(.stretched-link:hover) .news-card__media img {
    transform: scale(1.04);
}

.news-card__date {
    display: block;
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-text-muted);
    margin: 0 0 0.5em;
}

.news-card__title {
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.57;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0;
    transition: color var(--transition-base);
}

.news-card:has(.stretched-link:hover) .news-card__title {
    color: var(--color-accent);
}

.news-card__link {
    color: inherit;
    text-decoration: none;
}


/* ── Archive News ─────────────────────────────────────────────────────────── */

/* — Header — */

.archive-news__head {
    padding-block-start: var(--p-head);
    padding-block-end: var(--p-60);
}

.archive-news__title {
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 0.85;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
}

.archive-news__subtitle {
    font-size: 1.1875rem; /* 19px — Figma spec */
    font-weight: 300;
    line-height: 1.4;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-wrap: balance;
    max-width: 40ch;
    margin: 0;
}

/* — Featured hero — */

.archive-news__featured {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    padding-block: var(--gutter-half);
    min-height: clamp(320px, 36vw, 580px);
    display: flex;
    align-items: center;
}

.archive-news__featured-bg {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.archive-news__featured-box {
    background: var(--color-white);
    padding: var(--p-60);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.archive-news__featured-badge {
    font-family: var(--font-family-base);
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.57;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
}

.archive-news__featured-title {
    font-size: var(--fs-40);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0 0 0.36em;
    text-wrap: balance;
}

.archive-news__featured-date {
    display: block;
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    text-transform: uppercase;
    color: var(--color-text-muted);
    margin: 0 0 var(--p-60);
}

/* — Latest 8 — */

.archive-news__latest {
    padding-block: var(--p-120);
}

.archive-news__grid {
    --bs-gutter-y: var(--p-120);
}

.archive-news__section-label {
    display: block;
    font-family: var(--font-family-base);
    font-weight: 300;
    font-size: var(--fs-36);
    line-height: 1.2;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
}

/* — Archive list — */

.archive-news__archive {
    background-color: var(--color-bg-section);
    padding-block: var(--p-90);
}

.archive-news__archive-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 2rem;
}

.archive-news__archive-label {
    display: block;
    font-family: var(--font-family-base);
    font-weight: 300;
    font-size: var(--fs-36);
    line-height: 1.2;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
}

.archive-news__year-filter {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.archive-news__year-label {
    font-family: var(--font-family-label);
    font-weight: 500;
    font-size: 1.0625rem;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-accent);
}

.archive-news__year-select {
    appearance: none;
    background-color: transparent;
    border: none;
    border-bottom: 1px solid var(--color-blue-light);
    border-radius: 0;
    padding: 0.125rem 1.375rem 0.125rem 0;
    font-family: var(--font-family-base);
    font-weight: 400;
    font-size: 1.0625rem;
    line-height: 1.2;
    color: var(--color-navy);
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg width='8' height='10' viewBox='0 0 8 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.32858 9.35355C3.52384 9.54882 3.84042 9.54882 4.03568 9.35355L7.21766 6.17157C7.41293 5.97631 7.41293 5.65973 7.21766 5.46447C7.0224 5.2692 6.70582 5.2692 6.51056 5.46447L3.68213 8.29289L0.853702 5.46447C0.65844 5.2692 0.341857 5.2692 0.146595 5.46447C-0.0486669 5.65973 -0.0486669 5.97631 0.146595 6.17157L3.32858 9.35355ZM3.68213 0L3.18213 2.18557e-08L3.18213 9L3.68213 9L4.18213 9L4.18213 -2.18557e-08L3.68213 0Z' fill='%23BA0C2F'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0 center;
    background-size: 8px 10px;
}

.archive-news__list {
    transition: opacity 0.2s ease;
}

.archive-news__list.is-loading {
    opacity: 0.4;
    pointer-events: none;
}

.archive-news__item {
    position: relative;
}

.archive-news__item + .archive-news__item {
    border-top: 1px solid var(--color-border);
}

.archive-news__item:last-child {
    border-bottom: 1px solid var(--color-border);
}

.archive-news__item-inner {
    padding-block: var(--p-40);
}

.archive-news__item:hover {
    color: var(--color-accent);
}

.archive-news__item-date {
    font-family: var(--font-family-label);
    font-size: var(--fs-15);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
    white-space: nowrap;
    transition: color var(--transition-base);
}

.archive-news__item-link:hover .archive-news__item-date {
    color: var(--color-accent);
}

.archive-news__item-title {
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.4;
}

.archive-news__item-arrow {
    flex-shrink: 0;
    opacity: 0;
    transform: translate(-4px, 4px);
    transition: opacity var(--transition-base), transform var(--transition-base);
}

.archive-news__item-link:hover .archive-news__item-arrow {
    opacity: 1;
    transform: translate(0, 0);
}

.archive-news__empty {
    color: var(--color-text-muted);
    padding-block: var(--p-60);
}

/* — Responsive — */

@media (max-width: 767px) {
.archive-news__item-link {
        grid-template-columns: 1fr auto;
        grid-template-rows: auto auto;
        gap: 0.25rem 1rem;
    }

    .archive-news__item-date {
        grid-column: 1 / -1;
    }
}

/* ── Single News ─────────────────────────────────────────────────────────── */

.single-news__header {
    padding-block-start: var(--p-head-single);
    padding-block-end: var(--p-90);
    text-align: center;
}

.single-news__title {
    font-family: var(--font-family-base);
    font-weight: 300;
    font-size: var(--fs-55);
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-wrap: balance;
    margin-inline: auto;
    margin-bottom: 1.25rem;
}

.single-news__date {
    display: block;
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.single-news__hero {
    aspect-ratio: 16 / 7;
}

.single-news__body {
    padding-block: var(--p-90);
}

.single-news__latest {
    padding-block: var(--p-120);
    background-color: var(--color-bg-section);
}

.single-news__latest-label {
    font-family: var(--font-family-base);
    font-weight: 300;
    font-size: var(--fs-40);
    line-height: 0.85;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin-bottom: var(--p-90);
}

/* ── HP Promo ──────────────────────────────────────────────────────────────── */

.hp-promo {
    padding-block-start: var(--p-90);
    padding-block-end: var(--gutter-half);
    background-color: var(--color-bg-section);
}

.hp-promo__eyebrow {
    margin-bottom: var(--p-120);
    color: var(--color-accent);
}

.hp-promo__text {
    padding-bottom: var(--p-90);
}

.hp-promo__media {
    aspect-ratio: 2 / 1;
}

.hp-promo__media video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}


/* ── HP Services ───────────────────────────────────────────────────────────── */

.hp-services {
    padding-block: var(--p-160);
}

.hp-services__eyebrow {
    color: var(--color-accent);
    margin-bottom: var(--p-60);
}

.hp-services__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.hp-services__item {
    position: relative;
    padding-block: clamp(15px, 1.823vw, 35px);
}

.hp-services__item + .hp-services__item {
    border-top: 1px solid var(--color-border);
}

/* stretched-link si aggancia a .hp-services__item (position: relative) */
.hp-services__item > .row,
.hp-services__item > .row > [class*="col"] {
    position: static;
}

.hp-services__number {
    font-family: var(--font-family-label);
    font-weight: 500;
    font-size: var(--fs-17);
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-blue-light);
}

.hp-services__name {
    font-size: var(--fs-86);
    font-weight: 300;
    line-height: 1.22;
    text-transform: uppercase;
    color: var(--color-navy);
    transition: color var(--transition-base);
}

.hp-services__link {
    text-decoration: none;
    color: inherit;
}

.hp-services__media {
    aspect-ratio: 2 / 1;
    overflow: hidden;
    position: relative;
}

.hp-services__thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    backface-visibility: hidden;
    transition: transform 0.5s var(--transition-timing);
}

.hp-services__item:has(.stretched-link:hover) .hp-services__name {
    color: var(--color-accent);
}

.hp-services__item:has(.stretched-link:hover) .hp-services__thumb {
    transform: scale(1.05);
}


/* ── Single Team ────────────────────────────────────────────────────────────── */

.single-team {
    padding-block-start: var(--p-head);
    padding-block-end: var(--gutter-half);
}

.single-team__media {
    aspect-ratio: 1 / 1;
}

.single-team__name {
    font-size: var(--fs-86);
    font-weight: 300;
    line-height: 0.9;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
}

.single-team__role {
    font-family: var(--font-family-label);
    font-weight: 500;
    font-size: var(--fs-17);
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-accent);
    margin-top: 1.8em;
    margin-bottom: 0;
}

.single-team__content {
    margin-top: var(--p-90);
}

.single-team__col-inner {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    height: 100%;
}

.single-team__email {
    margin-top: 1.6em;
    font-size: var(--fs-17);
}

.single-team__btn {
    margin-top: var(--p-60);
}

.single-team__back {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: var(--p-90);
    font-family: var(--font-family-base);
    font-weight: 600;
    font-size: var(--fs-17);
    line-height: 1;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-decoration: none;
    transition: opacity var(--transition-base);
}

.single-team__back:hover {
    opacity: 0.6;
}


/* ── Single Job ─────────────────────────────────────────────────────────────── */

.single-job__hero-media {
    height: clamp(12.5rem, 15.53vw + 8.86rem, 27.5rem);
}

.single-job {
    padding-top: 1rem;
    padding-bottom: var(--p-120);
}

.single-job__back {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: var(--p-90);
    font-family: var(--font-family-base);
    font-weight: 400;
    font-size: 0.8125rem;
    line-height: 1rem;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-decoration: none;
    transition: opacity var(--transition-base);
}

.single-job__back:hover {
    opacity: 0.6;
}

.single-job__title {
    font-size: var(--fs-64);
    font-weight: 300;
    line-height: 1;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    text-wrap: balance;
    color: var(--color-navy);
    margin: 0;
}

.single-job__location {
    font-family: var(--font-family-label);
    font-weight: 500;
    font-size: var(--fs-17);
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-accent);
    margin-top: 1.765em;
    margin-bottom: 0;
}

.single-job__divider {
    border: none;
    border-top: 1px solid #CFCFCF;
    margin-block: var(--p-60);
}

.single-job__apply {
    margin-top: var(--p-60);
}


/* ── Page Jobs — Listing ─────────────────────────────────────────────────────── */

.page-jobs-list {
    padding-block: var(--p-160);
}

.page-jobs-list__eyebrow {
    font-family: var(--font-family-label);
    font-weight: 500;
    font-size: var(--fs-15);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-accent);
    margin-bottom: var(--p-60);
}

.page-jobs-list__items {
    list-style: none;
    margin: 0;
    padding: 0;
}

.page-jobs-list__items li + li {
    border-top: 1px solid #CFCFCF;
}

.job-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    padding-block: clamp(1.25rem, 2.08vw, 2.5rem);
    text-decoration: none;
    color: inherit;
    transition: opacity var(--transition-base);
}

.job-item:hover {
    opacity: 0.6;
}

.job-item__title {
    display: block;
    font-size: var(--fs-40);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}

.job-item__location {
    display: block;
    font-size: var(--fs-17);
    font-weight: 400;
    line-height: 1.4;
    color: var(--color-navy);
    margin-top: 0.4em;
}

.job-item__arrow {
    flex-shrink: 0;
    width: clamp(1.75rem, 2.4vw, 2.875rem);
    height: auto;
    color: var(--color-accent);
}


/* ── Page Certifications ─────────────────────────────────────────────────────── */

.page-certs-list {
    padding-block: var(--p-120);
}

.page-certs-list__headline {
    margin-bottom: var(--p-60);
}

.page-certs-list__text {
    margin-bottom: var(--p-60);
}

.page-certs-list__items {
    list-style: none;
    margin: 0;
    padding: 0;
}

.page-certs-list__items li + li {
    border-top: 1px solid var(--color-border);
}

.cert-item {
    display: flex;
    align-items: center;
    gap: var(--p-60);
    padding-block: 2.75rem;
}

.cert-item__icon {
    flex-shrink: 0;
    width: clamp(4rem, 4.53vw + 2.94rem, 8.375rem);
    aspect-ratio: 1;
    background: var(--color-grey-light);
    display: flex;
    align-items: center;
    justify-content: center;
}

.cert-item__icon-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.cert-item__text {
    flex: 1;
    font-size: var(--fs-23);
    font-weight: 300;
    line-height: 1.565;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}


/* ── Page Company ─────────────────────────────────────────────────────────── */

.company-marquee {
    overflow: hidden;
}

.company-marquee__track {
    display: flex;
    gap: var(--gutter-in);
    width: max-content;
    animation: company-marquee-scroll 60s linear infinite;
}

.company-marquee__item {
    flex-shrink: 0;
    height: clamp(18.75rem, 10.35vw + 16.32rem, 28.75rem);
}

.company-marquee__item img {
    height: 100%;
    width: auto;
    display: block;
}

@keyframes company-marquee-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

.company-text {
    padding-block: var(--p-120);
}

.company-text__cta {
    margin-top: var(--p-60);
}

.company-orgs {
    padding-block: var(--p-120);
}

.company-orgs__headline {
    font-size: var(--fs-40);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin-bottom: var(--p-90);
}

.company-orgs__headline p { margin: 0; }
.company-orgs__headline p + p { margin-block-start: 1em; }
.company-orgs__headline strong { color: var(--color-accent); font-weight: inherit; }

.company-links {
    padding-block: var(--p-160);
    background-color: var(--color-bg-section);
}

.company-links__headline {
    margin-bottom: var(--p-90);
}

.company-link-card {
    position: relative;
    overflow: hidden;
}

.company-link-card__media {
    aspect-ratio: 4 / 3;
    margin-bottom: 1.375em;
    overflow: hidden;
}

.company-link-card__media img {
    transition: transform 0.45s var(--transition-timing);
}

.company-link-card:has(.stretched-link:hover) .company-link-card__media img {
    transform: scale(1.04);
}

.company-link-card:has(.stretched-link:hover) .company-link-card__label a {
    color: var(--color-accent);
}

.company-link-card__label a {
    display: flex;
    align-items: center;
    gap: 0.5em;
    font-size: var(--fs-25);
    font-weight: 400;
    line-height: 1.1;
    letter-spacing: 0.01em;
    color: var(--color-navy);
    text-decoration: none;
    transition: color var(--transition-base);
}

.company-link-card__label svg {
    flex-shrink: 0;
    width: 0.7em;
    height: auto;
    color: var(--color-accent);
}

.company-locations {
    padding-block: var(--p-160);
}

.company-locations__headline {
    margin-bottom: var(--p-90);
}

.company-locations__group + .company-locations__group {
    margin-top: var(--p-90);
}

.company-locations__eyebrow {
    margin-bottom: var(--p-40);
    color: var(--color-accent);
}

.company-location-card {
    position: relative;
    border: 1px solid var(--color-border-ui);
    aspect-ratio: 2 / 1;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding: var(--p-40);
}

.company-location-card__link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-family: var(--font-family-base);
    font-size: var(--fs-25);
    font-weight: 400;
    line-height: 1.1;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    text-decoration: none;
    transition: color var(--transition-base);
}

.company-location-card__link::after {
    position: absolute;
    inset: 0;
    content: '';
}

.company-location-card__arrow {
    width: 0.52em;
    height: auto;
    color: var(--color-accent);
    flex-shrink: 0;
    transition: transform var(--transition-base);
}

.company-location-card:hover .company-location-card__link { color: var(--color-accent); }
.company-location-card:hover .company-location-card__arrow { transform: translate(2px, -2px); }


/* ── Page Team — Groups ─────────────────────────────────────────────────────── */

.page-team-groups {
    padding-block: var(--p-120);
}

.page-team-groups__group + .page-team-groups__group {
    margin-top: var(--p-160);
}

.page-team-groups__eyebrow {
    margin-bottom: var(--p-60);
    font-family: var(--font-family-label);
    font-style: normal;
    font-weight: 500;
    font-size: var(--fs-17);
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-accent);
}

.page-team-groups__grid {
    --bs-gutter-y: var(--p-90);
}

.team-card {
    position: relative;
}

.team-card__media {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background-color: var(--color-grey-light);
}

.team-card__body {
    margin-top: 1.2em;
}


.team-card__name {
    font-size: var(--fs-25);
    font-weight: 400;
    line-height: 1.44;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0;
}

.team-card__name a {
    color: inherit;
    text-decoration: none;
}

.team-card__role {
    font-size: var(--fs-15);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin-top: 0.3em;
    margin-bottom: 0;
}


/* ── Page Group ─────────────────────────────────────────────────────────────── */

.group-content {
    background-color: var(--color-bg-section);
    padding-block: var(--p-120);
}

.group-content__logos {
    margin-block: var(--p-120);
}

.group-logo-card {
    border: 1px solid var(--color-border-ui);
    aspect-ratio: 3 / 2;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--p-60);
}

.group-logo-card__img {
    max-height: clamp(2rem, 2.6vw + 1.3rem, 4rem);
    width: auto;
    object-fit: contain;
    filter: brightness(0.33);
    transition: filter var(--transition-base);
}

.group-logo-card__link:hover .group-logo-card__img {
    filter: brightness(0.15);
}

.group-stats__list {
    list-style: none;
    margin: 0;
    padding: 0;
    padding-top: var(--p-90);
}

.group-stat {
    display: flex;
    align-items: baseline;
    gap: var(--p-60);
    padding-block: var(--p-40);
}

.group-stat + .group-stat {
    border-top: 1px solid var(--color-border);
}

.group-stat__number {
    flex-shrink: 0;
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 1;
    letter-spacing: -0.03em;
    color: var(--color-navy);
    width: clamp(6rem, 15vw, 16rem);
}

.group-stat__label {
    font-size: var(--fs-23);
    font-weight: 300;
    line-height: 1.3;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}

.group-team {
    padding-block: var(--p-120);
}

.group-team__headline {
    margin-bottom: var(--p-90);
    text-wrap: balance;
}

.group-team__chart-wrap {
    width: 100%;
}


/* ── Edit Post Link ─────────────────────────────────────────────────────────── */

.post-edit-link {
    position: fixed;
    z-index: 9999;
    bottom: 0;
    right: 0;
    padding: 10px 18px;
    background-color: #3c3c3c;
    color: var(--color-white);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    border-top-left-radius: 8px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
    transition: background-color 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}

.post-edit-link:hover,
.post-edit-link:focus-visible {
    color: var(--color-white);
    background-color: #222;
}

/* ── Storia / History ──────────────────────────────────────────────────────── */
.history-timeline {
    position: relative;
    padding-block: var(--p-90);
}

.history__timeline-bar {
    position: absolute;
    top: var(--p-60);
    left: 50%;
    transform: translateX(-50%);
    width: 1px;
    height: calc(100% - var(--p-120));
    background-color: var(--color-border);
    z-index: -1;
    pointer-events: none;
}

.history__timeline-bar::after {
    content: "";
    position: sticky;
    top: 0;
    display: block;
    height: 23vh;
    width: 2px;
    margin-left: -0.5px;
    background-color: var(--color-accent);
}

.history-item {
    padding-block: var(--p-90);
}

.history-item:hover .history-item__year,
.history-item:hover .history-item__title { color: var(--color-accent); }

.history-item__title {
    font-size: var(--fs-36);
    font-weight: 400;
    line-height: 1.4;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin-bottom: 0.5rem;
}

.history-item__text {
    font-size: var(--fs-23);
    font-weight: 300;
    line-height: 1.57;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}

.history-item__media {
    margin-top: var(--p-40);
    aspect-ratio: 3/2;
}

.history-item__year {
    font-size: var(--fs-120);
    font-weight: 300;
    line-height: 1.22;
    color: var(--color-navy);
}

/* ─────────────────────────────────────────────────────────────────────────────
   SINGLE LOCATION
   ───────────────────────────────────────────────────────────────────────────── */

.single-location__hero {
    aspect-ratio: 16 / 7;
    min-height: 280px;
}

.single-location__header {
    padding-block-start: var(--p-head);
    padding-block-end: 0;
}

/* Con l'hero sopra, l'aria sotto l'header trasparente la dà già l'immagine:
   --p-head qui raddoppierebbe lo stacco. Le sedi senza immagine di copertina
   aprono invece con l'eyebrow, e quelle il --p-head lo vogliono. */
.single-location__hero + .single-location__header {
    padding-block-start: var(--p-90);
}

.single-location__eyebrow {
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-accent);
    margin: 0 0 0.5em;
}

.single-location__title {
    font-size: var(--fs-86);
    font-weight: 300;
    line-height: 0.9;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
    border-bottom: 1px solid #CFCFCF;
    padding-block-end: var(--p-40);
    margin-block-end: 0;
}


.single-location__body {
    padding-block: var(--p-90);
}

.single-location__info {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: calc(20 / 17 * 1em);
    font-size: var(--fs-17);
    font-weight: 300;
    line-height: 1.2;
    color: var(--color-navy);
}

.single-location__info-item dt {
    font-weight: 600;
}

.single-location__info-item dd {
    margin: 0;
}

.single-location__info-item dd a {
    color: inherit;
    text-decoration: none;
}

.single-location__info-item dd a:hover { color: var(--color-accent); }

/* ─────────────────────────────────────────────────────────────────────────────
   CONTACT
   ───────────────────────────────────────────────────────────────────────────── */

/* ── Header ─────────────────────────────────────────────────────────────────── */

.contact-header {
    padding-block-start: var(--p-head);
    padding-block-end: var(--p-60);
}

.contact-header__title {
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 0.9;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
}


.contact-header__intro {
    font-size: 1.1875rem;
    font-weight: 300;
    line-height: 1.4;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-wrap: balance;
    max-width: 40ch;
    margin: 0;
}

/* ── Map ─────────────────────────────────────────────────────────────────────── */

.contact-map {
    width: 100%;
    display: block;
    aspect-ratio: 2 / 1;
    min-height: 320px;
}

.contact-map__placeholder {
    height: 100%;
    background: var(--color-grey-light);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-muted);
    font-size: var(--fs-17);
}

#contact-map a[href^="https://maps.google.com/maps"],
#contact-map .gm-style-cc {
    display: none !important;
}

/* ── Sedi label ──────────────────────────────────────────────────────────────── */

.contact-sedi__label {
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-accent);
    margin: 0 0 var(--p-60);
}

/* ── Gruppo — fascia fullwidth alternata ─────────────────────────────────────── */

.contact-group {
    padding-block: var(--p-120);
}

.contact-group--first {
    padding-block-start: var(--gutter-half);
}

.contact-group:nth-child(even) {
    background: #F6F6F6;
}

.contact-group__name {
    font-size: var(--fs-64);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
    border-bottom: 1px solid #CFCFCF;
    padding-block-end: var(--p-40);
    margin-block-end: 3.375rem;
}

/* ── Location card ───────────────────────────────────────────────────────────── */

.contact-location-card {
    display: flex;
    flex-direction: column;
}

.contact-location-card__city {
    font-size: var(--fs-36);
    font-weight: 300;
    line-height: 0.85;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0;
}

.contact-location-card__info {
    font-size: var(--fs-23);
    font-weight: 300;
    line-height: 1.4;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin-block-start: calc(18 / 23 * 1em);
    margin-block-end: calc(30 / 23 * 1em);
}

.contact-location-card__info a {
    color: inherit;
    text-decoration: none;
}

.contact-location-card__info a:hover {
    color: var(--color-accent);
}

.contact-location-card__link {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    font-size: var(--fs-17);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-decoration: none;
    transition: color var(--transition-base), gap var(--transition-base);
}

.contact-location-card__link:hover {
    color: var(--color-accent);
    gap: 0.65em;
}

.contact-location-card__arrow {
    color: var(--color-accent);
    width: 0.52em;
    height: auto;
    flex-shrink: 0;
    transition: transform var(--transition-base);
}

.contact-location-card__link:hover .contact-location-card__arrow {
    transform: translate(2px, -2px);
}


/* ── Archivio progetti ─────────────────────────────────────────────────── */

.archive-projects__header {
    padding-block: var(--p-head) var(--p-90);
}

.archive-projects__title {
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 0.85;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0;
}

.archive-projects__filters {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    justify-content: flex-end;
}

@media (max-width: 767px) {
    .archive-projects__filters .archive-projects__select {
        flex: 0 0 calc(50% - 0.5rem);
        min-width: 0;
    }
}

@media (min-width: 768px) {
    .archive-projects__filters .archive-projects__select {
        flex: 0 0 calc(25% - 0.75rem);
        min-width: 0;
    }
}

.archive-projects__select {
    appearance: none;
    background-color: transparent;
    border: none;
    border-bottom: 1px solid var(--color-blue-light);
    border-radius: 0;
    padding: 0.125rem 1.375rem 0.125rem 0;
    font-family: var(--font-family-base);
    font-weight: 400;
    font-size: var(--fs-15);
    line-height: 1.2;
    color: var(--color-navy);
    cursor: pointer;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    background-image: url("data:image/svg+xml,%3Csvg width='8' height='10' viewBox='0 0 8 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.32858 9.35355C3.52384 9.54882 3.84042 9.54882 4.03568 9.35355L7.21766 6.17157C7.41293 5.97631 7.41293 5.65973 7.21766 5.46447C7.0224 5.2692 6.70582 5.2692 6.51056 5.46447L3.68213 8.29289L0.853702 5.46447C0.65844 5.2692 0.341857 5.2692 0.146595 5.46447C-0.0486669 5.65973 -0.0486669 5.97631 0.146595 6.17157L3.32858 9.35355ZM3.68213 0L3.18213 2.18557e-08L3.18213 9L3.68213 9L4.18213 9L4.18213 -2.18557e-08L3.68213 0Z' fill='%23BA0C2F'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0 center;
    background-size: 8px 10px;
}

.archive-projects__grid {
    --bs-gutter-y: var(--p-90);
    transition: opacity 0.2s ease;
}

.archive-projects__grid.is-loading {
    opacity: 0.4;
    pointer-events: none;
}

.archive-projects__more {
    display: flex;
    justify-content: center;
    padding-block: var(--p-90);
}

/* ── Project card ──────────────────────────────────────────────────────── */

.project-card {
    position: relative;
}

.project-card__media {
    aspect-ratio: 7 / 5;
    margin-bottom: 1rem;
    overflow: hidden;
    background-color: var(--color-grey-light);
}

.project-card__media img {
    transition: transform 0.45s var(--transition-timing);
}

.project-card:has(.stretched-link:hover) .project-card__media img {
    transform: scale(1.04);
}

.project-card__title {
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.56;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0 0 0.35em;
    transition: color var(--transition-base);
}

.project-card:has(.stretched-link:hover) .project-card__title {
    color: var(--color-accent);
}

.project-card__link {
    color: inherit;
    text-decoration: none;
}

.project-card__meta {
    font-family: var(--font-family-label);
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--color-text-muted);
    margin: 0;
}

/* ── Singolo progetto ──────────────────────────────────────────────────── */

.single-project__header {
    padding-block: var(--p-head-single) var(--p-40);
}

.single-project__title {
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 0.85;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    text-wrap: balance;
    max-width: 25ch;
    margin: 0;
}

.single-project__divider {
    border-block-start: 1px solid var(--color-grey-light);
    margin-block: var(--p-60) var(--p-40);
}

.single-project__scroll-down {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: clamp(2rem, 1.29vw + 1.7rem, 3.25rem);   /* 32px → 52px @1920 */
    height: clamp(2rem, 1.29vw + 1.7rem, 3.25rem);
    border-radius: 50%;
    background-color: var(--color-accent);
    color: var(--color-white);
    transition: background-color var(--transition-base);
}

.single-project__scroll-down svg {
    width: 30%;
    height: auto;
    transform: rotate(135deg); /* freccia ↗ ruotata = ↓ */
}

.single-project__scroll-down:hover {
    background-color: var(--color-navy);
    color: var(--color-white);
}

.single-project__meta-label {
    font-size: var(--fs-17);
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: normal;
    color: var(--color-accent);
    margin-bottom: 0.5em;
}

.single-project__meta-value {
    font-size: var(--fs-23);
    font-weight: 400;
    line-height: 1.56;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0;
}

.single-project__meta { --bs-gutter-x: 2.5rem; }

.single-project__hero {
    aspect-ratio: 1920 / 800;
    min-height: 320px;
}

.single-project__content {
    padding-block: var(--p-90) var(--p-40);
}

.single-project__description {
    padding-block-end: var(--p-60);
}

.single-project__details {
    margin: 0;
    padding-block-end: var(--p-60);
}

.single-project__details-row {
    border-top: 1px solid var(--color-border);
    padding-block: 1.25rem;
    row-gap: 0.5rem;
}

.single-project__related {
    padding-block: var(--p-90);
    background-color: var(--color-bg-section);
}

/* Simmetria col bg-section dei correlati che segue */
.gallery:has(+ .single-project__related) { padding-block-end: var(--p-90); }

.single-project__related-title {
    font-size: var(--fs-36);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
}

/* ── Singolo servizio ──────────────────────────────────────────────────── */

/* Hero full-bleed: testo a sx con margini, immagine 1:1 a filo destro+bottom */
.single-service__header {
    padding-block-start: var(--header-height);
}

.single-service__header-row {
    align-items: stretch;
}

/* Intro: titolo+sub centrati a sx, freccia ancorata in basso */
.single-service__intro {
    display: grid;
    grid-template-rows: 1fr auto;
    row-gap: var(--p-60);
    padding-inline: var(--gutter-half);
    padding-block: var(--p-40);
}

.single-service__intro-text {
    align-self: center;
}

.single-service__eyebrow {
    display: inline-block;
    color: var(--color-accent);
    text-decoration: none;
    margin-bottom: var(--p-40);
    transition: opacity var(--transition-base);
}

.single-service__eyebrow:hover {
    opacity: 0.65;
}

.single-service__title {
    font-size: var(--fs-100);
    font-weight: 300;
    line-height: 0.95;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    text-wrap: balance;
    max-width: 14ch;
    margin: 0;
}

.single-service__subtitle {
    font-size: var(--fs-25);
    font-weight: 300;
    line-height: 1.4;
    color: var(--color-navy);
    text-wrap: balance;
    max-width: 46ch;
    margin: var(--p-40) 0 0;
}

.single-service__scroll-down {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: clamp(2rem, 1.29vw + 1.7rem, 3.25rem);   /* 32px → 52px @1920 */
    height: clamp(2rem, 1.29vw + 1.7rem, 3.25rem);
    border-radius: 50%;
    background-color: var(--color-accent);
    color: var(--color-white);
    transition: background-color var(--transition-base);
}

.single-service__scroll-down svg {
    width: 30%;
    height: auto;
    transform: rotate(135deg); /* freccia ↗ ruotata = ↓ */
}

.single-service__scroll-down:hover {
    background-color: var(--color-navy);
    color: var(--color-white);
}

.single-service__hero {
    aspect-ratio: 1 / 1;
    min-height: 100%;
}

@media (max-width: 991.98px) {
    .single-service__hero { aspect-ratio: 4 / 3; }
}

.single-service__content {
    padding-block: var(--p-120);
    background-color: var(--color-bg-section);
}

/* Gallery sullo stesso sfondo grigio del content che la precede */
.single-service__content:has( + .gallery ) { padding-block-end: var(--p-60); }
.single-service__content + .gallery { background-color: var(--color-bg-section); }

.single-service__body {
    font-size: var(--fs-25);
    color: var(--color-navy);
}

.single-service__subservices {
    list-style: none;
    margin: 0;
    padding: 0;
}

.single-service__subservice {
    padding: 0.7em 0;
    font-size: var(--fs-20);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}

/* Bordo solo tra elementi adiacenti */
.single-service__subservice + .single-service__subservice {
    border-block-start: 1px solid var(--color-border);
}

.single-service__related {
    padding-block: var(--p-90);
}

.single-service__related-title {
    font-size: var(--fs-55);
    font-weight: 300;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--color-navy);
    margin: 0 0 var(--p-60);
}

.single-service__related-link {
    color: var(--color-accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: color var(--transition-base);
}

.single-service__related-link:hover { text-decoration: none; }

.single-service__related-link::after {
    content: '';
    display: inline-block;
    width: 0.4em;
    height: 0.4em;
    margin-inline-start: 0.15em;
    vertical-align: baseline;
    background-image: url("data:image/svg+xml,%3Csvg width='9' height='9' viewBox='0 0 9 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.13184 0C8.40792 7.13924e-05 8.63184 0.223902 8.63184 0.5V4.99902C8.63184 5.27512 8.40792 5.49895 8.13184 5.49902C7.85569 5.49902 7.63184 5.27517 7.63184 4.99902V1.70703L0.707031 8.63184L0 7.9248L6.9248 1H3.63184C3.35588 0.999811 3.13188 0.775987 3.13184 0.5C3.13184 0.223974 3.35585 0.00018825 3.63184 0H8.13184Z' fill='%23BA0C2F'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}

/* ── Reveal on scroll — EAA-safe ──────────────────────────────────────────
   Stato nascosto applicato SOLO con JS attivo (.fm-anim su <html>) e senza
   reduced-motion. JS off o reduced-motion → contenuto sempre visibile. */
.fm-anim .fm-reveal {
    opacity: 0;
    transform: translateY(12px);
    /* Nessuna transizione sullo stato nascosto: evita che il transition-delay
       inline (stagger) erediti `all 0s <delay>` e faccia saltare il reveal */
    transition: none;
}

/* Transizione SOLO sull'entrata: il nascondimento è istantaneo (mai fade-out) */
.fm-anim .fm-reveal.is-visible {
    opacity: 1;
    transform: none;
    transition:
        opacity 0.9s cubic-bezier(0.215, 0.61, 0.355, 1),
        transform 0.9s cubic-bezier(0.215, 0.61, 0.355, 1);
}

@media (prefers-reduced-motion: reduce) {
    .fm-anim .fm-reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    /* Marquee loghi società: stop scroll infinito (WCAG 2.3.3 / vestibolare) */
    .company-marquee__track {
        animation: none;
    }
}

/* ── Documento Complianz (cookie policy) ──────────────────────────────────── */

/* document.min.css stila il documento con selettori su #cmplz-document, che hanno
   specificita' piu' alta di .text :is(h1..h6): senza queste regole i titoli restano
   su una scala in px estranea al tema e h4/h5 finiscono piu' piccoli del paragrafo. */

#cmplz-document {
    max-width: none;
    font-weight: 300;
    font-size: var(--fs-25);
    line-height: 1.4;
    letter-spacing: -0.01em;
    color: var(--color-navy);
}

#cmplz-document :is(h1, h2) { font-size: 1.5em; }

#cmplz-document :is(h3, h4),
#cmplz-document .cmplz-dropdown h4 { font-size: 1.25em; }

#cmplz-document :is(h5, h6) { font-size: 1.1em; }

#cmplz-document :is(h1, h2, h3, h4, h5, h6) {
    font-weight: 600;
    line-height: 1.3;
    color: var(--color-navy);
}

#cmplz-document :is(h1, h2, h3, h4, h5, h6):not(:first-child) { padding-block-start: 2em; }

#cmplz-document :is(p, ul, ol):not(:first-child) { padding-block-start: 1.2em; }

#cmplz-document :is(ul, ol) { padding-inline-start: 1em; }

/* Complianz fissa 14px su p/li e sulle classi della tabella cookie: 1em li
   riporta a ereditare la dimensione del documento, come fa .text nel tema. */
#cmplz-document :is(p, li, .name, .retention, .function, .purpose) {
    font-size: 1em;
    line-height: 1.4;
}

#cmplz-document a { color: var(--color-accent); }

/* WordPress e Complianz nascondono il testo per screen reader con
   .screen-reader-text; il tema usa .visually-hidden di Bootstrap e quella classe
   non e' definita da nessuna parte, quindi il testo usciva a schermo. */
.screen-reader-text {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.screen-reader-text:focus {
    position: static !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    overflow: visible !important;
    clip: auto !important;
    white-space: normal !important;
}
