diff --git a/app/src/components/LayoutShell.tsx b/app/src/components/LayoutShell.tsx
new file mode 100644
index 0000000..76647cf
--- /dev/null
+++ b/app/src/components/LayoutShell.tsx
@@ -0,0 +1,39 @@
+"use client";
+import { SidebarNav } from "./SidebarNav";
+import { WatchlistSidebar } from "./WatchlistSidebar";
+import { SymbolHeader } from "./SymbolHeader";
+import { MobileTabNav } from "./MobileTabNav";
+
+/**
+ * Main layout shell for the redesigned terminal.
+ * - Desktop (>1024px): Sidebar + Watchlist + Header + Content (3-column)
+ * - Tablet (768-1024px): Watchlist + Header + Content (2-column, sidebar hidden)
+ * - Mobile (<768px): Header + Content + TabBar (single column)
+ */
+export function LayoutShell({ children }: { children: React.ReactNode }) {
+ return (
+
+ {/* Symbol Header — always visible */}
+
+
+ {/* Main Content Area */}
+
+ {/* Left Sidebar Navigation — hidden on tablet/mobile */}
+
+
+ {/* Watchlist Sidebar — hidden on mobile */}
+
+
+ {/* Content */}
+
+
+ {children}
+
+
+
+
+ {/* Mobile Tab Navigation — shown on mobile only */}
+
+
+ );
+}
diff --git a/app/src/components/MobileTabNav.tsx b/app/src/components/MobileTabNav.tsx
new file mode 100644
index 0000000..0de6a21
--- /dev/null
+++ b/app/src/components/MobileTabNav.tsx
@@ -0,0 +1,50 @@
+"use client";
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+
+/**
+ * Mobile tab navigation bar.
+ * Replaces the sidebar on screens <768px.
+ * Displays icon + label for each section; active tab highlighted with accent color (#4f8cff).
+ */
+
+interface TabItem {
+ label: string;
+ href: string;
+ icon: string;
+}
+
+const TABS: TabItem[] = [
+ { label: "Overview", href: "/", icon: "📊" },
+ { label: "Filings", href: "/filings", icon: "📄" },
+ { label: "Options", href: "/options-dd", icon: "🔮" },
+ { label: "Execution", href: "/execution", icon: "⚡" },
+ { label: "Trade Plan", href: "/trade-plan", icon: "📋" },
+ { label: "Settings", href: "/settings", icon: "⚙️" },
+];
+
+export function MobileTabNav() {
+ const pathname = usePathname();
+
+ return (
+
+ );
+}