/**
* The declarative binding walker - attaches signal-driven behavior to SERVER-RENDERED markup.
* No VDOM, no hydration re-render: the HTML the server sent (e.g. via `@nifrajs/web-vanilla`) is
* already the initial state; bindings update it surgically when signals change.
*
* The attribute set is CLOSED and documented - six bindings, no expression language. Values are
* signal/handler NAMES looked up in the island's scope, never evaluated code, so markup can't
* inject behavior:
*
* data-bind-text="count" textContent ← String(signal())
* data-bind-show="isOpen" hidden ← !signal()
* data-bind-class="active:isOpen,b:sigB" classList.toggle per pair
* data-bind-attr="aria-expanded:isOpen" setAttribute / removeAttribute (false/null remove)
* data-bind-value="query" two-way /