/* Redesign 2026 – base: reset, tipografia, layout, accessibilità */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition: none !important; animation: none !important; } }
body {
  margin: 0;
  background: var(--sfondo-pagina);
  color: var(--testo-primario);
  font-family: var(--font-testo);
  font-size: var(--fs-corpo-m);
  line-height: var(--lh-corpo-m);
  -webkit-font-smoothing: antialiased;
}
img, svg, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button, input, textarea, select { font: inherit; color: inherit; }
h1, h2, h3, h4, h5, h6, p, ul, ol, figure, blockquote { margin: 0; }
:where(ul[role="list"], ol[role="list"]) { padding: 0; list-style: none; }   /* :where: specificità zero, il padding delle classi dei componenti vince */

/* ---------- Tipografia ---------- */
.nw-h1, .nw-h2, .nw-h3, .nw-h4, .nw-h5, .nw-h3-maiuscolo, .nw-titolo-card {
  font-family: var(--font-titoli);
  font-weight: var(--peso-regolare);
  text-wrap: balance;
}
.nw-h1 { font-size: var(--fs-h1); line-height: var(--lh-h1); }
.nw-h2 { font-size: var(--fs-h2); line-height: var(--lh-h2); }
.nw-h3 { font-size: var(--fs-h3); line-height: var(--lh-h3); }
.nw-h3-maiuscolo { font-size: var(--fs-h3-maiuscolo); line-height: var(--lh-h3-maiuscolo); text-transform: uppercase; letter-spacing: 0.02em; }
.nw-h4 { font-size: var(--fs-h4); line-height: var(--lh-h4); }
.nw-h5 { font-size: var(--fs-h5); line-height: var(--lh-h5); }
.nw-titolo-card { font-size: var(--fs-card); line-height: var(--lh-card); font-weight: var(--peso-bold); }
.nw-dato { font-family: var(--font-testo); font-size: var(--fs-dato); line-height: var(--lh-dato); font-weight: var(--peso-bold); color: var(--testo-accento-grande); }
.nw-lead { font-size: var(--fs-lead); line-height: var(--lh-lead); }
.nw-corpo-l { font-size: var(--fs-corpo-l); line-height: var(--lh-corpo-l); }
.nw-corpo-m { font-size: var(--fs-corpo-m); line-height: var(--lh-corpo-m); }
.nw-corpo-s { font-size: var(--fs-corpo-s); line-height: var(--lh-corpo-s); }
.nw-didascalia { font-size: var(--fs-didascalia); line-height: var(--lh-didascalia); }
.nw-etichetta {
  font-size: var(--fs-etichetta); line-height: var(--lh-etichetta); font-weight: var(--peso-semibold);
  letter-spacing: var(--ls-etichetta); text-transform: uppercase; color: var(--testo-accento);
}
.nw-secondario { color: var(--testo-secondario); }
.nw-centrato { text-align: center; margin-inline: auto; }

/* Testo lungo (articoli, pagine di testo) */
.nw-prosa { max-width: var(--layout-testo); font-size: var(--fs-corpo-l); line-height: var(--lh-corpo-l); }
.nw-prosa > * + * { margin-top: var(--space-md); }
.nw-prosa h2, .nw-prosa h3, .nw-prosa h4 { font-family: var(--font-titoli); font-weight: var(--peso-regolare); margin-top: var(--space-2xl); }
.nw-prosa h2 { font-size: var(--fs-h3); line-height: var(--lh-h3); }
.nw-prosa h3, .nw-prosa h4 { font-size: var(--fs-h4); line-height: var(--lh-h4); }
.nw-prosa ul, .nw-prosa ol { padding-left: 1.25em; }
.nw-prosa li + li { margin-top: var(--space-xs); }
.nw-prosa a { color: var(--testo-accento); text-underline-offset: 3px; }
.nw-prosa img { margin-block: var(--space-xl); }

/* ---------- Layout ---------- */
.nw-contenitore { width: 100%; max-width: var(--layout-larghezza-max); margin-inline: auto; padding-inline: var(--layout-margine); }
.nw-sezione { padding-block: calc(var(--layout-sezione) - 10px) var(--layout-sezione); }   /* review 28/10: 10px in meno sopra */
.nw-sezione--compatta { padding-block: calc(var(--layout-sezione) / 2); }
.nw-sezione--tenue { background: var(--sfondo-tenue); }
.nw-sezione--scura { background: var(--sfondo-scuro); color: var(--testo-inverso); }
.nw-pila { display: flex; flex-direction: column; gap: var(--pila-gap, var(--space-lg)); }
.nw-pila--ampia { --pila-gap: var(--space-2xl); }
.nw-pila--stretta { --pila-gap: var(--space-md); }
.nw-griglia { display: grid; gap: var(--layout-colonne-gap); grid-template-columns: 1fr; }
@media (min-width: 768px) {
  .nw-griglia--2, .nw-griglia--3, .nw-griglia--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .nw-griglia--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .nw-griglia--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .nw-colonne { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 96px; align-items: start; }
}
.nw-colonne { display: grid; gap: var(--space-xl); }

/* ---------- Accessibilità ---------- */
:focus-visible { outline: none; box-shadow: var(--focus-anello); border-radius: 4px; }
.nw-sezione--scura :focus-visible, .nw-su-scuro :focus-visible { box-shadow: 0 0 0 3px var(--sfondo-scuro), 0 0 0 5px var(--niew-bianco); }
.nw-salta {
  position: absolute; left: var(--space-md); top: -100px; z-index: 2000;
  padding: var(--space-sm) var(--space-md); background: var(--azione-primaria); color: var(--testo-inverso);
  border-radius: var(--radius-pillola); font-weight: var(--peso-semibold); text-decoration: none;
}
.nw-salta:focus { top: var(--space-md); }
.nw-nascosto { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Review del 28/10/2026: niente parole sole a capo. Titoli e sottotitoli bilanciati, paragrafi senza vedove */
.nw-h1, .nw-h2, .nw-h3, .nw-lead { text-wrap: balance; }
p, li, dd { text-wrap: pretty; }
