/* FONTE UNICA di colori, spaziature/gap, raggi, tipografia, bottoni, movimento. Cursor: usa SEMPRE var(--...), mai valori scritti a mano. */
/* Font locale (assets/fonts, licenza OFL in assets/fonts/OFL.txt). Percorsi relativi alla root: tokens.css sta in root. */
@font-face{font-family:"Plus Jakarta Sans";src:url("fonts/PlusJakartaSans-latin-VariableFont_wght.woff2") format("woff2"),url("fonts/PlusJakartaSans-VariableFont_wght.ttf") format("truetype");font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:"Plus Jakarta Sans";src:url("fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf") format("truetype");font-weight:200 800;font-style:italic;font-display:swap}
/* tokens.css — martinifrancesco-stage. Copiato dal design system Martini Francesco (01 spaziature, 02 tipografia, 03 colori, 04 bottoni, 06 movimento). Non inventare valori: aggiungi qui solo token approvati. */
/* Gradiente brand per i dettagli (decisione 02/11/2026): #4F46E5 → #9333EA → #E11D48 */
:root{--gradient-brand:linear-gradient(90deg in oklch,#4F46E5 0%,#9333EA 50%,#E11D48 100%);}

/* ===== design-system/03-colori/tokens.css ===== */
/* Martini Francesco · Design system 03 Colori · colori base invariati */
:root{
 --color-inchiostro:#0B0B12;
 --color-nebbia:#F7F7FA;
 --color-ardesia:#4A4E5E;
 --color-grigio:#6B6F80;
 --color-indaco:#4F46E5;
 --color-viola:#9333EA;
 --color-corallo:#E11D48;
 --indaco-50:#F9FAFE; --indaco-100:#EDF0FE; --indaco-200:#D5DCFE; --indaco-300:#B5BFFE; --indaco-400:#8D99FE; --indaco-500:#6A6EFF; --indaco-600:#4F46E5; --indaco-700:#3D2DC2; --indaco-800:#2D169C; --indaco-900:#1F007B; --indaco-950:#10004C;
 --viola-50:#FFE4FF; --viola-100:#FFD8FF; --viola-200:#F1C5FF; --viola-300:#DAA6FF; --viola-400:#BE7EFF; --viola-500:#A353F7; --viola-600:#9333EA; --viola-700:#791FC5; --viola-800:#590097; --viola-900:#3B006C; --viola-950:#200043;
 --corallo-50:#FFD6D9; --corallo-100:#FFCACE; --corallo-200:#FFB5BA; --corallo-300:#FF949C; --corallo-400:#FF6978; --corallo-500:#EA3654; --corallo-600:#E11D48; --corallo-700:#B10031; --corallo-800:#86001D; --corallo-900:#5D000A; --corallo-950:#370000;
 --neutro-50:#F7F7FA; --neutro-100:#ECECEF; --neutro-200:#D6D6D9; --neutro-300:#B4B8C6; --neutro-400:#8F93A3; --neutro-500:#6B6F80; --neutro-600:#4A4E5E; --neutro-700:#383B4A; --neutro-800:#292931; --neutro-900:#1B1B22; --neutro-950:#0B0B12;
 --successo-50:#EFFFF6; --successo-100:#D0FFE4; --successo-200:#B6F1D0; --successo-300:#96DBB6; --successo-400:#6DC096; --successo-500:#42A577; --successo-600:#038A5A; --successo-700:#036B45; --successo-800:#024E31; --successo-900:#013620; --successo-950:#001C0F;
 --errore-50:#FEF9F8; --errore-100:#FFEDEB; --errore-200:#FFD5D3; --errore-300:#FFB3AF; --errore-400:#FF807F; --errore-500:#EB555A; --errore-600:#D02A3A; --errore-700:#AA0625; --errore-800:#7E0118; --errore-900:#59000D; --errore-950:#320004;
 --avviso-50:#FFF9F3; --avviso-100:#FFF2E3; --avviso-200:#FEE2C3; --avviso-300:#FFCC91; --avviso-400:#FEAD3F; --avviso-500:#EA9602; --avviso-600:#B87502; --avviso-700:#8E5901; --avviso-800:#653F03; --avviso-900:#452901; --avviso-950:#221200;
 --info-50:#F7FBFE; --info-100:#E7F3FF; --info-200:#C8E5FF; --info-300:#9AD0FE; --info-400:#6AB3F0; --info-500:#3F97D9; --info-600:#037AC0; --info-700:#045E96; --info-800:#02446E; --info-900:#002E4E; --info-950:#00182B;
 --gradient-standard:linear-gradient(90deg in oklch,#4F46E5 0%,#9333EA 50%,#E11D48 100%); /* Accenti su chiaro: simbolo, sopratitolo, linee, icona chiave */
 --gradient-soft:linear-gradient(90deg,var(--indaco-50) 0%,var(--viola-50) 50%,var(--corallo-50) 100%); /* Sfondo di sezione/banner chiaro, testo Inchiostro sopra */
 --gradient-light:linear-gradient(90deg,var(--indaco-100) 0%,var(--viola-100) 50%,var(--corallo-100) 100%); /* Sfondo card evidenziata o badge, testo Inchiostro sopra */
 --gradient-intense:linear-gradient(90deg in oklch,#4F46E5 0%,#9333EA 50%,#E11D48 100%); /* Bottone hero/CTA speciale con testo bianco */
 --gradient-dark:linear-gradient(90deg in oklch,#4F46E5 0%,#9333EA 50%,#E11D48 100%); /* Accenti su sfondo Inchiostro (testo/linee in gradiente) */
 --gradient-indaco-viola:linear-gradient(90deg,#4F46E5 0%,#9333EA 100%); /* Elementi funzionali (progress, toggle attivo, grafici) */
 --gradient-viola-corallo:linear-gradient(90deg,#9333EA 0%,#E11D48 100%); /* Elementi caldi/emozionali (badge novità, highlight) */
 --gradient-accent:var(--gradient-standard);
 --bg:#F7F7FA;
 --surface:#FFFFFF;
 --surface-alt:#ECECEF;
 --text-primary:#0B0B12;
 --text-secondary:#4A4E5E;
 --text-muted:#6B6F80;
 --text-on-accent:#FFFFFF;
 --border:#D6D6D9;
 --border-strong:#B4B8C6;
 --accent:#4F46E5;
 --accent-hover:#3D2DC2;
 --accent-soft:#F9FAFE;
 --link:#4F46E5;
 --link-hover:#2D169C;
 --focus:#6A6EFF;
 --success:#036B45;
 --success-bg:#EFFFF6;
 --error:#D02A3A;
 --error-bg:#FEF9F8;
 --warning:#653F03;
 --warning-bg:#FFF9F3;
 --info:#045E96;
 --info-bg:#F7FBFE;
}
[data-theme="dark"]{
 --bg:#0B0B12;
 --surface:#1B1B22;
 --surface-alt:#292931;
 --text-primary:#F7F7FA;
 --text-secondary:#B4B8C6;
 --text-muted:#8F93A3;
 --text-on-accent:#FFFFFF;
 --border:#292931;
 --border-strong:#383B4A;
 --accent:#4F46E5;
 --accent-hover:#6A6EFF;
 --accent-soft:#10004C;
 --link:#B5BFFE;
 --link-hover:#D5DCFE;
 --focus:#8D99FE;
 --success:#6DC096;
 --success-bg:#001C0F;
 --error:#FF807F;
 --error-bg:#320004;
 --warning:#FFCC91;
 --warning-bg:#221200;
 --info:#6AB3F0;
 --info-bg:#00182B;
}


/* ===== design-system/01-spaziature/tokens.css ===== */
:root{
  /* scala base 4px */
  --space-0: 0rem; /* 0px */
  --space-1: 0.25rem; /* 4px */
  --space-2: 0.5rem; /* 8px */
  --space-3: 0.75rem; /* 12px */
  --space-4: 1rem; /* 16px */
  --space-5: 1.25rem; /* 20px */
  --space-6: 1.5rem; /* 24px */
  --space-7: 2rem; /* 32px */
  --space-8: 2.5rem; /* 40px */
  --space-9: 3rem; /* 48px */
  --space-10: 4rem; /* 64px */
  --space-11: 5rem; /* 80px */
  --space-12: 6rem; /* 96px */
  --space-13: 8rem; /* 128px */
  --space-14: 10rem; /* 160px */
  --container-max: 80rem; /* 1280px */
  --container-max-wide: 90rem; /* 1440px */
  --grid-columns: 12;
  --section-s: 4rem; /* 64px */
  --section-m: 7rem; /* 112px */
  --section-l: 8rem; /* 128px */
  --container-pad: 3rem; /* 48px */
  --grid-gap: 1.5rem; /* 24px */
  --card-gap: 1.25rem; /* 20px */
  --card-pad: 1.5rem; /* 24px */
  --eyebrow-title: 0.75rem; /* 12px */
  --title-text: 2rem; /* 32px */
  --text-actions: 2rem; /* 32px */
  --actions-gap: 0.75rem; /* 12px */
  --paragraph: 1rem; /* 16px */
  --header-content: 4rem; /* 64px */
  --radius-sm: 8px;
  --radius-md: 16px;
  --measure-text: 60ch;
  --measure-title: 20ch;
}
@media (max-width: 63.9375rem){ /* tablet 768–1023 */
  :root{
    --grid-columns: 8;
    --section-s: 3rem;
    --section-m: 5rem;
    --section-l: 6rem;
    --container-pad: 2rem;
    --grid-gap: 1.25rem;
    --card-pad: 1.25rem;
    --title-text: 1.5rem;
    --text-actions: 1.75rem;
    --header-content: 3rem;
  }
}
@media (max-width: 47.9375rem){ /* mobile <768 */
  :root{
    --grid-columns: 4;
    --section-s: 2.5rem;
    --section-m: 3.5rem;
    --section-l: 5rem;
    --container-pad: 1rem;
    --grid-gap: 1rem;
    --card-gap: 1rem;
    --eyebrow-title: 0.5rem;
    --title-text: 1.25rem;
    --text-actions: 1.5rem;
    --header-content: 2.5rem;
  }
}
/* 1024–1279: desktop compatto, solo layout (card 3→2 se serve) */
.container{width:100%;max-width:calc(var(--container-max) + 2*var(--container-pad));margin-inline:auto;padding-inline:var(--container-pad)}
.section-s{padding-block:var(--section-s)}.section-m{padding-block:var(--section-m)}.section-l{padding-block:var(--section-l)}
.grid{display:grid;grid-template-columns:repeat(var(--grid-columns),minmax(0,1fr));gap:var(--grid-gap)}

/* ===== design-system/02-tipografia/tokens.css ===== */
/* Martini Francesco · Design system 02 Tipografia · font del brand Plus Jakarta Sans: cambia solo --font-sans */
:root{
 --font-sans:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
 /* font del brand: Plus Jakarta Sans (sostituisce Inter Tight provvisorio) */
 --color-ink:#0B0B12; --color-slate:#4A4E5E;
 --gradient-accent:linear-gradient(90deg in oklch,#4F46E5 0%,#9333EA 50%,#E11D48 100%); /* solo accenti */
 --fs-display:3rem; --lh-display:52px; --ls-display:-0.025em; --fw-display:600;
 --fs-h1:2.5rem; --lh-h1:44px; --ls-h1:-0.025em; --fw-h1:600;
 --fs-h2:2rem; --lh-h2:36px; --ls-h2:-0.02em; --fw-h2:600;
 --fs-h3:1.375rem; --lh-h3:28px; --ls-h3:-0.01em; --fw-h3:600;
 --fs-h4:1.125rem; --lh-h4:24px; --ls-h4:-0.01em; --fw-h4:600;
 --fs-lead:1.125rem; --lh-lead:28px; --ls-lead:0em; --fw-lead:400;
 --fs-body:1rem; --lh-body:24px; --ls-body:0em; --fw-body:400;
 --fs-small:0.8125rem; --lh-small:20px; --ls-small:0em; --fw-small:400;
 --fs-caption:0.75rem; --lh-caption:16px; --ls-caption:0em; --fw-caption:400;
 --fs-link:1rem; --lh-link:24px; --ls-link:0em; --fw-link:500;
 --fs-link-sm:0.875rem; --lh-link-sm:20px; --ls-link-sm:0em; --fw-link-sm:400;
 --fs-eyebrow:0.75rem; --lh-eyebrow:16px; --ls-eyebrow:0.08em; --fw-eyebrow:600;
 --fs-button:1rem; --lh-button:24px; --ls-button:0em; --fw-button:500;
 --fs-button-sm:0.875rem; --lh-button-sm:20px; --ls-button-sm:0em; --fw-button-sm:500;
}
@media (min-width:768px){:root{
  --fs-display:4rem; --lh-display:68px; --ls-display:-0.03em; --fw-display:600;
  --fs-h1:3.25rem; --lh-h1:56px; --ls-h1:-0.03em; --fw-h1:600;
  --fs-h2:2.5rem; --lh-h2:44px; --ls-h2:-0.025em; --fw-h2:600;
  --fs-h3:1.5rem; --lh-h3:32px; --ls-h3:-0.01em; --fw-h3:600;
  --fs-h4:1.125rem; --lh-h4:24px; --ls-h4:-0.01em; --fw-h4:600;
  --fs-lead:1.25rem; --lh-lead:28px; --ls-lead:0em; --fw-lead:400;
  --fs-body:1rem; --lh-body:24px; --ls-body:0em; --fw-body:400;
  --fs-small:0.875rem; --lh-small:20px; --ls-small:0em; --fw-small:400;
  --fs-caption:0.75rem; --lh-caption:16px; --ls-caption:0em; --fw-caption:400;
  --fs-link:1rem; --lh-link:24px; --ls-link:0em; --fw-link:500;
  --fs-link-sm:0.875rem; --lh-link-sm:20px; --ls-link-sm:0em; --fw-link-sm:400;
  --fs-eyebrow:0.75rem; --lh-eyebrow:16px; --ls-eyebrow:0.08em; --fw-eyebrow:600;
  --fs-button:1rem; --lh-button:24px; --ls-button:0em; --fw-button:500;
  --fs-button-sm:0.875rem; --lh-button-sm:20px; --ls-button-sm:0em; --fw-button-sm:500;
}}
@media (min-width:1024px){:root{
  --fs-display:5rem; --lh-display:84px; --ls-display:-0.03em; --fw-display:600;
  --fs-h1:4rem; --lh-h1:68px; --ls-h1:-0.03em; --fw-h1:600;
  --fs-h2:3rem; --lh-h2:52px; --ls-h2:-0.025em; --fw-h2:600;
  --fs-h3:1.75rem; --lh-h3:36px; --ls-h3:-0.015em; --fw-h3:600;
  --fs-h4:1.25rem; --lh-h4:28px; --ls-h4:-0.01em; --fw-h4:600;
  --fs-lead:1.375rem; --lh-lead:32px; --ls-lead:0em; --fw-lead:400;
  --fs-body:1.0625rem; --lh-body:28px; --ls-body:0em; --fw-body:400;
  --fs-small:0.875rem; --lh-small:20px; --ls-small:0em; --fw-small:400;
  --fs-caption:0.75rem; --lh-caption:16px; --ls-caption:0em; --fw-caption:400;
  --fs-link:1.0625rem; --lh-link:28px; --ls-link:0em; --fw-link:500;
  --fs-link-sm:0.875rem; --lh-link-sm:20px; --ls-link-sm:0em; --fw-link-sm:400;
  --fs-eyebrow:0.8125rem; --lh-eyebrow:16px; --ls-eyebrow:0.08em; --fw-eyebrow:600;
  --fs-button:1rem; --lh-button:24px; --ls-button:0em; --fw-button:500;
  --fs-button-sm:0.875rem; --lh-button-sm:20px; --ls-button-sm:0em; --fw-button-sm:500;
}}
body{font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--fw-body);color:var(--color-slate)}
a.t-link,p a{text-decoration:underline;text-underline-offset:.2em;color:var(--color-ink)}
h1,h2,h3,h4{color:var(--color-ink);margin:0}
h1{font-size:var(--fs-h1);line-height:var(--lh-h1);letter-spacing:var(--ls-h1);font-weight:var(--fw-h1)}
h2{font-size:var(--fs-h2);line-height:var(--lh-h2);letter-spacing:var(--ls-h2);font-weight:var(--fw-h2)}
h3{font-size:var(--fs-h3);line-height:var(--lh-h3);letter-spacing:var(--ls-h3);font-weight:var(--fw-h3)}
h4{font-size:var(--fs-h4);line-height:var(--lh-h4);letter-spacing:var(--ls-h4);font-weight:var(--fw-h4)}
.t-display{font-size:var(--fs-display);line-height:var(--lh-display);letter-spacing:var(--ls-display);font-weight:var(--fw-display)}
.t-lead{font-size:var(--fs-lead);line-height:var(--lh-lead);letter-spacing:var(--ls-lead);font-weight:var(--fw-lead)}
.t-small{font-size:var(--fs-small);line-height:var(--lh-small);letter-spacing:var(--ls-small);font-weight:var(--fw-small)}
.t-caption{font-size:var(--fs-caption);line-height:var(--lh-caption);letter-spacing:var(--ls-caption);font-weight:var(--fw-caption)}
.t-link{font-size:var(--fs-link);line-height:var(--lh-link);letter-spacing:var(--ls-link);font-weight:var(--fw-link)}
.t-link-sm{font-size:var(--fs-link-sm);line-height:var(--lh-link-sm);letter-spacing:var(--ls-link-sm);font-weight:var(--fw-link-sm)}
.t-eyebrow{font-size:var(--fs-eyebrow);line-height:var(--lh-eyebrow);letter-spacing:var(--ls-eyebrow);font-weight:var(--fw-eyebrow)}
.t-button{font-size:var(--fs-button);line-height:var(--lh-button);letter-spacing:var(--ls-button);font-weight:var(--fw-button)}
.t-button-sm{font-size:var(--fs-button-sm);line-height:var(--lh-button-sm);letter-spacing:var(--ls-button-sm);font-weight:var(--fw-button-sm)}
.t-eyebrow{text-transform:uppercase;background:var(--gradient-accent);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ===== design-system/04-bottoni/tokens.css ===== */
/* Martini Francesco · Design system 04 Bottoni · usa i token di 01-spaziature, 02-tipografia, 03-colori */
:root{
 --btn-font:var(--font-sans,"Plus Jakarta Sans",system-ui,sans-serif); --btn-weight:500;
 --btn-radius:12px; --btn-radius-pill:999px; --btn-border-width:1px;
 --btn-group-gap:12px; --btn-icon-stroke:1.25;
 --btn-transition:150ms cubic-bezier(.4,0,.2,1);
 --btn-focus-width:2px; --btn-focus-offset:2px;
 --btn-touch-min:44px;
 --btn-sm-h:36px; --btn-sm-px:16px; --btn-sm-icon:16px; --btn-sm-gap:6px; --btn-sm-fs:0.875rem; --btn-sm-lh:20px;
 --btn-md-h:44px; --btn-md-px:20px; --btn-md-icon:20px; --btn-md-gap:8px; --btn-md-fs:1.0rem; --btn-md-lh:24px;
 --btn-lg-h:52px; --btn-lg-px:24px; --btn-lg-icon:20px; --btn-lg-gap:8px; --btn-lg-fs:1.0rem; --btn-lg-lh:24px;
 --btn-primary-default-bg:#4F46E5; --btn-primary-default-fg:#FFFFFF;
 --btn-primary-hover-bg:#3D2DC2; --btn-primary-hover-fg:#FFFFFF;
 --btn-primary-active-bg:#2D169C; --btn-primary-active-fg:#FFFFFF;
 --btn-secondary-default-bg:#0B0B12; --btn-secondary-default-fg:#FFFFFF;
 --btn-secondary-hover-bg:#292931; --btn-secondary-hover-fg:#FFFFFF;
 --btn-secondary-active-bg:#383B4A; --btn-secondary-active-fg:#FFFFFF;
 --btn-outline-default-bg:#FFFFFF; --btn-outline-default-fg:#0B0B12; --btn-outline-default-border:#8F93A3;
 --btn-outline-hover-bg:#ECECEF; --btn-outline-hover-fg:#0B0B12; --btn-outline-hover-border:#6B6F80;
 --btn-outline-active-bg:#D6D6D9; --btn-outline-active-fg:#0B0B12; --btn-outline-active-border:#6B6F80;
 --btn-ghost-default-bg:transparent; --btn-ghost-default-fg:#0B0B12;
 --btn-ghost-hover-bg:#ECECEF; --btn-ghost-hover-fg:#0B0B12;
 --btn-ghost-active-bg:#D6D6D9; --btn-ghost-active-fg:#0B0B12;
 --btn-link-default-bg:transparent; --btn-link-default-fg:#4F46E5;
 --btn-link-hover-bg:transparent; --btn-link-hover-fg:#2D169C;
 --btn-link-active-bg:transparent; --btn-link-active-fg:#1F007B;
 --btn-gradient-default-bg:linear-gradient(90deg in oklch,#4F46E5 0%,#9333EA 50%,#E11D48 100%); --btn-gradient-default-fg:#FFFFFF;
 --btn-gradient-hover-bg:linear-gradient(90deg in oklch,#4338CA 0%,#791FC5 50%,#B10031 100%); --btn-gradient-hover-fg:#FFFFFF;
 --btn-gradient-active-bg:linear-gradient(90deg in oklch,#3730A3 0%,#590097 50%,#86001D 100%); --btn-gradient-active-fg:#FFFFFF;
 --btn-destructive-default-bg:#D02A3A; --btn-destructive-default-fg:#FFFFFF;
 --btn-destructive-hover-bg:#AA0625; --btn-destructive-hover-fg:#FFFFFF;
 --btn-destructive-active-bg:#7E0118; --btn-destructive-active-fg:#FFFFFF;
 --btn-disabled-bg:#ECECEF; --btn-disabled-fg:#8F93A3; --btn-focus-color:#4F46E5;
}
@media (min-width:768px) and (max-width:1023px){:root{
 --btn-sm-h:40px;
 --btn-md-h:44px;
 --btn-lg-h:52px;
}}
@media (max-width:767px){:root{
 --btn-sm-h:44px;
 --btn-md-h:48px;
 --btn-lg-h:52px;
}}
[data-theme="dark"]{
 --btn-primary-default-bg:#4F46E5; --btn-primary-default-fg:#FFFFFF;
 --btn-primary-hover-bg:#3D2DC2; --btn-primary-hover-fg:#FFFFFF;
 --btn-primary-active-bg:#2D169C; --btn-primary-active-fg:#FFFFFF;
 --btn-secondary-default-bg:#F7F7FA; --btn-secondary-default-fg:#0B0B12;
 --btn-secondary-hover-bg:#D6D6D9; --btn-secondary-hover-fg:#0B0B12;
 --btn-secondary-active-bg:#B4B8C6; --btn-secondary-active-fg:#0B0B12;
 --btn-outline-default-bg:#0B0B12; --btn-outline-default-fg:#F7F7FA; --btn-outline-default-border:#6B6F80;
 --btn-outline-hover-bg:#1B1B22; --btn-outline-hover-fg:#F7F7FA; --btn-outline-hover-border:#8F93A3;
 --btn-outline-active-bg:#292931; --btn-outline-active-fg:#F7F7FA; --btn-outline-active-border:#8F93A3;
 --btn-ghost-default-bg:transparent; --btn-ghost-default-fg:#F7F7FA;
 --btn-ghost-hover-bg:#1B1B22; --btn-ghost-hover-fg:#F7F7FA;
 --btn-ghost-active-bg:#292931; --btn-ghost-active-fg:#F7F7FA;
 --btn-link-default-bg:transparent; --btn-link-default-fg:#B5BFFE;
 --btn-link-hover-bg:transparent; --btn-link-hover-fg:#D5DCFE;
 --btn-link-active-bg:transparent; --btn-link-active-fg:#EDF0FE;
 --btn-gradient-default-bg:linear-gradient(90deg in oklch,#4F46E5 0%,#9333EA 50%,#E11D48 100%); --btn-gradient-default-fg:#FFFFFF;
 --btn-gradient-hover-bg:linear-gradient(90deg in oklch,#4338CA 0%,#791FC5 50%,#B10031 100%); --btn-gradient-hover-fg:#FFFFFF;
 --btn-gradient-active-bg:linear-gradient(90deg in oklch,#3730A3 0%,#590097 50%,#86001D 100%); --btn-gradient-active-fg:#FFFFFF;
 --btn-destructive-default-bg:#D02A3A; --btn-destructive-default-fg:#FFFFFF;
 --btn-destructive-hover-bg:#AA0625; --btn-destructive-hover-fg:#FFFFFF;
 --btn-destructive-active-bg:#7E0118; --btn-destructive-active-fg:#FFFFFF;
 --btn-disabled-bg:#1B1B22; --btn-disabled-fg:#6B6F80; --btn-focus-color:#8D99FE;
}


.btn{--h:var(--btn-md-h);--px:var(--btn-md-px);--ic:var(--btn-md-icon);--g:var(--btn-md-gap);
 display:inline-flex;align-items:center;justify-content:center;gap:var(--g);min-height:var(--h);padding:0 var(--px);
 font-family:var(--btn-font);font-weight:var(--btn-weight);font-size:var(--btn-md-fs);line-height:var(--btn-md-lh);
 border:var(--btn-border-width) solid transparent;border-radius:var(--btn-radius);cursor:pointer;text-decoration:none;white-space:nowrap;
 transition:background var(--btn-transition),color var(--btn-transition),border-color var(--btn-transition);position:relative}
.btn svg{width:var(--ic);height:var(--ic);stroke-width:var(--btn-icon-stroke);flex:none}
.btn--sm{--h:var(--btn-sm-h);--px:var(--btn-sm-px);--ic:var(--btn-sm-icon);--g:var(--btn-sm-gap);font-size:var(--btn-sm-fs);line-height:var(--btn-sm-lh)}
.btn--lg{--h:var(--btn-lg-h);--px:var(--btn-lg-px);--ic:var(--btn-lg-icon);--g:var(--btn-lg-gap)}
.btn--icon{padding:0;width:var(--h)}
.btn--icon::after{content:"";position:absolute;inset:50% auto auto 50%;width:max(100%,var(--btn-touch-min));height:max(100%,var(--btn-touch-min));transform:translate(-50%,-50%)}
.btn:focus-visible{outline:var(--btn-focus-width) solid var(--btn-focus-color);outline-offset:var(--btn-focus-offset)}
.btn:disabled,.btn[aria-disabled="true"]{background:var(--btn-disabled-bg)!important;color:var(--btn-disabled-fg)!important;border-color:transparent!important;cursor:not-allowed}
.btn[aria-busy="true"]{cursor:progress}
.btn[aria-busy="true"] .btn__label{opacity:0}
.btn[aria-busy="true"]::before{content:"";position:absolute;width:var(--ic);height:var(--ic);border:1.25px solid currentColor;border-right-color:transparent;border-radius:50%;animation:btn-spin .7s linear infinite}
@keyframes btn-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.btn{transition:none}.btn[aria-busy="true"]::before{animation-duration:1.6s}}
.btn-group{display:flex;flex-wrap:wrap;gap:var(--btn-group-gap)}
@media (max-width:767px){.btn--block-mobile{width:100%}}
.btn--link{padding:0;min-height:auto;border:0;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}

.btn--primary{background:var(--btn-primary-default-bg);color:var(--btn-primary-default-fg);}
@media (hover:hover) and (pointer:fine){.btn--primary:hover{background:var(--btn-primary-hover-bg);color:var(--btn-primary-hover-fg);}}
.btn--primary:active{background:var(--btn-primary-active-bg);color:var(--btn-primary-active-fg);}
.btn--secondary{background:var(--btn-secondary-default-bg);color:var(--btn-secondary-default-fg);}
@media (hover:hover) and (pointer:fine){.btn--secondary:hover{background:var(--btn-secondary-hover-bg);color:var(--btn-secondary-hover-fg);}}
.btn--secondary:active{background:var(--btn-secondary-active-bg);color:var(--btn-secondary-active-fg);}
.btn--outline{background:var(--btn-outline-default-bg);color:var(--btn-outline-default-fg); border-color:var(--btn-outline-default-border);}
@media (hover:hover) and (pointer:fine){.btn--outline:hover{background:var(--btn-outline-hover-bg);color:var(--btn-outline-hover-fg); border-color:var(--btn-outline-hover-border);}}
.btn--outline:active{background:var(--btn-outline-active-bg);color:var(--btn-outline-active-fg); border-color:var(--btn-outline-active-border);}
.btn--ghost{background:var(--btn-ghost-default-bg);color:var(--btn-ghost-default-fg);}
@media (hover:hover) and (pointer:fine){.btn--ghost:hover{background:var(--btn-ghost-hover-bg);color:var(--btn-ghost-hover-fg);}}
.btn--ghost:active{background:var(--btn-ghost-active-bg);color:var(--btn-ghost-active-fg);}
.btn--link{background:var(--btn-link-default-bg);color:var(--btn-link-default-fg);}
@media (hover:hover) and (pointer:fine){.btn--link:hover{background:var(--btn-link-hover-bg);color:var(--btn-link-hover-fg);}}
.btn--link:active{background:var(--btn-link-active-bg);color:var(--btn-link-active-fg);}
.btn--gradient{background:var(--btn-gradient-default-bg);color:var(--btn-gradient-default-fg);}
@media (hover:hover) and (pointer:fine){.btn--gradient:hover{background:var(--btn-gradient-hover-bg);color:var(--btn-gradient-hover-fg);}}
.btn--gradient:active{background:var(--btn-gradient-active-bg);color:var(--btn-gradient-active-fg);}
.btn--destructive{background:var(--btn-destructive-default-bg);color:var(--btn-destructive-default-fg);}
@media (hover:hover) and (pointer:fine){.btn--destructive:hover{background:var(--btn-destructive-hover-bg);color:var(--btn-destructive-hover-fg);}}
.btn--destructive:active{background:var(--btn-destructive-active-bg);color:var(--btn-destructive-active-fg);}
.btn--link{min-height:auto}
@media (max-width:767px){.btn--link{min-height:var(--btn-touch-min)}}
/* ===== design-system/06-movimento/tokens.css ===== */
/* Movimento — design system Martini Francesco. Scelte mie, riconciliate con i blocchi precedenti (vedi movimento.md). */
:root{
 /* durate */
 --dur-0:0ms;
 --dur-xs:120ms;  /* tooltip, select, calendario, focus, colore link */
 --dur-sm:150ms;  /* switch, checkbox, popover, hover bottoni */
 --dur-md:200ms;  /* hover card, progress, toast, tab indicatore, dropdown chiusura */
 --dur-lg:320ms;  /* mega menu, modale, sheet, accordion */
 --dur-xl:600ms;  /* scroll reveal, hero, transizione pagina */
 /* loop e attese (non nella scala) */
 --loop-spinner:800ms; --loop-skeleton:1500ms; --loop-pulse:2000ms; --loop-gradient:12s; --loop-marquee:40s;
 --delay-tooltip:500ms; --delay-tooltip-skip:300ms; --delay-tooltip-out:100ms; --delay-spinner:300ms; --delay-topbar:150ms;
 --toast-info:5000ms; --toast-warn:8000ms;
 /* curve */
 --ease-standard:cubic-bezier(.4,0,.2,1);   /* cambi di stato in posto */
 --ease-enter:cubic-bezier(.22,1,.36,1);    /* elementi che entrano (decelera) */
 --ease-exit:cubic-bezier(.4,0,1,1);        /* elementi che escono (accelera) */
 --ease-emphasized:cubic-bezier(.65,0,.35,1); /* spostamenti grandi, indicatore tab, pagina */
 --ease-spring:linear(0,.009,.035 2.1%,.141 4.4%,.723 12.9%,.938 16.7%,1.017 20.4%,1.041 24.1%,1.035 28.4%,1.01 37.9%,.998 47.1%,1);
 /* distanze */
 --move-xs:2px;  /* hover lift */
 --move-sm:4px;  /* tooltip, dropdown */
 --move-md:8px;  /* mega menu, toast */
 --move-lg:24px; /* scroll reveal desktop */
 --move-xl:40px; /* hero, sheet parziale */
 --scale-in:.96; --scale-press:.98;
 /* stagger */
 --stagger:40ms; --stagger-hero:60ms; --stagger-max:8; /* oltre 8 elementi niente ritardo aggiuntivo */
}
@media (max-width:767px){:root{--move-lg:16px;--move-xl:24px;--dur-xl:500ms}}
/* riduci movimento: niente spostamenti/scale, solo dissolvenze brevi; loop fermi o rallentati */
@media (prefers-reduced-motion:reduce){:root{--move-xs:0px;--move-sm:0px;--move-md:0px;--move-lg:0px;--move-xl:0px;--scale-in:1;--scale-press:1;--dur-lg:120ms;--dur-xl:120ms;--stagger:0ms;--stagger-hero:0ms;--loop-spinner:1600ms;--loop-skeleton:0ms;--loop-gradient:0s;--ease-spring:var(--ease-standard)}}
:root[data-motion="reduce"]{--move-xs:0px;--move-sm:0px;--move-md:0px;--move-lg:0px;--move-xl:0px;--scale-in:1;--scale-press:1;--dur-lg:120ms;--dur-xl:120ms;--stagger:0ms;--stagger-hero:0ms;--loop-spinner:1600ms;--loop-skeleton:0ms;--loop-gradient:0s;--ease-spring:var(--ease-standard)}
