I was building my personal website when the buttons started to feel wrong.
The first version was vibe-coded. The model had made some visual decisions by default. Transparency felt inconsistent with the rest of the interface, and other decisions had not been made at all. There were no real interaction states.
That did not make the button useless. It made the gap visible. I did not want the control language of my website decided by an agent or borrowed unchanged from someone else’s system. This is my website. Defining what a button is here is part of the design work.