Browser & Mini
Forklight
/ Pick tonight’s meal from a short seven-card round drawn from 50 original food photos.
The original prompt.
Copy it. Add your own twist.
Read the complete original prompt
APP NAME
Forklight
PRODUCT GOAL
Build a polished, functional, mobile-first single-user decision app inspired by the "What Should I Eat?" direction in the supplied Feishu document. It helps one person decide what to eat tonight without pretending to support multiplayer or a real ordering service. The app owns a pool of exactly 50 original local photoreal food images, but a normal game is deliberately short: each round samples exactly 7 eligible meals without replacement. The user never has to process all 50 in one round.
OPENING EXPERIENCE
Open directly into the live decision interface in English. Do not add a splash screen, opening cover, welcome page, separate onboarding, tutorial page or login. Show exactly this one-sentence instruction inside the live UI: "Swipe left to pass, right to consider, or up when you crave it." Keep the current meal, progress "1 of 7", the three primary actions and Undo easy to discover and use without an initial downward scroll in the actual Eazo preview. Optional filters and details may scroll or collapse.
CORE INTERACTION
- Display one meal card at a time from the current 7-item round. Preserve the full local image without destructive cropping.
- Swipe left = Pass, swipe right = Consider, swipe up = Crave. Also provide three explicit accessible buttons labelled Pass, Consider and Crave, plus keyboard alternatives. The first action must visibly advance from 1 of 7 to 2 of 7.
- Lock input during transitions so a rapid double click or gesture cannot resolve a card twice. Every card resolves exactly once.
- Undo restores the previous card and its previous vote without resampling or reordering the round.
- After exactly 7 card decisions, rank the strongest three using Crave > Consider > Pass plus constraint fit. If at least two meals received Consider or Crave, enter a compact "Final Three" stage with at most two head-to-head choices: first choose between candidates A and B, then choose between that winner and candidate C. Then immediately show the result. If fewer than two meals were positive, show a gentle no-match result and a button to shuffle a fresh round; do not manufacture enthusiasm.
- Result shows Today's Pick, why it fits the selected constraints, realistic preparation time, Home / Go out, one Backup, Replay and Share before optional detail. Do not claim nutrition, medical benefit, availability, price accuracy, restaurant inventory or ordering capability.
RANDOM-ROUND INVARIANTS
- The content pool contains exactly N=50 stable meal IDs and 50 matching local PNG assets. The active round contains exactly K=7 IDs. Never display "1 of 50" as game progress and never require 50 actions.
- All 7 IDs come from the 50-item pool and are unique within the round. Use a stored round seed or stored ID array so refresh preserves the same cards, order, current index, votes and duel state.
- Replay is the only normal action that samples a new 7-item round. A new round should not repeat the exact same ordered seven when another eligible combination exists. Undo never resamples.
- Default filters are Dinner, 1 person, medium hunger, budget $$, up to 30 minutes, Either home or out, no diet or allergy exclusions. A compact Filters control can edit meal time, people, budget, time, venue, hunger, diet and allergies. Applying filters explicitly starts a fresh 7-card round after confirmation if progress exists.
- Diet and allergy exclusions are hard boundaries. Preference, venue, budget and time are soft ranking signals. If fewer than 7 records remain after hard exclusions, show a clear bilingual insufficient-match state instead of silently violating an exclusion. Never present this as medical safety advice.
LOCAL CONTENT MODEL
Create exactly 50 stable records with id, displayOrder, titleEn, titleZh, descriptionEn, descriptionZh, imageLocalPath, imageGenerationBrief, mealTimes, tastes, dietLabels, allergens, budgetTier, timeMinutes, venue and hunger. Use the values in the manifest below as the source of truth. Titles, filter labels, descriptions, results, fallback text and accessibility labels must all have complete English and Simplified Chinese versions.
REAL ORIGINAL IMAGE PRODUCTION — CONDITIONAL RULES FOR THIS APP
This app is explicitly a real-image scenario. Use Eazo's own built-in AI image-generation capability during the build, never at runtime, to generate the final 50 images. Generate them in exactly five sequential batches of at most 10 images: 001–010, 011–020, 021–030, 031–040, 041–050. Do not run image batches concurrently. Complete and save one batch before starting the next.
GLOBAL VISUAL BIBLE
Every image must be a convincing new photoreal editorial food photograph with edible natural textures, plausible portions and physically consistent light—not an illustration, 3D render, collage or UI mockup. Use a coherent modern home-and-café visual family: tactile handmade ceramics, neutral linen or stone surfaces, natural window or warm practical light, restrained shadows and appetizing but believable color. Each composition must still be materially different in dish, framing, surface, prop placement, palette and lighting. Generate each as an exact intrinsic 2:3 portrait PNG and store only the final assets as public/cards/card-001.png through public/cards/card-050.png, one stable file per record, with no other files in public/cards. Normalize dimensions if needed so width * 3 === height * 2 exactly.
All 50 images must be newly generated original compositions. Do not download, scrape, copy, hotlink or closely imitate third-party images. No external image URLs. No brand packaging, logos, watermarks, text, letters, menus, price tags, restaurant signage, delivery uniforms, trademarks, celebrity likenesses, recognizable characters, official poster layouts, living-artist imitation, unsafe raw-food presentation, impossible utensils or duplicated/recolored/cropped variants. Keep names and metadata as accessible HTML text outside images.
PER-IMAGE MANIFEST AND BRIEFS
01 | /cards/card-001.png | Garlic Mushroom Rice / 蒜香蘑菇饭 | SUBJECT: a shallow ceramic bowl of glossy garlic mushrooms over steamed rice, scallion curls and sesame | SHOT: three-quarter close food portrait with the bowl centered and a folded oat napkin as scale | LIGHT/COLOR: soft window light, warm cream and chestnut palette | DATA: savory|warm|comforting; vegetarian; allergens=sesame; meal=lunch,dinner; budget=1; time=20; venue=home; hunger=hearty | SPECIFIC NEGATIVE: no meat substitutes shaped like branded products
02 | /cards/card-002.png | Tomato Egg Rice / 番茄鸡蛋盖饭 | SUBJECT: silky tomato and softly scrambled egg spooned over white rice with natural steam | SHOT: 45-degree intimate table portrait, chopsticks resting outside the bowl | LIGHT/COLOR: late-afternoon daylight, tomato red and golden yellow | DATA: savory|warm|comforting; vegetarian; allergens=egg; meal=breakfast,lunch,dinner; budget=1; time=15; venue=home; hunger=medium | SPECIFIC NEGATIVE: avoid overly perfect plastic egg texture
03 | /cards/card-003.png | Teriyaki Tofu Bowl / 照烧豆腐饭 | SUBJECT: caramelized tofu cubes, broccoli and rice in an unbranded stoneware bowl | SHOT: clean three-quarter portrait with one tofu cube in crisp focus | LIGHT/COLOR: bright diffused daylight, amber glaze and leafy green | DATA: savory|crispy; vegan; allergens=soy,gluten; meal=lunch,dinner; budget=1; time=25; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no commercial sauce bottles or packaging
04 | /cards/card-004.png | Lemon Herb Chicken Rice / 柠檬香草鸡肉饭 | SUBJECT: sliced herb-roasted chicken, lemon rice and green beans on a simple plate | SHOT: restaurant-style three-quarter portrait with visible natural grain and moisture | LIGHT/COLOR: sunny side light, lemon cream and herb green | DATA: savory|fresh|light; allergens=none; meal=lunch,dinner; budget=2; time=30; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no raw chicken and no grill logos
05 | /cards/card-005.png | Kimchi Fried Rice / 泡菜炒饭 | SUBJECT: brick-red kimchi fried rice with a softly fried egg and scallion | SHOT: overhead portrait crop with skillet edge and a small plain spoon | LIGHT/COLOR: moody kitchen light, paprika red and cast-iron black | DATA: spicy|savory|warm; allergens=egg,soy; meal=lunch,dinner; budget=1; time=15; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no packaged kimchi jars or Korean text
06 | /cards/card-006.png | Chickpea Curry Rice / 鹰嘴豆咖喱饭 | SUBJECT: golden chickpea curry beside fluffy basmati rice with cilantro | SHOT: three-quarter close portrait in a handmade matte bowl | LIGHT/COLOR: warm directional light, turmeric gold and deep green | DATA: spicy|creamy|warm; vegan; allergens=none; meal=lunch,dinner; budget=1; time=25; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no branded spice packets
07 | /cards/card-007.png | Black Pepper Beef Rice / 黑椒牛肉饭 | SUBJECT: thin seared beef strips with bell pepper over rice, glossy but realistic sauce | SHOT: dynamic 45-degree portrait with a wooden spoon and visible steam | LIGHT/COLOR: high-contrast bistro light, brown, black and red pepper accents | DATA: savory|warm|comforting; allergens=soy,gluten; meal=lunch,dinner; budget=2; time=25; venue=either; hunger=hearty | SPECIFIC NEGATIVE: avoid excessive oil and impossible floating ingredients
08 | /cards/card-008.png | Salmon Cucumber Rice / 三文鱼黄瓜饭 | SUBJECT: seared salmon flakes, cucumber ribbons, rice and sesame in a ceramic bowl | SHOT: top-down portrait with asymmetric ingredients and full bowl visible | LIGHT/COLOR: cool clean daylight, coral salmon and cucumber green | DATA: fresh|savory|light; allergens=fish,sesame; meal=lunch,dinner; budget=3; time=25; venue=either; hunger=medium | SPECIFIC NEGATIVE: no raw-fish ambiguity or branded chopsticks
09 | /cards/card-009.png | Miso Mushroom Udon / 味噌蘑菇乌冬 | SUBJECT: thick udon in a clear miso mushroom broth with greens and steam | SHOT: eye-level close portrait emphasizing noodle texture and bowl depth | LIGHT/COLOR: soft rainy-day light, umber broth and forest green | DATA: savory|warm|comforting; vegan; allergens=soy,gluten; meal=lunch,dinner; budget=1; time=20; venue=either; hunger=medium | SPECIFIC NEGATIVE: no printed bowl patterns or text
10 | /cards/card-010.png | Spicy Sesame Noodles / 香辣麻酱面 | SUBJECT: hand-tossed noodles with chili oil, sesame paste, cucumber and herbs | SHOT: three-quarter portrait with lifted noodle twist resting naturally in bowl | LIGHT/COLOR: dramatic side light, chili red and sesame beige | DATA: spicy|savory|creamy; vegan; allergens=sesame,peanut,gluten; meal=lunch,dinner; budget=1; time=15; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no chopsticks holding impossible suspended noodles
11 | /cards/card-011.png | Tomato Basil Pasta / 番茄罗勒意面 | SUBJECT: spaghetti coated in rustic tomato sauce with fresh basil and grated cheese | SHOT: close three-quarter portrait, loose natural twirl on a cream plate | LIGHT/COLOR: Mediterranean daylight, tomato red and basil green | DATA: savory|fresh|warm; vegetarian; allergens=gluten,dairy; meal=lunch,dinner; budget=1; time=25; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no restaurant logos or wine labels
12 | /cards/card-012.png | Creamy Mushroom Pasta / 奶油蘑菇意面 | SUBJECT: tagliatelle with browned mushrooms and a light creamy sauce | SHOT: 45-degree editorial portrait with linen and fork as scale | LIGHT/COLOR: soft amber light, mushroom brown and ivory | DATA: creamy|savory|comforting; vegetarian; allergens=gluten,dairy; meal=lunch,dinner; budget=2; time=30; venue=either; hunger=hearty | SPECIFIC NEGATIVE: avoid heavy artificial white sauce gloss
13 | /cards/card-013.png | Pesto Vegetable Pasta / 青酱蔬菜意面 | SUBJECT: green pesto pasta with roasted zucchini, tomato and peas | SHOT: overhead portrait with an imperfect handmade arrangement | LIGHT/COLOR: bright garden daylight, herb green and cherry red | DATA: fresh|savory|light; vegetarian; allergens=gluten,nuts,dairy; meal=lunch,dinner; budget=2; time=25; venue=home; hunger=medium | SPECIFIC NEGATIVE: no branded pesto jar
14 | /cards/card-014.png | Turkey Avocado Sandwich / 火鸡牛油果三明治 | SUBJECT: thick turkey, avocado, tomato and lettuce sandwich cut cleanly in half | SHOT: side-on close portrait showing real layers on parchment | LIGHT/COLOR: crisp café window light, avocado green and toasted gold | DATA: savory|fresh|crispy; allergens=gluten; meal=breakfast,lunch; budget=2; time=10; venue=either; hunger=medium | SPECIFIC NEGATIVE: no deli branding or toothpick flag
15 | /cards/card-015.png | Grilled Cheese & Tomato Soup / 烤芝士配番茄汤 | SUBJECT: golden grilled cheese triangle beside a small bowl of tomato soup | SHOT: cozy three-quarter portrait with one natural cheese pull kept short | LIGHT/COLOR: warm diner-like light, cheddar gold and tomato red | DATA: creamy|crispy|comforting; vegetarian; allergens=gluten,dairy; meal=lunch,dinner; budget=1; time=15; venue=either; hunger=medium | SPECIFIC NEGATIVE: no exaggerated endless cheese pull
16 | /cards/card-016.png | Roasted Pumpkin Soup / 烤南瓜浓汤 | SUBJECT: velvety roasted pumpkin soup with seeds and a small swirl of cream | SHOT: top-down portrait in a deep blue bowl with spoon beside it | LIGHT/COLOR: soft autumn light, pumpkin orange and navy | DATA: creamy|warm|comforting; vegetarian; allergens=dairy; meal=lunch,dinner; budget=1; time=35; venue=home; hunger=light | SPECIFIC NEGATIVE: no Halloween faces or decorative text
17 | /cards/card-017.png | Chicken Noodle Soup / 鸡肉面汤 | SUBJECT: clear chicken broth with noodles, carrot, celery and tender chicken | SHOT: eye-level close portrait with believable steam and broth clarity | LIGHT/COLOR: gentle morning window light, pale gold and carrot orange | DATA: warm|savory|comforting; allergens=gluten; meal=lunch,dinner; budget=1; time=40; venue=home; hunger=medium | SPECIFIC NEGATIVE: no cans, packets or labels
18 | /cards/card-018.png | Citrus Quinoa Salad / 柑橘藜麦沙拉 | SUBJECT: quinoa, orange segments, cucumber, greens and pumpkin seeds | SHOT: overhead portrait with airy negative space on a stone table | LIGHT/COLOR: bright natural daylight, citrus orange and mint green | DATA: fresh|light|sour; vegan; allergens=none; meal=lunch,dinner; budget=2; time=20; venue=either; hunger=light | SPECIFIC NEGATIVE: avoid decorative flowers not meant to be eaten
19 | /cards/card-019.png | Crispy Tofu Salad / 香脆豆腐沙拉 | SUBJECT: crisp tofu, cabbage, carrot, herbs and lime dressing | SHOT: three-quarter portrait with distinct crunchy textures | LIGHT/COLOR: clean daylight, jade green and carrot orange | DATA: crispy|fresh|savory; vegan; allergens=soy; meal=lunch,dinner; budget=2; time=25; venue=either; hunger=medium | SPECIFIC NEGATIVE: no fake meat branding
20 | /cards/card-020.png | Margherita Pizza / 玛格丽特披萨 | SUBJECT: small blistered pizza with tomato, mozzarella and basil | SHOT: slightly overhead portrait showing the entire handmade pizza | LIGHT/COLOR: warm oven light, charred gold, white and basil green | DATA: savory|warm|comforting; vegetarian; allergens=gluten,dairy; meal=lunch,dinner; budget=2; time=30; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no delivery box, logo or text
21 | /cards/card-021.png | Roasted Vegetable Pizza / 烤蔬菜披萨 | SUBJECT: handmade pizza topped with roasted pepper, zucchini, onion and olives | SHOT: three-quarter portrait with one slice slightly separated | LIGHT/COLOR: sunlit trattoria mood, colorful vegetables and toasted crust | DATA: savory|fresh|crispy; vegetarian; allergens=gluten,dairy; meal=lunch,dinner; budget=2; time=35; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no commercial packaging
22 | /cards/card-022.png | Classic Cheeseburger / 经典芝士汉堡 | SUBJECT: juicy beef patty, melted cheese, lettuce and tomato in a plain toasted bun | SHOT: side portrait at table height with realistic compact proportions | LIGHT/COLOR: bold diner side light, toasted brown and lettuce green | DATA: savory|crispy|comforting; allergens=gluten,dairy; meal=lunch,dinner; budget=2; time=20; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no branded wrappers, flags or oversized tower
23 | /cards/card-023.png | Portobello Burger / 波特贝勒蘑菇汉堡 | SUBJECT: grilled portobello mushroom, roasted pepper and greens in a toasted bun | SHOT: side-on close portrait with honest handmade layers | LIGHT/COLOR: soft café light, earthy brown and pepper red | DATA: savory|juicy|comforting; vegetarian; allergens=gluten,dairy; meal=lunch,dinner; budget=2; time=20; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no imitation brand marks
24 | /cards/card-024.png | Crispy Fish Tacos / 香脆鱼肉塔可 | SUBJECT: three small fish tacos with cabbage, lime and creamy drizzle | SHOT: three-quarter portrait arranged casually on a ceramic plate | LIGHT/COLOR: bright coastal daylight, lime green and corn gold | DATA: crispy|fresh|savory; allergens=fish,gluten,dairy; meal=lunch,dinner; budget=2; time=25; venue=either; hunger=medium | SPECIFIC NEGATIVE: no restaurant paper or logo
25 | /cards/card-025.png | Black Bean Tacos / 黑豆塔可 | SUBJECT: three corn tacos with black beans, corn salsa, avocado and radish | SHOT: overhead portrait with visible handmade tortilla texture | LIGHT/COLOR: sunny daylight, black bean, avocado green and radish pink | DATA: fresh|spicy|savory; vegan; allergens=none; meal=lunch,dinner; budget=1; time=20; venue=either; hunger=medium | SPECIFIC NEGATIVE: no packaged seasoning or text
26 | /cards/card-026.png | Seared Salmon Sushi Set / 炙烤三文鱼寿司 | SUBJECT: a modest set of seared salmon nigiri and cucumber rolls on plain ceramic | SHOT: top-down portrait with restrained precise spacing and no decorative lettering | LIGHT/COLOR: cool restaurant light, coral and slate gray | DATA: fresh|savory|light; allergens=fish,soy; meal=lunch,dinner; budget=3; time=45; venue=out; hunger=medium | SPECIFIC NEGATIVE: no raw unsafe appearance, branded plates or calligraphy
27 | /cards/card-027.png | Vegetable Sushi Set / 蔬菜寿司拼盘 | SUBJECT: avocado, cucumber, pickled carrot and tofu sushi rolls | SHOT: top-down portrait with an original asymmetrical arrangement | LIGHT/COLOR: soft clean light, avocado green, rice white and carrot orange | DATA: fresh|light|savory; vegan; allergens=soy,sesame; meal=lunch,dinner; budget=2; time=45; venue=either; hunger=medium | SPECIFIC NEGATIVE: no logos, printed symbols or imitation fish
28 | /cards/card-028.png | Thai Green Curry / 泰式绿咖喱 | SUBJECT: green curry with tofu, eggplant, bamboo shoots and rice | SHOT: three-quarter portrait with curry bowl and rice sharing the frame | LIGHT/COLOR: lush tropical side light, coconut green and white | DATA: spicy|creamy|warm; vegan; allergens=soy; meal=lunch,dinner; budget=2; time=30; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no packaged curry paste or text
29 | /cards/card-029.png | Japanese Vegetable Curry / 日式蔬菜咖喱 | SUBJECT: thick mild curry with potato, carrot and peas beside rice | SHOT: slightly overhead comfort-food portrait on a simple oval plate | LIGHT/COLOR: warm indoor light, curry brown and carrot orange | DATA: savory|warm|comforting; vegan; allergens=gluten,soy; meal=lunch,dinner; budget=1; time=35; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no character-shaped rice or branded packet
30 | /cards/card-030.png | Steamed Vegetable Dumplings / 蒸蔬菜饺子 | SUBJECT: plump translucent vegetable dumplings in a plain bamboo steamer | SHOT: three-quarter close portrait with six distinct dumplings and steam | LIGHT/COLOR: diffused warm light, pale jade and bamboo tan | DATA: savory|warm|light; vegan; allergens=gluten,soy; meal=snack,lunch,dinner; budget=1; time=35; venue=either; hunger=medium | SPECIFIC NEGATIVE: no restaurant chopstick sleeve or printed liner
31 | /cards/card-031.png | Pan-Fried Chicken Dumplings / 香煎鸡肉饺子 | SUBJECT: golden-bottomed chicken dumplings with scallion and a plain dipping bowl | SHOT: low three-quarter portrait emphasizing crisp seared bases | LIGHT/COLOR: moody side light, toasted gold and charcoal | DATA: crispy|savory|warm; allergens=gluten,soy; meal=snack,lunch,dinner; budget=2; time=30; venue=either; hunger=medium | SPECIFIC NEGATIVE: no branded sauce bottle
32 | /cards/card-032.png | Korean BBQ Mushroom Plate / 韩式烤蘑菇拼盘 | SUBJECT: charred mixed mushrooms, rice, lettuce and simple vegetable sides | SHOT: overhead shared-plate portrait with no people or signage | LIGHT/COLOR: warm tabletop light, mahogany and leafy green | DATA: savory|smoky|warm; vegan; allergens=soy,sesame; meal=lunch,dinner; budget=2; time=30; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no grill-chain branding or Korean lettering
33 | /cards/card-033.png | Grilled Chicken Skewers / 香烤鸡肉串 | SUBJECT: herb grilled chicken and vegetable skewers with lemon couscous | SHOT: diagonal three-quarter portrait with two skewers fully visible | LIGHT/COLOR: outdoor golden-hour light, charred gold and herb green | DATA: savory|fresh|smoky; allergens=gluten; meal=lunch,dinner; budget=2; time=30; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no flames touching food or branded sticks
34 | /cards/card-034.png | Berry Oat Bowl / 莓果燕麦碗 | SUBJECT: creamy oats with blueberries, strawberries, banana and seeds | SHOT: top-down portrait with natural fruit arrangement in a matte bowl | LIGHT/COLOR: gentle morning light, berry red and oat cream | DATA: sweet|creamy|warm; vegan; allergens=none; meal=breakfast,snack; budget=1; time=10; venue=home; hunger=medium | SPECIFIC NEGATIVE: no packaged granola or printed napkin
35 | /cards/card-035.png | Egg Avocado Toast / 鸡蛋牛油果吐司 | SUBJECT: smashed avocado toast topped with a softly cooked egg and pepper | SHOT: 45-degree brunch portrait with one slice and a small salad | LIGHT/COLOR: bright morning window light, yolk gold and avocado green | DATA: savory|creamy|fresh; vegetarian; allergens=egg,gluten; meal=breakfast,lunch; budget=2; time=12; venue=either; hunger=medium | SPECIFIC NEGATIVE: no café logo or branded mug
36 | /cards/card-036.png | Berry Yogurt Parfait / 莓果酸奶杯 | SUBJECT: layers of plain yogurt, fresh berries and toasted oats in a clear glass | SHOT: side portrait revealing honest layers and a spoon for scale | LIGHT/COLOR: cool morning light, white, berry purple and honey gold | DATA: sweet|creamy|fresh; vegetarian; allergens=dairy,gluten; meal=breakfast,snack; budget=1; time=5; venue=either; hunger=light | SPECIFIC NEGATIVE: no plastic branded cup or label
37 | /cards/card-037.png | Banana Oat Pancakes / 香蕉燕麦松饼 | SUBJECT: small stack of banana oat pancakes with berries and a little maple syrup | SHOT: three-quarter breakfast portrait, compact stack with believable texture | LIGHT/COLOR: sunny breakfast light, warm gold and berry red | DATA: sweet|warm|comforting; vegetarian; allergens=egg,dairy; meal=breakfast; budget=1; time=20; venue=home; hunger=medium | SPECIFIC NEGATIVE: no syrup bottle or exaggerated tower
38 | /cards/card-038.png | Shakshuka / 北非番茄烩蛋 | SUBJECT: eggs gently poached in spiced tomato and pepper sauce with herbs | SHOT: overhead portrait in a small dark skillet with bread at the edge | LIGHT/COLOR: warm dramatic light, brick red and yolk gold | DATA: spicy|savory|warm; vegetarian; allergens=egg,gluten; meal=breakfast,lunch,dinner; budget=1; time=25; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no printed cookware branding
39 | /cards/card-039.png | Falafel Pita / 炸豆丸子皮塔饼 | SUBJECT: warm pita filled with falafel, tomato, cucumber, greens and tahini | SHOT: side close portrait with one neat cut revealing layers | LIGHT/COLOR: bright market daylight, herb green and toasted tan | DATA: crispy|fresh|savory; vegan; allergens=gluten,sesame; meal=lunch,dinner; budget=1; time=25; venue=either; hunger=hearty | SPECIFIC NEGATIVE: no takeaway paper, text or logo
40 | /cards/card-040.png | Hummus Grain Bowl / 鹰嘴豆泥谷物碗 | SUBJECT: hummus, farro, roasted vegetables, chickpeas and herbs | SHOT: top-down portrait with distinct sections but natural imperfection | LIGHT/COLOR: soft earthy daylight, sand, beet red and herb green | DATA: creamy|fresh|savory; vegan; allergens=gluten,sesame; meal=lunch,dinner; budget=2; time=30; venue=either; hunger=medium | SPECIFIC NEGATIVE: no packaged hummus lid
41 | /cards/card-041.png | Loaded Baked Potato / 丰盛烤土豆 | SUBJECT: split baked potato with broccoli, scallion and melted cheese | SHOT: three-quarter close portrait on a plain enamel plate | LIGHT/COLOR: cozy evening light, potato gold and broccoli green | DATA: creamy|warm|comforting; vegetarian; allergens=dairy; meal=lunch,dinner; budget=1; time=50; venue=home; hunger=hearty | SPECIFIC NEGATIVE: no foil branding or excessive toppings tower
42 | /cards/card-042.png | Stovetop Mac & Cheese / 炉煮芝士通心粉 | SUBJECT: creamy elbow pasta with toasted crumbs and parsley | SHOT: close three-quarter portrait in a small ceramic bowl | LIGHT/COLOR: warm kitchen light, cheddar gold and cream | DATA: creamy|warm|comforting; vegetarian; allergens=gluten,dairy; meal=lunch,dinner; budget=1; time=20; venue=home; hunger=hearty | SPECIFIC NEGATIVE: avoid neon artificial cheese color
43 | /cards/card-043.png | Spicy Lentil Stew / 香辣扁豆炖菜 | SUBJECT: red lentil stew with tomato, spinach and a spoonful of herb oil | SHOT: eye-level bowl portrait with thick realistic texture and steam | LIGHT/COLOR: moody winter light, rust red and deep green | DATA: spicy|warm|comforting; vegan; allergens=none; meal=lunch,dinner; budget=1; time=35; venue=home; hunger=hearty | SPECIFIC NEGATIVE: no cans or spice labels
44 | /cards/card-044.png | Crispy Cauliflower Wrap / 香脆花椰菜卷 | SUBJECT: toasted wrap filled with crisp cauliflower, cabbage, herbs and sauce | SHOT: diagonal close portrait cut in half on plain parchment | LIGHT/COLOR: bright lunch light, golden cauliflower and purple cabbage | DATA: crispy|spicy|fresh; vegan; allergens=gluten,sesame; meal=lunch,dinner; budget=1; time=30; venue=either; hunger=medium | SPECIFIC NEGATIVE: no branded fast-food wrapper
45 | /cards/card-045.png | Mediterranean Mezze Plate / 地中海小食拼盘 | SUBJECT: hummus, cucumber, tomato, olives, roasted pepper and warm flatbread | SHOT: overhead portrait with a compact personal portion, not a banquet | LIGHT/COLOR: sunlit patio light, olive green, tomato and cream | DATA: fresh|savory|light; vegan; allergens=gluten,sesame; meal=snack,lunch,dinner; budget=2; time=15; venue=either; hunger=medium | SPECIFIC NEGATIVE: no alcohol bottles or printed plates
46 | /cards/card-046.png | Mango Sticky Rice / 芒果糯米饭 | SUBJECT: ripe mango slices beside coconut sticky rice with sesame | SHOT: top-down dessert portrait with clean organic curves | LIGHT/COLOR: soft tropical daylight, mango yellow and coconut white | DATA: sweet|creamy|fresh; vegan; allergens=sesame; meal=snack,dessert; budget=2; time=30; venue=either; hunger=light | SPECIFIC NEGATIVE: no decorative text or packaged coconut milk
47 | /cards/card-047.png | Chocolate Berry Tart / 巧克力莓果挞 | SUBJECT: small dark chocolate tart topped with fresh berries | SHOT: three-quarter close portrait showing one clean slice and crumb texture | LIGHT/COLOR: moody bakery light, cocoa brown and berry red | DATA: sweet|rich|crispy; vegetarian; allergens=gluten,dairy,egg; meal=snack,dessert; budget=2; time=50; venue=either; hunger=light | SPECIFIC NEGATIVE: no bakery logo, candles or writing
48 | /cards/card-048.png | Matcha Mochi Plate / 抹茶麻薯拼盘 | SUBJECT: three handmade pale-green matcha mochi with a dusting of powder | SHOT: minimal three-quarter portrait on unglazed ceramic | LIGHT/COLOR: calm diffused light, sage green and warm gray | DATA: sweet|soft|light; vegetarian; allergens=dairy; meal=snack,dessert; budget=2; time=40; venue=either; hunger=light | SPECIFIC NEGATIVE: no Japanese lettering, boxes or branded motifs
49 | /cards/card-049.png | Apple Cinnamon Crumble / 苹果肉桂酥粒 | SUBJECT: warm baked apple crumble in a small ceramic dish with oat topping | SHOT: three-quarter cozy portrait with spoon breaking the crisp surface | LIGHT/COLOR: golden evening light, baked amber and apple red | DATA: sweet|warm|comforting; vegetarian; allergens=gluten,dairy; meal=snack,dessert; budget=1; time=45; venue=home; hunger=light | SPECIFIC NEGATIVE: no ice cream brand or decorative words
50 | /cards/card-050.png | Lemon Sorbet / 柠檬雪葩 | SUBJECT: two natural scoops of pale lemon sorbet with fresh citrus zest | SHOT: clean side portrait in a small glass cup with ample negative space | LIGHT/COLOR: bright cool daylight, pale yellow and clear glass | DATA: sweet|sour|fresh; vegan; allergens=none; meal=snack,dessert; budget=1; time=5; venue=either; hunger=light | SPECIFIC NEGATIVE: no product tub, label or artificial neon color
RUNTIME IMAGE STRATEGY
Do not decode or render all 50 full-size images at once. Render the active meal and at most the next two preloaded images. Load the rest on demand. In Final Three and result, use only the few required images; do not build a 50-image page. On Replay, release image references that are no longer needed. If a local image fails, show a tasteful generated-code fallback with the localized meal title and keep all controls functional; never show a broken-image icon.
VISUAL INTERFACE
Create a premium but friendly editorial "dinner compass" look: deep charcoal background, warm parchment cards, saffron and tomato accents, subtle grain made in CSS, one tactile card with a small taste-and-time caption, and compact segmented action buttons. Use restrained motion and immediate feedback. Do not show 50 thumbnails or a long content catalog. Avoid generic dashboard grids, decorative device frames, fake phone mockups, giant marketing copy, or clutter that pushes the required action away.
RESPONSIVE HOST CONTRACT
Let Eazo adapt the app to its actual host and available viewport. Do not hard-code or target a particular browser size, device size, viewport width or height, app-frame size, root-height formula, or host-container CSS implementation. Do not force a fixed app window. Use responsive wrapping and intrinsic sizing, avoid horizontal overflow, and prevent media or decorative layers from covering controls. Keep the active image compact enough that the primary actions remain discoverable without an initial downward scroll. Optional secondary content can scroll.
INTERNATIONALIZATION
Support exactly English (en) and Simplified Chinese (zh) with one clear EN / 中文 toggle. Always open in English and never auto-detect browser, device or system language. Switching language updates every visible and announced string immediately with no mixed-language text. Store semantic events such as {action,itemId} rather than formatted English strings so aria-live feedback also switches correctly.
PERSISTENCE, ACCESSIBILITY AND PRIVACY
Persist locale, filter selections, round IDs and order, current index, votes, duel state and result in localStorage when available; use a non-blocking in-memory fallback if storage fails. Ensure the server render and first client render are deterministic and identical, and introduce no hydration error. Provide touch, mouse and keyboard parity, visible focus, descriptive bilingual alt text, semantic buttons, a polite live region and reduced-motion support. No accounts, uploads, analytics, tracking, external APIs, runtime image generation, maps, restaurant lookup, ordering, payment or personal-data collection.
EDGE STATES
Implement complete bilingual loading, image fallback, insufficient matches, all-pass result, storage unavailable and generic unexpected-error states. Replay from result creates and persists a new 7-card round. The terminal transition fires exactly once after the seventh decision and exactly once after the second duel choice when applicable.
IMPLEMENTATION INSTRUCTIONS
Treat this specification as the complete final implementation brief and build the app now. Use Eazo's built-in defaults and official platform capabilities. Do not ask for a separate design stage or expand scope. Do not insert a self-review questionnaire or claim that a model's own checklist proves correctness; simply finish the implementation and return a working preview so external QA can verify it.Keep exploring.
Bakery Pin
Tap the left and right flippers to keep the ball alive and light targets in sequence, unfolding the bakery table upward zone by zone.