Appearance
Pick an accent and Klippster derives everything from it: hover and pressed states, gradients, soft fills, focus rings, glow. Nothing is hard-coded per screen.
Because every state is derived rather than authored per screen, the palette, the history window, Settings and onboarding all move together. Changing the accent is one decision, not thirty.
#The built-in tints
| Tint | Base | End |
|---|---|---|
| Klippster (default) | #7B6CFF | #B65CFF |
| Blue | #4D8DFF | #38BDF8 |
| Teal | #2DD4BF | #4ADE9E |
| Green | #4ADE80 | #A3E635 |
| Amber | #FFA83D | #FFD24D |
| Rose | #FF5D8F | #FF7BC4 |
| Graphite | #9AA0A8 | #C3C9D1 |
Each tint is a pair, not a single colour — the gradient's two stops. Custom lets you pick any colour; Klippster builds the second stop from it and keeps the result readable.
#Surface style
How far the accent is allowed to spread, independent of which accent you chose.
| Style | Effect |
|---|---|
| Neutral | Only interactive controls use the accent. |
| Tinted (default) | Selected surfaces pick up a faint tint. |
| Vibrant | Stronger gradients and a soft glow. |
#Light and dark are both real
Only the dark pair is authored. Light is derived in HSB and then re-checked against the same contrast rules, so neither mode is the afterthought that got shipped because someone remembered it late.
Windows follow macOS by default. You can pin either mode in Settings → Appearance.
#Readability is measured, not hoped for
This is the part that makes a custom colour picker safe to ship. WCAG relative luminance is computed across both gradient stops, and the colour is clamped until it clears the bar:
| Combination | Minimum contrast |
|---|---|
| A label on an accent fill | 3.0 : 1 |
| A link on a surface | 4.5 : 1 |
All 48 built-in combinations pass — seven tints plus custom, across three surface styles and two appearance modes. Settings shows the measured ratio and tells you whether the colour was accepted as picked or clamped to reach the threshold.
The foreground follows the same rule rather than a preference: Klippster prefers white on a fill while white still clears 3:1, and flips to dark ink only where white genuinely fails — which in practice is Amber, Teal and Graphite.
A warning puts the reader in the position of deciding whether their own theme is legible, which they will answer optimistically on a bright display. Clamping makes the unreadable state unreachable instead.
#First run checks its own work
Onboarding is five steps, and each one probes macOS for the real answer rather than trusting what you clicked — then tells you plainly what you ended up with. A Finder extension that is switched on in System Settings but has not actually loaded is reported as not loaded.