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: #007CC0;
--on-primary: #000000;
--primary-hover: #006AAC;
--primary-active: #005B9C;
--primary-disabled: #B5CADD;
--secondary: #7479AB;
--secondary-hover: #636798;
--accent: #A2813B;
--link: #8A691B;
--link-hover: #755500;
--focus-ring: #AE8523;
--selected-bg: #D0F0FF;
--background: #EBF9FF;
--surface: #F6FEFF;
--border: #D8EBFB;
--input-bg: #F8FEFF;
--input-border: #C1D4E4;
--input-focus: #AE8523;
--text: #172632;
--muted: #566F84;
--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: #007CC0;
--on-primary: #000000;
--primary-hover: #2B92D7;
--primary-active: #3EA1E8;
--primary-disabled: #283A49;
--secondary: #7479AB;
--secondary-hover: #898EC1;
--accent: #A2813B;
--link: #DCB870;
--link-hover: #F3CF86;
--focus-ring: #E2B75C;
--selected-bg: #0E293D;
--background: #08141E;
--surface: #101E2A;
--border: #23323F;
--input-bg: #0F1820;
--input-border: #354452;
--input-focus: #E2B75C;
--text: #E4F0FB;
--muted: #8DA8BF;
--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: #007CC0; $ui-system-on-primary: #000000; $ui-system-primary-hover: #006AAC; $ui-system-primary-active: #005B9C; $ui-system-primary-disabled: #B5CADD; $ui-system-secondary: #7479AB; $ui-system-secondary-hover: #636798; $ui-system-accent: #A2813B; $ui-system-link: #8A691B; $ui-system-link-hover: #755500; $ui-system-focus-ring: #AE8523; $ui-system-selected-bg: #D0F0FF; $ui-system-background: #EBF9FF; $ui-system-surface: #F6FEFF; $ui-system-border: #D8EBFB; $ui-system-input-bg: #F8FEFF; $ui-system-input-border: #C1D4E4; $ui-system-input-focus: #AE8523; $ui-system-text: #172632; $ui-system-muted: #566F84; $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: #007CC0; $ui-system-on-primary-dark: #000000; $ui-system-primary-hover-dark: #2B92D7; $ui-system-primary-active-dark: #3EA1E8; $ui-system-primary-disabled-dark: #283A49; $ui-system-secondary-dark: #7479AB; $ui-system-secondary-hover-dark: #898EC1; $ui-system-accent-dark: #A2813B; $ui-system-link-dark: #DCB870; $ui-system-link-hover-dark: #F3CF86; $ui-system-focus-ring-dark: #E2B75C; $ui-system-selected-bg-dark: #0E293D; $ui-system-background-dark: #08141E; $ui-system-surface-dark: #101E2A; $ui-system-border-dark: #23323F; $ui-system-input-bg-dark: #0F1820; $ui-system-input-border-dark: #354452; $ui-system-input-focus-dark: #E2B75C; $ui-system-text-dark: #E4F0FB; $ui-system-muted-dark: #8DA8BF; $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': '#007CC0',
'on-primary': '#000000',
'primary-hover': '#006AAC',
'primary-active': '#005B9C',
'primary-disabled': '#B5CADD',
'secondary': '#7479AB',
'secondary-hover': '#636798',
'accent': '#A2813B',
'link': '#8A691B',
'link-hover': '#755500',
'focus-ring': '#AE8523',
'selected-bg': '#D0F0FF',
'background': '#EBF9FF',
'surface': '#F6FEFF',
'border': '#D8EBFB',
'input-bg': '#F8FEFF',
'input-border': '#C1D4E4',
'input-focus': '#AE8523',
'text': '#172632',
'muted': '#566F84',
'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': '#007CC0',
'on-primary': '#000000',
'primary-hover': '#2B92D7',
'primary-active': '#3EA1E8',
'primary-disabled': '#283A49',
'secondary': '#7479AB',
'secondary-hover': '#898EC1',
'accent': '#A2813B',
'link': '#DCB870',
'link-hover': '#F3CF86',
'focus-ring': '#E2B75C',
'selected-bg': '#0E293D',
'background': '#08141E',
'surface': '#101E2A',
'border': '#23323F',
'input-bg': '#0F1820',
'input-border': '#354452',
'input-focus': '#E2B75C',
'text': '#E4F0FB',
'muted': '#8DA8BF',
'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": "#007CC0",
"type": "color"
},
"on-primary": {
"value": "#000000",
"type": "color"
},
"primary-hover": {
"value": "#006AAC",
"type": "color"
},
"primary-active": {
"value": "#005B9C",
"type": "color"
},
"primary-disabled": {
"value": "#B5CADD",
"type": "color"
},
"secondary": {
"value": "#7479AB",
"type": "color"
},
"secondary-hover": {
"value": "#636798",
"type": "color"
},
"accent": {
"value": "#A2813B",
"type": "color"
},
"link": {
"value": "#8A691B",
"type": "color"
},
"link-hover": {
"value": "#755500",
"type": "color"
},
"focus-ring": {
"value": "#AE8523",
"type": "color"
},
"selected-bg": {
"value": "#D0F0FF",
"type": "color"
},
"background": {
"value": "#EBF9FF",
"type": "color"
},
"surface": {
"value": "#F6FEFF",
"type": "color"
},
"border": {
"value": "#D8EBFB",
"type": "color"
},
"input-bg": {
"value": "#F8FEFF",
"type": "color"
},
"input-border": {
"value": "#C1D4E4",
"type": "color"
},
"input-focus": {
"value": "#AE8523",
"type": "color"
},
"text": {
"value": "#172632",
"type": "color"
},
"muted": {
"value": "#566F84",
"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": "#007CC0",
"type": "color"
},
"on-primary": {
"value": "#000000",
"type": "color"
},
"primary-hover": {
"value": "#2B92D7",
"type": "color"
},
"primary-active": {
"value": "#3EA1E8",
"type": "color"
},
"primary-disabled": {
"value": "#283A49",
"type": "color"
},
"secondary": {
"value": "#7479AB",
"type": "color"
},
"secondary-hover": {
"value": "#898EC1",
"type": "color"
},
"accent": {
"value": "#A2813B",
"type": "color"
},
"link": {
"value": "#DCB870",
"type": "color"
},
"link-hover": {
"value": "#F3CF86",
"type": "color"
},
"focus-ring": {
"value": "#E2B75C",
"type": "color"
},
"selected-bg": {
"value": "#0E293D",
"type": "color"
},
"background": {
"value": "#08141E",
"type": "color"
},
"surface": {
"value": "#101E2A",
"type": "color"
},
"border": {
"value": "#23323F",
"type": "color"
},
"input-bg": {
"value": "#0F1820",
"type": "color"
},
"input-border": {
"value": "#354452",
"type": "color"
},
"input-focus": {
"value": "#E2B75C",
"type": "color"
},
"text": {
"value": "#E4F0FB",
"type": "color"
},
"muted": {
"value": "#8DA8BF",
"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": "#007CC0",
"on-primary": "#000000",
"primary-hover": "#006AAC",
"primary-active": "#005B9C",
"primary-disabled": "#B5CADD",
"secondary": "#7479AB",
"secondary-hover": "#636798",
"accent": "#A2813B",
"link": "#8A691B",
"link-hover": "#755500",
"focus-ring": "#AE8523",
"selected-bg": "#D0F0FF",
"background": "#EBF9FF",
"surface": "#F6FEFF",
"border": "#D8EBFB",
"input-bg": "#F8FEFF",
"input-border": "#C1D4E4",
"input-focus": "#AE8523",
"text": "#172632",
"muted": "#566F84",
"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": "#007CC0",
"on-primary": "#000000",
"primary-hover": "#2B92D7",
"primary-active": "#3EA1E8",
"primary-disabled": "#283A49",
"secondary": "#7479AB",
"secondary-hover": "#898EC1",
"accent": "#A2813B",
"link": "#DCB870",
"link-hover": "#F3CF86",
"focus-ring": "#E2B75C",
"selected-bg": "#0E293D",
"background": "#08141E",
"surface": "#101E2A",
"border": "#23323F",
"input-bg": "#0F1820",
"input-border": "#354452",
"input-focus": "#E2B75C",
"text": "#E4F0FB",
"muted": "#8DA8BF",
"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 */ #007CC0 #000000 #006AAC #005B9C #B5CADD #7479AB #636798 #A2813B #8A691B #755500 #AE8523 #D0F0FF #AE8523 /* Neutral */ #EBF9FF #F6FEFF #D8EBFB #F8FEFF #C1D4E4 #172632 #566F84 /* Semantic */ #1B7D3D #9B5F00 #BF473F #FFFFFF #BDFAC8 #21763C #FFFFFF #FFDDA7 #8F5300 #FFFFFF #FFD1C8 #9C443C