{rating} shows a score as a row of stars - or hearts - in inline SVG (tags/_lib/rating.php). The whole icons up to the score are filled, the rest empty, and a part of one is filled as far as the score goes: 3.75 fills three stars and three quarters of the fourth.

The part is a nested <svg> as wide as the part - no clipPath, so no id that two ratings on one page could share - measured over the drawn icon, so 0.5 is exactly half. The whole is role="img", with the score in words as its aria-label and <title>: 4.5 out of 5, or label.

The colours are --pad-rating-star, -heart and -empty on .pad-rating, with light-dark() defaults written once per page; the fill attributes carry the light ones for a reader without the style. A score that is no number, a max that is no whole number from 1 to 20 or an unknown icon is an error under the strict check. The tag only shows a score; to collect votes see {poll}.