## Résumé

Ajoute le **tracking dataLayer GTM** sur les 4 formulaires du site, déclenché **uniquement à l'envoi réussi** (jamais au clic, jamais sur validation échouée, jamais sur erreur HubSpot). GTM mappe ensuite chaque event vers GA4 / Google Ads.

### Ce que ça fait
- **Conteneur GTM** (`GTM-K2Q2NXS`) chargé dans `app/layout.tsx`, sur tous les environnements (prod + preview). Surchargeable via `NEXT_PUBLIC_GTM_ID`. ID public, pas un secret.
- **Helper `src/lib/dataLayer.ts`** : `pushFormSubmit(event, formName)` — initialisation défensive du `dataLayer`, push de `{ event, form_name, form_location }`. **Aucune donnée perso** (pas d'e-mail, pas de téléphone).
- Branchement dans chaque formulaire au moment du succès :

| Formulaire | Event | `form_name` |
|---|---|---|
| Diagnostic | `form_diagnostic_submit` | `diagnostic` |
| Contact | `form_contact_submit` | `contact` |
| Applicateur | `form_applicateur_submit` | `applicateur` |
| Guide / livre blanc | `form_guide_submit` | `guide` |

### Fichiers
- `app/layout.tsx` — snippet GTM (`<head>` + `<noscript>`)
- `src/lib/dataLayer.ts` (+ `dataLayer.test.ts`)
- `src/components/{contact,diagnostic,applicateur}/*Form.tsx`, `src/components/lead/LeadCaptureForm.tsx`, `src/views/GuideCoolRoof.tsx`

## Test plan
- [ ] Ouvrir la preview, F12 → Console, soumettre chaque formulaire avec des données valides
- [ ] Vérifier qu'un push `{ event: "form_*_submit", form_name, form_location }` apparaît dans `window.dataLayer` **au succès uniquement**
- [ ] Vérifier qu'un envoi en échec (HubSpot KO / validation) **ne pousse aucun event**
- [ ] (Option) GTM Preview / Tag Assistant sur le conteneur `GTM-K2Q2NXS` : voir les events tomber + le déclenchement des balises GA4 / Google Ads
- [ ] `npm test` (test unitaire `dataLayer.test.ts`)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
