Text-on-image: blind-first, offline, private, zero AI, minimal perms.
