Chaque règle, écrite une fois.
La référence du portfolio : couleurs, typographie, espacements, grille et composants. Chaque page est construite avec ces briques, et rien d'autre.
10 règles
- Désordre apparent, rigueur invisible
Inclinaisons, quinconce, éventail : voulus, mesurés, réversibles (l'objet se redresse au survol). Jamais sur le texte, jamais de défilement horizontal. Dessous, la grille, les mesures et l'accessibilité restent stricts.
- Aller à l'essentiel, sans perdre l'essence
On démontre au lieu d'expliquer : un titre + une phrase, des étiquettes plutôt que des listes, un dessin plutôt qu'un paragraphe. Un symbole remplace un texte seulement quand le contexte donne déjà le libellé.
- Bleu = cliquable, ocre = ce qui ne l'est pas
Tout lien texte est bleu et souligné (la couleur seule ne suffit pas : 1,96:1). Tout autre élément cliquable a une forme de bouton : cercle du geste, ticket, onglet. Labels, années, tags, fil : en ocre, jamais cliquables. On avance à droite (→), on revient à gauche (←).
- Un rôle, une taille
8 rôles typographiques. Aucune taille décidée au cas par cas. Les nombres en chiffres. Typographie française : espaces insécables dans « », avant : ; ? ! % et —, et entre un nombre et son mot (appliquées automatiquement à la génération). Les groupes qui ne doivent pas se couper restent insécables (
.nw) : « UI/UX », « février à avril 2027 » (05/10 : Firefox coupait « UI/ » + « UX »). Capitales seulement pour les libellés de 1 à 3 mots (au-delà, −10 % de vitesse de lecture) ; la flèche est réservée aux liens (sauf dans les données : « 57 → 99 »). - 2 largeurs de lecture
≈ 65 caractères réels pour le texte (34em — mesuré, le « ch » trompait de 15 %), ≈ 50 pour le chapeau. WCAG 1.4.8 : jamais plus de 80. Paragraphes coupés au-delà de ~5 lignes.
- Un seul rythme
Les sections respirent toutes de la même façon ; à l'intérieur, 5 pas d'espacement. Une seule pause kraft par page.
- Une grille, 3 compositions
12 colonnes. Texte + visuel (5/6), texte + actions (7/4), étude de cas : titre + contenu (4/8). À 900 px et moins : une colonne, dans l'ordre de lecture.
- Des sections qui se ressemblent
Label numéroté, titre, contenu. Le visiteur apprend la structure une fois.
- Un objectif, un visage, une place
Chaque lien ou bouton appartient à une famille selon ce qu'il fait : naviguer, revenir, agir, lire, outil, s'informer. Même famille = même apparence (WCAG 3.2.4) ; familles différentes = formes et places différentes, jamais seulement la couleur. À gauche : revenir, s'informer. À droite : avancer, agir, outil. Zone cliquable ≥ 24 px, ou assez d'espace autour d'un lien isolé (WCAG 2.5.8 et son exception d'espacement). Détail en 06.
- Matière papier, un objet par page
Ticket, étiquettes, tirages, carte de coloris, enveloppe par avion : tous en papier, avec leurs détails d'artisan. En mode sombre, le papier reste clair (crème-kraft #EFE6D6, texte foncé : 14:1) — le vrai papier ne devient pas noir la nuit. Un objet doit apporter une valeur : écartés, l'ordinateur portable et le carnet ligné. Les bords du papier sont nets (tickets, étiquettes, cartons, bouton) : le « fait main » vient de l'inclinaison, des fils et des surpiqûres, jamais d'un contour qui ondule. Seuls les coups de pinceau (bande « Disponible », surlignage de la chute) sont irréguliers.
Clair et sombre, contrastes vérifiés
Contrastes calculés sur le fond de page (formule WCAG). « Décor seulement » : jamais pour du texte.
--bg
Fond de page
clair #F7F6F4 · 1.0:1 décor
sombre #0E0E0F · 1.0:1 décor
--s1
Surface (cartes)
clair #FFFFFF · 1.1:1 décor
sombre #161618 · 1.1:1 décor
--ink
Titres
clair #0A0A0A · 18.3:1 AA ✓
sombre #F2F2F0 · 17.2:1 AA ✓
--ink2
Texte courant
clair #1A1A1A · 16.1:1 AA ✓
sombre #E6E4E1 · 15.2:1 AA ✓
--mid
Texte secondaire
clair #5A5755 · 6.6:1 AA ✓
sombre #B3AEA8 · 8.8:1 AA ✓
--rule
Filets
clair #E8E5E2 · 1.2:1 décor
sombre #2A2A2A · 1.3:1 décor
--accent
Accent · liens UNIQUEMENT
clair #2B4C6F · 8.2:1 AA ✓
sombre #8FB3D9 · 8.8:1 AA ✓
--ochre
Ocre · décor : fil, icônes
clair #B8862F · 3.0:1 décor seulement
sombre #D9A94A · 8.9:1 AA ✓
--ochre-ink
Ocre texte · labels, années, tags
clair #8A6320 · 5.0:1 AA ✓
sombre #D9A94A · 8.9:1 AA ✓
--ticket-ground
Fond des vignettes · décor
clair #EFE8DC · 1.1:1 décor
sombre #D6C6A8 · 11.5:1 décor
--shirt
Bleu chemise · surlignage (texte --paint-ink dessus)
clair #B8CBF0 · 1.5:1 décor
sombre #B8CBF0 · 11.8:1 décor
--paint
Peinture · bande dispo
clair #E8C26A · 1.6:1 décor seulement
sombre #E8C26A · 11.4:1 AA ✓
DM Serif pour la voix, Inter pour l'information
Bonjour, je suis Amandine.
Prenons contact.
Mon parcours n'est pas une ligne droite
Olivier Coaching
Je crée des identités visuelles et des interfaces web.
15 ans dans le textile. Puis la lucidité de reconnaître qu'une autre voie était plus judicieuse.
Page d'accueil — desktop
Disponible pour stage
Cinq pas, deux largeurs
--stack-xs8px--stack-sm16px--stack-md24px--stack-lg40px--stack-xl64pxUne interface pose la même question. Comment un site, un outil, une marque se rend lisible — et permet à chacun de s'y reconnaître. Chacun, vraiment : y compris les utilisateurs qu'un design mal pensé exclut sans même s'en rendre compte.
12 colonnes, trois compositions
Au-dessus de 900 px, côte à côte. À 900 px et moins, chaque composition passe en une colonne, dans l'ordre de lecture : texte d'abord, puis visuel, actions ou contenu (comme ces exemples sur un écran étroit).
Les briques
Titre de section
Disponible pour stage · février à avril 2027
- Tadelakt poliFond principal
La chaux marocaine polie. Le fond de toute composition Dyly.
#F9F6EE - Bois de cèdre AtlasPilier structurel
L'Atlas au fond du bois. Texte, contours, structure.
#1A1208 - Cuir tanné safranAccent singulier
Tannerie Chouara, Fès. Uniquement sur un nom d'artisan.
#C8913A
Montrer plutôt qu'expliquer
Un dessin clair était compris ; un long texte, rarement.
En UXUne maquette doit se comprendre sans moi dans la pièce.
- Figma
- Design system
- WCAG 2.2
- Parcours utilisateur
- React · notions
Vendre l'artisanat marocain sans vendre l'exotisme.
« Un vrai projet, une vraie cliente, une vraie expérience pro ! »
- En une phrase (
.citation+.hl) : le besoin ou la tension de design, jamais la solution ni une promesse. Mots courants ; la phrase doit être expliquée par la page. - En bref (pause kraft) : Mon rôle (seule, en groupe, et ce que le brief couvrait ou non) · Ce que j'ai fait · Ce que j'en retiens (une erreur assumée, avec le recul).
- Les choix qui comptent : 3, sur le fil numéroté ocre (
.fil) ; les visuels démonstratifs suivent (matières, palette, animations). - Résultat : ce qui est livré, et la mention d'honnêteté (fictif, proposition non retenue, projet de groupe). Aucun score qui varie d'un test à l'autre.
- Fiche technique (
.chips) : une ligne d'outils, pour les pros. - Une information n'est dite qu'une fois ; le jargon passe derrière le bénéfice (« Référencement… (Yoast) »).
15 ans dans le textile. Puis la lucidité de reconnaître qu'une autre voie était plus judicieuse.
Mes projets sont en ligne, mon CV tient sur une page.
On ne montre pas un score avant qu'il existe.
03La suiteOn en parle ?Travaux · CV · e-mail · LinkedIn
- 1 · NaviguerChanger de page principale. Ordinateur : toujours visible, capitales grises, actif souligné bleu (NN/g : jamais de menu caché sur ordinateur). Mobile : logo · bouton « Menu » écrit en toutes lettres, qui déplie un panneau non modal (pages ≥ 48 px, page actuelle marquée, « Mode sombre »). Échap ferme ; sans JS, la navigation reste visible. Version anglaise En préparation : un sélecteur « EN » s'ajoutera à côté du logo (pages sous
/en/). - 2 · RevenirRemonter d'un niveau. Un seul lien, à gauche : Tous les projets (case studies). Pas de fil d'Ariane : le site n'a que 2 niveaux. Entre projets voisins : « ← Précédent » à gauche, « Suivant → » à droite, le nom du projet en dessous (fin de chaque case study).
- 3 · AgirL'action voulue. Principal : le bouton dessiné, un seul par écran. Secondaire : « La suite », libellé + icône du geste dans un cercle.
- 4 · LireAller plus loin dans le contenu. Bleu souligné, la flèche mime le geste. Lien externe : ↗ + « (nouvel onglet) » annoncé, sur sa propre ligne sur mobile. Ouvrir un projet : le ticket (objet papier entier cliquable, flèche dans le cercle).
- 5 · OutilAgir sur la page (haut de page, thème, copier, agrandir). Libellé + icône dans le cercle, jamais souligné au repos. Haut de page en bas à droite, sur chaque page (parti pris du 28/09 : l'utilisateur l'a vu partout, il le cherche aussi sur la page courte ; la cohérence prime sur la règle « seulement au-delà de ~4 écrans »). Exception assumée : le thème sur ordinateur est une icône seule (lune / soleil), car « Mode sombre » écrit dans la navigation se lirait comme une 5e page ; nom accessible « Mode sombre » + état annoncé ; sur mobile, le libellé est visible dans le menu.
- 6 · S'informerLégal, coulisses. Discret : casse normale, petite taille, mais toujours bleu et souligné. Pied de page, à gauche.
Ce qui ne se négocie pas
Mouvement
- Chaque animation a un sens (la couture et le fil = le parcours ; le rouleau = l'information clé ; la déchirure = « entrer »). Aucune boucle imposée au repos.
- Une seule courbe, douce et sans rebond :
--ease·cubic-bezier(.22,1,.36,1), durée--dur(0,75 s). Le rebond et le balancement ont été essayés puis écartés : plus fatigants pour les yeux, moins inclusifs. - Le geste d'un objet est une flottaison unique : il monte de quelques pixels puis se repose, une fois (
--dur-float, 2,4 s). Jamais en boucle. - Ce qui s'ouvre se déplie (hauteur + fondu) ; le texte garde sa largeur et se dévoile au lieu de se recomposer.
- Deux fils, deux rôles. Fil du parcours (À propos, CV) : un point de départ ocre (le textile) et d'arrivée bleu (l'UX) ; il suit les objets pendant qu'ils bougent, il ne s'efface jamais pour se redessiner. Fil de présentoir (accueil, la vitrine) : il pend de la bande « Disponible » et s'arrête à l'œillet du carton. Chaque page a un rôle ; sa mise en scène suit ce rôle.
prefers-reduced-motionrespecté partout : l'état final s'affiche directement.- Le focus clavier est toujours visible : un seul contour partout, bleu, 2 px, angles droits ; l'écart s'élargit (6 px) autour des icônes rondes. Jamais
outline:nonesans remplaçant visible (05/10 : les vignettes de brandboard l'avaient perdu, corrigé). - Tout ce qui s'anime au survol s'anime aussi au clavier (
:focus-visible) et au toucher.
Liens et navigation
- Navigation « intelligente » : la barre est collante, se cache quand on descend (on lit) et revient dès qu'on remonte (on veut aller ailleurs). Elle revient aussi dès qu'un de ses liens reçoit le focus clavier, et
scroll-padding-topl'empêche de masquer l'élément focalisé ou une ancre (WCAG 2.2 · 2.4.11 Focus Not Obscured, niveau AA ; technique C43 · scroll-padding). - Le bleu = cliquable, et seulement lui. Tout lien texte est bleu et souligné : le bleu ne fait que 1,96:1 contre le texte, la couleur seule ne suffit pas (WCAG 1.4.1 · G183). Au survol / focus, le trait s'épaissit et la flèche avance dans le sens du geste. Les labels sont en ocre texte, jamais en bleu.
- Avancer à droite, revenir à gauche. Un lien « étape suivante » (→) s'aligne à droite, comme on tourne une page ; le retour (←) reste à gauche. Vaut aussi pour « Voir le projet » dans les cartes.
- Vrais liens et vrais boutons ; lien d'évitement « Aller au contenu » sur chaque page, visible au premier Tab, au-dessus de la barre collante (jusqu'au 05/10 il apparaissait dessous, donc invisible).
- Fenêtres (agrandir une image) : nommées par leur titre visible (
aria-labelledby), Échap ferme, le focus revient au bouton (05/10 : les 6 fenêtres n'avaient pas de nom). - Jamais de défilement horizontal :
overflow-x: clipsurhtmletbody(hiddenseul ne suffit pas sur Safari iOS ;hiddensurhtmlcasserait la barre collante). 05/10 : le rouleau de la bande « Disponible » dépassait de 18 px. - Le nom accessible d'un lien contient son texte visible (WCAG 2.5.3) : pas d'
aria-labelqui le remplace, un complément en.sr-onlysi besoin (logo : « AMANDINE·VDW, accueil »).
Lisibilité et preuves
- Les nombres en chiffres. « 5 projets », pas « cinq projets » : sur le web, l'œil qui balaie s'arrête sur les chiffres (Nielsen, NN/g). Seules les expressions restent en lettres (« repassé deux fois »).
- Texte courant en graisse 400, jamais en gris clair ; plancher de taille 12px (labels).
- Images. Chaque
<img>reçoit à la génération ses dimensions réelles (width/heightlus sur le fichier) ;height:autodans le CSS : la place est réservée, rien ne bouge au chargement (CLS), rien n'est déformé. - Ce qu'on affiche, on peut le prouver. Pas de score qui varie d'un test à l'autre (performance Lighthouse) ; pas de « conforme WCAG » sans audit (05/10 : axe-core 0 violation, ce n'est pas un audit complet) ; une couleur de marque exemptée dans le logo (WCAG 1.4.3) reçoit une variante texte contrastée pour tout ce qui doit être lu.
- On teste là où ça casse (05/10) : plusieurs largeurs de téléphone (320 à 430 px), Firefox, zoom 200 %, mode sombre forcé, et les états ouverts (menu, fenêtres, accordéons) au clavier avec axe-core. Lighthouse ne voit que la page fermée : un 100 n'a pas vu les trois oublis du 05/10.
Une seule voix, partout
Le système couvre toute la communication : le CV, le favicon, les titres. Une nouvelle règle se vérifie aussi là.
- Titres. Site et CV : « Webdesigner UI/UX en formation », sous-titre « Design & intégration web » (site aligné sur le CV le 30/09). Diplôme, partout où il est cité : « BES Webdesigner UI/UX » (intitulé officiel, IFOSUP Wavre).
- CV. Mêmes jetons et même ADN que le site : le fil sous l'en-tête (pointillé ocre, points aux bouts), la bande de peinture pour la disponibilité, la carte Formation en étiquette kraft (surpiqûre, œillet), les icônes du geste, les compétences en tags ocre, les 5 réflexes du textile, un pied de page en une ligne fine. Deux versions seulement (05/10) : graphique (site, LinkedIn, e-mails ; copiée pour chaque candidature) et ATS (portails en ligne : Arial, une colonne). PDF balisé (lisible par un lecteur d'écran, langue « fr »). Le nom en en-tête, sans fil (03/10 : sur un document de lecture, un trait sous le nom se lirait comme un soulignement). La photo (la même que le site et LinkedIn) en polaroïd attaché par un trombone qui mord le bord haut de la page : le CV est une pièce de dossier, comme les candidatures papier d'avant. Polaroïd légèrement incliné (−2,5°), au premier plan, posé sur le fil : il peut recouvrir le point de départ (03/10) ; même vide de part et d'autre de la signature (photo ↔ nom = nom ↔ trait vertical, ≈ 3 mm), une note manuscrite en serif italique dans la marge du bas ; relief par des ombres nettes (sans flou ni dégradé, qui s'impriment mal) ; trombone métallique (reflet + ombre), sur le fond, jamais sur le visage ; hors du flux pour garder 1 page. Le polaroïd reste écarté du site : autre support. Règle : l'objet suit le support : vitrine (site) = présentoir ; dossier (CV) = trombone. 1 page, vérifiée sur le PDF rendu (les dégradés CSS sont proscrits : ils s'impriment mal).

- Logo. Le mot-symbole AMANDINE · VDW (Inter 900 / 300 / 300 italique) ne change pas ; il est l'arrivée du parcours : un fil (point + trait) le précède. Gris au repos, ocre et plus gras au survol (ou au toucher), comme le point du milieu. Deux dispositions pour deux contextes réels : en ligne quand le menu est visible (ordinateur) ; empilée, le fil sous le nom, quand le menu est replié derrière « Menu » (mobile) et sur l'image d'aperçu. Règle (03/10) : le fil accompagne le logo seulement quand le logo est cliquable (en-tête) ou dans une image (aperçu de partage) ; jamais sous un nom qui n'est pas un lien (pied de page, CV) : sur le web, un trait sous un texte se lit comme un soulignement, donc comme un lien. Le fil est caché aux lecteurs d'écran (nom lu : « AMANDINE · VDW, accueil »). Pas de version compacte : aucun usage réel.AMANDINE·VDWAMANDINE·VDW
- Aperçu de partage (Open Graph). La carte qui s'affiche quand le lien est partagé (LinkedIn, e-mail, messageries). Chaque page porte titre, description, adresse, auteur et image (repris de la page, rien de réécrit ; adresse de base à un seul endroit,
SITE_URL). Image :images/og/og-default.jpg, 2400 × 1260 (rendue en 2×, nette sur les écrans haute définition), 174 Ko, textes agrandis le 03/10 pour rester lisibles dans la carte LinkedIn ; adresse versionnée (?v=+ date) : LinkedIn garde l'image en cache selon son adresse, changer la date à chaque nouvelle image, codée (og-template.html+build_og.py) : signature empilée, titre du CV, bande « Disponible », photo en tirage (un visage se reconnaît en miniature). Rien d'autre : ni adresse, ni QR code, ni liste de compétences. Après chaque mise en ligne : vérifier avec le LinkedIn Post Inspector (nouvel onglet).
- Crédit des images (03/10) : une ligne discrète sous les visuels concernés, « Images générées par IA. » (ou « Illustrations… »), rien de plus : ni nom d'outil, ni méthode. Une personne réelle est nommée (« Portrait fourni par… »). Le détail regroupé vit dans les mentions légales.
- Récit. Le passé textile est un atout, pas le sujet : « 15 ans » au plus une fois par page (accueil : la pause « Parcours » ; À propos : le chapeau). Ailleurs, l'action (« faire passer une idée du dessin à l'usine ») ou les dates (2008 – 2023) suffisent.
- Loader d'image = le logo. Dans une fenêtre, tant que l'image n'est pas arrivée, le fil se trace du point jusqu'au nom, en boucle : le logo raconte son concept (le parcours arrive au nom). Disposition en ligne validée, fil ocre, apparition après 0,25 s (rien si l'image est en cache), immobile si mouvement réduit, annoncé « Chargement de l'image » aux lecteurs d'écran. Pas de loader de page : le site s'affiche sans attente.
- Favicon. Le « A » d'AMANDINE + le point ocre du fil, dessiné en tracé, clair et sombre. Les autres formats en sont générés, jamais redessinés (
build_icons.py) :favicon.ico(16/32/48), icône 180 (Apple), 192 et 512 +site.webmanifest(écran d'accueil d'un téléphone) ; couleur de la barre du navigateur mobile = fond de page, clair et sombre. - Pied de page signé (30/09) : deux zones, deux fonctions ; une seule ligne à partir de 1200 px (03/10 : sans le fil, la signature est assez courte), deux lignes en dessous. Ligne 1, à gauche : qui — la signature (le nom seul, 18 px, sans fil depuis le 03/10 : un trait sous un nom non cliquable se lisait comme un lien) puis « © 2026 · tagline » en serif italique, aligné sur le nom. Ligne 2, à droite : où aller — « Mentions légales », « Design system », puis, après un plus grand écart, « Haut de page » (même rôle d'outil, familles différentes). Entre les deux lignes, un seul petit pas : discret mais lisible. La signature n'est pas un lien : elle ne réagit pas (pas d'ocre, rien ne bouge, curseur normal). Mobile : signature, puis « © 2026 · tagline » sur une ligne (le « · » disparaît sous 360 px pour que ça tienne), puis les liens et « Haut de page ». Le nom n'est plus répété dans le © ; pour les lecteurs d'écran, la signature se lit « Amandine Van de Winckel ».

- Page 404 (01/10) : « Oups, le fil est rompu. ». Le « 4◯4 » (la pelote de fils or et marine remplace le zéro) est tenu dans un cadre pointillé (
--midà 60 %, 1,5 px), la ligne de coupe d'un patron, qui ne touche jamais les chiffres. Sur son bord haut, l'étiquette « Erreur » : grasse, 18-22 px, couleur du texte, parce que c'est l'information principale (sur téléphone, le 404 arrive avant le texte : sans ce mot, seuls les initiés comprennent) ; « 404 » n'y est pas répété, il est juste dessous, mais les lecteurs d'écran entendent « Erreur 404 » (complément en.sr-only, les chiffres dessinés leur sont masqués). Ordinateur : cadre à gauche, centré en hauteur sur le bloc « Page introuvable » → boutons ; l'espace libre est voulu : c'est le terrain du fil que le visiteur trace avec sa souris (ocre, s'efface en 0,6 s ; souris seulement, rien en mouvement réduit). En colonne : cadre de la même largeur que le bloc texte et aligné sur lui, puis 64 px (--stack-xl) jusqu'au texte, comme entre le texte et les boutons. Deux sorties seulement : « Reprendre le fil » (accueil) et « Voir mes travaux ». Écartés : la constellation (trop de bruit), le cercle pointillé (trop clair, coupait les chiffres), un champ de recherche, une liste de liens.
- Mentions légales. Aucun cookie, mesure d'audience anonyme, polices hébergées sur le site ; sources vérifiées.
- LinkedIn. Mêmes noms de projets que le site ; « projet fictif », « proposition » ou « projet de groupe » dans le titre des médias (LinkedIn coupe les descriptions) ; aucun chiffre ni label de conformité qu'on ne puisse défendre.