| 1 Overlay | Black ~2pt line + two rifle-scope end ticks; ticks draggable; replaces the cyan bbox + red arrow | Tape line step: the black line, its two end ticks, the "was / now" pair below the stage, and the hint copy |
| 2 Controls | Pan / zoom / tilt the photo; ticks ≥44×44px, draggable, arrow + Shift+arrow fine nudge; one pointer path | Zoom now has a visible row (− / slider / + / Fit) beside the tilt row, plus wheel, pinch, +/− keys and double-click to fit; pan = drag, tilt = handle + arrows |
| 3 Fixed line | The reference line is fixed in the MIDDLE of the rectangle, and it IS the crop line: its ends are the crop insets | The line's x is computed from the frame, never from the slab's transform; the crop % moves only its two ends, (1 − fill)/2 of the long axis in from the top and the bottom |
| 4 Crop % | Global settings.crop_fill (default 90) replaces both FILL = 0.9 copies, read live, non-retro. It does not change the aspect ratio | Crop fill control on the tape step and the Settings step: 90% puts the overlay 5% in from the top and the bottom; the 3:4 rectangle itself never changes |
| 5 Crop content | Post-BG-removal, slab pixels only, transparent background, bounds = slab extent | Mask step note + the crop frame outline around the stage |
| 6 Transform scope | Tilt persists only to the calibration pic and its dimension-overlay clone; siblings keep their own orientation | Photos-ready step lineup: calibration + dimensioned copy tilted, backside sibling untouched |
| 7 Doc fix | capture/types.ts:46 says "80%-fill"; live value is 90% | Noted in the Implementation notes card on the Settings step |