diff --git a/components/portfolio/FeaturedDossier.tsx b/components/portfolio/FeaturedDossier.tsx
new file mode 100644
index 0000000..c242f11
--- /dev/null
+++ b/components/portfolio/FeaturedDossier.tsx
@@ -0,0 +1,93 @@
+"use client";
+
+import { m, useReducedMotion } from "motion/react";
+import { featuredDossier } from "@/lib/portfolio";
+
+const fieldRows = [
+ { label: "MISSION", value: featuredDossier.mission },
+ { label: "CONSTRAINT", value: featuredDossier.constraint ?? "—" },
+ { label: "SYSTEM", value: featuredDossier.system },
+ { label: "RESULT", value: featuredDossier.result },
+];
+
+export function FeaturedDossier() {
+ const shouldReduceMotion = useReducedMotion();
+
+ return (
+
+
+
+
FEATURED DOSSIER /.00
+
+
+
+
+
+
+ {featuredDossier.title}
+
+
+
+
+
+ {fieldRows.map((row) => (
+
+
{row.label}
+
{row.value}
+
+ ))}
+
+
+
+
+
+
+ );
+}
diff --git a/components/portfolio/PortfolioNav.tsx b/components/portfolio/PortfolioNav.tsx
new file mode 100644
index 0000000..f325c6a
--- /dev/null
+++ b/components/portfolio/PortfolioNav.tsx
@@ -0,0 +1,78 @@
+"use client";
+
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+
+const navLinks = [
+ { label: "WORK", href: "#work" },
+ { label: "CAPABILITIES", href: "#capabilities" },
+ { label: "FIELD NOTES", href: "/blog/" },
+ { label: "CONTACT", href: "#contact" },
+];
+
+function openCommandPalette() {
+ window.dispatchEvent(new CustomEvent("blacksite:palette"));
+}
+
+export function PortfolioNav() {
+ const pathname = usePathname();
+
+ return (
+
+ );
+}
diff --git a/components/portfolio/StatusBar.tsx b/components/portfolio/StatusBar.tsx
new file mode 100644
index 0000000..84c7c10
--- /dev/null
+++ b/components/portfolio/StatusBar.tsx
@@ -0,0 +1,23 @@
+import { statusLine } from "@/lib/portfolio";
+
+export function StatusBar() {
+ return (
+
+ );
+}