PR-C du lot P3. Icone "i" allergenes sur la borne ouvrant une modale GENERALE
listant les 14 allergenes a declaration obligatoire (UE INCO 1169/2011). Info
generale, PAS un calcul par produit (mapping ingredient_allergen reste differe).
- data/allergens.json : les 14 INCO (liste fixe data borne). loadAllergens()
ajoute a data.js avec point de swap P4 documente (-> /api/allergens).
- allergens.js : module CSP-safe (DOM API, aucun handler inline). buildAllergenInfoButton
(bouton "i", stopPropagation sur la carte), openAllergenModal (idempotent),
fermeture par bouton / clic overlay / touche Echap.
- Integration : carte produit (page-products.js) ET fiche produit simple
(page-product.js) ; CSS modale + badge reutilisant le pattern overlay du composer.
Harnais de tests front (premier du depot) : node:test + jsdom. tests/js/allergens.test.js
couvre les 14 INCO, la construction du bouton, l'ouverture/listing/fermeture et
l'idempotence (7 tests). Scoping ESM local (src/public/borne/assets/js + tests/js)
pour garder la racine en CommonJS (hooks, _byan, bin inchanges). Job CI js-tests
(Node 20 epingle) ajoute aux checks requis de l'auto-merge.