/* Tutti Al Centro, Fondazione ETS — foglio di stile unico.
   Colori: quelli ufficiali del logo (file esecutivi, luglio 2024). Rosso e
   antracite sono gli stessi di Al Centro S.p.A.
   Caratteri: Nunito per i titoli (terminali arrotondati come le lettere del
   logo) e Atkinson Hyperlegible per il testo, disegnato per essere letto
   bene anche da chi vede poco. Tutti e due stanno sul sito, in /font/. */

@font-face {
  font-family: "Nunito";
  src: url("/font/nunito-latin-wght-normal.woff2") format("woff2");
  font-weight: 200 1000;
  font-display: swap;
}
@font-face {
  font-family: "Atkinson Hyperlegible";
  src: url("/font/atkinson-hyperlegible-latin-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Atkinson Hyperlegible";
  src: url("/font/atkinson-hyperlegible-latin-400-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Atkinson Hyperlegible";
  src: url("/font/atkinson-hyperlegible-latin-700-normal.woff2") format("woff2");
  font-weight: 700;
  font-display: swap;
}

:root {
  /* i sette colori del logo */
  --rosso: #e51b1b;          /* il punto al centro; testo bianco sopra: 4,66:1 */
  --arancio: #f18400;
  --albicocca: #f9b233;      /* il colore del piè di pagina; antracite sopra: 6,5:1 */
  --giallo: #f8ea19;
  --lime: #dddc00;
  --grigio: #b3b2b2;
  --antracite: #373736;      /* «Fondazione ETS» nel logo; su bianco: 11,7:1 */

  --bianco: #ffffff;
  --fondo-tenue: #f4f4f3;
  --albicocca-tenue: #fdedc9;
  --attenuato: #5f5f5d;      /* testo secondario su bianco: 6,4:1 */
  --arancio-testo: #a85a00;  /* arancio per testo piccolo su bianco: 5,1:1 */
  --linea: #e2e1df;

  --titoli: "Nunito", "Trebuchet MS", Arial, sans-serif;
  --testo: "Atkinson Hyperlegible", Verdana, "Segoe UI", Arial, sans-serif;

  --larghezza: 72rem;
  --margine: clamp(1.25rem, 4vw, 3rem);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--bianco);
  color: var(--antracite);
  font-family: var(--testo);
  font-size: 1.125rem;
  line-height: 1.6;
}

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

h1, h2, h3 {
  font-family: var(--titoli);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0 0 0.6em;
  text-wrap: balance;
}
h1 { font-size: clamp(2.4rem, 5.5vw, 3.8rem); font-weight: 900; letter-spacing: -0.02em; }
h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); }
h3 { font-size: 1.3rem; }
p { margin: 0 0 1em; max-width: 38em; }

a { color: var(--antracite); text-decoration-color: var(--arancio); text-decoration-thickness: 2px; text-underline-offset: 0.2em; }
a:hover { color: var(--arancio-testo); }

:focus-visible { outline: 3px solid var(--rosso); outline-offset: 3px; border-radius: 3px; }

.salta {
  position: absolute; left: 1rem; top: -4rem; z-index: 10;
  background: var(--antracite); color: var(--bianco); padding: 0.6rem 1rem;
}
.salta:focus { top: 1rem; color: var(--bianco); }

.contenitore {
  width: 100%;
  max-width: calc(var(--larghezza) + 2 * var(--margine));
  margin-inline: auto;
  padding-inline: var(--margine);
}
.blocco { padding-block: clamp(3rem, 7vw, 5.5rem); }
.blocco + .blocco { padding-top: 0; }

/* ─── Bottoni e collegamenti ─────────────────────────────────────────────── */

.bottone {
  display: inline-block;
  background: var(--rosso);
  color: var(--bianco);
  font-family: var(--titoli);
  font-weight: 800;
  font-size: 1.05rem;
  text-decoration: none;
  padding: 0.75em 1.4em;
  border-radius: 999px;
  line-height: 1.2;
}
.bottone:hover { background: var(--antracite); color: var(--bianco); }
.bottone-scuro { background: var(--antracite); }
.bottone-scuro:hover { background: var(--rosso); }
.bottone-grande { font-size: 1.2rem; padding: 0.9em 1.7em; }
button.bottone { border: 0; cursor: pointer; }

.collegamento { font-family: var(--titoli); font-weight: 800; }
.azioni { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: 1.75rem; }

/* ─── Testata ────────────────────────────────────────────────────────────── */

.testata { background: var(--bianco); border-bottom: 1px solid var(--linea); }
.testata-riga {
  display: flex; align-items: center; gap: 2rem;
  max-width: calc(var(--larghezza) + 2 * var(--margine));
  margin-inline: auto;
  padding: 0.9rem var(--margine);
}
.marchio { display: block; margin-right: auto; line-height: 0; }
.marchio img { height: 3.4rem; width: auto; }
@media (max-width: 30rem) { .marchio img { height: 2.7rem; } }

nav ul { list-style: none; margin: 0; padding: 0; }
.menu-largo { display: flex; gap: 2rem; }
.menu-largo a, .menu-mobile a {
  font-family: var(--titoli);
  font-weight: 700;
  font-size: 1.1rem;
  color: var(--antracite);
  text-decoration: none;
  padding-block: 0.3rem;
}
.menu-largo a { position: relative; }
.menu-largo a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -3px; height: 3px;
  border-radius: 3px; background: var(--arancio);
  scale: 0 1; transform-origin: left;
}
.menu-largo a:hover::after, .menu-largo a:focus-visible::after, .menu-largo a[aria-current="page"]::after { scale: 1 1; }

.menu-mobile { display: none; position: relative; }
.menu-mobile summary {
  cursor: pointer; list-style: none;
  font-family: var(--titoli); font-weight: 800;
  padding: 0.5rem 1rem;
  border: 2px solid var(--antracite); border-radius: 999px;
}
.menu-mobile summary::-webkit-details-marker { display: none; }
.menu-mobile[open] summary { background: var(--antracite); color: var(--bianco); }
.menu-mobile ul {
  position: absolute; right: 0; top: calc(100% + 0.6rem); z-index: 5;
  background: var(--bianco); border: 1px solid var(--linea); border-radius: 14px;
  padding: 1rem 1.25rem; min-width: 13rem; display: grid; gap: 0.75rem;
  box-shadow: 0 12px 30px rgb(55 55 54 / 0.15);
}
@media (max-width: 46rem) {
  .menu-largo { display: none; }
  .menu-mobile { display: block; }
}

/* ─── Il simbolo ─────────────────────────────────────────────────────────── */

.simbolo { display: block; height: auto; }
.simbolo circle { transform-box: fill-box; transform-origin: center; }

/* ─── Home: apertura ─────────────────────────────────────────────────────── */
/* Il posto del vecchio video. Un solo momento: il simbolo si compone. */

.eroe { padding-block: clamp(3rem, 8vw, 6.5rem); overflow: hidden; }
.eroe-griglia {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  align-items: center;
  gap: 2rem clamp(2rem, 5vw, 5rem);
}
.eroe h1 { font-size: clamp(2.8rem, 6.8vw, 5.4rem); line-height: 1; margin-bottom: 0.45em; }
.eroe-sotto { font-size: clamp(1.15rem, 1.7vw, 1.35rem); max-width: 30em; }
.eroe-simbolo .simbolo { width: 100%; max-width: 30rem; margin-inline: auto; overflow: visible; }
@media (max-width: 46rem) {
  .eroe-griglia { grid-template-columns: 1fr; }
  .eroe-simbolo { order: -1; }
  .eroe-simbolo .simbolo { max-width: 13rem; margin-inline: 0; }
}

/* ─── Home: missione, numeri, gruppi, citazione ──────────────────────────── */

.due-colonne { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem clamp(2rem, 5vw, 4.5rem); align-items: start; }
@media (max-width: 46rem) { .due-colonne { grid-template-columns: 1fr; } }
.grande {
  font-family: var(--titoli);
  font-size: clamp(1.4rem, 2.4vw, 1.85rem);
  line-height: 1.3;
  font-weight: 700;
}

/* I numeri stanno dentro tre pallini, con i colori del logo. */
.numeri { background: var(--fondo-tenue); padding-block: clamp(2.5rem, 6vw, 4rem); }
.numeri ul {
  list-style: none; margin-block: 0;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem;
}
.numeri li { display: flex; align-items: center; gap: 1.25rem; }
.numero {
  flex: none;
  display: grid; place-items: center;
  width: clamp(6rem, 11vw, 8.5rem); aspect-ratio: 1; border-radius: 50%;
  font-family: var(--titoli); font-weight: 900;
  font-size: clamp(1.7rem, 3.2vw, 2.5rem); letter-spacing: -0.02em;
  background: var(--albicocca);
}
.numeri li:nth-child(2) .numero { background: var(--lime); }
.numeri li:nth-child(3) .numero { background: var(--giallo); }
.numero-testo { font-size: 1.1rem; line-height: 1.35; max-width: 12em; }
@media (max-width: 52rem) {
  .numeri ul { grid-template-columns: 1fr; gap: 1.25rem; }
}

.gruppi {
  list-style: none; margin: 2rem 0 1.5rem; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 2rem 2.5rem;
}
.gruppi li { border-top: 3px solid var(--antracite); padding-top: 1.1rem; }
.gruppi h3 { font-size: 1.45rem; margin-bottom: 0.4rem; }
.gruppi h3::before {
  content: ""; display: inline-block; width: 0.55em; height: 0.55em;
  margin-right: 0.4em; border-radius: 50%; background: var(--arancio);
  vertical-align: 0.08em;
}
.gruppi li:nth-child(2) h3::before { background: var(--lime); }
.gruppi li:nth-child(3) h3::before { background: var(--giallo); }
.gruppi p { margin: 0; font-size: 1.05rem; }

.citazione-blocco { padding-block: clamp(3rem, 8vw, 6rem); border-block: 1px solid var(--linea); }
.citazione { margin-block: 0; }
.citazione blockquote { margin: 0 0 1.5rem; position: relative; padding-left: clamp(2.5rem, 6vw, 4.5rem); }
/* il punto rosso fa da virgolette */
.citazione blockquote::before {
  content: ""; position: absolute; left: 0; top: 0.35em;
  width: clamp(1.3rem, 3vw, 2rem); aspect-ratio: 1; border-radius: 50%;
  background: var(--rosso);
}
.citazione blockquote p {
  font-family: var(--titoli); font-weight: 800;
  font-size: clamp(1.7rem, 4vw, 3rem); line-height: 1.15; letter-spacing: -0.015em;
  max-width: 22em; margin: 0; text-wrap: balance;
}
.citazione figcaption { padding-left: clamp(2.5rem, 6vw, 4.5rem); font-size: 1.1rem; }
.citazione figcaption strong { display: block; font-family: var(--titoli); font-size: 1.25rem; }

.richiamo {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 1.5rem 3rem;
  background: var(--albicocca-tenue);
  padding: clamp(1.75rem, 4vw, 3rem);
  border-radius: 28px;
}
.richiamo h2 { margin-bottom: 0.3em; }
.richiamo p { margin: 0; }

/* ─── Pagine interne ─────────────────────────────────────────────────────── */

.testata-pagina {
  position: relative; overflow: hidden;
  padding-block: clamp(3rem, 8vw, 6rem);
  border-bottom: 1px solid var(--linea);
}
.testata-pagina .contenitore { position: relative; z-index: 1; }
.testata-pagina .simbolo {
  position: absolute; width: 24rem; right: -6rem; top: 50%; translate: 0 -50%;
}
.introduzione { font-size: clamp(1.15rem, 1.8vw, 1.35rem); max-width: 32em; }
@media (max-width: 62rem) { .testata-pagina .contenitore { padding-right: 16rem; } }
@media (max-width: 46rem) {
  .testata-pagina .simbolo { display: none; }
  .testata-pagina .contenitore { padding-right: var(--margine); }
}

.nota { background: var(--fondo-tenue); padding: 1.75rem; border-radius: 20px; }
.nota h3 { font-size: 1.15rem; }
.nota p { font-size: 1rem; margin: 0; }

.strumenti { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.9rem; }
.strumenti li { padding-left: 1.5rem; position: relative; }
.strumenti li::before {
  content: ""; position: absolute; left: 0; top: 0.5em;
  width: 0.65rem; height: 0.65rem; border-radius: 50%; background: var(--albicocca);
}
.strumenti strong { font-family: var(--titoli); font-weight: 800; }

.consiglio {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 1.5rem 2.5rem;
}
.consiglio li { border-top: 3px solid var(--antracite); padding-top: 1rem; }
.consiglio li:first-child { border-top-color: var(--rosso); }
.consiglio-nome { display: block; font-family: var(--titoli); font-weight: 800; font-size: 1.45rem; line-height: 1.2; }
.consiglio-ruolo { color: var(--attenuato); }

.scheda { background: var(--fondo-tenue); border-radius: 24px; padding: clamp(1.5rem, 4vw, 2.25rem); }
.contatti { margin: 0; display: grid; gap: 0.9rem; }
.contatti dt { font-size: 0.95rem; color: var(--attenuato); }
.contatti dd { margin: 0; overflow-wrap: anywhere; }
.contatti-larghi > div { display: grid; grid-template-columns: 12rem 1fr; gap: 1rem; border-top: 1px solid var(--linea); padding-top: 0.9rem; }
@media (max-width: 40rem) { .contatti-larghi > div { grid-template-columns: 1fr; gap: 0.1rem; } }
.spazio-sopra { margin-top: 2.25rem; }

/* ─── Progetti ───────────────────────────────────────────────────────────── */

.progetti { display: grid; gap: 1.5rem; }
.progetto {
  display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: 1.5rem clamp(2rem, 5vw, 4rem);
  background: var(--fondo-tenue); border-radius: 24px; padding: clamp(1.5rem, 4vw, 2.5rem);
  scroll-margin-top: 1.5rem;
}
.progetto:target { outline: 3px solid var(--arancio); }
.progetto h3 { font-size: clamp(1.6rem, 3vw, 2.1rem); margin-bottom: 0.4rem; }
.progetto h3::before {
  content: ""; display: inline-block; width: 0.45em; height: 0.45em;
  margin-right: 0.35em; border-radius: 50%; background: var(--arancio); vertical-align: 0.1em;
}
.progetto:nth-child(3n+2) h3::before { background: var(--lime); }
.progetto:nth-child(3n+3) h3::before { background: var(--giallo); }
.progetto-testa p { font-family: var(--titoli); font-weight: 700; font-size: 1.25rem; line-height: 1.3; margin: 0; }
.progetto-dati { margin: 0; display: grid; gap: 0.9rem; }
.progetto-dati > div { border-top: 1px solid var(--linea); padding-top: 0.8rem; }
.progetto-dati dt { font-size: 0.95rem; color: var(--attenuato); }
.progetto-dati dd { margin: 0; }
.progetto-dati ul { list-style: none; margin: 0; padding: 0; }
@media (max-width: 46rem) { .progetto { grid-template-columns: 1fr; } }

.progetti-breve {
  list-style: none; margin: 1.5rem 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: 1.25rem;
}
.progetti-breve a {
  display: block; height: 100%; text-decoration: none;
  background: var(--fondo-tenue); border-radius: 20px; padding: 1.4rem 1.6rem;
}
.progetti-breve a:hover { background: var(--albicocca-tenue); color: var(--antracite); }
.progetti-nome { display: block; font-family: var(--titoli); font-weight: 800; font-size: 1.5rem; margin-bottom: 0.25rem; }

/* ─── Pagine di testo ────────────────────────────────────────────────────── */

/* La sezione resta un normale .contenitore (allineata a testata e piè di
   pagina); è il testo al suo interno a fermarsi a 46rem per restare leggibile. */
.testo-legale > * { max-width: 46rem; }
.testo-legale h1 { font-size: clamp(2.25rem, 5vw, 3.25rem); }
.testo-legale h2 { font-size: 1.5rem; margin-top: 2rem; }
.testo-legale h3 { font-size: 1.2rem; margin-top: 1.5rem; }
.testo-legale ul { padding-left: 1.2rem; }
.elenco-semplice li { margin-bottom: 0.4rem; }

/* ─── Piè di pagina ──────────────────────────────────────────────────────── */
/* Albicocca con il logo in antracite, come sul sito precedente. */

.piede { background: var(--albicocca); color: var(--antracite); padding: 3.5rem var(--margine) 2rem; font-size: 1rem; }
/* Una sola colonna centrata, larga come il resto della pagina: logo, colonne
   e testo legale restano allineati a qualsiasi larghezza e ingrandimento. */
.piede-dentro { max-width: var(--larghezza); margin-inline: auto; }
.piede a { color: var(--antracite); text-decoration-color: currentColor; text-decoration-thickness: 1px; }
.piede a:hover { color: var(--antracite); text-decoration-thickness: 3px; }
.piede :focus-visible { outline-color: var(--antracite); }
.piede ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.35rem; }
.piede p { max-width: none; }
.piede-colonne { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); gap: 2rem; margin-bottom: 2.5rem; }
.piede-colonne p:last-child { margin-bottom: 0; }
.piede-marchio img { display: block; width: 100%; max-width: 16rem; height: auto; }
.piede-titolo { font-family: var(--titoli); font-weight: 800; font-size: 1.15rem; margin-bottom: 0.5rem; }
.piede-legale { font-size: 0.92rem; border-top: 1px solid rgb(55 55 54 / 0.35); padding-top: 1.25rem; margin-bottom: 0; }
.piede .piede-documenti { display: flex; flex-wrap: wrap; gap: 0.4rem 1.5rem; margin-top: 0.9rem; font-size: 0.92rem; }
@media (max-width: 46rem) {
  .piede-colonne { grid-template-columns: 1fr; gap: 1.75rem; }
  .piede-marchio img { max-width: 13rem; }
}

/* ─── Banner dei cookie (solo se in dati.mjs c'è Analytics) ─────────────── */

.consenso {
  position: fixed; left: 50%; bottom: calc(1rem + env(safe-area-inset-bottom, 0px)); translate: -50% 0; z-index: 30;
  width: min(46rem, calc(100% - 2rem));
  display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem;
  background: var(--bianco); padding: 1.1rem 1.4rem; border-radius: 18px;
  border-top: 4px solid var(--albicocca); box-shadow: 0 16px 40px rgb(0 0 0 / 0.3);
}
.consenso[hidden] { display: none; }
.consenso p { margin: 0; flex: 1 1 22rem; font-size: 0.98rem; }
.consenso-azioni { display: flex; gap: 0.75rem; }

/* ─── Bozza ──────────────────────────────────────────────────────────────── */

mark.manca { background: #ffe24a; color: #2b2b2a; padding: 0.05em 0.35em; border-radius: 4px; font-size: 0.9em; font-weight: 700; }

/* ─── Movimento ──────────────────────────────────────────────────────────────
   Un solo momento forte: all'apertura della home i tredici pallini arrivano
   da punti diversi e si mettono in cerchio, poi il punto rosso si posa al
   centro. Il resto risponde solo a quello che fa la persona. Chi ha chiesto
   al dispositivo di ridurre il movimento vede il simbolo già composto.
   I punti di partenza (--dx, --dy, --n) sono in fondo al file, generati da
   simbolo.mjs quando si costruisce il sito. */

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }

  .simbolo-animato .pallino {
    animation: arriva 1s cubic-bezier(0.2, 0.8, 0.25, 1) calc(0.2s + var(--n, 0) * 0.07s) both;
  }
  .simbolo-animato .centro {
    animation: posa 0.7s cubic-bezier(0.3, 1.5, 0.5, 1) 1.35s both;
  }

  .bottone { transition: background-color 0.2s, color 0.2s, scale 0.15s; }
  .bottone:active { scale: 0.97; }
  .menu-largo a::after { transition: scale 0.25s ease-out; }
  .menu-mobile[open] ul { animation: apri 0.2s ease-out; }
  .consenso:not([hidden]) { animation: compare 0.35s ease-out; }
}

@keyframes arriva {
  from { transform: translate(var(--dx, 0), var(--dy, 0)) scale(0.35); opacity: 0; }
  50% { opacity: 1; }
  to { transform: none; opacity: 1; }
}
@keyframes posa {
  from { transform: scale(0); }
  to { transform: scale(1); }
}
@keyframes compare { from { opacity: 0; } }
@keyframes apri { from { opacity: 0; translate: 0 -0.4rem; } }

/* Punti di partenza dei pallini (generati da simbolo.mjs) */
.simbolo-animato .pallino:nth-child(1) { --dx: -99px; --dy: -138px; --n: 0; }
.simbolo-animato .pallino:nth-child(2) { --dx: 152px; --dy: -172px; --n: 1; }
.simbolo-animato .pallino:nth-child(3) { --dx: 81px; --dy: -278px; --n: 2; }
.simbolo-animato .pallino:nth-child(4) { --dx: 170px; --dy: 10px; --n: 3; }
.simbolo-animato .pallino:nth-child(5) { --dx: 211px; --dy: -92px; --n: 4; }
.simbolo-animato .pallino:nth-child(6) { --dx: 171px; --dy: 234px; --n: 5; }
.simbolo-animato .pallino:nth-child(7) { --dx: 150px; --dy: 80px; --n: 6; }
.simbolo-animato .pallino:nth-child(8) { --dx: -64px; --dy: 221px; --n: 7; }
.simbolo-animato .pallino:nth-child(9) { --dx: 51px; --dy: 286px; --n: 8; }
.simbolo-animato .pallino:nth-child(10) { --dx: -157px; --dy: 66px; --n: 9; }
.simbolo-animato .pallino:nth-child(11) { --dx: -152px; --dy: 173px; --n: 10; }
.simbolo-animato .pallino:nth-child(12) { --dx: -253px; --dy: -142px; --n: 11; }
.simbolo-animato .pallino:nth-child(13) { --dx: -170px; --dy: -9px; --n: 12; }
