Build an **impressive procedural three.js scene** as a static web app.

ABSOLUTE CONSTRAINTS:
- **NO image, model, font, or audio assets.** Not from disk, not from URLs. Everything is procgen at runtime.
- Use Three.js. You may install standard companions (lil-gui for tweaks if you want).
- Single-page Vite TS app. `base: './'` for reverse proxy.
- Runs at 60fps on a mid-range laptop in WebGL.

THE BAR:
- "Scrolling past on Twitter, stops you, opens the link." Not "tech demo of cubes."
- Pick ONE transformative aesthetic and commit. Examples: alien crystal cavern with bioluminescent veins, post-storm liquid mercury sea under twin moons, vaporwave neon canyon with a synthwave grid floor, time-frozen ocean splash, ribbon-trail data nebula.
- DO NOT do "a flythrough of generic procedural terrain." That's the floor we're trying to clear by 5x.

WHAT TO LEAN ON (pick the combo that gives biggest visual impact):
- Custom GLSL fragment shaders for surfaces (raymarched SDFs, fbm noise displacement, voronoi crystal patterns, anisotropic specular)
- Particle systems with GPU-side update via shaders or simple instanced meshes — embers, dust, bioluminescent motes, fluid ribbons
- Custom geometry with deformed/displaced vertices (noise, sin waves, height fields)
- Postprocessing: bloom is table stakes (use UnrealBloomPass or write a custom Gaussian), chromatic aberration, vignette, depth-of-field if you can manage it cheaply
- Lighting: don't use just AmbientLight + DirectionalLight. Multiple coloured point lights, fake volumetric god rays, animated emissive materials
- Camera motion: slow orbit, dolly, or look-around — never static. If a user just sits there for 30 sec they should see ~3 distinct vibes.

INTERACTION (light touch — don't build a game):
- Mouse moves the camera or some scene variable subtly
- One or two keyboard toggles (e.g. "C" cycles palette, space pauses)
- Mobile touch should work for camera

WHEN DONE:
- `npm run build`. dist serves cleanly from `python3 -m http.server`.
- Write a playwright check that the page loads, canvas exists, no console errors after 3s
- Print summary: aesthetic chosen, which custom shaders/effects you wrote, frame budget you targeted

PERFORMANCE:
- If you write expensive shaders, render to a smaller buffer and upscale, or expose a quality knob.
- 60fps on a mid-laptop is non-negotiable; 30fps is a failure. Test it. Profile if needed.

Take one swing. Be opinionated. Pick something *YOU* find beautiful and execute it well.
