Tide & weather observatory · Symbol set nº 018 50°02.4′N · 005°31.9′W · datum LAT ● recording

Selkie
Point Icons

Eighteen symbols for a coastal station dashboard — swell, wind and moonlight; gauges, buoys and chain; the interface around them. One 24-unit grid, one 2-unit stroke, drawn by hand in code.

NOW · ebb HW 16:41 · 4.9 m 0004 0812 1620 24
01

Row test

the whole family in one line, no hiding places
24 px
16 px

Organic forms carry the same stroke as the machinery and the chrome. The 16 px row swaps barometer for its small-size form — the only icon that needs one.

02

The set

18 symbols · 19 with the small-size form
swellorganic
windorganic
rainorganic
moonorganic
sunorganic
anemometermechanical
buoymechanical
tide-gaugemechanical
mooringmechanical
barometermechanical
compassmechanical
filterinterface
exportinterface
alertinterface
historyinterface
compareinterface
favoriteinterface
tide-clockinterface
03

Grid & construction

24 × 24 · live 20 × 20 · stroke 2

barometer on the keylines — dashed teal: live area (2 px clear all round).
dashed orange: 18 × 18 square keyline vs Ø 17.5 circle keyline.

  • Canvas24 × 24 viewBox. Live area 20 × 20 — 2 units of clear water on every side, nothing clips.
  • StrokeWeight 2, round caps, round joins, everywhere. No stroke-width lives in the sprite: it inherits from CSS, so a theme can thin or fatten the whole family in one line.
  • OpticsA circle and a square of equal measure don’t weigh the same. Round forms ride the Ø 17.5 keyline (3.25 – 20.75), squares sit at 17 – 18 wide; rings overshoot flat forms by ~0.5 so neither reads small. The star sinks 0.5 low; the triangle’s apex rides the live edge.
  • RadiiOne corner radius — 2 units — for every rectilinear bend (export tray, and nowhere else cheats it).
  • DensityEach glyph keeps 2–5 elements. Mechanical icons are held to the same stroke count as organic ones so the row doesn’t wobble.
  • NodesBudget of 24 path commands per icon; heaviest glyph (tide-gauge) spends 18. Circles are true <circle> geometry, not traced arcs.
  • ColourEverything strokes currentColor. One sprite serves light and dark; recolour with the CSS color property.
04

Scale

16 px honest, 96 px unembarrassed
16
20
24
32
48
96

Deliberate small-size form

At 16 px the gauge ticks collapse into the rim. #ic-barometer-sm keeps dial, hub and needle only. Swap it by hand below 20 px — the 16 px row above already does.

Why only one variant

The rest of the set was drawn loose enough — long strokes, open counters, no micro-ticks — to survive 16 px as-is. Shipping eighteen “small” twins would be tourism, not a system.

05

Light & dark

one sprite, no second copy

Day watch · inherited colour

Night watch · same symbols

Flip the whole page with the Night watch toggle in the masthead — every glyph, chart and button follows currentColor down.

06

In service

a plausible station panel, 16 px working size
STN 042 · SELKIE POINT · LIVE

Now & next water

Small-craft advisory. Gusts to 28 kn after 16:00, veering south-west; steepening swell at the bar.

  • 14.2 knWind · SW 5
  • 1.8 mSwell · 9 s period
  • 1009 hPaFalling slowly
  • 16:41Next high · 4.9 m
TimeHeightEventSky
04:374.7 mHigh water
11:021.1 mLow water
16:414.9 mHigh water · springs
23:180.9 mLow water

Decorative instances are aria-hidden and the surrounding control carries the name; the advisory’s icon is the message itself, so it is named with role="img".

07

Usage

sprite → <use> → currentColor
<!-- 1 · sprite once, near the top of <body> -->
<svg width="0" height="0" style="position:absolute" aria-hidden="true">
  … nineteen <symbol>s …
</svg>

<!-- 2 · decorative: the control is named, the glyph hides -->
<button class="ibtn" aria-label="Export observations as CSV">
  <svg class="i" aria-hidden="true"><use href="#ic-export"/></svg>
</button>

<!-- 3 · meaningful: the glyph itself is the message -->
<svg class="i" role="img" aria-label="Gale warning">
  <use href="#ic-alert"/>
</svg>

/* 4 · the contract — strokes ride currentColor,
      weight stays themeable from CSS */
.i { width: 24px; height: 24px;
     stroke-width: var(--sw, 2); color: inherit; }

/* below 20 px, prefer the small-size form */
<use href="#ic-barometer-sm"/>

Accessibility, in two rules

  • Decorative: aria-hidden="true" on the svg; name lives on the button or the text beside it.
  • Meaningful: role="img" + aria-label on the svg itself. Each symbol also carries a <title> for source-readers and debuggers.

Node ledger · path commands

  • swell 6
  • wind 8
  • rain 12
  • moon 4
  • sun 16
  • anemometer 6
  • buoy 12
  • tide-gauge 18
  • mooring 12
  • barometer 8
  • barometer-sm 2
  • compass 5
  • filter 7
  • export 11
  • alert 8
  • history 8
  • compare 14
  • favorite 11
  • tide-clock 8
  • budget ≤ 24