OpenLogi's HID++ device layer: everything that knows Logitech's protocol and nothing about a host.
[backend::HidBackend] is the seam. Above it sits this crate — enumeration
and probing, the write layer, capture sessions, pairing. Below it sits one
implementation per host HID API: openlogi-hid over async-hid, a
scripted device tree in tests, WebHID under wasm if that is ever built.
Nothing here opens a device by itself; everything that needs one is handed
a backend. That is what makes the layer reusable, and it is checked rather
than trusted — CI's wasm (portable crates) job builds this crate for a
target with no OS underneath it, so a dependency that assumes one fails
there and nowhere else.