Option A. A Spine-like rig (bones → slots → skin) written in ~300 lines of TypeScript on top of
PixiJS v8 (MIT). Bones are pure math; slots are flat sprites in draw order. Animation is procedural:
breathing is a sine on the torso bone, blinking toggles the blink slot on a seeded
schedule, the page turn rotates arm_r and swaps the prop texture. None of it references a
specific drawing, so any part combination and any seat pose plays the same code. Skin, hair and accessory colours are
a multiply tint on white-based layers. Facing is a mirrored root matrix.