Theme-resolved canvas colors (round 20: the theme->canvas wiring,
closing the gap behind two shipped regressions). Generic selectors
only: the spec's attribute-selector mappers (node[_icon],
edge[_ecolor], ...) are more specific and win by construction, so
theming never fights the encoding. Merged after the structural
defaults (theme beats fallback literals) and before the user
stylesheet (adopter overrides beat theme).
Theme-resolved canvas colors (round 20: the theme->canvas wiring, closing the gap behind two shipped regressions). Generic selectors only: the spec's attribute-selector mappers (node[_icon], edge[_ecolor], ...) are more specific and win by construction, so theming never fights the encoding. Merged after the structural defaults (theme beats fallback literals) and before the user stylesheet (adopter overrides beat theme).