01
A conversation, not a voyage
Nobody is coming and nobody is going; only messages cross. The pictures are dishes, spectrograms, clocks, logs and letters in transit, never ships or planets seen up close.
InterImm phase 2 · design language
137 is the last thing the beacon says: 1/α, the fine-structure constant, the one number any physicist in any world would recognise. It names the design language because it is what both sides already share. The look comes from the first thing they sent, 667 bits that fold into a 23 × 29 picture. Every site of the Contact Era is built from that picture: pixels on deep and signal blue, their voice in white-cyan, ours in Sol yellow, and nothing round.
Principles
When a choice is not covered below, decide it with these.
01
Nobody is coming and nobody is going; only messages cross. The pictures are dishes, spectrograms, clocks, logs and letters in transit, never ships or planets seen up close.
02
Their message is the only image we share with them, so it is the whole visual language: a 4 px grid, a pixel face for page titles and big numbers (never for text you read), square or stepped corners, hard shadows, and the picture itself behind every hero.
03
Times, distances, coordinates and counts are set in mono with tabular figures, with units, so they line up and read as measured.
04
White-cyan is what reaches us: their signal, the detection, the current item. Sol yellow is what we send: replies, letters, the send button. Everything else is blue and white. No paper, no red.
05
Motion steps instead of easing, like data coming in: a picture filling row by row, a blinking packet, a ticking clock. Everything stops for reduced motion.
06
No build step, no server, zero running cost. Sites link this kit instead of copying it, so a change here reaches every site.
The source
The picture has four parts. The kit draws each as an icon with data-glyph, so every site speaks with their alphabet.
One to nine in binary. Use for numbers, data, a catalogue.
Their star and its one planet, circled. Use for places, planets, the explorer.
A dish and its beam. Use for listening, sending, letters.
The hydrogen line, the unit both sides share. Use for clocks, frequencies, the ledger.
Not phase 1
Phase 1 is the public paperwork of settling Mars. Phase 2 is a conversation across light years. They share markup and class names so a site can move between them, and nothing else.
| Phase 1 · interimm.org/kit/ | Phase 2 · 137 | |
|---|---|---|
| Ground | Paper and ink, follows the visitor's light or dark setting | Deep blue for reading; signal blue, a pixel grid and their picture in heroes |
| Colour | One Mars rust, used sparingly | White and blue, with two voices: white-cyan for them, Sol yellow for us. No red |
| Type | Source Serif headings, IBM Plex text and data | Pixelify Sans headings, Instrument Sans text, JetBrains Mono data |
| Lines | Thin solid printed rules, soft corners | Dashed lines of bits, square and stepped corners, hard shadows |
| Controls | Square ink buttons | Notched pixel blocks: white-cyan to receive and explore, yellow to send |
| Signature | The signal line under the header: distance and delay to Mars | Their picture behind every hero, the four glyphs, the exchange and the waterfall |
| Brand mark | The InterImm wordmark | Our star and theirs as pixel squares, one bit between |
Conversation
Their messages arrive on the left in white-cyan, ours leave on the right in yellow, and the dashed spine between is the distance. Use it wherever the era shows messages, letters or replies.
A prime-numbered preamble, then 667 bits that fold into a picture: counting, their star with its one planet circled, a dish, hydrogen.
We heard you. Here is how we count, where we are, and the same line of hydrogen you used.
Waiting. Nothing we send can be answered sooner than twice the distance.
.transit · a message on its way
Kickers take a voice too: .kicker listens (white-cyan), .kicker-out sends (yellow). Logs mark what reached us with .is-key and what we sent with .is-out.
Anatomy
Every site shares the header and footer. The header shows the era first and the site second, so a visitor always knows they are in the same family.
The entrance, an archive, an essay. Centred, generous, bilingual.
A ledger, an explorer, a decoder. Full width, dense, the data is the hero.
A tool with one view (the pulsar ledger) may use a story hero with readouts instead of a side panel.
Colour
Use the token for the role, never a hex value. Pages read on deep blue (--bg). Heroes are .space: signal blue (--sky), the pixel grid and their picture.
--skyhero ground (.space)--bgpage ground--bg-altalternate sections--surfacecards, inputs--surface-2hover--textink, borders that matter--mutedsecondary text--borderhairlines--border-strongcontrols--them · --accent · --signalincoming: their signal, the detection, the current item, primary buttons--them-softselected rows, shadows of their messages--us · --beamoutgoing: our replies, letters, the send button--us-softour highlights--deepheader, footer, inputs, scopes--noisethe noise floor in a waterfallDo
Anything that came from them, or that we are looking at, is white-cyan. Anything we write or send is yellow. One subject per chart in their voice.
Don't
No radii, no blur, no soft shadows, no gradients that ease. No paper, rust or serif: those belong to phase 1. Chart series never use the two voices.
Type
Pixelify Sans announces (page titles and display numbers only, never below 2.4 rem), Instrument Sans tells (section titles, headings, text), JetBrains Mono measures. All SIL OFL, self-hosted with the kit (Latin). Chinese uses the system's CJK fonts at their heaviest weight so it holds its own beside the pixels.
--step-5通联 Contact
--step-4 · hero11.01 light years
--step-3 · pageThe clocks that heard it
--step-2 · sectionFold the beacon
--step-1 · ledeA question sent today reaches them in 2230.
--step-0 · bodyEvery pulsar ledger in the solar system logged the same faint pattern.
--step--1 · notePeriods from the ATNF Pulsar Catalogue, rounded.
--step--2 · labelLedger time · 2219
.readoutRA 11h47m44.4s · Dec +00°48′16″ ·
Space and shape
Spacing in eight steps on a 4 px grid, and no radii. Content sits in .wrap (76 rem); tools use .wrap-full. Layouts stack below 56 rem.
Components
All plain HTML with a class. Names are shared with the phase 1 kit where phase 1 has the same thing.
.panel with .card-link-wrap
Signal
Fold the raw data, find the prime spacing, see the picture.
Open →
Ledger
Pulsars, ledger nodes and the residuals where the beacon shows.
Open →
Explorer
Filter, plot and rank the catalogue.
Open →
.card-grid with .card and .tile
Plain card on the surface colour.
With a glyph icon.
Forms: .field, .field-pair, .field-checks, .inline-field
.split · two columns that stack; set --split for the ratio
<div class="wrap split" style="--split: minmax(0, 1.6fr) minmax(0, 1fr)">…</div>
Data
Draw on --scope inside a figure.scope, read colours from CSS so charts follow the theme, and keep one subject in focus.
--c1first series--c2second--c3third--c4fourth--plot-dimunknown, unmatched--signalthe subject onlySequential --seq-1 … 7
Diverging --div-cool-3 … --div-mid … --div-hot-3
--c1 to --c4 in order; more than four means group the rest as --plot-dim.--signal. Context is --plot-context or --plot-dim.--step--2, gridlines in --plot-grid. Units always on the axis..legend, a text alternative (aria-label or a table), and a note naming its source..tooltip; estimated values are marked (~) and never look measured.Instruments
Add the markup and interimm.js does the rest. Also on window.InterImm for pages that build them later.
.space · their picture, drawn by the kit
<section class="space"> · data-message="off" to leave it out
.readouts
.log
Timestamped entries down a line of bits.
Something reached us: .is-key.
Something we sent: .is-out.
.data-table
| Node | Delay (s) |
|---|---|
| Farside | 0.000 |
| Isidis | +60.193 |
Words
/en/, the same layout and the same sections. A tool in one language marks the header with data-lang-cn="".Use
Link, don't copy. Same hooks as the phase 1 kit: to move a site between eras, change the two links between interimm.org/kit/ and interstellar.interimm.org/kit/.
<link rel="stylesheet" href="https://interstellar.interimm.org/kit/interimm.css">
<script src="https://interstellar.interimm.org/kit/interimm.js" defer></script>
<header class="site-header" data-interimm-header
data-lang="en" data-current="signal">
<div class="wrap header-inner">…fallback brand…</div>
</header>
<main id="main">
<header class="hero space">…</header>
<section class="section">…</section>
</main>
<footer class="site-footer" data-interimm-footer></footer>
<header class="site-header" data-interimm-header
data-lang="en" data-current="explorer"
data-site="Exoplanet Explorer" data-site-url="./"
data-width="full" data-lang-cn="">…</header>
<main id="main" class="app-shell">
<aside class="app-side">filters</aside>
<section class="app-main">views</section>
<aside class="app-detail" hidden>details</aside>
</main>
<footer class="site-footer" data-interimm-footer></footer>
Full notes: kit/README.md. Menu and footer for every site live in nav.cn.json and nav.en.json.
Checklist
nav.cn.json and nav.en.json and sets data-current.