Build a **Temple Run-style 3D procedural endless runner** as a static web app. Third-person camera-behind-player view. Auto-running character on a procedurally-generated path through ancient ruins / jungle. Player switches lanes left/right, jumps over gaps and walls, slides under low bars. Distance + coin score. Death = restart.

**This is a three.js procgen test** — like After the Storm (the ocean) and Sunken Buffet (the hole.io). NO sprites, NO gpt-image-2, NO GLTF, NO external assets. Pure three.js geometry + GLSL shaders.

PICK A NAME YOURSELF — something with mythic adventure energy. Suggestions: "Cradle of the Lost Temple", "Marble Dash", "Verdigris Run", "Pillars of the Maw". Use whatever feels right.

## CORE GAMEPLAY (must work):
- **3-lane endless runner**. Camera fixed behind player, slightly elevated, with slight FOV-pulse + screen-shake on impact.
- **Player auto-runs forward** at increasing speed over time (start ~10 u/s, gradually ramps to ~20 u/s over 60 seconds).
- **Controls**:
  - Left arrow / A / swipe-left → switch to left lane (instant, brief tilt animation)
  - Right arrow / D / swipe-right → switch to right lane
  - Up arrow / W / Space / swipe-up → jump (parabolic arc, ~0.7s in air)
  - Down arrow / S / swipe-down → slide (drop player height + collider for ~0.5s)
- **Procedural path generation**: chunks of ~30u long, generated ~3 chunks ahead of player, recycled when ~30u behind. Each chunk has a randomized set of obstacles + pickups.
- **Obstacle types** (4+ kinds):
  - Stone wall blocking ONE lane → jump or switch lane
  - Low arch blocking ALL THREE lanes → slide
  - Gap in the floor in ONE lane → jump or switch lane
  - Tall pillar in CENTER lane → switch left or right
  - Crumbling stone columns scattered ahead
- **Pickups**: instanced torus "coins" along the path. Touching them = +1 coin score. Floating slow rotation.
- **Death**: hit wall / fall in gap / fail to slide = game-over screen with distance + coins + restart button.
- **Score**: distance traveled (meters) + coins (each coin = +5m bonus). Top score saved to localStorage.

## ENVIRONMENT — procedural three.js:
- **Path**: stone-block road tiles, slight wear noise via shader, animated cracks. ~6u wide (3 lanes × 2u each).
- **Walls / pillars / arches**: low-poly stone with PBR-ish roughness, vertex-color noise. ExtrudeGeometry for irregular silhouettes.
- **Jungle border**: rows of low-poly palm trees, ferns (Cone + segmented branches), vines hanging from arches. Instanced for perf. Subtle wind sway via vertex shader.
- **Backdrop**: distant ziggurat / temple silhouette + mountains on the horizon. Sky dome with peach-cream sunrise gradient, soft sun + low fog (volumetric-fake via depth-based exponential).
- **Pickups (coins)**: TorusGeometry, metallic gold material with rim light. Floating Y-bob.
- **Decor**: scattered moss patches on tiles, vines on stone walls, occasional glowing rune carvings on the floor (animated pulse) as visual landmarks.

## CAMERA + JUICE:
- Third-person camera behind the player at ~1.5u back + 1.2u up, looking slightly down. Smoothly trails the player with slight lag.
- FOV pulses up on jumps (zoom-out), pulses down on slides (zoom-in). Brief tilt on lane-switch.
- Screen shake on near-misses (when player gets within 0.5u of an obstacle's hit-test envelope while passing it).
- **Speed lines** — animated stretched-quad streaks at high speed (>15 u/s).
- **Particle dust** on slide (dust cloud from the ground), on landing after jump.
- **Death flash** — full-screen red flash + slow-mo + camera punch zoom-in on player.
- HUD: distance counter top center, coins top right, current speed pulse-bar.
- "Tap to run" intro screen.

## CONTROLS DETAIL:
- Touch input: swipe gestures (track touchstart + touchend delta direction); also support tap-and-hold zones.
- Keyboard: see above. Also bind 'R' to restart from game-over.

## TECH:
- Vite + TS. three.js as a dep. `base: './'`. `npm run build` → `dist/` populates, no module resolution issues.
- Mobile-portrait + desktop both work, scale to viewport.
- Adaptive resolution scaler (drop to 0.7× pixel ratio if FPS < 50 EMA).
- `window.__game` debug hook: `{ phase, distance, coins, speed, alive, lane, jumping, sliding }`.

## VERIFY:
- Playwright e2e: load, "tap to run" → game starts → player visible → simulate left-arrow (player lane switches) → simulate space (player jumps) → distance > 0 after 1 second. No console errors.

## OUT OF SCOPE:
- NO gpt-image-2, NO GLTF, NO textures (other than procgen canvas-baked).
- No multiple stages / world types — one biome (the temple-jungle ruins).
- No power-ups beyond coins.
- No leaderboards (just local high score).
- No multiplayer.
- Don't include "Temple Run" branding in any shipped UI text.

## SHIPPING DISCIPLINE:
- **By turn ~10**: 3-lane path + auto-running player + can switch lanes + basic camera trail.
- **By turn ~20**: jump + slide + first obstacle type + collision-causes-death.
- **By turn ~30**: all 4 obstacle types + chunk recycling + coins + scoring.
- **By turn ~40**: environment polish (palms, sky, runes) + juice (screen shake, slow-mo, particles).
- Hard cap **50 turns**. If you hit 40 and only 2 obstacle types work, ship 2. PLAYABLE > COMPLETE.

WHEN DONE: one-line summary including the name you chose.
