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: #008D7E;
--on-primary: #000000;
--primary-hover: #007B6D;
--primary-active: #006C5E;
--primary-disabled: #AFCFC9;
--secondary: #598B98;
--secondary-hover: #477986;
--accent: #B3726F;
--link: #A75B59;
--link-hover: #904746;
--focus-ring: #D27270;
--selected-bg: #C7F7EE;
--background: #E8FCF8;
--surface: #F4FFFD;
--border: #D3EFE9;
--input-bg: #F7FFFE;
--input-border: #BCD8D2;
--input-focus: #D27270;
--text: #122925;
--muted: #4E756E;
--success: #1B7D3D;
--warning: #A16500;
--error: #BF473F;
--on-success: #FFFFFF;
--success-container: #BDFAC8;
--on-success-container: #21763C;
--on-warning: #FFFFFF;
--warning-container: #FFDEA6;
--on-warning-container: #8E5400;
--on-error: #FFFFFF;
--error-container: #FFD1C8;
--on-error-container: #9C443C;
}
[data-theme="dark"] {
--primary: #008D7E;
--on-primary: #000000;
--primary-hover: #2EA393;
--primary-active: #43B2A2;
--primary-disabled: #223E39;
--secondary: #598B98;
--secondary-hover: #6EA0AE;
--accent: #B3726F;
--link: #F8A4A0;
--link-hover: #FFBAB6;
--focus-ring: #FF9E9A;
--selected-bg: #002E28;
--background: #041714;
--surface: #0A221E;
--border: #1E3531;
--input-bg: #0C1A18;
--input-border: #304743;
--input-focus: #FF9E9A;
--text: #E1F3EF;
--muted: #86AEA7;
--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: #008D7E; $ui-system-on-primary: #000000; $ui-system-primary-hover: #007B6D; $ui-system-primary-active: #006C5E; $ui-system-primary-disabled: #AFCFC9; $ui-system-secondary: #598B98; $ui-system-secondary-hover: #477986; $ui-system-accent: #B3726F; $ui-system-link: #A75B59; $ui-system-link-hover: #904746; $ui-system-focus-ring: #D27270; $ui-system-selected-bg: #C7F7EE; $ui-system-background: #E8FCF8; $ui-system-surface: #F4FFFD; $ui-system-border: #D3EFE9; $ui-system-input-bg: #F7FFFE; $ui-system-input-border: #BCD8D2; $ui-system-input-focus: #D27270; $ui-system-text: #122925; $ui-system-muted: #4E756E; $ui-system-success: #1B7D3D; $ui-system-warning: #A16500; $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: #FFDEA6; $ui-system-on-warning-container: #8E5400; $ui-system-on-error: #FFFFFF; $ui-system-error-container: #FFD1C8; $ui-system-on-error-container: #9C443C; // dark $ui-system-primary-dark: #008D7E; $ui-system-on-primary-dark: #000000; $ui-system-primary-hover-dark: #2EA393; $ui-system-primary-active-dark: #43B2A2; $ui-system-primary-disabled-dark: #223E39; $ui-system-secondary-dark: #598B98; $ui-system-secondary-hover-dark: #6EA0AE; $ui-system-accent-dark: #B3726F; $ui-system-link-dark: #F8A4A0; $ui-system-link-hover-dark: #FFBAB6; $ui-system-focus-ring-dark: #FF9E9A; $ui-system-selected-bg-dark: #002E28; $ui-system-background-dark: #041714; $ui-system-surface-dark: #0A221E; $ui-system-border-dark: #1E3531; $ui-system-input-bg-dark: #0C1A18; $ui-system-input-border-dark: #304743; $ui-system-input-focus-dark: #FF9E9A; $ui-system-text-dark: #E1F3EF; $ui-system-muted-dark: #86AEA7; $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': '#008D7E',
'on-primary': '#000000',
'primary-hover': '#007B6D',
'primary-active': '#006C5E',
'primary-disabled': '#AFCFC9',
'secondary': '#598B98',
'secondary-hover': '#477986',
'accent': '#B3726F',
'link': '#A75B59',
'link-hover': '#904746',
'focus-ring': '#D27270',
'selected-bg': '#C7F7EE',
'background': '#E8FCF8',
'surface': '#F4FFFD',
'border': '#D3EFE9',
'input-bg': '#F7FFFE',
'input-border': '#BCD8D2',
'input-focus': '#D27270',
'text': '#122925',
'muted': '#4E756E',
'success': '#1B7D3D',
'warning': '#A16500',
'error': '#BF473F',
'on-success': '#FFFFFF',
'success-container': '#BDFAC8',
'on-success-container': '#21763C',
'on-warning': '#FFFFFF',
'warning-container': '#FFDEA6',
'on-warning-container': '#8E5400',
'on-error': '#FFFFFF',
'error-container': '#FFD1C8',
'on-error-container': '#9C443C',
},
'ui-system-dark': {
'primary': '#008D7E',
'on-primary': '#000000',
'primary-hover': '#2EA393',
'primary-active': '#43B2A2',
'primary-disabled': '#223E39',
'secondary': '#598B98',
'secondary-hover': '#6EA0AE',
'accent': '#B3726F',
'link': '#F8A4A0',
'link-hover': '#FFBAB6',
'focus-ring': '#FF9E9A',
'selected-bg': '#002E28',
'background': '#041714',
'surface': '#0A221E',
'border': '#1E3531',
'input-bg': '#0C1A18',
'input-border': '#304743',
'input-focus': '#FF9E9A',
'text': '#E1F3EF',
'muted': '#86AEA7',
'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": "#008D7E",
"type": "color"
},
"on-primary": {
"value": "#000000",
"type": "color"
},
"primary-hover": {
"value": "#007B6D",
"type": "color"
},
"primary-active": {
"value": "#006C5E",
"type": "color"
},
"primary-disabled": {
"value": "#AFCFC9",
"type": "color"
},
"secondary": {
"value": "#598B98",
"type": "color"
},
"secondary-hover": {
"value": "#477986",
"type": "color"
},
"accent": {
"value": "#B3726F",
"type": "color"
},
"link": {
"value": "#A75B59",
"type": "color"
},
"link-hover": {
"value": "#904746",
"type": "color"
},
"focus-ring": {
"value": "#D27270",
"type": "color"
},
"selected-bg": {
"value": "#C7F7EE",
"type": "color"
},
"background": {
"value": "#E8FCF8",
"type": "color"
},
"surface": {
"value": "#F4FFFD",
"type": "color"
},
"border": {
"value": "#D3EFE9",
"type": "color"
},
"input-bg": {
"value": "#F7FFFE",
"type": "color"
},
"input-border": {
"value": "#BCD8D2",
"type": "color"
},
"input-focus": {
"value": "#D27270",
"type": "color"
},
"text": {
"value": "#122925",
"type": "color"
},
"muted": {
"value": "#4E756E",
"type": "color"
},
"success": {
"value": "#1B7D3D",
"type": "color"
},
"warning": {
"value": "#A16500",
"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": "#FFDEA6",
"type": "color"
},
"on-warning-container": {
"value": "#8E5400",
"type": "color"
},
"on-error": {
"value": "#FFFFFF",
"type": "color"
},
"error-container": {
"value": "#FFD1C8",
"type": "color"
},
"on-error-container": {
"value": "#9C443C",
"type": "color"
}
},
"dark": {
"primary": {
"value": "#008D7E",
"type": "color"
},
"on-primary": {
"value": "#000000",
"type": "color"
},
"primary-hover": {
"value": "#2EA393",
"type": "color"
},
"primary-active": {
"value": "#43B2A2",
"type": "color"
},
"primary-disabled": {
"value": "#223E39",
"type": "color"
},
"secondary": {
"value": "#598B98",
"type": "color"
},
"secondary-hover": {
"value": "#6EA0AE",
"type": "color"
},
"accent": {
"value": "#B3726F",
"type": "color"
},
"link": {
"value": "#F8A4A0",
"type": "color"
},
"link-hover": {
"value": "#FFBAB6",
"type": "color"
},
"focus-ring": {
"value": "#FF9E9A",
"type": "color"
},
"selected-bg": {
"value": "#002E28",
"type": "color"
},
"background": {
"value": "#041714",
"type": "color"
},
"surface": {
"value": "#0A221E",
"type": "color"
},
"border": {
"value": "#1E3531",
"type": "color"
},
"input-bg": {
"value": "#0C1A18",
"type": "color"
},
"input-border": {
"value": "#304743",
"type": "color"
},
"input-focus": {
"value": "#FF9E9A",
"type": "color"
},
"text": {
"value": "#E1F3EF",
"type": "color"
},
"muted": {
"value": "#86AEA7",
"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": "#008D7E",
"on-primary": "#000000",
"primary-hover": "#007B6D",
"primary-active": "#006C5E",
"primary-disabled": "#AFCFC9",
"secondary": "#598B98",
"secondary-hover": "#477986",
"accent": "#B3726F",
"link": "#A75B59",
"link-hover": "#904746",
"focus-ring": "#D27270",
"selected-bg": "#C7F7EE",
"background": "#E8FCF8",
"surface": "#F4FFFD",
"border": "#D3EFE9",
"input-bg": "#F7FFFE",
"input-border": "#BCD8D2",
"input-focus": "#D27270",
"text": "#122925",
"muted": "#4E756E",
"success": "#1B7D3D",
"warning": "#A16500",
"error": "#BF473F",
"on-success": "#FFFFFF",
"success-container": "#BDFAC8",
"on-success-container": "#21763C",
"on-warning": "#FFFFFF",
"warning-container": "#FFDEA6",
"on-warning-container": "#8E5400",
"on-error": "#FFFFFF",
"error-container": "#FFD1C8",
"on-error-container": "#9C443C"
},
"dark": {
"primary": "#008D7E",
"on-primary": "#000000",
"primary-hover": "#2EA393",
"primary-active": "#43B2A2",
"primary-disabled": "#223E39",
"secondary": "#598B98",
"secondary-hover": "#6EA0AE",
"accent": "#B3726F",
"link": "#F8A4A0",
"link-hover": "#FFBAB6",
"focus-ring": "#FF9E9A",
"selected-bg": "#002E28",
"background": "#041714",
"surface": "#0A221E",
"border": "#1E3531",
"input-bg": "#0C1A18",
"input-border": "#304743",
"input-focus": "#FF9E9A",
"text": "#E1F3EF",
"muted": "#86AEA7",
"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 */ #008D7E #000000 #007B6D #006C5E #AFCFC9 #598B98 #477986 #B3726F #A75B59 #904746 #D27270 #C7F7EE #D27270 /* Neutral */ #E8FCF8 #F4FFFD #D3EFE9 #F7FFFE #BCD8D2 #122925 #4E756E /* Semantic */ #1B7D3D #A16500 #BF473F #FFFFFF #BDFAC8 #21763C #FFFFFF #FFDEA6 #8E5400 #FFFFFF #FFD1C8 #9C443C