cosmofi
01 / Color choices

A quieter
color range.

Cyan and blue are deliberately absent. Softened violet, rose, green, and earth tones leave a clear gap in the hue circle, keeping the palette restrained during long reading sessions.

Less competition
Fewer hue families compete for attention. Color separates meaningful details instead of filling every part of the view.
Accents and neutrals
Six chromatic accents carry structure. Static and Moonveil provide the quiet neutral range around them.
Color range Hue / OKLCH
Cyan / Blue omitted
02 / Surfaces

Pure grayscale
surfaces.

Equal red, green, and blue values keep the interface neutral. Depth comes from brightness and spacing, while the surrounding field leaves the color of your content alone.

No color cast
Neither warm nor cool. Every accent sits on the same unbiased field, without a tinted surface shifting its appearance.
Depth through brightness
Small changes in lightness distinguish the background, working surface, and raised planes. The RGB channels remain equal at every level.
Surface composition R = G = B
Background #161616
R
22
G
22
B
22

Equal channels.
No color cast.

03 / In use

Structure
at a glance.

Punctuation stays muted and variables use the normal foreground. Color marks the role of a word, keeping the same visual hierarchy across four languages.

Punctuation
Muted
Variables
Foreground
Keywords
Afterglow
Functions
Halo
Strings
Unripe
Constants
Life
Types / numbers
Regolith
reading.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type Reading = { label: string value: number } const LIMIT = 100 /* Preserve the label while keeping the measurement within range. */ export function measure(input: Reading): Reading { const value = Math.min(input.value, LIMIT) return { label: 'normalized', value } } const result = measure({ label: 'source', value: 72 })