FF-EPIC-13-S3 · theme-override pipeline

Branding layers over the theme, not instead of it

Light/dark is a theme concern ([data-theme] → surface tokens). A portal's accent is a branding concern ([data-portal]--accent-* tokens from branding.accent). They are orthogonal layers: the same CorpABC blue reads correctly on both light and dark surfaces, and the root indigo does too. No raw hex in any preview — every value is a token.

data-theme="dark" · data-portal="corpabc"
CorpABC
Home Apps
data-theme="light" · data-portal="corpabc"
CorpABC
Home Apps
data-theme="dark" · data-portal="root"
FuzeFront
Home Apps
data-theme="light" · data-portal="root"
FuzeFront
Home Apps
Contrast guardrail (FF-EPIC-13-S3 AC3/AC4): the override pipeline only applies a branding.accent that passes WCAG 2.1 AA against its paired surface token; a failing or malformed color falls back to the nearest AA-compliant DS variant rather than shipping an unreadable accent. Semantic status tokens (success/warning/error) are never overridden by tenant branding.
Review · white-label-portal approve or reject each flow ↓
portal-shellapproved · izzywdev
portal-loginapproved · izzywdev