Dos aperturas por partes (`parts:` en recipe, forma `declarations:`):
- metrics-icon: los 5 slots del featured icon (track/solid/text/contrast/
border) pasan de 8 bloques per-rol al forward compartido en la parte `icon`.
Fuera el guard roles-only del wrapper (caia a neutral con cualquier valor
no-rol); `plain` sigue sin estampar. Default primary estampado = identico.
El flash de valor NO se toca: gradua por `data-event-intent` (sema), no por
el prop `color`. `MetricsChartProps.color` queda cerrado: delega en la
familia chart, que NO esta en la cola del handoff (hueco señalado aparte).
- form submit/reset: 4 slots (solid/solid-hover/border/contrast) en las DOS
partes via el mismo forward. `'neutral'` (default de reset) NO estampa: la
base action look (element bg + text ink) ES el neutral — estamparlo habria
cambiado reset a solid grey. Submit default primary = identico.
Verificado en Chrome (probe getComputedStyle): metrics-icon risk 5/5 slots +
crimson + custom (contrast blanco derivado); form threat 4/4 + iris + custom;
reset sin estampa con look base intacto. check: 0 errores en tocados (total
76 = baseline); contract test 26/28 (2 pre-existentes proof-of-human).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>