Logo
La flamme dégradée suivie de « Peps » en ink et « Goal » dans le dégradé. Toujours en texte vivant, jamais déformé.
Des panneaux translucides, une typo display ronde et grasse, et une couleur par format d’objectif. Voici les fondations, les règles et les composants qui donnent son visage à PepsGoal, sur le web comme sur mobile.
PepsGoal parle comme un ami qui t’encourage : direct, chaleureux, jamais moralisateur. Ces règles valent pour chaque libellé, chaque état vide et chaque notification.
Phrases courtes et actives : « Valide une action avant minuit pour prolonger ta série de 27 jours. »
Dans les listes, classements et commentaires ; jamais « Vous » ni son propre nom.
Un état vide est un constat positif suivi d’une piste. Une rechute est nommée sobrement, sans reproche.
flamme, série, gel, Encourager, Progrès, Paliers, Duel.
Majuscule en début de libellé seulement. Chiffres avec espace fine (1 284), unités courtes : « 8/12 livres », « encore 9 h ».
« Message chiffré : sa clé n’est pas sur cet appareil. » Expliquer sans alarmer.
« Rien de prévu aujourd’hui — Profite de ta journée, ou ajoute une routine. »
« Encourager »
« Vous n’avez rien fait aujourd’hui. »
« J’aime », « Liker »
Un emoji n’apparaît que comme icône d’objectif ou de groupe choisie par l’utilisateur, avatar, ou dans ce que les gens écrivent ; jamais en décoration d’interface ou de titre. À l’affichage, chaque emoji est remplacé par son image Fluent (Microsoft, licence MIT) pour un rendu identique sur iOS, Android et le web.








Un fond pâle (ou nuit) sous quatre halos flous, des surfaces de verre, une encre à trois niveaux et le dégradé de marque. Chaque nuance existe en clair et en sombre : clique sur une pastille pour copier son nom.
120° sur les boutons, 100° sur le logotype. Il porte le bouton principal, le FAB, mes bulles de message, les jalons et la flamme. Une seule action en dégradé par écran. L’utilisateur peut le remplacer par l’une des 12 couleurs d’accent : les composants lisent toujours ces trois variables, jamais des valeurs en dur.
| Paire | Clair | Sombre | Usage |
|---|---|---|---|
| ink sur bg | 16,4:1 AA | 18,3:1 AA | Texte principal |
| ink-2 sur bg | 9,8:1 AA | 12,7:1 AA | Texte secondaire, labels |
| ink-3 sur bg | 5,7:1 AA | 7,8:1 AA | Méta, placeholders |
| focus sur bg | 5,4:1 AA | 13,3:1 AA | Anneau de focus |
| ok sur bg | 3,7:1 ≥19px gras | 12,1:1 AA | Succès, avec icône |
| danger sur bg | 5,1:1 AA | 7,2:1 AA | Erreur, avec mot ou icône |
Paires connues sous 4,5:1, conservées telles que dans l’app : ok en clair ; elles sont réservées au texte gras de 19 px et plus, aux icônes et aux bordures, et toujours doublées d’un mot ou d’une icône.
Chaque type a un aplat t-<type> (bordure gauche de ligne, filet haut de carte, coche, barre, cellule de calendrier) et une encre t-<type>-ink (gros chiffre, puce, icône). Un composant typé reçoit la classe t-routine… qui définit --c et --c-ink ; il ne lit jamais t-* directement.
| Format | Classe | Aplat | Encre clair · sombre | Aperçu |
|---|---|---|---|---|
| Objectif | t-objective | #22D3FF | #00627E · #5FE0FF | Objectif |
| Deadline | t-deadline | #FF4FA3 | #B0005A · #FF7DBB | Deadline |
| Routine | t-routine | #B6FF2E | #3A7300 · #C6FF5C | Routine |
| Abstinence | t-abstinence | #A98BFF | #5530CF · #BFA8FF | Abstinence |
| Mensuel | t-monthly | #FFD23F | #7A4E00 · #FFE07A | Mensuel |
| Limite | t-limit | #FF8A3D | #A33D00 · #FFB07A | Limite |
| Durée | t-duration | #2EF2B0 | #00704F · #5FF5C4 | Durée |
| Mesure | t-measure | #FF7AD9 | #A3007A · #FF9FE4 | Mesure |
| Horaire | t-timed | #E3B98A | #7A4B12 · #F0CFA6 | Horaire |
| Projet | t-project | #4D9BFF | #0B4FC2 · #8CBDFF | Projet |
| Challenge | t-challenge | #FFB000 | #8A5300 · #FFC94D | Challenge |
| Paliers | t-program | #7C8CFF | #2F3FBF · #A9B3FF | Paliers |
| Défi de groupe | t-group | #7CFF6B | #1F7A10 · #9DFF90 | Défi de groupe |
| Duel | t-duel | #FF5A5A | #B3121F · #FF8A8A | Duel |
Clair et Sombre suivent le système par défaut, puis trois réglages d’accessibilité déclinés en clair et sombre : Contraste élevé (noir et blanc purs, ombres et halos éteints, bordures de 2px), Daltonien (palette Okabe-Ito, succès en bleu, alerte en vermillon) et Opaque (transparence désactivée). Essaie-les en direct.
Courir 30 minRoutinelun, mer, ven
Lire 12 livresObjectif8/12
ImpôtsDeadlineencore 9 hAperçu
Enregistré
Limite dépassée
Le thème par défaut : verre translucide sur halos.
Unbounded pour tout ce qui se lit comme un chiffre ou un titre ; Manrope pour le reste. Les titres sont serrés (−0,01 à −0,04 em) et équilibrés ; tous les chiffres qui bougent sont tabulaires. La marque parle fort : libellés, boutons, puces et noms sont en 800.
Logotype, salutation, compteurs, titres de carte, de page et de fenêtre.
Texte courant, libellés, boutons, méta. Licence SIL Open Font, polices intégrées.
Des pas fins de 4 à 24 px, des rayons généreux et une seule ombre sous le verre, plus deux lueurs de marque.
space-44pxÉcart entre points de progression, pastilles serrées.space-66pxÉcart icône ↔ texte dans une puce, gap de jours de semaine.space-88pxÉcart entre boutons d'action, entre filtres.space-1010pxGap des listes d'objectifs, entre tuiles de type.space-1212pxGap interne d'une carte objectif, d'une publication, d'une ligne.space-1414pxGap des grilles de cartes, marge sous un en-tête de carte.space-1616pxGap des formulaires, gouttière mobile.space-1818pxGap de la colonne principale ; padding des cartes objectif et publications.space-2020pxPadding des cartes standard, gouttière desktop.space-2424pxGap entre barre latérale et contenu.sous le verre et les fenêtres0 8px 24px -10px flame0 12px 30px -8px flame| Token | Valeur | Usage |
|---|---|---|
| sidebar-w | 248px | Largeur de la barre latérale desktop. |
| content-max | 1180px | Largeur maximale de l’application (et de ce site). |
| sheet-w | 580px | Largeur maximale d’une fenêtre modale. |
| bp-mobile | 860px | En dessous : barre latérale masquée, barre d’onglets flottante et FAB. |
Les interactions durent 150 ms. Les célébrations sont généreuses. Et tout mouvement se coupe avec prefers-reduced-motion ou le réglage « Animations désactivées ». Clique sur les démonstrations.
Translation de −1px sur les boutons, échelle .98 à l’appui.
150 ms · easeÉchelle 1.06 au survol, gerbe d’étincelles et « +N » à la validation.
coche · étincellesElles montent de 24px avec un léger rebond.
Elle oscille doucement autour de sa base.
2,4 s · ease-in-out · infiniLe point d’enregistrement pulse chaque seconde.
1 s · infiniLes barres et anneaux se remplissent à l’apparition (ajout de ce site).
1,4 s · ease-outJeu d’icônes maison au trait : grille 24px, trait 2px, bouts et jonctions arrondis, sans remplissage, en currentColor. La flamme est la seule icône pleine et dégradée : logo, série, encouragements, badges, classement. Elle n’est jamais recolorée à la main.
Du HTML et du CSS, sans framework : chaque composant lit les tokens et reçoit, pour les formats, une classe t-<type>. Ils sont tous vivants ci-dessous.
La flamme dégradée suivie de « Peps » en ink et « Goal » dans le dégradé. Toujours en texte vivant, jamais déformé.
btn · btn-primary · btn-ghost · btn-dangerPilule. Un seul btn-primary par écran ; btn-danger toujours derrière une confirmation.
Bouton rond de 42px sur glass-strong, pastille pink pour les compteurs. Le FAB mobile porte le dégradé et la lueur shadow-fab.
chip t-<type>Puce 12px/800 : fond --c à 22 %, texte --c-ink, icône 13px.
Courir 30 minRoutinelun, mer, ven
Écrans : 2 h maxLimite1 h 20 aujourd’hui
Lire 12 livresObjectif8/12item t-<type> · checkLigne d’objectif sur glass-strong, bordure gauche de 5px en aplat. La coche de 50px se remplit à la validation et barre le nom ; les objectifs chiffrés ont un bouton « + Progrès ». Essaie de valider.
Lire 12 livres
Courir 30 min
Sans cigarettegcard t-<type>Carte de la grille Objectifs (250px en auto-fill) : filet haut de 5px, gros chiffre metric en encre du type, barre ou points de progression.
Lundi 12 octobre
Valide une action avant minuit pour prolonger ta série de 27 jours.
Le haut de l’écran Aujourd’hui : salutation hello, semaine en flammes (gel en t-goal-ink), grande flamme animée et compteur streak.
Anneau de 108px pour la journée, barres de 10px en pilule : dégradé de marque par défaut, aplat du type sinon.
Choix exclusifs en pilule, filtres pressés en ink plein, interrupteur flame qui rebondit.
Champ sur glass-strong, anneau focus à l’activation. Les tuiles de type prennent la couleur du format une fois choisies.
Chiffre stat en Unbounded tabulaire ; badges obtenus bordés de flame, les autres grisés.
Un mois sans sauter une séance !
Publication du feed avec jalon en dégradé et bouton Encourager. Avatars en dégradé d’accent à 135°, ronds pour une personne, carrés pour un groupe.
Chiffrée de bout en bout
Les miennes à droite dans le dégradé, celles des autres sur ink à 8 %. Rayon 18px, coin côté auteur à 5px.
Inès t’a encouragé pour « Courir 30 min ».
il y a 5 minNon lue sur flame à 10 %. Un état vide est un constat positif suivi d’une piste.
Choisis ce que tu veux suivre.
CréerFenêtre de 580px max, rayon r-xl, voile scrim flouté ; sur mobile, elle monte du bas.
Sous 860px, une barre d’onglets flottante en bas ; au-dessus, une barre latérale vitrée de 248px. L’onglet actif passe en ink plein.
Tous ces composants vivent dans l’application, en clair, en sombre et dans les trois modes d’accessibilité.