Case study · UX/UI & intégration front

Façonner Demain6 ambitions, 14 programmes, un parcours

Refonte de l'expérience de la landing « Façonner Demain » sur l'intranet MyPlace de Crédit Agricole Assurances. Le parti pris graphique de la maquette est conservé ; ce qui change, c'est la manière d'entrer dans le plan stratégique, de s'y repérer et d'en sortir.

Client
Crédit Agricole Assurances
Plateforme
LumApps · intranet MyPlace
Rôle
UX/UI, prototype, intégration
Période
10 – 16 septembre 2026
Outils
Figma, HTML/CSS/JS, GSAP
Statut
En validation client
Écran d'entrée en couleur : le rail des 6 ambitions et la popin de l'ambition 1, avec ses cartes de programmes.
Fiche du programme Assureur principal, sur fond vert pomme, mission et objectifs en cartes de papier.
Fiche du programme PST 09, développement au-delà du groupe.
Contexte

Une très belle page que personne ne parcourait jusqu'au bout

« Façonner Demain » présente le plan stratégique de CA Assurances aux collaborateurs : une vision, quatre engagements, six ambitions et quatorze programmes stratégiques transverses (PST). La V2 de la maquette, longue page animée au scroll, avait un vrai univers graphique — collages, scotchs, papier déchiré, animaux totems — mais une structure qui travaillait contre lui.

La demande

Garder la DA, refondre l'UX

Les choix graphiques de la nouvelle maquette sont acquis. Le travail porte sur la structure, la navigation, la lisibilité et l'intégration.

Le brief, précisé

Plein écran, sans scroll subi

Une expérience animée et ludique, qui fait naviguer entre les 6 ambitions plutôt que de faire descendre le lecteur dans 28 écrans.

La contrainte

Vivre dans LumApps

Une SPA, des barres fixes de 116 px, un éditeur qui nettoie le HTML, et un contenu que la communication doit pouvoir modifier seule.

« Ambition » devient le mot de l'interface : il titre la page, structure la navigation et nomme les écrans.Arbitrage de vocabulaire, 10/09/2026 — les 14 PST gardent leur numéro et leur titre propre.

Diagnostic

Ce que la maquette V2 disait, mesuré

Analyse faite sur le fichier Figma lui-même, avant puis après la scission en deux pages : rendu pleine page découpé section par section, relevé programmatique des nœuds de texte, contrastes calculés sur les couleurs réellement utilisées.

La maquette V2 complète, réduite : une très longue colonne de sections colorées.

Faites défiler : la maquette V2 scindée (13 605 px), réduite à 25 %.

28

écrans de scroll, sans indicateur de progression ; une nav d'ancres non sticky, libellée en vocabulaire interne.

73 %

du scroll avant « Maintenant que vous savez où l'on va » — la phrase arrive après ce qu'elle annonce.

87 %

du texte incliné (126 nœuds sur 145) : il ne reste aucune zone de lecture droite.

39 %

du texte de la page occupé par les deux mêmes sponsors, répétés sur les 14 cartes.

2,81:1

blanc sur turquoise : échoue même en gros texte.

#33AAAC
2,13:1

le CTA « Notre Vision ici », blanc sur vert pomme.

#9EBE38
Décisions

Cinq arbitrages, dans l'ordre où ils ont été pris

  1. Deux pages au lieu d'une

    La page existante garde la narration (vidéo, vision, engagements, brochure) ; une page dédiée porte les ambitions et les 14 programmes. La maquette passe de 24 990 à 13 605 px, la narration inversée et la double présentation des ambitions disparaissent d'elles-mêmes.

  2. Trois pistes, chiffrées avant d'être dessinées

    Plateau, chapitres, main de cartes : chaque proposition est passée en filaire sur les 6 ambitions (18 écrans), puis jaugée côté LumApps — faisabilité, mode d'intégration, charge, risque.

  3. Un scroll, un écran

    La landing revue tient en six écrans calés au défilement, chacun à la hauteur exacte de la fenêtre. Tous les textes sont conservés mot pour mot ; la page est trois fois plus courte.

  4. Une popin par ambition, la fiche dessous

    Ouvrir un programme ne remplace pas la vue : la fiche se déplie sous les cartes de son ambition, sans perdre le contexte. Sept blocs articulés, servis pour les 14 programmes.

  5. Un gabarit, pas quatorze images

    Bibliothèque atomique dans Figma et en code, en deux fidélités (filaire / couleur). Les fiches s'obtiennent en instanciant un gabarit et en changeant des données.

Exploration

Trois expériences, une seule retenue

Aucune n'est bloquée par la plateforme. Ce qui les départage, c'est le coût de l'accessibilité et de la déclinaison mobile — un arbitrage de budget, pas de faisabilité.

Retenue · base du parcours

A — Le plateau

Les 6 ambitions posées sur un plan ; on entre dans une ambition, on en ouvre les programmes. Simplifiée en popin par ambition pour tenir le clavier et le mobile.

Technique
dialog natif, GSAP
Charge
18 – 27 j
Risque
élevé, réduit par la popin
Piste B

B — Les 6 chapitres

Un rail horizontal piloté au scroll, un chapitre par ambition. La moins risquée, mais elle capte le défilement de la page.

Technique
ScrollTrigger pin + scrub
Charge
12 – 18 j
Risque
faible
Piste C

C — La main de cartes

Les 14 programmes en éventail, redistribués au filtre, avec un compteur « 3 / 14 ouverts » qui ne tient que par navigateur.

Technique
GSAP Flip, localStorage
Charge
15 – 22 j
Risque
moyen

Charges front indicatives, socle commun de 8 – 12 j inclus, sur une échelle de 0 à 30 jours. Pré-jauge, pas un chiffrage contractuel.

Le parcours

Entrer, choisir une ambition, ouvrir un programme

Trois niveaux, toujours dans le même écran : on ne quitte jamais la vue des six ambitions, et on sait à chaque instant où l'on est. Prototype filaire, iso à la maquette, testé sur le tenant LumApps.

Les 6 cartes d'ambition. Compactes au repos, le détail (« Oui mais comment ? » et les puces) prend la place de l'illustration au survol et au focus — la grille ne bouge pas.
Du filaire à l'interface

La structure validée ne bouge pas, le graphisme s'y pose

Même lucarne de 1 440 × 800, même grille, mêmes composants : la version couleur reprend l'univers de la maquette — aplats vert et cyan, papier déchiré, scotchs — sur l'ossature du filaire. Glissez pour comparer.

Écran d'entrée, version couleur. Écran d'entrée, version filaire.
FilaireCouleur
Maquette V2 d'origine, pleine page.
13 605 pxMaquette V2 scindée
Landing revue en filaire, six sections.
6 × 900 pxLanding revue, un écran par section
La landing revue

Trois fois moins de scroll, pas un mot de moins

  • Les 24 blocs de texte conservés mot pour mot ; le seul texte ajouté est signalé.
  • Le texte passe à côté du graphisme plutôt que dessous, les 4 engagements en grille 2 × 2.
  • Les 8 zones de collage gardent une réserve dimensionnée : c'est elle qui fixe la place laissée au graphiste.
  • Calage en CSS (scroll-snap), qui tient même sans script ; il cède volontairement sous 1 000 px de large.

Les hauteurs des deux aperçus sont à l'échelle l'une de l'autre.

Les fiches programmes

Quatorze programmes, un seul gabarit

Chaque fiche reprend le modèle « fiche animaux » de la maquette : bandeau du programme, totem, mission et objectifs en cartes de papier, vidéo, porteurs. La couleur suit l'ambition de rattachement.

PST 04Entreprises et entrepreneurs
PST 05Retraite et santé
PST 06Conquête par l'assurance
PST 07Business partner
PST 08Synergies groupe
PST 09Développement au-delà du groupe
PST 10Prévention
PST 11Utilité dans les territoires
PST 12Entreprise commune
PST 13Efficacité collective
PST 14Performance SI
Fiche Assureur principal, mise en page mission et objectifs d'abord.
Mise en page 1 — mission et objectifs d'abord.
Fiche Assureur principal, la vidéo d'abord.
Mise en page 2 — la vidéo d'abord.
Fiche Assureur principal, variante resserrée.
Mise en page 3 — variante resserrée.

Trois mises en page de la même fiche, soumises à l'arbitrage du client.

Design system

Le socle qui fait tenir les quatorze fiches

Fondations, atomes, molécules, organismes et gabarits, construits dans Figma et réécrits à l'identique en CSS — mêmes noms des deux côtés, pour qu'un écran se lise pareil dans le fichier et dans le code. Chaque gabarit porte une variante « Fidélité » : filaire pour valider la structure, couleur pour l'interface.

Planche des fondations : couleurs, échelle typographique, espacements.
Planche des atomes : étiquettes, pastilles, boutons, liens fléchés.
Atomes — étiquette, pastille, badge, bouton, lien fléché, numéro cerclé, avatar.
Planche des molécules : titres de bloc, porteurs, bandeaux d'ambition.
Molécules — titre ruban, porteur, jalon, bandeau d'ambition, pied de carte.
74variables Figma en 3 collections : primitives 21, dimensions 31, couleur 22
48styles de texte
36composants en code, scopés sous .fd
2fidélités par gabarit : filaire et couleur
#006A4E #009597 #ED6842 #9EBE38 #1B1B1B #F7F8FA
Spécifications front

Ce qu'il faut savoir pour l'intégrer, et le maintenir

Un bloc autonome, sans framework ni backend, collé dans un widget HTML LumApps. Tout ce qui suit a été éprouvé sur un tenant LumApps de test, avec les pièges qu'il a révélés.

Architecture

Page LumApps (MyPlace)

  • SPA, jamais rechargée
  • chrome fixe ≈ 116 px
  • Piano, Pendo, Datadog RUM
  • widget « liste de contenus » marqué fd-source

Bloc Façonner Demain

  • un <style> + un <script>, scopés sous #fd-root / .fd
  • images en data URI ou URL de médiathèque
  • popin en <dialog> natif, ancré par MutationObserver
  • contenu lu dans la page, repli sur données embarquées

Page LumApps du PST

  • une page par programme
  • bloc fiche-pst-lumapps.html
  • seul réglage : data-pst="04"

Le mode micro-app en iframe hébergée reste le repli documenté si l'éditeur LumApps réécrit le bloc : il isole le code de l'éditeur, au prix d'un pont postMessage pour l'URL et la mesure.

Stack

HTML5CSS natifJavaScript vanillaGSAP 3.12.5ScrollTriggerPython (build)WebP
  • Aucun framework, aucun appel serveur, aucune clé d'API.
  • GSAP chargé depuis cdnjs ; si la page hôte l'a déjà, le sien est réutilisé.
  • Polices Poppins et Montserrat, déjà servies par le site : le bloc n'en charge aucune.
  • build-widget.py assemble les sources en blocs collables *-lumapps.html, seuls fichiers à livrer.

Mise en page et responsive

  • Requêtes de conteneur, pas de @media : le bloc vit dans une colonne de gabarit de largeur inconnue. 3 colonnes jusqu'à 780 px de widget, 2 en dessous, 1 sous 520 px.
  • Carte en container-type: inline-size, tailles en cqi : le contenu suit la largeur de sa case (titre de 15 à 22 px).
  • Grille des ambitions tenue à 1 085 px, fond et grain bord à bord.
  • Six écrans en scroll-snap-type: y mandatory, hauteur calc(100dvh - 116px) sous le chrome MyPlace.

Animations

  • Révélations au masque : titres ligne par ligne derrière un cache (yPercent 110 → 0), réserves graphiques découvertes en clip-path.
  • Parallaxe pilotée par la position : le script n'écrit que --par (−1 → 0 → 1) sur les écrans voisins, une fois par image ; tout le mouvement est en CSS, donc réversible à la remontée.
  • Amplitudes faibles (14 à 54 px). Une parallaxe qui se remarque est une parallaxe ratée.
  • Règle à tenir : aucune couche de parallaxe sur un élément que GSAP anime. GSAP absorbe translate, rotate et scale et les remet à none en ligne — la règle CSS meurt en silence.
  • prefers-reduced-motion respecté partout ; document masqué (onglet en arrière-plan) rendu directement dans son état final.
  • Uniquement transform, opacity et clip-path ; jamais top, left ni width.
/* extrait de landing-b1.css : le script ne pose que --par, tout le mouvement est ici */
#fdl[data-par="1"] .fdl__ecran::before {   /* le grain, le plus loin */
  transform: translate3d(0, calc(var(--par, 0) * 22px), 0) scale(1.06);
}
#fdl[data-par="1"] .fd-visuel img {         /* les illustrations, à contresens */
  transform: translate3d(0, calc(var(--par, 0) * -54px), 0);
}
#fdl[data-par="1"] .b1__h1 .fdl__ligne {   /* le cache de ligne, hors de portée de GSAP */
  translate: calc(var(--par, 0) * 76px) 0;
}

Contenu éditable par le client

À chaque ouverture, la popin relit un widget « liste de contenus » de la page. Le contrat est éditorial : un titre de contenu qui contient le numéro du programme.

PST 04 — Entreprises et entrepreneurs
  • Liste absente : repli sur les 14 PST embarqués, signalé par un témoin.
  • Liste partielle : chaque PST trouvé vient de LumApps, les autres du repli.
  • Porteurs affichés seulement s'ils sont renseignés — pas de faux nom.

Pièges LumApps relevés

  • Les classes saisies dans l'éditeur sont préfixées (fd-source → component-row--fd-source) : sélecteur en « contient ».
  • L'éditeur supprime les éléments vides : l'ancrage est <div id="fd-entree"><br></div>.
  • Les règles !important du tenant battent tout sélecteur : masquage de la navigation en style en ligne, restitué à l'identique.
  • <meta charset="utf-8"> en première ligne de chaque bloc, sinon mojibake.

Accessibilité — cible WCAG 2.2 AA

  • Popin : <dialog> modal, piège de focus, fermeture Échap et croix visible, focus rendu à la carte d'origine.
  • Navigation clavier entre ambitions (← →), détail des cartes ouvert aussi au :focus-within.
  • Texte de contenu à 0°, inclinaison réservée aux objets décoratifs.
  • Couples de contraste hors AA à corriger dans la maquette avant intégration ; « Découvrir la fiche » en vrais <button>.
  • Jamais de rotation CSS sur un cadre vidéo : elle casse le plein écran natif.

Budget de performance

VagueContenuCible
1 · coquilleHTML, CSS critique, premier écran< 150 Ko
2 · expérienceGSAP + 1 plugin, visuels< 600 Ko
3 · à la demandelecteurs vidéo (façade, un seul vivant)0 Ko avant clic

Images de la maquette : 22 Mo de PNG ramenés à 511 Ko de WebP. Bloc couleur ≈ 500 Ko en data URI, ≈ 50 Ko une fois les images en médiathèque.

Livrables

FichierRôleOù
landing-lumapps.htmlLa landing entière, six écrans, animations GSAPwidget HTML, page mère
widget-lumapps.htmlLes 6 ambitions et leur popin, seuleswidget HTML, page dédiée
fiche-pst-lumapps.htmlLa fiche d'un programme, réglée par data-pstune page par PST
composants.html · fd-composants.cssPlanche et feuille de la bibliothèque (36 composants)référence d'intégration
build-widget.pyAssemble les blocs collables depuis une source uniqueposte de travail
Figma « Façonner demain V2 »Filaires, concept couleur, DS · Fondations, DS · Kit UIréférence design
État du projet

Livré en prototype, en attente des arbitrages client

La structure, le prototype intégré et le design system sont prêts. Ce qui reste dépend surtout de contenus et de décisions côté CA Assurances.