{progress} shows how far something has got. It writes the native <progress value max> element, styled on the server (tags/_lib/progress.php), under a line with the label and the rounded percentage - no script, and it prints. The value is clamped to 0 ... max.

With steps it draws a row of dots instead, one per step up to max, joined by a line: the steps up to the value filled and the current one ringed - a checkout or a wizard. The steps are role="progressbar" with aria-valuenow, -min, -max and aria-valuetext="Step 3 of 5".

The visible label line is aria-hidden, since the bar carries the same text as its aria-label - it is not read twice. color picks a slot and size the thickness. The colours are --pad-progress-track, -text and one per slot on .pad-progress, with light-dark() defaults written once per page.

A value that is no number, a max that is not above 0 (or for steps not a whole number up to 50), an unknown color or size is an error under the strict check.