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: #426BCE;
--on-primary: #FFFFFF;
--primary-hover: #3259BA;
--primary-active: #2549A9;
--primary-disabled: #BCC8DF;
--secondary: #A46200;
--secondary-hover: #915000;
--accent: #E1388D;
--link: #D22781;
--link-hover: #B9006D;
--focus-ring: #F1579F;
--selected-bg: #DBECFF;
--background: #F9FCFF;
--surface: #FDFFFF;
--border: #CDD1DA;
--input-bg: #FAFDFF;
--input-border: #B7BBC3;
--input-focus: #F1579F;
--text: #1D2433;
--muted: #65728D;
--success: #00841D;
--warning: #B45900;
--error: #E21620;
--on-success: #FFFFFF;
--success-container: #C3F8C3;
--on-success-container: #307434;
--on-warning: #FFFFFF;
--warning-container: #FFD8B0;
--on-warning-container: #964C0E;
--on-error: #FFFFFF;
--error-container: #FFD1C8;
--on-error-container: #9C443C;
}
[data-theme="dark"] {
--primary: #426BCE;
--on-primary: #FFFFFF;
--primary-hover: #5581E6;
--primary-active: #6490F7;
--primary-disabled: #2F384A;
--secondary: #A46200;
--secondary-hover: #BB7727;
--accent: #E1388D;
--link: #FF77C5;
--link-hover: #FF8EDC;
--focus-ring: #FF7FC4;
--selected-bg: #1A263F;
--background: #0A0C11;
--surface: #14171D;
--border: #434851;
--input-bg: #13171F;
--input-border: #565B65;
--input-focus: #FF7FC4;
--text: #E8EFFC;
--muted: #A9B8D5;
--success: #54DD7D;
--warning: #FFAE28;
--error: #FF5E54;
--on-success: #000000;
--success-container: #063215;
--on-success-container: #A2F5B4;
--on-warning: #000000;
--warning-container: #3D2200;
--on-warning-container: #FFD281;
--on-error: #000000;
--error-container: #451915;
--on-error-container: #FFBFB3;
}
// light $ui-system-primary: #426BCE; $ui-system-on-primary: #FFFFFF; $ui-system-primary-hover: #3259BA; $ui-system-primary-active: #2549A9; $ui-system-primary-disabled: #BCC8DF; $ui-system-secondary: #A46200; $ui-system-secondary-hover: #915000; $ui-system-accent: #E1388D; $ui-system-link: #D22781; $ui-system-link-hover: #B9006D; $ui-system-focus-ring: #F1579F; $ui-system-selected-bg: #DBECFF; $ui-system-background: #F9FCFF; $ui-system-surface: #FDFFFF; $ui-system-border: #CDD1DA; $ui-system-input-bg: #FAFDFF; $ui-system-input-border: #B7BBC3; $ui-system-input-focus: #F1579F; $ui-system-text: #1D2433; $ui-system-muted: #65728D; $ui-system-success: #00841D; $ui-system-warning: #B45900; $ui-system-error: #E21620; $ui-system-on-success: #FFFFFF; $ui-system-success-container: #C3F8C3; $ui-system-on-success-container: #307434; $ui-system-on-warning: #FFFFFF; $ui-system-warning-container: #FFD8B0; $ui-system-on-warning-container: #964C0E; $ui-system-on-error: #FFFFFF; $ui-system-error-container: #FFD1C8; $ui-system-on-error-container: #9C443C; // dark $ui-system-primary-dark: #426BCE; $ui-system-on-primary-dark: #FFFFFF; $ui-system-primary-hover-dark: #5581E6; $ui-system-primary-active-dark: #6490F7; $ui-system-primary-disabled-dark: #2F384A; $ui-system-secondary-dark: #A46200; $ui-system-secondary-hover-dark: #BB7727; $ui-system-accent-dark: #E1388D; $ui-system-link-dark: #FF77C5; $ui-system-link-hover-dark: #FF8EDC; $ui-system-focus-ring-dark: #FF7FC4; $ui-system-selected-bg-dark: #1A263F; $ui-system-background-dark: #0A0C11; $ui-system-surface-dark: #14171D; $ui-system-border-dark: #434851; $ui-system-input-bg-dark: #13171F; $ui-system-input-border-dark: #565B65; $ui-system-input-focus-dark: #FF7FC4; $ui-system-text-dark: #E8EFFC; $ui-system-muted-dark: #A9B8D5; $ui-system-success-dark: #54DD7D; $ui-system-warning-dark: #FFAE28; $ui-system-error-dark: #FF5E54; $ui-system-on-success-dark: #000000; $ui-system-success-container-dark: #063215; $ui-system-on-success-container-dark: #A2F5B4; $ui-system-on-warning-dark: #000000; $ui-system-warning-container-dark: #3D2200; $ui-system-on-warning-container-dark: #FFD281; $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': '#426BCE',
'on-primary': '#FFFFFF',
'primary-hover': '#3259BA',
'primary-active': '#2549A9',
'primary-disabled': '#BCC8DF',
'secondary': '#A46200',
'secondary-hover': '#915000',
'accent': '#E1388D',
'link': '#D22781',
'link-hover': '#B9006D',
'focus-ring': '#F1579F',
'selected-bg': '#DBECFF',
'background': '#F9FCFF',
'surface': '#FDFFFF',
'border': '#CDD1DA',
'input-bg': '#FAFDFF',
'input-border': '#B7BBC3',
'input-focus': '#F1579F',
'text': '#1D2433',
'muted': '#65728D',
'success': '#00841D',
'warning': '#B45900',
'error': '#E21620',
'on-success': '#FFFFFF',
'success-container': '#C3F8C3',
'on-success-container': '#307434',
'on-warning': '#FFFFFF',
'warning-container': '#FFD8B0',
'on-warning-container': '#964C0E',
'on-error': '#FFFFFF',
'error-container': '#FFD1C8',
'on-error-container': '#9C443C',
},
'ui-system-dark': {
'primary': '#426BCE',
'on-primary': '#FFFFFF',
'primary-hover': '#5581E6',
'primary-active': '#6490F7',
'primary-disabled': '#2F384A',
'secondary': '#A46200',
'secondary-hover': '#BB7727',
'accent': '#E1388D',
'link': '#FF77C5',
'link-hover': '#FF8EDC',
'focus-ring': '#FF7FC4',
'selected-bg': '#1A263F',
'background': '#0A0C11',
'surface': '#14171D',
'border': '#434851',
'input-bg': '#13171F',
'input-border': '#565B65',
'input-focus': '#FF7FC4',
'text': '#E8EFFC',
'muted': '#A9B8D5',
'success': '#54DD7D',
'warning': '#FFAE28',
'error': '#FF5E54',
'on-success': '#000000',
'success-container': '#063215',
'on-success-container': '#A2F5B4',
'on-warning': '#000000',
'warning-container': '#3D2200',
'on-warning-container': '#FFD281',
'on-error': '#000000',
'error-container': '#451915',
'on-error-container': '#FFBFB3',
},
}
{
"light": {
"primary": {
"value": "#426BCE",
"type": "color"
},
"on-primary": {
"value": "#FFFFFF",
"type": "color"
},
"primary-hover": {
"value": "#3259BA",
"type": "color"
},
"primary-active": {
"value": "#2549A9",
"type": "color"
},
"primary-disabled": {
"value": "#BCC8DF",
"type": "color"
},
"secondary": {
"value": "#A46200",
"type": "color"
},
"secondary-hover": {
"value": "#915000",
"type": "color"
},
"accent": {
"value": "#E1388D",
"type": "color"
},
"link": {
"value": "#D22781",
"type": "color"
},
"link-hover": {
"value": "#B9006D",
"type": "color"
},
"focus-ring": {
"value": "#F1579F",
"type": "color"
},
"selected-bg": {
"value": "#DBECFF",
"type": "color"
},
"background": {
"value": "#F9FCFF",
"type": "color"
},
"surface": {
"value": "#FDFFFF",
"type": "color"
},
"border": {
"value": "#CDD1DA",
"type": "color"
},
"input-bg": {
"value": "#FAFDFF",
"type": "color"
},
"input-border": {
"value": "#B7BBC3",
"type": "color"
},
"input-focus": {
"value": "#F1579F",
"type": "color"
},
"text": {
"value": "#1D2433",
"type": "color"
},
"muted": {
"value": "#65728D",
"type": "color"
},
"success": {
"value": "#00841D",
"type": "color"
},
"warning": {
"value": "#B45900",
"type": "color"
},
"error": {
"value": "#E21620",
"type": "color"
},
"on-success": {
"value": "#FFFFFF",
"type": "color"
},
"success-container": {
"value": "#C3F8C3",
"type": "color"
},
"on-success-container": {
"value": "#307434",
"type": "color"
},
"on-warning": {
"value": "#FFFFFF",
"type": "color"
},
"warning-container": {
"value": "#FFD8B0",
"type": "color"
},
"on-warning-container": {
"value": "#964C0E",
"type": "color"
},
"on-error": {
"value": "#FFFFFF",
"type": "color"
},
"error-container": {
"value": "#FFD1C8",
"type": "color"
},
"on-error-container": {
"value": "#9C443C",
"type": "color"
}
},
"dark": {
"primary": {
"value": "#426BCE",
"type": "color"
},
"on-primary": {
"value": "#FFFFFF",
"type": "color"
},
"primary-hover": {
"value": "#5581E6",
"type": "color"
},
"primary-active": {
"value": "#6490F7",
"type": "color"
},
"primary-disabled": {
"value": "#2F384A",
"type": "color"
},
"secondary": {
"value": "#A46200",
"type": "color"
},
"secondary-hover": {
"value": "#BB7727",
"type": "color"
},
"accent": {
"value": "#E1388D",
"type": "color"
},
"link": {
"value": "#FF77C5",
"type": "color"
},
"link-hover": {
"value": "#FF8EDC",
"type": "color"
},
"focus-ring": {
"value": "#FF7FC4",
"type": "color"
},
"selected-bg": {
"value": "#1A263F",
"type": "color"
},
"background": {
"value": "#0A0C11",
"type": "color"
},
"surface": {
"value": "#14171D",
"type": "color"
},
"border": {
"value": "#434851",
"type": "color"
},
"input-bg": {
"value": "#13171F",
"type": "color"
},
"input-border": {
"value": "#565B65",
"type": "color"
},
"input-focus": {
"value": "#FF7FC4",
"type": "color"
},
"text": {
"value": "#E8EFFC",
"type": "color"
},
"muted": {
"value": "#A9B8D5",
"type": "color"
},
"success": {
"value": "#54DD7D",
"type": "color"
},
"warning": {
"value": "#FFAE28",
"type": "color"
},
"error": {
"value": "#FF5E54",
"type": "color"
},
"on-success": {
"value": "#000000",
"type": "color"
},
"success-container": {
"value": "#063215",
"type": "color"
},
"on-success-container": {
"value": "#A2F5B4",
"type": "color"
},
"on-warning": {
"value": "#000000",
"type": "color"
},
"warning-container": {
"value": "#3D2200",
"type": "color"
},
"on-warning-container": {
"value": "#FFD281",
"type": "color"
},
"on-error": {
"value": "#000000",
"type": "color"
},
"error-container": {
"value": "#451915",
"type": "color"
},
"on-error-container": {
"value": "#FFBFB3",
"type": "color"
}
}
}
{
"light": {
"primary": "#426BCE",
"on-primary": "#FFFFFF",
"primary-hover": "#3259BA",
"primary-active": "#2549A9",
"primary-disabled": "#BCC8DF",
"secondary": "#A46200",
"secondary-hover": "#915000",
"accent": "#E1388D",
"link": "#D22781",
"link-hover": "#B9006D",
"focus-ring": "#F1579F",
"selected-bg": "#DBECFF",
"background": "#F9FCFF",
"surface": "#FDFFFF",
"border": "#CDD1DA",
"input-bg": "#FAFDFF",
"input-border": "#B7BBC3",
"input-focus": "#F1579F",
"text": "#1D2433",
"muted": "#65728D",
"success": "#00841D",
"warning": "#B45900",
"error": "#E21620",
"on-success": "#FFFFFF",
"success-container": "#C3F8C3",
"on-success-container": "#307434",
"on-warning": "#FFFFFF",
"warning-container": "#FFD8B0",
"on-warning-container": "#964C0E",
"on-error": "#FFFFFF",
"error-container": "#FFD1C8",
"on-error-container": "#9C443C"
},
"dark": {
"primary": "#426BCE",
"on-primary": "#FFFFFF",
"primary-hover": "#5581E6",
"primary-active": "#6490F7",
"primary-disabled": "#2F384A",
"secondary": "#A46200",
"secondary-hover": "#BB7727",
"accent": "#E1388D",
"link": "#FF77C5",
"link-hover": "#FF8EDC",
"focus-ring": "#FF7FC4",
"selected-bg": "#1A263F",
"background": "#0A0C11",
"surface": "#14171D",
"border": "#434851",
"input-bg": "#13171F",
"input-border": "#565B65",
"input-focus": "#FF7FC4",
"text": "#E8EFFC",
"muted": "#A9B8D5",
"success": "#54DD7D",
"warning": "#FFAE28",
"error": "#FF5E54",
"on-success": "#000000",
"success-container": "#063215",
"on-success-container": "#A2F5B4",
"on-warning": "#000000",
"warning-container": "#3D2200",
"on-warning-container": "#FFD281",
"on-error": "#000000",
"error-container": "#451915",
"on-error-container": "#FFBFB3"
}
}
/* Canva → Brand Kit → Brand Colors */ /* Brand */ #426BCE #FFFFFF #3259BA #2549A9 #BCC8DF #A46200 #915000 #E1388D #D22781 #B9006D #F1579F #DBECFF #F1579F /* Neutral */ #F9FCFF #FDFFFF #CDD1DA #FAFDFF #B7BBC3 #1D2433 #65728D /* Semantic */ #00841D #B45900 #E21620 #FFFFFF #C3F8C3 #307434 #FFFFFF #FFD8B0 #964C0E #FFFFFF #FFD1C8 #9C443C