Adds markAllAsRead(accountId, mailboxPath) to EmailRepository — bulk marks all unread emails as seen (optimistic local update + pending change per email for server sync). A PopupMenuButton in EmailListScreen exposes this as 'Mark all as read'. Contract test verifies the mailbox- scoped behaviour. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>