Skip to content

Theme tokens and presets ​

This is the reference behind Appearance: the colours Fledge calculates, the checks it runs and the built-in presets. The same file is used by the panel (live preview) and by the API (validation), so these tables are what the code does.

Colour tokens ​

Each token is a CSS custom property named --<token>. The first two columns are Fledge's own palettes; other palettes are calculated from an accent colour and a tint.

TokenUsed forFledge darkFledge light
--bgPage background#0b0b0a#f7f6f2
--surfaceCards and panels#121211#fefdfb
--surface-2Inputs, raised areas#191917#f0efeb
--surface-3Hover and pressed states#22221f#e7e5df
--raisedMenus, dialogs, toasts#161614#ffffff
--borderDividers and card borders#23231f#e3e2db
--border-strongInput and button borders#31302b#d1cfc8
--border-hoverBorders on hover#3d3c36#bcbbb4
--textBody text#ece9e2#171611
--text-2Secondary text#a4a199#4f4d47
--text-3Hints, placeholders, disabled text#6f6d66#676762
--primaryMain button#ebe5d6#201f1b
--primary-hoverMain button on hover#f6f1e5#34332e
--primary-textText on the main button#141310#fbfaf7
--accentLinks, focus rings, switches, highlights#8fb596#36724b
--on-accentThe knob of a switch that is on#ffffff#ffffff
--okSuccess#78c08a#17703f
--warnWarning#f0a832#80570a
--badError and delete#f26a5c#c1272d
--busyBusy and information#86a4f0#2a56d6
--on-badText on a solid delete button#1d0b08#ffffff
--seg-altSecond colour in stacked bars#6d8f74#598a69
--terminal-bgConsole and file editor background#080807#100f0e
--terminal-textConsole text#d4d1c9#d3d1c9
--shadow-inkColour of shadows#000000#4f4d47
--washHover overlays (white on dark, black on light)#ffffff#000000
--glossHighlight on buttons#ffffff#ffffff
--scrimDimmed backdrop behind dialogs#050504#0e0d0b

Soft and line variants (--accent-soft, --ok-soft, --warn-soft, --bad-soft, --busy-soft, --accent-line) are always mixed from their base colour in the stylesheet, so changing a base colour changes them too.

Readability checks ​

Every palette is checked before it can be saved. Cannot be saved means the pair fails the minimum; Warning only reports it. High contrast raises the minimums.

PairMinimumMinimum (high contrast)If it fails
Text on the page background4.5:17:1Cannot be saved
Text on cards4.5:17:1Cannot be saved
Text on raised areas4.5:17:1Cannot be saved
Text in menus and dialogs4.5:17:1Cannot be saved
Secondary text on cards4.5:17:1Warning
Secondary text on the page background4.5:17:1Warning
Hints and placeholders on cards3:14.5:1Warning
Links and focus rings on cards3:17:1Cannot be saved
Links and focus rings on the page3:17:1Cannot be saved
Accent text under 4.5:1 is hard to read at small sizes4.5:14.5:1Warning
Text on the main button4.5:17:1Cannot be saved
Text on a delete button4.5:17:1Cannot be saved
Success colour on cards3:14.5:1Cannot be saved
Warning colour on cards3:14.5:1Cannot be saved
Error colour on cards3:14.5:1Cannot be saved
Busy colour on cards3:14.5:1Cannot be saved
Console text7:17:1Cannot be saved
The four status coloursLook different with red-green colour blindnessWarning

Calculated palettes also keep hints and placeholders at 4.5:1 on every surface. The built-in Fledge dark palette is the exception: it keeps its original 3.6:1 for hints so that an untouched panel looks exactly as before, which is why the Fledge preset can show that row as a warning in the editor; every other preset, and High contrast, passes.

A chosen accent that is too dim is moved (lighter on dark, darker on light) until the first rows pass, and the editor says so. Only colours you pin yourself, or exotic combinations, can fail.

Presets ​

Every preset has a dark and a light palette. Choosing one also sets the font, corner radius and density shown.

PresetDescriptionDark (page, accent)Light (page, accent)FontCornersDensity
FledgeWarm black with sage accents. The default.#0b0b0a, #8fb596#f7f6f2, #36724bGeist10 pxcomfortable
MidnightBlue-black with a sky accent.#0a0b0d, #7cb7ff#f3f6fb, #1d62c9Geist10 pxcomfortable
EmberWarm dark with an orange glow.#0c0b0a, #f0955a#f9f5f1, #ab4900Geist8 pxcomfortable
TerminalBlack, phosphor green, monospace, square corners.#0a0b0a, #58e07b#f4f6f4, #117638Monospace0 pxcompact
PaperWarm white with a deep green accent.#0b0b0a, #8fb596#f7f6f1, #2f6b46Geist10 pxcomfortable
SnowCool, bright and quiet.#0a0b0c, #7aa7ff#f4f6f8, #2457d6Geist10 pxcomfortable
VioletDeep purple with a soft lilac accent.#0b0b0c, #b69cff#f6f5f9, #6a3fd1Geist10 pxcomfortable
High contrastMaximum separation (AAA text) for low vision.#0b0b0b, #ffd84d#f6f6f6, #003eb8Geist10 pxcomfortable

Fonts, sizes and shape ​

SettingChoices
FontGeist (the fledge default); Inter (neutral and familiar); Atkinson Hyperlegible (designed for low vision); System font (whatever the device uses); Monospace (terminal look). Fonts are bundled with the panel; nothing is loaded from other sites.
Text size90%, 100%, 110%, 120% (--text-scale)
Corner radiussquare, 4 px, 8 px, 10 px, 14 px, 18 px (--radius-scale, 10 px is 1)
Densitycompact (0.88), comfortable (1), spacious (1.12) (--density, scales control and row heights)

Released under the AGPL-3.0-only license.