Customizing
Colors
The full color system, exposed as 22 Hugo params.
Every color the theme uses is a CSS custom property fed by a Hugo param. Override any of them in your site’s hugo.toml to rebrand instantly.
The signature gradient #
The theme’s defining motif is the official Splunk brand gradient — Magenta 50 → Orange 50 with stops at 10% / 90%. It appears on the hero <em>, step circles, the chapter weight number, the progress bar, the pager hover, and a dozen other places.
[params]
colorAccent = "#FF007F" # Magenta 50 · Pantone 213 C · decorative (gradients, large display, borders, icons)
colorAccent2 = "#FF9000" # Orange 50 · Pantone 151 C · gradient end
colorAccent3 = "#FFAB0F" # supplementary amber (warm callouts only)
colorAccentDark = "#D4006B" # darker magenta for hover/active
# Body-text accent — WCAG AA contrast. Use these for inline link colour,
# active sidebar/breadcrumb states, and any place magenta meets prose.
colorAccentText = "#BD0D5F" # Magenta 60 — ~5.4:1 on white
colorAccentTextDark = "#FF7DBA" # Magenta 30 — ~8:1 on Splunk navyWhy two accents #
Magenta 50 (#FF007F) is the brand colour but only hits ~3.6:1 on white — fine for large text, icons, gradients, and borders, but fails AA for body text. The theme splits accent usage:
| Use | Token |
|---|---|
| Hero gradient, step circles, chapter weight number, progress bar | --color-accent |
| Icons, decorative borders, focus rings, shadows | --color-accent |
| Inline link text, active sidebar/TOC entry, inline-code colour | --color-accent-text |
Body badges (accent variant) | --color-accent-text |
If you rebrand to a single accent that already hits AA, set colorAccentText to the same value as colorAccent.
The gradient is computed from the two brand stops:
linear-gradient(95deg, var(--color-accent) 10%, var(--color-accent-2) 90%)The 10% / 90% offsets match the official brand spec — they keep the pure brand colors at the edges and let the natural CSS interpolation form a coral/red middle.
To rebrand to a single accent (no gradient), set both colorAccent and colorAccent2 to the same value.
Light mode tokens #
| Token | Default | Used for |
|---|---|---|
colorInk | #0C1724 | Body text |
colorInkMuted | #585B61 | Muted text, captions (AA-safe; bumped from the bare #4B4D52 to hit ~4.6:1 on white) |
colorPaper | #FFFFFF | Page background |
colorSurface | #F4F6FA | Callout fills, card surfaces (cool gray to harmonize with the dark-mode navy palette) |
colorSurfaceAlt | #E9EDF2 | Inline code chip background |
colorBorder | #E1E5EC | Hairlines |
colorBorderStrong | #C7CDD8 | Strong borders, code-block borders |
Dark mode tokens #
Every light token has a …Dark counterpart that takes effect when data-theme="dark":
| Token | Default |
|---|---|
colorInkDark | #F4F1EA |
colorInkMutedDark | #9CA3AF |
colorPaperDark | #0C1724 |
colorSurfaceDark | #141E2F |
colorSurfaceAltDark | #1B2740 |
colorBorderDark | #1F2C44 |
colorBorderStrongDark | #2A3A56 |
Code-block surfaces #
Fenced code blocks render inside a chrome with a header bar (language label or file=… attribute, plus the Copy button) over the highlighted body. Each surface is its own param so you can match the rest of your design.
[params]
codeBg = "#F5F5F5" # body background, light
codeHeaderBg = "#F2F2F2" # header bar background, light
codeBgDark = "#0A1322" # body background, dark
codeHeaderBgDark = "#131E33" # header bar background, darkThe defaults sit one step off the page paper / surface tokens so a code block reads as “embedded panel” rather than blending into the page. If you want them flatter, set them to your colorSurface and colorSurfaceAlt values; for sharper contrast, push them further from paper.
Italic in display headings becomes the brand gradient #
Markdown emphasis inside the hero title, the browse-page h1, and the See-all category names renders as the pink→orange gradient instead of plain italic. So a front-matter title like:
hero_title = "Observability *Workshops*."…outputs Observability in normal weight and Workshops in lighter italic gradient. The pattern is reserved for display headings (decorative, large-type) — workshop body ## / ### headings still treat *italic* as plain emphasis so authors can use it for file names, technical terms, etc., without the brand colour overriding them.
Templates that want this opt in by piping the title through markdownify. The bundled hero.html, browse/list.html, and browse/row.html already do.
Worked example: rebrand to a teal/charcoal palette #
[params]
colorAccent = "#0EA5E9"
colorAccent2 = "#06B6D4"
colorAccent3 = "#A7F3D0"
colorAccentDark = "#0284C7"
colorInk = "#1F2937"
colorInkMuted = "#6B7280"
colorPaper = "#FAFAF9"
colorSurface = "#F4F4F5"
colorSurfaceAlt = "#E4E4E7"
colorPaperDark = "#0F172A"
colorSurfaceDark = "#1E293B"
colorSurfaceAltDark = "#334155"That’s the full rebrand — no SCSS recompile, no theme fork. The CSS custom properties update at page load.
Use a color tool
Where these are wired #
The flow is:
- Param value lives in
hugo.toml(this is what you edit). layouts/_partials/chrome/theme-vars.htmlreads the param and emits a<style>block with--color-…custom properties.- Every CSS file in
assets/css/referencesvar(--color-…). - Dark mode flips the values via
[data-theme="dark"]selectors.
If you want to add a new color, add the param + a default in chrome/theme-vars.html, then reference var(--color-mything) from CSS.
