Skip to content

Color ​

Phosphor green on a near-black green field, with amber for anything that needs a person. Borders are a dimmer green so the grid stays visible without shouting.

Background#061108
Surface#0a1810
Ink#c8f7c2
Phosphor#62f56a
Muted#8fbf8a
Amber#ffb000
Hot#ff7a18
Danger#ff6b6b

Meaning ​

ColorUseDo not use it for
Phosphor #62f56aNominal status, primary actions, links, healthy metersA warning
Amber #ffb000Attention, review, high CPU, dismissDecoration
Hot #ff7a18Latency above 50ms on the mapBody text blocks
Danger #ff6b6bPaging and destructive confirmationThe brand accent
Muted #8fbf8aLabels, timestamps, footnotesThe only copy of an error

Status lamps are round. Everything else is square. A lamp never replaces its label: RUNNING, RUNNING *, RESOLVED, Review.

Contrast ​

Pairs below are ink on the green-black field, checked against WCAG 2.2 AA (4.5:1) from the token hex values. tests/bastion.cjs recomputes them.

PairRole
Ink #c8f7c2 on background and surfaceBody copy
Phosphor #62f56a on background and surfaceStatus and links
Muted #8fbf8a on background and surfaceSecondary labels
Amber #ffb000, hot #ff7a18, danger #ff6b6b on backgroundAttention text
Background #061108 on phosphorText on a solid green button
#1a1200 on amberText on a solid amber button

Focus is a 2px amber outline with a 2px offset, which clears 3:1 against the field.

Bootstrap theme ​

Inside .bst-root, Bastion remaps Bootstrap 6 semantic tokens (--bs-success-*, --bs-warning-*, --bs-danger-*, --bs-primary-*) onto this palette and sets color-scheme: dark via data-bs-theme="dark". light-dark() then resolves to the dark branch. Those variables do not leak to the docs shell. See Usage.