To your first point: that line hides the button's text without causing the button to be resized, which I think looks better than having it resized to fit the spinner.

There is a `spinner` class in `site.styl`, with the actual implementation in a series of mixins contained in `mixins.styl`. The tricky part here (and the reason I'm not just adding a `spinner` class to the button itself) is that we want to hide the button's text but not the button background while the spinner is visible. So the spinner is instead added as a `div` within the button, and the text's `visibility` is set to `hidden`.

Personally I don't think this is particularly ugly (the `spinner` class is still taking care of most of the work), and the effect looks pretty nice IMO.