01 · Sepia Paper

warmCustomize

Amber-paper background that kills screen glare. Code in JetBrains Mono, prose in Source Serif 4. Earthy, low-saturation syntax.

bg #f2ecdfsurface #fbf7eeborder #e3dac6ink #322f28ink2 #5f584bfaint #716955selection #e6dcc0cursor #322f28lineHighlight #f6f0e4kw #9a5b2cstr #5a6b39fn #30577dnum #925e21type #7b5595builtin #2c7567punct #6e685cerror #853e33warning #795b2fok #2d7557
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

02 · Slate Mist

coolCustomize

A calm blue-gray that reads like e-ink. Code in IBM Plex Mono, prose in IBM Plex Sans. Cool, restful syntax.

bg #e8edf3surface #f6f8fbborder #d5dde7ink #29323dink2 #54606dfaint #5f6b78selection #d3deeccursor #29323dlineHighlight #eef2f7kw #7159a0str #41745afn #2d6a8fnum #9c5365type #995a2bbuiltin #297284punct #5f6a7aerror #824035warning #785b31ok #307458
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

03 · Sage

neutralCustomize

A green-gray neutral with a colorblind-safe blue/orange split. Code in Fira Code, prose in Atkinson Hyperlegible — a typeface designed for low vision.

bg #edf1e9surface #f6f9f2border #d9dfd0ink #2c322aink2 #565d51faint #656e5cselection #dde6cfcursor #2c322alineHighlight #f0f4eakw #a2582bstr #3f6d93fn #2d7766num #85662dtype #6b5aa0builtin #a15466punct #686d60error #854137warning #775e31ok #317477
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

04 · Solarized Lite

warmCustomize

The beloved Solarized cream, contrast bumped for readability. Code in Source Code Pro, prose in Newsreader. Full accent wheel, kept earthy.

bg #f6efd8surface #fbf6e6border #e6dcc0ink #33362cink2 #5c5f52faint #706b54selection #e9dfbfcursor #33362clineHighlight #f1e9cdkw #b7420fstr #5f7300fn #1f6fa8num #b02a68type #5257a8builtin #1a776fpunct #6a6d5cerror #874022warning #805b20ok #237754
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

05 · Blossom

pastel-warmCustomize

A soft rose page with magenta and violet accents — pastel but confident. Code in DM Mono, prose in DM Sans.

bg #fbeef2surface #fef7f9border #f0d8e0ink #3a2f36ink2 #6b5a63faint #896173selection #f4dce6cursor #3a2f36lineHighlight #fbeaf0kw #c0397astr #7a5aa8fn #2a4e76num #b24e32type #a03e86builtin #297774punct #786871error #864331warning #7e5d2dok #2b7673
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

06 · Lagoon

coolCustomize

Pale aqua that reads like frosted glass, with cyan and coral punctuation. Code in Space Mono, prose in Work Sans.

bg #e5f1f2surface #f4fafbborder #cfe2e4ink #24333aink2 #4f6169faint #566f75selection #d0e6e8cursor #24333alineHighlight #ecf5f6kw #0e748fstr #37774efn #29629bnum #b34843type #7a5aa8builtin #9a5c29punct #5c6d76error #8e3a2dwarning #7e5b28ok #267755
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

07 · Meadow

freshCustomize

A crisp mint page with a green-and-blue split for keywords vs. strings. Code in Spline Sans Mono, prose in Spline Sans.

bg #ecf3e4surface #f6faf0border #d7e4c8ink #2c342aink2 #556150faint #627055selection #dcecc9cursor #2c342alineHighlight #f0f6e9kw #417929str #3c6f9ffn #297962num #966025type #8a5aa0builtin #b0503fpunct #646f5derror #8a3f32warning #7d5d2eok #2c7858
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

08 · Apricot

warmCustomize

A sunny peach page with a strong burnt-orange keyword. Code in Red Hat Mono, prose in Hanken Grotesk.

bg #fdeedesurface #fff8f0border #f2ddc6ink #3a3128ink2 #6b5c4cfaint #836647selection #f7ddc4cursor #3a3128lineHighlight #fceadbkw #ac521dstr #67712cfn #365f8fnum #b03e6atype #7a5aa8builtin #29776fpunct #796958error #8c3d31warning #7d5d2cok #2a7858
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

09 · Periwinkle

pastel-coolCustomize

A pale lilac page with indigo and purple leads — dreamy but readable. Code in Roboto Mono, prose in Public Sans.

bg #eeeefbsurface #f8f8feborder #dcdcf0ink #2e2f3dink2 #585a6dfaint #656892selection #dedef3cursor #2e2f3dlineHighlight #eaeaf8kw #5a4fc0str #3c6f97fn #7a3fb0num #b34467type #287673builtin #9a5c29punct #686a7eerror #8b3d30warning #7d5c2cok #297572
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

10 · Ink & Coral

high-contrastCustomize

The punchiest of the set — near-neutral paper with deep navy and a bold coral function color. Code in Overpass Mono, prose in Lora.

bg #eef0f0surface #f8fafaborder #d8dedeink #222831ink2 #4c545dfaint #636d74selection #dbe3e3cursor #222831lineHighlight #e9ededkw #16467astr #2d7857fn #b0402fnum #a3581etype #6b3fa0builtin #0e7683punct #5c666eerror #963425warning #815b20ok #237855
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

11 · Graphite Mono

monochrome+1Customize

Almost monochrome — everything lives in grays, and a single blue does all the semantic lifting. Fewer competing hues means fewer color-fringe artifacts for astigmatic eyes. Code in IBM Plex Mono, prose in IBM Plex Sans.

bg #eef0f1surface #f8f9faborder #dcdfe1ink #23272bink2 #4b5157faint #666c72selection #dde1e4cursor #23272blineHighlight #e9eceekw #2f4a63str #3a6ea5fn #3a4650num #55606atype #2f3a44builtin #3a6ea5punct #666c73error #864137warning #73602fok #357376
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

12 · Tungsten

warm / low-blueCustomize

An evening theme — short-wavelength blue is stripped out and every accent shifted warm, so the only cool note is a soft green. Warm like a tungsten bulb. Code in JetBrains Mono, prose in Source Serif 4.

bg #f4ecd9surface #faf3e1border #e6d9bdink #34302aink2 #5f5749faint #746851selection #ecdfbfcursor #34302alineHighlight #f0e8d1kw #a5531estr #656f2bfn #84651enum #a0532ftype #8a5a3cbuiltin #4b734epunct #6e6552error #7c452bwarning #7b5a2aok #297555
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

13 · E-Ink Slate

neutral / ultra-low chromaCustomize

Ultra-low chroma, like a Kindle. Syntax is nearly grayscale with just enough tint to tell tokens apart — no glow, no vibration, closest to reading on paper. Code in Fira Code, prose in Atkinson Hyperlegible.

bg #eceeecsurface #f6f7f5border #d9dbd8ink #26292aink2 #4e5253faint #676b6cselection #dcdedbcursor #26292alineHighlight #e8eae8kw #3d4d4astr #4a5a4afn #3d4a5anum #5a4d45type #4d445abuiltin #455a55punct #676b6cerror #644f4cwarning #6a5f50ok #576e65
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

14 · Contrast Max

acuity-first / high-contrastCustomize

When sharpness is the limiter, not glare. Near-white paper, near-black ink, and deep, fully-saturated-but-dark accents so every token clears AAA with room to spare. Code in Overpass Mono, prose in Lora.

bg #f3f4f5surface #fcfcfdborder #d5d8dbink #191c20ink2 #3f454bfaint #686f75selection #dde1e4cursor #191c20lineHighlight #eaeceekw #7a1f6bstr #1f6b3afn #0c2650num #8a3a12type #5a2f8abuiltin #0f5f6bpunct #565d64error #9a3627warning #855d21ok #247b57
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

15 · Nocturne

dark / coolCustomize

Candela's first dark theme — a deep blue-gray night derived from Atom's classic One Dark, the palette a generation of developers grew up on. Accents lifted just enough to clear AA on the dark ground. Code in JetBrains Mono, prose in Public Sans.

bg #282c34surface #2d3139border #737c8cink #b9c0cbink2 #737c8cfaint #8c94a1selection #3d4351cursor #ffcc00lineHighlight #373c44kw #ff946bstr #26ab60fn #5c91ffnum #fd5975type #a180febuiltin #57a9dbpunct #b9c0cberror #ff6682warning #f9c858ok #3fc5b3
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)

16 · Borealis

dark / pastelCustomize

Near-black charcoal lit by soft candy accents — teal, lilac, and coral glowing against the dark like the northern lights the set is named for. Code in DM Mono, prose in DM Sans.

bg #212121surface #2b2c2cborder #3d4042ink #bfd3deink2 #7e8990faint #80898eselection #3a5d73cursor #fa6300lineHighlight #313435kw #ffcb61str #c3e98bfn #85dcffnum #ff526ftype #c78eecbuiltin #7dc9c2punct #bfd3deerror #ff5f52warning #f2a63cok #c3e98b
zsh — candela
~/projects/candela on main
git status
On branch main, up to date.
Changes not staged for commit:
modified: src/theme.rb
bundle exec rspec
........ (42 examples, 0 failures)
billing.ts — 1 error, 1 warning
// billing.ts
type Invoice = { id: string; cents: number }
function totalDue(invoices: Invoice[]): number {
return invoices
.filter((i) => i.cents > 0)
.reduce((sum, i) => sum + i.cetns, 0) // no 'cetns'
}
const unused = totalDue([]) // warning: never read
README.md — preview

Candela Light

A low-glare light theme for tired, prescription-wearing eyes.

Body contrast tuned to ~9:1 — comfortably AAA.

brew install candela

git — billing.ts
git status --short
M src/billing.ts
?? src/invoice.ts
git diff
@@ -4,4 +4,4 @@ totalDue()
- .reduce((sum, i) => sum + i.cents, 0)
+ .reduce((s, i) => s + i.cents, 0)
.toFixed(2)