Theming
Colours, corners, shadows and sizes are CSS variables in one file, css/base/variables.css. Change a variable and every component that uses it follows.
How theming works
All variables are set on :root in css/base/variables.css. You can edit that file directly, but it's better to keep your changes in a file of your own, so a template update doesn't overwrite them:
- Create
css/custom.cssand set only the variables you want to change. - Link it on every page, right after
css/style.css, so its values win.
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/custom.css">
:root {
--primary: #4F46E5;
--radius-xl: 10px;
}
The rest of this page lists the variables by group.
Brand colour
The template's brand colour is teal. It colours primary buttons, links, active menu items, focus rings, checked inputs and charts.
--primary#00B4D8--primary-hover#0096C7--primary-softteal at 10%--primary-bg#E0F7FB--primary-text#0E7490| Variable | Used for |
|---|---|
--primary | The brand colour itself: buttons, icons, active states, charts |
--primary-hover | Hover state of filled buttons; solid badges and alerts |
--primary-soft | Light tints — hover backgrounds, focus rings, selected items |
--primary-bg | Soft fills of badges and alerts |
--primary-text | Text on --primary-bg — darker, so it stays readable |
--shadow-teal | The coloured glow under primary buttons and the logo box |
Changing the brand colour
Set all six together, so hover states, tints and text stay in tune. An indigo theme, for example:
:root {
--primary: #4F46E5;
--primary-hover: #4338CA;
--primary-soft: rgba(79, 70, 229, .10);
--primary-bg: #EEF2FF;
--primary-text: #4338CA;
--shadow-teal: 0 6px 16px -4px rgba(79, 70, 229, .45);
}
Places with a fixed teal
A few gradients, tints and chart colours are written as fixed values instead of variables, so they keep the teal after you change --primary. To match your colour everywhere, search the template for #00B4D8, #0077B6 and rgba(0, 180, 216 (also written rgba(0,180,216) and replace them:
| File | What |
|---|---|
css/layout/sidebar.css | Logo box and user avatar gradients (#0077B6), the active menu item's tint |
css/layout/topbar.css | Profile avatar gradient |
css/components/dropdowns.css | Avatar gradient in the profile menu |
css/components/lists.css | Teal avatar colours (.av-sm.c2, .act-av.c3) |
css/components/forms.css | The tint of a checked option card |
css/components/tables.css | Hover tint of selected rows |
css/components/charts.css | The glow on the highlighted bar of small bar charts (.spark) |
css/pages/file-manager.css | Selected file in list view |
css/vendor/fullcalendar.css | Today's background and the selection tint |
index.html, index-analytics.html, index-crm.html | Line colour and gradient of the SVG charts (stroke, stop-color) |
Bootstrap's own colour classes — .btn-primary, .text-primary, .bg-primary and a plain .form-check-input — keep Bootstrap's blue. The template's pages don't use them; use the template's classes instead (.btn-brand, .check-soft, …), which follow --primary.
Sidebar colours
The sidebar has its own dark palette:
--sidebar-bg#0B132B--sidebar-bg-hover#1C2541--sidebar-bg-active#3A506B--sidebar-text#8D99AE--sidebar-text-active#FFFFFF--sidebar-borderlines, 12%| Variable | Used for |
|---|---|
--sidebar-bg | Background of the sidebar |
--sidebar-bg-hover | A menu link under the mouse |
--sidebar-bg-active | The user block under the mouse |
--sidebar-text | Menu links and the user's role |
--sidebar-text-active | The current page's link |
--sidebar-border | Lines under the logo and above the user block |
The current page's link gets a teal tint from the brand colour (see fixed teal). A charcoal sidebar instead of navy, for example:
:root {
--sidebar-bg: #111827;
--sidebar-bg-hover: #1F2937;
--sidebar-bg-active: #374151;
--sidebar-text: #9CA3AF;
}
The sidebar is designed for a dark background — some hover text and the logo are light. For a white sidebar, change the variables and those light colours in css/layout/sidebar.css.
Status colours
Alerts, toasts, badges, some buttons and modal icons share one set of status colours. Each colour has four values: the base, a darker shade for solid fills, a soft background and a text colour for that background.
| Colour | Base | Solid | Soft background | Text on soft | Looks like |
|---|---|---|---|---|---|
| primary | --primary | --primary-hover | --primary-bg | --primary-text | Primary |
| success | --success | --success-hover | --success-bg | --success-text | Success |
| warning | --warning | --warning (text --warning-on) | --warning-bg | --warning-text | Warning |
| danger | --danger | --danger-hover | --danger-bg | --danger-text | Danger |
| info | --info | --info-hover | --info-bg | --info-text | Info |
| violet | --violet | --violet-hover | --violet-bg | --violet-text | Violet |
| light / muted | --light-bg, --light-text, --light-border | Light | |||
| dark | --dark, --dark-text, --dark-soft-bg, --dark-soft-text | Dark | |||
Using a status colour
A component takes the primary colour by default. Add a colour class to switch it — the same class works on every component in the set:
<span class="badge-soft">New</span> <!-- primary -->
<span class="badge-soft success">Paid</span>
<span class="badge-soft danger">Overdue</span>
<div class="alert-soft warning">…</div>
The classes are .success, .danger, .warning, .info, .violet, .light, .muted and .dark. Task statuses have their own: .st-assigned (violet), .st-progress (primary), .st-review (warning) and .st-completed (success).
How it works: css/base/palette.css turns each colour class into a few short variables — --c (base), --c-solid, --c-on, --c-bg, --c-text and --c-line — and the components only read those.
Adding a colour
Add the values to your custom.css and one rule that maps them, like the existing ones in palette.css:
:root {
--pink: #EC4899; --pink-hover: #DB2777;
--pink-bg: #FCE7F3; --pink-text: #BE185D;
}
.pink { --c: var(--pink); --c-solid: var(--pink-hover); --c-bg: var(--pink-bg); --c-text: var(--pink-text); }
Now <span class="badge-soft pink"> works, and so does every other component in the set.
Text, surfaces and borders
--text-dark#0F172A--text-body#334155--text-muted#64748B--bg-body#F8F9FA--bg-card#FFFFFF--neutral-soft#F1F5F9--border#E2E8F0--border-strong#CBD5E1--text-dark is for titles, --text-body for normal text and --text-muted for hints and labels. --bg-body is the page background, --bg-card the background of cards and menus, and --neutral-soft the light grey of read-only fields, chart tracks and small hover backgrounds.
Corners
Six radius variables set how round the corners are. The template is fairly square by default:
| Variable | Default | Mostly used for |
|---|---|---|
--radius-xs | 4px | Badges, tooltips, tabs, checkboxes |
--radius-sm | 5px | Small buttons, pagination, dropdown items |
--radius-md | 6px | Buttons, inputs, dropdowns |
--radius-lg | 6px | Modals, tables, drop zones, task cards |
--radius-xl | 6px | Cards and alerts |
--radius-pill | 100px | Round pills, chips and switches |
:root {
--radius-md: 8px;
--radius-lg: 10px;
--radius-xl: 12px;
}
Shadows
| Variable | Used for |
|---|---|
--shadow-card | The very light shadow under cards |
--shadow-drop | Dropdowns, pop-overs and anything that floats above the page |
--shadow-teal | The coloured glow under primary buttons — set it to your brand colour (see above) |
For a completely flat look, set --shadow-card: none;.
Fonts
The template uses Inter from Google Fonts, at 14px for body text. Two places set it:
- the Google Fonts
<link>in each page's<head>, which loads the font; css/base/base.css, which applies it:* { font-family: 'Inter', system-ui, -apple-system, sans-serif; }.
To use another font, change both — load it in the <head> and override the rule in your custom.css:
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet">
* { font-family: 'Manrope', system-ui, -apple-system, sans-serif; }
Load the weights the template uses — 400, 500, 600, 700 and 800 — or bold text falls back to the nearest one. Icons are unaffected: Font Awesome sets its own font on the icon elements.