···731731 // ── Step 6: Ingredients ──────────────────────────────────────────
732732733733 renderIngredientsStep(flow) {
734734+ // Restore products to pre-ingredient-filter state when re-entering this step
735735+ if (this.state.productsBeforeIngredientFilter) {
736736+ this.state.recommendedProducts = [
737737+ ...this.state.productsBeforeIngredientFilter,
738738+ ];
739739+ this.state.productsBeforeIngredientFilter = null;
740740+ }
741741+734742 // If health conditions wiped out all products, show an error and let
735743 // the user go back to health conditions with a clean slate.
736744 if (this.state.recommendedProducts.length === 0) {
···10431051 const { total, kcal } = calculateRDA(catWeight, activity, coef);
10441052 this.state.calculatedRDA = total;
10451053 this.state.kcal = kcal;
10541054+10551055+ // Snapshot products before ingredient filter so we can restore on back navigation
10561056+ this.state.productsBeforeIngredientFilter = [
10571057+ ...this.state.recommendedProducts,
10581058+ ];
1046105910471060 // Filter out products containing any unwanted ingredients
10481061 if (this.state.unwantedIngredients.length > 0) {