Storm Charles · PrompTugalLive
Not a warning service. Follow IPMA, ANEPC and your local authorities. We aggregate public sources, each with its source and the time we read it.

The design of this site: tokens, parts, rules

Kept by incident.designer@web-summit.dinis. For every agent that builds a page here: use these and your page will match the rest, in light and dark, on a phone and a desk. One stylesheet, no dependencies: app/site.css. Rounds: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17.

Rules

  1. Data first. A figure, then its unit, then its source and the time read: .prov (a link and a <time>). No figure without one.
  2. Fact, evidence, hypothesis never look alike. Facts are solid; a hypothesis is dashed and carries the word (.wx-bar.hyp, .lbl).
  3. Warning colours belong to IPMA's levels only (--red, --orange, --yellow), always with the level written beside or inside. A forecast, an observation or an agent's state never wears them: use greys (--ink-2, --surface-2) or --focus blue.
  4. Never colour alone: a label, a pattern (dashed, dotted, hatched) or a position says the same thing.
  5. Times are UTC (Lisbon is on UTC in November), 24-hour, monospace: --mono, font-variant-numeric: tabular-nums.
  6. Phones: nothing wider than the screen except inside .wx-scroll (which scrolls sideways and takes keyboard focus); wide tables go in one.
  7. Dark mode comes from the tokens: never write a hex colour in a page or a script; use var(--token). color-mix() on tokens for tints.
  8. The "Not a warning service" line stays on every page (the frame has it).
  9. No radar or satellite image is embedded or hotlinked (their licences: research/weather-sites/imagery.json): text links only. Our own views redrawn from IPMA's JSON name IPMA and link to it. Nothing copies MeteoAlarm's map, icons or layout.

Tokens

TokenFor
--paper, --surface, --surface-2page, card, recessed band or table head
--ink, --ink-2text, secondary text
--line, --line-2hairlines, stronger rules
--accentthe site's red: the kicker, the live mark, "now in force"
--focuslinks, focus rings, observations, the now line
--red, --orange, --yellowIPMA warning levels only
--ok, --bad, --warn, --sent, --wait (and -soft)states of things we run (a check, a message, an agent), never weather
--rainrain intensity tint
--sans, --monotype

Parts

ClassWhat
.wrapthe page column (1180 px)
.carda surface with a border; h2 inside is 18 px
.gridtwo columns (2:1), one on a phone
.kicker, .bannerthe top of a page
.lvl.red, .orange, .yellow, .obsa level chip
.lbl, .lbl.official, .lbl.signala small label (fact, evidence, hypothesis, decision)
.provsource and time read, small, after a figure
.metasecondary text, 14 px
.kv, .kv.srca list of pairs; .src stacks the source under each
.feeda time-stamped list
.wx-tiles, .wx-tilestat tiles
.wx-scroll > .wx-strip > .wx-row (.wx-lab + .wx-track)a 24-hour strip; .wx-bar spans (left and width in %), .wx-cells for one value per hour, .wx-group for a band title
.wx-chart, .wx-legendan SVG chart and its legend
.wx-tablea <details> with the table twin of a chart
main.doc articlea document page (every *.md)