r220 extracted the marquee geometry algorithm to a pure utility module (`marquee.ts`), refactored the Canvas to use ref-based document listeners (no more re-registration), added a visual snap indicator (yellow dots), memoized the outline renderers, and audited the selection snapshot to include all 6+ layer fields plus a monotonic seq counter.
The marquee module is the canonical example of the r220 pattern: **algorithm in a pure module, presentation in a React component**. It can be tested in isolation without React/DOM.
**Key changes**:
**Verification**: 355 unit tests (74 r220 + 281 prior) + 76 Playwright (28 r220 + 29 r219 + 19 prior) = **431/431 passing**. Build clean, 0 iframes, 0 postMessage.
**Shipped**: `feat/id9-r220-refinement` @ `123f586`. Awaiting merge to main + prod deploy.