Skip to content

Theming

Black, white, and neutral grays. Color where it has a job to do.

The palette

These swatches read the current theme. Use the theme button in the header to compare light and dark.

Page

--background

Card

--card

Popover

--popover

Secondary

--secondary

Muted text

--muted-foreground

Primary

--primary

Controls on every surface

Fields use a separate --control fill so they remain visible inside cards and floating panels. Visible text identifies the field; focus and error states add a ring. Small empty controls keep a semantic boundary. Try typing, tabbing, and switching themes below.

Page

Card

Muted

Popover

Theme tokens

The installed app.css maps CSS variables through Tailwind's @theme inline. Update the variables to change every component that uses them.

:root {
  --background: #ffffff;
  --foreground: #202020;
  --card: #ffffff;
  --popover: #ffffff;
  --secondary: #f5f5f5;
  --muted: #f5f5f5;
  --muted-foreground: #626262;
  --primary: #171717;
  --primary-hover: #333333;
  --primary-foreground: #ffffff;
  --control: #e8e8e8;
  --input: #8a8a8a;
  --ring: var(--primary);
}

.dark {
  --background: #000000;
  --foreground: #f5f5f5;
  --card: #141414;
  --popover: #202020;
  --secondary: #202020;
  --muted: #202020;
  --muted-foreground: #a3a3a3;
  --primary: #f5f5f5;
  --primary-hover: #d9d9d9;
  --primary-foreground: #171717;
  --control: #363636;
  --input: #858585;
}

Add your brand color

Override the primary, hover, and foreground colors together. The selected-state fills derive from your primary color. Check text and focus contrast in both themes.

:root {
  --primary: #6d28d9;
  --primary-hover: #5b21b6;
  --primary-foreground: #ffffff;
}

.dark {
  --primary: #c4b5fd;
  --primary-hover: #ddd6fe;
  --primary-foreground: #221442;
}

Surfaces and status

Use bg-background for the page, bg-card for content, and bg-popover for floating controls. Gray fills and soft shadows establish depth. Keep borders for inputs, focus, dividers, and panel edges that need separation.

Success, warning, destructive, and info colors communicate status. The voice orb and aurora utilities use color for AI activity. Navigation, labels, and routine actions stay neutral.

Motion and dark mode

Add the dark class to the document to activate the dark theme. Save the preference in your app and apply it before the first paint to avoid a flash.

Transitions take 200 to 320 milliseconds. Components respect prefers-reduced-motion. The cloud orb stops drawing animation frames when motion is reduced or the orb is offscreen.