Small craft advisory until 18:00
North Breakwater
- Rain 0.0 mm
- Visibility 6 km
- Waxing crescent
- Ebb 0.6 kt
Harbour Board · Instrument icons 1.0
Eighteen marks for a tide and weather station. Organic, mechanical, and interface forms, drawn on one 24 grid so the row holds together.
Equal slots, one stroke, no optical favourites. If a mark looks borrowed, it does not ship.
Six sea and sky, six instruments, six interface. Select a mark to inspect it on the keyline.
Organic
Swell
Readable at 16, still a drawing at 96. Stroke scales with the viewBox — it is not a hairline pasted on top.
The anemometer swaps to its small cut here. Nothing else does.
Cups at 16 fall under two pixels across. The small form keeps the three-arm silhouette and replaces cups with terminals. Above 16, the primary drawing is the icon.
One sprite. currentColor for stroke and the few functional fills. No night-mode duplicate.
Parent color, on a dark ground. Stroke width still comes from CSS.
A station board. Icons next to a name are decorative. The export control is icon-only, so the button carries the name.
Small craft advisory until 18:00
Decorative instances are hidden. A meaningful instance is named on the control, or on the svg itself when it stands alone.
<svg class="icon" viewBox="0 0 24 24" aria-hidden="true">
<use href="#i-swell"/>
</svg>
<svg class="icon" viewBox="0 0 24 24" role="img"
aria-label="Swell, 1.2 metres">
<title>Swell, 1.2 metres</title>
<use href="#i-swell"/>
</svg>
.icon {
width: 1.5rem; height: 1.5rem;
stroke: currentColor; fill: none;
stroke-width: 1.5;
stroke-linecap: round;
stroke-linejoin: round;
}
Each symbol carries a <title>. Do not rely on it through <use> — name the instance you actually show.
One viewBox, 0 0 24 24. Ink stays in a 20 × 20 live area with padding 2, so a 1.5 stroke is never clipped. Coordinates are at most two decimal places. No transform stacks, no empty groups.
Circles are drawn about 7% large of the square keyline — a circle and a square of the same nominal size are not the same size to the eye. The star sits a touch low of center so its points don’t float. The alert triangle is inset so its mass matches a ring. Radius 1.2 is for interface blocks; a 3px housing scales the radius down rather than forcing the system radius onto a detail.
Stroke width is not written on the marks. It inherits, including through <use>, and a class or an inline style can change it.
Dashed box is the live area. Black square is the rectilinear keyline. Teal circle is the optical match — same weight, larger geometry.