- undo/redo via buttons and via Ctrl+Z outside text fields
- focus guard: Ctrl+Z inside the campaign name field leaves the app
history untouched (the browser owns the field's undo)
- an undone state survives a reload (undo writes through autosave)
- Clear is undoable: one undo step restores the wiped dashboard