Backend-agnostic geometry a layer atom publishes for rendering. A
discriminated union: each variant carries exactly the primitives its
kind needs, and nothing more. Both the SVG self-render path and the
Canvas renderer paint against this same shape, so a single
layer-authoring API drives either backend.
Coordinates are already scale-projected (pixel space); color is
null when the atom defers to its CSS custom property (the SVG path
reads the var directly, the Canvas renderer resolves it via
getComputedStyle).