diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro
index f6908d8..30fab04 100644
--- a/src/layouts/BaseLayout.astro
+++ b/src/layouts/BaseLayout.astro
@@ -186,6 +186,12 @@ const fullTitle = title === 'Home' ? homeTitle : `${title} | ${brand}`;
from rewriting the external src and preserves data-site-id / defer. -->
+
+
+
diff --git a/src/middleware.ts b/src/middleware.ts
index 3e8649e..812c39a 100644
--- a/src/middleware.ts
+++ b/src/middleware.ts
@@ -155,7 +155,8 @@ export const onRequest = defineMiddleware(async (context, next) => {
// - inline scripts/styles: Required for Astro framework
// - https://www.googletagmanager.com & https://www.google-analytics.com: GA4
// - https://plausible.io: Plausible Analytics
- // - https://api.wrnexus.com: WRNexus web-push SDK (sdk.js) + runtime config
+ // - https://api.wrnexus.com: WRNexus web-push SDK (sdk.js), bot widget
+ // (bots/widget.js) + runtime config/iframe served from the same origin
// Note: unsafe-eval is removed in production (only needed during Astro HMR dev mode)
const isProduction = import.meta.env.PROD;
const scriptSrc = isProduction
@@ -172,7 +173,7 @@ export const onRequest = defineMiddleware(async (context, next) => {
"worker-src 'self'",
"manifest-src 'self'",
"object-src 'none'", // Block Flash/plugins (defense-in-depth)
- "frame-src https://www.google.com", // Allow Google Maps iframe embed
+ "frame-src https://www.google.com https://api.wrnexus.com", // Google Maps iframe + WRNexus bot widget iframe
"frame-ancestors 'none'",
"base-uri 'self'",
"form-action 'self'",