Color system

Field Guide's structure references the utilitarian visual identities of established agencies like the National Park Service (NPS), U.S. Geological Survey (USGS), and National Oceanic and Atmospheric Administration (NOAA). The intent of Field Guide styling is to visually standardize information from disparate sources and not introduce its own competing aesthetic.

Every source and status color is validated for colorblind-safe separation (protanopia and deuteranopia simulation, OKLab ΔE) and a minimum 3:1 contrast ratio, across both light and dark mode.

Neutrals

Warm-tinted rather than pure gray — a quiet nod to field-notebook paper, not a literal texture.

Ink --color-ink
Ink Hover --color-ink-hover
Ink Secondary --color-ink-secondary
Muted --color-muted
Faint --color-faint
Hairline --color-hairline
Surface --color-surface
Surface Sunken --color-surface-sunken
Brand

Field Guide's own mark aliases directly to Ink, not a separate hue — chrome (nav, buttons, focus states) deliberately spends no color budget of its own. That budget is reserved for the sections that carry real meaning: source identity and data-confidence status, below.

Brand --color-brand
Brand Hover --color-brand-hover
Data Provenance — Shape

Shape carries data provenance — never tied to a specific agency, and never combined with a reserved color. GBIF is treated as National tier here (it operates at national/international scope), same mechanism as any other national source. Fill color is assigned separately, from the flat sequential pool below.

National e.g. USGS, GBIF, NOAA
State / Province e.g. WA Dept. of Ecology
County / Local e.g. King County DNRP
System-derived Computed, not reported by any source
Source Palette

Color identifies data sources by agency, assigned in the order each source is encountered within a search; a color assignment must always be paired with a shape that indicates data provenance, and a screen-reader-accessible label. Color assignments hold for the length of each result set — if USGS is the first source found, it stays that color for the rest of that report — but may reset with each new search.

This 12-color palette has been validated across all 66 possible pairings, plus 36 pairings against the Status Palette below, for protanopia, deuteranopia, and normal color vision, in both light and dark mode. Those pairings with the least contrast are covered by the color+shape+label rule to ensure no designation ever depends exclusively on color.

1 — Blue --color-source-blue
2 — Orchid --color-source-orchid
3 — Cornflower --color-source-cornflower
4 — Purple --color-source-purple
5 — Teal --color-source-teal
6 — Pink --color-source-pink
7 — Berry --color-source-berry
8 — Green --color-source-green
9 — Lilac --color-source-lilac
10 — Cyan --color-source-cyan
11 — Indigo --color-source-indigo
12 — Coral --color-source-coral
Status Palette

These colors represent a gradient of status across the system — not fixed to one specific use, so they can extend to future gradient concepts (priority, severity, or others) without introducing new hues. They are reserved exclusively for status meaning and never reused anywhere else in the system, including source designations — with one exception: Absent intentionally reuses a neutral tone rather than being assigned a hue of its own. Every status indicator should be paired with a semantic marker (like the confidence scale) and a label.

Positive --color-signal-positive
Caution --color-signal-caution
Negative --color-signal-negative
Absent --color-signal-absent
Confidence Tag

Confidence tags communicate levels of certainty for derived information, shown visually with a scale of dots alongside an explicit label. These tags draw from the status palette, with each color's light- and dark-mode values tuned independently so meaning stays clear on either background. Within a single theme, color may also appear at different opacity across surfaces — background, stroke, text, iconography — to maintain hierarchy without introducing new hues.

A single source has nothing to corroborate against, so this state renders no tag at all rather than a misleading tier.

Data-Point Permutations

Data from different sources rarely matches 1:1 — formats, precision, and even conclusions can vary from one agency's record to another. Field Guide aggregates data points to the best of its ability and assigns a confidence rating to that derivation. Constituent source values are organized alongside the data point for side-by-side comparison and interpretation. When a field exists in the source schema but no source recorded a value, it's marked "Confidence: None" — a genuine absence, not simply the lowest tier. Single-source data points are shown verbatim, without corroboration, and require no confidence assessment. The seven examples below demonstrate how these data relationships get represented.

Low

Medium

High

Full

None

Single-source

System-derived

Confidence Score Methodology

Every source contributing to a data point is classified against the consolidated value: Agree, Align, Diverge, or Conflict. Each relationship carries a fixed weight:

Relationship Weight
Agree +2
Align +1
Diverge −1
Conflict −2

Weights are summed across all sources to produce a raw score, then normalized against the full possible range — not just the positive ceiling — so a data point with only weak corroboration doesn't get compressed toward a falsely low result:

Confidence % = (raw score + 2N) ÷ (4N) × 100, where N is the number of sources.

The result maps to one of four tiers:

Tier Range
Low 0–39%
Medium 40–64%
High 65–99%
Full 100% only

Full is reserved for genuine unanimity — any Align, Diverge, or Conflict source caps the achievable score below 100%, so reaching it requires every source to Agree outright.

Two cases sit outside this formula entirely, by design: data points backed by a single source carry no tag at all, since there's nothing to corroborate against; and fields present in a source's schema but recorded nowhere are marked Confidence: None — an absence, not a low result.

Accessibility Notes

Every categorical and status hue above was checked against protanopia and deuteranopia simulation (Machado–Oliveira–Fernandes 2009) and a normal-vision separation floor, in OKLab ΔE, in both light and dark mode — not eyeballed.

Two pairs fail full colorblind hue-separation by design, and no amount of hue-nudging fixes it: agreement (green) vs. conflict (rust) sits on the classic red–green confusion axis, and low-confidence (amber) vs. conflict (rust) sits on the equally well-documented warm-hue confusion axis. Both are industry-standard, unavoidable CVD collisions — which is exactly why every status indicator in this system ships as color + icon glyph + text label, never color alone. The same rule applies to source tags: color + shape + name, always together.