/* SVILAPP — Kit e temi. Importato per ULTIMO tra i token semantici.

   QUATTRO LIVELLI.
   1. IDENTITÀ   [data-kit="x"] — ciò che non dipende dalla luce: raggi, forma delle ombre,
      sfocatura del vetro, --sv-shade-ink (l'inchiostro di stampa: la carta è bianca anche
      di notte, quindi NON cambia col tema).
   2. PALETTE    nello stesso blocco: ventuno àncore per polarità, --kl-* (chiaro) e --kd-*
      (scuro). Ogni valore esiste UNA volta sola nel file.
   3. LUCE       data-theme ha TRE valori, e sono esattamente le tre voci di un selettore:
        · data-theme="light"   → chiara
        · data-theme="dark"    → scura
        · data-theme="auto"    → quella del dispositivo (prefers-color-scheme), in puro CSS

      NON esiste un quarto valore. L'ASSENZA dell'attributo non è un'opzione da offrire:
      è la rete di sicurezza che dipinge la pagina prima che l'applicazione scriva
      data-theme, e vale la luce con cui il kit è NATO (Purple e Rame scuri; Pop, Smeraldo e Pastelli chiari). Quella nativa è un'INFORMAZIONE sul kit — dice se il kit è nato
      scuro e la versione chiara è un adattamento, o viceversa — ed è il valore con cui
      si inizializza il selettore, non una sua voce. Leggila da --sv-luce-nativa invece
      di riscrivere la tabella:
        const nativa = getComputedStyle(root).getPropertyValue('--sv-luce-nativa').trim();

      Le àncore sono custom property e SI EREDITANO: data-theme da solo su una sottosezione
      funziona (prende il kit dall'antenato). data-kit + data-theme insieme va sempre bene.
   4. MAPPATURA  in fondo: una regola sola traduce le --k-* nei semantici --sv-*. Le
      derivazioni non dicono «schiarisci» ma «vai verso l'inchiostro»: la stessa formula
      scurisce su tema chiaro e schiarisce su tema scuro. Nessuna tabella di polarità.

   Per uno swap via JS: spegnere le transizioni mentre si scrivono gli attributi
   (.sv-no-transition, vedi tokens/effects.css) o i componenti restano congelati sul
   colore vecchio. */

/* ═══ PURPLE — identità + palette (nativo: scuro). Bicromatica 70/30 col rosa
   antico dominante; il blu è la seconda voce. Canvas plum, la casa del brand. ═══ */
:root, [data-kit="purple"]{
  /* Purple non ridichiara raggi: sono i default di spacing.css. */
  --sv-shade-ink:#140812;
  --k-w1:70; --k-w2:30; --k-w3:0; --k-w4:0; /* bicromatica: rosa 70, blu 30 */
  /* Informativa: la luce con cui il kit è nato. NON è un valore di data-theme —
     serve a inizializzare il selettore, che di valori ne ha tre. */
  --sv-luce-nativa:dark;
  --sv-glass-blur:20px;
  --sv-glass-highlight:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,0) 40%);
  --sv-e1:0 1px 2px rgb(var(--k-shadow-rgb) / .5);
  --sv-e2:0 4px 12px rgb(var(--k-shadow-rgb) / .45);
  --sv-e3:0 12px 32px rgb(var(--k-shadow-rgb) / .5);
  --sv-e4:0 24px 64px rgb(var(--k-shadow-rgb) / .6);
  --sv-glow-1:0 0 24px color-mix(in srgb, var(--k-a1), transparent 65%);

  /* chiaro */
  --kl-canvas:#EDE6EB;
  --kl-paper:#FAF6F9;
  --kl-ink:#2A1428;
  --kl-a1:#8F4C50;
  --kl-a2:#4F6B72;
  --kl-on-a1:#FFFFFF;
  --kl-on-a2:#FFFFFF;
  --kl-a1-shift:#140812;
  --kl-a2-shift:#140812;
  --kl-a2-text:color-mix(in oklab, #4F6B72, #2A1428 52%);
  --kl-ok:#2E7A4E;
  --kl-warn:#8A5A16;
  --kl-err:#A8323F;
  --kl-info:#2B5F91;
  --kl-on-feedback:#FFFFFF;
  --kl-glass-fill:rgba(255,255,255,.66);
  --kl-glass-stroke:rgba(42,20,40,.16);
  --kl-shadow-rgb:42 20 40;
  --kl-biglia-glass:#FCF8FB;
  --kl-biglia-tint:#7A5677;
  --kl-biglia-c3:#5E7E88;
  --kl-bc2:#7A4145;
  --kl-p3:#5E7E88; --kl-p4:#5E7E88; --kl-biglia-c4:#5E7E88;
  --kl-scheme:light;
  --kl-grad:linear-gradient(135deg,#8F4C50 0%,#9E5F63 70%,#4F6B72 100%);

  /* scuro */
  --kd-canvas:#1A0B1B;
  --kd-paper:#230F24;
  --kd-ink:#F9F9F9;
  --kd-a1:#AB5F63;
  --kd-a2:#6F8C93;
  --kd-on-a1:#FFFFFF;
  --kd-on-a2:#230F24;
  --kd-a1-shift:#140812;
  --kd-a2-shift:#FFFFFF;
  --kd-a2-text:color-mix(in oklab, #6F8C93, #F9F9F9 52%);
  --kd-ok:#55A375;
  --kd-warn:#D99A4E;
  --kd-err:#D9707A;
  --kd-info:#5E8FBF;
  --kd-on-feedback:#180A17;
  --kd-glass-fill:rgba(249,244,249,.06);
  --kd-glass-stroke:rgba(249,244,249,.16);
  --kd-shadow-rgb:18 5 17;
  --kd-biglia-glass:#E9DEE9;
  --kd-biglia-tint:#4A2846;
  --kd-biglia-c3:#8FA6AD;
  --kd-bc2:#C08186;
  --kd-p3:#8FA6AD; --kd-p4:#8FA6AD; --kd-biglia-c4:#8FA6AD;
  --kd-scheme:dark;
  --kd-grad:linear-gradient(135deg,#AB5F63 0%,#BC7E82 70%,#6F8C93 100%);
}

/* ═══ POP — identità + palette (nativo: chiaro). Concept: la pop art di Warhol —
   quattro inchiostri da serigrafia a peso pari (25/25/25/25) su carta bianca:
   il fondo tace, gli inchiostri urlano. ═══ */
[data-kit="pop"]{
  --sv-shade-ink:#1A1A1A;
  --k-w1:25; --k-w2:25; --k-w3:25; --k-w4:25; /* quaternaria Warhol */
  /* Informativa: la luce con cui il kit è nato. NON è un valore di data-theme —
     serve a inizializzare il selettore, che di valori ne ha tre. */
  --sv-luce-nativa:light;
  --sv-r1:6px; --sv-r2:14px; --sv-r3:14px; --sv-r4:20px;
  --sv-glass-blur:0px; --sv-glass-highlight:none;
  --sv-e1:2px 2px 0 rgb(var(--k-shadow-rgb));
  --sv-e2:3px 3px 0 rgb(var(--k-shadow-rgb));
  --sv-e3:5px 5px 0 rgb(var(--k-shadow-rgb));
  --sv-e4:8px 8px 0 rgb(var(--k-shadow-rgb));
  --sv-glow-1:4px 4px 0 rgb(var(--k-shadow-rgb));

  /* chiaro */
  --kl-canvas:#EDE9DC;
  --kl-paper:#FDFBF5;
  --kl-ink:#141414;
  --kl-a1:#C400C4;
  --kl-a2:#0077B6;
  --kl-on-a1:#FFFFFF;
  --kl-on-a2:#FFFFFF;
  --kl-a1-shift:#1A1A1A;
  --kl-a2-shift:#1A1A1A;
  --kl-a2-text:color-mix(in oklab, #0077B6, #141414 52%);
  --kl-ok:#14521F;
  --kl-warn:#6B3F00;
  --kl-err:#8E0018;
  --kl-info:#083A7D;
  --kl-on-feedback:#FFFFFF;
  --kl-glass-fill:rgba(255,255,255,.55);
  --kl-glass-stroke:rgba(26,26,26,.28);
  --kl-shadow-rgb:26 26 26;
  --kl-biglia-glass:#FBF9F1;
  --kl-biglia-tint:#55503F;
  --kl-biglia-c3:#2E9E2E;
  --kl-biglia-c4:#E5231B;
  --kl-p3:#E5231B;
  --kl-p4:#2E9E2E;
  --kl-bc2:#0077B6;
  --kl-scheme:light;
  --kl-grad:linear-gradient(135deg,#C400C4 0%,#0077B6 33%,#E5231B 66%,#2E9E2E 100%);

  /* scuro */
  --kd-canvas:#0D0D0D;
  --kd-paper:#1A1A1A;
  --kd-ink:#F2EFE6;
  --kd-a1:#FF5CFF;
  --kd-a2:#5BC4FF;
  --kd-on-a1:#1A1A1A;
  --kd-on-a2:#1A1A1A;
  --kd-a1-shift:#FFFFFF;
  --kd-a2-shift:#FFFFFF;
  --kd-a2-text:color-mix(in oklab, #5BC4FF, #F2EFE6 52%);
  --kd-ok:#4FD84F;
  --kd-warn:#FFC24F;
  --kd-err:#FF6B7F;
  --kd-info:#6FA8FF;
  --kd-on-feedback:#0D0D0D;
  --kd-glass-fill:rgba(242,239,230,.07);
  --kd-glass-stroke:rgba(242,239,230,.24);
  --kd-shadow-rgb:242 239 230;
  --kd-biglia-glass:#F0EDE2;
  --kd-biglia-tint:#2A2722;
  --kd-biglia-c3:#4FD84F;
  --kd-biglia-c4:#FF6B5C;
  --kd-p3:#FF6B5C;
  --kd-p4:#4FD84F;
  --kd-bc2:#5BC4FF;
  --kd-scheme:dark;
  --kd-grad:linear-gradient(135deg,#FF5CFF 0%,#5BC4FF 33%,#FF6B5C 66%,#4FD84F 100%);
}

/* ═══ SMERALDO — identità + palette (nativo: chiaro). Bicromatica 50/50: verde
   smeraldo e una sfumatura di giallo; la biglia sfuma nelle tinte dello smeraldo. ═══ */
[data-kit="smeraldo"]{
  --sv-shade-ink:#0F2A18;
  --k-w1:50; --k-w2:50; --k-w3:0; --k-w4:0; /* bicromatica: verde e giallo */
  /* Informativa: la luce con cui il kit è nato. NON è un valore di data-theme —
     serve a inizializzare il selettore, che di valori ne ha tre. */
  --sv-luce-nativa:light;
  --sv-r1:4px; --sv-r2:10px; --sv-r3:10px; --sv-r4:16px;
  --sv-glass-blur:14px;
  --sv-glass-highlight:linear-gradient(180deg,rgba(255,255,255,.5),rgba(255,255,255,0) 40%);
  --sv-e1:0 1px 2px rgb(var(--k-shadow-rgb) / .14);
  --sv-e2:0 6px 14px -6px rgb(var(--k-shadow-rgb) / .3);
  --sv-e3:0 12px 26px -10px rgb(var(--k-shadow-rgb) / .34);
  --sv-e4:0 22px 48px -14px rgb(var(--k-shadow-rgb) / .4);
  --sv-glow-1:0 0 24px color-mix(in srgb, var(--k-a1), transparent 72%);

  /* chiaro */
  --kl-canvas:#F2EDD8;
  --kl-paper:#FFFAE9;
  --kl-ink:#0E2C17;
  --kl-a1:#008836;
  --kl-a2:#DEC26E;
  --kl-on-a1:#FFFAE9;
  --kl-on-a2:#0E2C17;
  --kl-a1-shift:#0F2A18;
  --kl-a2-shift:#FFFFFF;
  --kl-a2-text:#6E5714;
  --kl-ok:#186030;
  --kl-warn:#7A4900;
  --kl-err:#A32226;
  --kl-info:#1B5E8A;
  --kl-on-feedback:#FFFAE9;
  --kl-glass-fill:rgba(255,255,255,.6);
  --kl-glass-stroke:rgba(0,136,54,.24);
  --kl-shadow-rgb:20 61 34;
  --kl-biglia-glass:#FAFDF2;
  --kl-biglia-tint:#1E5730;
  --kl-biglia-c3:#00BF4C;
  --kl-bc2:#E0B84A; /* il giallo carica nel vetro: la voce è la stessa, la materia la slavava */
  --kl-p3:#00BF4C; --kl-p4:#00BF4C; --kl-biglia-c4:#00BF4C;
  --kl-scheme:light;
  --kl-grad:linear-gradient(135deg,#008836 0%,#00BF4C 50%,#DEC26E 100%);

  /* scuro */
  --kd-canvas:#071409;
  --kd-paper:#0D2113;
  --kd-ink:#E9F2E4;
  --kd-a1:#00BF4C;
  --kd-a2:#F2DC93;
  --kd-on-a1:#0D2113;
  --kd-on-a2:#0D2113;
  --kd-a1-shift:#FFFFFF;
  --kd-a2-shift:#FFFFFF;
  --kd-a2-text:#EBD79A;
  --kd-ok:#4FBF6B;
  --kd-warn:#D9A44F;
  --kd-err:#E0757A;
  --kd-info:#6FB0D8;
  --kd-on-feedback:#0D2113;
  --kd-glass-fill:rgba(233,242,228,.06);
  --kd-glass-stroke:rgba(233,242,228,.16);
  --kd-shadow-rgb:0 0 0;
  --kd-biglia-glass:#EAF6E4;
  --kd-biglia-tint:#0B2412;
  --kd-biglia-c3:#37D97A;
  --kd-bc2:#EFD068;
  --kd-p3:#37D97A; --kd-p4:#37D97A; --kd-biglia-c4:#37D97A;
  --kd-scheme:dark;
  --kd-grad:linear-gradient(135deg,#00BF4C 0%,#0D2113 50%,#F2DC93 100%);
}

/* ═══ RAME — identità + palette (nativo: scuro). Ex Meridiana: stessi inchiostri —
   rame e petrolio, 45/45 — col crema come voce rara (10). ═══ */
[data-kit="rame"]{
  --sv-shade-ink:#2A1608;
  --k-w1:45; --k-w2:45; --k-w3:10; --k-w4:0; /* rame e petrolio pari, crema raro */
  /* Informativa: la luce con cui il kit è nato. NON è un valore di data-theme —
     serve a inizializzare il selettore, che di valori ne ha tre. */
  --sv-luce-nativa:dark;
  --sv-r1:5px; --sv-r2:12px; --sv-r3:12px; --sv-r4:18px;
  --sv-glass-blur:16px;
  --sv-glass-highlight:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,0) 40%);
  --sv-e1:0 1px 2px rgb(var(--k-shadow-rgb) / .12);
  --sv-e2:0 6px 16px -6px rgb(var(--k-shadow-rgb) / .28);
  --sv-e3:0 14px 30px -12px rgb(var(--k-shadow-rgb) / .32);
  --sv-e4:0 24px 52px -16px rgb(var(--k-shadow-rgb) / .38);
  --sv-glow-1:0 0 24px color-mix(in srgb, var(--k-a1), transparent 70%);

  /* chiaro */
  --kl-canvas:#EFE3D3;
  --kl-paper:#F7EFE4;
  --kl-ink:#281A10;
  --kl-a1:#B04617;
  --kl-a2:#1F5B72;
  --kl-on-a1:#FFFFFF;
  --kl-on-a2:#FFFFFF;
  --kl-a1-shift:#2A1608;
  --kl-a2-shift:#2A1608;
  --kl-a2-text:color-mix(in oklab, #1F5B72, #281A10 52%);
  --kl-ok:#1F6B3A;
  --kl-warn:#8A5300;
  --kl-err:#A32226;
  --kl-info:#1F5B72;
  --kl-on-feedback:#FFFFFF;
  --kl-glass-fill:rgba(255,255,255,.62);
  --kl-glass-stroke:rgba(46,31,20,.16);
  --kl-shadow-rgb:46 31 20;
  --kl-biglia-glass:#FFFAF2;
  --kl-biglia-tint:#7A4520;
  --kl-biglia-c3:#D6BE9E;
  --kl-bc2:#1F5B72; --kl-p3:#D6BE9E; --kl-p4:#D6BE9E; --kl-biglia-c4:#D6BE9E;
  --kl-scheme:light;
  --kl-grad:linear-gradient(135deg,#B04617 0%,#E8D9C3 50%,#1F5B72 100%);

  /* scuro */
  --kd-canvas:#150D07;
  --kd-paper:#21150D;
  --kd-ink:#F4E8D9;
  --kd-a1:#E2703C;
  --kd-a2:#6FB3CC;
  --kd-on-a1:#21150D;
  --kd-on-a2:#21150D;
  --kd-a1-shift:#FFFFFF;
  --kd-a2-shift:#FFFFFF;
  --kd-a2-text:color-mix(in oklab, #6FB3CC, #F4E8D9 52%);
  --kd-ok:#5FBF7E;
  --kd-warn:#E0A44F;
  --kd-err:#E4707A;
  --kd-info:#6FB3CC;
  --kd-on-feedback:#21150D;
  --kd-glass-fill:rgba(244,232,217,.06);
  --kd-glass-stroke:rgba(244,232,217,.16);
  --kd-shadow-rgb:0 0 0;
  --kd-biglia-glass:#F6E9D8;
  --kd-biglia-tint:#3A2110;
  --kd-biglia-c3:#C4A98A;
  --kd-bc2:#6FB3CC; --kd-p3:#C4A98A; --kd-p4:#C4A98A; --kd-biglia-c4:#C4A98A;
  --kd-scheme:dark;
  --kd-grad:linear-gradient(135deg,#E2703C 0%,#21150D 50%,#6FB3CC 100%);
}

/* ═══ PASTELLI — identità + palette (nativo: chiaro). Quaternaria primaria in chiave
   pastello: blu dominante (60), rosso (25), giallo e verde come note (7,5 ciascuno). */
[data-kit="pastelli"]{
  --sv-shade-ink:#0A1230;
  --k-w1:60; --k-w2:25; --k-w3:7.5; --k-w4:7.5; /* quaternaria pastello */
  /* Informativa: la luce con cui il kit è nato. NON è un valore di data-theme —
     serve a inizializzare il selettore, che di valori ne ha tre. */
  --sv-luce-nativa:light;
  --sv-r1:3px; --sv-r2:8px; --sv-r3:8px; --sv-r4:14px;
  --sv-glass-blur:14px;
  --sv-glass-highlight:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 40%);
  --sv-e1:0 1px 2px rgb(var(--k-shadow-rgb) / .14);
  --sv-e2:0 5px 14px -6px rgb(var(--k-shadow-rgb) / .3);
  --sv-e3:0 12px 28px -10px rgb(var(--k-shadow-rgb) / .34);
  --sv-e4:0 22px 48px -14px rgb(var(--k-shadow-rgb) / .4);
  --sv-glow-1:0 0 24px color-mix(in srgb, var(--k-a1), transparent 68%);

  /* chiaro */
  --kl-canvas:#E7EBF4;
  --kl-paper:#F5F7FC;
  --kl-ink:#101A3E;
  --kl-a1:#5B84C4;
  --kl-a2:#C9635A;
  --kl-on-a1:#FFFFFF;
  --kl-on-a2:#FFFFFF;
  --kl-a1-shift:#0A1230;
  --kl-a2-shift:#0A1230;
  --kl-a2-text:color-mix(in oklab, #C9635A, #101A3E 52%);
  --kl-ok:#0E7A50;
  --kl-warn:#7A5200;
  --kl-err:#B02D26;
  --kl-info:#1E3FBF;
  --kl-on-feedback:#FFFFFF;
  --kl-glass-fill:rgba(255,255,255,.66);
  --kl-glass-stroke:rgba(16,26,62,.18);
  --kl-shadow-rgb:16 26 62;
  --kl-biglia-glass:#F8FAFF;
  --kl-biglia-tint:#3A5580;
  --kl-biglia-c3:#E8C45C;
  --kl-biglia-c4:#7FB389;
  --kl-p3:#EFD284;
  --kl-p4:#93C29B;
  --kl-bc2:#C9635A;
  --kl-scheme:light;
  --kl-grad:linear-gradient(135deg,#5B84C4 0%,#C9635A 60%,#EFD284 85%,#93C29B 100%);

  /* scuro */
  --kd-canvas:#070D24;
  --kd-paper:#0D1531;
  --kd-ink:#E9EDF9;
  --kd-a1:#8FB3E8;
  --kd-a2:#EE9C93;
  --kd-on-a1:#0D1531;
  --kd-on-a2:#0D1531;
  --kd-a1-shift:#FFFFFF;
  --kd-a2-shift:#FFFFFF;
  --kd-a2-text:color-mix(in oklab, #EE9C93, #E9EDF9 52%);
  --kd-ok:#12A06A;
  --kd-warn:#F0B429;
  --kd-err:#F0716A;
  --kd-info:#8FB3E8;
  --kd-on-feedback:#0D1531;
  --kd-glass-fill:rgba(233,237,249,.06);
  --kd-glass-stroke:rgba(233,237,249,.16);
  --kd-shadow-rgb:0 0 0;
  --kd-biglia-glass:#DDE4F5;
  --kd-biglia-tint:#0F1E55;
  --kd-biglia-c3:#F2DC9B;
  --kd-biglia-c4:#A5D4AC;
  --kd-p3:#F2DC9B;
  --kd-p4:#A5D4AC;
  --kd-bc2:#EE9C93;
  --kd-scheme:dark;
  --kd-grad:linear-gradient(135deg,#8FB3E8 0%,#EE9C93 60%,#F2DC9B 85%,#A5D4AC 100%);
}

/* ═══ LUCE — la scelta della polarità è tutta qui ═══ */
/* Rete: nessun data-theme → la luce nativa del kit (vedi §3 in testa al file) */
/* Nate scure */
:root, [data-kit="purple"], [data-kit="rame"]{
  --k-canvas:var(--kd-canvas);
  --k-paper:var(--kd-paper);
  --k-ink:var(--kd-ink);
  --k-a1:var(--kd-a1);
  --k-a2:var(--kd-a2);
  --k-on-a1:var(--kd-on-a1);
  --k-on-a2:var(--kd-on-a2);
  --k-a1-shift:var(--kd-a1-shift);
  --k-a2-shift:var(--kd-a2-shift);
  --k-a2-text:var(--kd-a2-text);
  --k-ok:var(--kd-ok);
  --k-warn:var(--kd-warn);
  --k-err:var(--kd-err);
  --k-info:var(--kd-info);
  --k-on-feedback:var(--kd-on-feedback);
  --k-glass-fill:var(--kd-glass-fill);
  --k-glass-stroke:var(--kd-glass-stroke);
  --k-shadow-rgb:var(--kd-shadow-rgb);
  --k-biglia-glass:var(--kd-biglia-glass);
  --k-biglia-tint:var(--kd-biglia-tint);
  --k-biglia-c3:var(--kd-biglia-c3);
  --k-biglia-c4:var(--kd-biglia-c4, var(--kd-biglia-c3));
  --k-bc2:var(--kd-bc2, var(--kd-a2));
  --k-p3:var(--kd-p3, var(--kd-biglia-c3));
  --k-p4:var(--kd-p4, var(--kd-biglia-c3));
  --k-scheme:var(--kd-scheme);
  --k-grad:var(--kd-grad);
}
/* Nate chiare */
[data-kit="pop"], [data-kit="smeraldo"], [data-kit="pastelli"]{
  --k-canvas:var(--kl-canvas);
  --k-paper:var(--kl-paper);
  --k-ink:var(--kl-ink);
  --k-a1:var(--kl-a1);
  --k-a2:var(--kl-a2);
  --k-on-a1:var(--kl-on-a1);
  --k-on-a2:var(--kl-on-a2);
  --k-a1-shift:var(--kl-a1-shift);
  --k-a2-shift:var(--kl-a2-shift);
  --k-a2-text:var(--kl-a2-text);
  --k-ok:var(--kl-ok);
  --k-warn:var(--kl-warn);
  --k-err:var(--kl-err);
  --k-info:var(--kl-info);
  --k-on-feedback:var(--kl-on-feedback);
  --k-glass-fill:var(--kl-glass-fill);
  --k-glass-stroke:var(--kl-glass-stroke);
  --k-shadow-rgb:var(--kl-shadow-rgb);
  --k-biglia-glass:var(--kl-biglia-glass);
  --k-biglia-tint:var(--kl-biglia-tint);
  --k-biglia-c3:var(--kl-biglia-c3);
  --k-biglia-c4:var(--kl-biglia-c4, var(--kl-biglia-c3));
  --k-bc2:var(--kl-bc2, var(--kl-a2));
  --k-p3:var(--kl-p3, var(--kl-biglia-c3));
  --k-p4:var(--kl-p4, var(--kl-biglia-c3));
  --k-scheme:var(--kl-scheme);
  --k-grad:var(--kl-grad);
}
/* Esplicito — vale anche da solo su una sottosezione (le àncore --kl/--kd si ereditano) */
[data-theme="light"]{
  --k-canvas:var(--kl-canvas);
  --k-paper:var(--kl-paper);
  --k-ink:var(--kl-ink);
  --k-a1:var(--kl-a1);
  --k-a2:var(--kl-a2);
  --k-on-a1:var(--kl-on-a1);
  --k-on-a2:var(--kl-on-a2);
  --k-a1-shift:var(--kl-a1-shift);
  --k-a2-shift:var(--kl-a2-shift);
  --k-a2-text:var(--kl-a2-text);
  --k-ok:var(--kl-ok);
  --k-warn:var(--kl-warn);
  --k-err:var(--kl-err);
  --k-info:var(--kl-info);
  --k-on-feedback:var(--kl-on-feedback);
  --k-glass-fill:var(--kl-glass-fill);
  --k-glass-stroke:var(--kl-glass-stroke);
  --k-shadow-rgb:var(--kl-shadow-rgb);
  --k-biglia-glass:var(--kl-biglia-glass);
  --k-biglia-tint:var(--kl-biglia-tint);
  --k-biglia-c3:var(--kl-biglia-c3);
  --k-biglia-c4:var(--kl-biglia-c4, var(--kl-biglia-c3));
  --k-bc2:var(--kl-bc2, var(--kl-a2));
  --k-p3:var(--kl-p3, var(--kl-biglia-c3));
  --k-p4:var(--kl-p4, var(--kl-biglia-c3));
  --k-scheme:var(--kl-scheme);
  --k-grad:var(--kl-grad);
}
[data-theme="dark"]{
  --k-canvas:var(--kd-canvas);
  --k-paper:var(--kd-paper);
  --k-ink:var(--kd-ink);
  --k-a1:var(--kd-a1);
  --k-a2:var(--kd-a2);
  --k-on-a1:var(--kd-on-a1);
  --k-on-a2:var(--kd-on-a2);
  --k-a1-shift:var(--kd-a1-shift);
  --k-a2-shift:var(--kd-a2-shift);
  --k-a2-text:var(--kd-a2-text);
  --k-ok:var(--kd-ok);
  --k-warn:var(--kd-warn);
  --k-err:var(--kd-err);
  --k-info:var(--kd-info);
  --k-on-feedback:var(--kd-on-feedback);
  --k-glass-fill:var(--kd-glass-fill);
  --k-glass-stroke:var(--kd-glass-stroke);
  --k-shadow-rgb:var(--kd-shadow-rgb);
  --k-biglia-glass:var(--kd-biglia-glass);
  --k-biglia-tint:var(--kd-biglia-tint);
  --k-biglia-c3:var(--kd-biglia-c3);
  --k-biglia-c4:var(--kd-biglia-c4, var(--kd-biglia-c3));
  --k-bc2:var(--kd-bc2, var(--kd-a2));
  --k-p3:var(--kd-p3, var(--kd-biglia-c3));
  --k-p4:var(--kd-p4, var(--kd-biglia-c3));
  --k-scheme:var(--kd-scheme);
  --k-grad:var(--kd-grad);
}
/* Auto — la luce del dispositivo, senza JS */
@media (prefers-color-scheme: light){
  [data-theme="auto"]{
  --k-canvas:var(--kl-canvas);
  --k-paper:var(--kl-paper);
  --k-ink:var(--kl-ink);
  --k-a1:var(--kl-a1);
  --k-a2:var(--kl-a2);
  --k-on-a1:var(--kl-on-a1);
  --k-on-a2:var(--kl-on-a2);
  --k-a1-shift:var(--kl-a1-shift);
  --k-a2-shift:var(--kl-a2-shift);
  --k-a2-text:var(--kl-a2-text);
  --k-ok:var(--kl-ok);
  --k-warn:var(--kl-warn);
  --k-err:var(--kl-err);
  --k-info:var(--kl-info);
  --k-on-feedback:var(--kl-on-feedback);
  --k-glass-fill:var(--kl-glass-fill);
  --k-glass-stroke:var(--kl-glass-stroke);
  --k-shadow-rgb:var(--kl-shadow-rgb);
  --k-biglia-glass:var(--kl-biglia-glass);
  --k-biglia-tint:var(--kl-biglia-tint);
  --k-biglia-c3:var(--kl-biglia-c3);
  --k-biglia-c4:var(--kl-biglia-c4, var(--kl-biglia-c3));
  --k-bc2:var(--kl-bc2, var(--kl-a2));
  --k-p3:var(--kl-p3, var(--kl-biglia-c3));
  --k-p4:var(--kl-p4, var(--kl-biglia-c3));
  --k-scheme:var(--kl-scheme);
  --k-grad:var(--kl-grad);
  }
}
@media (prefers-color-scheme: dark){
  [data-theme="auto"]{
  --k-canvas:var(--kd-canvas);
  --k-paper:var(--kd-paper);
  --k-ink:var(--kd-ink);
  --k-a1:var(--kd-a1);
  --k-a2:var(--kd-a2);
  --k-on-a1:var(--kd-on-a1);
  --k-on-a2:var(--kd-on-a2);
  --k-a1-shift:var(--kd-a1-shift);
  --k-a2-shift:var(--kd-a2-shift);
  --k-a2-text:var(--kd-a2-text);
  --k-ok:var(--kd-ok);
  --k-warn:var(--kd-warn);
  --k-err:var(--kd-err);
  --k-info:var(--kd-info);
  --k-on-feedback:var(--kd-on-feedback);
  --k-glass-fill:var(--kd-glass-fill);
  --k-glass-stroke:var(--kd-glass-stroke);
  --k-shadow-rgb:var(--kd-shadow-rgb);
  --k-biglia-glass:var(--kd-biglia-glass);
  --k-biglia-tint:var(--kd-biglia-tint);
  --k-biglia-c3:var(--kd-biglia-c3);
  --k-biglia-c4:var(--kd-biglia-c4, var(--kd-biglia-c3));
  --k-bc2:var(--kd-bc2, var(--kd-a2));
  --k-p3:var(--kd-p3, var(--kd-biglia-c3));
  --k-p4:var(--kd-p4, var(--kd-biglia-c3));
  --k-scheme:var(--kd-scheme);
  --k-grad:var(--kd-grad);
  }
}

/* ═══════════════════ MAPPATURA — àncore --k-* → semantici --sv-* ═══════════════════
   Una volta sola, per ogni kit e ogni tema. Le quote NON sono scelte a occhio: sono il
   risultato di una misura su tutte e dieci le palette, rasterizzando i colori (i valori
   calcolati sono oklab: leggerli come numeri e calcolare la luminanza dà spazzatura).

   Garanzia dichiarata, e verificata: --sv-text-3 tiene AA (≥4.5) su --sv-bg-1, --sv-surface-2
   E --sv-surface-3 in tutte e dieci le palette — minimo misurato 4.76 (Smeraldo chiaro su
   surface-3). È il vincolo che fissa la quota a 30%: a 42% scendeva a 3.11 e le etichette
   mono da 9.5px non passavano in nove palette su dieci. Per lasciare margine, quattro
   inchiostri chiari sono stati approfonditi (Pop, Smeraldo, la ex Meridiana — oggi Rame — e la soppressa Regata): erano loro
   il collo di bottiglia, non la formula.

   --sv-accent-1-text al 30% verso l'ink riproduce a formula i valori che prima erano scritti
   a mano kit per kit (Purple #C58F92, Pop #8E008E): quando una derivazione ricostruisce da sé
   i valori tarati a occhio, è quella giusta. Per accent-2 non esiste quota che serva tutti —
   la salvia di Smeraldo chiaro non diventa inchiostro leggibile — quindi --k-a2-text è
   un'àncora per polarità: cinque kit la dichiarano con la formula (52%), Smeraldo con la
   deroga misurata, in ENTRAMBI i temi (una deroga dichiarata in un tema solo cola
   nell'altro attraverso il selettore nudo del kit: successo, 1.6 di contrasto).

   Il selettore include [data-theme] da solo: i semantici --sv-* vengono risolti in valore
   calcolato SUL nodo che li dichiara, e un discendente eredita i valori già risolti — senza
   questa voce, un contenitore con solo data-theme flipperebbe le àncore ma erediterebbe i
   semantici del tema del root. */
:root, [data-kit], [data-theme]{
  color-scheme:var(--k-scheme);

  --sv-bg-0:var(--k-canvas);
  --sv-bg-1:var(--k-paper);
  --sv-surface-1:color-mix(in oklab, var(--k-paper), var(--k-ink) 5%);
  --sv-surface-2:color-mix(in oklab, var(--k-paper), var(--k-ink) 9%);
  --sv-surface-3:color-mix(in oklab, var(--k-paper), var(--k-ink) 12%);
  --sv-line:color-mix(in oklab, var(--k-paper), var(--k-ink) 17%);
  --sv-line-strong:color-mix(in oklab, var(--k-paper), var(--k-ink) 34%);

  --sv-text-1:var(--k-ink);
  --sv-text-2:color-mix(in oklab, var(--k-ink), var(--k-paper) 16%);
  --sv-text-3:color-mix(in oklab, var(--k-ink), var(--k-paper) 30%);
  --sv-text-inverse:var(--k-paper);
  --sv-text-onaccent:var(--k-on-a1);
  --sv-text-onaccent-2:var(--k-on-a2);

  /* Regola dei due usi. Il RIEMPIMENTO è l'accento nudo; l'INCHIOSTRO è lo stesso accento
     spinto verso il testo, perché vive su tint e superfici, non sul canvas nudo.

     STATI. hover e active erano le uniche derivazioni che scrivevano una DIREZIONE fissa
     (white / black): su nove palette spingevano il riempimento verso lo stesso polo del suo
     inchiostro e il contrasto crollava — misurato, minimo 3.53. Ora la direzione è un'àncora
     di palette (--k-a*-shift): si va SEMPRE via dall'inchiostro che sta sopra, di un passo
     al passaggio e di due alla pressione. Minimo misurato: 5.68 su dieci palette.
     Non è una scorciatoia: quale sia il verso dipende da quale inchiostro c'è sopra, e
     quello è un dato della palette, non una formula. */
  --sv-accent-1:var(--k-a1);
  --sv-accent-1-hover:color-mix(in oklab, var(--k-a1), var(--k-a1-shift) 12%);
  --sv-accent-1-active:color-mix(in oklab, var(--k-a1), var(--k-a1-shift) 22%);
  --sv-accent-1-tint:color-mix(in srgb, var(--k-a1), transparent 86%);
  --sv-accent-1-text:color-mix(in oklab, var(--k-a1), var(--k-ink) 30%);
  --sv-accent-2:var(--k-a2);
  --sv-accent-2-hover:color-mix(in oklab, var(--k-a2), var(--k-a2-shift) 12%);
  --sv-accent-2-active:color-mix(in oklab, var(--k-a2), var(--k-a2-shift) 22%);
  --sv-accent-2-tint:color-mix(in srgb, var(--k-a2), transparent 86%);
  --sv-accent-2-text:var(--k-a2-text);

  --sv-ok:var(--k-ok);     --sv-ok-tint:color-mix(in srgb, var(--k-ok), transparent 86%);
  --sv-warn:var(--k-warn); --sv-warn-tint:color-mix(in srgb, var(--k-warn), transparent 86%);
  --sv-err:var(--k-err);   --sv-err-tint:color-mix(in srgb, var(--k-err), transparent 86%);
  --sv-info:var(--k-info); --sv-info-tint:color-mix(in srgb, var(--k-info), transparent 86%);
  --sv-text-on-ok:var(--k-on-feedback);   --sv-text-on-warn:var(--k-on-feedback);
  --sv-text-on-err:var(--k-on-feedback);  --sv-text-on-info:var(--k-on-feedback);

  --sv-glass-fill:var(--k-glass-fill);
  --sv-glass-stroke:var(--k-glass-stroke);
  --sv-focus-ring:0 0 0 2px var(--k-paper), 0 0 0 4px color-mix(in srgb, var(--k-a1), transparent 20%);
  /* Dalla 5.0.0 la firma del kit è la palette in proporzione: bande nette sui pesi
     ufficiali, non più la sfumatura --k-grad. Fili, tondi del selettore e progress la
     ereditano da soli; i tondi restano tondi, cambia solo la geometria interna. */
  --sv-gradient-kit:linear-gradient(90deg,
    var(--sv-palette-1) 0 calc(var(--sv-palette-w1)*1%),
    var(--sv-palette-2) calc(var(--sv-palette-w1)*1%) calc((var(--sv-palette-w1) + var(--sv-palette-w2))*1%),
    var(--sv-palette-3) calc((var(--sv-palette-w1) + var(--sv-palette-w2))*1%) calc((var(--sv-palette-w1) + var(--sv-palette-w2) + var(--sv-palette-w3))*1%),
    var(--sv-palette-4) calc((var(--sv-palette-w1) + var(--sv-palette-w2) + var(--sv-palette-w3))*1%) 100%);

  /* SOVRAPPOSIZIONI — e perché stanno qui e non su :root in effects.css.
     Le custom property si ereditano GIÀ SOSTITUITE: un token dichiarato una volta sola sul
     root calcola il proprio valore lì e resta congelato sul kit del root dentro un contenitore con
     data-kit proprio, anche se quel contenitore ridichiara --sv-surface-1. Questo blocco
     invece si applica a ogni elemento tematizzato, quindi si ricalcola: è il motivo per cui
     --sv-glass-fill segue i kit annidati e i due token nuovi devono stargli accanto.
     --sv-glass-panel è il vetro STRUTTURALE delle sovrapposizioni: --sv-glass-fill è
     decorativo e al suo alpha il testo di corpo non regge. Lo scrim deriva dall'inchiostro
     del kit: un velo di nero puro su Pastelli o Rame non appartiene al clima. */
  --sv-glass-panel:color-mix(in oklab, color-mix(in oklab, var(--k-paper), var(--k-ink) 5%) 88%, transparent);
  --sv-scrim:color-mix(in oklab, var(--sv-shade-ink) 62%, transparent);
  --sv-scrim-blur:8px;

  /* Lamina neutra del marchio: funzione di ink e carta, quindi si ritara da sola. */
  --sv-mark-shade:color-mix(in oklab, var(--k-ink) 30%, var(--k-paper));

  /* Materia della biglia — letta a runtime dal 3D: solo var() e hex, mai color-mix(),
     che su una custom property non registrata non arriva al valore calcolato.
     È tarata per POLARITÀ, non copiata da un tema all'altro: su fondo chiaro l'ambiente
     luminoso slava l'interno, quindi la tinta scende e il vetro sale; e la firma sottile
     (c3) deve staccarsi dalla carta — in tre kit era letteralmente il colore del fondo,
     cioè un nastro invisibile. Su fondo scuro il vetro alza la luminanza per non fondersi
     col canvas. --sv-biglia-canvas resta --k-paper: è lo sfondo su cui la biglia è
     appoggiata, ed è quello che il vetro rifrange. */
  --sv-biglia-c1:var(--k-a1);
  --sv-biglia-c2:var(--k-bc2); /* di norma = a2; Purple la deroga per restare blu */
  --sv-biglia-c3:var(--k-biglia-c3);
  /* Quarta lamina (filamento centrale del ventaglio): i kit quaternari — Pop, Pastelli —
     la dichiarano per luce; negli altri ricade sul terzo inchiostro. */
  --sv-biglia-c4:var(--k-biglia-c4);
  --sv-biglia-glass:var(--k-biglia-glass);
  --sv-biglia-tint:var(--k-biglia-tint);
  --sv-biglia-canvas:var(--k-paper);

  /* PALETTE UFFICIALE (5.2.0) — ogni kit dichiara il PROPRIO schema: le voci extra e i
     pesi (--k-w1..w4) vivono nel blocco del kit; qui vive solo la traduzione. Canvas e
     tinta restano supporto. Un kit bicromatico lascia w3/w4 a zero e le voci 3/4
     collassano senza mai dipingersi.
     Le àncore opzionali (bc2, p3/p4, biglia-c4) si dichiarano SEMPRE e in entrambe le luci:
     sono custom property, ereditano, e in un kit annidato colerebbero dal kit antenato. */
  --sv-palette-1:var(--k-a1);
  --sv-palette-2:var(--k-a2);
  --sv-palette-3:var(--k-p3);
  --sv-palette-4:var(--k-p4);
  --sv-palette-w1:var(--k-w1, 50);
  --sv-palette-w2:var(--k-w2, 50);
  --sv-palette-w3:var(--k-w3, 0);
  --sv-palette-w4:var(--k-w4, 0);
}

/* Pop non ha vetro: le sovrapposizioni restano piene e il velo non sfoca. Sta DOPO il blocco
   condiviso perché è quello a dichiarare i due token — stessa specificità, vince l'ultimo. */
[data-kit="pop"]{
  --sv-glass-panel:var(--sv-surface-1);
  --sv-scrim-blur:0px;
}
