/* technical_installer — token del verticale.
   Palette PRESA DAI PIXEL del marchio del primo cliente: il rosso dominante misurato su LOGO.jpg e
   su ROTETOR 2 converge su #C41824 (15.057 px rossi sul primo, 134.351 sul secondo). Ogni coppia
   testo/fondo e' misurata sulla superficie reale su cui viene usata.

   ⚠⚠ IL ROSSO E' L'OPPOSTO DELL'AMBRA DI heavy_vehicle_workshop: porta il BIANCO (5,99) e NON porta
   il nero (3,02). Sopra `--accent` va SEMPRE `--on-accent` (bianco). E nel verso opposto il rosso di
   marca NON regge come inchiostro sul fondo scuro (3,18 su `--brand`): li' serve `--accent-on-dark`,
   che e' il rosso schiarito (6,27). Sono due token distinti perche' sono due misure diverse, e un
   colore che porta il bianco sopra di se' e' troppo scuro per fare da inchiostro sul near-black.
   Verificate 20 coppie ammesse (tutte >= AA) e 5 vietate (tutte sotto soglia: il divieto e' reale,
   non scritto in un verso solo). */

:root {
  /* --- ruoli semantici del genoma (nomi CHIUSI, condivisi da tutti i verticali) --- */
  --brand-dark: #0a0b0d;   /* il piu' scuro: piè */
  --brand: #0e1013;        /* fondo scuro principale: barra alta e bande di respiro */
  --brand-mid: #1a1d22;    /* seconda superficie scura */
  --sage: #e2ddd7;         /* filetti e superfici intermedie */
  --sage-light: #f0edea;   /* superficie chiara: bande alterne */
  --sage-tint: #faf8f6;    /* carta calda: fondo pagina */
  --accent-ink: #a2131d;   /* rosso-inchiostro su chiaro: 7,49 su carta · 6,80 su superficie */
  --accent: #c41824;       /* ROSSO DI MARCA: campi pieni, filetti, bottoni */
  --accent-dark: #8e101a;  /* rosso profondo: stati (bianco sopra 9,38) */
  --paper: #faf8f6;
  --surface: #f0edea;
  --ink: #14161a;          /* 17,10 su carta · 15,53 su superficie */
  --ink-muted: #5a5751;    /* 6,80 su carta · 6,17 su superficie */
  --line: #e2ddd7;
  --on-dark: #ffffff;      /* 19,05 sul fondo scuro · 19,69 sul piè */
  --on-dark-muted: #b9b5b0;/* 9,34 sul fondo scuro · 9,66 sul piè */
  --focus: #a2131d;
  /* ⚠⚠ Bianco SUL ROSSO. Sta fuori dalla rimappatura delle superfici scure: dentro una banda scura
     `--ink` diventa chiaro, ma il campo rosso resta rosso — e il nero sul rosso fa 3,02. Un token
     rimappato dal contesto non puo' vestire una superficie che dal contesto NON dipende. */
  --on-accent: #ffffff;
  /* ⚠⚠ L'accento come INCHIOSTRO sulle bande scure. Il rosso di marca li' fa 3,18 e non regge: serve
     la versione schiarita (6,27 sul fondo scuro, 6,48 sul piè). Il DEFAULT e' questo valore, quindi
     un secondo cliente con un accento piu' chiaro puo' rimapparlo senza toccare il sito del primo. */
  --accent-on-dark: #ff5a66;

  /* ⚠⚠ MISURE DI LETTURA come token, non come `max-width` sparsi nel foglio: un secondo cliente non
     potrebbe toccarle senza toccare il sito del primo. Il default e' il valore attuale.
     ⚠ La misura sta sul PARAGRAFO e sul TITOLO, mai su un contenitore o su una riga di griglia: il
     `ch` si risolve sul font del contenitore, non su quello del testo reso. */
  --misura-titolo: 26ch;
  --misura-hero-lead: 52ch;
  --misura-lead: 64ch;
  --misura-prosa: 68ch;
  --misura-tessera: 40ch;
  --misura-nota: 58ch;

  /* --- tipografia: due famiglie OFL self-hosted (zero-live: mai un font remoto) ---
     Oswald porta i display: il condensato riprende il ritmo stretto del wordmark del marchio senza
     scimmiottarne il corsivo. Il testo e' Figtree, che regge i capoversi lunghi del mestiere. */
  --font-display: "Oswald", "Arial Narrow", system-ui, sans-serif;
  --font-body: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;

  /* La scala tipografica: i nomi `--text-*` sono quelli che l'emitter legge per derivare i fontSizes
     di theme.json (tokensOf lancia se ne manca uno).
     ⚠ Dentro clamp() il `+` ESIGE gli spazi — senza, la dichiarazione e' invalida e sparisce senza
     lasciare traccia nel sorgente. Pagato su questo verticale: 8 griglie con `gap: normal`. */
  --text-sm: .9375rem;
  --text-base: 1.0625rem;
  --text-md: 1.1875rem;
  --text-lg: 1.375rem;
  --text-xl: clamp(1.5rem, 1.15rem + 1.5vw, 2.125rem);
  --text-2xl: clamp(1.9rem, 1.3rem + 2.6vw, 3rem);
  --text-3xl: clamp(2.4rem, 1.5rem + 3.8vw, 4.25rem);

  --t-xs: .8125rem;
  --t-sm: var(--text-sm);
  --t-base: var(--text-base);
  --t-lead: var(--text-md);
  --t-lg: var(--text-lg);
  --t-xl: var(--text-xl);
  --t-2xl: var(--text-2xl);
  --t-3xl: var(--text-3xl);

  --lh-body: 1.65;
  --lh-heading: 1.18;
  /* ⚠ Questi cinque token non li consuma il CSS del verticale: li pretendono le TOPOLOGIE condivise,
     che possono usare solo i token comuni a TUTTI i verticali. Un verticale nuovo che non li dichiara
     restringe l'insieme comune e fa cadere il gate `topology` per l'intera flotta. */
  --lh-snug: 1.3;
  --lh-tight: 1.12;
  --tracking-label: .14em;
  --bg: var(--paper);

  /* --- misure --- */
  --container: 80rem;
  --gutter: clamp(1rem, .4rem + 2.4vw, 2.5rem);
  --section-y: clamp(3.5rem, 2rem + 5vw, 6.5rem);
  --space-1: .25rem;
  --space-2: .5rem;
  --space-3: .75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4rem;
  --space-9: 5.5rem;
  --space-10: 7rem;

  /* Raggio quasi nullo: e' un mestiere tecnico, non un servizio morbido. Un filo di raggio toglie
     l'aria da cantiere senza addolcire. */
  --radius: 4px;
  --radius-lg: 6px;   /* preteso dalle topologie condivise */
  --ease: cubic-bezier(.2, .7, .3, 1);
}
