//! Shared types and configuration for OpenLogi.
//!
//! Everything here is data — the device model, the action catalogue, the
//! binding types, the shape of the config file. It must never depend on
//! `hidpp`, `async-hid`, or any platform-specific event/window API; those live
//! in sibling crates.
//!
//! The one exception is reading and writing that config file, which is gated
//! behind the `fs` feature (on by default). Without it this crate touches no
//! host at all, which is what the `wasm (portable crates)` CI job checks.