I colori sono token, e il contrasto è un numero calcolato
La palette sta in un blocco di 14 variabili, e il testo secondario usa un solo token: `--muted: #666b65`. I rapporti, ricalcolati con la formula di luminanza relativa del WCAG sui sette sfondi del sito: 5,45:1 su bianco, 5,15, 5,11, 5,03, 5,02, 4,79 e 4,72. Il testo principale, `--ink: #181a19`, ottiene 17,49:1 su bianco; l’accento verde `#355c46`, 7,58:1. Quando un colore non raggiunge la soglia, si cambia il token, non si argomenta in riunione.
I componenti hanno un pattern da tastiera, non solo aspetto
Il gruppo di tab della pagina iniziale usa un indice di tabulazione mobile: solo il tab attivo è accessibile con Tab, gli altri sono esclusi dall’ordine, e le frecce sinistra/destra, Home ed End spostano il focus, con il comportamento predefinito del tasto annullato. È il modello delle pratiche raccomandate per componenti accessibili, implementato, non citato. Nei componenti di base del sito ci sono 21 etichette accessibili, 7 stati premuto/non premuto, 3 collegamenti tra titolo e regione, 2 stati di selezione, 2 regioni che annunciano cambiamenti e 2 collegamenti tra comando e pannello che controllano.
Il movimento ha un pulsante di arresto e si spegne secondo la preferenza del sistema
Nella pagina iniziale ci sono 38 elementi animati all’infinito, avviati automaticamente, che durano più di cinque secondi — esattamente la situazione regolata dal criterio «Pausa, arresto, occultamento». Tutti e 38 sono coperti da pulsanti di pausa: alla pressione, le animazioni passano allo stato fermo e lo stato del pulsante cambia. Separatamente, a `prefers-reduced-motion: reduce` una regola globale annulla qualsiasi animazione e transizione, interrompe lo scorrimento fluido, elimina lo spostamento al passaggio del mouse e nasconde il pulsante di pausa. Nel foglio principale ci sono sette blocchi del genere, più uno nel foglio di base.
Indicatore di focus visibile, solo dove serve
Contorno solido di 2 px, nel verde di accento, con 5 px di distanza, applicato tramite `:focus-visible` — quindi compare nella navigazione con tastiera e non al clic con il mouse. Verificato nel browser, elemento per elemento, sull’intestazione e sui primi comandi del contenuto: quattro elementi diversi, lo stesso contorno. Da nessuna parte nel foglio di stile esiste un contorno rimosso senza sostituto.
Moduli che annunciano i propri stati
Nel modulo di contatto del sito, le etichette sono implicite sui campi, l’errore è marcato come alert e la conferma come stato — quindi i lettori di schermo li annunciano senza che l’utente debba cercare. La trappola per bot è nascosta correttamente: genitore senza display, marcato come nascosto per le tecnologie assistive e rimosso dall’ordine di tabulazione. L’audit proprio conferma che le regole di etichettatura, di nome per i selettori e di completamento automatico passano tutte.
La verifica si fa con uno strumento, su pagine reali
Eseguiamo axe-core 4.10.2 sulla pagina live, non in un ambiente di test, su un campione di dieci pagine che copre pattern diversi: la pagina iniziale, il catalogo, una pagina di prodotto, l’indice dei servizi, una pagina di servizio, la matrice delle soluzioni, una combinazione della matrice, il contatto, i prezzi, un articolo e un documento giuridico. Il risultato grezzo si scrive in pagina, con il numero di nodi, non riassunto in «conforme».
Ciò che fallisce si pubblica, non si arrotonda
Dallo stesso audit: a 320 px di larghezza, il comando nell’intestazione e il pulsante del menu superano lo schermo di 22 px e la pagina scorre orizzontalmente — l’aritmetica è 362 px di contenuto in un contenitore di 280 px. Nei documenti giuridici, i link nel testo non si distinguono dal testo circostante se non per il colore, e il rapporto tra accento e testo del corpo è 1,01:1, quindi la sottolineatura è obbligatoria. Entrambi sono aperti, con rimedio scritto. Li pubblichiamo perché un acquirente che chiede accessibilità merita di vedere come appare un elenco di difetti reale.
Niente tema scuro — detto, non simulato
Il sito non ha tema scuro. Il blocco di token è dichiarato per tre selettori che ricevono valori identici, e nel codice non esiste alcuna regola per la preferenza dello schema di sistema. Verificato nel browser con schema scuro emulato: la pagina resta bianca. La conseguenza utile: tutti i rapporti di contrasto misurati sono validi in entrambi gli schemi. La conseguenza spiacevole: l’interruttore del tema è codice morto dal punto di vista del colore. Un vero tema scuro significa rimisurazione completa del contrasto, non copia dei valori.
Tipografia con regole, non con preferenze
Un’unica famiglia per titoli e testo, con spaziatura tra le lettere regolata per livello — più stretta nei titoli grandi, `-0,055em` ai livelli uno e due, `-0,035em` al livello tre — e peso 500 per i titoli. I paragrafi usano l’equilibratura delle righe, così non resta una parola sola nell’ultima riga. Il contenitore ha una larghezza massima di 1240 px con margini di 48 px, e i pulsanti hanno la stessa altezza di riga ovunque. Sono regole scritte nel foglio di stile, quindi si applicano anche dopo che ce ne andiamo.