
Project: output/boids-simulation
Files (ES modules):
- output/boids-simulation/index.html
- output/boids-simulation/js/main.js
- output/boids-simulation/js/sim.js
- output/boids-simulation/js/boid.js

Requirements:
- Plain HTML + JS (no frameworks). The only UI is a full-screen canvas.
- Render hundreds of fast, colorful boids moving quickly.
- Boid speed must be a constant (independent of size); keep triangles small and speed high.
- No configuration UI; just the canvas.
- Split into the files above; index.html is the runnable entry point; JS uses ES modules.
- Use requestAnimationFrame; handle window resize to keep canvas full-screen.
- Use HSL color per boid for vivid colors.
- Keep loops tight; avoid unnecessary allocations inside the animation loop.

Interfaces to honor (exact signatures):
- In js/boid.js:
  export const SPEED = 220
  export class Boid {
    constructor(x, y, angle, hue) {}
    update(dt, neighbors, width, height) {}
    draw(ctx) {}
  }

- In js/sim.js:
  import { Boid, SPEED } from './boid.js'
  export class Simulation {
    constructor(canvas, count) {}
    update(dt) {}
    draw() {}
  }

- In js/main.js:
  import { Simulation } from './sim.js'
  // create and run the simulation; RAF loop; handle resize
  // new Simulation(canvas, COUNT)
