diff --git a/CLAUDE.md b/CLAUDE.md
index 4ed42e6..cea3024 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -6,3 +6,11 @@ Before starting the dev server, check if it's already running:
- Use `lsof -i :6827` or check for existing background tasks
- The dev server runs on port 6827 (may fall back to 6828 if port is in use)
- Start with `bun run --cwd apps/publisher-dashboard dev` or `devenv up`
+
+## macOS sed Syntax
+
+macOS uses BSD sed which differs from GNU sed:
+- In-place edit requires empty string for backup: `sed -i '' 's/old/new/g' file`
+- GNU sed (Linux): `sed -i 's/old/new/g' file`
+- Use `|` as delimiter when patterns contain `/`: `sed -i '' 's|old/path|new/path|g' file`
+- For multiple files: `for f in *.txt; do sed -i '' 's/old/new/g' "$f"; done`
diff --git a/apps/publisher-dashboard/src/lib/components/layout/admin/admin-header.svelte b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-header.svelte
new file mode 100644
index 0000000..4d6f5dc
--- /dev/null
+++ b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-header.svelte
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
{title}
+
Admin
+
+
+
+
diff --git a/apps/publisher-dashboard/src/lib/components/layout/admin/admin-layout.svelte b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-layout.svelte
new file mode 100644
index 0000000..0f37356
--- /dev/null
+++ b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-layout.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+ {@render children()}
+
+
+
+
diff --git a/apps/publisher-dashboard/src/lib/components/layout/admin/admin-mobile-nav.svelte b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-mobile-nav.svelte
new file mode 100644
index 0000000..a66238f
--- /dev/null
+++ b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-mobile-nav.svelte
@@ -0,0 +1,189 @@
+
+
+
+
+ {#snippet child({ props })}
+
+
+
+
+ Open menu
+
+ {/snippet}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if user?.avatarUrl}
+
+ {:else}
+
+ {initials}
+
+ {/if}
+
+
{user?.displayName ?? user?.email ?? "Loading..."}
+
Admin
+
+
+
+
+
+
+
+
diff --git a/apps/publisher-dashboard/src/lib/components/layout/admin/admin-sidebar.svelte b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-sidebar.svelte
new file mode 100644
index 0000000..3161c52
--- /dev/null
+++ b/apps/publisher-dashboard/src/lib/components/layout/admin/admin-sidebar.svelte
@@ -0,0 +1,228 @@
+
+
+
diff --git a/apps/publisher-dashboard/src/lib/components/layout/admin/index.ts b/apps/publisher-dashboard/src/lib/components/layout/admin/index.ts
new file mode 100644
index 0000000..c0d9636
--- /dev/null
+++ b/apps/publisher-dashboard/src/lib/components/layout/admin/index.ts
@@ -0,0 +1,4 @@
+export { default as AdminHeader } from "./admin-header.svelte";
+export { default as AdminLayout } from "./admin-layout.svelte";
+export { default as AdminMobileNav } from "./admin-mobile-nav.svelte";
+export { default as AdminSidebar } from "./admin-sidebar.svelte";
diff --git a/apps/publisher-dashboard/src/lib/components/layout/app-header.svelte b/apps/publisher-dashboard/src/lib/components/layout/dashboard/app-header.svelte
similarity index 100%
rename from apps/publisher-dashboard/src/lib/components/layout/app-header.svelte
rename to apps/publisher-dashboard/src/lib/components/layout/dashboard/app-header.svelte
diff --git a/apps/publisher-dashboard/src/lib/components/layout/app-sidebar.svelte b/apps/publisher-dashboard/src/lib/components/layout/dashboard/app-sidebar.svelte
similarity index 100%
rename from apps/publisher-dashboard/src/lib/components/layout/app-sidebar.svelte
rename to apps/publisher-dashboard/src/lib/components/layout/dashboard/app-sidebar.svelte
diff --git a/apps/publisher-dashboard/src/lib/components/layout/dashboard-layout.svelte b/apps/publisher-dashboard/src/lib/components/layout/dashboard/dashboard-layout.svelte
similarity index 100%
rename from apps/publisher-dashboard/src/lib/components/layout/dashboard-layout.svelte
rename to apps/publisher-dashboard/src/lib/components/layout/dashboard/dashboard-layout.svelte
diff --git a/apps/publisher-dashboard/src/lib/components/layout/email-verification-banner.svelte b/apps/publisher-dashboard/src/lib/components/layout/dashboard/email-verification-banner.svelte
similarity index 100%
rename from apps/publisher-dashboard/src/lib/components/layout/email-verification-banner.svelte
rename to apps/publisher-dashboard/src/lib/components/layout/dashboard/email-verification-banner.svelte
diff --git a/apps/publisher-dashboard/src/lib/components/layout/dashboard/index.ts b/apps/publisher-dashboard/src/lib/components/layout/dashboard/index.ts
new file mode 100644
index 0000000..2a18177
--- /dev/null
+++ b/apps/publisher-dashboard/src/lib/components/layout/dashboard/index.ts
@@ -0,0 +1,7 @@
+export { default as AppHeader } from "./app-header.svelte";
+export { default as AppSidebar } from "./app-sidebar.svelte";
+export { default as DashboardLayout } from "./dashboard-layout.svelte";
+export { default as EmailVerificationBanner } from "./email-verification-banner.svelte";
+export { default as MobileNav } from "./mobile-nav.svelte";
+export { default as OrgSwitcher } from "./org-switcher.svelte";
+export { default as UserMenu } from "./user-menu.svelte";
diff --git a/apps/publisher-dashboard/src/lib/components/layout/mobile-nav.svelte b/apps/publisher-dashboard/src/lib/components/layout/dashboard/mobile-nav.svelte
similarity index 100%
rename from apps/publisher-dashboard/src/lib/components/layout/mobile-nav.svelte
rename to apps/publisher-dashboard/src/lib/components/layout/dashboard/mobile-nav.svelte
diff --git a/apps/publisher-dashboard/src/lib/components/layout/org-switcher.svelte b/apps/publisher-dashboard/src/lib/components/layout/dashboard/org-switcher.svelte
similarity index 100%
rename from apps/publisher-dashboard/src/lib/components/layout/org-switcher.svelte
rename to apps/publisher-dashboard/src/lib/components/layout/dashboard/org-switcher.svelte
diff --git a/apps/publisher-dashboard/src/lib/components/layout/user-menu.svelte b/apps/publisher-dashboard/src/lib/components/layout/dashboard/user-menu.svelte
similarity index 100%
rename from apps/publisher-dashboard/src/lib/components/layout/user-menu.svelte
rename to apps/publisher-dashboard/src/lib/components/layout/dashboard/user-menu.svelte
diff --git a/apps/publisher-dashboard/src/lib/components/layout/index.ts b/apps/publisher-dashboard/src/lib/components/layout/index.ts
index 44d5210..197efe5 100644
--- a/apps/publisher-dashboard/src/lib/components/layout/index.ts
+++ b/apps/publisher-dashboard/src/lib/components/layout/index.ts
@@ -1,5 +1,18 @@
-export { default as AppHeader } from "./app-header.svelte";
-export { default as AppSidebar } from "./app-sidebar.svelte";
-export { default as DashboardLayout } from "./dashboard-layout.svelte";
-export { default as EmailVerificationBanner } from "./email-verification-banner.svelte";
-export { default as MobileNav } from "./mobile-nav.svelte";
+// Dashboard layout components
+export {
+ AppHeader,
+ AppSidebar,
+ DashboardLayout,
+ EmailVerificationBanner,
+ MobileNav,
+ OrgSwitcher,
+ UserMenu,
+} from "./dashboard/index.js";
+
+// Admin layout components
+export {
+ AdminHeader,
+ AdminLayout,
+ AdminMobileNav,
+ AdminSidebar,
+} from "./admin/index.js";
diff --git a/apps/publisher-dashboard/src/routes/account/+layout.svelte b/apps/publisher-dashboard/src/routes/account/+layout.svelte
index 4720447..6e50421 100644
--- a/apps/publisher-dashboard/src/routes/account/+layout.svelte
+++ b/apps/publisher-dashboard/src/routes/account/+layout.svelte
@@ -1,7 +1,7 @@
diff --git a/apps/publisher-dashboard/src/routes/dashboard/[slug]/settings/+page.svelte b/apps/publisher-dashboard/src/routes/dashboard/[slug]/settings/+page.svelte
index a87f035..0a58f1a 100644
--- a/apps/publisher-dashboard/src/routes/dashboard/[slug]/settings/+page.svelte
+++ b/apps/publisher-dashboard/src/routes/dashboard/[slug]/settings/+page.svelte
@@ -12,7 +12,7 @@ import { getContext } from "svelte";
import { toast } from "svelte-sonner";
import { goto } from "$app/navigation";
import { api } from "$lib/api/client";
-import DashboardLayout from "$lib/components/layout/dashboard-layout.svelte";
+import { DashboardLayout } from "$lib/components/layout";
import { ConfirmDialog } from "$lib/components/org";
import { Alert, AlertDescription } from "$lib/components/ui/alert";
import { Button } from "$lib/components/ui/button";