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: #BD446B;
--secondary-hover: #A8305A;
--accent: #719600;
--link: #5A7D00;
--link-hover: #476800;
--focus-ring: #769C10;
--selected-bg: #D0F0FF;
--background: #EEFAFF;
--surface: #F8FFFF;
--border: #CBDDED;
--input-bg: #F8FEFF;
--input-border: #B5C6D6;
--input-focus: #769C10;
--text: #172632;
--muted: #587287;
--success: #008323;
--warning: #B25B00;
--error: #DE2426;
--on-success: #FFFFFF;
--success-container: #C2F9C3;
--on-success-container: #2E7535;
--on-warning: #FFFFFF;
--warning-container: #FFD9AE;
--on-warning-container: #964D08;
--on-error: #FFFFFF;
--error-container: #FFD1C7;
--on-error-container: #9C443C;
}
[data-theme="dark"] {
--primary: #007CC0;
--on-primary: #000000;
--primary-hover: #2B92D7;
--primary-active: #3EA1E8;
--primary-disabled: #283A49;
--secondary: #BD446B;
--secondary-hover: #D55A7F;
--accent: #719600;
--link: #A6CF54;
--link-hover: #BCE66C;
--focus-ring: #A6CF54;
--selected-bg: #0E293D;
--background: #07121A;
--surface: #0F1D28;
--border: #303F4C;
--input-bg: #0F1820;
--input-border: #42525F;
--input-focus: #A6CF54;
--text: #E4F0FB;
--muted: #99B5CC;
--success: #5BDC80;
--warning: #FFAF36;
--error: #FF6359;
--on-success: #000000;
--success-container: #063215;
--on-success-container: #A2F5B4;
--on-warning: #000000;
--warning-container: #3D2200;
--on-warning-container: #FFD181;
--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: #BD446B; $ui-system-secondary-hover: #A8305A; $ui-system-accent: #719600; $ui-system-link: #5A7D00; $ui-system-link-hover: #476800; $ui-system-focus-ring: #769C10; $ui-system-selected-bg: #D0F0FF; $ui-system-background: #EEFAFF; $ui-system-surface: #F8FFFF; $ui-system-border: #CBDDED; $ui-system-input-bg: #F8FEFF; $ui-system-input-border: #B5C6D6; $ui-system-input-focus: #769C10; $ui-system-text: #172632; $ui-system-muted: #587287; $ui-system-success: #008323; $ui-system-warning: #B25B00; $ui-system-error: #DE2426; $ui-system-on-success: #FFFFFF; $ui-system-success-container: #C2F9C3; $ui-system-on-success-container: #2E7535; $ui-system-on-warning: #FFFFFF; $ui-system-warning-container: #FFD9AE; $ui-system-on-warning-container: #964D08; $ui-system-on-error: #FFFFFF; $ui-system-error-container: #FFD1C7; $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: #BD446B; $ui-system-secondary-hover-dark: #D55A7F; $ui-system-accent-dark: #719600; $ui-system-link-dark: #A6CF54; $ui-system-link-hover-dark: #BCE66C; $ui-system-focus-ring-dark: #A6CF54; $ui-system-selected-bg-dark: #0E293D; $ui-system-background-dark: #07121A; $ui-system-surface-dark: #0F1D28; $ui-system-border-dark: #303F4C; $ui-system-input-bg-dark: #0F1820; $ui-system-input-border-dark: #42525F; $ui-system-input-focus-dark: #A6CF54; $ui-system-text-dark: #E4F0FB; $ui-system-muted-dark: #99B5CC; $ui-system-success-dark: #5BDC80; $ui-system-warning-dark: #FFAF36; $ui-system-error-dark: #FF6359; $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: #FFD181; $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': '#BD446B',
'secondary-hover': '#A8305A',
'accent': '#719600',
'link': '#5A7D00',
'link-hover': '#476800',
'focus-ring': '#769C10',
'selected-bg': '#D0F0FF',
'background': '#EEFAFF',
'surface': '#F8FFFF',
'border': '#CBDDED',
'input-bg': '#F8FEFF',
'input-border': '#B5C6D6',
'input-focus': '#769C10',
'text': '#172632',
'muted': '#587287',
'success': '#008323',
'warning': '#B25B00',
'error': '#DE2426',
'on-success': '#FFFFFF',
'success-container': '#C2F9C3',
'on-success-container': '#2E7535',
'on-warning': '#FFFFFF',
'warning-container': '#FFD9AE',
'on-warning-container': '#964D08',
'on-error': '#FFFFFF',
'error-container': '#FFD1C7',
'on-error-container': '#9C443C',
},
'ui-system-dark': {
'primary': '#007CC0',
'on-primary': '#000000',
'primary-hover': '#2B92D7',
'primary-active': '#3EA1E8',
'primary-disabled': '#283A49',
'secondary': '#BD446B',
'secondary-hover': '#D55A7F',
'accent': '#719600',
'link': '#A6CF54',
'link-hover': '#BCE66C',
'focus-ring': '#A6CF54',
'selected-bg': '#0E293D',
'background': '#07121A',
'surface': '#0F1D28',
'border': '#303F4C',
'input-bg': '#0F1820',
'input-border': '#42525F',
'input-focus': '#A6CF54',
'text': '#E4F0FB',
'muted': '#99B5CC',
'success': '#5BDC80',
'warning': '#FFAF36',
'error': '#FF6359',
'on-success': '#000000',
'success-container': '#063215',
'on-success-container': '#A2F5B4',
'on-warning': '#000000',
'warning-container': '#3D2200',
'on-warning-container': '#FFD181',
'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": "#BD446B",
"type": "color"
},
"secondary-hover": {
"value": "#A8305A",
"type": "color"
},
"accent": {
"value": "#719600",
"type": "color"
},
"link": {
"value": "#5A7D00",
"type": "color"
},
"link-hover": {
"value": "#476800",
"type": "color"
},
"focus-ring": {
"value": "#769C10",
"type": "color"
},
"selected-bg": {
"value": "#D0F0FF",
"type": "color"
},
"background": {
"value": "#EEFAFF",
"type": "color"
},
"surface": {
"value": "#F8FFFF",
"type": "color"
},
"border": {
"value": "#CBDDED",
"type": "color"
},
"input-bg": {
"value": "#F8FEFF",
"type": "color"
},
"input-border": {
"value": "#B5C6D6",
"type": "color"
},
"input-focus": {
"value": "#769C10",
"type": "color"
},
"text": {
"value": "#172632",
"type": "color"
},
"muted": {
"value": "#587287",
"type": "color"
},
"success": {
"value": "#008323",
"type": "color"
},
"warning": {
"value": "#B25B00",
"type": "color"
},
"error": {
"value": "#DE2426",
"type": "color"
},
"on-success": {
"value": "#FFFFFF",
"type": "color"
},
"success-container": {
"value": "#C2F9C3",
"type": "color"
},
"on-success-container": {
"value": "#2E7535",
"type": "color"
},
"on-warning": {
"value": "#FFFFFF",
"type": "color"
},
"warning-container": {
"value": "#FFD9AE",
"type": "color"
},
"on-warning-container": {
"value": "#964D08",
"type": "color"
},
"on-error": {
"value": "#FFFFFF",
"type": "color"
},
"error-container": {
"value": "#FFD1C7",
"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": "#BD446B",
"type": "color"
},
"secondary-hover": {
"value": "#D55A7F",
"type": "color"
},
"accent": {
"value": "#719600",
"type": "color"
},
"link": {
"value": "#A6CF54",
"type": "color"
},
"link-hover": {
"value": "#BCE66C",
"type": "color"
},
"focus-ring": {
"value": "#A6CF54",
"type": "color"
},
"selected-bg": {
"value": "#0E293D",
"type": "color"
},
"background": {
"value": "#07121A",
"type": "color"
},
"surface": {
"value": "#0F1D28",
"type": "color"
},
"border": {
"value": "#303F4C",
"type": "color"
},
"input-bg": {
"value": "#0F1820",
"type": "color"
},
"input-border": {
"value": "#42525F",
"type": "color"
},
"input-focus": {
"value": "#A6CF54",
"type": "color"
},
"text": {
"value": "#E4F0FB",
"type": "color"
},
"muted": {
"value": "#99B5CC",
"type": "color"
},
"success": {
"value": "#5BDC80",
"type": "color"
},
"warning": {
"value": "#FFAF36",
"type": "color"
},
"error": {
"value": "#FF6359",
"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": "#FFD181",
"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": "#BD446B",
"secondary-hover": "#A8305A",
"accent": "#719600",
"link": "#5A7D00",
"link-hover": "#476800",
"focus-ring": "#769C10",
"selected-bg": "#D0F0FF",
"background": "#EEFAFF",
"surface": "#F8FFFF",
"border": "#CBDDED",
"input-bg": "#F8FEFF",
"input-border": "#B5C6D6",
"input-focus": "#769C10",
"text": "#172632",
"muted": "#587287",
"success": "#008323",
"warning": "#B25B00",
"error": "#DE2426",
"on-success": "#FFFFFF",
"success-container": "#C2F9C3",
"on-success-container": "#2E7535",
"on-warning": "#FFFFFF",
"warning-container": "#FFD9AE",
"on-warning-container": "#964D08",
"on-error": "#FFFFFF",
"error-container": "#FFD1C7",
"on-error-container": "#9C443C"
},
"dark": {
"primary": "#007CC0",
"on-primary": "#000000",
"primary-hover": "#2B92D7",
"primary-active": "#3EA1E8",
"primary-disabled": "#283A49",
"secondary": "#BD446B",
"secondary-hover": "#D55A7F",
"accent": "#719600",
"link": "#A6CF54",
"link-hover": "#BCE66C",
"focus-ring": "#A6CF54",
"selected-bg": "#0E293D",
"background": "#07121A",
"surface": "#0F1D28",
"border": "#303F4C",
"input-bg": "#0F1820",
"input-border": "#42525F",
"input-focus": "#A6CF54",
"text": "#E4F0FB",
"muted": "#99B5CC",
"success": "#5BDC80",
"warning": "#FFAF36",
"error": "#FF6359",
"on-success": "#000000",
"success-container": "#063215",
"on-success-container": "#A2F5B4",
"on-warning": "#000000",
"warning-container": "#3D2200",
"on-warning-container": "#FFD181",
"on-error": "#000000",
"error-container": "#451915",
"on-error-container": "#FFBFB3"
}
}
/* Canva → Brand Kit → Brand Colors */ /* Brand */ #007CC0 #000000 #006AAC #005B9C #B5CADD #BD446B #A8305A #719600 #5A7D00 #476800 #769C10 #D0F0FF #769C10 /* Neutral */ #EEFAFF #F8FFFF #CBDDED #F8FEFF #B5C6D6 #172632 #587287 /* Semantic */ #008323 #B25B00 #DE2426 #FFFFFF #C2F9C3 #2E7535 #FFFFFF #FFD9AE #964D08 #FFFFFF #FFD1C7 #9C443C