Using Beanpole (#4E8747) in Interface Design: Scale, Buttons and Dark Mode
A working design system from Beanpole #4E8747: a 50 to 950 scale, button states with contrast, a dark-mode version, an accessible link color and the CSS to paste in.
Beanpole (#4E8747) is a medium, moderately saturated green. As an interface color it has a clear personality: it is light enough that dark labels read better than white ones, which makes it better as a surface, a highlight or a data color than as a button. This guide shows how to build a working interface from it: a full scale, every button state, a dark-mode version, a link color that passes, and the CSS to paste in.
A scale built from Beanpole
A single color is not enough for an interface. You need lighter steps for surfaces and borders and darker steps for text and hover states. This 50 to 950 scale keeps the hue and saturation of Beanpole and moves only the lightness. The step closest to Beanpole keeps its exact value.
| Step | Hex | Contrast on white | Best text on it |
|---|---|---|---|
| 50 | #F2F9F1 | 1.07:1 | #111111 |
| 100 | #E1F0DF | 1.18:1 | #111111 |
| 200 | #C9E4C5 | 1.36:1 | #111111 |
| 300 | #A5CE9F | 1.76:1 | #111111 |
| 400 | #7DB276 | 2.47:1 | #111111 |
| 500 | #5D9756 | 3.48:1 | #111111 |
| 600 | #4E8747 | 4.30:1 | #000000 |
| 700 | #376531 | 6.84:1 | #FFFFFF |
| 800 | #274D23 | 9.66:1 | #FFFFFF |
| 900 | #1B3917 | 12.77:1 | #FFFFFF |
| 950 | #0B2009 | 17.14:1 | #FFFFFF |
Button states
Interactive elements need to look different when you hover, press and disable them, and each state still has to be readable. These values are made from Beanpole itself, so the button stays in family.
| State | Background | Label | Label contrast |
|---|---|---|---|
| Default | #4E8747 | #000000 | 4.88:1 |
| Hover | #497F43 | #FFFFFF | 4.77:1 |
| Pressed | #45783F | #FFFFFF | 5.23:1 |
| Disabled | #D3DCD2 | #6B7280 | 3.43:1 |
Disabled controls are exempt from WCAG contrast rules, but they still need to be recognizable, so the label is kept dark enough to read. For keyboard focus, use an outline of Beanpole (#4E8747), which reaches 3 to 1 against a white page, the minimum for interface parts.
Dark mode
On a near-black page (#0F1115), Beanpole reaches 4.39:1 (AA large). That is not enough for text, so lighten it. Beanpole (#518A4A) is the closest lightness of the same hue that reaches 4.5 to 1.
Links and text
Beanpole on white reaches only 4.30:1, which is not enough for text. For links and small headings use Beanpole (#488141), the closest shade that reaches 4.5 to 1, and keep Beanpole itself for fills and large display type.
Surfaces and borders
Tints of Beanpole make quiet surfaces that feel connected to the brand without competing with it. Snow (#F9FAF9) works as a card or page tint, and Salt (#E7EBE6) as a border or divider.
The CSS
:root {
--brand: #4E8747;
--brand-hover: #497F43;
--brand-active: #45783F;
--on-brand: #000000;
--brand-surface: #F9FAF9;
--brand-border: #E7EBE6;
--brand-text: #488141;
--focus-ring: #4E8747;
}
@media (prefers-color-scheme: dark) {
:root {
--brand: #518A4A;
--brand-text: #518A4A;
}
}A short checklist
- Use Beanpole for the one action you most want people to take.
- Put #000000 text on it and check that the ratio stays above 4.5 to 1.
- Use the scale for hover, pressed, border and surface colors rather than inventing new ones.
- Define a separate dark-mode value and test it on a dark page.
- Never use the color as the only signal: add an icon, a label or an underline.