`main.rs` had grown to 804 lines, 4 over the 800-line ceiling
documented in CLAUDE.md. `make_rotate_cursor_rgba` is the longest
self-contained helper in the file (~70 lines) and depends only on
`skia_safe`, so it's a clean cut:
- New file: `crates/openpencil-desktop/src/cursor_icon.rs` (74
lines). Function visibility lifted to `pub(crate)` so main can
call it via `cursor_icon::make_rotate_cursor_rgba()`.
- `main.rs` lost lines 62-131, drops to 735 lines (well under
cap).
- `mod cursor_icon;` slotted between `chat_subprocess` and `export`
in the alphabetical mod list.
- The single call site (line 250) qualified with the module path.
No behavior change — function moved verbatim with all comments +
the two-pass halo/core stroke logic intact.
Closes Task #55 follow-up cap violation. 54 desktop tests still
pass. 250+ shell-core tests pass. shell-native 20 tests pass.
Combined with the prior input.rs split (5caa2eb3), every OP source
file is now under the 800-line cap.