Cliquer un produit ouvre desormais une modale au-dessus de la grille (paradigme
maquette : ecran de commande unique + modales) au lieu de naviguer vers product.html.
Menu -> composeur (L2) ; produit simple -> modale quantite+ajout. A l'ajout, le
panneau de commande persistant (L1) est re-rendu : la commande se met a jour sans
navigation. product.html reste un repli (lien direct).
- product-options.js : modale (image, prix unitaire, stepper quantite, total) ;
productCartItem pur ; a11y (role=dialog, focus-trap, ESC, fond aria-hidden,
overflow restaure, aria-live sur quantite ET total).
- page-products.js : clic carte -> modale (preventDefault sur le <a>) ; bouton 'i'
allergenes garde son stopPropagation.
- style.css : .product-options + .qty-control (reutilise .qty-btn/.qty-value).
- tests : product-options.test.js (productCartItem + rendu/stepper/ajout). 56/56 verts.
Taille 30/50Cl de la maquette differee : absente du modele produit (un seul
price_cents) -> necessitera des variantes produit cote API.
Revue adversariale : 1 finding MEDIUM (aria-live du total) corrige.