Dai una gerarchia ai pesi tipografici

Quasi tutto il testo dell'app stava fra 600 e 800: etichette, valori, indirizzi,
conteggi, voci di elenco. Un grassetto ovunque non segnala niente, e la pagina
Profilo era il caso peggiore — ogni riga gridava come un titolo.

La scala ora ha quattro gradini, documentati nei token:
  400  corpo, metadati, valori descrittivi
  500  etichette di campo, voci di lista, testo dei controlli
  600  stati brevi (badge, voce attiva), nomi in una riga di elenco
  700  titoli, uno solo per blocco

Sopra il 700 non si sale: l'800 dei titoli di card e dell'avatar e' sceso a 700.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-17 12:46:28 +02:00
parent 7099f02b60
commit 2d7e3c591e
5 changed files with 47 additions and 36 deletions
+3 -3
View File
@@ -116,13 +116,13 @@ img {
.t-label-lg { .t-label-lg {
font-size: var(--label-lg-size); font-size: var(--label-lg-size);
line-height: 1.25; line-height: 1.25;
font-weight: 600; font-weight: 500;
} }
.t-label-md { .t-label-md {
font-size: var(--label-md-size); font-size: var(--label-md-size);
line-height: 1.25; line-height: 1.25;
font-weight: 600; font-weight: 500;
} }
/* Identificativo tecnico sopra il titolo di una card (STILE_UI §4) */ /* Identificativo tecnico sopra il titolo di una card (STILE_UI §4) */
@@ -142,7 +142,7 @@ img {
.t-meta { .t-meta {
font-size: var(--body-md-size); font-size: var(--body-md-size);
line-height: var(--body-md-height); line-height: var(--body-md-height);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
} }
+19 -19
View File
@@ -46,7 +46,7 @@
.appbar__subtitle { .appbar__subtitle {
font-size: var(--label-md-size); font-size: var(--label-md-size);
line-height: 1.3; line-height: 1.3;
font-weight: 600; font-weight: 500;
color: var(--ink-muted); color: var(--ink-muted);
margin-top: var(--space-2); margin-top: var(--space-2);
} }
@@ -151,7 +151,7 @@
border-radius: var(--radius-pill); border-radius: var(--radius-pill);
font-size: var(--label-sm-size); font-size: var(--label-sm-size);
line-height: 1.2; line-height: 1.2;
font-weight: 700; font-weight: 600;
white-space: nowrap; white-space: nowrap;
} }
@@ -197,7 +197,7 @@
.list-card__title { .list-card__title {
font-size: var(--title-lg-size); font-size: var(--title-lg-size);
line-height: 1.15; line-height: 1.15;
font-weight: 800; font-weight: 700;
letter-spacing: -0.01em; letter-spacing: -0.01em;
color: var(--ink); color: var(--ink);
margin-top: var(--space-2); margin-top: var(--space-2);
@@ -207,7 +207,7 @@
margin-top: var(--space-6); margin-top: var(--space-6);
font-size: var(--body-md-size); font-size: var(--body-md-size);
line-height: var(--body-md-height); line-height: var(--body-md-height);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -219,7 +219,7 @@
gap: var(--space-6); gap: var(--space-6);
margin-top: var(--space-sm); margin-top: var(--space-sm);
font-size: var(--body-md-size); font-size: var(--body-md-size);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -267,7 +267,7 @@
.summary__subtitle { .summary__subtitle {
margin-top: var(--space-2); margin-top: var(--space-2);
font-size: var(--body-md-size); font-size: var(--body-md-size);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -299,7 +299,7 @@
.summary__metric-label { .summary__metric-label {
font-size: var(--label-sm-size); font-size: var(--label-sm-size);
line-height: 1.3; line-height: 1.3;
font-weight: 600; font-weight: 500;
color: var(--ink-muted); color: var(--ink-muted);
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
@@ -316,7 +316,7 @@
.summary__progress-count { .summary__progress-count {
font-size: var(--body-md-size); font-size: var(--body-md-size);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -377,7 +377,7 @@
background-color: var(--surface-muted); background-color: var(--surface-muted);
color: var(--ink-muted); color: var(--ink-muted);
font-size: var(--label-lg-size); font-size: var(--label-lg-size);
font-weight: 600; font-weight: 500;
white-space: nowrap; white-space: nowrap;
transition: background-color var(--duration-fast) var(--ease-out), transition: background-color var(--duration-fast) var(--ease-out),
border-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out),
@@ -436,7 +436,7 @@
border-radius: var(--radius-compact); border-radius: var(--radius-compact);
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
line-height: 1.4; line-height: 1.4;
font-weight: 600; font-weight: 500;
} }
.feedback__icon { font-size: 20px; line-height: 1.2; flex: 0 0 auto; } .feedback__icon { font-size: 20px; line-height: 1.2; flex: 0 0 auto; }
@@ -687,7 +687,7 @@
.sheet__subtitle { .sheet__subtitle {
margin-top: var(--space-2); margin-top: var(--space-2);
font-size: var(--body-md-size); font-size: var(--body-md-size);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -740,7 +740,7 @@
border: none; border: none;
font-family: inherit; font-family: inherit;
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
font-weight: 600; font-weight: 400;
color: var(--ink); color: var(--ink);
text-align: left; text-align: left;
} }
@@ -767,7 +767,7 @@
background-color: var(--info-surface); background-color: var(--info-surface);
color: var(--primary-dark); color: var(--primary-dark);
font-size: 22px; font-size: 22px;
font-weight: 800; font-weight: 700;
flex: 0 0 auto; flex: 0 0 auto;
} }
@@ -792,7 +792,7 @@
.field-tap__label { .field-tap__label {
font-size: var(--label-md-size); font-size: var(--label-md-size);
line-height: 1.25; line-height: 1.25;
font-weight: 600; font-weight: 500;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -802,7 +802,7 @@
gap: 7px; gap: 7px;
margin-top: 5px; margin-top: 5px;
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
font-weight: 600; font-weight: 500;
color: var(--ink); color: var(--ink);
overflow: hidden; overflow: hidden;
} }
@@ -832,7 +832,7 @@
padding: var(--space-6) var(--space-md); padding: var(--space-6) var(--space-md);
padding-top: calc(var(--space-6) + env(safe-area-inset-top, 0px)); padding-top: calc(var(--space-6) + env(safe-area-inset-top, 0px));
font-size: var(--label-md-size); font-size: var(--label-md-size);
font-weight: 700; font-weight: 600;
color: #ffffff; color: #ffffff;
transform: translateY(-100%); transform: translateY(-100%);
transition: transform var(--duration-slow) var(--ease-out); transition: transform var(--duration-slow) var(--ease-out);
@@ -969,7 +969,7 @@
color: #ffffff; color: #ffffff;
font-family: inherit; font-family: inherit;
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
font-weight: 700; font-weight: 600;
transition: transform var(--duration-fast) var(--ease-out), transition: transform var(--duration-fast) var(--ease-out),
background-color var(--duration-fast) var(--ease-out); background-color var(--duration-fast) var(--ease-out);
} }
@@ -999,7 +999,7 @@
gap: var(--space-xs); gap: var(--space-xs);
margin-top: var(--space-20); margin-top: var(--space-20);
font-size: var(--label-md-size); font-size: var(--label-md-size);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -1063,7 +1063,7 @@
text-align: center; text-align: center;
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
line-height: 1.4; line-height: 1.4;
font-weight: 600; font-weight: 500;
color: var(--ink); color: var(--ink);
} }
+10 -10
View File
@@ -27,14 +27,14 @@
gap: var(--space-xs); gap: var(--space-xs);
font-size: var(--label-md-size); font-size: var(--label-md-size);
line-height: 1.25; line-height: 1.25;
font-weight: 600; font-weight: 500;
color: var(--ink-muted); color: var(--ink-muted);
margin-bottom: var(--space-6); margin-bottom: var(--space-6);
} }
.form-group__count { .form-group__count {
font-size: var(--label-md-size); font-size: var(--label-md-size);
font-weight: 700; font-weight: 500;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -45,7 +45,7 @@
.form-group input, .form-group input,
.form-group .mud-select-input { .form-group .mud-select-input {
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
font-weight: 600; font-weight: 500;
color: var(--ink); color: var(--ink);
min-height: var(--touch-min); min-height: var(--touch-min);
} }
@@ -53,7 +53,7 @@
.form-group--required .form-group__label::after { .form-group--required .form-group__label::after {
content: "obbligatorio"; content: "obbligatorio";
font-size: var(--label-sm-size); font-size: var(--label-sm-size);
font-weight: 700; font-weight: 500;
color: var(--ink-muted); color: var(--ink-muted);
} }
@@ -65,7 +65,7 @@
gap: var(--space-6); gap: var(--space-6);
margin-top: var(--space-xs); margin-top: var(--space-xs);
font-size: var(--body-md-size); font-size: var(--body-md-size);
font-weight: 600; font-weight: 500;
color: var(--danger-ink); color: var(--danger-ink);
} }
@@ -90,7 +90,7 @@
color: var(--ink-muted); color: var(--ink-muted);
font-family: inherit; font-family: inherit;
font-size: var(--label-lg-size); font-size: var(--label-lg-size);
font-weight: 600; font-weight: 500;
transition: background-color var(--duration-fast) var(--ease-out), transition: background-color var(--duration-fast) var(--ease-out),
border-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out),
color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out),
@@ -135,7 +135,7 @@
outline: none; outline: none;
font-family: inherit; font-family: inherit;
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
font-weight: 600; font-weight: 500;
color: var(--ink); color: var(--ink);
/* Il codice si legge cifra per cifra: cifre a larghezza fissa. */ /* Il codice si legge cifra per cifra: cifre a larghezza fissa. */
font-variant-numeric: tabular-nums; font-variant-numeric: tabular-nums;
@@ -197,14 +197,14 @@
.art-item__name { .art-item__name {
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
line-height: 1.25; line-height: 1.25;
font-weight: 700; font-weight: 600;
color: var(--ink); color: var(--ink);
} }
.art-item__code { .art-item__code {
margin-top: var(--space-2); margin-top: var(--space-2);
font-size: var(--label-md-size); font-size: var(--label-md-size);
font-weight: 600; font-weight: 400;
color: var(--ink-muted); color: var(--ink-muted);
font-variant-numeric: tabular-nums; font-variant-numeric: tabular-nums;
} }
@@ -301,7 +301,7 @@
background-color: var(--surface); background-color: var(--surface);
font-family: inherit; font-family: inherit;
font-size: var(--body-lg-size); font-size: var(--body-lg-size);
font-weight: 600; font-weight: 500;
color: var(--ink); color: var(--ink);
text-align: left; text-align: left;
transition: transform var(--duration-fast) var(--ease-out), transition: transform var(--duration-fast) var(--ease-out),
@@ -60,7 +60,7 @@
--mud-typography-subtitle2-family: var(--mud-typography-default-family); --mud-typography-subtitle2-family: var(--mud-typography-default-family);
--mud-typography-subtitle2-size: var(--body-md-size); --mud-typography-subtitle2-size: var(--body-md-size);
--mud-typography-subtitle2-weight: 600; --mud-typography-subtitle2-weight: 500;
--mud-typography-body1-family: var(--mud-typography-default-family); --mud-typography-body1-family: var(--mud-typography-default-family);
--mud-typography-body1-size: var(--body-lg-size); --mud-typography-body1-size: var(--body-lg-size);
@@ -78,7 +78,7 @@
--mud-typography-caption-family: var(--mud-typography-default-family); --mud-typography-caption-family: var(--mud-typography-default-family);
--mud-typography-caption-size: var(--label-md-size); --mud-typography-caption-size: var(--label-md-size);
--mud-typography-caption-weight: 600; --mud-typography-caption-weight: 500;
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
@@ -236,7 +236,7 @@
.mud-input-helper-text.mud-input-error, .mud-input-helper-text.mud-input-error,
.mud-input-error .mud-input-helper-text { .mud-input-error .mud-input-helper-text {
color: var(--danger-ink); color: var(--danger-ink);
font-weight: 600; font-weight: 500;
} }
/* Il testo segnaposto deve restare leggibile al sole: stesso contrasto del /* Il testo segnaposto deve restare leggibile al sole: stesso contrasto del
@@ -276,7 +276,7 @@
border-radius: var(--radius-pill); border-radius: var(--radius-pill);
font-family: var(--font-sans); font-family: var(--font-sans);
font-size: var(--label-sm-size); font-size: var(--label-sm-size);
font-weight: 700; font-weight: 600;
letter-spacing: normal; letter-spacing: normal;
text-transform: none; text-transform: none;
} }
+11
View File
@@ -122,6 +122,17 @@
--label-md-size: 13px; --label-md-size: 13px;
--label-sm-size: 12px; --label-sm-size: 12px;
/* PESI — il grassetto e' un segnale, e un segnale ovunque non segnala
niente. Quattro gradini, e non si sale sopra il 700:
400 corpo, metadati, valori descrittivi
500 etichette di campo, voci di lista, testo dei controlli
600 stati brevi (badge, voce attiva), nomi in una riga di elenco
700 titoli: uno solo per blocco */
--weight-body: 400;
--weight-label: 500;
--weight-strong: 600;
--weight-title: 700;
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
MISURE STRUTTURALI MISURE STRUTTURALI
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */