Le système

8 couleurs · 9 rôles de texte · 1 rouge

Tout le site est bâti là-dessus. Rien n’est recopié sur cette page : chaque aplat lit son jeton et chaque composant est le vrai. Bascule le thème dans l’en-tête — la moitié d’en bas suit, l’autre non, et c’est exactement la frontière.

La marque

Huit couleurs, invariantes. Elles ne connaissent pas le thème : ce sont les pigments, pas la peinture.

Minuit--hyko-minuit
Charbon--hyko-charbon
Ardoise--hyko-ardoise
Béton--hyko-beton
Acier--hyko-acier
Cendre--hyko-cendre
Ivoire--hyko-ivoire
Braise--hyko-braise
Les jetons sémantiques

La seule couche qu’un composant a le droit d’employer, et la seule qui bascule. Un composant qui écrit « --hyko-ivoire » se trompe : il veut dire « --text-primary ».

Surfaces
surface-page--surface-pageLe fond de la page
surface-raised--surface-raisedUne carte, un rail, la bande
surface-card-survol--surface-card-survolLa carte survolée
surface-pastille--surface-pastilleL’actif dans une pilule
surface-block--surface-blockUn bloc dans un bloc
surface-field--surface-fieldUn champ de saisie
surface-glass--surface-glassUn voile sur ce qu’il y a dessous
surface-seal--surface-sealLe disque du sceau
Textes
text-primary--text-primaryCe qu’on vient lire
text-secondary--text-secondaryCe qui accompagne
text-accent--text-accentLes étiquettes, les micro-lignes
text-signal--text-signalCe qui appelle — jamais décoratif
text-on-invert--text-on-invertSur un aplat inversé
Filets
line-neutral--line-neutralLa séparation au repos
line-steel--line-steelLa même, au survol
line-signal--line-signalL’onglet actif, l’erreur
États
state-focus--state-focusLe contour de focus — toujours rouge
state-invert-bg--state-invert-bgLe fond d’un bouton au survol
state-disabled-fg--state-disabled-fgCe qui ne répond plus
state-live--state-liveLe point du direct
La typographie

Archivo pour ce qui titre, Inter pour ce qui se lit, Space Mono pour ce qui étiquette. Deux rôles en capitales, pas trois.

DisplayArchivo 700 · 72 px · −0,035 em
TitreArchivo 700 · 44 px · −0,03 em
Titre de pageArchivo 700 · 34 px
IntertitreArchivo 600 · 26 px
Corps largeInter 400 · 18 px
CorpsInter 400 · 16 px
PetitInter 400 · 14 px
ÉtiquetteSpace Mono · 12 px · capitales
MicroSpace Mono · 11 px · capitales
Les marques

Deux formes, et rien d’autre. Le sceau est le seul disque du système ; le losange sépare, et c’est tout.

LogoLe disque Braise et le Y, en tracé. La marque de la maison
DiamondLe séparateur, actif ou non
Les boutons

Trois variantes, deux tailles. Le primaire s’assombrit au survol au lieu de rougir — le rouge est déjà pris.

Les pilules

Tout ce qu’on manipule : un rail gris au filet fin, l’actif posé dans une pastille. Le même dessin pour les onglets de filtre, le thème et les étiquettes.

ToutTexteImages
Étiquette
Les surfaces

Un aplat au repos, un demi-cran de plus au survol. Ni filet ni ombre.

Carte

Fond « raised », sans filet, deux pixels de rayon.

Carte interactive

Survole-moi : l’aplat fonce d’un demi-cran. C’est toute l’élévation du système.

Sans boîte

Quand le contenu n’a pas besoin d’être enfermé, il se pose sur le sol, et l’espace autour suffit.

Les champs

Le focus est le seul rouge garanti de l’interface. Il ne se retire jamais.

Cette adresse ne ressemble à rien.
Le mouvement

Une apparition joue une fois, jamais en boucle, et se tait entièrement si le système demande moins d’animations. Recharge la page pour les revoir.

Fade up
La montée par défaut
.hyko-fade-up
Fade in
Sans déplacement
.hyko-fade-in
Fade left
Depuis la droite
.hyko-fade-left
Fade right
Depuis la gauche
.hyko-fade-right
Fade down
Depuis le haut
.hyko-fade-down
Zoom in
Pour les images
.hyko-zoom-in
Les règles

Elles ne vivaient jusqu’ici qu’en commentaires de CSS, où personne ne va les lire.

01
Ce qui se clique est rond, ce qui se regarde est carré

Boutons (le rouge d’action compris), onglets, sélecteur de thème, étiquettes, champ de recherche et boutons d’icône prennent la pilule (`--radius-pill`). Photos, cartes, vignettes et vidéos restent anguleuses, 2 px au plus (`--radius-sharp`). Deux exceptions : la case à cocher reste carrée, pour se distinguer d’un choix unique, et la zone de texte sur plusieurs lignes aussi. Ce qui flotte au-dessus de la page — la palette de recherche, un menu déroulant — prend des coins doux (`--radius-flottant`), assez ronds pour que ses options en pilule s’y logent.

02
Un aplat plutôt qu’un cadre

Une zone se tient par son fond `--surface-raised`, pas par une bordure. Au survol, elle fonce d’un demi-cran (`--surface-card-survol`). Dans un aplat, un champ est un creux : son fond suffit, et le filet rouge n’apparaît qu’au focus. Un outil, ce sont deux aplats côte à côte — le résultat et les réglages — et non un cadre coupé en deux. Il n’y a pas une seule `box-shadow` dans la maison.

03
Une image n’a pas de bordure

Photos, vignettes, bannières et vidéos se posent nues, à 2 px de rayon. Au survol, c’est l’image qui répond, d’un léger rapproché. Seuls le papier des tirages de l’accueil et le cadre de navigateur d’une fiche projet gardent un bord : ce sont des objets, pas des images.

04
L’espace sépare, pas le trait

Les listes n’ont plus de filet entre leurs lignes : l’espace les sépare, le survol pose un aplat. Serré dans un groupe, large entre deux : les photos d’une sortie se touchent presque (6 px), deux sorties sont à 64 px. Il reste un filet sous l’en-tête, un au-dessus du pied de page, et le contour fin des pilules.

05
Le rouge est un signal, pas une couleur

La braise dit le direct, le focus et l’erreur. L’onglet actif est une pastille grise. Un bouton survolé devient noir ou ivoire — jamais plus rouge.

06
Deux rôles en capitales, pas trois

`hyko-label` et `hyko-micro`. Tout le reste se lit en casse normale.

07
Pas d’emoji, pas d’Unicode détourné

Un séparateur est un losange. Une icône est un tracé, pas un caractère.

08
Le mouvement joue une fois

Les apparitions ont `fill-mode: both` et un délai indexé par `--i`. La seule boucle du site est le point du direct.