50
#F5F9FFFrom one HEX colour: eleven shades (50–950), light and dark preview, contrast check, and Tailwind v4 / CSS / JSON export.
Shade 500 is the base colour.
50
#F5F9FF100
#D8E7FF200
#B9D4FF300
#94BDFE400
#6AA0F7500Base
#3B82F6600
#1F5DC1700
#073B89800
#001D50900
#00071F950
#000104@theme {
--color-brand-50: #F5F9FF;
--color-brand-100: #D8E7FF;
--color-brand-200: #B9D4FF;
--color-brand-300: #94BDFE;
--color-brand-400: #6AA0F7;
--color-brand-500: #3B82F6;
--color-brand-600: #1F5DC1;
--color-brand-700: #073B89;
--color-brand-800: #001D50;
--color-brand-900: #00071F;
--color-brand-950: #000104;
}
brand-theme.css
Light · background 50
Body 700 on a card with border 200.
Dark · background 900
Body 200 on a card with border 700.
Shades used are labelled. This preview is not a contrast certificate.
One pair, not the scale.
The quick brown fox
Ratio 18.93:1
This check is for the selected pair only. It does not mean the whole colour scale is accessible.
Shade 500 is your base colour. Lighter shades step toward white; darker shades toward black. Hue is held in OKLCH. Check contrast for the pairs you actually ship.
The anchor. It matches the base HEX exactly.
Invalid HEX keeps the last valid colour scale so a typo cannot wipe it.
Tailwind v4 for @theme tokens, CSS variables for any stack, JSON for design tools. Switching format never changes the colours.
No. It means that one pair meets that threshold. Layout, size and other WCAG criteria are on you.