13 claves en una entrada NUEVA de `recipes/base.ts`. Censo 0 % → 86 %.
1. **`font-family` NO se acuña**: lee `var(--style-code-font-family)`, la capa
tipográfica, y un consumidor no re-declara el vocabulario de su capa —
precedente inmediato, `code-block`. El `font-size` SÍ entra, y la diferencia
está medida: su fallback era un PRIMITIVO, no la capa. `--_kbd-font-size` es
la escotilla por instancia que el wrapper escribe desde la prop `size`
(`kbd.svelte:37`), y el fallback pasa a ser el público.
2. **El padding y el min-width son em-relativos a propósito** — una tecla crece
con su letra —, así que son knobs con valor `em`, no literales pendientes de
corregir. El `line-height: 1` sí es identidad: una tecla no tiene
interlineado.
3. **El relieve de tecla física es de la variante `surface`**: borde inferior
más grueso + luz interior. Dos knobs propios, no adorno del borde general;
outline y ghost son planas por identidad.
Artefactos y gates:
- Sonda antes/después = 0 diffs en 522 valores × 7 estados. Determinismo
verificado.
- R-5.4: **13/13**, sin una sola entrada en el ledger — el primero de la tanda
que no necesita adjudicar nada.
- censo --only 86 % · component:audit PASS · eidos-lint invalid 0, class-hooks
0 · suite eidos sin rojos nuevos · rtl:check 0 · docs:check 0 · check por
fichero limpio.
- README con su «Talla y tema» y tab `Tokens` en la demo (13 claves, en vivo).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- **⚠ 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** — 1: `font-size`.
### 4.2 Sin nombre mecánico (1)
- **⚠ decisión: `1` es un valor identidad o geometría de layout, no un knob de tema — el perímetro de «knob» es D-TH.2, sin firmar** — 1: `line-height`.
- **⚠ decisión: `border` es shorthand o eje físico — hay que partirlo en ejes lógicos antes de nombrarlo (recipe-contract §1, R-4.4)** — 2: `border`.
### 4.4 Lo que hay que comprobar a mano (PLAN-theming §1.3 · §7.4)
@ -94,6 +70,23 @@ no distingue lo que debería — se marca `⚠`.
<!-- veredicto:start -->
_(pendiente — lo escribe el autor; se conserva al regenerar)_