# at_record_web Internal package of [at-record](../README.md). Not published to Hex. Lustre SPA (javascript target): login and shelf CRUD. Talks only to the `server` BFF, never directly to a PDS. Built and bundled into `server/priv/static/` by `make build`. See the [root README](../README.md) for build, run, and test instructions. ## Where browser behavior lives Three tiers, in order of preference: **CSS** for pure presentation (animation, transitions; reduced-motion is handled centrally in `css/90-interaction.css`, never re-decided in JS). **Gleam** for all logic and policy (math, thresholds, decisions; if it is testable without a browser it must be reachable from `gleam test`). **`ffi.mjs`** only for irreducible browser primitives (DOM handles, timers, camera, wasm); each export stays a dumb binding with no policy in it.