Le libellé est en encre #05070a sur #25d366. « Me contacter » dans la barre reste blanc. Le survol éclaircit le vert, sans nouveau token.
YNÀ éviter
Deux verts dans la même vue
Écrire sur WhatsAppMe contacter
Deux boutons verts pour écrire. Le second doit être un contour ou un lien. Le vert ne sert à rien d'autre : pas un succès, pas un tag, pas une catégorie.
<a class="yc-btn yc-btn--wa" href="https://wa.me/">
<!-- SANITY: siteSettings.whatsappUrl -->
Écrire sur WhatsApp
</a>
<a class="yc-btn yc-btn--outline" href="/projets">Voir mes projets</a>
Catégories neutres
YNÀ faire
Même filet pour chaque carte
n8nDockerSupabaseEn veille
Doc4Shop
Catalogue en ligne, commande par WhatsApp.
YNÀ éviter
Teinte par projet ou par outil
violetambrevertbleu
Filet d'accent par carte
Interdit. L'accent n'est pas une couleur de catégorie.
Bento cartes monochromes, pas de couleur par case
YNÀ faire
Même surface, même filet
Doc4GeeksGrande carte
Doc4ShopCarte moyenne
Campus Cloud
Assistant IA
La grille change de taille, pas de teinte. Filet --yc-line, fond surface 1, sur les quatre cases.
YNÀ éviter
Une couleur par case
cyan
bleu
vert
violet
Pas de filet cyan, vert, bleu ou violet pour distinguer Doc4Geeks, Doc4Shop ou un type de système. L'accent n'est pas une légende de grille.
Verre deux endroits
YNÀ faire
Header, et cartes flottantes
Yoane Ngassam
Le header sticky et les panneaux du hero cinéma. Partout ailleurs, surface 1 opaque.
Doc4Geeks héberge les projets étudiants. La carte de section ne floute pas l'arrière-plan.
YNÀ éviter
Verre sur une section
Cette section ne doit pas être en verre. Le flou est réservé au header et aux cartes UI du hero.
Halo sur une carte
Le glow cyan ne va que sur le survol du CTA principal et sur l'anneau de focus.
Visage sans texte dessus
YNÀ faire
Légende sous la photo
Le texte reste sous le cadre. Le scrim assombrit le bas de la photo, il ne porte pas une phrase.
Ratios de la palette à douze couleurs. Seuils WCAG inclusifs : 4.5:1 pour le corps, 3:1 pour le grand texte.
Contraste paires réelles
Aperçu
Paire
Ratio
Corps
Titre
Texte 1 #fafafa sur toile #05070a
19.32
AA et AAA
Corps
Texte 2 #a1a1aa sur toile
7.87
AA et AAA
Corps
Texte 2 sur surface 1 #0f1114
7.38
AA et AAA
Méta
Ancien texte 3 #71717a sur toile (remplacé par #8a8a93)
4.17
Échoue en corps
Méta
Texte 3 sur surface 1
3.91
Échoue en corps
Lien
Accent #22d3ee sur toile
11.16
AA et AAA
WA
Toile #05070a sur #25d366
10.17
AA et AAA
Aa
Texte 1 sur WhatsApp, illisible
1.90
Échoue
Erreur
Danger #c27c7c sur surface 1
5.82
AA, pas AAA
Texte 3 reste la méta, 12px, jamais une phrase. Une phrase est en texte 2, au moins 14px. Doc4Geeks, accent #06b6d4 sur la toile : 8.31:1. Le bouton blanc du header porte l'encre #05070a.
États repos, survol, focus, actif
Le survol passe en surface 2 ou assombrit le fond. Le texte ne devient pas plus proche du fond.
Le focus est un anneau 2px cyan, décalé de 2px, avec un halo faible. La classe .is-focus force le même anneau sur la planche.
.yc-btn--sm, 36px, reste dans les outils denses. Les boutons de page font au moins 44px. Le CTA de page peut monter à 48px.
Mouvement prefers-reduced-motion
Le point « Ouvert aux échanges et aux interventions » ne pulse pas. Les fondus durent 150 à 240 ms. La parallaxe légère ne vit que sur le hero. Si le système demande moins de mouvement, translation, parallaxe et spinner s'arrêtent. Le contenu est visible sans JavaScript.
Alt contenu ou décor
YNÀ faire
Nom et lieu
alt="Yoane Ngassam en veste sombre, lumière basse, dans un intérieur peu éclairé."
YNÀ éviter
Alt vide sur un portrait
Un portrait de page a un alt. L'alt vide est réservé au décor et aux panneaux dont les chiffres sont déjà peints, comme ui-analytics.webp.
Titres un h1, sans saut
YNÀ faire
h1, puis h2, puis h3
h1 À propos
h2 Parcours
h3 Lead Technical Engineer
YNÀ éviter
h1 puis h3
h1 Blog
h3 sans h2 de section
Header et footer ne portent pas de h1. Ils sont identiques d'un template à l'autre.
Le hero cinéma ou le hero de page porte le seul h1.
Contenu
Première personne, vouvoiement, phrases concrètes. Les faits viennent du contenu autorisé.
Ton je, et vous
YNÀ faire
Phrase concrète
Je construis des logiciels, de l'automatisation et de l'IA qui tiennent en production, et j'accompagne les équipes jusqu'à ce qu'elles s'en servent vraiment.
YNÀ éviter
Slogan creux
Pas de formule du type « sans compromis » ou « zéro échec ». On nomme le système : CRM, n8n, Docker, Doc4Shop.
Ponctuation pas de tiret long
YNÀ faire
Deux-points, « à », point
Lead Technical Engineer, févr. 2026 à aujourd'hui, Yaoundé, hybride.
YNÀ éviter
Tiret long ou demi-cadratin
Ne pas couper une phrase avec un tiret long. Réécrire avec un point, une virgule ou deux-points. Les dates s'écrivent avec « à ».
Faits parcours, BTS, chiffres
YNÀ faire
Ligne de parcours seule
L'employeur actuel n'apparaît que dans la timeline, sans client, sans pourcentage, sans logo. La ligne Esmata dit « Major BTS 2025 ». Les seuls comptes repris de l'ancien portfolio sont « 10+ projets » et « 9 secteurs ».
YNÀ éviter
Client, note, vie privée
Pas de nom de client, pas de « Major national », pas de note, pas de phrase sur la famille ou le domicile. Yaoundé reste le cadre de travail. Pas de chiffre inventé.
Pas de texte entre crochets à compléter, pas de faux latin. L'exemple dans un champ dit « Votre nom », et le label reste au-dessus.
La pastille du hero dit « Ouvert aux échanges et aux interventions », pas « Disponible pour missions ».
Le CITS26 se raconte au passé. Aucune autre intervention n'est inventée.
Mapping Sanity
Chaque classe yc- pointe vers un document ou un objet. Le lien WhatsApp ne vit que dans siteSettings.whatsappUrl.
Composant schéma
Composant
Schéma
Champs
Bouton .yc-btn
objet yc.button
label, href, variant primary, wa, outline, ghost ou link, size sm, md ou lg
Badge .yc-badge
string status
open ou past. Libellé ouvert verrouillé. Rendu neutre ou accent, jamais coloré par type.
Tag .yc-tag
tags[]
string. Exemples : n8n, Supabase, Docker. Pas de teinte.