# Listening interface — implementation notes

Built from the complete `18-sleep` source and the exact request in `prompt.txt`.

## Choices

- The main surface has City / Forest / Water, one large native intensity slider, movement, space, the musical-layer selector, and playback. The intensity control is placed inside a quiet circular field; it remains a normal keyboard-accessible range input.
- “Adjust this place” opens all source levels, direction presets, event rules and previews, imports, noise/filter/envelope/motion controls, lo-fi/output, room decay, scenes and the sleep timer. No capabilities were removed.
- Neutral paper colours, restrained type and a stationary visual keep attention on listening. Environment changes use a small colour shift. There is no decorative animation.
- `engine.js`, `catalog.js`, `app.js`, `scenes.js` and `sleep.js` are byte-for-byte copies of the source. The only extra JavaScript paints the native slider tracks.
- The original example scene initializes the sound at its existing comfortable settings, with output at 30%. Playback still requires a click. Original scene and recording storage keys are retained, so this interface can use the same stored library at the same origin.
- Local audio paths remain pointed at the supplied common audio folder. No external libraries, services, fonts or network audio were added.

## Checks and limits

- JavaScript syntax checked with `node --check`.
- Static comparison confirms all original element IDs and setting controls remain present exactly once, and every engine/behavior source file is unchanged.
- Browser and audio interaction testing is being handled by the parent task. I did not start a server or use browser tools.
- `attempts/001/` preserves the first complete implementation. Only relative observer/audio paths are adjusted there so the copy can be opened from its nested directory.
