A mark, not a picture.
Icons are marks: 1.5px ink stroke, 24×24 grid, no fill. The sprite icons.svg holds all 32. Each mark is a <symbol> with an icon-NAME id; open the file to read the ids.
0 0 24 24 · always · padding lives inside the path, not in the boxcurrentColor · width 1.5 · linecap square · linejoin miternone — the only fills permitted are inside icon-circle-dot and icon-spinner14 inline · 16 buttons · 20 alerts & nav · 24 default · 32+ empty statescurrentColor — the icon inherits text color, never declares its own<symbol> ids in icons.svg · the examples below draw a few of them<svg class="ic"><use href="icons.svg#icon-run"/></svg>aria-hidden="true" · meaningful → role="img" + <title>§ Composition rules
One stroke. Every mark is drawn at 1.5px. We never have a 2px outline with a 1px detail.
One tone. No two-tone duotone marks. They become illustrations, and we have illustrations elsewhere.
Square caps · miter joins. The marks share the geometry of the type — Inter Tight caps and IBM Plex Mono ends are not rounded, and neither are these.
Inherit color. An icon is the color of its surrounding text, always. The only exception is the red signal channel.
§ Banned
Filled icons (Material-style)
Two-tone or duotone marks
Rounded corners or rounded caps
Hand-drawn / sketchy variants
Emoji as system iconography
Color icons that don't inherit currentColor
An icon used without (or as a substitute for) a label, except close · search · live
icons.svg#icon-NAME · Color currentColor · A11y aria-hidden when beside text