Skip to content
design
Foundations

Color

A neutral surface, one accent, and a reserved set of colors that each carry one meaning.

On this page
ALARMAnchor drag · 38 m outside swing circle · since 21:02ACK
DepthSOUNDER
8.4m
▲ +0.3 m / 10 min
True windMAST
14G22kn
TWD 214°
SOGGPS
0.4kn
COG 087°
Color is spent on meaning: the accent marks what is active now, red marks the alarm, and everything else is neutral.
01Neutral by defaultSurfaces, text and chrome are neutral charcoal or grey, and amber on black in Night. Chrome stays quiet so data and alerts stand out.
02One accentThe accent means now, active or primary: the current page, the GPS marker, a trend. It is never decoration.
03Reserved meaningsRed marks the alarm, orange the warning and yellow the caution. A stale or invalid reading takes the integrity roles. A data series never wears them.

Color anatomy

There are three groups of color, each with its own job.

Neutrals

Surfaces, hairlines and text. Switch themes to see the same roles in each palette.

--bgPage surface
--surfaceRecessed
--surface-elevatedRaised, active
--borderHairline
--border-brightStrong hairline
--textPrimary text
--text-dimSecondary text
--text-faintLabels, sources

Accent

--accentNow, active, primary
--accent-dimAccent tint

Instruments

The OpenBridge instruments draw a value at one of two priorities. A regular value is neutral grey. An enhanced value, the one that matters now, is the accent: in Day and Bright it is the accent's darker step, because an instrument writes values in it and the accent reads under 4.5:1 as text on a light dial. Selection and focus in the instruments' controls are the accent, as in every other control. Night's accent is amber and red marks only the alarm, so Night draws both instrument priorities in amber: an enhanced value is a brighter amber than a regular one, at least 1.3 times its luminance, so the two priorities differ in brightness and not in hue. Focus rings and the icon of a selected control take the same brighter amber. Every color a Night instrument draws its values, marks and controls in is amber or grey, which keeps the crew's dark adaptation; the one exception is the starboard green of the rate of turn and the thrust arrows, the sidelight convention they are read by. Night's tank media are amber and grey too: a medium whose ISO 14726 color is green, cyan or blue takes a shade of its own, and the tank's label names it. The one blue on an instrument is the water under the keel on the depth instrument, outside Night.

--element-neutral-colorRegular value
--element-neutral-enhanced-colorEnhanced value
--instrument-frame-primary-colorInstrument face
--selected-enabled-background-colorSelected control

Severity and integrity

These come from OpenBridge's alert roles, and they mean the same thing on every surface.

--alert-alarm-colorAlarm
--alert-warning-colorWarning
--alert-caution-colorCaution
--alert-low-integrity-border-colorStale or low-integrity reading
--alert-invalid-border-colorInvalid reading
--alert-invalid-background-colorInvalid reading, background

Roles in every theme

TokenNightDuskDayBright
--text
Primary text
#EAA75E10.2:1
#E7E9EC16.1:1
#17181C16.0:1
#0B0C0F19.6:1
--text-dim
Secondary text
#8F61303.9:1
#8B8F986.0:1
#5B60685.7:1
#4B50588.1:1
--accent
Accent
#FFC87813.8:1
#14B8A67.9:1
#0D94883.4:1
#0D94883.7:1
--alert-alarm-color
Alarm
#E90F204.6:1
#E1000E3.9:1
#E300194.4:1
#EB00144.6:1
--alert-warning-color
Warning
#BA5A004.6:1
#FA7D007.4:1
#FE94132.0:1
#FE94132.2:1
--alert-caution-color
Caution
#8973004.5:1
#FFCC1612.9:1
#FFDB421.2:1
#FFDB421.4:1

Using color

Do
GPS 3DRisk low ▼
Use the accent for what is active now: the current page and the live marker.
Don't

Start anchor watch

Don't use red for an action. Red is only for alarms; a red button reads as an alarm.
Do
MIN 5 M
Draw data series in neutral or data colors. Severity appears only in thresholds and status text.
Don't
Don't color the series itself by severity. A red line looks like an alarm even when nothing is wrong.

Editorial and diagram color

Operational alert roles retain their meaning when a report includes an alert example. Ordinary report categories, series and process stages use the categorical data palette with written labels. A blue technical-report panel describes a subject; it does not establish a publication state or data quality.

--data-categorical-operational-01Series 1
--data-categorical-operational-02Series 2
--data-categorical-operational-03Series 3
--data-categorical-operational-04Series 4
--data-categorical-operational-05Series 5
--data-categorical-operational-06Series 6
--data-categorical-operational-07Series 7
--data-categorical-operational-08Series 8
--data-categorical-operational-09Series 9

The analytical charts take their own series palette, --data-categorical-analytical-01 to -09, from charts.css.

Mermaid uses the --bk-diagram-* roles for canvas, neutral nodes, grouped systems, services and connections. A dataflow connection also needs a name or pattern so it remains understandable in Night and in print. Local PresentationScope themes resolve these roles independently. Explicit colors in authored Mermaid source can override the shared theme, and need their own review.

Evaluate the actual pair of foreground and background, including transparent tints and nested panels. Palette membership alone does not make a fill suitable for small text. See Design tokens for the diagram matrix and the distinction between appearance and evidence.

Contrast

Text and values must reach at least 4.5:1 against the surface they sit on, in every theme. The matrix above computes each ratio from the token values, so a change that breaks contrast shows up here. Night is the one exception: its dim and faint text is held at 3.9:1 on black to keep the crew's dark adaptation, and it carries labels, never values.

Color as text

The OpenBridge alert colors are fills: in Day and Bright the warning and caution colors, and in Dusk and Day the alarm, fall under 4.5:1 as text. A word or a number in an alert's color takes its text step instead, and so does text in the red, amber, orange or yellow of a status. Shapes, borders, fills and icons keep the colors themselves. Each step reads at 4.5:1 on every surface in every theme, which the kit's contrast test holds.

TokenNightDuskDayBright
--bk-alert-alarm-text
Alarm, as text
#FF6B5A7.5:1
#F871717.1:1
#B91C1C5.8:1
#991B1B8.3:1
--bk-alert-warning-text
Warning, as text
#D4700F6.1:1
#F973167.0:1
#B4410C5.1:1
#9A34127.3:1
--bk-alert-caution-text
Caution, as text
#A68B006.3:1
#FACC1512.8:1
#665C006.1:1
#615A007.1:1
--red-text
Red status, as text
#FF6B5A7.5:1
#F871717.1:1
#B91C1C5.8:1
#991B1B8.3:1
--amber-text
Amber status, as text
#EAA75E10.2:1
#F59E0B9.1:1
#92400E6.4:1
#92400E7.1:1
--orange-text
Orange status, as text
#D4700F6.1:1
#F973167.0:1
#B4410C5.1:1
#9A34127.3:1
--yellow-text
Yellow status, as text
#A68B006.3:1
#FACC1512.8:1
#665C006.1:1
#615A007.1:1
  • Themes — the four palettes these tokens take their values from.
  • Tokens — the names, the values and how they are read.
  • Alarms and severity — the reserved colors, and what each one means.
  • Accessibility — the contrast floor every text role is held to.