CalCOFI CalCOFI Brand v2 specimen release v2026.08.25
calcofi.io/brand/v2 Β· proposed 2026-08-30 Β· light by default, dark one click away

From ship to screen

The SIO look as connective tissue: UC San Diego's palette β€” navy type on white, UCSD blue links, one yellow accent, Sand and navy bands β€” with Source Sans 3 and Teko standing in for Brix Sans and Refrigerator Deluxe, a horizontal lockup in the header, and the same tokens at two scales. This page is every token, both themes, both scales. Click the toggle at the right.

ship β†’ workflows β†’ database β†’ apps Β· services Β· R

Explore the data Read the contract

fonts: checking…

Type

Source Sans 3 (variable 200–900, roman + italic) for body and UI; Teko (variable 300–700) for page display headings only. Both OFL, self-hosted in fonts/ (72 KB, latin). The tokens name roles (--sans, --display), so licensing Brix Sans later is a one-file swap.

page scale Β· 18 px / 1.44

H1 Teko 72

H2 Teko 41 uppercase

H3 Source Sans 3 700 uppercase

Body Source Sans 3 400 at 18 px on 1.44 β€” since 1949, CalCOFI cruises have sampled the California Current, one of the longest-running ocean observing programs anywhere. View all

Caption 14 px Β· italic 400 Β· bold 700 Β· semibold 600 Β· light 300 Β· 0123456789 Β· mono --fs-sm

app scale Β· 13 px / 1.35 (below, live in the iframe)

Body 13 px β€” the explorer's working surface: one organism or one ocean variable at a time over the frozen release, the queries run in your browser, every view is a URL.

Group title 11.5 px 600 uppercase

Hint 11.5 px muted on the panel gray Β· 1,234 observations Β· release v2026.08.25

The same at 11 px in system-ui, for the eye: Source Sans 3's x-height is smaller, which is why --fs-sm is 11.5 px in the app scale.

…and 11 px in Source Sans 3 β€” hint 11 px muted on the panel gray Β· 1,234 observations Β· release v2026.08.25

Tokens & contrast

Read from theme.css by this page (not copied), so the table cannot drift from the file. WCAG 2 contrast for every text token on every ground it is used on; AA for normal text is 4.5:1. Two values are derived from the brand rather than verbatim β€” --muted (Cool Gray darkened: the brand's #747678 is 4.2:1 on the panel gray) and light --warn (Gold darkened: #C69214 is 2.8:1 on white) β€” plus --cc-green/--cc-red for an app's go / no-go states.

tokenlight (default)darknote
valueon --bgon --panelon --bandvalueon --bgon --panelon --band

the UCSD palette by name --cc-navy --cc-blue --cc-yellow --cc-gold --cc-cyan --cc-sand --cc-gray --cc-stone

Header, lockup, buttons

The bar at the top of this page is the page-scale header (72 px, lockup 36 px, uppercase 15 px nav). The app-scale one (44 px, lockup 28 px, 13 px) is in the iframe under App. One bar, no utility strip, no search: the lockup β†’ calcofi.io, the product title β†’ its own root, the release chip, the product's links, the toggle.

The lockup

logo_calcofi_h.svg Β· 36 px
logo_calcofi_h_light.svg Β· 36 px
28 px (apps)
the mark, as v1 (favicon, cards, < 480 px)

Drawn by scripts/build_lockup.py: the v1 rosette + "CalCOFI" in Source Sans 3 800, shaped and outlined, so the SVG needs no font. The long programme name was tried beneath the wordmark and is illegible at 36 px; it stays in prose.

Buttons & links

One yellow per view β€” it is the accent, not a colour. 8 px corners, 42 px tall, 200 px wide on pages; 28 px tall in apps.

Chips, the release, icon buttons

release v2026.08.25 DuckDB-WASMTypeScriptMapLibre icons.css: β€” the sheet
3 products

Cards on the Sand band

Rounded, borderless, no shadow; the image on top; an uppercase eyebrow; the title in the accent; the "open Β· source" row as text-links. --panel-2 on a band, --panel on the page ground.

Apps

CalCOFI Explorer

One app, five lenses β€” stations, hexagons, cruises, regions and sections β€” for one organism or one ocean variable at a time over the frozen release.

DuckDB-WASM MapLibre Plotly

Open β†— Source β†— status Β· usage

the navy band

White on navy, both themes

The band re-tokens its subtree: --fg, --muted, --accent and the panels resolve to values that read on navy, so a card, a chip or a text-link inside needs no second rule set. A text-link

Services

ERDDAP

Standards-based access to every released table, with the release stamped on each dataset.

ERDDAP DuckDB

Developer

calcofi4r

The R package: cc_get_db() against the frozen release, matching helpers, the brand.

the page ground

Cards on white

Apps

Hexagon Explorer

--panel on --bg: the gray panel on white, navy on the dark ground.

The app scale

The same tokens with <meta name="cc-scale" content="app">: 13 px body, 11.5 px labels, 4 px gutters, a 44 px header with the lockup at 28 px, 4 / 6 px corners. This is the explorer's rail, legend and a floating card in copied markup β€” the test of whether the type works at density. The whitespace of the page scale does not transfer, and is not supposed to.

Opens on its own: ?scale=app.

Select

Organism

density per 10 mΒ² Β· standard haul factor

Filters 1990–2005 Β· Q1 Q2

years 1990–2005 Γ—season Q1 Q2 Γ—depth 0–210 m Γ—datasets 3 Γ—

Export

Share Copy code CSV

1,234 stations Β· 45,678 samples Β· release v2026.08.25 Β· DuckDB-WASM in your browser

Pacific sardine larvae Β· mean density per 10 mΒ²
0.1121,500
5–95 % of the station means Β· 1951–2024
ready Β· 45,678 observations
090.0 060.0

line 90 Β· station 60 Β· 33.2Β°N 119.3Β°W Β· seafloor 1,850 m

mean 36.4 per 10 mΒ² Β· 412 tows Β· 1951–2024

● query 41 ms Β· ● 1 dataset without effort