Build a **mobile-portrait diner / cooking game** — the "seat guests, cook their order, serve, get paid" loop (Diner Dash / Cooking Mama family). Static web app, touch-first.

NAME IT YOURSELF — something warm and appetizing. Pick a cuisine/theme you can execute coherently (retro American diner, ramen stand, seaside café, taco truck...). Your call.

## ⚠️ THE ART CHALLENGE — THIS IS THE WHOLE TEST:
The user's words: *"the art is never in the right perspective here."* Cooking games die when the counter is painted in one projection, the food in another, and the characters in a third. Your job is to make ONE COHERENT SCENE.

Strategy (you've proven this works — Lumen Vale, APHELION):
- **Pick ONE projection and lock it** — straight-on side view or gentle 3/4 top-down are safest for a diner counter. Write the projection phrase INTO EVERY gpt-image-2 prompt verbatim, exactly like you keep character-design constants verbatim (the Toro/Kage trick — same thing, but for camera).
- **Layered plates, not composed scenes**: one full-bleed background plate (the diner interior in your chosen projection), a counter/foreground plate, then chroma-keyed individual props (dishes, ingredients, guests) painted in THE SAME projection + lighting direction, composited at runtime.
- **Same light direction in every prompt** ("soft warm light from upper left") so shadows agree.
- Food close-ups for the cooking minigame can be a separate, deliberately flat "menu-card" style — stylistic break is FINE if it's framed as UI.
- Budget cap **$0.60 (≤15 generations, one-shot each)**. Spend most on: interior plate (1024×1536 portrait), counter plate, 3-4 guests (chroma), 4-6 dishes/ingredients (chroma), 1 cook/hands sprite.

## GAMEPLAY (simple but complete):
- **Guests arrive** at the counter (2-3 visible slots), each with a speech-bubble order + a patience meter draining
- **Tap the order** → cooking panel slides up: assemble the dish with 2-3 taps (right ingredients in order, or a tap-timing bar for "cook until golden" — your pick, keep it juicy)
- **Serve** → coins + happy guest animation; too slow → guest leaves angry, reputation hit
- **Day structure**: 90-second day, target earnings, end-of-day recap (earned / served / lost), next-day difficulty bump (faster arrivals). 3 days = win screen.
- 3-4 recipes with visibly different dishes. localStorage saves best day reached.
- Juice: sizzle particles, steam wisps, coin pop, patience-meter color shifts, guest reaction faces.

## TECH:
- Vite + TS, canvas + DOM HUD, `base: './'`, portrait 390×844 scaled, touch + mouse. TS strict.
- `window.__game` hook: { phase, day, coins, guests, serveTest() } — something e2e can drive.
- Playwright e2e (portrait): title → start → guest arrives → open order → assemble → serve → coins increase. No console errors.

## SHIPPING DISCIPLINE (checkpoint culture — user may stop you anytime):
- ~turn 12: loop works with placeholder rects, COMMIT green build
- ~turn 25: art integrated, COMMIT
- ~turn 38: days/recap/juice, COMMIT
- Hard cap **45 turns**.

OUT OF SCOPE: upgrades/shop, multiple maps, staff hiring, narrative.

WHEN DONE: one-line summary with name + cuisine + the projection you locked.
