✓ Two crowns ✓ Same mass, different density ✓ Vertical slider ✓ Slider works ✓ Slider controls crowns — Slider direction correct ✓ Full slider range — Fall animation ✓ Water displacement ✓ Rising water level ✓ Splash effects ✓ Physics correct ✓ Live mass value ✓ Live volume value ✓ Live density value ✓ Live displaced water ✓ Gilded displaces more ✓ Heureka animation ✓ No external deps ✓ Light bg / dark text ✓ Self-contained HTML
Slider direction is inverted (min=0 at top means air, max=100 at bottom means water, but the vertical range input with `writing-mode: bt-lr` is not correctly oriented for browser rendering — the visual top of the slider maps to value 0/air, which would be correct semantically, but the crown Y-position math moves crowns DOWN as progress increases, which is correct; however the browser default for a vertical range input typically has max at top, and without confirmed inversion the direction appears incorrect for the native thumb position); no fall animation — crowns jump linearly without a drop/free-fall curve; splash effects are random and not tied to the entry moment; Heureka triggers and resets correctly but only fires once per full submersion event.
Slider direction is inverted (min=0 at top means air, max=100 at bottom means water, but the vertical range input with `writing-mode: bt-lr` is not correctly oriented for browser rendering — the visual top of the slider maps to value 0/air, which would be correct semantically, but the crown Y-position math moves crowns DOWN as progress increases, which is correct; however the browser default for a vertical range input typically has max at top, and without confirmed inversion the direction appears incorrect for the native thumb position); no fall animation — crowns jump linearly without a drop/free-fall curve; splash effects are random and not tied to the entry moment; Heureka triggers and resets correctly but only fires once per full submersion event.