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.

light
dark
lightdarksolidhoveractiveforegroundsubtlesubtle-hoverborderring
Selected
Focus ring
Link

Paste these overrides after the theme variables to keep this accent in your project.

globals.csscss

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.

NoneSmallDefaultLargeXLCustom
0.5rem · 8px
Selected
Inbox
Drafts
Archive

Every radius token is a multiple of this one value and stops at 16px, so the override is a single line.

globals.csscss

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 / classLightDark
--backgroundbg-background#fffoklch(15% 0 0)
--cardbg-card#fff#111
--popoverbg-popover#fffoklch(25.2% 0 0)
--surface-sunkenbg-surface-sunken#0000000d#0006
--surface-standoutbg-surface-standout#202020#222
--shellbg-shelloklch(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 / classLightDark
--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 / classLightDark
--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 / classLightDark
--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 / classLightDark
--borderborder-border#00000017#ffffff1b
--border-subtleborder-border-subtle#00000006#ffffff09
--border-strongborder-border-strong#00000026#ffffff2c
--inputborder-input#00000017#ffffff1b
--shell-borderborder-shell-borderoklch(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 / classLightDark
--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 / classLightDark
--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