Styled button with variants, sizes, loading + submit state machine
Click a button to cycle through its states. All transitions use motion tokens.
Pass pressed to make an on/off toggle — it renders aria-pressed. Styling stays
yours: choose variant from the same state. Omit it and no aria-pressed is rendered.
Any other attribute — aria-*, data-*, name, value, title — passes through to the rendered <button> (or <a>).
All buttons compress to ~97% on press and spring back with --motion-spring (single overshoot).