ember-theme/ember

A warm, monochrome color theme. One vivid coral spark in a sea of warm graphite.

21

stars

24

commits

Jun 1, 2026

updated

README

Ember

Ember

One vivid coral spark in a sea of warm graphite.

embertheme.com · Palette · Philosophy · Ports · palette.json


Ember — Dark, Soft, and Light variants

Philosophy

Most themes give you a rainbow. Ember gives you restraint.

The background is warm graphite (#1c1b19). Text is ivory (#d8d0c0). Every accent — olive greens, steel blues, dusty mauves — stays desaturated and quiet. Then coral (#e08060) lights up keywords, the cursor, the modeline bar, and search highlights.

One ember in the ash.

Eight muted accents sit in a narrow CIELAB L*52–58 band, balanced to equal perceptual brightness. Then one vivid coral at S55% cuts through like a match struck in the dark. Your eyes know exactly where to look. Everything else recedes. Your code breathes.

MetricValue
Contrast ratio11.2:1 (body text)
AccessibilityWCAG AA
Variants3 (dark, soft, light)
Hue spreadNarrow (~90°), all warm
SaturationUltra-muted except coral hero

Design Rationale

Ember is hand-tuned in CIELAB perceptual color space — not generated from an HSL palette picker. CIELAB models how humans actually see color: if two colors differ by the same numeric amount in Lab, they look equally different. RGB and HSL don't have this property, which is why many themes have accents that unintentionally shout over others.

Perceptual balance. All eight accents are normalized to a flat L*52–58 lightness band. No single color screams louder than the rest. The "squint test" holds: blur your eyes and every accent recedes equally — except coral.

Monochrome hero strategy. Where themes like Gruvbox give you seven vivid accents at similar saturation, Ember inverts the approach: seven muted earth tones plus one vivid coral (S67%). This creates a natural focal hierarchy — your eye goes straight to what matters.

Warm graphite, not brown. Ember lives close to Gruvbox's territory but at dramatically lower saturation. Background saturation stays at S6% — enough to feel warm, low enough to stay out of the way. The background is the ash, not the ember.

Built for long sessions. Body text sits at 11.2:1 contrast, well above WCAG AAA. Accents are tuned for WCAG AA. Foreground is warm ivory, never pure white — readable without eye strain over long sessions. Foreground is warm ivory, never pure white.

GruvboxEmber
CharacterRetro, warm, vividWarm, minimal, focused
Hero accentNone (even saturation)Coral (monochrome hero)
Accent count7 (all vivid)8 (1 vivid, 7 muted)
BG saturation~15%~6%

Three Flavors

VariantBackgroundDescription
Ember#1c1b19Dark graphite, L10% — the default
Ember Soft#242320Lifted graphite, L13% — softer contrast
Ember Light#e6dac4Warm ivory, L84% — darkened accents for contrast

Ember Light
Ember Light — warm parchment, not clinical white.

Palette

ColorHexRole
Coral#e08060Hero accent — keywords, cursor, links
Orange#c09058Constants, properties
Gold#c8b468Functions, types
Olive#8a9868Strings
Sage#80a090Methods
Steel#7890a0Muted blue
Rose#b07878Dusty rose
Mauve#988090Faint violet

The full palette definition (all variants, hex/HSL) is available as palette.json — the single source of truth for all ports.

Ports

PortRepositoryStatus
Emacs (Doom)ember-theme/emacs:white_check_mark: Available
Neovimember-theme/nvim:white_check_mark: Available
Ghosttyember-theme/ghostty:white_check_mark: Available
VS Codeember-theme/vscode:white_check_mark: Available
Alacrittyember-theme/alacritty:white_check_mark: Available
Kittyember-theme/kitty:white_check_mark: Available

Coming soon

Want to build a port? Use palette.json as your source of truth and open an issue.

License

MIT — Hossam Saraya

Contributors

daedlock

24 commits

ember-theme/ember

A warm, monochrome color theme. One vivid coral spark in a sea of warm graphite.

21

stars

24

commits

Jun 1, 2026

updated

README

Ember

Ember

One vivid coral spark in a sea of warm graphite.

embertheme.com · Palette · Philosophy · Ports · palette.json


Ember — Dark, Soft, and Light variants

Philosophy

Most themes give you a rainbow. Ember gives you restraint.

The background is warm graphite (#1c1b19). Text is ivory (#d8d0c0). Every accent — olive greens, steel blues, dusty mauves — stays desaturated and quiet. Then coral (#e08060) lights up keywords, the cursor, the modeline bar, and search highlights.

One ember in the ash.

Eight muted accents sit in a narrow CIELAB L*52–58 band, balanced to equal perceptual brightness. Then one vivid coral at S55% cuts through like a match struck in the dark. Your eyes know exactly where to look. Everything else recedes. Your code breathes.

MetricValue
Contrast ratio11.2:1 (body text)
AccessibilityWCAG AA
Variants3 (dark, soft, light)
Hue spreadNarrow (~90°), all warm
SaturationUltra-muted except coral hero

Design Rationale

Ember is hand-tuned in CIELAB perceptual color space — not generated from an HSL palette picker. CIELAB models how humans actually see color: if two colors differ by the same numeric amount in Lab, they look equally different. RGB and HSL don't have this property, which is why many themes have accents that unintentionally shout over others.

Perceptual balance. All eight accents are normalized to a flat L*52–58 lightness band. No single color screams louder than the rest. The "squint test" holds: blur your eyes and every accent recedes equally — except coral.

Monochrome hero strategy. Where themes like Gruvbox give you seven vivid accents at similar saturation, Ember inverts the approach: seven muted earth tones plus one vivid coral (S67%). This creates a natural focal hierarchy — your eye goes straight to what matters.

Warm graphite, not brown. Ember lives close to Gruvbox's territory but at dramatically lower saturation. Background saturation stays at S6% — enough to feel warm, low enough to stay out of the way. The background is the ash, not the ember.

Built for long sessions. Body text sits at 11.2:1 contrast, well above WCAG AAA. Accents are tuned for WCAG AA. Foreground is warm ivory, never pure white — readable without eye strain over long sessions. Foreground is warm ivory, never pure white.

GruvboxEmber
CharacterRetro, warm, vividWarm, minimal, focused
Hero accentNone (even saturation)Coral (monochrome hero)
Accent count7 (all vivid)8 (1 vivid, 7 muted)
BG saturation~15%~6%

Three Flavors

VariantBackgroundDescription
Ember#1c1b19Dark graphite, L10% — the default
Ember Soft#242320Lifted graphite, L13% — softer contrast
Ember Light#e6dac4Warm ivory, L84% — darkened accents for contrast

Ember Light
Ember Light — warm parchment, not clinical white.

Palette

ColorHexRole
Coral#e08060Hero accent — keywords, cursor, links
Orange#c09058Constants, properties
Gold#c8b468Functions, types
Olive#8a9868Strings
Sage#80a090Methods
Steel#7890a0Muted blue
Rose#b07878Dusty rose
Mauve#988090Faint violet

The full palette definition (all variants, hex/HSL) is available as palette.json — the single source of truth for all ports.

Ports

PortRepositoryStatus
Emacs (Doom)ember-theme/emacs:white_check_mark: Available
Neovimember-theme/nvim:white_check_mark: Available
Ghosttyember-theme/ghostty:white_check_mark: Available
VS Codeember-theme/vscode:white_check_mark: Available
Alacrittyember-theme/alacritty:white_check_mark: Available
Kittyember-theme/kitty:white_check_mark: Available

Coming soon

Want to build a port? Use palette.json as your source of truth and open an issue.

License

MIT — Hossam Saraya

Contributors

daedlock

24 commits