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: #826EA6;
--secondary-hover: #705D93;
--accent: #91892D;
--link: #7A7108;
--link-hover: #665D00;
--focus-ring: #988F29;
--selected-bg: #DBECFF;
--background: #F0F7FF;
--surface: #F8FDFF;
--border: #DEE8FD;
--input-bg: #FAFEFF;
--input-border: #C7D1E6;
--input-focus: #988F29;
--text: #1D2433;
--muted: #5F6C86;
--success: #1B7D3D;
--warning: #9B5F00;
--error: #BF473F;
--on-success: #FFFFFF;
--success-container: #BDFAC8;
--on-success-container: #21763C;
--on-warning: #FFFFFF;
--warning-container: #FFDDA7;
--on-warning-container: #8F5300;
--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: #826EA6;
--secondary-hover: #9783BC;
--accent: #91892D;
--link: #C9C268;
--link-hover: #E0D97E;
--focus-ring: #CAC260;
--selected-bg: #1A263F;
--background: #0D121F;
--surface: #161D2B;
--border: #293040;
--input-bg: #131720;
--input-border: #3B4253;
--input-focus: #CAC260;
--text: #E8EFFC;
--muted: #97A5C2;
--success: #81D493;
--warning: #F4B76E;
--error: #F37C71;
--on-success: #000000;
--success-container: #073215;
--on-success-container: #A3F5B4;
--on-warning: #000000;
--warning-container: #3E2100;
--on-warning-container: #FFD083;
--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: #826EA6; $ui-system-secondary-hover: #705D93; $ui-system-accent: #91892D; $ui-system-link: #7A7108; $ui-system-link-hover: #665D00; $ui-system-focus-ring: #988F29; $ui-system-selected-bg: #DBECFF; $ui-system-background: #F0F7FF; $ui-system-surface: #F8FDFF; $ui-system-border: #DEE8FD; $ui-system-input-bg: #FAFEFF; $ui-system-input-border: #C7D1E6; $ui-system-input-focus: #988F29; $ui-system-text: #1D2433; $ui-system-muted: #5F6C86; $ui-system-success: #1B7D3D; $ui-system-warning: #9B5F00; $ui-system-error: #BF473F; $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: #FFDDA7; $ui-system-on-warning-container: #8F5300; $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: #826EA6; $ui-system-secondary-hover-dark: #9783BC; $ui-system-accent-dark: #91892D; $ui-system-link-dark: #C9C268; $ui-system-link-hover-dark: #E0D97E; $ui-system-focus-ring-dark: #CAC260; $ui-system-selected-bg-dark: #1A263F; $ui-system-background-dark: #0D121F; $ui-system-surface-dark: #161D2B; $ui-system-border-dark: #293040; $ui-system-input-bg-dark: #131720; $ui-system-input-border-dark: #3B4253; $ui-system-input-focus-dark: #CAC260; $ui-system-text-dark: #E8EFFC; $ui-system-muted-dark: #97A5C2; $ui-system-success-dark: #81D493; $ui-system-warning-dark: #F4B76E; $ui-system-error-dark: #F37C71; $ui-system-on-success-dark: #000000; $ui-system-success-container-dark: #073215; $ui-system-on-success-container-dark: #A3F5B4; $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': '#426BCE',
'on-primary': '#FFFFFF',
'primary-hover': '#3259BA',
'primary-active': '#2549A9',
'primary-disabled': '#BCC8DF',
'secondary': '#826EA6',
'secondary-hover': '#705D93',
'accent': '#91892D',
'link': '#7A7108',
'link-hover': '#665D00',
'focus-ring': '#988F29',
'selected-bg': '#DBECFF',
'background': '#F0F7FF',
'surface': '#F8FDFF',
'border': '#DEE8FD',
'input-bg': '#FAFEFF',
'input-border': '#C7D1E6',
'input-focus': '#988F29',
'text': '#1D2433',
'muted': '#5F6C86',
'success': '#1B7D3D',
'warning': '#9B5F00',
'error': '#BF473F',
'on-success': '#FFFFFF',
'success-container': '#BDFAC8',
'on-success-container': '#21763C',
'on-warning': '#FFFFFF',
'warning-container': '#FFDDA7',
'on-warning-container': '#8F5300',
'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': '#826EA6',
'secondary-hover': '#9783BC',
'accent': '#91892D',
'link': '#C9C268',
'link-hover': '#E0D97E',
'focus-ring': '#CAC260',
'selected-bg': '#1A263F',
'background': '#0D121F',
'surface': '#161D2B',
'border': '#293040',
'input-bg': '#131720',
'input-border': '#3B4253',
'input-focus': '#CAC260',
'text': '#E8EFFC',
'muted': '#97A5C2',
'success': '#81D493',
'warning': '#F4B76E',
'error': '#F37C71',
'on-success': '#000000',
'success-container': '#073215',
'on-success-container': '#A3F5B4',
'on-warning': '#000000',
'warning-container': '#3E2100',
'on-warning-container': '#FFD083',
'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": "#826EA6",
"type": "color"
},
"secondary-hover": {
"value": "#705D93",
"type": "color"
},
"accent": {
"value": "#91892D",
"type": "color"
},
"link": {
"value": "#7A7108",
"type": "color"
},
"link-hover": {
"value": "#665D00",
"type": "color"
},
"focus-ring": {
"value": "#988F29",
"type": "color"
},
"selected-bg": {
"value": "#DBECFF",
"type": "color"
},
"background": {
"value": "#F0F7FF",
"type": "color"
},
"surface": {
"value": "#F8FDFF",
"type": "color"
},
"border": {
"value": "#DEE8FD",
"type": "color"
},
"input-bg": {
"value": "#FAFEFF",
"type": "color"
},
"input-border": {
"value": "#C7D1E6",
"type": "color"
},
"input-focus": {
"value": "#988F29",
"type": "color"
},
"text": {
"value": "#1D2433",
"type": "color"
},
"muted": {
"value": "#5F6C86",
"type": "color"
},
"success": {
"value": "#1B7D3D",
"type": "color"
},
"warning": {
"value": "#9B5F00",
"type": "color"
},
"error": {
"value": "#BF473F",
"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": "#FFDDA7",
"type": "color"
},
"on-warning-container": {
"value": "#8F5300",
"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": "#826EA6",
"type": "color"
},
"secondary-hover": {
"value": "#9783BC",
"type": "color"
},
"accent": {
"value": "#91892D",
"type": "color"
},
"link": {
"value": "#C9C268",
"type": "color"
},
"link-hover": {
"value": "#E0D97E",
"type": "color"
},
"focus-ring": {
"value": "#CAC260",
"type": "color"
},
"selected-bg": {
"value": "#1A263F",
"type": "color"
},
"background": {
"value": "#0D121F",
"type": "color"
},
"surface": {
"value": "#161D2B",
"type": "color"
},
"border": {
"value": "#293040",
"type": "color"
},
"input-bg": {
"value": "#131720",
"type": "color"
},
"input-border": {
"value": "#3B4253",
"type": "color"
},
"input-focus": {
"value": "#CAC260",
"type": "color"
},
"text": {
"value": "#E8EFFC",
"type": "color"
},
"muted": {
"value": "#97A5C2",
"type": "color"
},
"success": {
"value": "#81D493",
"type": "color"
},
"warning": {
"value": "#F4B76E",
"type": "color"
},
"error": {
"value": "#F37C71",
"type": "color"
},
"on-success": {
"value": "#000000",
"type": "color"
},
"success-container": {
"value": "#073215",
"type": "color"
},
"on-success-container": {
"value": "#A3F5B4",
"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": "#426BCE",
"on-primary": "#FFFFFF",
"primary-hover": "#3259BA",
"primary-active": "#2549A9",
"primary-disabled": "#BCC8DF",
"secondary": "#826EA6",
"secondary-hover": "#705D93",
"accent": "#91892D",
"link": "#7A7108",
"link-hover": "#665D00",
"focus-ring": "#988F29",
"selected-bg": "#DBECFF",
"background": "#F0F7FF",
"surface": "#F8FDFF",
"border": "#DEE8FD",
"input-bg": "#FAFEFF",
"input-border": "#C7D1E6",
"input-focus": "#988F29",
"text": "#1D2433",
"muted": "#5F6C86",
"success": "#1B7D3D",
"warning": "#9B5F00",
"error": "#BF473F",
"on-success": "#FFFFFF",
"success-container": "#BDFAC8",
"on-success-container": "#21763C",
"on-warning": "#FFFFFF",
"warning-container": "#FFDDA7",
"on-warning-container": "#8F5300",
"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": "#826EA6",
"secondary-hover": "#9783BC",
"accent": "#91892D",
"link": "#C9C268",
"link-hover": "#E0D97E",
"focus-ring": "#CAC260",
"selected-bg": "#1A263F",
"background": "#0D121F",
"surface": "#161D2B",
"border": "#293040",
"input-bg": "#131720",
"input-border": "#3B4253",
"input-focus": "#CAC260",
"text": "#E8EFFC",
"muted": "#97A5C2",
"success": "#81D493",
"warning": "#F4B76E",
"error": "#F37C71",
"on-success": "#000000",
"success-container": "#073215",
"on-success-container": "#A3F5B4",
"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 */ #426BCE #FFFFFF #3259BA #2549A9 #BCC8DF #826EA6 #705D93 #91892D #7A7108 #665D00 #988F29 #DBECFF #988F29 /* Neutral */ #F0F7FF #F8FDFF #DEE8FD #FAFEFF #C7D1E6 #1D2433 #5F6C86 /* Semantic */ #1B7D3D #9B5F00 #BF473F #FFFFFF #BDFAC8 #21763C #FFFFFF #FFDDA7 #8F5300 #FFFFFF #FFD1C8 #9C443C