Five roles, never swapped
C-01 C-02 C-03 C-04 C-05
Structure
--pe-structureRail, top-level bars, navy buttonAction
--pe-actionThe one primary per viewWayfinding
--pe-wayfindingOn navy only: active markerGood
--pe-goodStatus onlyLink / info / focus
--pe-linkLinks, info, focus ringNeutrals: cool gray, one ramp
C-07
Page
--pe-pageSurface
--pe-surfaceSunken
--pe-surface-sunkenBorder
--pe-borderBorder strong
--pe-border-strongText
--pe-textText secondary
--pe-text-secondaryText muted
--pe-text-mutedStatus
P-01 P-02
PaidOver agreementRejectedScheduledDraft
Dark is per surface
C-08
Friday WIP/AR · dark surface
CollectedDue Friday
Text and links read the same role tokens in both modes. Open the job.
Measured contrast
K-05 A-04
Every permitted pair is measured at build time. The build fails below 4.5:1 for text and 3:1 for focus rings and control borders.