diff --git a/apps/dashboard/src/lib/observatory/ObservatoryStage.svelte b/apps/dashboard/src/lib/observatory/ObservatoryStage.svelte
index 8ad5d0f..d7ea608 100644
--- a/apps/dashboard/src/lib/observatory/ObservatoryStage.svelte
+++ b/apps/dashboard/src/lib/observatory/ObservatoryStage.svelte
@@ -44,6 +44,19 @@
ondemochange?: (demo: DemoMode) => void;
/** When provided, renders the exit control (× back to the dashboard). */
onexit?: () => void;
+ /**
+ * Embedded mode — the stage fills its PARENT (absolute) instead of the
+ * viewport (fixed). Used by the main graph page, where the field is the
+ * default renderer living under the page's own chrome.
+ */
+ embedded?: boolean;
+ /**
+ * 'full' — telemetry strip, spine, verdicts, switcher, exit (the route
+ * and the takeover overlay).
+ * 'none' — pure living canvas + loading/error text only; the host page
+ * provides all chrome (the main graph's field renderer).
+ */
+ chrome?: 'full' | 'none';
}
let {
@@ -53,7 +66,9 @@
capture = false,
showSwitcher = true,
ondemochange,
- onexit
+ onexit,
+ embedded = false,
+ chrome = 'full'
}: Props = $props();
// Human labels for the switcher chips — short, mono, uppercase (visual DNA §7.3).
@@ -246,8 +261,11 @@