# Birdwants — contexte projet

## Nature du projet
Site vitrine statique pour un consultant indépendant en confidentialité
et souveraineté numérique (profil DPO non-juriste), ciblant les cabinets
et professions soumises au secret professionnel. Déployé sur Surge.sh.

## Contraintes non négociables — ne jamais enfreindre sans validation explicite
- Zéro cookie, zéro tracker, zéro script tiers. C'est une promesse commerciale
  du site, pas une préférence technique.
- Pas de framework JS. Alpine.js est la seule dépendance JS autorisée,
  utilisée pour des interactions UI ponctuelles (theme switcher, etc.).
- Pas de bundler, pas de build step, pas d'ajout de dépendance npm sans
  demande explicite et validation préalable.
- HTML/CSS pur en priorité. Toute solution alternative (framework CSS,
  librairie tierce) doit être proposée en Plan Mode et validée avant
  implémentation, jamais introduite directement.

## Stack actuelle
- HTML/CSS + Alpine.js
- Méthodologie BEM
- CSS custom properties pour les tokens (couleurs, espacements, typographie)
- Polices auto-hébergées (woff2)
- Persistance du thème via localStorage

## Cible d'accessibilité
WCAG 2.1 niveau AA. Points d'attention prioritaires : contraste (4.5:1
texte courant, 3:1 texte large/UI), navigation clavier complète, focus
visible, structure sémantique (landmarks, hiérarchie des titres),
attributs alt pertinents.

## Exceptions BEM documentées
La méthodologie BEM (`Block__Element--Modifier`) est la règle par défaut.
Les classes suivantes en sont volontairement exclues, car leur usage est
transverse à plusieurs blocs et ne correspond à aucun élément unique :
- `.text-link` (`base/_base.css`) — style de lien inline réutilisé dans des
  paragraphes de blocs différents (`.contact__card-body`, `.legal-page`, etc.).
- `.acronym` (`base/_base.css`) — même logique, utilitaire de mise en forme
  inline indépendant du bloc qui l'entoure.

Toute nouvelle classe candidate à ce statut doit être proposée en Plan Mode
avant d'être ajoutée à cette liste, pas introduite directement comme exception.

## Processus de travail attendu
- Toujours passer par le Plan Mode avant toute édition. Le plan doit lister
  les fichiers concernés, les opérations précises par fichier, et l'ordre
  d'exécution — pas de description vague du type "je vais nettoyer le CSS".
- Travailler par lots restreints (page ou composant), jamais un refactor
  global en une seule passe.
- Ne jamais modifier le contenu texte des pages (copy). Le CSS/HTML de
  structure oui, le texte non — même en cas de contrainte de mise en page
  mobile. Signaler le problème plutôt que raccourcir un texte de soi-même.
- Si l'exécution diverge du plan validé, s'arrêter et signaler plutôt que
  d'improviser.
 # corriger labsence de retour à la ligne final
git mv claude.md TEMP.md && git mv TEMP.md CLAUDE.md   # corriger la casse (nécessaire sur macOS)
git add .gitignore CLAUDE.md
git commit -m "baseline: gitignore ajusté + CLAUDE.md (casse corrigée)"
git status                       # doit afficher "working tree clean"


exit
quite


