6 claves fusionadas en el bloque `clipboard` de `recipes/base.ts` (donde ya
vivían los dos forwards de paleta). Censo 0 % → 63 %.
**Todo lo tokenizable es el INDICADOR.** El host va `display: contents` y el
trigger reusa la receta de `Button` por el patrón de consumidor, así que la
receta sólo posee la píldora que aparece un instante tras copiar.
- Los dos forwards de paleta siguen privados (THM-2): el fondo y la tinta del
chip los leen a pelo, sin sitio donde meter un público sin duplicar la regla
— son el 37 % que no alcanza.
- `font-family` queda fuera por la misma razón que en code-block, kbd y
announce: lo posee la capa tipográfica.
- El padding es un shorthand de dos valores → dos knobs lógicos.
- **Los `--motion-*` no son knobs de tema**: son los ganchos con que el
indicador afina el preset `scale-fade` del canal de motion (escala 0.85,
rápida). Pertenecen al canal, no al contrato, y la política de
`prefers-reduced-motion` la emite el generador.
Artefactos y gates:
- Sonda antes/después = 0 diffs en 1.392 valores × 8 estados.
- R-5.4: 0/6, los seis adjudicados con su medición — el indicador sólo existe
un instante tras copiar (0 nodos en reposo, contados) y forzándolo los seis
mueven su propiedad (gap 4→1234px, padding 2/8→1235/1236px, radio
9999→1237px, tipo 12→99px, peso 500→123).
- censo --only 63 % · component:audit PASS · suite eidos sin rojos nuevos ·
rtl:check 0 · docs:check 0 · check por fichero limpio.
- README con «Talla y tema» y tab `Tokens` en la demo (6 claves).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- **⚠ decisión: `padding` es shorthand o eje físico — hay que partirlo en ejes lógicos antes de nombrarlo (recipe-contract §1, R-4.4)** — 1: `padding`.
- **⚠ decisión: el privado que alimenta este knob no se declara en el CSS (viene de `base.ts` o de un estilo inline) — hay que resolverlo antes de nombrarlo** — 2: `background`, `color`.
### 4.4 Lo que hay que comprobar a mano (PLAN-theming §1.3 · §7.4)
@ -82,6 +71,19 @@ no distingue lo que debería — se marca `⚠`.
<!-- veredicto:start -->
_(pendiente — lo escribe el autor; se conserva al regenerar)_
**Medido 2026-08-22.** El host va `display: contents` y el trigger reusa la
receta de `Button` por el patrón de consumidor, así que **todo lo tokenizable
es el INDICADOR** — la píldora «Copied!» que aparece un instante tras copiar.
1. **Los dos forwards de paleta se quedan privados** (THM-2): el fondo y la
tinta del chip los leen a pelo, sin sitio donde meter un público sin
duplicar la regla. Son el 25 % que no alcanza.
2. **`font-family` NO se acuña**: lee `--style-label-font-family`, la capa
tipográfica (mismo criterio que `code-block`, `kbd` y `announce`).
3. **El padding es un shorthand de dos valores** → dos knobs lógicos.
4. **Los `--motion-*` no son knobs de tema**: son los ganchos del canal de
motion con que el indicador afina el preset `scale-fade` (escala 0.85,
rápida). Pertenecen al canal, no al contrato de la receta, y la política de
'static heading not mounted in the demo; forced → reaches (8 → 1234px)'
},
clipboard:{
'indicator-gap':
'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (4 → 1234px)',
'indicator-padding-block':
'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (2 → 1235px)',
'indicator-padding-inline':
'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (8 → 1236px)',
'indicator-radius':
'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (9999 → 1237px)',
'indicator-font-size':
'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (12 → 99px)',
'indicator-font-weight':
'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (500 → 123)'
},
code:{
radius:
'the DEMO HARNESS wins: `[data-uix-docs] code` (uix.css, 0-1-1) beats the recipe base rule `[data-code]` (0-1-0) and sets border-radius/padding/font on the inline code — confirmed with CDP matched-rules. The variant rules (0,2,0) DO win, which is why only this base-rule token reads dead. Same harness rule that hides the <pre> of code-block (next-features §13)',