diff --git a/src/components/blocks/FleetDiagram.astro b/src/components/blocks/FleetDiagram.astro
new file mode 100644
index 0000000..6e171f9
--- /dev/null
+++ b/src/components/blocks/FleetDiagram.astro
@@ -0,0 +1,160 @@
+---
+// FleetDiagram — orchestrator card, an arrow, and a 1-up of worker cards.
+//
+// Static shell: the captain renders literally, the workers render as toggle
+// buttons with the `data-worker` hook asserted by `scripts/verify.mjs`. The
+// `initial` worker is marked active and pressed.
+//
+// The source uses `gap:1px` over a coloured parent to draw hairlines between
+// workers; here the parent uses `var(--ink)` and the cards paint over it, so
+// the seam reads as the same tone — see the final report for the token gap
+// (source uses an off-token seam colour for the divider).
+
+interface Worker {
+ /** Used as the `data-worker` hook and the key in the source. */
+ id: string;
+ /** Short label rendered uppercase, e.g. "UI". */
+ label: string;
+ /** Body copy describing the worker's remit. */
+ strong: string;
+ /** Path label, e.g. "agent/ui". */
+ code: string;
+}
+
+interface Props {
+ orchestrator: {
+ eyebrow: string;
+ /** May contain inline ` `; rendered with `set:html`. */
+ title: string;
+ code: string;
+ };
+ workers: Worker[];
+ initial?: string;
+}
+
+const { orchestrator, workers, initial = workers[0]?.id } = Astro.props;
+---
+
+
+
+
diff --git a/src/components/blocks/HandoffTable.astro b/src/components/blocks/HandoffTable.astro
new file mode 100644
index 0000000..258ef3e
--- /dev/null
+++ b/src/components/blocks/HandoffTable.astro
@@ -0,0 +1,90 @@
+---
+// HandoffTable — the four-row "what crosses contexts" table.
+//
+// Static shell: the row data is passed in via `rows` so this component has
+// no opinion on what each handoff package contains. The table structure is
+// the load-bearing part of the design (dark header, blue row labels,
+// muted body) and lives here so the next page that needs it gets the same
+// beat for free.
+
+interface Row {
+ /** The package name, rendered as a `