Air / Button
Valida densidad, tipografia, variantes, iconografia, radios, loading, color, intent y comportamiento responsive sobre `terra.Button`.
`color` elige la apariencia. `intent` comunica significado y, si existe, predomina sobre `color`.
`ButtonLabel` recibe texto ya resuelto. Si necesitas traduccion, resuelvela antes con `t(...)` o con el traductor que use tu pantalla.
Las variantes base ya diferenciadas por peso visual y jerarquia.
`color` selecciona una paleta visual del sistema sin aportar significado extra.
Lectura rapida para contrastar cada paleta en los pesos que mas nos importan. Sirve para detectar enseguida si `solid`, `soft`, `surface`, `outline` o `ghost` se quedan cortos.
`intent` comunica semantica al usuario y siempre prevalece sobre `color`.
Escala completa de densidad: dos pasos por debajo de `sm`, un paso tactil por encima de `lg`.
La anatomia ya acepta `ButtonIcon` y `ButtonLabel`, con ejemplos claros de izquierda, derecha e icon-only.
El radio es una prop del sistema y siempre resuelve contra tokens de `air`.
`size` y `rounded` ya aceptan objeto responsive. Reduce o amplia el viewport para comprobar el cambio.
Loading con spinner del sistema, texto estable, posicion configurable y variantes con icono.
Estados basicos para validar contraste y feedback visual.