Index: src/services/OgImageService.js
===================================================================
--- src/services/OgImageService.js	(revision d9c5eb825f0e52ae97cc1f60c9486b42d53b3795)
+++ src/services/OgImageService.js	(revision 3b4095ff33ac09fe7504ae1c6b90268186f20562)
@@ -90,7 +90,10 @@
 
   const palette = ThemeService.PALETTES[site.palette] ? site.palette : 'klonkt';
-  // Follow the site's "default theme for new visitors" (theme_override): a light card when the site
-  // is set to Light, otherwise dark (an OG image is static, so Auto/Dark → dark).
-  const theme = site.theme_override === 'light' ? 'light' : 'dark';
+  // Card variant: an explicit SEO override (og_theme) wins; else follow the site's "default
+  // theme for new visitors" (theme_override) — light when the site is set to Light, otherwise
+  // dark (an OG image is static, so Auto/Dark → dark).
+  const theme = (site.og_theme === 'light' || site.og_theme === 'dark')
+    ? site.og_theme
+    : (site.theme_override === 'light' ? 'light' : 'dark');
   const accent = site.accent || ((ThemeService.PALETTES[palette] || ThemeService.PALETTES.klonkt)[theme] || ThemeService.PALETTES.klonkt.dark).accent;
   const key = crypto.createHash('sha1')
