Pick a sector and tone — or drop in your own brand color — and HexPalette derives the full role set (primary, secondary, accent, surfaces, text, and success/warning/error states) in OKLCH, with every intended text pairing checked for WCAG AA contrast. Not five swatches: a system you can ship.
Every intended pairing here — text, buttons and states — meets WCAG AA by construction.
:root {
--primary: #0074CA;
--on-primary: #FFFFFF;
--primary-hover: #0062B6;
--primary-active: #0052A6;
--primary-disabled: #B7CADE;
--secondary: #464FA9;
--secondary-hover: #373D96;
--accent: #C6599B;
--link: #B24789;
--link-hover: #9B3174;
--focus-ring: #D465A7;
--selected-bg: #D3EEFF;
--background: #EEF5FE;
--surface: #F7FBFF;
--border: #E3EEFA;
--input-bg: #F9FEFF;
--input-border: #CCD7E3;
--input-focus: #D465A7;
--text: #192532;
--muted: #5B7188;
--success: #137E3B;
--warning: #9D5E00;
--error: #C1443D;
--on-success: #FFFFFF;
--success-container: #BDFAC8;
--on-success-container: #21763C;
--on-warning: #FFFFFF;
--warning-container: #FFDDA8;
--on-warning-container: #905200;
--on-error: #FFFFFF;
--error-container: #FFD1C8;
--on-error-container: #9C443C;
}
[data-theme="dark"] {
--primary: #0074CA;
--on-primary: #FFFFFF;
--primary-hover: #298AE2;
--primary-active: #3C9AF3;
--primary-disabled: #2A394A;
--secondary: #464FA9;
--secondary-hover: #5864C0;
--accent: #C6599B;
--link: #FF91D4;
--link-hover: #FFA7EB;
--focus-ring: #FF91D4;
--selected-bg: #12283E;
--background: #060C12;
--surface: #0F171F;
--border: #242F3A;
--input-bg: #101820;
--input-border: #36414D;
--input-focus: #FF91D4;
--text: #E5F0FC;
--muted: #90A7C0;
--success: #7ED591;
--warning: #F5B66A;
--error: #F57A6F;
--on-success: #000000;
--success-container: #073215;
--on-success-container: #A3F5B3;
--on-warning: #000000;
--warning-container: #3E2100;
--on-warning-container: #FFD083;
--on-error: #000000;
--error-container: #451915;
--on-error-container: #FFBFB3;
}
// light $ui-system-primary: #0074CA; $ui-system-on-primary: #FFFFFF; $ui-system-primary-hover: #0062B6; $ui-system-primary-active: #0052A6; $ui-system-primary-disabled: #B7CADE; $ui-system-secondary: #464FA9; $ui-system-secondary-hover: #373D96; $ui-system-accent: #C6599B; $ui-system-link: #B24789; $ui-system-link-hover: #9B3174; $ui-system-focus-ring: #D465A7; $ui-system-selected-bg: #D3EEFF; $ui-system-background: #EEF5FE; $ui-system-surface: #F7FBFF; $ui-system-border: #E3EEFA; $ui-system-input-bg: #F9FEFF; $ui-system-input-border: #CCD7E3; $ui-system-input-focus: #D465A7; $ui-system-text: #192532; $ui-system-muted: #5B7188; $ui-system-success: #137E3B; $ui-system-warning: #9D5E00; $ui-system-error: #C1443D; $ui-system-on-success: #FFFFFF; $ui-system-success-container: #BDFAC8; $ui-system-on-success-container: #21763C; $ui-system-on-warning: #FFFFFF; $ui-system-warning-container: #FFDDA8; $ui-system-on-warning-container: #905200; $ui-system-on-error: #FFFFFF; $ui-system-error-container: #FFD1C8; $ui-system-on-error-container: #9C443C; // dark $ui-system-primary-dark: #0074CA; $ui-system-on-primary-dark: #FFFFFF; $ui-system-primary-hover-dark: #298AE2; $ui-system-primary-active-dark: #3C9AF3; $ui-system-primary-disabled-dark: #2A394A; $ui-system-secondary-dark: #464FA9; $ui-system-secondary-hover-dark: #5864C0; $ui-system-accent-dark: #C6599B; $ui-system-link-dark: #FF91D4; $ui-system-link-hover-dark: #FFA7EB; $ui-system-focus-ring-dark: #FF91D4; $ui-system-selected-bg-dark: #12283E; $ui-system-background-dark: #060C12; $ui-system-surface-dark: #0F171F; $ui-system-border-dark: #242F3A; $ui-system-input-bg-dark: #101820; $ui-system-input-border-dark: #36414D; $ui-system-input-focus-dark: #FF91D4; $ui-system-text-dark: #E5F0FC; $ui-system-muted-dark: #90A7C0; $ui-system-success-dark: #7ED591; $ui-system-warning-dark: #F5B66A; $ui-system-error-dark: #F57A6F; $ui-system-on-success-dark: #000000; $ui-system-success-container-dark: #073215; $ui-system-on-success-container-dark: #A3F5B3; $ui-system-on-warning-dark: #000000; $ui-system-warning-container-dark: #3E2100; $ui-system-on-warning-container-dark: #FFD083; $ui-system-on-error-dark: #000000; $ui-system-error-container-dark: #451915; $ui-system-on-error-container-dark: #FFBFB3;
// tailwind.config.js — theme.extend.colors
colors: {
'ui-system': {
'primary': '#0074CA',
'on-primary': '#FFFFFF',
'primary-hover': '#0062B6',
'primary-active': '#0052A6',
'primary-disabled': '#B7CADE',
'secondary': '#464FA9',
'secondary-hover': '#373D96',
'accent': '#C6599B',
'link': '#B24789',
'link-hover': '#9B3174',
'focus-ring': '#D465A7',
'selected-bg': '#D3EEFF',
'background': '#EEF5FE',
'surface': '#F7FBFF',
'border': '#E3EEFA',
'input-bg': '#F9FEFF',
'input-border': '#CCD7E3',
'input-focus': '#D465A7',
'text': '#192532',
'muted': '#5B7188',
'success': '#137E3B',
'warning': '#9D5E00',
'error': '#C1443D',
'on-success': '#FFFFFF',
'success-container': '#BDFAC8',
'on-success-container': '#21763C',
'on-warning': '#FFFFFF',
'warning-container': '#FFDDA8',
'on-warning-container': '#905200',
'on-error': '#FFFFFF',
'error-container': '#FFD1C8',
'on-error-container': '#9C443C',
},
'ui-system-dark': {
'primary': '#0074CA',
'on-primary': '#FFFFFF',
'primary-hover': '#298AE2',
'primary-active': '#3C9AF3',
'primary-disabled': '#2A394A',
'secondary': '#464FA9',
'secondary-hover': '#5864C0',
'accent': '#C6599B',
'link': '#FF91D4',
'link-hover': '#FFA7EB',
'focus-ring': '#FF91D4',
'selected-bg': '#12283E',
'background': '#060C12',
'surface': '#0F171F',
'border': '#242F3A',
'input-bg': '#101820',
'input-border': '#36414D',
'input-focus': '#FF91D4',
'text': '#E5F0FC',
'muted': '#90A7C0',
'success': '#7ED591',
'warning': '#F5B66A',
'error': '#F57A6F',
'on-success': '#000000',
'success-container': '#073215',
'on-success-container': '#A3F5B3',
'on-warning': '#000000',
'warning-container': '#3E2100',
'on-warning-container': '#FFD083',
'on-error': '#000000',
'error-container': '#451915',
'on-error-container': '#FFBFB3',
},
}
{
"light": {
"primary": {
"value": "#0074CA",
"type": "color"
},
"on-primary": {
"value": "#FFFFFF",
"type": "color"
},
"primary-hover": {
"value": "#0062B6",
"type": "color"
},
"primary-active": {
"value": "#0052A6",
"type": "color"
},
"primary-disabled": {
"value": "#B7CADE",
"type": "color"
},
"secondary": {
"value": "#464FA9",
"type": "color"
},
"secondary-hover": {
"value": "#373D96",
"type": "color"
},
"accent": {
"value": "#C6599B",
"type": "color"
},
"link": {
"value": "#B24789",
"type": "color"
},
"link-hover": {
"value": "#9B3174",
"type": "color"
},
"focus-ring": {
"value": "#D465A7",
"type": "color"
},
"selected-bg": {
"value": "#D3EEFF",
"type": "color"
},
"background": {
"value": "#EEF5FE",
"type": "color"
},
"surface": {
"value": "#F7FBFF",
"type": "color"
},
"border": {
"value": "#E3EEFA",
"type": "color"
},
"input-bg": {
"value": "#F9FEFF",
"type": "color"
},
"input-border": {
"value": "#CCD7E3",
"type": "color"
},
"input-focus": {
"value": "#D465A7",
"type": "color"
},
"text": {
"value": "#192532",
"type": "color"
},
"muted": {
"value": "#5B7188",
"type": "color"
},
"success": {
"value": "#137E3B",
"type": "color"
},
"warning": {
"value": "#9D5E00",
"type": "color"
},
"error": {
"value": "#C1443D",
"type": "color"
},
"on-success": {
"value": "#FFFFFF",
"type": "color"
},
"success-container": {
"value": "#BDFAC8",
"type": "color"
},
"on-success-container": {
"value": "#21763C",
"type": "color"
},
"on-warning": {
"value": "#FFFFFF",
"type": "color"
},
"warning-container": {
"value": "#FFDDA8",
"type": "color"
},
"on-warning-container": {
"value": "#905200",
"type": "color"
},
"on-error": {
"value": "#FFFFFF",
"type": "color"
},
"error-container": {
"value": "#FFD1C8",
"type": "color"
},
"on-error-container": {
"value": "#9C443C",
"type": "color"
}
},
"dark": {
"primary": {
"value": "#0074CA",
"type": "color"
},
"on-primary": {
"value": "#FFFFFF",
"type": "color"
},
"primary-hover": {
"value": "#298AE2",
"type": "color"
},
"primary-active": {
"value": "#3C9AF3",
"type": "color"
},
"primary-disabled": {
"value": "#2A394A",
"type": "color"
},
"secondary": {
"value": "#464FA9",
"type": "color"
},
"secondary-hover": {
"value": "#5864C0",
"type": "color"
},
"accent": {
"value": "#C6599B",
"type": "color"
},
"link": {
"value": "#FF91D4",
"type": "color"
},
"link-hover": {
"value": "#FFA7EB",
"type": "color"
},
"focus-ring": {
"value": "#FF91D4",
"type": "color"
},
"selected-bg": {
"value": "#12283E",
"type": "color"
},
"background": {
"value": "#060C12",
"type": "color"
},
"surface": {
"value": "#0F171F",
"type": "color"
},
"border": {
"value": "#242F3A",
"type": "color"
},
"input-bg": {
"value": "#101820",
"type": "color"
},
"input-border": {
"value": "#36414D",
"type": "color"
},
"input-focus": {
"value": "#FF91D4",
"type": "color"
},
"text": {
"value": "#E5F0FC",
"type": "color"
},
"muted": {
"value": "#90A7C0",
"type": "color"
},
"success": {
"value": "#7ED591",
"type": "color"
},
"warning": {
"value": "#F5B66A",
"type": "color"
},
"error": {
"value": "#F57A6F",
"type": "color"
},
"on-success": {
"value": "#000000",
"type": "color"
},
"success-container": {
"value": "#073215",
"type": "color"
},
"on-success-container": {
"value": "#A3F5B3",
"type": "color"
},
"on-warning": {
"value": "#000000",
"type": "color"
},
"warning-container": {
"value": "#3E2100",
"type": "color"
},
"on-warning-container": {
"value": "#FFD083",
"type": "color"
},
"on-error": {
"value": "#000000",
"type": "color"
},
"error-container": {
"value": "#451915",
"type": "color"
},
"on-error-container": {
"value": "#FFBFB3",
"type": "color"
}
}
}
{
"light": {
"primary": "#0074CA",
"on-primary": "#FFFFFF",
"primary-hover": "#0062B6",
"primary-active": "#0052A6",
"primary-disabled": "#B7CADE",
"secondary": "#464FA9",
"secondary-hover": "#373D96",
"accent": "#C6599B",
"link": "#B24789",
"link-hover": "#9B3174",
"focus-ring": "#D465A7",
"selected-bg": "#D3EEFF",
"background": "#EEF5FE",
"surface": "#F7FBFF",
"border": "#E3EEFA",
"input-bg": "#F9FEFF",
"input-border": "#CCD7E3",
"input-focus": "#D465A7",
"text": "#192532",
"muted": "#5B7188",
"success": "#137E3B",
"warning": "#9D5E00",
"error": "#C1443D",
"on-success": "#FFFFFF",
"success-container": "#BDFAC8",
"on-success-container": "#21763C",
"on-warning": "#FFFFFF",
"warning-container": "#FFDDA8",
"on-warning-container": "#905200",
"on-error": "#FFFFFF",
"error-container": "#FFD1C8",
"on-error-container": "#9C443C"
},
"dark": {
"primary": "#0074CA",
"on-primary": "#FFFFFF",
"primary-hover": "#298AE2",
"primary-active": "#3C9AF3",
"primary-disabled": "#2A394A",
"secondary": "#464FA9",
"secondary-hover": "#5864C0",
"accent": "#C6599B",
"link": "#FF91D4",
"link-hover": "#FFA7EB",
"focus-ring": "#FF91D4",
"selected-bg": "#12283E",
"background": "#060C12",
"surface": "#0F171F",
"border": "#242F3A",
"input-bg": "#101820",
"input-border": "#36414D",
"input-focus": "#FF91D4",
"text": "#E5F0FC",
"muted": "#90A7C0",
"success": "#7ED591",
"warning": "#F5B66A",
"error": "#F57A6F",
"on-success": "#000000",
"success-container": "#073215",
"on-success-container": "#A3F5B3",
"on-warning": "#000000",
"warning-container": "#3E2100",
"on-warning-container": "#FFD083",
"on-error": "#000000",
"error-container": "#451915",
"on-error-container": "#FFBFB3"
}
}
/* Canva → Brand Kit → Brand Colors */ /* Brand */ #0074CA #FFFFFF #0062B6 #0052A6 #B7CADE #464FA9 #373D96 #C6599B #B24789 #9B3174 #D465A7 #D3EEFF #D465A7 /* Neutral */ #EEF5FE #F7FBFF #E3EEFA #F9FEFF #CCD7E3 #192532 #5B7188 /* Semantic */ #137E3B #9D5E00 #C1443D #FFFFFF #BDFAC8 #21763C #FFFFFF #FFDDA8 #905200 #FFFFFF #FFD1C8 #9C443C