setMobileOpen(false)}
>
@@ -109,7 +103,7 @@ export function CorporateHeader() {
setMobileOpen(false)}
>
Get started with Phoenix
diff --git a/portal/src/components/corporate/CorporateLandingPage.tsx b/portal/src/components/corporate/CorporateLandingPage.tsx
index 02694b1..257d770 100644
--- a/portal/src/components/corporate/CorporateLandingPage.tsx
+++ b/portal/src/components/corporate/CorporateLandingPage.tsx
@@ -3,8 +3,17 @@
import { ArrowRight, ExternalLink } from 'lucide-react';
import Link from 'next/link';
+import { EcosystemTrinitySection } from '@/components/brand';
import { CorporateFooter } from '@/components/corporate/CorporateFooter';
import { CorporateHeader } from '@/components/corporate/CorporateHeader';
+import {
+ HeroEcosystemGraphic,
+ PhilosophyStepGraphic,
+ PlatformStackGraphic,
+ ProductCardBanner,
+ SovereignBackdrop,
+ TrustComplianceGraphic,
+} from '@/components/corporate/graphics';
import { InstitutionalGradeSection } from '@/components/corporate/InstitutionalGradeSection';
import {
ECOSYSTEM_SIGN_IN_PATH,
@@ -14,61 +23,100 @@ import {
solutionVerticals,
} from '@/lib/corporate-site-data';
+const heroStats = [
+ { value: 'A−', label: 'Chain 138 L1', accent: 'text-emerald-400' },
+ { value: '90', label: 'Sovereign cloud score', accent: 'text-sky-400' },
+ { value: '3', label: 'Core pillars', accent: 'text-sovereign-gold' },
+ { value: '8', label: 'Live PMM pools', accent: 'text-sovereign-copper' },
+];
+
export function CorporateLandingPage() {
return (
-
+
{/* Hero */}
-
-
-
-
- Sovereign Technologies
-
-
- Build on infrastructure you{' '}
-
- own and control
-
-
-
- Sankofa delivers sovereign cloud, identity, financial rails, and credential infrastructure —
- the complete ecosystem for institutions that cannot depend on hyperscaler public cloud.
-
-
-
- Explore Phoenix Cloud
-
-
-
- Sign in to ecosystem
-
+
+
+
+
+
+
+
+
+
+ Sovereign Technology Institution
+
+
+ Sovereign technology infrastructure for{' '}
+ trust, cloud, telecom, and digital
+ continuity
+
+
+ Sankofa Nexus operates critical identity, blockchain, cloud, and telecommunications
+ infrastructure — institutional-grade systems for governments, orders, and partners who
+ cannot depend on hyperscaler public cloud.
+
+
+
+ Explore the ecosystem
+
+
+
+ Sign in to console
+
+
+
+
+ {heroStats.map((stat) => (
+
+
{stat.label}
+ {stat.value}
+ {stat.label}
+
+ ))}
+
+
+
+
+
+
{/* Philosophy */}
-
-
+
+
+
+
+
+ Remember · Retrieve · Restore · Rise
+
+
+ The Sankofa philosophy — institutional continuity from ancestral wisdom to sovereign
+ infrastructure.
+
+
{philosophySteps.map((step, index) => (
-
-
- {String(index + 1).padStart(2, '0')}
-
-
{step.verb}
-
{step.detail}
+
+
+
{step.verb}
+
{step.detail}
))}
@@ -76,11 +124,12 @@ export function CorporateLandingPage() {
{/* Product divisions */}
-
-
+
+
+
-
Products
-
+
Products
+
From sovereign cloud to verifiable credentials — integrated products under one ecosystem,
modeled for institutional scale.
@@ -92,37 +141,45 @@ export function CorporateLandingPage() {
return (
-
-
-
+
+
+
+
+
+
+ {product.external ? (
+
+ ) : null}
- {product.external ? (
-
- ) : null}
+
+ {product.tagline}
+
+
{product.name}
+
+ {product.description}
+
+
+ {product.highlights.map((item) => (
+
+
+ {item}
+
+ ))}
+
+
+ Learn more
+
+
-
- {product.tagline}
-
-
{product.name}
-
{product.description}
-
- {product.highlights.map((item) => (
-
-
- {item}
-
- ))}
-
-
- Learn more
-
-
);
})}
@@ -131,58 +188,75 @@ export function CorporateLandingPage() {
{/* Platform services */}
-
-
-
-
Platform services
-
- Owned core primitives — ledger, identity, wallet, orchestration — available through the
- Phoenix marketplace without third-party platform lock-in.
-
-
+
+
+
+
+
+
+
+ Platform services
+
+
+ Owned core primitives — ledger, identity, wallet, orchestration — available through the
+ Phoenix marketplace without third-party platform lock-in.
+
+
-
- {platformServices.map((service) => {
- const Icon = service.icon;
- return (
-
+ {platformServices.map((service) => {
+ const Icon = service.icon;
+ return (
+
+
+
+
+
+
+
+ {service.category}
+
+
{service.name}
+
+
+
+ {service.description}
+
+
+ );
+ })}
+
+
+
+
-
-
-
-
-
-
{service.category}
-
{service.name}
-
-
-
{service.description}
-
- );
- })}
-
+ Browse full marketplace catalog
+
+
+
+
-
-
- Browse full marketplace catalog
-
-
+
{/* Solutions */}
-
-
+
+
+
-
Industry solutions
-
- Purpose-built stacks for regulated industries — public sector, finance, healthcare, and telecom.
+
+ Industry solutions
+
+
+ Purpose-built stacks for regulated industries — public sector, finance, healthcare, and
+ telecom.
@@ -192,14 +266,16 @@ export function CorporateLandingPage() {
return (
-
-
+
+
-
-
{vertical.name}
-
{vertical.description}
+
+
{vertical.name}
+
+ {vertical.description}
+
);
@@ -211,52 +287,64 @@ export function CorporateLandingPage() {
{/* Resources / trust */}
-
-
+
+
+
-
Built for institutional trust
-
+
+
+ Built for institutional trust
+
+
Sankofa Phoenix operates under sovereign governance with SOC 2, GDPR, and sector-specific
compliance pathways. Identity, ledger, and credential services are designed for operators
who need auditability without outsourcing control.
-
-
- ✓ Sovereign Keycloak identity — no Azure AD dependency
-
-
- ✓ Multi-tenant Proxmox orchestration with GitOps
-
-
- ✓ Chain 138 DeFi Oracle Meta Mainnet & cross-chain mesh
-
-
- ✓ Complete Credential eIDAS-aligned issuance
-
+
+ {[
+ 'Sovereign Keycloak identity — no Azure AD dependency',
+ 'Multi-tenant Proxmox orchestration with GitOps',
+ 'Chain 138 DeFi Oracle Meta Mainnet & cross-chain mesh',
+ 'Complete Credential eIDAS-aligned issuance',
+ ].map((item) => (
+
+
+ ✓
+
+ {item}
+
+ ))}
-
-
Get started
-
Join the Sankofa ecosystem
-
- Sign in to access Phoenix Cloud, marketplace subscriptions, partner tools, and client
- workspaces — one identity across the platform.
-
-
-
- Sign in to ecosystem
-
-
- Phoenix Cloud
-
+
+
+
+
+ Get started
+
+
+ Join the Sankofa ecosystem
+
+
+ Sign in to access Phoenix Cloud, marketplace subscriptions, partner tools, and client
+ workspaces — one identity across the platform.
+
+
+
+ Sign in to ecosystem
+
+
+ Phoenix Cloud
+
+
diff --git a/portal/src/components/corporate/InstitutionalGradeSection.tsx b/portal/src/components/corporate/InstitutionalGradeSection.tsx
index 0f17422..67c2fc0 100644
--- a/portal/src/components/corporate/InstitutionalGradeSection.tsx
+++ b/portal/src/components/corporate/InstitutionalGradeSection.tsx
@@ -19,11 +19,17 @@ export function InstitutionalGradeSection() {
const otherRows = sovereignInstitutionGrades.filter((e) => e.audience !== 'sovereign');
return (
-
-
+
+
+
+
+
+
+
+
-
+
Institutional readiness
diff --git a/portal/src/components/corporate/graphics/HeroEcosystemGraphic.tsx b/portal/src/components/corporate/graphics/HeroEcosystemGraphic.tsx
new file mode 100644
index 0000000..d72275a
--- /dev/null
+++ b/portal/src/components/corporate/graphics/HeroEcosystemGraphic.tsx
@@ -0,0 +1,76 @@
+import { SankofaMark } from '@/components/brand';
+
+const GOLD = '#D4A64A';
+const MIDNIGHT = '#0D1B2A';
+const IVORY = '#F5F1E8';
+
+/** Hero illustration: sovereign trinity stack with protected node mesh. */
+export function HeroEcosystemGraphic({ className = '' }: { className?: string }) {
+ return (
+
+
+
+
+
+
+
+ {/* Protection ring */}
+
+
+ {/* Phoenix layer */}
+
+
+
+ Phoenix Cloud
+
+
+
+ {/* PanTel layer */}
+
+
+
+ PanTel
+
+
+
+ {/* Chain hub */}
+
+
+
+ Chain 138
+
+
+
+ {/* Settlement rail */}
+
+
+
+ Trust · Ledger · CCIP
+
+
+
+ {/* Topology links */}
+
+
+
+
+
+ A−
+ L1 health
+
+
+ 3
+ sovereign pillars
+
+
+ );
+}
diff --git a/portal/src/components/corporate/graphics/PhilosophyStepGraphic.tsx b/portal/src/components/corporate/graphics/PhilosophyStepGraphic.tsx
new file mode 100644
index 0000000..fabf904
--- /dev/null
+++ b/portal/src/components/corporate/graphics/PhilosophyStepGraphic.tsx
@@ -0,0 +1,46 @@
+const STEP_ART: Record
= {
+ Remember: {
+ accent: '#f97316',
+ paths: 'M32 8 C20 8 12 18 12 28 C12 38 20 48 32 52 C44 48 52 38 52 28 C52 18 44 8 32 8 M32 20 v16 M24 28 h16',
+ },
+ Retrieve: {
+ accent: '#fb923c',
+ paths: 'M16 28 L32 12 L48 28 M24 28 v16 h16 v-16',
+ },
+ Restore: {
+ accent: '#fbbf24',
+ paths: 'M12 32 C12 20 20 12 32 12 C44 12 52 20 52 32 M20 32 h24 M32 20 v24',
+ },
+ Rise: {
+ accent: '#f97316',
+ paths: 'M32 48 L16 28 L24 28 L24 12 L40 12 L40 28 L48 28 Z',
+ },
+};
+
+export function PhilosophyStepGraphic({ verb, index }: { verb: string; index: number }) {
+ const art = STEP_ART[verb] ?? STEP_ART.Remember;
+
+ return (
+
+
+
+
+
+
+ {String(index + 1).padStart(2, '0')}
+
+
+
+ );
+}
diff --git a/portal/src/components/corporate/graphics/PlatformStackGraphic.tsx b/portal/src/components/corporate/graphics/PlatformStackGraphic.tsx
new file mode 100644
index 0000000..524d2c7
--- /dev/null
+++ b/portal/src/components/corporate/graphics/PlatformStackGraphic.tsx
@@ -0,0 +1,49 @@
+/** Side illustration for platform services — marketplace + orchestration layers. */
+export function PlatformStackGraphic({ className = '' }: { className?: string }) {
+ const layers = [
+ { label: 'Voice & messaging', color: '#fbbf24' },
+ { label: 'Transaction orchestrator', color: '#fb923c' },
+ { label: 'Wallet registry', color: '#f97316' },
+ { label: 'Identity service', color: '#ea580c' },
+ { label: 'Phoenix ledger', color: '#c2410c' },
+ ];
+
+ return (
+
+
+
+
+
+
+
+
+ {layers.map((layer, i) => {
+ const y = 24 + i * 52;
+ const width = 200 - i * 12;
+ const x = (280 - width) / 2;
+ return (
+
+
+
+
+
+ {layer.label}
+
+
+ );
+ })}
+
+ Phoenix marketplace stack
+
+
+
+ );
+}
diff --git a/portal/src/components/corporate/graphics/ProductCardBanner.tsx b/portal/src/components/corporate/graphics/ProductCardBanner.tsx
new file mode 100644
index 0000000..d0cb580
--- /dev/null
+++ b/portal/src/components/corporate/graphics/ProductCardBanner.tsx
@@ -0,0 +1,33 @@
+const BANNERS: Record = {
+ phoenix:
+ 'M0 48 L120 48 L120 0 Q90 24 60 8 Q30 24 0 0 Z',
+ 'complete-credential':
+ 'M0 48 L120 48 L120 0 L96 16 L72 0 L48 20 L24 0 L0 16 Z',
+ studio:
+ 'M0 48 L120 48 L120 0 C100 32 80 12 60 28 C40 12 20 32 0 0 Z',
+ blockchain:
+ 'M0 48 L120 48 L120 0 L100 12 L80 0 L60 16 L40 0 L20 12 L0 0 Z',
+ identity:
+ 'M0 48 L120 48 L120 0 Q60 36 0 0 Z',
+ treasury:
+ 'M0 48 L120 48 L120 0 L0 24 Z',
+};
+
+export function ProductCardBanner({ productId }: { productId: string }) {
+ const d = BANNERS[productId] ?? BANNERS.phoenix;
+
+ return (
+
+ );
+}
diff --git a/portal/src/components/corporate/graphics/SovereignBackdrop.tsx b/portal/src/components/corporate/graphics/SovereignBackdrop.tsx
new file mode 100644
index 0000000..d14edeb
--- /dev/null
+++ b/portal/src/components/corporate/graphics/SovereignBackdrop.tsx
@@ -0,0 +1,72 @@
+interface SovereignBackdropProps {
+ variant?: 'grid' | 'mesh' | 'nodes';
+ className?: string;
+}
+
+const GOLD = '#D4A64A';
+const BRONZE = '#8B6A3E';
+const COPPER = '#C56B2C';
+
+/** Decorative full-bleed backgrounds — pointer-events-none, aria-hidden. */
+export function SovereignBackdrop({ variant = 'grid', className = '' }: SovereignBackdropProps) {
+ if (variant === 'mesh') {
+ return (
+
+ );
+ }
+
+ if (variant === 'nodes') {
+ return (
+
+ );
+ }
+
+ return (
+
+ );
+}
diff --git a/portal/src/components/corporate/graphics/TrustComplianceGraphic.tsx b/portal/src/components/corporate/graphics/TrustComplianceGraphic.tsx
new file mode 100644
index 0000000..c27d73a
--- /dev/null
+++ b/portal/src/components/corporate/graphics/TrustComplianceGraphic.tsx
@@ -0,0 +1,52 @@
+/** Trust / compliance visual for resources CTA column. */
+export function TrustComplianceGraphic({ className = '' }: { className?: string }) {
+ return (
+
+
+
+
+
+
+
+
+
+ {/* Shield */}
+
+
+
+
+ {/* Compliance badges */}
+ {[
+ { x: 48, y: 200, label: 'SOC 2' },
+ { x: 140, y: 228, label: 'GDPR' },
+ { x: 232, y: 200, label: 'eIDAS' },
+ ].map((badge) => (
+
+
+
+ {badge.label}
+
+
+ ))}
+
+
+ );
+}
diff --git a/portal/src/components/corporate/graphics/index.ts b/portal/src/components/corporate/graphics/index.ts
new file mode 100644
index 0000000..a48a381
--- /dev/null
+++ b/portal/src/components/corporate/graphics/index.ts
@@ -0,0 +1,6 @@
+export { HeroEcosystemGraphic } from './HeroEcosystemGraphic';
+export { PhilosophyStepGraphic } from './PhilosophyStepGraphic';
+export { PlatformStackGraphic } from './PlatformStackGraphic';
+export { ProductCardBanner } from './ProductCardBanner';
+export { SovereignBackdrop } from './SovereignBackdrop';
+export { TrustComplianceGraphic } from './TrustComplianceGraphic';
diff --git a/portal/src/components/layout/AppShell.tsx b/portal/src/components/layout/AppShell.tsx
index 6886b91..36d7e54 100644
--- a/portal/src/components/layout/AppShell.tsx
+++ b/portal/src/components/layout/AppShell.tsx
@@ -21,7 +21,7 @@ export function AppShell({ children }: { children: React.ReactNode }) {
return (
-
+
diff --git a/portal/src/components/layout/PortalHeader.tsx b/portal/src/components/layout/PortalHeader.tsx
index 49babb5..5b968b4 100644
--- a/portal/src/components/layout/PortalHeader.tsx
+++ b/portal/src/components/layout/PortalHeader.tsx
@@ -1,70 +1,70 @@
-'use client'
+'use client';
-import { Search, Bell, Settings, User, LogOut } from 'lucide-react'
-import Link from 'next/link'
-import { useSession } from 'next-auth/react'
-import { signOut } from 'next-auth/react'
+import { Search, Bell, Settings, User, LogOut } from 'lucide-react';
+import Link from 'next/link';
+import { useSession } from 'next-auth/react';
+import { signOut } from 'next-auth/react';
+
+import { BrandLockup } from '@/components/brand';
export function PortalHeader() {
- const { data: session } = useSession()
+ const { data: session } = useSession();
return (
-
+
-
- Nexus Console
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
{session?.user?.name || session?.user?.email || 'User'}
-
+
{session?.user?.role || 'Admin'}
signOut()}
- className="p-2 text-gray-400 hover:text-white transition-colors"
+ className="p-2 text-sovereign-ivory/60 transition-colors hover:text-sovereign-ivory"
title="Sign out"
>
@@ -73,6 +73,5 @@ export function PortalHeader() {
- )
+ );
}
-
diff --git a/portal/src/components/layout/PortalSidebar.tsx b/portal/src/components/layout/PortalSidebar.tsx
index edb4569..0609d70 100644
--- a/portal/src/components/layout/PortalSidebar.tsx
+++ b/portal/src/components/layout/PortalSidebar.tsx
@@ -10,8 +10,8 @@ export function PortalSidebar() {
const pathname = usePathname()
return (
-
-
+
+
{primaryNavigation.map((item) => {
const isActive = pathname === item.href || pathname?.startsWith(item.href + '/')
return (
@@ -21,8 +21,8 @@ export function PortalSidebar() {
className={cn(
'flex items-center space-x-3 rounded-lg px-3 py-2 text-sm font-medium no-underline transition-colors',
isActive
- ? 'bg-orange-500/10 text-orange-500 border border-orange-500/20'
- : 'text-gray-400 hover:bg-gray-800 hover:text-white'
+ ? 'border border-sovereign-gold/25 bg-sovereign-gold/10 text-sovereign-gold'
+ : 'text-sovereign-ivory/55 hover:bg-sovereign-obsidian hover:text-sovereign-ivory'
)}
>
diff --git a/portal/src/data/institutional-grades.generated.json b/portal/src/data/institutional-grades.generated.json
index ed21077..8c2192d 100644
--- a/portal/src/data/institutional-grades.generated.json
+++ b/portal/src/data/institutional-grades.generated.json
@@ -1,5 +1,5 @@
{
- "generatedAt": "2026-06-11T08:18:45.004140+00:00",
+ "generatedAt": "2026-06-11T09:42:49.998990+00:00",
"source": "config/institutional-a-plus-readiness.v1.json",
"rubric": [
{
diff --git a/portal/src/lib/brand/tokens.ts b/portal/src/lib/brand/tokens.ts
new file mode 100644
index 0000000..35243fa
--- /dev/null
+++ b/portal/src/lib/brand/tokens.ts
@@ -0,0 +1,44 @@
+/** Sovereign institutional palette — Sankofa Nexus visual identity v1 */
+export const brandColors = {
+ obsidian: '#111111',
+ midnight: '#0D1B2A',
+ sovereignGold: '#D4A64A',
+ bronze: '#8B6A3E',
+ signalCopper: '#C56B2C',
+ cloudIvory: '#F5F1E8',
+} as const;
+
+export const brandCssVars = {
+ '--sovereign-obsidian': brandColors.obsidian,
+ '--sovereign-midnight': brandColors.midnight,
+ '--sovereign-gold': brandColors.sovereignGold,
+ '--sovereign-bronze': brandColors.bronze,
+ '--sovereign-copper': brandColors.signalCopper,
+ '--sovereign-ivory': brandColors.cloudIvory,
+} as const;
+
+export type BrandDivision = 'sankofa' | 'phoenix' | 'pantel';
+
+export const divisionMeta = {
+ sankofa: {
+ name: 'Sankofa',
+ tagline: 'Sovereign Technology',
+ description:
+ 'Trust infrastructure, governance, institutional memory, and resilient digital continuity for critical systems.',
+ href: 'https://sankofa.nexus',
+ },
+ phoenix: {
+ name: 'Phoenix',
+ tagline: 'Sovereign Cloud Services',
+ description:
+ 'Compute, recovery, orchestration, and uptime — cloud layers built for restoration and operational resilience.',
+ href: 'https://phoenix.sankofa.nexus',
+ },
+ pantel: {
+ name: 'PanTel',
+ tagline: 'Sovereign Telecommunications',
+ description:
+ 'Secure connectivity, signal propagation, and distributed network access across sovereign edge infrastructure.',
+ href: 'https://portal.sankofa.nexus',
+ },
+} as const;
diff --git a/portal/src/lib/corporate-site-data.ts b/portal/src/lib/corporate-site-data.ts
index 0466883..7d995fa 100644
--- a/portal/src/lib/corporate-site-data.ts
+++ b/portal/src/lib/corporate-site-data.ts
@@ -49,6 +49,7 @@ export interface SolutionVertical {
export const ECOSYSTEM_SIGN_IN_PATH = '/api/auth/signin?callbackUrl=/dashboard';
export const corporateNav: CorporateNavItem[] = [
+ { label: 'Ecosystem', href: '#ecosystem' },
{ label: 'Products', href: '#products' },
{ label: 'Services', href: '#services' },
{ label: 'Solutions', href: '#solutions' },
diff --git a/portal/tailwind.config.js b/portal/tailwind.config.js
index 7d156ae..189f0ee 100644
--- a/portal/tailwind.config.js
+++ b/portal/tailwind.config.js
@@ -8,21 +8,31 @@ module.exports = {
theme: {
extend: {
colors: {
- primary: {
- 50: '#f0f9ff',
- 100: '#e0f2fe',
- 200: '#bae6fd',
- 300: '#7dd3fc',
- 400: '#38bdf8',
- 500: '#0ea5e9',
- 600: '#0284c7',
- 700: '#0369a1',
- 800: '#075985',
- 900: '#0c4a6e',
+ sovereign: {
+ obsidian: '#111111',
+ midnight: '#0D1B2A',
+ gold: '#D4A64A',
+ bronze: '#8B6A3E',
+ copper: '#C56B2C',
+ ivory: '#F5F1E8',
},
+ primary: {
+ 50: '#faf6ed',
+ 100: '#f5eed9',
+ 200: '#e8d4a8',
+ 300: '#d4a64a',
+ 400: '#c9923a',
+ 500: '#8b6a3e',
+ 600: '#6b5230',
+ 700: '#4a3821',
+ 800: '#2a2012',
+ 900: '#111111',
+ },
+ },
+ fontFamily: {
+ sans: ['var(--font-ibm-plex)', 'IBM Plex Sans', 'system-ui', 'sans-serif'],
},
},
},
plugins: [],
};
-