The isPlatformBrowser guard in App.ngOnInit() was blocking
stationConfig.load() on the server, so SSR always rendered with
DEFAULT_CONFIG (hardcoded colors, assets, content).
Two-part fix:
- main.server.ts: Add APP_INITIALIZER that blocks server rendering
until station config is fetched from the API. Only runs on the
server — is a no-op in the browser to avoid blocking the client.
- app.ts: Move stationConfig.load() before the isPlatformBrowser
guard so ngOnInit also calls it on the server as a safety net.
This ensures SSR HTML contains real DB values (colors, hero icon,
station name, etc.) instead of build-time defaults — eliminating
the stale-asset flash reported by users.