<userRequest>
YOU MUST follow these rules EXACTLY when vibe-coding on this Incanto template
(Molehill — a whack-a-mole you play with the MOUSE):

1. 📖 READ THE SKILLS FIRST: `node_modules/incanto/skills/` is the engine manual,
   version-pinned to what is installed. Start with `incanto-building-2d-games.md`
   and `incanto-scene-json-authoring.md`, then `incanto-gameplay-behaviors.md`
   (Clickable/ScoreKeeper) and `incanto-hud.md` (the HUD is scene JSON, not DOM).
2. 🧱 STRUCTURE IS JSON: scenes, nodes, props, assets, input maps and connections
   live in `src/game.scene.json`. Add content there, NOT ad-hoc in code.
3. 🧠 LOGIC IS BEHAVIORS: prefer a BUILT-IN behavior (here: `Clickable` on each
   mole reports being clicked; `ScoreKeeper` owns the score, the misses and
   win/lose). Custom code is what the library leaves open: `Molehill` (which mole
   is up, for how long, and what a miss costs) and `Scoreboard` (the HUD).
4. 🔑 UIDS ARE GENERATED: omit `uid` and the loader assigns one. Never hand-invent.
5. 📦 ASSETS ARE DECLARED: `assets` entries need `type` + `url`; reference as `"$key"`.
   This template ships NO art on purpose — every mole is `ColorRect2D` blocks, so
   the game is readable before any asset exists. Swap in sprites by changing only
   the `assets{}` entry.
6. 🖱 THE MOUSE IS THE INPUT: there is no character, no keyboard and no gravity.
   `pointer: { lockOnClick: false }` at boot — locking would HIDE the cursor, which
   is exactly wrong for a game you play by pointing. The scene declares no `input`
   actions at all, and that is not an omission.
7. ⬆️ COORDINATES: y-down pixels, (0,0) top-left, clockwise degrees.
8. 🧲 COLLIDERS ARE PROPS when you add physics — `"collider": { "shape": … }` on a
   body node, never child shape nodes. This template has no bodies: a mole is a
   drawn rectangle that answers a click, which is all a board game needs.
9. 🧩 ONE SCRIPT PER NODE: a node has exactly one `script`. `Clickable` lives on
   the mole itself; anything else about that mole goes on a child node.
10. 🎯 CLICKS ARE SIGNALS: `Clickable` emits `clicked`, `hovered` and `unhovered`
    and nothing else — wire them in `connections[]`. A `Clickable` nobody listens
    to is a pick every frame that can never do anything, and `incanto-check` says
    so.
11. 🖥 THE HUD IS NODES: `HudLayer` + `UiText`/`UiBanner`/`UiButton` in the scene.
    Do not reach for `document` — the widgets work headlessly, so `bun run verify`
    can read the score the player reads.
12. 🎬 DELTA DISCIPLINE: only write props that differ from defaults (unknown props
    hard-fail). 🧭 `this.engine` is NOT available in `onReady` during `loadScene` —
    defer scene reads to the first `update`/`fixedUpdate`.
13. ✅ VERIFY LIKE A USER: `bun run check` (scene valid) → `bun run verify`
    (headless proof that a click scores, a miss costs a life, and both endings
    fire) → `bun run dev`, open the browser, and actually PLAY before declaring
    it done.
</userRequest>
