diff --git a/client/src/components/SiteHeader.jsx b/client/src/components/SiteHeader.jsx
index 16fea82..e8df12f 100644
--- a/client/src/components/SiteHeader.jsx
+++ b/client/src/components/SiteHeader.jsx
@@ -1,27 +1,37 @@
-import { Link } from 'react-router-dom'
+import { Link, NavLink } from 'react-router-dom'
import MoonDot from './MoonDot.jsx'
+import { useAuth } from '../contexts/AuthContext.jsx'
-const NAV = {
- website: [
- { label: 'Shard', to: '/site/shard' },
- { label: 'News', to: '/site/news' },
- { label: 'Screenshots', to: '/site/screenshots' },
- { label: 'Five on Friday', to: '/site/five-on-friday' },
- { label: 'Newsletter', to: '/site/newsletter' },
- { label: 'About', to: '/site/about' },
- { label: 'Wiki', to: '/wiki' },
- ],
- wiki: [
- { label: 'Website', to: '/site' },
- { label: 'New Player Guide', to: '/wiki/new-player-guide' },
- { label: 'Maps & Atlas', to: '/wiki/maps-atlas' },
- { label: 'Systems', to: '/wiki/systems' },
- { label: 'Rules', to: '/wiki/rules' },
- ],
-}
+// One consistent top nav for the whole public site. Every page gets the same
+// main links plus an auth-aware entry on the right (Sign in / My Account / Admin).
+const NAV = [
+ { label: 'Home', to: '/', end: true },
+ { label: 'News', to: '/site/news' },
+ { label: 'Screenshots', to: '/site/screenshots' },
+ { label: 'Five on Friday', to: '/site/five-on-friday' },
+ { label: 'Newsletter', to: '/site/newsletter' },
+ { label: 'Wiki', to: '/wiki' },
+ { label: 'Shard', to: '/site/shard' },
+ { label: 'About', to: '/site/about' },
+]
+
+const linkStyle = ({ isActive }) => ({
+ background: isActive ? 'var(--accent)' : undefined,
+ color: isActive ? 'var(--bg-deep)' : undefined,
+ borderColor: isActive ? 'var(--accent)' : undefined,
+})
+
+export default function SiteHeader() {
+ const { user, loading } = useAuth()
+
+ // Where the auth entry points: staff → admin, player → portal, else sign in.
+ const account =
+ user && user.role && user.role !== 'player'
+ ? { label: 'Admin', to: '/admin' }
+ : user
+ ? { label: 'My Account', to: '/player' }
+ : { label: 'Sign in', to: '/account/login' }
-export default function SiteHeader({ section = 'website' }) {
- const links = NAV[section] || NAV.website
return (
diff --git a/client/src/routes/public/Portal.jsx b/client/src/routes/public/Portal.jsx
index 9cf1fd6..1851b35 100644
--- a/client/src/routes/public/Portal.jsx
+++ b/client/src/routes/public/Portal.jsx
@@ -40,7 +40,7 @@ export default function Portal() {
const elements = [...layout.elements].sort((a, b) => (a.z || 0) - (b.z || 0))
return (
-
+
{PREVIEW && draft && (