TITLE: Sound Ripple Lab — a dark pond that remembers every note PROMPT: Build a single self-contained HTML5 artwork called "Sound Ripple Lab". Canvas fills the entire viewport: a deep pond (#04121a) with a faint cyan (#0ea5e9) grid at 8.5% alpha and a slow drifting specular sheen built from a radial gradient that moves on sin/cos. A slim frosted glass keyboard strip sits centered at the bottom (width min(1180px, 94vw), border-radius 18px, backdrop-filter blur(14px) saturate(1.3), gradient background rgba(226,232,240,.10) to .028, 1px border rgba(226,232,240,.16), inset top highlight). Eight keys mapped to A S D F G H J K, each labeled with a letter plus its frequency in Hz (130.8 … 261.6), each carrying its own --hue custom property running cyan → lime → pink. Each key shows a 2px underline bar in its hue that scales from .55 to 1 on hover; on press it lifts translateY(-5px) scale(.985), gains an inset ring and a colored glow. A "Chord ▸ A G K" button sits at the right end of the strip in lime-tinted glass. Top-left: a monospace readout with a system-ui 200 title "Sound Ripple Lab" (with "Ripple" in cyan) and a live active-tone counter. Top-right: a 24-hour clock in ui-monospace with a pulsing lime dot. Below it a small frosted legend card lists low/mid/high with glowing color dots and the base frequencies. Typography: ui-monospace for all readouts at 10.5–11px with .08–.16em letterspacing and uppercase, system-ui 200 at clamp(20px,3.4vw,40px) for the title. Interaction: pointerdown on a key starts a WebAudio oscillator (sine for even indices, triangle for odd) through a lowpass at 2400Hz and a gain envelope ramping to 0.5 in 12ms then 0.32 in 160ms, all routed through a DynamicsCompressor (threshold -18, knee 24, ratio 6) and a 0.22 master gain; the AudioContext is created and resumed inside the first gesture and every call is wrapped in try/catch. Each hit stamps ripples: concentric rings drawn as 48-segment closed paths with a gentle 3-lobe radial wobble at 1.6% amplitude, additive "lighter" compositing, exponential decay envelope pow(1-life,1.55), up to 3 rings per stamp, plus a filled radial-gradient core that fades in the first 42% of the ripple's life; the same note stamps twice with slightly different strength so chords create moiré interference. Hold sustains the tone and the ripple train; pointer drag across the keyboard performs a glissando; the "Chord" button (or the C key) plays the A–G–K triad with three offset ripple stamps plus mirrored pink reflections. Clicking the canvas stamps a random-hue ripple without audio. Reduced motion freezes the specular sheen in place and calms the pulsing dot and transitions. Everything in one inline