diff --git a/apps/web/app/(app)/layout.tsx b/apps/web/app/(app)/layout.tsx index 82baa5a..a63a92e 100644 --- a/apps/web/app/(app)/layout.tsx +++ b/apps/web/app/(app)/layout.tsx @@ -1,4 +1,6 @@ +import Link from 'next/link'; import { BottomNav } from '../../components/bottom-nav'; +import { BrandLockup } from '../../components/brand'; /** * The signed-in app shell: a narrow reading column and the bottom nav. @@ -9,10 +11,19 @@ import { BottomNav } from '../../components/bottom-nav'; export default function AppLayout({ children }: { children: React.ReactNode }) { return ( <> + {/* + * A slim brand row, not a title bar: every page already owns its own

, + * so this stays one line tall and only says which app you are in — the + * thing an installed PWA loses when the browser chrome goes away. + */} +
+ + + +
+ {/* pb-28 reserves room for the fixed bottom nav plus the home indicator. */} -
- {children} -
+
{children}
); diff --git a/apps/web/app/(marketing)/login/page.tsx b/apps/web/app/(marketing)/login/page.tsx index acf4ed2..2f4c836 100644 --- a/apps/web/app/(marketing)/login/page.tsx +++ b/apps/web/app/(marketing)/login/page.tsx @@ -1,4 +1,5 @@ import { LoginForm } from '../../../components/login-form'; +import { BrandLockup } from '../../../components/brand'; export const metadata = { title: 'Sign in · OutreachGraph' }; @@ -6,7 +7,10 @@ export default function LoginPage() { return (
-

OutreachGraph

+ {/* The lockup is the heading here, so it carries the h1 rather than sitting above one. */} +

+ +

Turn public intent signals into warm conversations.

diff --git a/apps/web/app/(marketing)/page.tsx b/apps/web/app/(marketing)/page.tsx index 394f4b1..d4d97f6 100644 --- a/apps/web/app/(marketing)/page.tsx +++ b/apps/web/app/(marketing)/page.tsx @@ -1,6 +1,7 @@ import Link from 'next/link'; import { redirect } from 'next/navigation'; import { cookies } from 'next/headers'; +import { BrandLockup, BrandMark, BrandWordmark } from '../../components/brand'; export const dynamic = 'force-dynamic'; @@ -53,7 +54,9 @@ function SiteNav() { return (