Build a **three.js procedural 3D** game inspired by **"All in Hole" by Homa Games** (a hole.io-style mobile puzzle where you control a black sinkhole on a tropical island and swallow food). Web-search the original briefly so you understand the satisfaction loop — but make a CLONE inspired by it, with a different name.

**This is a three.js test.** No 2D canvas drawing for the game world. No gpt-image-2 sprites. Pure procedural three.js geometry + GLSL shaders, in the same spirit as After the Storm (the ocean demo you previously shipped). You impressed the user with that — do it again, but for a tropical-island-food-puzzle this time.

PICK A NAME YOURSELF. Suggestions: "Maw of the Atoll", "Sunken Buffet", "Ravenous Reef", "Tide Eater". Use whatever you want.

GAMEPLAY (the actual game loop must work):
- Tilted top-down 3D view (~60° from vertical) of a small tropical island scene (sandy beach, ocean lapping the edges, palm trees, light breeze)
- Player controls a **hole** (a circular black void in the ground) by dragging with mouse OR touch. The hole moves smoothly toward the pointer.
- The island is covered with **arrangements of procedural 3D food objects** — towers of pancakes, pyramids of fruit, spirals of donuts, fans of sushi, grids of macarons.
- When the hole moves under a food item whose volume / size ≤ hole's current radius, the item **falls in**: rotates, shrinks, drops into the void with a small splash of dust.
- Hole grows as it eats (level up: ~15-20% radius increase, brief celebration FX, threshold via XP bar). Items larger than the hole's radius are immovable until you grow.
- Time-limited level (60-90 sec). End screen: items eaten, score, % cleared, replay.

THE PROCEDURAL 3D ART — THIS IS THE WHOLE TEST:
- **Pure three.js geometry**, no GLTF, no textures, no sprite atlases. Use built-in geometries (CylinderGeometry, SphereGeometry, TorusGeometry, ConeGeometry, BoxGeometry, ExtrudeGeometry) + a couple custom shader materials.
- 8+ food types, each procgen — examples:
  - **strawberry**: red sphere with seed dots (extruded tiny cones), green leaf-cluster on top (small cones)
  - **watermelon slice**: half-cylinder green outer + pink interior + black seeds (instanced spheres)
  - **banana**: bent torus segment (curved CylinderGeometry with bend in vertex shader, yellow gradient)
  - **pineapple**: textured cylinder via Perlin shader, green leaf cone cluster
  - **donut**: torus geometry with frosting (smaller torus on top + sprinkles as instanced spheres)
  - **cupcake**: cylinder bottom + sphere top (frosting) + cone (cherry)
  - **ice-cream cone**: cone + 1-3 stacked spheres (scoops)
  - **taco**: half-cylinder folded shell + small inner geometry
  - **sushi roll**: cylinder white rice + dark band + small color caps
  - **coconut**: textured sphere with bump shader
- **GEOMETRIC ARRANGEMENTS** (this is what the user explicitly asked for):
  - **Towers** (pancakes stacked, each rotated slightly, with a strawberry crown)
  - **Pyramids** (4-3-2-1 stack of strawberries — classic pyramid)
  - **Fans / arcs** (sushi laid out along a curved row)
  - **Grid platters** (3x3 of macarons in alternating colors)
  - **Spirals** (donuts in concentric rings around a centerpiece)
  - 8-12 arrangements total, spaced across the island so the player has to traverse
- The HOLE itself: a circular hole in the ground rendered with a custom shader — radial gradient from sand-colored at the edge to pure black at center, with a soft warping shader-distorted shadow ring. Items tilt and lean toward the hole when close (a vertex shader effect on nearby food).
- **Tropical island**: PlaneGeometry sand floor with vertex-shader perturbation for dunes, low-poly palm trees (segmented cylinder trunk + cones for leaves, with slight wind sway via shader), ocean ring around the island with a gentle Gerstner-wave shader, drifting palm leaves as instanced particles.
- **Sky**: gradient dome (sky-blue to peach near horizon), sun + soft bloom, fluffy procgen clouds (instanced billboards with a shader noise alpha).
- **Lighting**: hemispheric + directional, soft warm tone. Subtle bloom + filmic tonemap. The whole scene should feel BREEZY and SUNNY.

JUICE:
- Hole has a gentle pulse animation
- Items rotate slowly on their pedestals (catalog look) before being eaten
- When eaten: rotate + shrink + fall in 200ms with a dust puff
- Score popups in 3D space (sprite labels or CSS2DObjects)
- Level-up: hole grows with a ring expand + camera shake + brief slow-mo
- Cascade physics when a tower's base is eaten: top items wobble + lean + fall toward hole (basic gravity + tilt)
- Tropical SFX: gentle ocean ambient, gull cry, "thunk" / "tink" on swallows (Web Audio synth)

CAMERA:
- Tilted top-down (~60° from vertical), follows the hole smoothly
- Subtle DOF / tilt-shift feel so the scene looks miniature

TECH:
- Vite + TS. three.js as a dep. `base: './'`. `npm run build` → `dist/` must populate, no module loader issues.
- Mobile-portrait + desktop both work. Touch-drag + mouse-drag.
- Adaptive resolution scaler if FPS drops (same trick as After the Storm).
- `window.__game` debug hook: `{ score, level, radius, eaten, phase }`

VERIFY:
- playwright e2e: load, scene renders (canvas has non-zero pixels), drag hole onto a small food item, score increments and item count decreases. No console errors.

OUT OF SCOPE:
- DO NOT use gpt-image-2 or any external image API. Procedural everything.
- DO NOT use GLTF / GLB / external 3D models.
- DO NOT include the original game's branding ("All in Hole" / Molly the mole / Homa Games) in any shipped UI text.
- No multiplayer, no save, no menu beyond title/end.

SHIPPING DISCIPLINE:
- Build incrementally. By turn ~8 you should have: scene + hole + 1 food type + drag movement. By ~16: full food roster + arrangements. By ~24: eat mechanic + scoring. By ~32: juice + polish. Hard cap **40 turns**.
- Playable > perfect. If you reach turn 30 and the loop works but juice is half-done, commit and stop.

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