# Emergence design

An editorial instrument for reading coverage without mistaking it for certainty.
The page follows arrive → orient → drill → inspect → compare → trust. Its UTC day
is the snapshot's date; it never calls a stale snapshot "right now".

## Visual system

- Dark: black `#000`, panels `#0d1010`, text `#f2f2e9`, secondary text `#bdccc7`,
  accent `#b8d3c4`. Light: paper `#f2efe6`, panels `#faf8f1`, text `#23332f`, secondary
  text `#4e615c`, accent `#315f52`. The world map retains its night palette in both modes.
- Georgia headlines, system sans for reading, system monospace for annotations.
  Informational text starts at 15px, report prose at 16px. There are no font requests.
- A 1200px frame, fluid 16–52px gutters, single-column mobile reading, paired record
  cards from 600px, portrait and topic index side by side from 1000px.
- Rules, quiet surfaces and spacious typography provide hierarchy. Tile colors are
  decorative, never verification, confidence, urgency or importance signals.

## One new lens: Before you conclude

“Before you conclude” reads each record's existing uncertainty before its essence,
grouped by the existing `event_type`. It invites a reader to distinguish a reported
decision from an enacted policy, or an allegation from an established finding,
without inventing confidence scores or new labels. Two records appear in snapshot
order, with the event-type selector stating the available total. Source links,
AI-interpreted principles, actors and places remain attached to each record.

## Interaction and fallback

The portrait is squarified at build time. Its accessible topic index keeps every
label available when a tile cannot fit 15px text. With JavaScript, `#t/topic/subtopic`
re-tiles the portrait and resolves **all** matching full records, rather than using
the rollup's three-record sample. It matches the pipeline's first-topic assignment
so leaf totals agree with the published counts; breadcrumbs and browser Back preserve the route.
Without JavaScript, topic links lead to native disclosure groups containing the
complete day, with every record listed once by its primary topic. Every appearance,
including country previews and lens cards, shows `unverified · AI-distilled` and its
original source URL. Country previews explicitly remain capped samples.

Compact tiles show their report count instead of leaving an empty shape. Hover or
keyboard focus reveals the full name and count in a preview contained within the
portrait; the preview can be hovered and dismissed with Escape. Touch users retain
the complete topic index and direct drill links. Native titles provide a no-JS hover
fallback. Labels are never shrunk below 15px.

Fixed copy is limited to headings, controls, coverage semantics and operational
status. Method details live in a single native disclosure; there is no slogan,
reader-journey narration or repeated instruction paragraph. Record text, uncertainty,
source attribution and the mandatory identity label remain intact.

The header introduces a global sensor net in one sentence: news reports gathered
into a daily dashboard, with coverage, claims and sources to explore. Lens navigation
stays available while scrolling, with the active hash route indicated. The footer
separates the AGPL code/curation license, model-output licenses and original newsroom
reporting.

The fact.ngo homepage renders a compact dashboard in its hero from the same snapshot:
UTC date, report/country totals, the inactive verified count and a linked topic portrait.
It never calls an older partition "today". The parent mission and planned funding
remain explicit, with xray still featured below. Without emergence data, the hero
falls back to its xray spotlight.

The map uses the existing vendored public-domain Natural Earth paths. Dot area is
proportional to country coverage count; positions remain country centroids, never
event locations. The country list provides the same navigation without map use.
Local text search includes essences, uncertainty, principles, actors and places.
An unavailable `data.json` leaves the static day intact. Theme uses the site's
`data-mode` / `fact-mode` storage pattern. The compare seam displays only the real
available day, and the verified lane explicitly says built, inactive, zero records.

## Build boundaries

`scripts/build.js` retains the existing snapshot loader and serialization unchanged.
The emergence renderer, shared area layout, stylesheet and enhancement are separate
zero-dependency files. The shared chrome opts into emergence-specific navigation and
omits the external donation overlay on emergence and the homepage; the ordinary
support link remains. The homepage stylesheet also corrects the archive preview's
image height. Existing xray HTML output stays unchanged.
