# Custom theme
> Override --primary and --secondary tokens for a third-party brand.
Source: https://docs.docmosaic.com/docs/examples/custom-theme
DocMosaic reads every accent colour from CSS custom properties - the same `--primary`, `--secondary`, `--accent`, `--destructive` shape every shadcn app already uses. Rebrand the editor by overriding the variables; there's no JavaScript theme provider to wire.
The fastest path: change `--primary` and let everything else inherit. The exhaustive path: override the whole semantic surface.
## One-variable rebrand
```css
/* my-app/styles/editor-brand.css */
:root {
--primary: 79 70 229; /* indigo-600 */
--primary-foreground: 255 255 255;
--secondary: 224 231 255; /* indigo-100 */
--secondary-foreground: 30 27 75;
}
```
Then import it once at the boundary:
```tsx
'use client';
import { Editor } from '@docmosaic/react';
import '@docmosaic/react/styles.css';
import './editor-brand.css';
export default function BrandedEditor() {
return (
);
}
```
Every button, focus ring, selected-section border, and toolbar accent now reflects indigo. The structural tokens (`--radius`, `--editor-radius-section`, `--editor-shadow-section`) are untouched - you only changed the accent.
Color tokens are stored as **space-separated RGB triplets** (`56 29 42`) so they compose with the modern `rgb(R G B / )` syntax. Don't write hex values - they won't work with the editor's alpha-aware components.
## Full custom palette
For an exhaustive override, ship `base.css` only and supply every semantic token:
```tsx
// Don't import the bundled brand theme - start from the structural base.
import '@docmosaic/react/styles/base.css';
import './my-theme.css';
```
```css
/* my-theme.css */
:root {
--background: 250 250 252;
--foreground: 15 23 42;
--card: 255 255 255;
--card-foreground: 15 23 42;
--primary: 79 70 229;
--primary-foreground: 255 255 255;
--secondary: 224 231 255;
--secondary-foreground: 15 23 42;
--muted: 244 244 245;
--muted-foreground: 113 113 122;
--accent: 34 197 94;
--accent-foreground: 255 255 255;
--destructive: 220 38 38;
--destructive-foreground: 255 255 255;
--border: 228 228 231;
--input: 228 228 231;
--ring: 79 70 229;
--radius: 0.5rem;
}
```
## Related
- [Theming](/docs/theming) - full token surface
- [Dark mode recipe](/docs/recipes/dark-mode) - the bundled `.dark` scope