fix: auth service query result structure and HMR handling
- Access result.viewer directly (quickslice-client-js returns unwrapped)
- Preserve auth instance on window for HMR
- Check for existing grain-app before appending
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>