The Moon stays a dedicated, first-class hero element — only its image
source becomes configurable. Adds optional src/alt props alongside the
existing size/glow.
- HeroElement: the moon renders props.src when present, else falls back to
the default /assets/img/hero-moon.png. Size, glow, and animation are
unchanged. alt is now props.alt (default '', same as before).
- HeroEditor MoonPanel: adds an image upload (reusing the existing shared
api.admin.upload workflow, same as the image/background panels) that sets
props.src, an alt-text field, and a "Use default" reset. Size/glow
controls unchanged.
Fully backwards compatible: existing layouts with only size/glow and no
src render exactly as today via the fallback. No DB, API, or hero-JSON
changes; no migration.