# iris-reveal A circle clip-path opens from an authored origin (`iris_x`/`iris_y` percent) revealing state B over state A in one confident pass, then holds still on B. The classic register dims and desaturates the before state so the after state lands in full color; `register: plain` leaves both states untouched. A thin accent rim rides the exact iris edge while the pass runs and dissolves just before the circle clears the frame corners. Clip-path only, seek-safe in both directions. ## Files - `iris-reveal.html`: the mountable sub-composition (install target: `compositions/components/iris-reveal.html`). - `registry-item.json`: registry metadata and the variables block. - `demo.html`: a 1920x1080 host that mounts the primitive with non-default variables (QA gallery input). ## Variables | id | type | default | notes | | ---------- | ------ | ------- | ------------------------------------------------------------------------- | | `iris_x` | number | `50` | iris origin, percent of frame width (0 to 100) | | `iris_y` | number | `50` | iris origin, percent of frame height (0 to 100) | | `open_at` | number | `0.35` | seconds after mount start when the iris begins opening (0 to 8) | | `register` | enum | `color` | `color` dims and desaturates state A; `plain` leaves both states alone | | `accent` | enum | `green` | `green` maps to `--brand`, `blue` to `--accent`, `violet` to `--accent-2` | | `exit` | enum | `none` | `none` holds the final frame; `fade` and `up` release the stage | Envelope: IN = `open_at` + 1.10s iris pass, OUT = 0.5s only when `exit` is `fade` or `up`, HOLD is the sole elastic phase. The `iris-open` sync point (`hf:sfx` id `iris-land-soft`) fires when the iris clears the frame, 1.45s at defaults. ## The slot mechanism The primitive ships two named slot panels inside its `