* Add the rank-0 Item leaf variants to the Graphic enum, rendering leaves and list rows through shared per-row logic
* Traverse the rank-0 Graphic leaf variants in the vector node helpers and flattening
* Reach rank-0 vector graphics from the styling and gradient-fitting helpers
* Two code review fixes
* Fix comment
* Make the Artboard and Gradient newtype fields public to match the other list newtypes
* Rename the Graphic enum's self-named Graphic::Graphic variant to Graphic::GraphicList
* Rename the Graphic::Vector variant to Graphic::VectorList
* Rename the Graphic::RasterCPU variant to Graphic::RasterCPUList
* Rename the Graphic::RasterGPU variant to Graphic::RasterGPUList
* Rename the Graphic::Color variant to Graphic::ColorList
* Rename the Graphic::Gradient variant to Graphic::GradientList
* Rename the Graphic::Text variant to Graphic::TextList
* Restore the SVG group tag comment that the variant rename sweep clobbered
* Add the appearance model types and attribute constants
* Dual-write the appearance attribute alongside the fill/stroke pair in all paint-writing nodes
* Read paint from the appearance attribute in the renderer, analysis, metadata, and editor, cascading from ancestors
* Retire the fill/stroke attribute pair and the Vector stroke field in favor of the appearance attribute
* Replace the Stroke node's paint order input with the relative chain order of the Fill and Stroke nodes
* Code review fixes
* Re-save demo art
* Stamp coverages in place and fuse the renderer's per-item appearance reads into single walks
* Treat an empty appearance as the undeclared state so padded rows inherit instead of blocking the cascade
* Update demo art
* Treat padded appearance rows as undeclared in the boolean flatten's group recursion
* Make the 'Solidify Stroke' node preserve graphic structure instead of flattening its input
* Add a shared trait letting element-wise vector modifiers recurse into graphic groups
* Make 20 element-wise vector modifier nodes accept graphic input
* Make 'Separate Subpaths' and 'Points to Polyline' accept graphic input
* Make the 'Map Points' node accept graphic input
* Add TODO comments to the measure nodes deferred until the Graphic lowering refactor
* Honor clipping masks when rendering Vector[] lists, not just Graphic[] groups
* Keep per-layer click targets when a Vector[] round-trips through a Graphic[] wrapper
* Skip the rebuild and the merged-layers snapshot when flattening a lone anonymous graphic wrapper
* Fix a group's bounds excluding its raster children and stretching to the origin
* Fix SVG clipping masks landing in the wrong space when sibling layers differ in transform
* Stop chain node insertion from stranding a node on layers without a chain
* Gate the Layers panel blending controls on whether the layer can host them
* Gate the fill and stroke setters on whether the layer can host paint nodes
* Make the tool options fill and stroke controls treat layers that cannot take paint as unselected
* Remove the unused first_selected_stroke_weight helper