Customize
Choose an accent and corner radius.
One accent, every control
Every accented control reads eight variables, --primary and its variants plus --ring, and a preset swaps all eight per mode. Pick a preset or a brand colour below to try it, then copy the overrides. A custom colour is darkened or lifted only if it would fall under 3:1 contrast against the page.
Paste these overrides after the theme variables to keep this accent in your project.
One radius, every corner
Every radius token multiplies --radius, and nested surfaces subtract their padding from it, so corners stay concentric at any value up to the 16px cap. Pick a preset or drag for your own, then copy the override, or install a preset with theme-radius-none, -sm, -lg or -xl.
Every radius token is a multiple of this one value and stops at 16px, so the override is a single line.
Background
Use these for anything that must be opaque, and sunken for wells inside a surface.
--backgroundbg-backgroundlight#fffdarkoklch(15% 0 0)--cardbg-cardlight#fffdark#111--popoverbg-popoverlight#fffdarkoklch(25.2% 0 0)--surface-sunkenbg-surface-sunkenlight#0000000ddark#0006--surface-standoutbg-surface-standoutlight#202020dark#222--shellbg-shelllightoklch(97.3% 0 0)dark#000--codebg-codelight#f9f9f9dark#191919
| Token / class | Light | Dark |
|---|---|---|
--backgroundbg-background | #fff | oklch(15% 0 0) |
--cardbg-card | #fff | #111 |
--popoverbg-popover | #fff | oklch(25.2% 0 0) |
--surface-sunkenbg-surface-sunken | #0000000d | #0006 |
--surface-standoutbg-surface-standout | #202020 | #222 |
--shellbg-shell | oklch(97.3% 0 0) | #000 |
--codebg-code | #f9f9f9 | #191919 |
Fill
Use primary for the main action and secondary, muted or accent for hover, selected and track states. The last three are translucent, so never use them as surfaces.
--primaryaccentbg-primarylight#0090ffdark#0090ff--secondarybg-secondarylight#0000000fdark#ffffff12--mutedbg-mutedlight#0000000fdark#ffffff12--accentbg-accentlight#00000017dark#ffffff1b
| Token / class | Light | Dark |
|---|---|---|
--primaryaccentbg-primary | #0090ff | #0090ff |
--secondarybg-secondary | #0000000f | #ffffff12 |
--mutedbg-muted | #0000000f | #ffffff12 |
--accentbg-accent | #00000017 | #ffffff1b |
Accent roles
Use hover and active for pressed solids, and subtle for selected rows and tinted chips.
--primary-hoveraccentbg-primary-hoverlight#0588f0dark#3b9eff--primary-activeaccentbg-primary-activelight#0d74cedark#70b8ff--primary-subtleaccentbg-primary-subtlelight#008ff519dark#0077ff3a--primary-subtle-hoveraccentbg-primary-subtle-hoverlight#009eff2adark#0075ff57--primary-borderaccentborder-primary-borderlight#0088f653dark#0f89fd7f
| Token / class | Light | Dark |
|---|---|---|
--primary-hoveraccentbg-primary-hover | #0588f0 | #3b9eff |
--primary-activeaccentbg-primary-active | #0d74ce | #70b8ff |
--primary-subtleaccentbg-primary-subtle | #008ff519 | #0077ff3a |
--primary-subtle-hoveraccentbg-primary-subtle-hover | #009eff2a | #0075ff57 |
--primary-borderaccentborder-primary-border | #0088f653 | #0f89fd7f |
Text
Use foreground for primary text, muted-foreground for captions and nav icons, and fg-tertiary only for placeholders and hints.
--foregroundtext-foregroundlight#000000dfdark#ffffffed--muted-foregroundtext-muted-foregroundlight#0000009bdark#ffffffaf--fg-tertiarytext-fg-tertiarylight#00000072dark#ffffff64--fg-disabledtext-fg-disabledlight#0004dark#fff5--card-foregroundtext-card-foregroundlight#000000dfdark#ffffffed--popover-foregroundtext-popover-foregroundlight#000000dfdark#ffffffed--primary-foregroundaccenttext-primary-foregroundlight#fffdark#fff--standout-foregroundtext-standout-foregroundlight#fffdark#ffffffed--secondary-foregroundtext-secondary-foregroundlight#000000dfdark#ffffffed--accent-foregroundtext-accent-foregroundlight#000000dfdark#ffffffed
| Token / class | Light | Dark |
|---|---|---|
--foregroundtext-foreground | #000000df | #ffffffed |
--muted-foregroundtext-muted-foreground | #0000009b | #ffffffaf |
--fg-tertiarytext-fg-tertiary | #00000072 | #ffffff64 |
--fg-disabledtext-fg-disabled | #0004 | #fff5 |
--card-foregroundtext-card-foreground | #000000df | #ffffffed |
--popover-foregroundtext-popover-foreground | #000000df | #ffffffed |
--primary-foregroundaccenttext-primary-foreground | #fff | #fff |
--standout-foregroundtext-standout-foreground | #fff | #ffffffed |
--secondary-foregroundtext-secondary-foreground | #000000df | #ffffffed |
--accent-foregroundtext-accent-foreground | #000000df | #ffffffed |
Border
Use border for dividers, border-strong or input for field outlines, and ring at /50 for focus.
--borderborder-borderlight#00000017dark#ffffff1b--border-subtleborder-border-subtlelight#00000006dark#ffffff09--border-strongborder-border-stronglight#00000026dark#ffffff2c--inputborder-inputlight#00000017dark#ffffff1b--shell-borderborder-shell-borderlightoklch(0% 0 0 / 10%)darkoklch(100% 0 0 / 9%)--ringaccentring-ring/50light#0084e6a1dark#0090ff--scrollbarvar(--scrollbar)light#00000026dark#ffffff2c--scrollbar-hovervar(--scrollbar-hover)light#0004dark#fff5
| Token / class | Light | Dark |
|---|---|---|
--borderborder-border | #00000017 | #ffffff1b |
--border-subtleborder-border-subtle | #00000006 | #ffffff09 |
--border-strongborder-border-strong | #00000026 | #ffffff2c |
--inputborder-input | #00000017 | #ffffff1b |
--shell-borderborder-shell-border | oklch(0% 0 0 / 10%) | oklch(100% 0 0 / 9%) |
--ringaccentring-ring/50 | #0084e6a1 | #0090ff |
--scrollbarvar(--scrollbar) | #00000026 | #ffffff2c |
--scrollbar-hovervar(--scrollbar-hover) | #0004 | #fff5 |
State
These keep their meaning under every accent. Use subtle for alert and badge washes, and the solid for icons and text.
--destructivebg-destructivelight#e54d2edark#e54d2e--destructive-hoverbg-destructive-hoverlight#dd4425dark#ec6142--destructive-subtlebg-destructive-subtlelight#f52b0018dark#ff35232b--destructive-borderborder-destructive-borderlight#f92d0050dark#ff4f3864--destructive-foregroundtext-destructive-foregroundlight#fffcfcdark#fff--successbg-successlight#30a46cdark#30a46c--success-hoverbg-success-hoverlight#2b9a66dark#33b074--success-subtlebg-success-subtlelight#00a43319dark#22ff991e--success-borderborder-success-borderlight#00963c52dark#44ffaa4b--success-foregroundtext-success-foregroundlight#fbfefcdark#fff--warningbg-warninglight#f76b15dark#f76b15--warning-hoverbg-warning-hoverlight#ef5f00dark#ff801f--warning-subtlebg-warning-subtlelight#ff9c0029dark#fb6a0025--warning-borderborder-warning-borderlight#ff81007ddark#fd75045c--warning-foregroundtext-warning-foregroundlight#fefcfbdark#fff
| Token / class | Light | Dark |
|---|---|---|
--destructivebg-destructive | #e54d2e | #e54d2e |
--destructive-hoverbg-destructive-hover | #dd4425 | #ec6142 |
--destructive-subtlebg-destructive-subtle | #f52b0018 | #ff35232b |
--destructive-borderborder-destructive-border | #f92d0050 | #ff4f3864 |
--destructive-foregroundtext-destructive-foreground | #fffcfc | #fff |
--successbg-success | #30a46c | #30a46c |
--success-hoverbg-success-hover | #2b9a66 | #33b074 |
--success-subtlebg-success-subtle | #00a43319 | #22ff991e |
--success-borderborder-success-border | #00963c52 | #44ffaa4b |
--success-foregroundtext-success-foreground | #fbfefc | #fff |
--warningbg-warning | #f76b15 | #f76b15 |
--warning-hoverbg-warning-hover | #ef5f00 | #ff801f |
--warning-subtlebg-warning-subtle | #ff9c0029 | #fb6a0025 |
--warning-borderborder-warning-border | #ff81007d | #fd75045c |
--warning-foregroundtext-warning-foreground | #fefcfb | #fff |
Chart
Charts never read primary, so data keeps its colours under every accent. Use them as classes, or as var(--chart-n) in SVG.
--chart-1bg-chart-1light#0090ffdark#0090ff--chart-2bg-chart-2light#ef5f00dark#f76b15--chart-3bg-chart-3light#6e56cfdark#6e56cf--chart-4bg-chart-4light#30a46cdark#30a46c--chart-5bg-chart-5light#d6409fdark#d6409f--chart-6bg-chart-6light#ab6400dark#ffc53d--chart-7bg-chart-7light#00a2c7dark#00a2c7--chart-8bg-chart-8light#8d8d8ddark#6e6e6e
| Token / class | Light | Dark |
|---|---|---|
--chart-1bg-chart-1 | #0090ff | #0090ff |
--chart-2bg-chart-2 | #ef5f00 | #f76b15 |
--chart-3bg-chart-3 | #6e56cf | #6e56cf |
--chart-4bg-chart-4 | #30a46c | #30a46c |
--chart-5bg-chart-5 | #d6409f | #d6409f |
--chart-6bg-chart-6 | #ab6400 | #ffc53d |
--chart-7bg-chart-7 | #00a2c7 | #00a2c7 |
--chart-8bg-chart-8 | #8d8d8d | #6e6e6e |