Aller au contenu

La charte OWAN,
relevée sur son funnel

Relevée le 26 septembre 2026 sur onboarding.owan.fr : les six étapes de l'inscription, la page annexe /paiements, la feuille de style owan.css, le logo et les images. Chaque valeur de cette page vient du funnel, avec sa source.

Ce que le funnel ne montre pas est marqué à définir. Rien n'a été inventé pour combler les trous.

  1. 1IdentitéNom, promesse et positionnement, tirés des textes.
  2. 2LogoLe seul fichier trouvé, son usage, ce qui manque.
  3. 3Palette72 valeurs de couleur, leurs rôles et leurs contrastes.
  4. 4TypographieRethink Sans : graisses, tailles, interlignages, titres.
  5. 5ComposantsBoutons, champs, cartes, étapes et messages, avec leurs états.
  6. 6EspacementsEspaces, rayons, ombres et grille.
  7. 7Ton de voixDix règles tirées des textes, et les 14 messages types.
  8. 8Iconographie et imagerieIcônes, emojis, halo et logos partenaires.
  9. 9Design tokens149 variables CSS et JSON à télécharger.
Chapitre1/ 9

Identité

Le funnel ne contient ni manifeste ni signature. L'identité se lit dans ses textes : ce qu'OWAN promet, ce qu'il fait, et à qui il parle.

Le nom

Trois graphies cohabitent dans le funnel, et aucune règle n'est écrite. Cette page emploie OWAN, la forme la plus fréquente.

Règle d'écriture du nom : à définir

OWAN, 11 fois
Les 7 titres d'onglet (« OWAN — Inscription au service »…) et 4 phrases : « Voici tous les messages qu'OWAN enverra à vos clients », « OWAN vous prévient sur Telegram », « l'équipe OWAN », « votre assistant OWAN ».
Owan, 9 fois
Le titre de l'étape 1, « 6 étapes pour implémenter Owan dans votre activité », la phrase « Owan créera automatiquement vos cartes leads… » (étape 2) et le texte alternatif du logo sur les 7 pages.
owan
Le mot du logo, en minuscules.

La promesse

Le funnel promet une mise en place courte et guidée, puis des outils prêts à servir. En reliant ses phrases : OWAN s'installe en six étapes, puis travaille avec les outils que l'entreprise a déjà, Trello, sa boîte mail, ses réseaux et Telegram.

Signature ou phrase de marque : à définir. Aucune phrase n'accompagne le logo.

6 étapes pour implémenter Owan dans votre activitéTitre de l'étape 1, /form
Personnalisez-les comme vous voulez — ils sont déjà prêts à l'emploi.Intro de l'étape 5, /template
Tout est prêt — Samy vous recontacte très vite pour activer votre assistant OWAN.Fin de l'étape 6, /telegram

Le positionnement, tel qu'il ressort des textes

Pour qui
Une entreprise (premier champ : « Nom de l'entreprise ») qui fait des devis, suit des chantiers et relance ses clients. Les messages types parlent d'« entretien de votre jardin », de « crédit d'impôt services à la personne » et d'« Avance Immédiate URSSAF ».
Partenaire
L'étape 1 demande l'accès Unipro. Le logo Unipros porte la mention « Cooperative SAP », et la page /paiements parle de « Coopérative » et de « Crédit d'impôt avec avance immédiate ».
Présentation
Un assistant, avec une personne derrière : « Samy vous recontacte très vite pour activer votre assistant OWAN. »

Ce qu'OWAN fait, selon le funnel

Étape 2
« Owan créera automatiquement vos cartes leads et suivra vos chantiers dans votre tableau Trello. »
Étape 5
11 emails et SMS aux clients : bienvenue, devis, date d'intervention, signature, paiement URSSAF, relances à J+7 et J+11. Et 3 posts (Facebook, Instagram, fiche Google), dont le modèle est « généré à partir de vos 2 photos avant/après ».
Étape 6
« OWAN vous prévient sur Telegram à chaque nouveau lead, devis ou relance. »

Énoncé de positionnement officiel : à définir. Le funnel ne nomme ni concurrent ni différence revendiquée.

Chapitre3/ 9

Palette

La feuille de style déclare cinq couleurs de base et huit dérivés. Le reste est écrit en dur dans les règles : 72 valeurs distinctes au total, dégradés compris. Le vert et l'ambre ne sont jamais utilisés pleins, seulement en teintes.

Les cinq couleurs de base

Déclarées sous le commentaire « palette projet » de owan.css. Cliquez une valeur pour la copier.

  • --darkEncre : tous les textes, le trait d'étape actif, le mot du logo. Déclarée deux fois, --dark et --ink.
  • --accentPrimaire : bouton principal, focus, bouton secondaire, badge Email, variables.
  • --successRéussite, en teintes seulement : badge sécurité, tuile d'icône, case verte.
  • --warningAttention, en teintes seulement : badge SMS, case et pastilles ambre.
  • --dangerErreur : bordure et halo des champs, fond et bord du message d'erreur.

Les dérivés déclarés

Les huit autres variables de :root. Les gris sont l'encre rendue transparente : leur rendu dépend du fond.

  • --owan-inkRGB 14 19 34Texte principal. :root --ink
  • --owan-mutedrendu #787B83 sur blancTexte secondaire : libellés, sous-titres. :root --muted
  • --owan-muted-2rendu #9A9CA2 sur blancTexte tertiaire : notes, icônes, libellé flottant. :root --muted-2
  • --owan-linerendu #F1F1F2 sur blancBordure des champs au repos. :root --line
  • --owan-focusrendu #CCC0FB sur blancBordure au focus (recherche pays). :root --focus
  • --owan-focus-ringrendu #EAE6FE sur blancAnneau de focus des champs. :root --focus-ring
  • --owan-cardRGB 255 255 255Fond des cartes. :root --card
  • --owan-uniproRGB 245 247 251Fond de l'encart Unipro. :root --unipro

Les couleurs écrites en dur

Présentes dans les règles de owan.css et des pages, sans variable. Fonds, dégradé du bouton, textes et icônes d'état, et une couleur tierce.

  • --owan-bg-topRGB 239 242 248Haut du fond de page (dégradé vers blanc). body
  • --owan-whiteRGB 255 255 255Blanc : bas du fond, champs, puces, listes. body.field input.puce
  • --owan-ghost-hoverRGB 250 249 255Fond du bouton secondaire au survol. .cta-ghost:hover
  • --owan-cta-topRGB 107 71 247Haut du dégradé du bouton principal. .cta
  • --owan-cta-bottomRGB 74 39 220Bas du dégradé du bouton principal. .cta
  • --owan-success-inkRGB 77 122 39Texte vert : badge sécurité, badge par défaut, case verte. .secure.tpl-badge.t-vert
  • --owan-success-iconRGB 106 171 54Icône verte : bouclier, cercle de validation. .secure svg.check-ring circle.t-vert
  • --owan-success-strongRGB 93 154 50Coche de validation, bouton « ✓ Enregistré ». .check-trait.tpl-save.saved
  • --owan-danger-inkRGB 194 59 45Texte des messages d'erreur. .erreur-box
  • --owan-warning-inkRGB 138 98 18Texte ambre : badge SMS, pastille ambre. .tpl-badge.sms.t-ambre
  • --owan-warning-iconRGB 200 137 26Icône ambre (page /paiements). .t-ambre --teinte
  • --owan-social-inkRGB 190 24 93Texte du badge « Réseaux ». .tpl-badge.social
  • --owan-telegramRGB 34 158 217Avion Telegram de l'étape 6 (couleur de Telegram, pas d'OWAN).

Les teintes

Une couleur de base avec de la transparence, toujours posée sur blanc dans le funnel. C'est ainsi que vivent le vert, l'ambre et le rose.

  • --owan-success-tile-fromrendu #E3F3D4 sur blancTuile d'icône, début du dégradé. .icone
  • --owan-success-tile-torendu #F3FAED sur blancTuile d'icône, fin du dégradé. .icone
  • --owan-success-tintrendu #EFF8E7 sur blancFond du badge sécurité et de la case verte. .secure.t-vert --fond
  • --owan-success-badgerendu #EDF7E4 sur blancFond du badge de catégorie par défaut. .tpl-badge
  • --owan-success-tile-borderrendu #DAEFC7 sur blancBordure de la tuile d'icône. .icone
  • --owan-success-linerendu #D2ECBB sur blancBordure de la case verte. .t-vert --trait
  • --owan-danger-tintrendu #FEEFEE sur blancFond d'erreur et halo du champ en erreur. .erreur-box.field input.err
  • --owan-danger-linerendu #FDD0CB sur blancBordure du message d'erreur. .erreur-box
  • --owan-warning-tintrendu #FFF4E2 sur blancFond du badge SMS et de la pastille ambre. .tpl-badge.sms.t-ambre --fond
  • --owan-warning-linerendu #FFDCA7 sur blancBordure ambre. .t-ambre --trait
  • --owan-accent-07rendu #F3F0FE sur blancFond de la case bleue et de la pastille cochée. .t-bleu --fond.puce.on
  • --owan-accent-08rendu #F1EEFE sur blancSurlignage de liste, fond des variables. .iti__highlight.banque-liste li:hover.tpl-vars code
  • --owan-accent-10rendu #EEEAFE sur blancFond du badge « Email ». .tpl-badge.email
  • --owan-accent-22rendu #D9D1FC sur blancBordure du bouton secondaire. .cta-ghost
  • --owan-accent-24rendu #D6CDFC sur blancBordure de pastille au survol. .puce:hover
  • --owan-accent-28rendu #CFC4FC sur blancBordure de la case bleue. .t-bleu --trait
  • --owan-social-tintrendu #FBE5EF sur blancFond du badge « Réseaux ». .tpl-badge.social
  • --owan-ink-035rendu #F7F7F7 sur blancFond d'une case verrouillée sans teinte. .verrou
  • --owan-ink-045rendu #F4F4F5 sur blancFond de la pastille « Étape 1 / 6 ». .step-pill
  • --owan-ink-05rendu #F3F3F4 sur blancFond du bouton œil au survol. .eye:hover
  • --owan-ink-18rendu #D4D5D7 sur blancTrait de progression inactif. .bar
  • --owan-white-90rendu #FFFFFF sur blancReflet : liseré haut de carte, éclat du trait courant. .card.bar.current::after

D'autres transparences servent seulement dans les ombres (encre 5 à 25 %, accent 40 à 62 %, noir 18 et 22 %, blanc 25 à 70 %). Elles sont listées au chapitre 6.

Les dégradés

Le mot en dégradé

owan

13 couleurs à 45°, « répliqué depuis Gradient-square.webp, sans grain ». L'angle tourne de 360° en 18 secondes, en boucle. Il colore un ou deux mots de chaque grand titre.

  • #8978F9RGB 137 120 249
    à 0 %
  • #8282FCRGB 130 130 252
    à 8 %
  • #838AF9RGB 131 138 249
    à 16 %
  • #8B93FARGB 139 147 250
    à 25 %
  • #AE7EF9RGB 174 126 249
    à 33 %
  • #CD69F5RGB 205 105 245
    à 42 %
  • #D264F6RGB 210 100 246
    à 50 %
  • #F87C42RGB 248 124 66
    à 58 %
  • #F88B45RGB 248 139 69
    à 66 %
  • #F99C4ERGB 249 156 78
    à 75 %
  • #FBB05CRGB 251 176 92
    à 83 %
  • #FCC16CRGB 252 193 108
    à 92 %
  • #FFDDA4RGB 255 221 164
    à 100 %

Bouton principal

180° : #6B47F7 à 0 %, #542DF3 à 52 %, #4A27DC à 100 %.

Fond de page

180° : #EFF2F8 à 0 %, blanc à 58 %. Attaché à la fenêtre : il ne défile pas.

Tuile d'icône

160° : vert #9AD567 à 28 % puis à 12 %.

Contrastes WCAG

Paires réellement rendues dans le funnel, transparences composées sur leur vrai fond. Le verdict tient compte de la taille réelle : sous 24 px, il faut 4,5:1 pour le niveau AA ; à partir de 24 px, 3:1 suffit. 14 paires sur 20 passent le niveau AA à leur taille réelle. Les 6 échecs : les gris --muted et --muted-2 aux tailles où ils servent, et le texte blanc du bouton « ✓ Enregistré ».

RenduTexteFondRatioTaille réelleVerdictOù
Aa#0E1322 --ink#FFFFFF18,5:115 pxAAATitres, saisie, texte courant sur carte
Aa#0E1322 --ink#EFF2F8 fond haut16,5:124 pxAAATitre d'accueil sur le haut du fond
Aa--muted (encre 56 %)#FFFFFF4,23:115 pxÉchecLibellés, sous-titres (.sous), descriptions
Aa--muted (encre 56 %)#EFF2F8 fond haut4,11:114,5 pxÉchecIntro de l'étape 5 posée sur le fond
Aa--muted-2 (encre 42 %)#FFFFFF2,74:112,5 pxÉchecNotes, libellé flottant, titres de section, variables
Aa--muted-2 (encre 42 %)encre 4,5 % sur blanc2,7:113 pxÉchecPastille « Étape 1 / 6 »
Aa--muted-2 (encre 42 %)#F5F7FB --unipro2,72:112,9 pxÉchecLibellé flottant dans l'encart Unipro
Aa#542DF3 --accent#FFFFFF6,89:115 pxAABouton secondaire, libellé au focus
Aa#FFFFFF#6B47F75,43:115 pxAATexte blanc du bouton principal (haut du bouton)
Aa#FFFFFF#542DF36,89:115 pxAATexte blanc du bouton principal (milieu du bouton, derrière le texte)
Aa#FFFFFF#4A27DC8,03:115 pxAAATexte blanc du bouton principal (bas du bouton)
Aa#FFFFFF#5D9A323,42:113,5 pxÉchecBouton « ✓ Enregistré »
Aa#4D7A27succès 16 % sur blanc4,66:113 pxAABadge « 100% sécurisées », case verrouillée verte
Aa#4D7A27succès 18 % sur blanc4,61:110 pxAABadge de catégorie par défaut (10 px)
Aa#C23B2Ddanger 10 % sur blanc4,75:113,5 pxAAMessage d'erreur
Aa#542DF3 --accentaccent 10 % sur blanc5,85:110 pxAABadge « Email » (10 px)
Aa#542DF3 --accentaccent 8 % sur blanc6,04:111 pxAAVariables [entreprise], survol de liste
Aa#542DF3 --accentaccent 7 % sur blanc6,14:114 pxAACase verrouillée bleue, pastille cochée
Aa#8A6212alerte 18 % sur blanc5,03:110 pxAABadge « SMS », pastille cochée ambre
Aa#BE185Drose 12 % sur blanc5,05:110 pxAABadge « Réseaux » (10 px)

Le mot en dégradé sur blanc

Titres de 24 à 30 px, donc seuil de 3:1. 8 des 13 couleurs restent sous 3:1, dont toute la partie orange et crème : selon l'angle du moment, une partie du mot est peu lisible.

  • 3,43:1AA
  • 3,21:1AA
  • 3,01:1AA
  • 2,74:1Échec
  • 2,94:1Échec
  • 3,03:1AA
  • 3,05:1AA
  • 2,64:1Échec
  • 2,39:1Échec
  • 2,12:1Échec
  • 1,83:1Échec
  • 1,62:1Échec
  • 1,3:1Échec

Éléments d'interface (seuil 3:1)

RenduÉlémentRatioVerdict
Bordure de champ au repos
--line (encre 6 %)
1,13:1Échec
Anneau de focus des champs (2 px)
--focus-ring (accent 12 %)
1,22:1Échec
Bordure focus de la recherche pays
--focus (accent 30 %)
1,68:1Échec
Bordure d'un champ en erreur
#F86251 --danger
3,06:1OK
Trait de progression inactif
encre 18 %
1,47:1Échec
Trait de progression actif
#0E1322 --ink
18,5:1OK
Bordure du bouton secondaire
accent 22 %
1,45:1Échec
Icônes de champ, œil, chevron
--muted-2 (encre 42 %)
2,74:1Échec
Cercle de validation dans sa tuile
#6AAB36
2,53:1Échec
Avion Telegram dans sa tuile
#229ED9
2,72:1Échec

Couleurs tierces

Ces couleurs apparaissent à l'écran sans appartenir à OWAN : le bleu de l'avion Telegram (#229ED9), le logo Unipros, et les réglages par défaut de la bibliothèque du champ téléphone (intl-tel-input 18.2.1) : #CCC, #555, #999, #888, #DBDBDB, noir à 5 et 20 %.

Mode sombre

Le funnel n'a qu'un thème clair. Mode sombre : à définir

Chapitre4/ 9

Typographie

Une seule famille, Rethink Sans, pour tout. Les titres restent en graisse normale : le relief vient du mot en dégradé, jamais du gras.

Rethink Sans

Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz
0 1 2 3 4 5 6 7 8 9 é è ê à ç ô œ « » € % & ?

Source
Google Fonts, licence OFL. © 2022 The Rethink Sans Project Authors.
Chargement
Import en tête de owan.css : graisses 400, 500, 600, 700, 800 et italique 500, affichage « swap ». Google sert un seul fichier variable, graisse de 400 à 800.
Police de repli
system-ui, -apple-system, Segoe UI, sans-serif.
Non utilisées
La graisse 800 et l'italique 500 sont importées mais n'apparaissent sur aucune page.

Les graisses

  • 400 RegularConnectez votre boîte e-mail
  • 500 MediumValider et continuer
  • 600 SemiBoldEmail de bienvenue
  • 700 BoldÉtape 1 / 6
  • 800 ExtraBold, importée, non utiliséeConnecter mon Telegram

400 : titres, libellés, nom d'étape. 500 : saisie, boutons, badges, messages. 600 : titre d'un message type, bouton Enregistrer, mot en gras d'un sous-titre. 700 : numéro d'étape, titres de section en capitales, badges de 10 px.

L'échelle des tailles

Douze tailles déclarées, de 10 à 30 px (la plus grande varie de 24 à 30 px selon l'écran), chacune liée à un élément précis. Aucune échelle n'est déclarée : c'est la liste de ce qui existe, avec un texte réel à la taille réelle.

TailleInterligneGraisseExemple réelOù
24 à 30 px1,16400Connectez votre CRM TrelloTitre de scène, étapes 2, 3, 4 et 6. clamp(24px, 6vw, 30px)
24 px1,184006 étapes pour implémenter OwanTitre d'accueil, étape 1 et /paiements
24 px1,2400C'est enregistré 🎉Titre de remerciement, /paiements
15 px1,6400Connectez votre boîte e-mail grâce au bouton ci-dessous.Sous-titre de scène
15 pxnormal500Valider et continuerBoutons, saisie, libellés (400)
14,5 pxnormal400Vos informationsNom de l'étape, intro de l'étape 5 (1,5)
14 pxnormal500Prélèvement bancaireCase verrouillée, listes, champs des messages
13,5 px1,5500Merci de remplir tous les champs (emails valides).Message d'erreur, pastilles, bouton Enregistrer (600)
13 pxnormal500Vos informations sont 100% sécuriséesBadge sécurité, pastille d'étape
12,5 px1,55400Connexion sécurisée via Google.Notes, description d'un message (1,4)
12 pxnormal700CoopérativeTitre de section, capitales, +0,14 em. Libellé de champ (600)
11,5 px1,5400Variables remplies automatiquement :Liste des variables
11 pxnormal400[entreprise]Variable, dans la police à chasse fixe du navigateur
10 pxnormal700SMSBadges Email, SMS, Réseaux

« normal » : aucun interligne n'est fixé, le navigateur applique celui de la police.

La hiérarchie des titres

Le funnel n'emploie que deux niveaux de titre, toujours centrés, toujours en 400, avec une approche de −0,012 em. Un ou deux mots finaux passent en dégradé.

Titres h3 à h6 : à définir. Tailles au-delà de 30 px : à définir

Les grands titres de cette page sont une mise en page du document, pas une règle relevée.

h1 d'accueil
24 px, 400, interligne 1,18, 360 px de large au plus. Étape 1 et /paiements.
h1 de scène
24 à 30 px selon la largeur d'écran (6vw), 400, interligne 1,16. Étapes 2, 3, 4 et 6.
h2 de remerciement
24 px, 400, interligne 1,2. Fin de /paiements.
Titre de section
Un paragraphe, pas une balise de titre : 12 px, 700, capitales, +0,14 em, couleur --muted-2.

Les mots en dégradé du funnel

  • 6 étapes pour implémenter Owan
  • Connectez votre CRM Trello
  • Informations validées
  • Boîte mail connectée !
  • Recevez vos alertes sur Telegram
  • Inscription terminée !
  • Facturation de vos prestations

Chasse fixe

Aucune police à chasse fixe n'est déclarée. Les variables comme [entreprise] s'affichent dans la police par défaut du navigateur, qui change d'un appareil à l'autre. Police à chasse fixe : à définir

Chapitre5/ 9

Composants

Chaque composant est reconstruit avec les valeurs exactes de owan.css, et chaque état montré existe dans le code du funnel. Les champs, l'œil, les pastilles et les messages types répondent comme dans le funnel.

Boutons

Bouton principal

Valider et continuer
Repos. Dégradé violet, relief intérieur, ombre violette.
Connecter mon Trello
Survol. Luminosité +4 %, ombre plus large, flèche décalée de 3 px.
Envoyer
Appuyé. Descend de 1 px, ombre resserrée.
Un instant…
Envoi en cours. Désactivé, désaturé, curseur d'attente.
.cta15 px, 500rayon 15 pxmarges 17 × 22 pxpleine largeurflèche 18 px

Bouton secondaire

Je n'ai pas de CRM Trello
Repos. Blanc, texte et bord violets.
Continuer : personnaliser mes messages
Survol. Fond #FAF9FF, ombre plus large.

Toujours sous le bouton principal, 10 px plus bas. Avec ou sans flèche selon la page.

Bouton Enregistrer (étape 5)

Enregistrer
Repos
Enregistrement…
En cours
✓ Enregistré
Réussi, 1,8 s
⚠️ Réessayer
Échec

Bouton œil

Afficher le mot de passe
Masquer, au survol

Champs

Champ à libellé flottant

Vide. Libellé dans le champ, bord encre 6 %.
Focus. Le libellé monte à 86 % et passe en violet, anneau violet 12 %.
Rempli. Le libellé reste en haut, en --muted-2.
Erreur. Bord #F86251 et halo de 4 px.
.field15 px, 500rayon 10 pxbord 1,5 pxmarges 10 × 16 px13 px entre deux champs

Avec icône, et encart Unipro

Icône de 20 px à 16 px du bord, texte décalé à 46 px. Dans l'encart, le libellé monté prend le fond #F5F7FB. L'onglet blanc du haut porte le logo du partenaire.

Téléphone et listes

  • France+33
  • Belgium (België)+32
  • Switzerland (Schweiz)+41
  • Aucun pays trouvé
  • Crédit Agricole
  • BNP Paribas
  • Société Générale
  • Aucune banque trouvée — saisissez son nom

Rendu simplifié : le vrai champ utilise la bibliothèque intl-tel-input 18.2.1, avec ses drapeaux en image. Pays proposés en tête : France, Belgique, Suisse, Luxembourg, Canada, avec leur nom anglais. Les deux listes : rayon 14 px, ligne survolée en violet 8 %.

Cartes et encarts

Carte de message type (étape 5)

Texte du SMS

Variables remplies automatiquement : [entreprise] [prénom] [téléphone] [lien_inscription]

Enregistrer

Objet de l'email

Corps de l'email

Variables remplies automatiquement : [entreprise] [prénom] [téléphone] [lien_inscription]

Enregistrer

Fermée puis ouverte : le chevron pivote de 180°, le contenu entre en 0,3 s. Rayon 16 px, bord encre 6 %. Ici l'en-tête est un vrai bouton ; dans le funnel, c'est un bloc cliquable à la souris seulement.

Badges de catégorie

SMSPar défaut

10 px, 700, rayon 20 px, 64 px de large au moins. « Par défaut » : le style prévu pour une catégorie inconnue (texte d'exemple).

Cases verrouillées (/paiements)

Crédit d'impôt avec avance immédiate
Crédit d'impôt classique

Une valeur imposée, montrée sans être modifiable. Une teinte par ligne : la case et ses pastilles portent la même couleur, vert ou bleu. La teinte ambre n'habille que des pastilles.

Pastilles de choix multiple

Hors coopérative

Cliquez pour cocher. Cochée, la pastille prend la teinte de sa ligne (ambre, bleu) et une coche de 14 px. Dernière ligne : l'état d'erreur, bord #F86251.

Badge sécurité et tuiles d'icône

Vos informations sont 100% sécurisées

Tuile de 74 px (63 px sur mobile), rayon 22 px, dégradé vert. La même tuile verte porte la coche des étapes 2 à 4 et l'avion bleu de Telegram à l'étape 6.

Étapes du formulaire

Six étapes, une par page. En tête de chaque carte : la pastille « Étape n / 6 » et le nom de l'étape. Au-dessus : six traits, noirs pour les étapes faites, le trait courant traversé d'un éclat toutes les 5 secondes.

Étape 1 / 6Vos informations
Début. Un trait actif, cinq à venir.
Étape 4 / 6Vos réseaux sociaux
En cours. Traits faits en encre, trait courant avec éclat.
Étape 6 / 6Vos notifications
Fin. Six traits en encre.
.bars 118 × 3 px5 px entre traitsà venir : encre 18 %.step-pill 13 px, rayon 8 px.step-name 14,5 px

6 étapes pour implémenter Owan dans votre activité

Étape 1 / 6Vos informations
Vos informations sont 100% sécurisées
Valider et continuer
Étape 1, le formulaire. Reconstruction sans envoi : le bouton ne fait rien.
Étape 2 / 6Votre CRM

Connectez votre CRM Trello

Owan créera automatiquement vos cartes leads et suivra vos chantiers dans votre tableau Trello.

Connecter mon Trello Je n'ai pas de CRM Trello

Connexion sécurisée via Trello.
Vous cliquez « Autoriser », c'est tout — rien à copier-coller.

Étape 2, une scène : tuile de validation, titre, sous-titre, bouton principal, bouton secondaire, note.

Le parcours complet

ÉtapeAdresseTitre de l'ongletNom d'étapeTitre affichéActions
1 / 6/formOWAN — Inscription au serviceVos informations6 étapes pour implémenter Owan dans votre activitéValider et continuer
2 / 6/crmOWAN — Connectez votre CRMVotre CRMConnectez votre CRM TrelloConnecter mon Trello ; Je n'ai pas de CRM Trello
3 / 6/emailOWAN — Connectez votre boîte mailVotre boîte e-mailInformations validéesConnecter ma boîte e-mail
4 / 6/platformOWAN — Dernière étapeVos réseaux sociauxBoîte mail connectée !Connecter mes plateformes ; Continuer : personnaliser mes messages
5 / 6/templateOWAN — Personnalisez vos messagesVos messagesAucun titre : un paragraphe d'introEnregistrer (par message) ; Dernière étape : connecter Telegram
6 / 6/telegramOWAN — Connecter TelegramVos notificationsRecevez vos alertes sur Telegram, puis Inscription terminée !Connecter mon Telegram
Annexe/paiementsOWAN — Facturation de vos prestationsAucune pastille d'étapeFacturation de vos prestationsEnvoyer

Les étapes 2, 3, 4 et 6 centrent leur carte à la verticale ; l'étape 1, l'étape 5 et /paiements partent du haut. L'onglet de l'étape 4 annonce « Dernière étape » alors que deux étapes suivent. /paiements n'est reliée à aucune des six étapes.

Messages d'erreur et de réussite

Erreur

Merci de remplir tous les champs (emails valides).
  • « La connexion n'a pas abouti. Réessayez. » étapes 2 et 3
  • « Il manque votre nom complet, votre banque. » /paiements Liste construite selon les champs manquants.
  • « Une erreur est survenue, réessayez. (Erreur serveur) » étape 1, /paiements Le message technique brut s'affiche entre parenthèses.
  • « Impossible de charger les messages. Réessayez. » étape 5

Fond #F86251 à 10 %, bord à 30 %, texte #C23B2D, 13,5 px, rayon 12 px. Placé au-dessus du bouton principal, caché tant qu'il n'y a pas d'erreur.

Attente et rassurance

  • « Un instant… » sur le bouton principal pendant l'envoi.
  • « Enregistrement… » sur le bouton Enregistrer.
  • « ⏳ En attente de votre message sur Telegram… » en note, après le clic de l'étape 6.
  • « Connexion sécurisée via Google. Nous ne voyons jamais votre mot de passe. » en note sous le bouton.
  • « Aucun pays trouvé », « Aucune banque trouvée — saisissez son nom » dans les listes vides.

Message d'avertissement ou d'information : à définir. Seules l'erreur et la réussite existent.

Inscription terminée !

Merci 🌿 Votre Telegram est relié. Tout est prêt — Samy vous recontacte très vite pour activer votre assistant OWAN.

Réussite de l'étape 6 : la scène entière est remplacée dès que Telegram répond.

C'est enregistré 🎉

Merci, l'équipe OWAN a bien reçu vos moyens de paiement.

Réussite de /paiements : la carte est remplacée, le bouton disparaît.

Mouvement

Entrée
Fondu montant de 14 px en 0,55 s, courbe cubic-bezier(.2, .7, .2, 1). Logo d'abord, puis titre (+0,06 s), carte (+0,12 s) et bouton (+0,2 s).
Validation
La tuile surgit avec un rebond (0,55 s, cubic-bezier(.3, 1.6, .4, 1), +0,15 s), puis la coche se trace en 0,5 s.
En boucle
Le dégradé du titre tourne en 18 s. Un éclat traverse le trait courant toutes les 5 s.
Transitions
0,14 à 0,2 s sur les champs, boutons et pastilles. La flèche glisse de 3 px au survol, le chevron pivote de 180°.
Défilement
Défilement doux par la bibliothèque Lenis 1.1.14, sur toutes les pages.
Réduire les animations
Le funnel coupe toutes les animations… et la coche verte reste alors invisible, car elle n'existe qu'à la fin de son tracé. Ici, elle s'affiche d'emblée.

Boîte mail
connectée !

Connecter mes plateformes
Chapitre6/ 9

Espacements, rayons, ombres, grille

Le funnel n'a pas d'échelle d'espacement : chaque composant porte ses propres valeurs, de 1 à 72 px. Les rayons, eux, dessinent une vraie hiérarchie, de 30 px pour la carte à 4 px pour une variable.

Espacements

Toutes les valeurs écrites en marges, écarts et positions, à l'échelle 1:1, avec leur nombre d'emplois. Tous les entiers de 1 à 18 px y sont. Échelle d'espacement : à définir

  • 1 px2 fois
  • 2 px6 fois
  • 3 px3 fois
  • 4 px11 fois
  • 5 px6 fois
  • 6 px9 fois
  • 7 px5 fois
  • 8 px5 fois
  • 9 px13 fois
  • 10 px17 fois
  • 11 px11 fois
  • 12 px9 fois
  • 13 px4 fois
  • 14 px7 fois
  • 15 px4 fois
  • 16 px8 fois
  • 17 px1 fois
  • 18 px6 fois
  • 20 px2 fois
  • 22 px9 fois
  • 24 px1 fois
  • 26 px1 fois
  • 29 px1 fois
  • 42 px1 fois
  • 46 px3 fois
  • 48 px1 fois
  • 72 px1 fois
  • −5 px1 fois, marge négative
    de l'onglet Unipro

Les espacements des composants

  • --owan-wrap-max464 pxLargeur de colonne des étapes .wrap
  • --owan-wrap-max-paiements600 pxColonne de /paiements .wrap-paie
  • --owan-wrap-max-templates640 pxColonne de l'étape 5 .tpl-wrap
  • --owan-wrap-padding-top29 px.wrap
  • --owan-wrap-padding-top-desktop46 px.wrap à partir de 700 px
  • --owan-wrap-padding-x18 px.wrap
  • --owan-wrap-padding-bottom72 px.wrap
  • --owan-card-padding-y22 px.card
  • --owan-card-padding-x20 px.card
  • --owan-block-gap22 pxÉcart entre blocs : badge sécurité, encart Unipro, traits, sections .secure.unipro.bars.sect
  • --owan-field-gap13 pxÉcart entre deux champs .field
  • --owan-row-gap11 pxÉcart entre deux colonnes de champs .row.ligne
  • --owan-input-padding-y10 px.field input
  • --owan-input-padding-x16 px.field input
  • --owan-input-icon-offset46 pxRetrait du texte quand le champ a une icône .field-icon input
  • --owan-cta-padding-y17 px.cta
  • --owan-cta-padding-x22 px.cta
  • --owan-cta-gap9 pxTexte / flèche .cta
  • --owan-cta-stack-gap10 pxBouton secondaire sous le principal .cta-ghost
  • --owan-bars-width118 px.bars
  • --owan-bars-gap5 px.bars
  • --owan-bar-height3 px.bar
  • --owan-tile-size74 px.icone
  • --owan-tile-size-mobile63 px.icone sous 700 px
  • --owan-logo-height64 px.brand .logo
  • --owan-logo-height-mobile58 px.brand .logo sous 700 px

Rayons

Plus l'objet est grand, plus son rayon l'est. Deux rayons sont déclarés en variables (--radius 10 px, --radius-lg 30 px), les autres sont écrits en dur.

  • 4 pxVariable [entreprise].tpl-vars code
  • 5 pxFond du libellé flottant.field label
  • 8 pxPastille d'étape.step-pill
  • 9 pxBouton œil, recherche et lignes de liste.eye.iti-search.iti__country
  • 10 pxChamps, bouton Enregistrer:root --radius
  • 11 pxBadge sécurité.secure
  • 12 pxMessage d'erreur.erreur-box
  • 14 pxListes déroulantes.iti__country-list.banque-liste
  • 15 pxBoutons principal et secondaire.cta
  • 16 pxCarte de message type.tpl-card
  • 18 pxEncart Unipro et son onglet.unipro.unipro-badge
  • 20 pxBadge de catégorie.tpl-badge
  • 22 pxTuile d'icône.icone
  • 30 pxCarte principale:root --radius-lg
  • 99 px, piluleTraits de progression, pastilles de choix.bar.puce

Ombres

Des ombres longues et décalées vers le bas, teintées de l'encre ou du violet, jamais de noir pur à l'extérieur. Le bouton principal ajoute un relief intérieur.

  • Carte.card
  • Bouton principal.cta
  • Bouton principal, survol.cta:hover
  • Bouton principal, appuyé.cta:active
  • Bouton secondaire.cta-ghost
  • Bouton secondaire, survol.cta-ghost:hover
  • Tuile d'icône.icone
  • Liste déroulante.iti__country-list.banque-liste
  • Carte de message type.tpl-card
  • Anneau de focus.field input:focus
  • Anneau d'erreur.field input.err
  • Contour de pastille cochée.puce.on

Grille

Colonne
Une seule, centrée : 464 px au plus pour les étapes, 640 px pour l'étape 5, 600 px pour /paiements.
Marges de page
29 px en haut (46 px à partir de 700 px de large), 18 px sur les côtés, 72 px en bas.
Deux colonnes
Prénom et nom de famille côte à côte, 11 px d'écart. Sur /paiements, chaque ligne passe en deux colonnes à partir de 620 px.
Points de rupture
420 px (libellé long rétréci), 620 px (deux colonnes sur /paiements), 700 px (mobile ou bureau).
Bordures
1,5 px pour ce qu'on touche (champs, pastilles, cases, bouton secondaire), 1 px pour le reste (message d'erreur, tuile, carte de message, listes).

464 px au plus

Logo, 64 px de haut
Titre, 360 px de large au plus
Carte, marges intérieures 22 × 20 px
PrénomNom de famille
Bouton principal, pleine largeur

marges de page : 18 px de chaque côté

Grille à plusieurs colonnes pour d'autres supports : à définir

Chapitre7/ 9

Ton de voix

Le funnel vouvoie, parle court et dit toujours ce qui va se passer. Les dix règles ci-dessous sont tirées de ses textes. Chaque « À faire » est une citation exacte ; chaque « À ne pas faire » est un contre-exemple écrit pour l'illustration.

  1. Vouvoyer, toujours

    À faireConnectez votre boîte e-mail grâce au bouton ci-dessous.Vos informations sont 100% sécurisées
    À ne pas faireConnecte ta boîte mail.
  2. Un bouton parle à la première personne : Connecter, puis mon, ma ou mes

    À faireConnecter mon TrelloConnecter ma boîte e-mailConnecter mes plateformesJe n'ai pas de CRM Trello
    À ne pas faireAutoriser l'accès OAuthCliquez ici
  3. Le bouton annonce la suite

    À faireContinuer : personnaliser mes messagesDernière étape : connecter TelegramValider et continuer
    À ne pas faireSuivant
  4. Chaque écran confirme ce qui vient d'être fait

    À faireInformations validéesBoîte mail connectée !Inscription terminée !Titres des étapes 3, 4 et 6, sous une coche verte.
    À ne pas faireÉtape 3 : e-mail
  5. Rassurer au moment sensible, avec un fait concret

    À faireConnexion sécurisée via Google. Nous ne voyons jamais votre mot de passe.Vous cliquez « Autoriser », c'est tout — rien à copier-coller.
    À ne pas faireVos données sont protégées conformément à la réglementation en vigueur.
  6. Dire ce qu'OWAN fait, et pour quel résultat

    À faireOwan créera automatiquement vos cartes leads et suivra vos chantiers dans votre tableau Trello.OWAN vous prévient sur Telegram à chaque nouveau lead, devis ou relance.
    À ne pas faireIntégration Trello disponible.
  7. Une erreur dit quoi faire, en peu de mots

    À faireLa connexion n'a pas abouti. Réessayez.Il manque votre nom complet, votre banque.
    À ne pas faireErreur 500Une erreur inattendue s'est produite.
  8. L'attente tient en un ou deux mots, suivis de points de suspension

    À faireUn instant…Enregistrement…⏳ En attente de votre message sur Telegram…
    À ne pas faireChargement en cours, veuillez patienter quelques instants
  9. Un emoji, rarement, et la feuille 🌿 comme signe

    À faireDernière étape 🌿Merci 🌿 Votre Telegram est relié.C'est enregistré 🎉
    À ne pas faire🚀🔥 Bravo !!! 🎉🎉
  10. Une personne derrière l'assistant

    À faireSamy vous recontacte très vite pour activer votre assistant OWAN.
    À ne pas faireUn conseiller prendra contact avec vous.

Le vocabulaire du funnel

Les mots que le funnel emploie pour parler de l'activité de l'utilisateur.

  • activité
  • entreprise
  • étape
  • connecter
  • CRM
  • cartes leads
  • chantiers
  • tableau Trello
  • boîte e-mail
  • réseaux sociaux
  • fiche d'établissement Google
  • messages
  • alertes
  • lead
  • devis
  • relance
  • assistant
  • prestations
  • coopérative
  • crédit d'impôt
  • avance immédiate
  • prélèvement bancaire

À trancher

Le funnel hésite sur plusieurs points d'écriture. Aucun n'est tranché dans ses textes.

  • Le nomà définir

    OWAN (11 fois), Owan (9 fois), owan (logo).

  • E-mail, email ou mailà définir

    « Votre boîte e-mail », « Boîte mail connectée ! », « Email de connexion Unipro », « emails & SMS ».

  • Espace avant %à définir

    « 100% sécurisées » et « 50% » dans le funnel, mais « 100 % gratuit » et « 50 % » dans l'email de bienvenue.

  • Apostropheà définir

    Apostrophe droite (') partout, alors que les guillemets sont typographiques (« »).

  • Mots anglaisà définir

    « lead », « CRM » et « Email » cohabitent avec « relance » et « devis ». La liste des pays du téléphone est en anglais.

  • Variablesà définir

    Crochets [entreprise] presque partout, accolades {date} et {heure} dans l'email de date d'intervention.

Les messages types

L'étape 5 montre les 14 messages qu'OWAN enverra au nom de l'entreprise. Leur voix n'est pas celle du funnel : c'est l'entreprise qui parle à ses clients, avec « nous » et une signature.

Email
Ouvre sur « Bonjour, ». Ferme sur « Bien cordialement, », « À très vite, » ou « À très bientôt, », puis [prénom] et [entreprise].
SMS
« [entreprise] : Bonjour, … 🌿 … Pour toute question : [téléphone]. [prénom] »
Post
🌿 prestation et lieu, 💬 avis client, 💰 bon à savoir, ✨ devis gratuit. Rempli par l'IA depuis 2 photos avant/après et un vocal.
Arguments répétés
Devis gratuit, 50 % de crédit d'impôt avec avance immédiate, rapidité (« Notre planning se remplit rapidement »).
  • Email de bienvenueEnvoyé au prospect dès qu'un nouveau lead arrive.
  • Email d'envoi du devisCorps du mail qui accompagne le PDF du devis.
  • SMS — devis envoyéSMSSMS au client juste après l'envoi du devis.
  • Email date d'intervention + URSSAFDate d'intervention + lien d'inscription à l'avance immédiate.
  • SMS — lien de signatureSMSSMS au client quand le devis est prêt à signer.
  • Email lien de paiement URSSAFEmail au client quand l'URSSAF envoie le lien de paiement des 50%.
  • SMS — paiement URSSAFSMSSMS au client pour le lien de paiement des 50%.
  • Relance email J+7Relance automatique 7 jours après l'envoi du devis sans réponse.
  • Relance SMS J+7SMSSMS de relance 7 jours après le devis.
  • Relance email J+11Dernière relance automatique 11 jours après le devis.
  • Relance SMS J+11SMSDernier SMS de relance 11 jours après le devis.
  • Post FacebookModèle du post Facebook généré à partir de vos 2 photos avant/après.
  • Post InstagramModèle du post Instagram (identique à Facebook + hashtags locaux).
  • Post Google (fiche établissement)Modèle du post Google Business, optimisé pour le référencement local.
Email de bienvenue
Objet : Bienvenue chez [entreprise] 🌿Bonjour, Merci d'avoir fait appel à [entreprise] 🎉 Votre demande a bien été reçue par notre équipe et nous vous en remercions. Nous vous contacterons dans les 24 prochaines heures maximum afin d'échanger sur votre projet et de planifier votre devis gratuit. Voici ce dont vous pourrez bénéficier : ✅ Devis 100 % gratuit et sans engagement ✅ 50 % de crédit d'impôt avec avance immédiate ✅ Intervention rapide par des professionnels qualifiés À très bientôt, L'équipe [entreprise] 🌿
SMS — devis envoyéSMS
[entreprise] : Bonjour, votre devis vient de partir par mail 🌿 Pensez à vérifier vos spams. Pour toute question : [téléphone]. [prénom]
Post Facebook
🌿 [PRESTATION] à [LOCALITÉ] [DÉTAIL_INITIAL] : notre équipe est intervenue sur [DURÉE] pour [ACTIONS_ET_RÉSULTAT]. 💬 Avis client : « [AVIS_CLIENT] » 💰 Bon à savoir : toutes nos prestations d'entretien sont éligibles au crédit d'impôt 50% avec avance immédiate. Vous ne payez que la moitié sur place, pas besoin d'attendre votre déclaration. ✨ Devis gratuit : contactez-nous !
Chapitre8/ 9

Iconographie et imagerie

Des icônes au trait fin et arrondi, dessinées sur 24 px, et presque aucune image : le logo, un halo coloré, un carré dégradé qui n'est jamais affiché, et deux éléments de tiers.

Icônes

Trait seul, sans remplissage, bouts et angles arrondis, couleur héritée du texte. Sept tracés sont identiques à ceux de la bibliothèque Heroicons (version 2, style « outline »), le chevron est celui de Lucide, l'avion et le cercle de validation sont dessinés à part.

  • Bouclier cochéHeroicons, trait 1,8Badge sécurité, 18 px
  • EnveloppeHeroicons, trait 1,7Champ email, 20 px
  • CadenasHeroicons, trait 1,7 ou 1,8Mot de passe 20 px, case verrouillée 15 px
  • ŒilHeroicons, trait 1,7Afficher le mot de passe, 20 px
  • Œil barréHeroicons, trait 1,7Masquer le mot de passe, 20 px
  • Flèche droiteHeroicons, trait 2,2Boutons, 18 px
  • CocheHeroicons, trait 2,6Pastille cochée, 14 px
  • Chevron basLucide, trait 2Carte de message, 22 px
  • Avion TelegramTracé propre, trait 1,8, #229ED9Tuile de l'étape 6, 40 px
  • Cercle de validationTracé propre, deux vertsTuile des étapes 2 à 4, 40 px

Grille 24 × 24, épaisseurs de 1,7 à 2,6 selon la taille d'affichage. Bibliothèque d'icônes officielle : à définir

Emojis

  • 🌿Signature : fin de phrase à l'étape 6, dans presque tous les messages types
  • 🎉Réussite : « C'est enregistré 🎉 », email de bienvenue
  • ⏳Attente Telegram
  • ✓« ✓ Enregistré »
  • ⚠️« ⚠️ Réessayer »
  • ✅ 👉 💬 💰 ✨ 😊Messages types seulement : listes, lien, avis, argent, devis, relance

Images

Le cubeSeule illustration de la marque, dans le logo : cube translucide en 3D, reflets orange, cyan et rose, deux yeux. Recadré ici pour l'illustrer ; une version du symbole seul reste à définir
Le halobackground-light-gradient.webp, 1280 × 673 px, transparent. Posé en haut de chaque page sur 70 % de la hauteur d'écran, fondu vers le bas à partir de 58 %. Sur mobile : 90 % de la hauteur, centré.
Le carré dégradéGradient-square.webp, 1280 × 1280 px, avec grain. Cité dans la feuille de style comme source du mot en dégradé, jamais affiché.

Éléments de tiers

Le logo Unipros (logo-unipros.png, 480 × 114 px) dans l'onglet de l'encart, à 18 px de haut. Les drapeaux de la bibliothèque du téléphone (ici, rendu simplifié).

Ce qui n'existe pas

Photographie : à définir. Illustrations au-delà du cube : à définir

Les posts des réseaux partent des photos avant/après envoyées par l'entreprise : ce sont ses images, pas celles d'OWAN.

Chapitre9/ 9

Design tokens

149 tokens tirés de ce relevé, en deux formats au contenu identique : des variables CSS préfixées --owan-, et un fichier JSON au format W3C Design Tokens. Chaque token garde sa source dans owan.css.

Les deux fichiers sont à côté de cette page. Les couleurs transparentes passent en hexadécimal à 8 chiffres dans le JSON (#0E13228F pour l'encre à 56 %), la valeur CSS d'origine reste dans $extensions.

Contenu

Couleurs
5 de base, 8 dérivés, 13 écrites en dur, 22 teintes.
Dégradés
Mot en dégradé, bouton, fond de page, tuile.
Typographie
Famille, 5 graisses, 12 tailles, 7 interlignages, 2 approches.
Formes
15 rayons, 26 espacements de composants, 2 bordures, 12 ombres.
Mouvement
10 durées, 2 courbes, 3 points de rupture.

À savoir avant d'utiliser

Mot en dégradé
Pour faire tourner le dégradé, déclarez-le sur l'élément lui-même avec @property, comme le funnel : une variable héritée de :root garde l'angle de 45°.
Points de rupture
Donnés pour mémoire : une variable CSS ne fonctionne pas dans @media.
Noms d'origine
--owan-dark, --owan-accent… reprennent les noms de owan.css ; --radius et --radius-lg deviennent --owan-radius-10 et --owan-radius-30.

tokens.css

/* OWAN — design tokens relevés sur https://onboarding.owan.fr (26/09/2026).
   Source : /static/owan.css + styles et SVG en ligne des pages. Rien d'inventé ;
   ce qui n'existe pas dans le funnel est marqué « à définir » dans le brandbook.
   Police chargée par le funnel :
   @import url('https://fonts.googleapis.com/css2?family=Rethink+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&display=swap'); */

:root{

  /* ── Couleurs de base, déclarées dans :root de owan.css (« palette projet ») ── */
  --owan-dark: #0E1322;                                 /* Encre. :root --dark (identique à --ink). */
  --owan-accent: #542DF3;                               /* Primaire : bouton, focus, liens d'action. :root --accent. */
  --owan-success: #9AD567;                              /* Succès. Jamais utilisé plein : seulement en teintes (rgba). :root --success. */
  --owan-warning: #FFC05F;                              /* Alerte. Jamais utilisé plein : seulement en teintes (rgba). :root --warning. */
  --owan-danger: #F86251;                               /* Erreur : bordure des champs en erreur. :root --danger. */

  /* ── Dérivés déclarés dans :root de owan.css ── */
  --owan-ink: #0E1322;                                  /* Texte principal. :root --ink. */
  --owan-muted: rgba(14,19,34,.56);                     /* Texte secondaire : libellés, sous-titres. Rendu #787B83 sur blanc. :root --muted. */
  --owan-muted-2: rgba(14,19,34,.42);                   /* Texte tertiaire : notes, icônes, libellé flottant. Rendu #9A9CA2 sur blanc. :root --muted-2. */
  --owan-line: rgba(14,19,34,.06);                      /* Bordure des champs au repos. :root --line. */
  --owan-focus: rgba(84,45,243,.30);                    /* Bordure au focus (recherche pays). :root --focus. */
  --owan-focus-ring: rgba(84,45,243,.12);               /* Anneau de focus des champs. :root --focus-ring. */
  --owan-card: #FFFFFF;                                 /* Fond des cartes. :root --card. */
  --owan-unipro: #F5F7FB;                               /* Fond de l'encart Unipro. :root --unipro. */

  /* ── Fonds écrits en dur dans les règles ── */
  --owan-bg-top: #EFF2F8;                               /* Haut du fond de page (dégradé vers blanc). body. */
  --owan-white: #FFFFFF;                                /* Blanc : bas du fond, champs, puces, listes. body, .field input, .puce. */
  --owan-ghost-hover: #FAF9FF;                          /* Fond du bouton secondaire au survol. .cta-ghost:hover. */

  /* ── Bouton principal ── */
  --owan-cta-top: #6B47F7;                              /* Haut du dégradé du bouton principal. .cta. */
  --owan-cta-bottom: #4A27DC;                           /* Bas du dégradé du bouton principal. .cta. */

  /* ── Couleurs d'état écrites en dur ── */
  --owan-success-ink: #4D7A27;                          /* Texte vert : badge sécurité, badge par défaut, case verte. .secure, .tpl-badge, .t-vert. */
  --owan-success-icon: #6AAB36;                         /* Icône verte : bouclier, cercle de validation. .secure svg, .check-ring circle, .t-vert. */
  --owan-success-strong: #5D9A32;                       /* Coche de validation, bouton « ✓ Enregistré ». .check-trait, .tpl-save.saved. */
  --owan-danger-ink: #C23B2D;                           /* Texte des messages d'erreur. .erreur-box. */
  --owan-warning-ink: #8A6212;                          /* Texte ambre : badge SMS, pastille ambre. .tpl-badge.sms, .t-ambre. */
  --owan-warning-icon: #C8891A;                         /* Icône ambre (page /paiements). .t-ambre --teinte. */
  --owan-social-ink: #BE185D;                           /* Texte du badge « Réseaux ». .tpl-badge.social. */

  /* ── Couleur tierce ── */
  --owan-telegram: #229ED9;                             /* Avion Telegram de l'étape 6 (couleur de Telegram, pas d'OWAN). */

  /* ── Teintes (couleur de base + transparence) ── */
  --owan-success-tile-from: rgba(154,213,103,.28);      /* Tuile d'icône, début du dégradé. .icone. */
  --owan-success-tile-to: rgba(154,213,103,.12);        /* Tuile d'icône, fin du dégradé. .icone. */
  --owan-success-tint: rgba(154,213,103,.16);           /* Fond du badge sécurité et de la case verte. .secure, .t-vert --fond. */
  --owan-success-badge: rgba(154,213,103,.18);          /* Fond du badge de catégorie par défaut. .tpl-badge. */
  --owan-success-tile-border: rgba(154,213,103,.37);    /* Bordure de la tuile d'icône. .icone. */
  --owan-success-line: rgba(154,213,103,.45);           /* Bordure de la case verte. .t-vert --trait. */
  --owan-danger-tint: rgba(248,98,81,.10);              /* Fond d'erreur et halo du champ en erreur. .erreur-box, .field input.err. */
  --owan-danger-line: rgba(248,98,81,.30);              /* Bordure du message d'erreur. .erreur-box. */
  --owan-warning-tint: rgba(255,192,95,.18);            /* Fond du badge SMS et de la pastille ambre. .tpl-badge.sms, .t-ambre --fond. */
  --owan-warning-line: rgba(255,192,95,.55);            /* Bordure ambre. .t-ambre --trait. */
  --owan-accent-07: rgba(84,45,243,.07);                /* Fond de la case bleue et de la pastille cochée. .t-bleu --fond, .puce.on. */
  --owan-accent-08: rgba(84,45,243,.08);                /* Surlignage de liste, fond des variables. .iti__highlight, .banque-liste li:hover, .tpl-vars code. */
  --owan-accent-10: rgba(84,45,243,.1);                 /* Fond du badge « Email ». .tpl-badge.email. */
  --owan-accent-22: rgba(84,45,243,.22);                /* Bordure du bouton secondaire. .cta-ghost. */
  --owan-accent-24: rgba(84,45,243,.24);                /* Bordure de pastille au survol. .puce:hover. */
  --owan-accent-28: rgba(84,45,243,.28);                /* Bordure de la case bleue. .t-bleu --trait. */
  --owan-social-tint: rgba(219,39,119,.12);             /* Fond du badge « Réseaux ». .tpl-badge.social. */
  --owan-ink-035: rgba(14,19,34,.035);                  /* Fond d'une case verrouillée sans teinte. .verrou. */
  --owan-ink-045: rgba(14,19,34,.045);                  /* Fond de la pastille « Étape 1 / 6 ». .step-pill. */
  --owan-ink-05: rgba(14,19,34,.05);                    /* Fond du bouton œil au survol. .eye:hover. */
  --owan-ink-18: rgba(14,19,34,.18);                    /* Trait de progression inactif. .bar. */
  --owan-white-90: rgba(255,255,255,.9);                /* Reflet : liseré haut de carte, éclat du trait courant. .card, .bar.current::after. */

  /* ── Dégradés ── */
  --owan-grad-signature: linear-gradient(var(--owan-grad-angle, 45deg), #8978F9 0%, #8282FC 8%, #838AF9 16%, #8B93FA 25%, #AE7EF9 33%, #CD69F5 42%, #D264F6 50%, #F87C42 58%, #F88B45 66%, #F99C4E 75%, #FBB05C 83%, #FCC16C 92%, #FFDDA4 100%); /* Mot en dégradé des titres (.grad), « répliqué depuis Gradient-square.webp, sans grain ». Angle 45deg qui tourne de 360° en 18 s. */
  --owan-grad-cta: linear-gradient(180deg, #6B47F7 0%, #542DF3 52%, #4A27DC 100%); /* Bouton principal. .cta. */
  --owan-grad-page: linear-gradient(180deg, #EFF2F8 0%, #FFFFFF 58%); /* Fond de page, attaché à la fenêtre. body. */
  --owan-grad-tile: linear-gradient(160deg, rgba(154,213,103,.28), rgba(154,213,103,.12)); /* Tuile d'icône verte. .icone. */

  /* ── Typographie ── */
  --owan-font: 'Rethink Sans', system-ui, -apple-system, Segoe UI, sans-serif; /* Google Fonts, variable 400 à 800 + italique 500. :root --font. */
  --owan-font-weight-regular: 400;                      /* Titres, libellés, nom d'étape. */
  --owan-font-weight-medium: 500;                       /* Saisie, boutons, badges, messages. */
  --owan-font-weight-semibold: 600;                     /* Titre d'un message type, bouton Enregistrer, mot en gras du sous-titre. */
  --owan-font-weight-bold: 700;                         /* Numéro d'étape, titres de section en capitales, badges 10 px. */
  --owan-font-weight-extrabold: 800;                    /* Importée par la feuille de style, utilisée nulle part. */
  --owan-font-size-24: 24px;                            /* Titre d'accueil, titre de remerciement. .hero h1, .merci h2. */
  --owan-font-size-15: 15px;                            /* Saisie, libellés, boutons, sous-titres. .field input, .cta, .scene .sous. */
  --owan-font-size-14-5: 14.5px;                        /* Nom de l'étape, intro des messages. .step-name, .tpl-intro. */
  --owan-font-size-14: 14px;                            /* Listes déroulantes, case verrouillée, champs des messages. .iti__country-list, .verrou, .tpl-body input. */
  --owan-font-size-13-5: 13.5px;                        /* Message d'erreur, pastilles, bouton Enregistrer. .erreur-box, .puce, .tpl-save. */
  --owan-font-size-13: 13px;                            /* Pastille d'étape, badge sécurité. .step-pill, .secure. */
  --owan-font-size-12-5: 12.5px;                        /* Notes, description d'un message type. .scene .note, .tpl-head .d. */
  --owan-font-size-12: 12px;                            /* Titres de section en capitales, libellés de champ. .sect-titre, .tpl-cat, .tpl-label. */
  --owan-font-size-11-5: 11.5px;                        /* Liste des variables. .tpl-vars. */
  --owan-font-size-11: 11px;                            /* Variable [entreprise]. .tpl-vars code. */
  --owan-font-size-10: 10px;                            /* Badge Email / SMS / Réseaux. .tpl-badge. */
  --owan-font-size-title: clamp(24px, 6vw, 30px);       /* Titre de scène fluide, de 24 à 30 px. .scene h1. */
  --owan-line-height-title-scene: 1.16;                 /* .scene h1 */
  --owan-line-height-title-hero: 1.18;                  /* .hero h1 */
  --owan-line-height-title-merci: 1.2;                  /* .merci h2 */
  --owan-line-height-tight: 1.4;                        /* .tpl-head .d */
  --owan-line-height-base: 1.5;                         /* .erreur-box, .tpl-intro, textarea, .tpl-vars */
  --owan-line-height-note: 1.55;                        /* .scene .note */
  --owan-line-height-body: 1.6;                         /* .scene .sous, .merci p */
  --owan-tracking-title: -0.012em;                      /* Titres. .hero h1, .scene h1. */
  --owan-tracking-caps: 0.14em;                         /* Titres de section en capitales. .sect-titre, .tpl-cat. */

  /* ── Rayons (du plus petit au plus grand) ── */
  --owan-radius-4: 4px;                                 /* Variable [entreprise]. .tpl-vars code */
  --owan-radius-5: 5px;                                 /* Fond du libellé flottant. .field label */
  --owan-radius-8: 8px;                                 /* Pastille d'étape. .step-pill */
  --owan-radius-9: 9px;                                 /* Bouton œil, recherche et lignes de liste. .eye, .iti-search, .iti__country */
  --owan-radius-10: 10px;                               /* Champs, bouton Enregistrer. :root --radius */
  --owan-radius-11: 11px;                               /* Badge sécurité. .secure */
  --owan-radius-12: 12px;                               /* Message d'erreur. .erreur-box */
  --owan-radius-14: 14px;                               /* Listes déroulantes. .iti__country-list, .banque-liste */
  --owan-radius-15: 15px;                               /* Boutons principal et secondaire. .cta */
  --owan-radius-16: 16px;                               /* Carte de message type. .tpl-card */
  --owan-radius-18: 18px;                               /* Encart Unipro et son onglet. .unipro, .unipro-badge */
  --owan-radius-20: 20px;                               /* Badge de catégorie. .tpl-badge */
  --owan-radius-22: 22px;                               /* Tuile d'icône. .icone */
  --owan-radius-30: 30px;                               /* Carte principale. :root --radius-lg */
  --owan-radius-pill: 99px;                             /* Traits de progression, pastilles de choix. .bar, .puce */

  /* ── Espacements et gabarit (aucune échelle déclarée dans le funnel : valeurs des composants) ── */
  --owan-wrap-max: 464px;                               /* Largeur de colonne des étapes. .wrap */
  --owan-wrap-max-paiements: 600px;                     /* Colonne de /paiements. .wrap-paie */
  --owan-wrap-max-templates: 640px;                     /* Colonne de l'étape 5. .tpl-wrap */
  --owan-wrap-padding-top: 29px;                        /* .wrap */
  --owan-wrap-padding-top-desktop: 46px;                /* .wrap à partir de 700 px */
  --owan-wrap-padding-x: 18px;                          /* .wrap */
  --owan-wrap-padding-bottom: 72px;                     /* .wrap */
  --owan-card-padding-y: 22px;                          /* .card */
  --owan-card-padding-x: 20px;                          /* .card */
  --owan-block-gap: 22px;                               /* Écart entre blocs : badge sécurité, encart Unipro, traits, sections. .secure, .unipro, .bars, .sect */
  --owan-field-gap: 13px;                               /* Écart entre deux champs. .field */
  --owan-row-gap: 11px;                                 /* Écart entre deux colonnes de champs. .row, .ligne */
  --owan-input-padding-y: 10px;                         /* .field input */
  --owan-input-padding-x: 16px;                         /* .field input */
  --owan-input-icon-offset: 46px;                       /* Retrait du texte quand le champ a une icône. .field-icon input */
  --owan-cta-padding-y: 17px;                           /* .cta */
  --owan-cta-padding-x: 22px;                           /* .cta */
  --owan-cta-gap: 9px;                                  /* Texte / flèche. .cta */
  --owan-cta-stack-gap: 10px;                           /* Bouton secondaire sous le principal. .cta-ghost */
  --owan-bars-width: 118px;                             /* .bars */
  --owan-bars-gap: 5px;                                 /* .bars */
  --owan-bar-height: 3px;                               /* .bar */
  --owan-tile-size: 74px;                               /* .icone */
  --owan-tile-size-mobile: 63px;                        /* .icone sous 700 px */
  --owan-logo-height: 64px;                             /* .brand .logo */
  --owan-logo-height-mobile: 58px;                      /* .brand .logo sous 700 px */

  /* ── Épaisseurs de bordure ── */
  --owan-border-control: 1.5px;                         /* Champs, pastilles, cases, bouton secondaire. */
  --owan-border-hairline: 1px;                          /* Message d'erreur, tuile, carte de message, listes. */

  /* ── Ombres et anneaux ── */
  --owan-shadow-card: inset 0 1px 0 rgba(255,255,255,.9), 0 30px 60px -28px rgba(14,19,34,.16), 0 8px 24px -16px rgba(14,19,34,.05); /* .card */
  --owan-shadow-cta: inset 0 1px 0 rgba(255,255,255,.38), inset 0 -2px 6px rgba(0,0,0,.18), 0 10px 22px -8px rgba(84,45,243,.55), 0 3px 8px -4px rgba(84,45,243,.5); /* .cta */
  --owan-shadow-cta-hover: inset 0 1px 0 rgba(255,255,255,.42), inset 0 -2px 6px rgba(0,0,0,.18), 0 14px 30px -8px rgba(84,45,243,.62), 0 3px 8px -4px rgba(84,45,243,.5); /* .cta:hover */
  --owan-shadow-cta-active: inset 0 1px 0 rgba(255,255,255,.25), inset 0 -1px 3px rgba(0,0,0,.22), 0 6px 14px -8px rgba(84,45,243,.5); /* .cta:active */
  --owan-shadow-ghost: 0 4px 14px -8px rgba(84,45,243,.4); /* .cta-ghost */
  --owan-shadow-ghost-hover: 0 6px 18px -8px rgba(84,45,243,.5); /* .cta-ghost:hover */
  --owan-shadow-tile: 0 12px 26px -14px rgba(154,213,103,.7), inset 0 1px 0 rgba(255,255,255,.7); /* .icone */
  --owan-shadow-dropdown: 0 16px 40px -10px rgba(14,19,34,.25); /* .iti__country-list, .banque-liste */
  --owan-shadow-message-card: 0 18px 40px -30px rgba(14,19,34,.18); /* .tpl-card */
  --owan-shadow-ring-focus: 0 0 0 2px rgba(84,45,243,.12); /* Champ au focus. .field input:focus */
  --owan-shadow-ring-error: 0 0 0 4px rgba(248,98,81,.10); /* Champ en erreur. .field input.err */
  --owan-shadow-ring-chip: 0 0 0 1.5px rgba(84,45,243,.30); /* Pastille cochée, teinte par défaut. .puce.on */

  /* ── Mouvement ── */
  --owan-duration-enter: 550ms;                         /* Entrée du logo, du titre, de la carte, du bouton ; pop de la coche. rise, pop */
  --owan-duration-draw: 500ms;                          /* Tracé de la coche. draw */
  --owan-duration-open: 300ms;                          /* Ouverture d'un message type. .tpl-card.open .tpl-body */
  --owan-duration-hover: 200ms;                         /* Ombre du bouton, flèche, chevron. .cta, .tpl-chevron */
  --owan-duration-field: 180ms;                         /* Bordure et anneau des champs. .field input */
  --owan-duration-label: 160ms;                         /* Montée du libellé flottant. .field label */
  --owan-duration-quick: 150ms;                         /* Œil, pastilles, bouton Enregistrer. .eye, .puce, .tpl-save */
  --owan-duration-press: 140ms;                         /* Enfoncement du bouton. .cta:active */
  --owan-duration-shine: 5000ms;                        /* Éclat qui traverse le trait de l'étape courante. barShine */
  --owan-duration-grad-spin: 18000ms;                   /* Rotation du dégradé du mot mis en valeur. gradSpin */
  --owan-ease-rise: cubic-bezier(.2,.7,.2,1);           /* Entrées (rise). */
  --owan-ease-pop: cubic-bezier(.3,1.6,.4,1);           /* Rebond de la tuile de validation (pop). */

  /* ── Points de rupture (pour mémoire : une variable CSS ne marche pas dans @media) ── */
  --owan-breakpoint-sm: 420px;                          /* (max-width:420px) : libellé long de /paiements rétréci */
  --owan-breakpoint-md: 620px;                          /* (min-width:620px) : /paiements passe sur deux colonnes */
  --owan-breakpoint-lg: 700px;                          /* (max-width:700px) / (min-width:700px) : mobile / bureau */
}

tokens.json, extrait

{
  "color": {
    "base": {
      "accent": {
        "$value": "#542DF3",
        "$type": "color",
        "$description": "Primaire : bouton, focus, liens d'action. :root --accent.",
        "$extensions": {
          "fr.owan": {
            "css": "--owan-accent",
            "value": "#542DF3"
          }
        }
      }
    },
    "derived": {
      "muted": {
        "$value": "#0E13228F",
        "$type": "color",
        "$description": "Texte secondaire : libellés, sous-titres. Rendu #787B83 sur blanc. :root --muted.",
        "$extensions": {
          "fr.owan": {
            "css": "--owan-muted",
            "value": "rgba(14,19,34,.56)"
          }
        }
      }
    }
  },
  "shadow": {
    "card": {
      "$value": [
        {
          "color": "#FFFFFFE6",
          "offsetX": "0px",
          "offsetY": "1px",
          "blur": "0px",
          "spread": "0px",
          "inset": true
        },
        {
          "color": "#0E132229",
          "offsetX": "0px",
          "offsetY": "30px",
          "blur": "60px",
          "spread": "-28px",
          "inset": false
        },
        {
          "color": "#0E13220D",
          "offsetX": "0px",
          "offsetY": "8px",
          "blur": "24px",
          "spread": "-16px",
          "inset": false
        }
      ],
      "$type": "shadow",
      "$description": ".card",
      "$extensions": {
        "fr.owan": {
          "css": "--owan-shadow-card",
          "value": "inset 0 1px 0 rgba(255,255,255,.9), 0 30px 60px -28px rgba(14,19,34,.16), 0 8px 24px -16px rgba(14,19,34,.05)"
        }
      }
    }
  }
}