Theme Resonance Bench
Live gatherings now stamp data-spw-theme-cluster and
--spw-theme-cluster-index when kin share a payload; the cauldron loads this
sheet only then. This bench keeps the same contract as static specimens so the waveform
can be compared without a populated garden. Credit and spend hues are the room's
existing probe and binding colors — not a third palette.
1. Credit cluster — net-positive valence
Three picked terms sharing a topic (group: material), all wonder/value-leaning
operators. Net valence is positive, so the cluster discharges --op-probe-color — the
same hue wonder already carries elsewhere on the site. Watch the edge, not the text; the wave arcs
across the three roughly a third of a cycle apart instead of firing together.
2. Spend cluster — net-negative valence
Two picked terms sharing a different topic (group: commitment), binding/action-leaning.
Net valence is negative, so this cluster discharges --op-binding-color instead — the
same earthy hue a commitment already carries in electrostatic-affordances.css. A
credit cluster and a spend cluster on the same gathering should read as distinguishable at a
glance, not just by hovering to check a tooltip.
3. Unclustered remainder — no treatment
A fragment with nothing to combine with gets no data-spw-theme-cluster attribute and no
animation at all — composeVisionDrafts() already skips exactly these when drafting
prompts, so the felt treatment should agree with the data: nothing to gather, nothing to show.
4. Both channels on one source
A source can be structurally kin (shares an operator/region with something else gathered) and thematically kin (shares a topic) at the same time. The two waves run on separate timing channels — 9s/700ms here versus field-physics.css's 14s/900ms — deliberately out of phase with each other, so a reader who has learned to read one doesn't mistake it for the other.
5. Reduced motion
With prefers-reduced-motion: reduce, the wave becomes a static dashed outline in the
cluster's charge color — legible without moving anything, same fallback shape field-physics.css
already uses for the gather wave. Toggle your OS setting to see this specimen change; nothing here
is JS-driven.