/* Innova — foglio di stile unico del sito */

@font-face { font-family: "Mona Sans"; src: url("../fonts/Mona-Sans-Regular.woff") format("woff"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Mona Sans"; src: url("../fonts/Mona-Sans-Medium.woff") format("woff"); font-weight: 500; font-display: swap; }
@font-face { font-family: "Mona Sans"; src: url("../fonts/Mona-Sans-Bold.woff") format("woff"); font-weight: 700; font-display: swap; }

:root {
  --rosso: #d5192d;          /* rosso del marchio #f32036 scurito per il contrasto dei testi (WCAG AA) */
  --rosso-scuro: #b31224;
  --rosso-marchio: #f32036;  /* rosso del logo, per titoli grandi su fondo scuro */
  --giallo: #ffc700;
  --scuro: #313131;
  --scuro-profondo: #232323;
  --chiaro: #f6f8f9;
  --bordo: #d4dee4;
  --testo: #313131;
  --testo-tenue: #5c6166;
  --testo-su-scuro: #c7c9cb;
  --bianco: #fff;

  --font: "Mona Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --fs-hero: clamp(2.5rem, 1.4rem + 4.4vw, 5.25rem);
  --fs-h1: clamp(2.25rem, 1.5rem + 3vw, 4rem);
  --fs-h2: clamp(1.75rem, 1.25rem + 2vw, 3rem);
  --fs-h3: clamp(1.2rem, 1.1rem + 0.4vw, 1.4rem);
  --fs-base: 1.0625rem;
  --fs-piccolo: 0.9375rem;

  --container: 1240px;
  --gutter: clamp(1rem, 0.5rem + 2vw, 2rem);
  --spazio-sezione: clamp(4rem, 2.5rem + 6vw, 8rem);
  --raggio: 16px;
  --raggio-piccolo: 8px;
  --ombra: 0 8px 28px rgb(25 33 61 / 0.08);
  --transizione: 0.25s ease;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 2rem; overflow-x: clip; }
body { margin: 0; font-family: var(--font); font-size: var(--fs-base); line-height: 1.6; color: var(--testo); background: var(--bianco); }
img, svg, model-viewer { display: block; max-width: 100%; }
img { height: auto; }
h1, h2, h3, p, ul, ol, dl, dd, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
h1, h2, h3 { font-weight: 500; line-height: 1.15; color: inherit; text-wrap: balance; }
p + p { margin-top: 1em; }
a { color: inherit; }
strong { font-weight: 700; }
button, input, textarea, select { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--rosso); outline-offset: 3px; border-radius: 4px; }

.container { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; left: 1rem; top: -4rem; z-index: 100; padding: 0.75rem 1rem; background: var(--bianco); border-radius: var(--raggio-piccolo); }
.skip-link:focus { top: 1rem; }

.icon { width: 1.5rem; height: 1.5rem; flex-shrink: 0; }
.icon--piccola { width: 1.1em; height: 1.1em; }
.icon--grande { width: 3.5rem; height: 3.5rem; }

/* ---------- Pulsanti e link ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.6em;
  padding: 1rem 1.75rem; border: 1px solid transparent; border-radius: 80px;
  font-weight: 500; line-height: 1.25; text-decoration: none; text-align: center; cursor: pointer;
  transition: background-color var(--transizione), color var(--transizione), border-color var(--transizione), transform var(--transizione);
}
.btn .icon { transition: transform var(--transizione); }
.btn:hover .icon { transform: translateX(4px); }
.btn--primario { background: var(--rosso); color: var(--bianco); }
.btn--primario:hover { background: var(--rosso-scuro); }
.btn--chiaro { background: var(--bianco); color: var(--scuro); }
.btn--chiaro:hover { background: var(--chiaro); }
.btn--contorno { border-color: currentColor; background: transparent; }
.btn--contorno:hover { background: var(--scuro); border-color: var(--scuro); color: var(--bianco); }
.btn--grande { padding: 1.15rem 2rem; font-size: 1.0625rem; font-weight: 400; }
.btn[disabled] { opacity: 0.6; cursor: wait; }

.link-freccia { display: inline-flex; align-items: center; gap: 0.4em; font-weight: 500; text-decoration: none; }
.link-freccia::after { content: "→"; transition: transform var(--transizione); }
.link-freccia:hover::after { transform: translateX(4px); }

.azioni { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 3rem; }
.azioni--centro { justify-content: center; }

/* ---------- Header ---------- */
.site-header { position: relative; z-index: 20; padding-block: 1.25rem; }
.site-header__inner { display: flex; align-items: center; gap: 2rem; }
.site-header__logo { flex-shrink: 0; }
.site-header__logo .logo--bianco { width: clamp(84px, 6vw + 40px, 128px); height: auto; }
.site-header__logo .logo--colori { width: clamp(140px, 8vw + 60px, 190px); height: auto; }
.site-header--solido .logo--bianco { display: none; }
.site-header--overlay { position: absolute; inset: 0 0 auto; color: var(--bianco); }
.site-header--solido { background: var(--bianco); border-bottom: 1px solid var(--bordo); }

.nav { margin-right: auto; }
.nav__lista { display: flex; align-items: center; gap: 0.25rem; }
.nav__link {
  display: inline-flex; align-items: center; gap: 0.35em; padding: 0.5rem 0.9rem;
  border: 0; background: none; font-size: 1rem; text-decoration: none; cursor: pointer; border-radius: 40px;
  transition: color var(--transizione), background-color var(--transizione);
}
.nav__link:hover, .nav__link[aria-current="page"] { color: var(--rosso); }
.site-header--overlay .nav__link:hover, .site-header--overlay .nav__link[aria-current="page"] { color: var(--giallo); }
.nav__voce--dropdown { position: relative; }
.nav__dropdown-toggle .icon { transition: transform var(--transizione); }
.nav__dropdown {
  position: absolute; top: calc(100% + 0.5rem); left: 0; min-width: 240px; padding: 0.75rem;
  background: var(--bianco); color: var(--testo); border-radius: var(--raggio); box-shadow: var(--ombra);
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity var(--transizione), transform var(--transizione), visibility var(--transizione);
}
.nav__dropdown-link { display: block; padding: 0.6rem 0.9rem; border-radius: var(--raggio-piccolo); text-decoration: none; }
.nav__dropdown-link:hover, .nav__dropdown-link[aria-current="page"] { background: var(--chiaro); color: var(--rosso); }
.nav__voce--mobile { display: none; }
.site-header__azioni { display: flex; align-items: center; gap: 1.5rem; }
.site-header__email { font-size: var(--fs-piccolo); }
/* Selettore della lingua: tendina su desktop, sigle in riga nel menu mobile */
.lingue { position: relative; }
.lingue__toggle {
  display: inline-flex; align-items: center; gap: 0.3em; padding: 0.5rem 0.4rem;
  border: 0; background: none; color: inherit; font: inherit; font-size: var(--fs-piccolo); font-weight: 600; letter-spacing: 0.04em; cursor: pointer;
  transition: color var(--transizione);
}
.lingue__toggle:hover, .lingue__toggle[aria-expanded="true"] { color: var(--rosso); }
.site-header--overlay .lingue__toggle:hover, .site-header--overlay .lingue__toggle[aria-expanded="true"] { color: var(--giallo); }
.lingue__freccia { transition: transform var(--transizione); }
.lingue__toggle[aria-expanded="true"] .lingue__freccia { transform: rotate(180deg); }
.lingue__lista {
  position: absolute; top: calc(100% + 0.5rem); right: 0; z-index: 2; min-width: 190px; padding: 0.5rem;
  background: var(--bianco); color: var(--testo); border-radius: var(--raggio); box-shadow: var(--ombra);
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity var(--transizione), transform var(--transizione), visibility var(--transizione);
}
.lingue__toggle[aria-expanded="true"] + .lingue__lista { opacity: 1; visibility: visible; transform: none; }
.lingue__lista a { display: flex; align-items: center; gap: 0.75rem; padding: 0.55rem 0.8rem; border-radius: var(--raggio-piccolo); text-decoration: none; }
.lingue__lista a:hover, .lingue__lista a[aria-current] { background: var(--chiaro); color: var(--rosso); }
.lingue__sigla { min-width: 1.6em; font-size: var(--fs-piccolo); font-weight: 600; color: var(--testo-tenue); }
.nav__lingue { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.nav__lingue a {
  display: inline-block; min-width: 3rem; padding: 0.45rem 0.7rem; border: 1px solid rgb(255 255 255 / 0.3); border-radius: 40px;
  font-weight: 600; text-align: center; text-decoration: none;
}
.nav__lingue a:hover, .nav__lingue a[aria-current] { border-color: var(--giallo); color: var(--giallo); }
.testo-legale__avviso { padding: 0.9rem 1.1rem; border-left: 3px solid var(--rosso); background: var(--chiaro); font-size: var(--fs-piccolo); }
.nav-toggle { display: none; margin-left: auto; padding: 0.5rem; border: 0; background: none; cursor: pointer; }
.nav-toggle .icon { width: 2rem; height: 2rem; }
.nav-toggle__chiudi { display: none; }

@media (min-width: 992px) {
  .nav__voce--dropdown:hover .nav__dropdown,
  .nav__voce--dropdown:focus-within .nav__dropdown,
  .nav__dropdown-toggle[aria-expanded="true"] + .nav__dropdown { opacity: 1; visibility: visible; transform: none; }
  .nav__voce--dropdown:hover .nav__dropdown-toggle .icon,
  .nav__dropdown-toggle[aria-expanded="true"] .icon { transform: rotate(180deg); }
}

@media (max-width: 1199px) { .site-header__email { display: none; } }

@media (max-width: 991px) {
  .nav-toggle { display: block; }
  .site-header__azioni { display: none; }
  .nav {
    position: absolute; inset: 100% 0 auto; margin: 0; padding: 1rem var(--gutter) 2rem;
    background: var(--scuro); color: var(--bianco); box-shadow: var(--ombra);
    display: none;
  }
  .site-header.menu-aperto .nav { display: block; }
  .site-header.menu-aperto .nav-toggle__apri { display: none; }
  .site-header.menu-aperto .nav-toggle__chiudi { display: block; }
  .nav__lista { flex-direction: column; align-items: stretch; gap: 0; }
  .nav__link { width: 100%; justify-content: space-between; padding: 0.9rem 0; font-size: 1.125rem; border-radius: 0; border-bottom: 1px solid rgb(255 255 255 / 0.12); }
  .nav__link:hover, .nav__link[aria-current="page"] { color: var(--giallo); }
  .nav__dropdown { position: static; display: none; min-width: 0; padding: 0.25rem 0 0.5rem 1rem; background: none; color: inherit; box-shadow: none; opacity: 1; visibility: visible; transform: none; }
  .nav__dropdown-toggle[aria-expanded="true"] + .nav__dropdown { display: block; }
  .nav__dropdown-toggle[aria-expanded="true"] .icon { transform: rotate(180deg); }
  .nav__dropdown-link:hover, .nav__dropdown-link[aria-current="page"] { background: none; color: var(--giallo); }
  .nav__voce--mobile { display: block; margin-top: 1.5rem; }
  .nav__voce--mobile .btn { width: 100%; }
}

/* ---------- Sezioni e titoli ---------- */
.sezione { padding-block: var(--spazio-sezione); }
.sezione--chiara { background: var(--chiaro); }
.sezione--scura { background: var(--scuro); color: var(--bianco); }
.sezione--senza-sopra { padding-top: 0; }
.sezione--senza-sotto { padding-bottom: 0; }
.sezione p { color: var(--testo-tenue); }
.sezione--scura p { color: var(--testo-su-scuro); }
.sezione strong { color: var(--testo); }
.sezione--scura strong { color: var(--bianco); }

.titolo-pagina { font-size: var(--fs-h1); margin-bottom: 1.5rem; }
.titolo-pagina--centro { text-align: center; }
.titolo-pagina strong { color: var(--rosso); }
.titolo-sezione { font-size: var(--fs-h2); margin-bottom: 1.25rem; }
.titolo-sezione--stretto { max-width: 34rem; }
.titolo-sezione--spazio { margin-top: var(--spazio-sezione); }
.sottotitolo { display: inline-flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; color: var(--rosso) !important; font-weight: 500; text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--fs-piccolo); }
.sottotitolo::before, .sottotitolo::after { content: ""; width: 2rem; height: 2px; background: currentColor; }
.occhiello { margin-bottom: 2rem; font-size: var(--fs-piccolo); font-weight: 500; text-transform: uppercase; letter-spacing: 0.1em; color: var(--giallo); }

.intestazione-centrata { max-width: 50rem; margin: 0 auto 3.5rem; text-align: center; }
.titolo-e-testo { display: grid; gap: 1.5rem 4rem; grid-template-columns: 1.1fr 1fr; align-items: end; }
.due-colonne { display: grid; gap: 3rem 4rem; grid-template-columns: 1fr 0.9fr; align-items: center; }
.due-colonne--centrate { align-items: center; margin-top: 1.5rem; }
.due-colonne--centrate .azioni { margin-top: 0; }
.colonna-stretta { max-width: 44rem; }
.immagine-arrotondata img { width: 100%; border-radius: var(--raggio); object-fit: cover; aspect-ratio: 4 / 3; }
.divisore { margin: 3.5rem 0; border: 0; border-top: 1px solid var(--bordo); }

@media (max-width: 900px) {
  .titolo-e-testo, .due-colonne { grid-template-columns: 1fr; }
}

/* ---------- Hero ---------- */
.hero { position: relative; color: var(--bianco); background: var(--scuro); isolation: isolate; }
.hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(rgb(0 0 0 / 0.72), rgb(0 0 0 / 0.72)), var(--sfondo) center / cover no-repeat;
}
.hero--home { padding-top: clamp(4rem, 3rem + 4vw, 7rem); }
.hero__titolo { max-width: 16ch; font-size: var(--fs-hero); color: var(--giallo); }
.hero__titolo strong { font-weight: 700; color: var(--rosso-marchio); }
.hero__centro { display: grid; grid-template-columns: 1.1fr 1fr; gap: 3rem 4rem; align-items: start; margin-top: clamp(3rem, 2rem + 4vw, 5.5rem); padding-bottom: clamp(3rem, 2rem + 4vw, 5rem); }
.hero__testo p { color: var(--testo-su-scuro); max-width: 30rem; }
.hero__testo p strong { color: var(--bianco); }
.hero__testo .btn { margin-top: 2rem; max-width: 22rem; text-align: left; }
.hero__contatti { background: var(--scuro-profondo); }
.hero__contatti-griglia { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.contatto { display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 1rem; padding: 2.5rem 2rem 2.5rem 0; }
.contatto + .contatto { padding-left: 2rem; border-left: 1px solid rgb(255 255 255 / 0.14); }
.contatto__icona { color: var(--rosso); width: 2rem; height: 2rem; }
.contatto__titolo { font-size: var(--fs-h3); align-self: center; }
.contatto p { grid-column: 2; color: var(--testo-su-scuro); }
.contatto p span { color: var(--bianco); font-weight: 500; }
.contatto a { text-decoration-color: rgb(255 255 255 / 0.35); text-underline-offset: 3px; }
.contatto a:hover { color: var(--giallo); }

@media (max-width: 900px) {
  .hero__centro { grid-template-columns: 1fr; }
  .hero__contatti-griglia { grid-template-columns: 1fr; }
  .contatto { padding: 2rem 0; }
  .contatto + .contatto { padding-left: 0; border-left: 0; border-top: 1px solid rgb(255 255 255 / 0.14); }
}

/* ---------- Numeri ---------- */
.numeri { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.numeri dt { font-size: var(--fs-piccolo); color: var(--testo-su-scuro); }
.numeri dd { display: flex; align-items: baseline; gap: 0.1em; margin-top: 0.35rem; }
.numeri__valore { font-size: clamp(2.25rem, 1.6rem + 2.4vw, 3.75rem); font-weight: 500; line-height: 1; color: var(--bianco); }
.numeri__suffisso { font-size: clamp(1.25rem, 1rem + 1vw, 1.75rem); color: var(--giallo); }
@media (max-width: 480px) { .numeri { grid-template-columns: 1fr 1fr; } }

/* ---------- Home: domande, passi, mappa, eventi ---------- */
.domande { display: grid; gap: 0; margin-top: 3rem; }
.domanda { display: grid; grid-template-columns: 4rem 1fr; gap: 1.5rem; padding-block: 2rem; border-top: 1px solid var(--bordo); }
.domanda:last-child { border-bottom: 1px solid var(--bordo); }
.domanda__icona { display: grid; place-items: center; width: 4rem; height: 4rem; border-radius: 50%; background: var(--bianco); color: var(--rosso); }
.domanda__titolo { font-size: var(--fs-h3); margin-bottom: 0.5rem; }
@media (min-width: 992px) { .domande { margin-left: 25%; } }

.passi { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; margin-top: 3.5rem; counter-reset: none; }
.passo { padding: 2rem; border: 1px solid var(--bordo); border-radius: var(--raggio); text-align: center; }
.passo__numero { display: block; font-size: 3rem; font-weight: 700; line-height: 1; color: #7d878e; }
.passo__titolo { font-size: var(--fs-h3); margin: 1rem 0 0.75rem; }
@media (max-width: 900px) { .passi { grid-template-columns: 1fr; } }

/* La mappa scende per metà sulla fascia scura sottostante: niente stacco bianco ai lati */
:root { --mappa-sovrapposizione: clamp(3rem, 1rem + 7vw, 8rem); }
.mappa { position: relative; z-index: 1; margin-top: 4rem; margin-bottom: calc(var(--mappa-sovrapposizione) * -1); }
.mappa img { width: 100%; border-radius: var(--raggio); box-shadow: 0 24px 60px rgb(0 0 0 / 0.28); }
.sezione--senza-sotto:has(.mappa) + .fascia-decorativa { height: calc(var(--mappa-sovrapposizione) + clamp(4rem, 2rem + 5vw, 8rem)); }

.eventi { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2.5rem; }
.evento__immagine { aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--raggio); background: var(--chiaro); }
.evento__immagine img { width: 100%; height: 100%; object-fit: cover; }
.evento__titolo { font-size: var(--fs-h3); margin: 1.25rem 0 0.5rem; }
@media (max-width: 900px) { .eventi { grid-template-columns: 1fr; } }

/* Fascia decorativa trasparente con archi che richiamano il logo */
.fascia-decorativa {
  height: clamp(5rem, 3rem + 6vw, 9rem);
  background:
    repeating-radial-gradient(circle at 85% 140%, transparent 0 22px, rgb(49 49 49 / 0.10) 22px 24px),
    repeating-radial-gradient(circle at 10% -40%, transparent 0 22px, rgb(243 32 54 / 0.18) 22px 24px);
}

/* ---------- Gruppo e partner ---------- */
.loghi { display: grid; gap: 3rem 4rem; margin-top: 2.5rem; }
.loghi--quattro { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.loghi--due { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.logo-card__logo { display: flex; align-items: center; height: 6rem; margin-bottom: 1.25rem; }
.logo-card__logo img { max-height: 5rem; width: auto; max-width: 12rem; object-fit: contain; filter: grayscale(1); opacity: 0.85; transition: filter 0.6s ease, opacity 0.6s ease; }
/* A colori al passaggio del mouse e quando il logo è al centro dello schermo (classe aggiunta da main.js) */
.logo-card:hover .logo-card__logo img, .logo-card.al-centro .logo-card__logo img { filter: none; opacity: 1; }
.logo-card p { font-size: var(--fs-piccolo); }
@media (max-width: 1100px) { .loghi--quattro { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 900px) { .loghi--due { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .loghi--quattro { grid-template-columns: 1fr; } }

/* ---------- Form ---------- */
.sezione-form__griglia { display: grid; grid-template-columns: 5fr 7fr; gap: 3rem 5rem; align-items: start; }
.sezione-form__sottotitolo { margin-top: 1rem; font-size: var(--fs-h3); color: var(--bianco) !important; }
.scheda-form { padding: clamp(1.5rem, 1rem + 2.5vw, 3rem); background: var(--bianco); color: var(--testo); border-radius: var(--raggio); box-shadow: var(--ombra); }
.sezione--chiara .scheda-form { margin-top: 3rem; }
/* La scheda è bianca anche dentro le sezioni scure: ripristina i colori del testo */
.scheda-form p { color: var(--testo-tenue); }
.scheda-form strong { color: var(--testo); }
.scheda-form .modulo__esito-titolo strong { color: var(--rosso); }
.scheda-form a { color: var(--rosso); }
@media (max-width: 900px) { .sezione-form__griglia { grid-template-columns: 1fr; } }

.recapiti { display: grid; gap: 1rem; margin-top: 2.5rem; }
.recapiti li { display: flex; align-items: flex-start; gap: 0.9rem; color: var(--testo-su-scuro); }
.recapiti .icon { color: var(--rosso); }
.recapiti a { text-underline-offset: 3px; }
.recapiti a:hover { color: var(--giallo); }

.modulo__griglia { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-bottom: 1.75rem; }
.campo { display: grid; gap: 0.4rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.campo--intero { grid-column: 1 / -1; }
.campo label, .campo legend { font-size: var(--fs-piccolo); font-weight: 500; padding: 0; }
.campo input:not([type="radio"], [type="checkbox"]), .campo textarea {
  width: 100%; padding: 0.85rem 1rem; border: 1px solid var(--bordo); border-radius: var(--raggio-piccolo);
  background: var(--bianco); transition: border-color var(--transizione), box-shadow var(--transizione);
}
.campo textarea { resize: vertical; min-height: 8rem; }
.campo input:focus, .campo textarea:focus { outline: none; border-color: var(--rosso); box-shadow: 0 0 0 3px rgb(243 32 54 / 0.15); }
.campo ::placeholder { color: #9aa3a9; }
.scelte { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.4rem; }
.scelta { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 400 !important; cursor: pointer; }
.scelte .scelta { padding: 0.5rem 1rem; border: 1px solid var(--bordo); border-radius: 40px; transition: border-color var(--transizione), background-color var(--transizione); }
.scelte .scelta:has(input:checked) { border-color: var(--rosso); background: rgb(243 32 54 / 0.06); }
.scelta input { accent-color: var(--rosso); width: 1.1rem; height: 1.1rem; margin: 0; }
.scelta small { color: var(--testo-tenue); }
.campo--checkbox .scelta { align-items: flex-start; font-size: var(--fs-piccolo); color: var(--testo-tenue); }
.campo--checkbox input { margin-top: 0.2rem; }
.campo select {
  width: 100%; padding: 0.85rem 2.5rem 0.85rem 1rem; border: 1px solid var(--bordo); border-radius: var(--raggio-piccolo);
  background: var(--bianco) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235c6166' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 1rem center;
  -webkit-appearance: none; appearance: none; cursor: pointer;
}
.campo select:focus { outline: none; border-color: var(--rosso); box-shadow: 0 0 0 3px rgb(243 32 54 / 0.15); }
.modulo__extra { margin-top: 0.5rem; border: 1px solid var(--bordo); border-radius: var(--raggio-piccolo); }
.modulo__extra > summary {
  display: flex; align-items: center; gap: 0.6rem; padding: 1rem 1.25rem; cursor: pointer; list-style: none;
  font-weight: 500; font-size: 1rem;
}
.modulo__extra > summary::-webkit-details-marker { display: none; }
.modulo__extra > summary::before {
  content: "+"; display: grid; place-items: center; width: 1.6rem; height: 1.6rem; flex-shrink: 0;
  border-radius: 50%; background: var(--rosso); color: var(--bianco); font-size: 1.1rem; line-height: 1;
  transition: transform var(--transizione);
}
.modulo__extra[open] > summary::before { content: "–"; }
.modulo__extra > summary small { font-weight: 400; color: var(--testo-tenue); }
.modulo__extra-intro { margin: 0 1.25rem 1rem !important; font-size: var(--fs-piccolo); }
.modulo__extra > .modulo__griglia { padding: 0 1.25rem 1.25rem; margin-bottom: 0; }
.campo__etichetta { font-size: var(--fs-piccolo); font-weight: 500; }
.campo__etichetta small { font-weight: 400; color: var(--testo-tenue); }
.allegato {
  position: relative; display: flex; align-items: center; gap: 1rem; padding: 1.25rem 1.5rem;
  border: 2px dashed var(--bordo); border-radius: var(--raggio-piccolo); background: var(--chiaro);
  color: var(--testo-tenue); font-size: var(--fs-piccolo); cursor: pointer;
  transition: border-color var(--transizione), background-color var(--transizione);
}
.allegato:hover, .allegato.trascina { border-color: var(--rosso); background: rgb(243 32 54 / 0.04); }
.allegato:focus-within { outline: 3px solid var(--rosso); outline-offset: 3px; }
.allegato.caricato { border-style: solid; border-color: #1f9d55; color: var(--testo); }
.allegato__icona { color: var(--rosso); }
.allegato.caricato .allegato__icona { color: #1f9d55; }
.allegato input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.modulo__esito { margin-top: 1.5rem; }
.modulo__esito p { color: var(--testo-tenue); }
.modulo__esito--ok .icon { color: #1f9d55; margin-bottom: 1rem; }
.modulo__esito-titolo { font-size: var(--fs-h3); color: var(--testo) !important; margin-bottom: 1rem; }
.modulo__esito--errore { display: flex; gap: 0.75rem; padding: 1rem 1.25rem; border-radius: var(--raggio-piccolo); background: #fdecee; }
.modulo__esito--errore[hidden], .modulo__esito--ok[hidden] { display: none; }
.modulo__esito--errore .icon { color: var(--rosso); }
.modulo.inviato .modulo__griglia, .modulo.inviato > .btn { display: none; }
@media (max-width: 600px) { .modulo__griglia { grid-template-columns: 1fr; } }

/* ---------- Visualizzatore 3D ---------- */
.viewer3d { position: relative; margin-block: 1rem 0.5rem; }
.intestazione-centrata:has(+ .viewer3d) { margin-bottom: 0; }
.intestazione-centrata + .viewer3d { margin-top: -0.5rem; }
.viewer3d model-viewer {
  width: 100%; height: clamp(260px, 30vw, 380px); border-radius: var(--raggio);
  background: transparent;
  --poster-color: transparent;
}
.viewer3d__caricamento { position: absolute; inset: auto 0 1.5rem; display: grid; justify-items: center; gap: 0.5rem; font-size: var(--fs-piccolo); color: var(--testo-tenue); pointer-events: none; transition: opacity 0.3s; }
.viewer3d--scuro .viewer3d__caricamento { color: var(--testo-su-scuro); }
.viewer3d__barra { width: min(260px, 60%); height: 4px; border-radius: 4px; background: rgb(128 128 128 / 0.25); overflow: hidden; }
.viewer3d__riempimento { width: 0; height: 100%; background: var(--rosso); transition: width 0.2s; }
.viewer3d.caricato .viewer3d__caricamento { opacity: 0; }
.viewer3d__suggerimento { display: flex; align-items: center; justify-content: center; gap: 0.4rem; font-size: 0.875rem; color: var(--testo-tenue) !important; }
.viewer3d--scuro .viewer3d__suggerimento { color: var(--testo-su-scuro) !important; }

/* ---------- Pagine di settore ---------- */
.hero--settore { padding: clamp(3.5rem, 2.5rem + 3vw, 6rem) 0 var(--spazio-sezione); }
.hero--settore::before { background: linear-gradient(rgb(0 0 0 / 0.62), rgb(0 0 0 / 0.62)), var(--sfondo) center / cover no-repeat; }
/* Hero di settore: testo e 3D affiancati su desktop */
.settore__hero { display: grid; grid-template-columns: 1.15fr 1fr; gap: 2rem 3.5rem; align-items: center; }
.settore__hero .viewer3d { margin: 0; }
.settore__hero .viewer3d model-viewer { height: clamp(280px, 30vw, 420px); }
.settore__testo { max-width: 46rem; }
.settore__hero--senza-3d { grid-template-columns: 1fr; }
@media (max-width: 900px) {
  .settore__hero { grid-template-columns: 1fr; }
  .settore__hero .viewer3d { order: -1; }
  .settore__hero .viewer3d model-viewer { height: clamp(220px, 60vw, 320px); }
}
.settore__titolo { font-size: clamp(2.25rem, 1.4rem + 3.2vw, 4.25rem); margin-bottom: 1.5rem; }
.settore__titolo strong { color: var(--giallo); }
.settore__testo p { font-size: 1.1875rem; color: var(--testo-su-scuro); }
.settore__testo p strong { color: var(--bianco); }
.settore__testo .btn { margin-top: 2.5rem; }
/* Etichette (norme, altri settori) */
.etichette { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.etichette li { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border: 1px solid rgb(255 255 255 / 0.25); border-radius: 40px; background: rgb(255 255 255 / 0.06); font-size: var(--fs-piccolo); color: var(--bianco); }
.etichette li .icon { color: var(--giallo); }
.etichette--grandi li { padding: 0.75rem 1.25rem; font-size: 1rem; }
.etichette--chiare li { border-color: var(--bordo); background: var(--chiaro); color: var(--testo); }

/* Applicazioni per sottosettore */
.applicazioni { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16.5rem), 1fr)); gap: 1.5rem; margin-top: 3rem; }
.applicazione { padding: 1.75rem; border: 1px solid var(--bordo); border-radius: var(--raggio); transition: border-color var(--transizione), box-shadow var(--transizione), transform var(--transizione); }
.applicazione:hover { border-color: transparent; box-shadow: var(--ombra); transform: translateY(-3px); }
.applicazione__icona { display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: var(--raggio-piccolo); background: rgb(243 32 54 / 0.08); color: var(--rosso); }
.applicazione__titolo { font-size: 1.15rem; margin: 1.1rem 0 0.6rem; }
.applicazione p { font-size: var(--fs-piccolo); text-align: left; }
.altri-settori { margin-top: 2.5rem; }
.altri-settori__titolo { font-size: var(--fs-piccolo); font-weight: 500; text-transform: uppercase; letter-spacing: 0.08em; color: var(--testo-tenue); margin-bottom: 1rem; }

/* Norme */
.norme__griglia { display: grid; grid-template-columns: 1fr 1.2fr; gap: 2.5rem 4rem; align-items: center; }
@media (max-width: 900px) { .norme__griglia { grid-template-columns: 1fr; } }

/* Come lavoriamo: sei fasi su tre colonne */
.passi--sei { margin-top: 0; }
.passi--sei .passo { text-align: left; }
.passi--sei .passo p { text-align: left; }
@media (min-width: 901px) and (max-width: 1100px) { .passi--sei { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Chiusura delle pagine industria */
.cta-finale { padding-block: clamp(3rem, 2rem + 4vw, 5rem); background: var(--rosso); color: var(--bianco); }
.cta-finale__griglia { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem 3rem; }
.cta-finale__titolo { font-size: var(--fs-h2); }
.cta-finale p { margin-top: 0.75rem; color: var(--bianco); text-align: left; }
.cta-finale .btn--chiaro { color: var(--rosso); }
.settore__case-titolo { font-size: var(--fs-h2); margin: var(--spazio-sezione) 0 2rem; }
.case-studies { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem; }
.case-study img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--raggio); }
.case-study h3 { margin-top: 1rem; font-size: var(--fs-h3); }
.case-study p { color: var(--testo-su-scuro); }
@media (max-width: 700px) { .case-studies { grid-template-columns: 1fr; } }

/* ---------- Servizi ---------- */
.servizi { margin-top: 3rem; }
.servizio { display: grid; grid-template-columns: 4rem 1fr; gap: 1.75rem; padding-block: 2.25rem; border-top: 1px solid var(--bordo); }
.servizio:last-child { border-bottom: 1px solid var(--bordo); }
.servizio__icona { display: grid; place-items: center; width: 4rem; height: 4rem; border-radius: var(--raggio); background: var(--chiaro); color: var(--testo-tenue); transition: color var(--transizione), background-color var(--transizione); }
.servizio:hover .servizio__icona { color: var(--bianco); background: var(--rosso); }
/* Voce con il robot 3D: riquadro più grande, la colonna si allarga solo per questa voce */
.servizio:has(.servizio__icona--3d) { grid-template-columns: 9rem 1fr; }
.servizio__icona--3d, .servizio:hover .servizio__icona--3d { width: 9rem; height: 9rem; margin: 0; background: transparent; }
.servizio__icona--3d model-viewer { width: 100%; height: 100%; background: transparent; --poster-color: transparent; pointer-events: none; }
@media (max-width: 600px) { .servizio:has(.servizio__icona--3d) { grid-template-columns: 1fr; gap: 1rem; } }
.servizio__titolo { font-size: clamp(1.35rem, 1.1rem + 1vw, 1.9rem); margin-bottom: 0.6rem; }
.servizio p { max-width: 50rem; }

/* ---------- Partners ---------- */

.carte-valori { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; }
.carta { padding: 2.25rem; background: var(--bianco); border-radius: var(--raggio); box-shadow: var(--ombra); }
.carta__icona { display: grid; place-items: center; width: 3.5rem; height: 3.5rem; border-radius: 50%; background: rgb(243 32 54 / 0.08); color: var(--rosso); }
.carta__titolo { font-size: var(--fs-h3); margin: 1.5rem 0 0.75rem; }
@media (max-width: 991px) { .carte-valori { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .carte-valori { grid-template-columns: 1fr; } }

.sezione-divisa { padding-top: var(--spazio-sezione); background: linear-gradient(var(--bianco) 55%, var(--scuro) 55%); }
.sezione-divisa .container p { color: var(--testo-tenue); }
.sezione-divisa__immagine { width: min(100% - 2 * var(--gutter), 1440px); margin: 4rem auto 0; }
.sezione-divisa__immagine img { width: 100%; aspect-ratio: 16 / 7; object-fit: cover; border-radius: var(--raggio); }
.sezione-divisa__scura { padding-block: 4rem var(--spazio-sezione); background: var(--scuro); color: var(--bianco); }

/* ---------- Assistenza ---------- */
.canali { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3rem; }
.canale { display: flex; flex-direction: column; gap: 1rem; scroll-margin-top: 2rem; }
.canale__icona { display: grid; place-items: center; width: 3.5rem; height: 3.5rem; border-radius: 50%; background: rgb(243 32 54 / 0.08); color: var(--rosso); }
.canale__titolo { font-size: var(--fs-h3); }
.canale .link-freccia { margin-top: auto; color: var(--rosso); }
@media (max-width: 991px) { .canali { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .canali { grid-template-columns: 1fr; } }

/* ---------- Testi lunghi giustificati (con sillabazione italiana per evitare spazi larghi) ---------- */
main p, .testo-legale li, .modulo__esito p {
  text-align: justify;
  -webkit-hyphens: auto;
  hyphens: auto;
  hyphenate-limit-chars: 7 3 3;
}
.intestazione-centrata p { text-align-last: center; }
.pagina-404 p, .viewer3d__suggerimento, .sottotitolo, .campo--checkbox span { text-align: center; hyphens: manual; }
.campo--checkbox span { text-align: left; }
.hero__testo p, .settore__testo p { hyphens: manual; }

/* ---------- Testi legali ---------- */
.testo-legale h2 { font-size: var(--fs-h3); margin: 2.5rem 0 0.75rem; }
.testo-legale ul { list-style: disc; padding-left: 1.25rem; color: var(--testo-tenue); }
.testo-legale li + li { margin-top: 0.5rem; }
.testo-legale ul + p { margin-top: 1em; }
.testo-legale__data { margin-top: 3rem !important; font-size: var(--fs-piccolo); }
.site-footer__bottom a { color: inherit; }

/* ---------- 404 ---------- */
.pagina-404 { text-align: center; }
.pagina-404__numero { font-size: clamp(7rem, 4rem + 14vw, 16rem); font-weight: 700; line-height: 1; color: var(--chiaro); margin-bottom: -0.15em !important; }

/* ---------- Footer ---------- */
.site-footer { position: relative; overflow: hidden; background: var(--scuro); color: var(--bianco); padding-top: clamp(3.5rem, 2.5rem + 4vw, 6rem); }
.site-footer::after {
  content: ""; position: absolute; right: -10%; bottom: -60%; width: 70%; aspect-ratio: 1; z-index: 0; pointer-events: none;
  background: repeating-radial-gradient(circle, transparent 0 26px, rgb(255 255 255 / 0.05) 26px 28px);
  mask-image: radial-gradient(circle, #000 20%, transparent 70%);
}
.site-footer .container { position: relative; z-index: 1; }
.site-footer__top { display: grid; grid-template-columns: auto 1fr auto; gap: 2rem 3rem; align-items: center; padding-bottom: 3rem; border-bottom: 1px solid rgb(255 255 255 / 0.12); }
.site-footer__logo img { width: 88px; }
.site-footer__payoff { font-size: clamp(1.6rem, 1.2rem + 1.6vw, 2.5rem); font-weight: 500; line-height: 1.2; }
.site-footer__payoff strong { color: var(--rosso-marchio); }
.site-footer__link { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; padding-block: 3rem; border-bottom: 1px solid rgb(255 255 255 / 0.12); }
.site-footer__titolo { margin-bottom: 1rem; font-size: 1rem; font-weight: 700; }
.site-footer__link li + li { margin-top: 0.6rem; }
.site-footer__link a { color: var(--testo-su-scuro); text-decoration: none; }
.site-footer__link a:hover, .site-footer__link a[aria-current="page"] { color: var(--giallo); }
.site-footer__bottom { display: flex; justify-content: space-between; align-items: center; gap: 2rem; padding-block: 2rem; font-size: 0.875rem; color: var(--testo-su-scuro); }
.site-footer__social { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: rgb(255 255 255 / 0.08); transition: background-color var(--transizione); }
.site-footer__social:hover { background: var(--rosso); }
.site-footer__social .icon { width: 1.2rem; height: 1.2rem; }
@media (max-width: 800px) {
  .site-footer__top { grid-template-columns: 1fr; }
  .site-footer__link { grid-template-columns: 1fr 1fr; }
  .site-footer__bottom { flex-direction: column; align-items: flex-start; }
}

/* ---------- Animazioni all'ingresso (solo con JS attivo e se l'utente non riduce il movimento) ---------- */
@media (prefers-reduced-motion: no-preference) {
  .js [data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease, transform 0.7s ease; }
  .js [data-reveal="sinistra"] { transform: translateX(-32px); }
  .js [data-reveal="destra"] { transform: translateX(32px); }
  .js [data-reveal].visibile { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: no-preference) and (max-width: 900px) {
  .js [data-reveal="sinistra"]:not(.visibile), .js [data-reveal="destra"]:not(.visibile) { transform: translateY(24px); }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; }
}

/* ---------- Area riservata ---------- */
.area-riservata .colonna-stretta { text-align: center; }
.area-riservata__icona { display: inline-grid; place-items: center; width: 4rem; height: 4rem; margin-bottom: 1rem; border-radius: 50%; background: var(--bianco); color: var(--rosso); box-shadow: var(--ombra); }
.area-riservata__icona .icon { width: 1.75rem; height: 1.75rem; }
.area-riservata__testo { text-align: center; text-align-last: center; }
.area-riservata__avviso { margin: 1.5rem auto 0; padding: 0.9rem 1.1rem; border-left: 3px solid var(--rosso); background: var(--bianco); text-align: left; }
.area-riservata__avviso--ok { border-left-color: #2e7d32; }
.area-riservata__nota { margin-top: 2rem; font-size: var(--fs-piccolo); color: var(--testo-tenue); text-align: center; text-align-last: center; }
.area-riservata__utente { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem; margin-bottom: 3rem; padding-bottom: 2rem; border-bottom: 1px solid var(--bordo); }
.area-riservata__utente .titolo-pagina { margin-bottom: 0.25rem; }
.area-riservata__email { margin: 0; color: var(--testo-tenue); }

/* Politica della qualità: il principio base in evidenza */
.qualita__principio { margin: 1.25rem 0; padding: 1rem 1.25rem; border-left: 4px solid var(--rosso); background: var(--chiaro); font-size: 1.125rem; font-style: italic; text-align: left; }

/* ---------- Foto degli impianti: galleria delle pagine industria, ingrandimento, foto nella pagina Soluzioni ---------- */
/* Galleria a mosaico: voci larghe (2 colonne) e alte (2 righe) */
.galleria { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 15rem; grid-auto-flow: dense; gap: 1rem; margin-top: 2.5rem; }
.galleria__voce { position: relative; overflow: hidden; border-radius: var(--raggio); background: var(--scuro); }
.galleria__voce--largo { grid-column: span 2; }
.galleria__voce--alto { grid-row: span 2; }
.galleria__voce a, .galleria__voce picture { display: block; height: 100%; }
.galleria__voce img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.galleria__voce a:hover img { transform: scale(1.04); }
.galleria__didascalia { position: absolute; inset: auto 0 0; padding: 2.5rem 1rem .9rem; color: var(--bianco); font-size: .9rem; line-height: 1.35;
  background: linear-gradient(transparent, rgb(0 0 0 / .75)); }
@media (max-width: 1100px) { .galleria { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .galleria { grid-template-columns: 1fr; grid-auto-rows: 14rem; } .galleria__voce--largo { grid-column: auto; } }

.lightbox { max-width: min(92vw, 1400px); padding: 0; border: 0; border-radius: var(--raggio); background: #000; overflow: visible; }
.lightbox::backdrop { background: rgb(0 0 0 / .85); }
.lightbox img { display: block; max-width: 100%; max-height: 82vh; margin: auto; }
.lightbox__didascalia { margin: 0; padding: .75rem 1rem; color: var(--bianco); background: #000; }
.lightbox__chiudi { position: absolute; top: -2.75rem; right: 0; width: 2.25rem; height: 2.25rem; display: grid; place-items: center;
  border: 0; border-radius: 50%; background: var(--bianco); color: var(--scuro); cursor: pointer; }

/* Pagina Soluzioni: striscia di foto sotto il testo della voce */
.servizio__foto { display: grid; grid-template-columns: repeat(3, minmax(0, 16rem)); gap: .75rem; margin-top: 1.25rem; padding: 0; list-style: none; }
.servizio__foto img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--raggio); display: block; }
