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.
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.