Buttons ignore the universal box-sizing rule because the browser’s default stylesheet sets them to content-box. This would mean that a type selector (button) has higher specificity than *, so it wins.
Override it explicitly:
button, input, select, textarea { box-sizing: border-box; }