TITLE: A Cosmic Odyssey — Drifting Through the Nebula at a Whisper PROMPT: Build a single-file, self-contained HTML page titled "Cosmic Odyssey — Drifting Through the Nebula": a grand, quiet full-viewport cosmic scene. Palette: #05030f space, #6d28d9 nebula violet, #f472b6 pink gas, #38bdf8 atmosphere, #fde68a star. Typography: title system-ui 200 uppercase wide-tracked (letter-spacing .42em), readouts ui-monospace with tabular numerals, log lines Georgia italic. Structure: a fixed full-viewport canvas at z-index 2 for stars and shooting stars; a fixed scene layer at z-index 1 holding five nebula clouds and the planet; and a scrolling
with a 100dvh hero and a second 100dvh panel. Nebula clouds are absolutely positioned vmax-sized circles filled with soft radial-gradients (violet at 55% alpha, pink at 44%, a violet floor cloud, a cyan veil near the planet, a small pink wisp) with zero filter — all softness comes from gradient stops — each animated on its own long alternating transform keyframe (54s to 92s) that drifts and breathes the cloud. The planet is a 104vmin circle anchored off the bottom-right corner: a radial-gradient body lit from the upper left, an inset box-shadow pair for the terminator falloff, a repeating-linear-gradient band layer that slowly translates to suggest rotation, a linear-gradient terminator that rotates ±6deg on a 72s loop, and an outer atmosphere ring drawn as a radial-gradient on an element inset -3.5% so the cyan halo hugs the limb. A tiny station silhouette sits on the limb: two 1px truss lines, a small bordered hub, a ring, and a 3px beacon that blinks with a steps(1,end) keyframe. Canvas engine: DPR-scaled, additive ('lighter') compositing, 340 pre-seeded stars with per-star depth, radius, alpha, twinkle speed and one of four colours, drawn with a pointer-driven parallax offset scaled by depth and a scroll-driven zoom about the screen centre; shooting stars are objects with position, velocity, life and trail length, drawn as a linear gradient stroke (white to #fde68a to transparent cyan) plus a bright head dot, spawned randomly every 3.4-7.6 seconds and on every pointerdown at the pointer position. A monospace distance readout counts up continuously from 1,284,902 km with thin-space thousands separators, gated so the DOM is only touched when the integer changes; a velocity line oscillates and is likewise gated. Pointer movement parallaxes the nebula (-30px), the planet (+16px) and the title (+7px) at different rates with easing, and scrolls drive a depth value that scales the nebula 1.5x and the planet 1.24x while fading the title out (opacity is 1 at scroll 0, so a frozen render shows the whole page). The wheel event thickens or thins the nebula by rewriting a --density custom property, clamped between 0.25 and 1.7, and moves a small meter bar. All transforms are cached and only written when the value changes. Everything is frozen under prefers-reduced-motion. All JS in one IIFE in a single inline