Skip to content

Theming & Appearance

HugoBlox gives you complete control over your site’s visual identity. Customize themes, colors, typography, and layout - all without touching CSS.


All appearance settings live in config/_default/params.yaml:

hugoblox:
schema: "2.0"
theme: # Colors and design
typography: # Fonts and sizing
layout: # Spacing and shapes

Theme packs provide coordinated color schemes for both light and dark modes.

hugoblox:
theme:
mode: system # light | dark | system (follows OS)
pack: "default"
PackLight ModeDark Mode
defaultModern indigo/emeraldDeep blue/teal
minimalGitHub-inspired clean grayGitHub dark
solarEasy-reading yellowishDeep teal (Solarized)
contrastHigh contrast, accessibleInverted high contrast

Use different packs for light and dark modes:

hugoblox:
theme:
pack:
light: "minimal" # Clean GitHub style for day
dark: "dracula" # Bold colors for night

Override theme pack colors without creating a custom theme.

hugoblox:
theme:
pack: "default"
colors:
primary: "indigo" # Main brand color
secondary: "emerald" # Accent color
neutral: "slate" # Gray scale choice

Use any Tailwind color name:

Vibrant: red ¡ orange ¡ amber ¡ yellow ¡ lime ¡ green ¡ emerald ¡ teal ¡ cyan

Cool: sky ¡ blue ¡ indigo ¡ violet ¡ purple ¡ fuchsia ¡ pink ¡ rose

Neutral: slate ¡ gray ¡ zinc ¡ neutral ¡ stone

HugoBlox automatically generates all shades (50-950).

Different colors for light vs dark mode:

hugoblox:
theme:
colors:
primary: "blue" # Default for both modes
colors_light:
secondary: "emerald" # Light mode accent
colors_dark:
secondary: "teal" # Dark mode accent

Control fonts and text sizing across your site.

hugoblox:
typography:
font: "sans" # sans | serif | native
size: "md" # sm | md | lg | xl
ValueFontStylePerformance
sansInterModern, cleanGood (web font)
serifRoboto SlabTraditional, academicGood (web font)
nativeSystem fontsOS-nativeBest (no download)

Choosing a font:

  • Academic/Traditional: Use serif for a scholarly feel
  • Modern/Tech: Use sans for clean readability
  • Performance-Critical: Use native for instant loading
ValueBase SizeUse Case
sm14pxDense content, dashboards
md16pxRecommended for general sites
lg18pxReadability focus, blogs
xl20pxLarge screens, accessibility

Fine-tune spacing and visual style.

hugoblox:
layout:
radius: "md" # Border radius
spacing: "comfortable" # Content density
avatar_shape: circle # circle | square | rounded
ValueEffectBest For
noneSharp corners (0)Minimal, editorial sites
smSubtle (4px)Professional, corporate
mdBalanced (8px)Recommended
lgSoft (12px)Friendly, approachable
fullPill shapesPlayful, modern apps
ValueEffectBest For
compactTight spacingDense information, dashboards
comfortableBalancedRecommended for most sites
spaciousGenerous whitespacePremium feel, portfolios

Controls the shape of profile photos in author cards:

ValueEffect
circleRound (default, traditional)
squareSharp corners
roundedSoft rounded corners

Override specific backgrounds and text colors (advanced users only).

hugoblox:
theme:
pack: default
surfaces:
background: "#ffffff"
foreground: "#000000"
header:
background: "#f1f5f9"
foreground: "#0f172a"
footer:
background: "#f3f4f6"
foreground: "#0f172a"

Surface structure:

  • background - Main page background
  • foreground - Main text color
  • header.background - Navigation bar background
  • header.foreground - Navigation text color
  • footer.background - Footer background
  • footer.foreground - Footer text color

HugoBlox automatically detects these files in assets/media/:

  • Directoryassets/
    • Directorymedia/
      • logo.svg ← Site logo (navbar)
      • icon.svg ← Favicon
      • social.png ← Social share image (Open Graph)

No configuration needed! Just place the files and HugoBlox finds them.

Detection order:

  • Logo: logo.svg → logo.png → logo.jpg
  • Icon: icon.svg → icon.png
  • Social: social.png → social.jpg

Need more control? Add custom styles without modifying theme files.

  1. Create custom CSS file

    assets/css/custom.css
  2. Add your styles

    /* Override CSS variables */
    :root {
    --custom-var: value;
    }
    /* Custom classes */
    .my-element {
    color: var(--color-primary-500);
    }
  3. File is automatically loaded

    HugoBlox includes custom.css if it exists.


hugoblox:
theme:
pack: minimal # Clean, professional
typography:
font: serif # Academic feel
size: md
layout:
spacing: comfortable
hugoblox:
theme:
pack: default
colors:
primary: "#8C1515" # University brand color
header:
cta:
enable: true
text: "Join Us"
url: "/careers/"
hugoblox:
theme:
mode: dark
pack: synthwave # Bold, modern
typography:
font: sans
size: lg
layout:
radius: lg
spacing: spacious

Can I use any Google Font?

Yes. While we provide optimized defaults (Inter, Roboto Slab), you can use any Google Font. Add the font import to assets/css/custom.css and reference it in your CSS.

Why isn't my favicon updating?

Browser caching. Browsers cache favicons aggressively. Open your site in an Incognito/Private window or hard refresh (Cmd+Shift+R / Ctrl+F5). Also ensure the file is in assets/media/, not static/.

Can I create a completely custom theme?

Yes. Define exact hex codes for colors and surfaces in params.yaml. HugoBlox generates all shades and CSS variables automatically.

How do I remove 'Powered by HugoBlox'?

This is a Pro feature. HugoBlox Pro subscribers can optionally hide the attribution. Open source users keep the link to support the project (many Pro users do too!).

Do I need to know CSS?

No. The params.yaml configuration handles 90% of customization. You only need CSS for highly specific visual overrides.

Do themes work on mobile?

Yes, automatically. All HugoBlox themes are fully responsive. Typography, spacing, and navigation adapt automatically to phone and tablet screens.

Can I preview themes before choosing?

Yes! Enable header.theme_picker: true to show a dropdown that lets you (and visitors) preview all theme packs instantly.

What's the difference between 'colors' and 'surfaces'?

Colors are your brand (primary/secondary). Surfaces are where they appear (backgrounds and text). Most users only need to configure colors - theme packs handle surfaces automatically.