//! 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 exceptions are feature-gated (both on by default): reading and writing
//! that config file (`fs`), and locale negotiation (`locale`), which reads the
//! host's language preference. Without them this crate touches no host at all,
//! which is what the `wasm (portable crates)` CI job checks.