Two diagrams, two themes, one page, one shared stylesheet. Each instance stamps data-grafloria-instance on its root and writes ONLY its own scoped variable block ([data-grafloria-instance="grafloria-3"] { --grafloria-node-fill: … }). So the light one and the dark one never clobber each other — the classic bug was a global rule keyed by theme name, where the last inject won for both.
instance A — light
instance B — dark