Personalized recipes, real ingredient costs, and exactly how much you save every time.
🍽
Customized recipes built to your taste
📋
Full cost breakdown — every ingredient
💰
See your savings vs dining out, every meal
✏️
Adjust any recipe or build your own
Skip for now — just browse
✏️ Build Your Recipe
Item
Qty
Unit
Cost $
🏠 Home
$0.00
VS
🍽 Restaurant
$0.00
💰 You save$0.00
👨🍳
ChefSays.ai
Your personal kitchen companion
🍽
Customized Recipes
Built to your taste, servings & dietary needs.
📋
Full Cost Breakdown
Every ingredient priced line by line. Real numbers.
🏪
vs. Restaurant Price
See exactly what it costs if you ordered out instead.
💰
Money Back in Your Pocket
Your actual savings, clearly shown every time.
Free to start · $6.99/month for full access
👨🍳
ChefSays.ai
Recipe · Cost · Savings
Live
📚
My Cookbook
0 saved recipes
💰
My Savings
0 meals logged
⚙️
Account
chefsaysai@gmail.com
Log Meal
Saved by cooking at home
start:{msg:"Welcome to ChefSays.\n\nI'll build you a complete recipe with a full cost breakdown and exactly how much you save versus dining out.\n\nHow many people are we cooking for?",choices:[{l:"🙋 Just me",n:"cuisine"},{l:"👫 2 people",n:"cuisine"},{l:"👨👩👧 4 people",n:"cuisine"},{l:"👨👩👧👦 6 people",n:"cuisine"},{l:"🎉 10–20 people",n:"cuisine"},{l:"🏢 50+ catering",n:"cuisine"}]},
cuisine:{msg:"Perfect. What are you in the mood for?",choices:[{l:"🥗 Something healthy",n:"health_cat"},{l:"🍗 Chicken",n:"chicken_style"},{l:"🍝 Pasta",n:"pasta_style"},{l:"🌮 Tacos",n:"taco_style"},{l:"🐟 Salmon",n:"salmon_style"},{l:"🍔 Burgers",n:"burger_style"},{l:"🥩 BBQ / Brisket",n:"brisket_style"},{l:"🥢 Stir Fry",n:"stirfry_style"},{l:"🎲 Surprise me",r:"surprise"}]},
health_cat:{msg:"Great choice. Which direction?",choices:[{l:"🥗 Fresh Salads",n:"salads"},{l:"🥙 Protein Bowls",n:"bowls"},{l:"🥤 Smoothies",n:"smoothies"},{l:"🥦 Low-Carb / Keto",n:"lowcarb"},{l:"🌱 Vegan",n:"vegan"},{l:"💪 High Protein",n:"highprotein"}]},
chicken_style:{msg:"How would you like it?",choices:[{l:"🍛 Butter Chicken",r:"butter_chicken"},{l:"🔥 Grilled Herb Chicken",r:"grilled_chicken"},{l:"🍝 Creamy Garlic Pasta",r:"chicken_pasta"},{l:"🍗 Crispy Fried Chicken",r:"fried_chicken"},{l:"🥢 Chicken Stir Fry",r:"chicken_stirfry"}]},
pasta_style:{msg:"What pasta dish?",choices:[{l:"🥚 Carbonara",r:"carbonara"},{l:"🍅 Marinara",r:"marinara"},{l:"🤍 Creamy Alfredo",r:"alfredo"},{l:"🌿 Pesto",r:"pesto_pasta"},{l:"🥩 Bolognese",r:"bolognese"}]},
taco_style:{msg:"What filling?",choices:[{l:"🍗 Chicken Tacos",r:"chicken_tacos"},{l:"🦐 Shrimp Tacos",r:"shrimp_tacos"},{l:"🥩 Beef Tacos",r:"beef_tacos"},{l:"🐟 Fish Tacos",r:"fish_tacos"},{l:"🌱 Vegan Black Bean",r:"vegan_tacos"}]},
salmon_style:{msg:"How cooked?",choices:[{l:"🍳 Pan-seared butter",r:"pan_salmon"},{l:"🍋 Baked lemon & dill",r:"baked_salmon"},{l:"🫙 Teriyaki glazed",r:"teriyaki_salmon"},{l:"🍯 Honey garlic",r:"honey_salmon"}]},
burger_style:{msg:"What style?",choices:[{l:"🍔 Classic Smash Burger",r:"smash_burger"},{l:"🥓 BBQ Bacon Burger",r:"bbq_burger"},{l:"🍄 Mushroom Swiss",r:"mushroom_burger"},{l:"🦃 Turkey Burger",r:"turkey_burger"}]},
brisket_style:{msg:"How are you cooking it?",choices:[{l:"♨️ Oven-braised",r:"oven_brisket"},{l:"🍲 Slow cooker",r:"slow_brisket"},{l:"🔥 BBQ smoked",r:"bbq_brisket"}]},
stirfry_style:{msg:"What protein?",choices:[{l:"🍗 Chicken",r:"chicken_stirfry"},{l:"🥩 Beef",r:"beef_stirfry"},{l:"🦐 Shrimp",r:"shrimp_stirfry"},{l:"🥦 Veggie",r:"veggie_stirfry"}]},
salads:{msg:"Pick your salad:",choices:[{l:"🐟 Salmon Power Salad",r:"salmon_salad"},{l:"🫙 Quinoa Greek Salad",r:"quinoa_salad"},{l:"🥬 Asian Kale Crunch",r:"kale_salad"},{l:"🥗 Classic Caesar",r:"caesar"}]},
bowls:{msg:"Pick your bowl:",choices:[{l:"🍗 Chicken Burrito Bowl",r:"burrito_bowl"},{l:"🐟 Salmon & Quinoa Bowl",r:"salmon_bowl"},{l:"🥩 Steak & Veggie Bowl",r:"steak_bowl"},{l:"🫐 Açaí Smoothie Bowl",r:"acai_bowl"}]},
smoothies:{msg:"Pick your smoothie:",choices:[{l:"🥬 Green Power",r:"green_smoothie"},{l:"🫐 Berry Protein",r:"berry_smoothie"},{l:"🥭 Tropical Mango",r:"mango_smoothie"},{l:"🥜 PB Banana",r:"pb_smoothie"}]},
lowcarb:{msg:"Pick your low-carb meal:",choices:[{l:"🦐 Garlic Butter Shrimp & Asparagus",r:"shrimp_asparagus"},{l:"🌿 Zucchini Noodles Pesto Chicken",r:"zoodles"},{l:"🥦 Cauliflower Fried Rice",r:"cauli_rice"},{l:"🥩 Keto Steak & Eggs",r:"steak_eggs"}]},
vegan:{msg:"Pick your vegan dish:",choices:[{l:"🍛 Chickpea Tikka Masala",r:"chickpea_tikka"},{l:"🍲 Lentil Sweet Potato Soup",r:"lentil_soup"},{l:"🌮 Black Bean Tacos",r:"vegan_tacos"},{l:"🥢 Crispy Tofu Stir Fry",r:"tofu_stirfry"}]},
highprotein:{msg:"Pick your high-protein meal:",choices:[{l:"🍗 Grilled Chicken Thighs",r:"grilled_chicken"},{l:"🐟 Baked Salmon & Broccoli",r:"baked_salmon"},{l:"🦃 Ground Turkey Meal Prep",r:"turkey_prep"},{l:"🥚 Egg White Omelette",r:"egg_omelette"}]},
};
const R = {
butter_chicken:{name:"Butter Chicken",desc:"A rich, velvety classic that tastes like it came from a restaurant.",steps:["Marinate chicken in yogurt & spices for 30 min.","Sear chicken in hot pan until golden, set aside.","Sauté onion, garlic & ginger until soft.","Add tomato paste, cream & spices, simmer 10 min.","Return chicken, simmer 15 min more.","Finish with butter, garnish with cilantro."],tip:"The heavy cream is non-negotiable — it's what gives it that restaurant depth.",ings:[{n:"Chicken thighs",q:2,u:"lbs",c:5},{n:"Heavy cream",q:1,u:"pint",c:3},{n:"Tomato paste",q:3,u:"tbsp",c:0.75},{n:"Butter",q:3,u:"tbsp",c:0.9},{n:"Onion",q:1,u:"ea",c:0.75},{n:"Garlic",q:4,u:"cloves",c:0.5},{n:"Ginger",q:1,u:"use",c:0.5},{n:"Garam masala & spices",q:1,u:"use",c:0.75},{n:"Greek yogurt",q:0.5,u:"cup",c:0.8}]},
grilled_chicken:{name:"Grilled Herb Chicken",desc:"Simple, clean, and packed with flavor.",steps:["Mix olive oil, lemon, garlic & herbs.","Coat chicken and marinate 20 min.","Preheat grill or pan to medium-high.","Cook 6–7 min per side until 165°F internal.","Rest 5 min before slicing."],tip:"Let it rest — cutting too early loses all the juices.",ings:[{n:"Chicken thighs",q:2,u:"lbs",c:5},{n:"Olive oil",q:2,u:"tbsp",c:0.5},{n:"Garlic",q:3,u:"cloves",c:0.5},{n:"Lemon",q:1,u:"ea",c:0.5},{n:"Fresh herbs",q:1,u:"bunch",c:2},{n:"Spice blend",q:1,u:"use",c:0.75}]},
chicken_pasta:{name:"Creamy Garlic Chicken Pasta",desc:"Comfort food done in 30 minutes.",steps:["Cook pasta al dente, reserve 1 cup pasta water.","Season and sear chicken until golden, slice.","Sauté garlic in butter 1 min.","Add cream, bring to simmer, season well.","Toss pasta in sauce, add chicken.","Use pasta water to adjust consistency."],tip:"Reserved pasta water is starchy gold — makes the sauce cling perfectly.",ings:[{n:"Chicken breast",q:1,u:"lb",c:4},{n:"Pasta",q:0.75,u:"lb",c:1.12},{n:"Heavy cream",q:1,u:"pint",c:3},{n:"Butter",q:2,u:"tbsp",c:0.6},{n:"Garlic",q:5,u:"cloves",c:0.6},{n:"Parmesan",q:3,u:"oz",c:1.5},{n:"Spices",q:1,u:"use",c:0.5}]},
fried_chicken:{name:"Crispy Fried Chicken",desc:"Golden, crunchy outside. Juicy inside.",steps:["Brine chicken in buttermilk & salt 4 hours minimum.","Mix flour with paprika, garlic powder, cayenne.","Dredge chicken, shake off, dredge again.","Fry at 340°F for 12–15 min until golden.","Drain on rack, not paper towels."],tip:"Double-dredging creates that thick, craggy restaurant crust.",ings:[{n:"Chicken pieces",q:3,u:"lbs",c:7.5},{n:"Buttermilk",q:2,u:"cups",c:1.5},{n:"All-purpose flour",q:2,u:"cups",c:0.6},{n:"Spice blend",q:1,u:"use",c:0.75},{n:"Frying oil",q:1,u:"use",c:1.5}]},
chicken_stirfry:{name:"Chicken Stir Fry",desc:"Fast, healthy, and better than takeout.",steps:["Slice chicken thin, marinate in soy & cornstarch.","Prep all vegetables before starting.","High heat, sear chicken 3–4 min, remove.","Stir fry vegetables 3 min.","Return chicken, add sauce, toss.","Serve over rice immediately."],tip:"If your pan isn't smoking, it's not hot enough.",ings:[{n:"Chicken breast",q:1.5,u:"lbs",c:6},{n:"Bell peppers",q:2,u:"ea",c:2.5},{n:"Broccoli",q:1,u:"head",c:2},{n:"Soy sauce",q:3,u:"tbsp",c:0.5},{n:"Sesame oil & ginger",q:1,u:"use",c:0.75},{n:"Cornstarch",q:1,u:"tbsp",c:0.2},{n:"Garlic",q:3,u:"cloves",c:0.5}]},
carbonara:{name:"Spaghetti Carbonara",desc:"Silky, rich, authentic Roman style — zero cream.",steps:["Cook spaghetti in well-salted water al dente.","Render guanciale or pancetta until crispy.","Whisk eggs, pecorino, and black pepper together.","Remove pan from heat completely.","Add pasta, then egg mixture, tossing quickly.","Add pasta water slowly for silky sauce."],tip:"Never add eggs over heat — you'll get scrambled eggs, not carbonara.",ings:[{n:"Spaghetti",q:0.75,u:"lb",c:1.12},{n:"Guanciale or pancetta",q:6,u:"oz",c:4},{n:"Eggs",q:4,u:"ea",c:1.33},{n:"Pecorino Romano",q:3,u:"oz",c:2},{n:"Black pepper",q:1,u:"use",c:0.25}]},
marinara:{name:"Pasta Marinara",desc:"Simple done perfectly. The best tomatoes, good olive oil, fresh basil.",steps:["Simmer garlic in olive oil 2 min.","Add crushed tomatoes, season well.","Simmer 20 minutes.","Cook pasta al dente, reserve pasta water.","Toss pasta directly in sauce.","Finish with fresh basil and olive oil."],tip:"Use San Marzano tomatoes — the difference is night and day.",ings:[{n:"Spaghetti or rigatoni",q:0.75,u:"lb",c:1.12},{n:"Crushed San Marzano tomatoes",q:1,u:"can",c:2.5},{n:"Garlic",q:5,u:"cloves",c:0.6},{n:"Olive oil",q:3,u:"tbsp",c:0.75},{n:"Fresh basil",q:1,u:"bunch",c:2}]},
alfredo:{name:"Fettuccine Alfredo",desc:"Luscious, buttery, and deeply satisfying.",steps:["Cook fettuccine al dente, reserve 1 cup pasta water.","Melt butter over low heat in large pan.","Add heavy cream, bring to gentle simmer.","Add parmesan gradually, stirring constantly.","Add pasta and pasta water to loosen.","Season with nutmeg, salt, white pepper."],tip:"Low heat is key — high heat breaks the sauce.",ings:[{n:"Fettuccine",q:0.75,u:"lb",c:1.12},{n:"Butter",q:4,u:"tbsp",c:1.2},{n:"Heavy cream",q:1,u:"pint",c:3},{n:"Parmesan",q:4,u:"oz",c:2},{n:"Nutmeg",q:1,u:"pinch",c:0.1}]},
pesto_pasta:{name:"Pesto Pasta with Cherry Tomatoes",desc:"Bright, herby, and ready in under 20 minutes.",steps:["Cook pasta al dente, reserve pasta water.","Blend basil, pine nuts, parmesan, garlic, olive oil.","Season pesto with salt and lemon.","Toss warm pasta with pesto.","Fold in cherry tomatoes.","Serve with extra parmesan."],tip:"Never heat pesto directly — kills the color and turns it brown.",ings:[{n:"Pasta",q:0.75,u:"lb",c:1.12},{n:"Fresh basil",q:2,u:"bunches",c:4},{n:"Pine nuts",q:0.25,u:"cup",c:2.5},{n:"Parmesan",q:3,u:"oz",c:1.5},{n:"Garlic",q:2,u:"cloves",c:0.35},{n:"Olive oil",q:0.25,u:"cup",c:1},{n:"Cherry tomatoes",q:0.5,u:"lb",c:2}]},
bolognese:{name:"Beef Bolognese",desc:"A proper slow-cooked meat sauce.",steps:["Sauté onion, carrot, celery until soft.","Brown ground beef well — don't rush.","Add tomato paste, cook 2 min.","Pour in wine, let reduce completely.","Add crushed tomatoes and milk, simmer 1–2 hrs.","Toss with pasta, finish with parmesan."],tip:"Milk is the Italian secret — tenderizes the meat and rounds the acidity.",ings:[{n:"Ground beef",q:1.5,u:"lbs",c:7.5},{n:"Pasta",q:0.75,u:"lb",c:1.12},{n:"Crushed tomatoes",q:1,u:"can",c:1.5},{n:"Onion, carrot, celery",q:1,u:"use",c:1.5},{n:"Tomato paste",q:2,u:"tbsp",c:0.5},{n:"Red wine",q:0.5,u:"cup",c:1.5},{n:"Whole milk",q:0.5,u:"cup",c:0.4}]},
chicken_tacos:{name:"Chicken Street Tacos",desc:"Fast, flavorful, and endlessly satisfying.",steps:["Season chicken with cumin, chili powder, garlic powder.","Sear in hot pan 4–5 min per side until charred.","Rest and slice thin against the grain.","Warm tortillas on dry pan.","Build: chicken, onion, cilantro, lime."],tip:"Charring the chicken is what gives street tacos their flavor.",ings:[{n:"Chicken thighs",q:1.5,u:"lbs",c:3.75},{n:"Corn tortillas",q:12,u:"ea",c:2.5},{n:"White onion",q:1,u:"ea",c:0.75},{n:"Fresh cilantro",q:1,u:"bunch",c:2},{n:"Lime",q:3,u:"ea",c:1.5},{n:"Spice blend",q:1,u:"use",c:0.75}]},
shrimp_tacos:{name:"Shrimp Tacos with Slaw",desc:"Coastal flavors at home for a fraction of the price.",steps:["Season shrimp with chili powder, cumin, garlic.","Cook in hot pan 2 min per side.","Mix cabbage, lime, mayo, cilantro for slaw.","Warm flour tortillas.","Layer slaw, then shrimp.","Top with avocado and lime."],tip:"Shrimp overcooks in seconds — 2 minutes per side, that's it.",ings:[{n:"Large shrimp",q:1,u:"lb",c:10},{n:"Flour tortillas",q:8,u:"ea",c:2},{n:"Cabbage slaw mix",q:1,u:"bag",c:2.5},{n:"Avocado",q:1,u:"ea",c:1.5},{n:"Lime",q:2,u:"ea",c:1},{n:"Spices",q:1,u:"use",c:0.75},{n:"Mayo",q:2,u:"tbsp",c:0.3}]},
beef_tacos:{name:"Beef Tacos",desc:"Classic, simple, always a crowd-pleaser.",steps:["Brown ground beef in hot pan, drain fat.","Add taco seasoning and splash of water.","Simmer 5 min until fragrant.","Warm tortillas.","Build with beef, cheese, lettuce, tomato.","Add sour cream and salsa."],tip:"Use 80/20 ground beef — the fat carries the flavor.",ings:[{n:"Ground beef",q:1.5,u:"lbs",c:7.5},{n:"Corn tortillas",q:12,u:"ea",c:2.5},{n:"Shredded cheese",q:4,u:"oz",c:2},{n:"Taco seasoning",q:1,u:"use",c:0.75},{n:"Lettuce & tomato",q:1,u:"use",c:1.5},{n:"Sour cream",q:0.25,u:"cup",c:0.75}]},
fish_tacos:{name:"Crispy Fish Tacos",desc:"Light, crunchy, packed with fresh flavor.",steps:["Season cod with cumin, paprika, salt.","Dredge in flour, dip in egg, coat in panko.","Pan fry in oil 3–4 min per side until golden.","Mix slaw with lime and mayo.","Warm tortillas, build with slaw and fish.","Drizzle with chipotle mayo."],tip:"Panko breadcrumbs give a crunch that regular breadcrumbs can't match.",ings:[{n:"Cod fillets",q:1.5,u:"lbs",c:7.5},{n:"Panko breadcrumbs",q:1,u:"cup",c:1},{n:"Flour tortillas",q:8,u:"ea",c:2},{n:"Cabbage slaw mix",q:1,u:"bag",c:2.5},{n:"Lime",q:2,u:"ea",c:1},{n:"Spices & mayo",q:1,u:"use",c:1}]},
vegan_tacos:{name:"Black Bean Tacos",desc:"Hearty, flavorful, 100% plant-based.",steps:["Drain and rinse black beans.","Sauté with cumin, smoked paprika, lime.","Mash half the beans for texture.","Slice avocado, dice tomato, chop cilantro.","Warm corn tortillas on dry pan.","Build with beans, avocado, tomato, cilantro."],tip:"Smoked paprika transforms plain black beans into something special.",ings:[{n:"Black beans",q:2,u:"cans",c:2.5},{n:"Corn tortillas",q:12,u:"ea",c:2.5},{n:"Avocado",q:2,u:"ea",c:3},{n:"Cherry tomatoes",q:0.5,u:"lb",c:2},{n:"Lime & cilantro",q:1,u:"use",c:2.5},{n:"Spice blend",q:1,u:"use",c:0.75}]},
pan_salmon:{name:"Pan-Seared Salmon",desc:"Restaurant-quality in 15 minutes flat.",steps:["Pat salmon completely dry — critical for a crust.","Season generously with salt and pepper.","Heat pan until smoking, add oil.","Place salmon skin-side up, cook 4 min.","Flip, add butter, garlic, baste 3–4 min.","Rest 2 min before serving."],tip:"Dry fish + screaming hot pan = perfect crust. Every time.",ings:[{n:"Salmon fillets",q:1.5,u:"lbs",c:12},{n:"Butter",q:2,u:"tbsp",c:0.6},{n:"Garlic",q:3,u:"cloves",c:0.5},{n:"Lemon",q:1,u:"ea",c:0.5},{n:"Olive oil",q:1,u:"tbsp",c:0.25},{n:"Fresh dill",q:1,u:"use",c:1}]},
baked_salmon:{name:"Baked Lemon Dill Salmon",desc:"Clean, elegant, and effortless.",steps:["Preheat oven to 400°F.","Place salmon on lined baking sheet.","Mix butter, lemon zest, dill, garlic.","Spread generously over salmon.","Bake 12–15 min until just flaking.","Serve with roasted vegetables."],tip:"Pull it slightly before it looks done — carryover heat finishes it perfectly.",ings:[{n:"Salmon fillets",q:1.5,u:"lbs",c:12},{n:"Butter",q:3,u:"tbsp",c:0.9},{n:"Lemon",q:2,u:"ea",c:1},{n:"Fresh dill",q:1,u:"bunch",c:2},{n:"Garlic",q:2,u:"cloves",c:0.35},{n:"Broccoli",q:2,u:"heads",c:4}]},
teriyaki_salmon:{name:"Teriyaki Salmon",desc:"Sweet, savory glaze with a gorgeous lacquered finish.",steps:["Mix soy sauce, honey, mirin, garlic, ginger.","Marinate salmon 20 min minimum.","Sear salmon 3–4 min per side.","Pour remaining marinade in, reduce to glaze.","Spoon glaze over salmon continuously.","Serve over steamed rice with sesame."],tip:"The glaze should coat a spoon before you add the fish.",ings:[{n:"Salmon fillets",q:1.5,u:"lbs",c:12},{n:"Soy sauce",q:0.25,u:"cup",c:0.5},{n:"Honey",q:2,u:"tbsp",c:0.75},{n:"Garlic & ginger",q:1,u:"use",c:0.75},{n:"Sesame seeds",q:1,u:"tbsp",c:0.5},{n:"Rice",q:1,u:"cup",c:1}]},
honey_salmon:{name:"Honey Garlic Salmon",desc:"Five ingredients. Twenty minutes. Pure perfection.",steps:["Season salmon with salt and pepper.","Sear skin-side down in hot pan 4 min.","Flip, cook 3 more min.","Add butter, honey, garlic to pan.","Baste constantly for 2 min.","Squeeze fresh lemon to finish."],tip:"The honey caramelizes fast — watch it closely.",ings:[{n:"Salmon fillets",q:1.5,u:"lbs",c:12},{n:"Honey",q:3,u:"tbsp",c:1},{n:"Garlic",q:4,u:"cloves",c:0.5},{n:"Butter",q:2,u:"tbsp",c:0.6},{n:"Lemon",q:1,u:"ea",c:0.5}]},
smash_burger:{name:"Classic Smash Burger",desc:"Thin, crispy-edged, impossibly juicy.",steps:["Form beef into loose 2 oz balls — do not overwork.","Heat cast iron until smoking.","Place ball on pan, smash hard with spatula.","Season immediately, cook 2 min until edges crisp.","Add cheese, flip once, cook 1 min more.","Build on toasted bun with toppings."],tip:"The smash must happen in the first 30 seconds — after that, it won't stick.",ings:[{n:"80/20 ground beef",q:1.5,u:"lbs",c:7.5},{n:"American cheese",q:4,u:"slices",c:1},{n:"Brioche buns",q:4,u:"ea",c:3},{n:"Butter (for buns)",q:1,u:"tbsp",c:0.3},{n:"Lettuce, tomato, onion",q:1,u:"use",c:1.5},{n:"Pickles & condiments",q:1,u:"use",c:1}]},
bbq_burger:{name:"BBQ Bacon Burger",desc:"Smoky, bold, and indulgent.",steps:["Season beef patties, make thumb indent in center.","Cook bacon until crispy.","Grill patties 3–4 min per side.","Add cheese last minute, cover to melt.","Toast buns on the grill.","Layer with bacon, BBQ sauce, onion."],tip:"The thumb indent prevents the patty from puffing up.",ings:[{n:"Ground beef",q:1.5,u:"lbs",c:7.5},{n:"Bacon",q:8,u:"strips",c:3.5},{n:"Cheddar cheese",q:4,u:"slices",c:1.5},{n:"Brioche buns",q:4,u:"ea",c:3},{n:"BBQ sauce",q:0.25,u:"cup",c:1},{n:"Lettuce & tomato",q:1,u:"use",c:1.5}]},
mushroom_burger:{name:"Mushroom Swiss Burger",desc:"Earthy, savory, and deeply satisfying.",steps:["Sauté mushrooms in butter and thyme until golden.","Season patties, cook 3–4 min per side.","Add Swiss cheese, cover to melt.","Toast buns in the same pan.","Build with mushrooms, Swiss, and Dijon aioli."],tip:"Dry mushrooms before cooking or they steam instead of caramelize.",ings:[{n:"Ground beef",q:1.5,u:"lbs",c:7.5},{n:"Cremini mushrooms",q:0.5,u:"lb",c:2.5},{n:"Swiss cheese",q:4,u:"slices",c:2},{n:"Brioche buns",q:4,u:"ea",c:3},{n:"Butter & thyme",q:1,u:"use",c:1},{n:"Dijon aioli",q:1,u:"use",c:0.75}]},
turkey_burger:{name:"Turkey Burger",desc:"Lean, flavorful, and lighter than beef.",steps:["Mix turkey with garlic, Worcestershire, spices.","Form patties, make indent in center.","Cook 5 min per side — must reach 165°F.","Add cheese for last minute.","Rest 3 min before building."],tip:"Worcestershire adds moisture and flavor — don't skip it.",ings:[{n:"Ground turkey",q:1.5,u:"lbs",c:7.5},{n:"Cheddar cheese",q:4,u:"slices",c:1.5},{n:"Brioche buns",q:4,u:"ea",c:3},{n:"Worcestershire & spices",q:1,u:"use",c:0.75},{n:"Lettuce & tomato",q:1,u:"use",c:1.5},{n:"Avocado",q:1,u:"ea",c:1.5}]},
oven_brisket:{name:"Oven-Braised Brisket",desc:"Tender, falling-apart brisket with deep rich flavor.",steps:["Season brisket generously, sear all sides.","Remove, sauté onion and garlic in same pan.","Add beef broth, wine, and tomatoes.","Return brisket, cover tightly.","Braise at 300°F for 3.5–4 hours.","Slice against the grain."],tip:"The longer it braises, the better. Don't rush it.",ings:[{n:"Beef brisket flat cut",q:4,u:"lbs",c:18},{n:"Beef broth",q:2,u:"cups",c:2},{n:"Onion & garlic",q:1,u:"use",c:1.25},{n:"Crushed tomatoes",q:1,u:"can",c:1.5},{n:"Red wine",q:1,u:"cup",c:3},{n:"Dry rub spices",q:1,u:"use",c:0.75}]},
slow_brisket:{name:"Slow Cooker Brisket",desc:"Set it and forget it. Unbelievably tender results.",steps:["Season brisket with dry rub overnight.","Sear all sides in hot pan.","Place in slow cooker with onions and broth.","Cook on LOW for 8–10 hours.","Shred or slice against the grain.","Reduce cooking liquid for sauce."],tip:"LOW and slow is non-negotiable. HIGH heat produces tough, dry brisket.",ings:[{n:"Beef brisket",q:4,u:"lbs",c:18},{n:"Beef broth",q:1,u:"cup",c:1},{n:"Onion",q:2,u:"ea",c:1.5},{n:"Dry rub spices",q:1,u:"use",c:0.75},{n:"Worcestershire",q:2,u:"tbsp",c:0.5}]},
bbq_brisket:{name:"BBQ Smoked Brisket",desc:"The real deal. A true BBQ centerpiece.",steps:["Apply dry rub 12–24 hours in advance.","Bring smoker to 225°F with oak or hickory.","Place brisket fat-side up.","Smoke until internal temp reaches 160°F (~6 hrs).","Wrap in butcher paper, continue to 202°F.","Rest wrapped 1–2 hours before slicing."],tip:"The rest period is as important as the cook — redistributes all the juices.",ings:[{n:"Full packer brisket",q:12,u:"lbs",c:54},{n:"Kosher salt",q:0.5,u:"cup",c:0.5},{n:"Black pepper",q:0.5,u:"cup",c:0.75},{n:"Garlic powder",q:2,u:"tbsp",c:0.5},{n:"Smoking wood",q:1,u:"use",c:3}]},
beef_stirfry:{name:"Beef Stir Fry",desc:"Bold, savory, and ready in under 20 minutes.",steps:["Slice beef thin against grain, marinate in soy & cornstarch.","Prep all vegetables first.","Screaming hot wok, cook beef 2–3 min, set aside.","Stir fry vegetables 3 min.","Return beef, add sauce, toss.","Serve over rice immediately."],tip:"Thin slicing and high heat are the two rules of a great stir fry.",ings:[{n:"Flank steak",q:1.5,u:"lbs",c:10.5},{n:"Bell peppers",q:2,u:"ea",c:2.5},{n:"Broccoli",q:1,u:"head",c:2},{n:"Soy & oyster sauce",q:1,u:"use",c:1},{n:"Garlic & ginger",q:1,u:"use",c:0.75},{n:"Sesame oil",q:1,u:"use",c:0.5},{n:"Cornstarch",q:1,u:"tbsp",c:0.2}]},
shrimp_stirfry:{name:"Shrimp Stir Fry",desc:"Light, quick, and full of flavor.",steps:["Season shrimp, cook 2 min per side, remove.","Stir fry garlic and ginger 30 seconds.","Add vegetables, cook 3 min.","Return shrimp, add sauce, toss.","Garnish with green onion and sesame."],tip:"Shrimp finishes in 4 minutes total — remove immediately or it gets rubbery.",ings:[{n:"Large shrimp",q:1,u:"lb",c:10},{n:"Snap peas",q:1,u:"cup",c:2},{n:"Bell pepper",q:2,u:"ea",c:2.5},{n:"Soy & oyster sauce",q:1,u:"use",c:1},{n:"Garlic & ginger",q:1,u:"use",c:0.75},{n:"Sesame oil",q:1,u:"use",c:0.5}]},
veggie_stirfry:{name:"Vegetable Stir Fry",desc:"Colorful, healthy, and satisfying.",steps:["Prep all vegetables into similar-sized pieces.","High heat with oil.","Cook firm vegetables (broccoli, carrots) first, 3 min.","Add softer vegetables, cook 2 more min.","Add garlic, ginger, sauce — toss 1 min.","Finish with sesame oil."],tip:"Add vegetables in order of how long they take — don't dump everything at once.",ings:[{n:"Broccoli",q:1,u:"head",c:2},{n:"Bell peppers",q:2,u:"ea",c:2.5},{n:"Snap peas",q:1,u:"cup",c:2},{n:"Mushrooms",q:0.5,u:"lb",c:2},{n:"Soy sauce & garlic",q:1,u:"use",c:1},{n:"Sesame oil & ginger",q:1,u:"use",c:0.75}]},
salmon_salad:{name:"Grilled Salmon Power Salad",desc:"Light, protein-rich, and incredibly satisfying.",steps:["Season salmon, grill or pan-sear 4 min per side.","Wash and dry greens.","Slice avocado, halve cherry tomatoes.","Make simple lemon-olive oil dressing.","Assemble salad, flake warm salmon on top.","Finish with a crack of black pepper."],tip:"Flake the salmon while still warm — it absorbs the dressing beautifully.",ings:[{n:"Salmon fillet",q:1,u:"lb",c:8},{n:"Mixed greens",q:1,u:"bag",c:3},{n:"Avocado",q:1,u:"ea",c:1.5},{n:"Cherry tomatoes",q:0.5,u:"lb",c:2},{n:"Olive oil & lemon",q:1,u:"use",c:1}]},
quinoa_salad:{name:"Quinoa Greek Salad",desc:"Mediterranean flavors in every bite.",steps:["Cook quinoa per package — let cool completely.","Dice cucumber, halve tomatoes.","Crumble feta.","Whisk olive oil, lemon, oregano for dressing.","Toss everything together.","Rest 10 min before serving."],tip:"Letting it sit 10 minutes allows everything to absorb the flavors.",ings:[{n:"Quinoa",q:1,u:"cup",c:2.25},{n:"Cucumber",q:2,u:"ea",c:2},{n:"Cherry tomatoes",q:0.5,u:"lb",c:2},{n:"Feta cheese",q:4,u:"oz",c:2},{n:"Olive oil & lemon",q:1,u:"use",c:1}]},
kale_salad:{name:"Asian Kale Crunch Salad",desc:"Hearty, crunchy, and packed with flavor.",steps:["Massage kale with olive oil and salt 2 min.","Shred cabbage finely.","Shell edamame from frozen.","Make sesame-soy dressing.","Toss everything, top with almonds."],tip:"Massaging kale changes the texture completely — non-negotiable.",ings:[{n:"Kale",q:1,u:"bunch",c:2.5},{n:"Shredded cabbage",q:2,u:"cups",c:1.5},{n:"Edamame",q:1,u:"cup",c:2},{n:"Sesame dressing",q:1,u:"use",c:1.25},{n:"Almonds",q:0.25,u:"cup",c:1.5}]},
caesar:{name:"Classic Caesar Salad",desc:"Crisp, bold, and deeply satisfying.",steps:["Blend anchovy, garlic, egg yolk, lemon, Worcestershire.","Whisk in olive oil slowly to emulsify.","Tear romaine into large pieces.","Toss generously with dressing.","Add croutons and parmesan.","Serve immediately."],tip:"Anchovy paste doesn't taste fishy — it adds deep, savory flavor.",ings:[{n:"Romaine lettuce",q:2,u:"heads",c:3},{n:"Parmesan",q:3,u:"oz",c:1.5},{n:"Croutons",q:1,u:"cup",c:1.5},{n:"Anchovy paste",q:1,u:"tsp",c:0.75},{n:"Egg yolk, lemon, garlic",q:1,u:"use",c:0.75},{n:"Olive oil",q:0.25,u:"cup",c:1}]},
burrito_bowl:{name:"Chicken Burrito Bowl",desc:"All the flavor, none of the wrapper.",steps:["Season chicken with cumin, paprika, garlic.","Sear in hot pan 5–6 min per side.","Rest and slice.","Cook rice with lime juice and cilantro.","Warm and season black beans.","Build: rice, beans, chicken, avocado, salsa."],tip:"Let the chicken rest before slicing — keeps all the juices locked in.",ings:[{n:"Chicken breast",q:1,u:"lb",c:4},{n:"Brown rice",q:1,u:"cup",c:1},{n:"Black beans",q:1,u:"can",c:1.25},{n:"Avocado",q:1,u:"ea",c:1.5},{n:"Salsa & spices",q:1,u:"use",c:1.5}]},
salmon_bowl:{name:"Salmon & Quinoa Bowl",desc:"Nutritious, beautiful, and genuinely filling.",steps:["Cook quinoa per package.","Roast broccoli and sweet potato at 400°F, 20 min.","Pan-sear salmon skin-side down 4 min, flip 3 min.","Make tahini dressing with lemon.","Assemble bowl, drizzle generously."],tip:"Roast vegetables with high heat — you want caramelized edges, not steamed.",ings:[{n:"Salmon fillet",q:0.75,u:"lb",c:6},{n:"Quinoa",q:1,u:"cup",c:2.25},{n:"Broccoli",q:1,u:"head",c:2},{n:"Sweet potato",q:1,u:"lb",c:1.5},{n:"Tahini dressing",q:1,u:"use",c:1.25}]},
steak_bowl:{name:"Steak & Veggie Bowl",desc:"Protein-packed and deeply satisfying.",steps:["Season steak generously with salt and pepper.","Sear 3–4 min per side for medium-rare.","Rest 5 min, slice thin against the grain.","Cook rice.","Sauté peppers and zucchini.","Build bowl, drizzle with garlic sauce."],tip:"Always slice steak against the grain — with the grain makes it chewy.",ings:[{n:"Sirloin steak",q:0.75,u:"lb",c:7.5},{n:"Brown rice",q:1,u:"cup",c:1},{n:"Bell pepper",q:2,u:"ea",c:2.5},{n:"Zucchini",q:2,u:"ea",c:2},{n:"Olive oil & garlic",q:1,u:"use",c:1}]},
acai_bowl:{name:"Açaí Smoothie Bowl",desc:"Antioxidant-packed and beautiful on the table.",steps:["Blend frozen açaí with banana and a splash of almond milk.","Keep it thick — barely enough liquid.","Pour into bowl.","Layer granola, berries, banana slices, honey.","Add chia seeds on top.","Serve immediately."],tip:"Less liquid is better — you want it thick enough to hold the toppings.",ings:[{n:"Frozen açaí packets",q:2,u:"ea",c:4},{n:"Banana",q:2,u:"ea",c:0.6},{n:"Granola",q:0.5,u:"cup",c:1.5},{n:"Mixed berries",q:0.5,u:"cup",c:2},{n:"Almond milk",q:0.25,u:"cup",c:0.3},{n:"Honey & chia seeds",q:1,u:"use",c:0.75}]},
green_smoothie:{name:"Green Power Smoothie",desc:"Packed with nutrients and naturally sweet.",steps:["Add liquid to blender first.","Add spinach, blend smooth.","Add remaining ingredients.","Blend until completely smooth.","Adjust sweetness with honey.","Serve immediately."],tip:"Blend spinach with liquid first, then add others — smoother result.",ings:[{n:"Baby spinach",q:2,u:"cups",c:1.5},{n:"Banana",q:1,u:"ea",c:0.3},{n:"Greek yogurt",q:0.5,u:"cup",c:0.8},{n:"Almond milk",q:1,u:"cup",c:0.6},{n:"Honey & ginger",q:1,u:"use",c:0.5}]},
berry_smoothie:{name:"Berry Protein Smoothie",desc:"Fuel for the day in one glass.",steps:["Add almond milk and protein powder to blender.","Add frozen berries and yogurt.","Blend until smooth.","Add chia seeds, pulse once.","Pour and serve."],tip:"Use frozen berries — they make it thick and cold without ice.",ings:[{n:"Mixed berries (frozen)",q:1,u:"cup",c:2.5},{n:"Protein powder",q:1,u:"scoop",c:1.5},{n:"Almond milk",q:1,u:"cup",c:0.6},{n:"Greek yogurt",q:0.5,u:"cup",c:0.8},{n:"Chia seeds",q:1,u:"tbsp",c:0.5}]},
mango_smoothie:{name:"Tropical Mango Smoothie",desc:"Sunshine in a glass.",steps:["Combine all ingredients in blender.","Blend on high until silky smooth.","Taste for sweetness.","Pour over ice if desired."],tip:"Frozen mango is more consistent and makes it thicker.",ings:[{n:"Mango",q:1,u:"ea",c:1.5},{n:"Pineapple chunks",q:1,u:"cup",c:1.5},{n:"Coconut milk",q:0.5,u:"cup",c:1},{n:"Banana",q:1,u:"ea",c:0.3},{n:"Lime juice",q:1,u:"use",c:0.5}]},
pb_smoothie:{name:"PB Banana Smoothie",desc:"Thick, creamy, and satisfying as a full meal.",steps:["Add almond milk to blender.","Add frozen banana, peanut butter, protein powder.","Blend until thick and creamy.","Add ice for extra thickness.","Drizzle with honey."],tip:"Freeze the bananas — makes it thick with no ice needed.",ings:[{n:"Banana (frozen)",q:2,u:"ea",c:0.6},{n:"Peanut butter",q:2,u:"tbsp",c:0.75},{n:"Almond milk",q:1,u:"cup",c:0.6},{n:"Protein powder",q:1,u:"scoop",c:1.5},{n:"Honey",q:1,u:"tsp",c:0.25}]},
shrimp_asparagus:{name:"Garlic Butter Shrimp & Asparagus",desc:"Low-carb perfection. Done in 15 minutes.",steps:["Trim asparagus.","Season shrimp with salt and pepper.","Sear asparagus in hot pan 3–4 min, set aside.","In same pan, cook shrimp 2 min per side.","Add butter and garlic, toss everything.","Finish with lemon juice."],tip:"Asparagus and shrimp cook fast — watch the clock.",ings:[{n:"Large shrimp",q:1,u:"lb",c:10},{n:"Asparagus",q:1,u:"bunch",c:3},{n:"Butter",q:3,u:"tbsp",c:0.9},{n:"Garlic",q:4,u:"cloves",c:0.5},{n:"Lemon & herbs",q:1,u:"use",c:0.75}]},
zoodles:{name:"Zucchini Noodles Pesto Chicken",desc:"All the comfort, a fraction of the carbs.",steps:["Spiralize zucchini or use pre-made zoodles.","Season and sear chicken 5–6 min per side.","Slice chicken.","Toss zoodles in hot pan 1–2 min only.","Toss with pesto.","Top with chicken and parmesan."],tip:"Cook zoodles 1–2 minutes maximum — they get soggy fast.",ings:[{n:"Chicken breast",q:1,u:"lb",c:4},{n:"Zucchini",q:3,u:"ea",c:3},{n:"Pesto sauce",q:3,u:"tbsp",c:2},{n:"Cherry tomatoes",q:0.5,u:"lb",c:2},{n:"Parmesan",q:2,u:"oz",c:1.5}]},
cauli_rice:{name:"Cauliflower Fried Rice",desc:"Tastes like fried rice. Zero guilt.",steps:["Pulse cauliflower in food processor until rice-sized.","Scramble eggs in hot pan, remove.","Stir fry vegetables with garlic and ginger.","Add cauliflower rice, cook 5 min stirring.","Return eggs, add soy sauce and sesame oil.","Toss and serve."],tip:"Don't overcrowd the pan — cook in batches if needed.",ings:[{n:"Cauliflower",q:1,u:"head",c:3},{n:"Eggs",q:3,u:"ea",c:1},{n:"Mixed vegetables",q:1,u:"cup",c:1.5},{n:"Soy sauce & sesame oil",q:1,u:"use",c:0.75},{n:"Garlic & ginger",q:1,u:"use",c:0.75}]},
steak_eggs:{name:"Keto Steak & Eggs",desc:"Classic, satisfying, perfectly on-plan.",steps:["Season steak generously.","Sear 3–4 min per side for medium-rare.","Rest 5 min while you cook eggs.","Butter in pan, crack eggs, cook to preference.","Plate steak, add eggs alongside.","Finish with sea salt and fresh herbs."],tip:"Rest the steak as long as it cooked — non-negotiable for juiciness.",ings:[{n:"Ribeye or sirloin",q:1,u:"lb",c:10},{n:"Eggs",q:3,u:"ea",c:1},{n:"Butter",q:2,u:"tbsp",c:0.6},{n:"Fresh herbs",q:1,u:"use",c:1},{n:"Sea salt & pepper",q:1,u:"use",c:0.25}]},
chickpea_tikka:{name:"Chickpea Tikka Masala",desc:"All the depth of the original — completely plant-based.",steps:["Sauté onion and garlic until golden.","Add tikka masala spices, cook 1 min.","Add tomatoes, simmer 10 min.","Add chickpeas and coconut milk.","Simmer 20 min until thick.","Serve over basmati with fresh cilantro."],tip:"Let it simmer at least 20 minutes — the flavors need time to develop.",ings:[{n:"Chickpeas",q:2,u:"cans",c:3},{n:"Coconut milk",q:1,u:"can",c:2},{n:"Crushed tomatoes",q:1,u:"can",c:1.5},{n:"Onion & garlic",q:1,u:"use",c:1.25},{n:"Tikka masala spices",q:1,u:"use",c:1},{n:"Basmati rice",q:1,u:"cup",c:1.2}]},
lentil_soup:{name:"Lentil & Sweet Potato Soup",desc:"Warming, nourishing, and deeply satisfying.",steps:["Sauté onion and garlic 5 min.","Add cumin and turmeric, cook 1 min.","Add diced sweet potato, lentils, broth.","Simmer 25 min until lentils are soft.","Add coconut milk, simmer 5 more min.","Squeeze lemon to finish."],tip:"The lemon at the end brightens everything — don't skip it.",ings:[{n:"Red lentils",q:1,u:"cup",c:1.5},{n:"Sweet potato",q:2,u:"lb",c:3},{n:"Vegetable broth",q:4,u:"cups",c:2},{n:"Coconut milk",q:0.5,u:"can",c:1},{n:"Cumin & turmeric",q:1,u:"use",c:0.75},{n:"Lemon",q:1,u:"ea",c:0.5}]},
tofu_stirfry:{name:"Crispy Tofu Stir Fry",desc:"When cooked right, tofu is genuinely excellent.",steps:["Press tofu 30 min minimum between towels.","Cut into cubes, toss in cornstarch.","Pan fry in oil until golden and crispy all sides.","Remove, stir fry vegetables.","Add tofu back with sauce.","Serve over rice with sesame seeds."],tip:"Pressing the tofu is mandatory — wet tofu will not crisp.",ings:[{n:"Extra firm tofu",q:1,u:"block",c:2.5},{n:"Broccoli & bell pepper",q:1,u:"use",c:3.5},{n:"Soy sauce & sesame",q:1,u:"use",c:1},{n:"Cornstarch",q:2,u:"tbsp",c:0.3},{n:"Garlic & ginger",q:1,u:"use",c:0.75},{n:"Rice",q:1,u:"cup",c:1}]},
turkey_prep:{name:"Ground Turkey Meal Prep",desc:"Lean, flavorful, and ready all week.",steps:["Brown turkey in large pan, breaking it up.","Add diced peppers and onion, cook 5 min.","Add taco seasoning and splash of water.","Cook rice separately.","Divide into meal prep containers.","Store up to 5 days refrigerated."],tip:"Cook a double batch — freezes perfectly for 3 months.",ings:[{n:"Ground turkey",q:2,u:"lbs",c:8},{n:"Brown rice",q:2,u:"cups",c:2},{n:"Bell peppers",q:3,u:"ea",c:3.75},{n:"Onion & garlic",q:1,u:"use",c:1.25},{n:"Taco seasoning",q:1,u:"use",c:0.75}]},
egg_omelette:{name:"Egg White Omelette",desc:"Light, clean protein. Ready in 8 minutes.",steps:["Separate egg whites, whisk until slightly frothy.","Sauté vegetables in non-stick pan.","Pour egg whites over vegetables.","Cook on medium-low, lift edges to let liquid flow under.","Fold in half when just set.","Season and serve immediately."],tip:"Medium-low heat — egg whites toughen on high heat.",ings:[{n:"Egg whites",q:6,u:"ea",c:1.5},{n:"Spinach",q:1,u:"cup",c:0.75},{n:"Bell pepper",q:0.5,u:"ea",c:0.62},{n:"Mushrooms",q:0.25,u:"lb",c:1},{n:"Olive oil",q:1,u:"tsp",c:0.1},{n:"Herbs & seasoning",q:1,u:"use",c:0.25}]},
surprise:{name:"Butter Chicken",desc:"When in doubt — this is always the right answer.",steps:["Marinate chicken in yogurt & spices for 30 min.","Sear chicken in hot pan until golden, set aside.","Sauté onion, garlic & ginger until soft.","Add tomato paste, cream & spices, simmer 10 min.","Return chicken, simmer 15 min more.","Finish with butter, garnish with cilantro."],tip:"The heavy cream is non-negotiable — it's what gives it that restaurant depth.",ings:[{n:"Chicken thighs",q:2,u:"lbs",c:5},{n:"Heavy cream",q:1,u:"pint",c:3},{n:"Tomato paste",q:3,u:"tbsp",c:0.75},{n:"Butter",q:3,u:"tbsp",c:0.9},{n:"Onion",q:1,u:"ea",c:0.75},{n:"Garlic & ginger",q:1,u:"use",c:1},{n:"Garam masala & spices",q:1,u:"use",c:0.75},{n:"Greek yogurt",q:0.5,u:"cup",c:0.8}]},
};
// ── STATE ─────────────────────────────────────────────────────────────────
let cookbook = JSON.parse(localStorage.getItem('cs_cookbook')||'[]');
let logs = JSON.parse(localStorage.getItem('cs_logs')||'[]');
let pendingRecipe = null;
let logTarget = null;
let savedMsgIds = new Set();
// ── HELPERS ───────────────────────────────────────────────────────────────
function cost(r){ return r.ings.reduce((s,i)=>s+i.c,0); }
function costs(r){ const h=cost(r); return {home:h.toFixed(2),restaurant:(h*3).toFixed(2),saved:(h*2).toFixed(2)}; }
function toast(msg){ const t=document.getElementById('toast'); t.textContent=msg; t.style.display='block'; setTimeout(()=>t.style.display='none',2500); }
function scrollBottom(){ setTimeout(()=>{ const c=document.getElementById('chat-msgs'); c.scrollTop=c.scrollHeight; },60); }
// ── SPLASH → APP ──────────────────────────────────────────────────────────
function startApp(){
document.getElementById('splash').style.display='none';
document.getElementById('app').style.display='flex';
addAiMsg(FLOW.start.msg, FLOW.start.choices, 'cuisine');
}
// ── TAB SWITCHING ─────────────────────────────────────────────────────────
function showTab(t){
document.querySelectorAll('.screen').forEach(s=>s.classList.remove('active'));
document.querySelectorAll('.nav-btn').forEach(b=>b.classList.remove('active'));
document.getElementById('screen-'+t).classList.add('active');
document.getElementById('nav-'+t).classList.add('active');
if(t==='cookbook') renderCookbook();
if(t==='savings') renderSavings();
if(t==='account') renderAccount();
}
// ── CHAT MESSAGES ─────────────────────────────────────────────────────────
function addUserMsg(text){
const msgs = document.getElementById('chat-msgs');
const div = document.createElement('div');
div.className='msg-row user';
div.innerHTML=`