--- title: "Payload CMS — Customizing CSS & SCSS" aliases: [payload-css, payload-scss, payload-admin-css] tags: [payload-cms, css, scss, admin-panel, theming] sources: [raw/admin__customizing-css.md] created: 2026-05-15 updated: 2026-05-15 --- # Payload CMS — Customizing CSS & SCSS Three mechanisms to restyle the Admin Panel: global stylesheet, CSS variable overrides, and BEM class targeting. ## Global CSS Add a `custom.scss` file at the root of your app — it is loaded into the Admin Panel root: ```scss .dashboard { background-color: red; } ``` > For [[wiki/tech-patterns/payload-cms-admin-panel-location|custom components]], import styles directly into the component instead of using the global stylesheet. ## CSS Specificity & Layers All Payload styles are inside `@layer payload-default`. Custom CSS gets **highest specificity by default**. Two layers available: | Layer | Purpose | |-------|---------| | *(no layer)* | Overrides everything — use for most customizations | | `@layer payload` | Custom styles that respect cascade order after Payload | | `@layer payload-default` | Write within Payload's own specificity (for surgical overrides) | ```css @layer payload-default { /* matches Payload's own specificity level */ } ``` ## Re-using Payload SCSS Variables Import the UI package's SCSS utilities into your own stylesheet: ```scss @import '~@payloadcms/ui/scss'; ``` ## CSS Variable Library (BEM + Custom Properties) Payload uses [BEM naming](http://getbem.com/) — class names are globally accessible and predictable. Override CSS custom properties defined in `@payloadcms/ui/src/scss`: | Variable Group | File | Controls | |---------------|------|----------| | Breakpoints | `queries.scss` | Responsive breakpoints | | Colors | `colors.scss` | Base shades, success/warning/error, theme-specific bg/text/input | | Elevation | `colors.scss` | How "bright" elements appear vs background | | Sizing | `app.scss` | Gutters, transition speeds, font sizes | ## Dark Mode Color variables automatically adapt to dark/light theme. Payload inverts: - All `--theme-elevation-*` colors - Success / warning / error shades - Base theme vars: `--theme-bg`, `--theme-text`, etc. **When overriding colors** — always verify both dark and light themes. ## Key Takeaways - Global CSS → `custom.scss` at app root; highest specificity wins by default - Use `@layer payload-default` to stay within Payload's specificity layer - Import `~@payloadcms/ui/scss` to re-use Payload's SCSS variables - BEM class names are stable and globally targetable - CSS custom properties (colors, sizing, elevation) are the fastest way to retheme - Always check dark mode when touching color variables ## Related - [[wiki/tech-patterns/payload-cms-installation|Payload CMS — Installation & Setup]] - [[wiki/tech-patterns/payload-cms-admin-panel-location|Payload CMS — Custom Admin Panel Location]] - [[wiki/tech-patterns/payload-cms-admin-accessibility|Payload CMS — Admin Panel Accessibility]] - [[wiki/tech-patterns/payload-cms-access-control-overview|Payload CMS — Access Control Overview]] ## Sources - `raw/admin__customizing-css.md` — official Payload docs on CSS customization