ha-icon inside the puck lacked the .dev centering recipe (flex + line-height: 0), so the glyph sat on its text baseline and floated around the circle. The smoke now measures the glyph centre against the puck centre to sub-pixel tolerance.