Overview
FlexCare design system — foundations

Color

The FlexCare color system defines how color works across the marketing site and FlexCare 360. It is built from the FlexCare brand palette — Aubergine, Magenta, and Sand — and extended into a complete web-ready token system for product UI, marketing surfaces, light mode, dark mode, and accessible interaction states.

Brand-accurate. The system preserves FlexCare's core brand colors while adding the shades, neutrals, and functional colors needed for digital product use.
Implementation-ready. Tokens are organized in two layers: primitives and semantic roles. Product UI should reference semantic tokens only, so the same naming system can be used across design, code, and documentation.
The spending rule

60 · 30 · 10

FlexCare's color balance follows a simple rule: Sand creates the calm foundation, Aubergine carries the brand, and Magenta adds emphasis. Holding this proportion across screens keeps the experience warm, polished, and unmistakably FlexCare.

60 — Sand / neutral canvas
30 — Aubergine
10 — Magenta
60%

Sand & neutrals

Canvas, surfaces, body text, and borders. This is the warm base that keeps the interface calm and readable.

30%

Aubergine

The brand workhorse for navigation, headers, links, primary actions, and structural moments.

10%

Magenta

Used sparingly for the highest-emphasis moments: the primary hero CTA, focus rings, and key highlights. Magenta should feel intentional, not decorative.

Layer 1 — raw values

Primitives

Primitives are the raw color values that power the system. Brand colors and official tints sit alongside the darker shades, warm neutrals, and functional bases required for web interfaces. Semantic tokens reference these values; UI components should not use primitives directly.

Aubergine — Primary
50
#F1E8ED
100
#E4D1DC
200
#D6BACA
300
#C8A3B9
400
#BA8BA7
500
#761850
600
#5E1340
700
#490F32
800
#360B25
900
#230718
Magenta — Accent
50
#F6EAF0
100
#EDD5E1
200
#E4C0D1
300
#DBABC2
400
#D296B3
500
#A52E67
600
#872654
700
#6D1E44
800
#521734
900
#381023
Neutral — warm
0
#FFFFFF
25
#FCFAF8
50
#FBF8F5
100
#F3EEE9
200
#E5DDD6
300
#D2C8C0
400
#B3A8A0
500
#8E837C
600
#6E635D
700
#524944
800
#322C29
900
#1E1916
950
#0D0D0D
○ Brand base / official tint● Extended for web use

Functional bases

Success #567C6A
Brand sage
Info #4F6B97
Brand blue
Warning #C77E1A
Derived amber
Error #C0392B
Derived red
Layer 2 — semantic roles

Roles & tiers

Semantic roles translate the raw palette into usable interface decisions. Each role includes a consistent tier set — main, dark, contrastText, container, onContainer, and onSurface — tuned separately for light and dark mode.

Primary

Aubergine is the FlexCare brand workhorse. Use it for default actions, app bars, navigation, headers, links, and structural emphasis.

LIGHT
main
#761850
AA 10.4
dark / hover
#5E1340
container
#E6DBE4
AA 11.2
onSurface (text)
#761850
AA 9.8
DARK
main
#761850
AA 10.4
dark / hover
#641444
container
#381E34
AA 9.9
onSurface (text)
#C8A3B9
AA 8.3

Accent

Magenta is the emphasis color. Use it for the single highest-emphasis CTA per view, focus rings, and selected moments that need extra attention.

LIGHT
main
#A52E67
AA 6.6
dark / hover
#872654
container
#F6EAF0
AA 9.3
onSurface (text)
#A52E67
AA 6.2
DARK
main
#A52E67
AA 6.6
dark / hover
#8C2758
container
#521734
AA 8.3
onSurface (text)
#DBABC2
AA 9.4

Neutral

Neutral supports structure without adding extra brand emphasis. Use it for secondary actions, quiet controls, chips, dividers, and interface chrome.

LIGHT
main
#6E635D
AA 5.8
dark / hover
#524944
container
#F3EEE9
AA 11.9
onSurface (text)
#524944
AA 8.3
DARK
main
#6E635D
AA 5.8
dark / hover
#5E544F
container
#322C29
AA 10.2
onSurface (text)
#D2C8C0
AA 11.3

Success

Success uses FlexCare's sage secondary color for confirmations, completed states, active status, and positive system feedback.

LIGHT
main
#567C6A
AA 4.7
dark / hover
#476657
container
#E3EDE8
AA 8.8
onSurface (text)
#537867
AA 4.7
DARK
main
#567C6A
AA 4.7
dark / hover
#49695A
container
#1E2C26
AA 10.0
onSurface (text)
#A6C7B6
AA 10.1

Warning

Warning uses a warm amber for cautionary states, approaching limits, incomplete requirements, and actions that need attention before continuing.

LIGHT
main
#C77E1A
AA 5.9
dark / hover
#B37117
container
#FBEFD9
AA 6.5
onSurface (text)
#9C6312
AA 4.7
DARK
main
#C77E1A
AA 5.9
dark / hover
#A96B16
container
#2E2410
AA 11.0
onSurface (text)
#E6B976
AA 10.2

Info

Info uses FlexCare's blue secondary color for neutral notices, tips, contextual guidance, and non-blocking system messages.

LIGHT
main
#4F6B97
AA 5.4
dark / hover
#41587C
container
#E4EAF2
AA 8.7
onSurface (text)
#4F6B97
AA 5.1
DARK
main
#4F6B97
AA 5.4
dark / hover
#435B80
container
#18222F
AA 10.9
onSurface (text)
#A6BBD6
AA 9.5

Error

Error uses a true red that stays visually distinct from Magenta. Use it only for failures, validation errors, destructive actions, and blocking system feedback.

LIGHT
main
#C0392B
AA 5.4
dark / hover
#9D2F23
container
#FBE4E1
AA 8.8
onSurface (text)
#C0392B
AA 5.1
DARK
main
#C0392B
AA 5.4
dark / hover
#A33025
container
#2E1512
AA 11.3
onSurface (text)
#E8A59B
AA 9.1
Layer 2 — surfaces

Background & surfaces

Four background tokens create the page hierarchy. Light mode uses Sand and white to keep the interface warm and open; dark mode uses warm near-black surfaces so the experience stays aligned with FlexCare rather than shifting into a cool gray product palette.

TOKEN
LIGHT
DARK
background.default
#FBF8F5
#17120F
background.paper
#FFFFFF
#211B17
background.recessed
#F3EEE9
#100C0A
background.overlay
#FFFFFF
#2A221D
Layer 2 — content & lines

Text & outlines

Text and outline tokens keep the system accessible without losing the warmth of the FlexCare palette. Body copy uses a stronger warm neutral for readability; tertiary text is reserved for supporting or decorative copy; outlineStrong is used wherever a boundary must be perceivable.

TOKEN
LIGHT
DARK
text.primary
#0D0D0D
AA 18.4
#F4EFEA
AA 16.3
text.secondary
#6E635D
AA 5.5
#B9ADA4
AA 8.5
text.tertiary
#8E837C
AA·Lg 3.5
#8E837C
AA 5.0
text.disabled
#B3A8A0
— 2.2
#6E635D
AA·Lg 3.2
divider / outline.divider
#E5DDD6
#322C29
divider / outline.outline
#D2C8C0
#3E3733
divider / outline.outlineStrong
#8E837C
AA·Lg 3.5
#6E635D
AA·Lg 3.2

Badges are measured against the page canvas. Divider and outline are intentionally quiet and should be used decoratively. Use outlineStrong when a border communicates a required boundary or interactive control. Disabled text is exempt from WCAG contrast requirements; its badge is informational.

Layer 2 — interaction

State layers & focus

Interaction states use two patterns. Colored surfaces receive a translucent overlay of the role color so hue carries the signal. Neutral surfaces use opaque warm washes so luminance carries the signal without introducing a new hue.

Colored overlay

Use the component's role color at the following opacities.

hover
0.10
focus
0.12
pressed
0.16
dragged
0.16

Neutral washes

Use opaque neutral washes for default surfaces, cards, rows, chips, and quiet controls.

Light mode

hover #F3EEE9
focus #ECE5DF
pressed #E5DDD6
selected #F1E8ED

Dark mode

hover #211B17
focus #2A221D
pressed #322C29
selected #2A0F1E
Component checks

Components in context

These examples show the semantic roles applied to real interface patterns. Everything here references the tokens defined above rather than one-off values — toggle the theme to confirm both modes hold up.

Buttons — every role × every variant

Hover steps filled buttons to their dark tier; tonal, outlined and text variants take the role-colored wash at 10% → 16% on press. Tab through for the 2px offset focus ring in the role color. Disabled is opaque and hueless.

primary
accent
neutral
success
warning
info
error

Every button here is live — hover, press, or tab through to see each state in both themes.

Chips

Emphasis ladder, then severity statuses on the container tier.

Filled Tonal Outlined
Active Pending Expired In review Archived

Statuses stay tonal so they inform without shouting — filled severity is reserved for true alerts.

Inline text & links

Travel nursing, on your terms

Browse 2,400+ open assignments with transparent weekly pay.

Updated 5 minutes ago

Archived assignments are read-only

Forms

Borders use outlineStrong, focus draws the primary ring, errors switch the whole field to the error role. Checkboxes and radios outline in the primary color on hover and fill when selected.

Enter a valid email address

Find this on your state board profile

All fields and controls are live — tab or click through to see focus, error, and selection states.

Data & categories

Categorical palette

The categorical palette provides six muted hues for data visualization and category coding. These colors are drawn from the FlexCare secondary palette and should be used for charts, tags, and visual grouping — not as large copy backgrounds.

Sage
tonal
#567C6A
#E3EDE8
Blue
tonal
#4F6B97
#E4EAF2
Clay
tonal
#B5754F
#F3E6DC
Mauve
tonal
#735A64
#EDE5E8
Slate
tonal
#403C56
#E4E2EA
Taupe
tonal
#8C7A6E
#F0EAE4
For the build

Build requirements

A couple of rules govern how this system is translated into the product build.

Components reference semantic role tokens only — primitives stay behind the roles and are never used directly in product UI. Light and dark are both authored here; neither mode is generated from the other at runtime.

Token paths should map one-to-one between design and code (e.g. palette.primary.container, palette.error.onContainer), and every text and boundary pairing targets WCAG 2.2 AA.