Replace `is Select.BLANK` / `is not Select.BLANK` with isinstance checks, as the sentinel identity varies across Textual versions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New tui/ package with 14 screens (main menu, backup, restore, targets, remotes, snapshots, verify, retention, schedule, logs, settings, wizard), 3 custom widgets (folder picker, confirm dialog, operation log), async backend wrapper, pure-Python config parser, and TCSS theme. bin/gniza now launches Textual TUI when available, falls back to gum. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>