/* =====================================================================
   ImmoProf — tokens v4
   Fonte: docs/UX_UI_AUDIT_2026-09-18/02_AUDIT_DESIGN_SYSTEM.md §7.1
   (proposta A1, 18/09/2026), copiato integralmente.

   Va caricato PER PRIMO in ogni <head>, prima di global.css e prima dei
   <style> di pagina: chi viene dopo vince, ed e' cosi' che il passo 0 della
   migrazione non sposta un pixel.

   Il blocco [data-theme="scuro"] resta DEFINITO ma non e' applicato a nessuna
   pagina: tema carta ovunque, per decisione del PO.
   ===================================================================== */
:root {
  /* ---- Superfici (65%) ---- */
  --carta:            #F6F2EA;   /* fondo pagina */
  --carta-2:          #EFE9DC;   /* fondo sezione alternata */
  --foglio:           #FBF8F2;   /* card, box, superficie sollevata */
  --foglio-alto:      #FFFFFF;   /* input, superficie massima */

  /* ---- Inchiostro (8%) ---- */
  --inchiostro:       #0F1B2D;
  --inchiostro-80:    #0F1B2DCC;  /* testo secondario forte */
  --inchiostro-70:    #0F1B2DB3;  /* testo secondario: 6,00:1 chiaro · 8,18:1 scuro */
  --inchiostro-50:    #0F1B2D80;  /* 3,28:1 sul CHIARO -> mai testo li'.
                                     ATTENZIONE: nel tema scuro fa 4,72:1 ed e' testo valido:
                                     il vincolo dipende dal tema, non dal token */
  --inchiostro-48:    #0F1B2D7A;  /* bordo di un CONTROLLO: 3,07:1 chiaro · 4,46:1 scuro */
  --inchiostro-30:    #0F1B2D4D;  /* placeholder */
  /* --- addendum E3 (non in §7.1): i gradini che admin e dashboard
     chiamano da sempre senza che nessuno li definisse. 62 call-site nella
     sola admin rendevano la dichiarazione invalida. Stessa scala, stessa
     tinta: sono opacita' dell'inchiostro, non colori nuovi. --- */
  --inchiostro-60:    #0F1B2D9E;  /* alpha .62: 4,68:1 su carta, 4,78:1 su foglio (a .60 faceva 4,41: sotto AA) */
  --inchiostro-40:    #0F1B2D66;  /* solo bordi e fondi, mai testo */
  --inchiostro-20:    #0F1B2D33;  /* divisore */
  --inchiostro-10:    #0F1B2D1A;  /* fondo tenue */
  --inchiostro-05:    #0F1B2D0D;  /* fondo tenuissimo */
  --inchiostro-15:    #0F1B2D26;  /* divider DECORATIVO: 1,35:1 chiaro, 1,49:1 scuro.
                                     Non e' soggetto a 1.4.11 perche' non identifica un
                                     controllo. Se separa due controlli, usare -48. */

  /* ---- Toga = PRIMARIO (22%) ---- */
  --toga:             #2C4670;   /* CTA, link, focus: 8,48:1 su #F6F2EA · 8,29:1 su #F4EFEA */
  --toga-deep:        #1B2D4D;   /* hover              12,30:1 */
  --toga-tenue:       #2C46701F; /* fondo selezione */
  --toga-velo:        #2C46700F; /* velo di riga (hover/riga attiva nelle griglie): 6 %, sotto il tenue. Aggiunto 20/9 per la griglia studio A */

  /* ---- Gesso = ACCENTO (5%) ---- */
  --gesso:            #E26A2C;   /* fondo pieno, marker premium */
  --gesso-testo:      #AC4517;   /* l'accento quando e' TESTO. 5,20 su carta · 4,80 su carta-2 ·
                                    5,48 su foglio · 5,80 sul bianco. Era #B4491A: giusto
                                    sulla carta (4,81) e SOTTO soglia sulla carta-2 (4,44),
                                    che e' la superficie della barra laterale e di
                                    `--wz-superficie-2`. Misurato con le coppie del
                                    contratto del wizard (F5, giro 3). */
  --gesso-soft:       #F4C8A6;
  --gesso-tenue:      #E26A2C1F;

  /* ---- Verdict semantico (universale, un solo set) ---- */
  --verdict-ok:       #146B33;   /* testo su carta      5,91:1 */
  --verdict-ok-fondo: #E4F0E8;
  --verdict-attesa:   #8A6100;   /* testo su carta      4,96:1 (margine 10%) */
  --verdict-attesa-fondo: #F7EFD9;
  --verdict-critico:  #B3261E;   /* testo su carta      5,85:1 */
  --verdict-critico-fondo: #F7E3E1;
  --bordeaux:         #6E1F1F;   /* blocco / errore di sistema */

  /* ---- Verdict su fondo scuro (tema app) ---- */
  --verdict-ok-su-scuro:      #5FD6A0;
  --verdict-attesa-su-scuro:  #FCD34D;
  --verdict-critico-su-scuro: #F87171;

  /* ---- Tipografia ---- */
  --serif: 'Newsreader', Georgia, serif;
  --sans:  'Geist', 'Helvetica Neue', Arial, sans-serif;
  --mono:  'Geist Mono', ui-monospace, Menlo, monospace;
  --fs-9:11px; --fs-8:12px; --fs-7:13px; --fs-6:14px; --fs-5:16px;
  --fs-4:18px; --fs-3:22px; --fs-2:28px; --fs-1:36px; --fs-0:clamp(36px,5vw,56px);
  /* 11px è il MINIMO e solo per mono/uppercase. Niente mezzi punti. */

  /* ---- Geometria ---- */
  --radius-sm: 6px; --radius: 10px; --radius-lg: 16px; --radius-pill: 999px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:48px;
  --shadow-sm: 0 1px 2px rgba(15,27,45,.06);
  --shadow:    0 4px 12px rgba(15,27,45,.08);
  --shadow-lg: 0 20px 60px rgba(15,27,45,.24);
  --scrim:     rgba(15,27,45,.72);   /* UNICO scrim di overlay */

  /* ---- Stati ----
     --focus NON puo' essere un colore fisso: deve seguire il tema, o resta
     invisibile su meta' prodotto (K-01b). Qui e' agganciato a --toga, che il
     blocco [data-theme="scuro"] rimappa. */
  --focus: var(--toga);   /* chiaro: 8,48:1 · scuro (via --toga #8FB3E8): 8,58 / 7,43 / 8,11 */
  --t-fast:150ms ease; --t:220ms ease; --t-slow:400ms cubic-bezier(.16,1,.3,1);
}

/* Tema scuro dell'app: stesse VARIABILI, valori diversi. Nessun :root per file.
   DEFINITO ma NON APPLICATO: nessuna pagina porta data-theme="scuro". */
[data-theme="scuro"] {
  --carta:#0E1420; --carta-2:#131A28; --foglio:#1A2231; --foglio-alto:#1B2333;
  --inchiostro:#F1EEE3; --inchiostro-80:#F1EEE3CC; --inchiostro-70:#F1EEE3B3;
  --inchiostro-50:#F1EEE380; --inchiostro-48:#F1EEE37A;
  --inchiostro-30:#F1EEE34D; --inchiostro-15:#F1EEE326;
  --toga:#8FB3E8; --toga-deep:#B9D0F2;   /* porta con se' --focus: 8,58 su #0E1420, 7,43 su #1A2231 */
  --gesso:#E26A2C; --gesso-testo:#F0975F;
  --verdict-ok:var(--verdict-ok-su-scuro);
  --verdict-attesa:var(--verdict-attesa-su-scuro);
  --verdict-critico:var(--verdict-critico-su-scuro);
  --scrim:rgba(0,0,0,.72);
}

/* =====================================================================
   F1 §2.6 — un solo anello di focus, per tutto il prodotto.
   Specificita' ZERO (:where): ogni pagina puo' ancora vincere se ha una
   ragione, e nessuno deve piu' scrivere `outline: none` nudo.
   --focus segue il tema: sulle pagine a fondo scuro la pagina lo rimappa
   su #8FB3E8, come fa il blocco [data-theme="scuro"] qui sopra.
   ===================================================================== */
:where(a[href], button, input, select, textarea, summary,
       [tabindex]:not([tabindex="-1"]), [role="button"], [role="tab"],
       [role="link"], [role="checkbox"], [role="radio"],
       [role="menuitem"], [role="option"]):focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}
