Hello,
Yes, this is expected behaviour, not a bug. It’s the plugin’s Google Fonts blocker doing its job.
Your site loads four Google Fonts through Elementor (Roboto, Roboto Slab, Space Grotesk and Manrope), all from fonts.googleapis.com. The plugin’s Google Fonts blocker holds those font stylesheets back until consent is given, because requesting them sends the visitor’s IP address to Google before they have agreed. That’s the exact thing the blocker is there to prevent, and it’s the point at issue in the well-known German court ruling on Google Fonts. The fonts are categorised as “functional”, so until the visitor accepts (Accept All grants functional too), the page falls back to a system font, and the real font swaps in the moment consent is recorded. That’s the flash you’re seeing.
The best fix, both for the flash and for compliance, is to load the fonts from your own server instead of Google’s. Since the fonts come from Elementor, you don’t even need to do this by hand: go to Elementor, Settings, Advanced (or the performance/loading panel depending on your version) and turn on “Google Fonts: Load locally” / host Google Fonts locally. Once Elementor serves the fonts from your own domain they are no longer third-party, the blocker never touches them, there is no flash of fallback font, and no visitor IP reaches Google before consent. Remember to clear any page cache afterwards.
If for some reason you can’t self-host right now, there are two middle-ground options. You can let a specific font stylesheet bypass the blocker by adding the CSS class faz-skip to its link tag, or you can disable the Google Fonts blocker template inside the plugin. Be aware, though, that both of these load Google Fonts before consent, which reintroduces the IP exposure the blocker was preventing, so self-hosting really is the cleaner answer.
A small heads-up: when I looked at the page it was currently serving the Google Fonts unblocked and without the consent banner showing, which usually means a cached copy is being served. After you make any change, purge your site/page cache and test again in a private window so you’re looking at the real, fresh output.
Hope this helps.