cb63aa1220
- Add WebDavSyncService.canSync() as single source of truth - Add SyncGateResult data class for structured response - Update MainViewModel.triggerManualSync() to use canSync() - Update MainViewModel.triggerAutoSync() to use canSync() - FIXES onResume bug - Update NoteEditorViewModel.triggerOnSaveSync() to use canSync() - Update SettingsViewModel.syncNow() to use canSync() - Update SyncWorker to use canSync() instead of direct prefs check All 9 sync paths now respect WiFi-only setting through one central gate.