You shipped IRON FIST HARBOR ~3 minutes ago — Toro vs Kage 2D fighter, best-of-3, super meter. It works but it feels FLAT during combat. The user said: "right now there is no animations when i attack. we can do better than this. let fable add some visual juice like it did so well in metroidvania."

YOUR JOB — add visual juice. Trust your taste. No new game systems, no new genres, no character swaps. Polish the **feel of combat** and the **feel of being in this scene**.

CONSTRAINTS:
- Same 2 characters (Toro + Kage), same harbor stage, same controls, same round flow.
- You already have THREE poses per character on disk in `public/sprites/`: `{toro,kage}-{idle,attack,hurt}.png`. Right now `assets.ts` + `game.ts` only use the idle pose and animate via canvas transforms. **Switch to the attack pose during the attack state's active window**, and the hurt pose during hit-stun. ~3 frames each is fine.
- gpt-image-2 chars drift between poses — that's OK. The drift will read as "the character is in motion" not "this is a different person" because the harness is the magenta chroma key + same character-design constant.
- You may generate up to 2 new gpt-image-2 plates if you want one extra visual (a super-move charge effect, a stage-background secondary state for crowd reaction, etc.) but it's NOT required. Cap: $0.08 max.

WHAT "JUICE" MEANS HERE (do as many as you want):
- **Hit sparks** on impact — bright canvas particles, white→yellow→red, expanding ring + arc shards. Different for light vs heavy.
- **Screen shake** on heavy hits / supers. Tunable amplitude. Decays in ~120ms.
- **Hit-stop / freeze frame** on connect — pause both fighters for 3-5 frames before knockback applies. Makes hits FEEL heavy.
- **Knockback trail** — small ghost-image trail behind the receiving fighter for a few frames.
- **Damage numbers** floating up from hit point.
- **Super flash** — full-screen flash + sustained slow-mo when super is triggered.
- **KO impact** — stronger shake + slow-mo + camera zoom toward winner.
- **Crowd subtle motion** — the painted harbor crowd in the bg can flicker / wave with a noise mask.
- **Character motion blur / streaks** on dash, jump-arrival, super.
- **Particle dust on landing** — kick up at the floor.
- **Health-bar critical glow + shake** when below 25%.
- **Round-win pose** — Toro/Kage's `attack` pose held with a glow rim on win.

PIPELINE:
1. Read `src/game.ts`, `src/assets.ts`, `src/main.ts` so you understand the existing systems.
2. Edit `game.ts` to swap fighter sprites by state, add a Particle/Spark system, screen-shake, hit-stop, super flash.
3. `npm run build`. dist/ must populate. e2e should still pass.
4. ONE-LINE summary at the end of your changes.

OUT OF SCOPE:
- Don't rewrite the game from scratch.
- Don't add a new character / stage / move / mechanic.
- Don't add audio overhaul (basic beeps are fine, OK to add 1-2 percussive hit synth sounds).
- Don't switch to a sprite atlas or a new asset pipeline.

BUDGET: 40 turns max. Bias toward shipping incremental juice over polishing one thing endlessly. Be efficient — you've been here before, the codebase is in your cache from 3 min ago.
