Foundations

Color System

The UX4G color palette is rooted in India's national identity — Brand Purple, Saffron, and Green — extended with a functional gray scale and semantic tokens for consistent, accessible interfaces.

Brand Colors

The three brand families, each a full 50→950 ramp. Primary carries most interactive weight; Secondary and Tertiary provide warm and cool accents.

Primary

Core brand violet — headers, primary actions, focus.

50

#f2efff

100

#dcd4ff

200

#c0b3ff

300

#a391ff

400

#8670ff

500

#6a4eff

600

#4a2bc2

700

#3d239f

800

#301c7d

900

#24145c

950

#1a0e3d

Secondary

Warm amber — secondary accents and highlights.

50

#fff5ea

100

#ffebd6

200

#ffd9af

300

#ffbe6f

400

#e89c30

500

#c47d00

600

#a46800

700

#764a00

800

#4b2d00

900

#281600

950

#110700

Tertiary

Soft purple — supporting brand accent.

50

#f6effb

100

#e9daf3

200

#d9bfea

300

#c8a3e0

400

#b686d6

500

#a66acc

600

#8e55b3

700

#75419a

800

#5d2f80

900

#462166

950

#32174a

Semantic Colors

Semantic color families represent common interface states, such as Green for success, Red for error and danger, Orange for warning, and Cyan/Blue for information.

Green

Success — positive and completed states.

50

#f2fcef

100

#ddf8d8

200

#beefbb

300

#80da88

400

#44c265

500

#1aa64a

600

#128937

700

#006c35

800

#00522c

900

#00381f

950

#002110

Red

Error & danger — destructive actions and failures.

50

#fff8f8

100

#ffecee

200

#ffdadc

300

#ffb3ae

400

#ff8983

500

#f55e57

600

#db372d

700

#b3251e

800

#8a1a16

900

#60150f

950

#3a0907

Orange

Warning — caution and attention states.

50

#fff7e6

100

#ffe7bf

200

#ffd899

300

#ffc973

400

#ffba4d

500

#ffab27

600

#fa8c16

700

#d46b08

800

#ad4e00

900

#873800

950

#612500

Cyan

Information — informational and neutral notices.

50

#e6fffb

100

#c9f7f2

200

#adf0e9

300

#91e8e0

400

#75e0d7

500

#59d8ce

600

#13c2c2

700

#08979c

800

#006d75

900

#00474f

950

#002329

Blue

Accent blue — links and secondary information.

50

#f5faff

100

#e7f2ff

200

#d0e4ff

300

#a1c9ff

400

#76acff

500

#4e8ff8

600

#3271ea

700

#1157ce

800

#04409f

900

#012c6f

950

#001944

Neutral Colors

The Neutral Colors from pure white to pure black — the backbone of surfaces, text, and borders across both light and dark themes.

0 · White

#ffffff

50

#fafafa

100

#f5f5f5

200

#e5e5e5

300

#d9d9d9

400

#a1a1a1

500

#737373

600

#525252

700

#404040

800

#262626

900

#171717

950

#0a0a0a

1000 · Black

#000000

Semantic Tokens

Purpose-driven color assignments that adapt between light and dark themes.

Text Colors - Neutral

--ux4g-text-neutral-primaryvar(--ux4g-color-neutral-900)#171717
--ux4g-text-neutral-secondaryvar(--ux4g-color-neutral-700)#404040
--ux4g-text-neutral-tertiaryvar(--ux4g-color-neutral-500)#737373
--ux4g-text-neutral-inversevar(--ux4g-color-neutral-50)#fafafa
--ux4g-text-neutral-disabledrgba(23, 23, 23, 0.25)rgba(23, 23, 23, 0.25)
--ux4g-text-neutral-emphasisvar(--ux4g-color-neutral-300)#d9d9d9
--ux4g-text-whitevar(--ux4g-color-neutral-0)#ffffff
--ux4g-text-blackvar(--ux4g-color-neutral-1000)#000000

Text Colors - Brand

--ux4g-text-brand-primary-defaultvar(--ux4g-color-primary-600)#4a2bc2
--ux4g-text-brand-secondary-defaultvar(--ux4g-color-secondary-600)#a46800
--ux4g-text-brand-tertiary-defaultvar(--ux4g-color-tertiary-600)#8e55b3

Text Colors - Status

--ux4g-text-status-successvar(--ux4g-color-green-800)#00522c
--ux4g-text-status-errorvar(--ux4g-color-red-800)#8a1a16
--ux4g-text-status-warningvar(--ux4g-color-orange-800)#ad4e00
--ux4g-text-status-infovar(--ux4g-color-cyan-800)#006d75
--ux4g-text-success-defaultvar(--ux4g-color-green-600)#128937
--ux4g-text-error-defaultvar(--ux4g-color-red-600)#db372d
--ux4g-text-warning-defaultvar(--ux4g-color-orange-600)#fa8c16
--ux4g-text-info-defaultvar(--ux4g-color-cyan-600)#13c2c2

Text Colors - Links

--ux4g-text-link-default-defaultvar(--ux4g-color-primary-600)#4a2bc2
--ux4g-text-link-default-hovervar(--ux4g-color-primary-700)#3d239f
--ux4g-text-link-default-activevar(--ux4g-color-primary-800)#301c7d
--ux4g-text-link-default-visitedvar(--ux4g-color-primary-800)#301c7d
--ux4g-text-link-default-inversevar(--ux4g-color-primary-200)#c0b3ff
--ux4g-text-link-default-disabledvar(--ux4g-color-primary-400)#8670ff
--ux4g-text-link-neutral-defaultvar(--ux4g-color-neutral-600)#525252
--ux4g-text-link-neutral-hovervar(--ux4g-color-neutral-700)#404040
--ux4g-text-link-neutral-activevar(--ux4g-color-neutral-800)#262626
--ux4g-text-link-neutral-visitedvar(--ux4g-color-neutral-800)#262626
--ux4g-text-link-neutral-inversevar(--ux4g-color-neutral-200)#e5e5e5
--ux4g-text-link-neutral-disabledvar(--ux4g-color-neutral-400)#a1a1a1
--ux4g-text-link-visited-defaultvar(--ux4g-color-primary-600)#4a2bc2
--ux4g-text-link-visited-hovervar(--ux4g-color-primary-700)#3d239f
--ux4g-text-link-visited-activevar(--ux4g-color-primary-800)#301c7d
--ux4g-text-link-visited-inversevar(--ux4g-color-neutral-200)#e5e5e5

Icon Colors

--ux4g-icon-status-errorvar(--ux4g-color-red-600)#db372d
--ux4g-icon-status-successvar(--ux4g-color-green-600)#128937
--ux4g-icon-status-warningvar(--ux4g-color-orange-600)#fa8c16
--ux4g-icon-status-infovar(--ux4g-color-cyan-600)#13c2c2
--ux4g-icon-neutral-inversevar(--ux4g-color-neutral-50)#fafafa

Background Colors - Neutral

--ux4g-bg-neutral-elevatedvar(--ux4g-color-neutral-0)#ffffff
--ux4g-bg-neutralvar(--ux4g-color-neutral-50)#fafafa
--ux4g-bg-neutral-softvar(--ux4g-color-neutral-100)#f5f5f5
--ux4g-bg-neutral-subtlevar(--ux4g-color-neutral-200)#e5e5e5
--ux4g-bg-neutral-emphasisvar(--ux4g-color-neutral-300)#d9d9d9
--ux4g-bg-neutral-strongvar(--ux4g-color-neutral-600)#525252
--ux4g-bg-neutral-strongervar(--ux4g-color-neutral-900)#171717
--ux4g-bg-neutral-disabledvar(--ux4g-color-neutral-200)#e5e5e5
--ux4g-control-bg-defaultvar(--ux4g-color-neutral-50)#fafafa
--ux4g-bg-overlayrgba(23, 23, 23, 0.70)rgba(23, 23, 23, 0.70)

Background Colors - Brand

--ux4g-bg-primaryvar(--ux4g-color-primary-50)#f2efff
--ux4g-bg-primary-softvar(--ux4g-color-primary-100)#dcd4ff
--ux4g-bg-primary-subtlevar(--ux4g-color-primary-200)#c0b3ff
--ux4g-bg-primary-emphasisvar(--ux4g-color-primary-300)#a391ff
--ux4g-bg-primary-strongvar(--ux4g-color-primary-600)#4a2bc2
--ux4g-bg-primary-strong-hovervar(--ux4g-color-primary-700)#3d239f
--ux4g-bg-primary-strongervar(--ux4g-color-primary-800)#301c7d
--ux4g-bg-primary-stronger-hovervar(--ux4g-color-primary-900)#24145c
--ux4g-bg-secondaryvar(--ux4g-color-secondary-50)#fff5ea
--ux4g-bg-secondary-softvar(--ux4g-color-secondary-100)#ffebd6
--ux4g-bg-secondary-subtlevar(--ux4g-color-secondary-200)#ffd9af
--ux4g-bg-secondary-emphasisvar(--ux4g-color-secondary-300)#ffbe6f
--ux4g-bg-secondary-strongvar(--ux4g-color-secondary-600)#a46800
--ux4g-bg-tertiaryvar(--ux4g-color-tertiary-50)#f6effb
--ux4g-bg-tertiary-softvar(--ux4g-color-tertiary-100)#e9daf3
--ux4g-bg-tertiary-subtlevar(--ux4g-color-tertiary-200)#d9bfea
--ux4g-bg-tertiary-emphasisvar(--ux4g-color-tertiary-300)#c8a3e0
--ux4g-bg-tertiary-strongvar(--ux4g-color-tertiary-600)#8e55b3

Background Colors - Status

--ux4g-bg-successvar(--ux4g-color-green-50)#f2fcef
--ux4g-bg-success-softvar(--ux4g-color-green-100)#ddf8d8
--ux4g-bg-success-subtlevar(--ux4g-color-green-200)#beefb8
--ux4g-bg-success-emphasisvar(--ux4g-color-green-300)#80da88
--ux4g-bg-success-strongvar(--ux4g-color-green-600)#128937
--ux4g-bg-errorvar(--ux4g-color-red-50)#fff8f8
--ux4g-bg-error-softvar(--ux4g-color-red-100)#ffecee
--ux4g-bg-error-subtlevar(--ux4g-color-red-200)#ffdadc
--ux4g-bg-error-emphasisvar(--ux4g-color-red-300)#ffb3ae
--ux4g-bg-error-strongvar(--ux4g-color-red-600)#db372d
--ux4g-bg-error-strong-hovervar(--ux4g-color-red-700)#b3251e
--ux4g-bg-error-strongervar(--ux4g-color-red-800)#8a1a16
--ux4g-bg-warningvar(--ux4g-color-orange-50)#fff7e6
--ux4g-bg-warning-softvar(--ux4g-color-orange-100)#ffe7bf
--ux4g-bg-warning-subtlevar(--ux4g-color-orange-200)#ffd899
--ux4g-bg-warning-emphasisvar(--ux4g-color-orange-300)#ffc973
--ux4g-bg-warning-strongvar(--ux4g-color-orange-600)#fa8c16
--ux4g-bg-infovar(--ux4g-color-cyan-50)#e6fffb
--ux4g-bg-info-softvar(--ux4g-color-cyan-100)#c9f7f2
--ux4g-bg-info-subtlevar(--ux4g-color-cyan-200)#adf0e9
--ux4g-bg-info-emphasisvar(--ux4g-color-cyan-300)#91e8e0
--ux4g-bg-info-strongvar(--ux4g-color-cyan-600)#13c2c2
--ux4g-bg-yellow-strongvar(--ux4g-color-yellow-600)#fadb14

Border Widths

--ux4g-border-width-nonevar(--ux4g-border-none)-
--ux4g-border-width-smvar(--ux4g-border-thin)-
--ux4g-border-width-mdvar(--ux4g-border-thick)-
--ux4g-border-width-lgvar(--ux4g-border-thicker)-
--ux4g-border-width-xlvar(--ux4g-border-thickest)-

Border Colors - Neutral

--ux4g-border-color-neutral-defaultvar(--ux4g-color-neutral-300)#d9d9d9
--ux4g-border-color-neutral-subtlevar(--ux4g-color-neutral-200)#e5e5e5
--ux4g-border-color-neutral-strongvar(--ux4g-color-neutral-500)#737373
--ux4g-border-color-neutral-focusvar(--ux4g-color-neutral-600)#525252
--ux4g-border-color-neutral-hovervar(--ux4g-color-neutral-300)#d9d9d9
--ux4g-border-color-neutral-activevar(--ux4g-color-neutral-400)#a1a1a1
--ux4g-border-color-neutral-elevatedvar(--ux4g-color-neutral-0)#ffffff
--ux4g-control-border-defaultvar(--ux4g-color-neutral-200)#e5e5e5
--ux4x-icon-border-desabledrgba(229, 229, 229, 1)rgba(229, 229, 229, 1)

Border Colors - Status

--ux4g-border-color-success-defaultvar(--ux4g-color-green-300)#80da88
--ux4g-border-color-success-strongvar(--ux4g-color-green-600)#128937
--ux4g-border-color-info-defaultvar(--ux4g-color-cyan-300)#91e8e0
--ux4g-border-color-info-strongvar(--ux4g-color-cyan-600)#13c2c2
--ux4g-border-color-error-defaultvar(--ux4g-color-red-300)#ffb3ae
--ux4g-border-color-error-strongvar(--ux4g-color-red-600)#db372d
--ux4g-border-color-warning-defaultvar(--ux4g-color-orange-300)#ffc973
--ux4g-border-color-warning-strongvar(--ux4g-color-orange-600)#fa8c16

Border Colors - Brand

--ux4g-border-color-primary-defaultvar(--ux4g-color-primary-300)#a391ff
--ux4g-border-color-primary-strongvar(--ux4g-color-primary-600)#4a2bc2
--ux4g-border-color-primary-hovervar(--ux4g-color-primary-700)#3d239f
--ux4g-border-color-primary-activevar(--ux4g-color-primary-800)#301c7d
--ux4g-border-color-secondary-defaultvar(--ux4g-color-secondary-300)#ffbe6f
--ux4g-border-color-tertiary-defaultvar(--ux4g-color-tertiary-300)#c8a3e0

Color Accessibility

All color combinations must meet WCAG 2.1 AA contrast requirements.

Do

  • • Use Purple (#4a2bc2) on white for body text — 16.75:1 ratio
  • • Use semantic tokens instead of raw hex values
  • • Test with color blindness simulators
  • • Ensure 4.5:1 minimum for normal text, 3:1 for large text

Don't

  • • Don't use color alone to convey meaning
  • • Don't use light gray text on white backgrounds
  • • Don't override semantic tokens with hardcoded values
  • • Don't use Saffron for body text (insufficient contrast)