uix(callout): temable — 27 % → 79 %, y la base óptica deja de copiar el sistema

7 claves nuevas (28 → 35) y un literal anotado. El 21 % que falta es el PUENTE
DE PALETA (THM-2), que no es deuda: es la vía por la que `data-color` resuelve
los 8 roles y las 33 escalas donantes sin una línea de CSS extra. Global 64 %.

Cosido lo que la receta consumía a pelo: el hueco de fila, la tipografía del
cuerpo (`font-size` + `line-height` — así se lee una admonición), la tinta, el
tamaño del icono y el peso del título. Los tres pasos leen el BUNDLE
(`--size-md-font-size`, `--size-md-font-line-height`, `--size-md-icon-size`).

LA LÍNEA BASE ÓPTICA DEL ICONO DEJA DE REPETIR LAS MÉTRICAS DEL SISTEMA: era
`calc(var(--size-md-font-size) * var(--font-line-height-md, 1.5))` y ahora es
`calc(var(--callout-font-size) * var(--callout-line-height))` — la misma
derivación, sobre los tokens del propio callout, así que un tema que agrande la
copia mueve la caja del glifo con ella.

Cinco respaldos muertos retirados: `var(--callout-gap, var(--space-3))`,
`padding`, `accent-width`, `radius` —las cuatro claves están en el contrato— y
el `, 1.5` de `--font-line-height-md`, que además MENTÍA: el token existe y vale
1.45.

Los 24 rojos del guard son los TONOS, y no son de este componente: es la
supersesión de la cascada de paleta que `button` destapó hoy (el bloque genérico
va el último y gana por orden). Adjudicados con el patrón compartido, que ahora
nombra su razón una sola vez para los dos componentes.

Gates: sonda 0 diffs en 896 valores × 7 estados · centinela 10/34 con los tonos
adjudicados · censo 79 % · `component:audit` PASS · suite eidos con el rojo
conocido ajeno · `rtl:check` 0 · `docs:check` 0 · `check` sin errores propios ·
captura de cuatro tonos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-background
dev 2 months ago
parent e68b01f840
commit c15873be2e

@ -8,10 +8,10 @@
> [`theming-audit.md`](../theming-audit.md); ésta es la deuda de adopción que
> aquélla dejó apuntada en su §5.3-3.
- **Medido**: 2026-08-22 · **162 recetas** con CSS + **8 componentes sin receta** = 170 fichas, el árbol entero de `eidos/components/`
- **Medido**: 2026-08-23 · **162 recetas** con CSS + **8 componentes sin receta** = 170 fichas, el árbol entero de `eidos/components/`
- **La pregunta**: ¿cuánto de la apariencia de cada componente puede cambiar un tema **sin tocar el sistema ni la receta**?
- **Alcance global**: **63%** — 2923 de 4608 knobs pasan por un token público del componente
- **Reparto**: público 2923 · privado 329 · global 885 · literal 471 · sistema transversal 509 · excepción firmada 74 _(los dos últimos, fuera del ratio)_
- **Alcance global**: **64%** — 2930 de 4607 knobs pasan por un token público del componente
- **Reparto**: público 2930 · privado 329 · global 878 · literal 470 · sistema transversal 509 · excepción firmada 75 _(los dos últimos, fuera del ratio)_
- **Sin token público propio**: 24 · **alcance < 20 %**: 14 · **alcance 100 %**: 17 · **con eje `size`**: 58
## Cómo se lee
@ -126,7 +126,6 @@ La columna «contrato» cuenta las claves **públicas** del bloque del component
| [skin-media-player](./skin-media-player.md) | 22% | 11 | 2 | 0 | 1 | 6 | 2 | 10 | y |
| [palabras](./palabras.md) | 22% | 468 | 103 | 1 | 272 | 87 | 5 | 0 | – |
| [surface](./surface.md) | 25% | 4 | 1 | 3 | 0 | 0 | 0 | 25 | – |
| [callout](./callout.md) | 27% | 15 | 4 | 3 | 7 | 1 | 0 | 28 | – |
| [date-range-field](./date-range-field.md) | 29% | 8 | 2 | 0 | 4 | 1 | 1 | 3 | – |
| [time-range-field](./time-range-field.md) | 29% | 8 | 2 | 0 | 4 | 1 | 1 | 3 | – |
| [empty-state](./empty-state.md) | 29% | 17 | 5 | 7 | 5 | 0 | 0 | 6 | y |
@ -191,6 +190,7 @@ La columna «contrato» cuenta las claves **públicas** del bloque del component
| [chat-log](./chat-log.md) | 77% | 42 | 30 | 0 | 4 | 5 | 3 | 31 | – |
| [knob](./knob.md) | 78% | 26 | 18 | 1 | 1 | 3 | 3 | 33 | – |
| [stepper](./stepper.md) | 79% | 60 | 44 | 11 | 0 | 1 | 4 | 69 | y |
| [callout](./callout.md) | 79% | 14 | 11 | 3 | 0 | 0 | 0 | 34 | – |
| [chat-composer](./chat-composer.md) | 79% | 44 | 31 | 0 | 3 | 5 | 5 | 31 | – |
| [card](./card.md) | 80% | 36 | 28 | 7 | 0 | 0 | 1 | 97 | y |
| [aura](./aura.md) | 80% | 35 | 28 | 0 | 1 | 6 | 0 | 37 | y |

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **91%** — 58 de 64 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **91%** — 58 de 64 knobs por token público
- **Knobs de apariencia**: 65 — público 58 · privado 1 · global 0 · literal 5 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 76 pública(s) — `provider-border-width`, `provider-radius`, `outline-provider-bg`, `outline-provider-border`, `outline-item-border`, `outline-content-bg`, `surface-provider-bg`, `surface-provider-border`, `surface-provider-shadow`, `surface-item-border`, `surface-content-bg`, `ghost-provider-bg`, `ghost-provider-border`, `ghost-item-border`, `ghost-content-bg`, `item-border-width`, `trigger-min-height-xs`, `trigger-min-height-sm`, `trigger-min-height-md`, `trigger-min-height-lg`, `trigger-min-height-full`, `trigger-padding-inline-xs`, `trigger-padding-inline-sm`, `trigger-padding-inline-md`, `trigger-padding-inline-lg`, `trigger-padding-inline-full`, `trigger-padding-block-xs`, `trigger-padding-block-sm`, `trigger-padding-block-md`, `trigger-padding-block-lg`, `trigger-padding-block-full`, `trigger-gap`, `trigger-font-family`, `trigger-font-size-xs`, `trigger-font-size-sm`, `trigger-font-size-md`, `trigger-font-size-lg`, `trigger-font-size-full`, `trigger-font-weight`, `trigger-line-height`, `trigger-fg`, `open-trigger-fg`, `disabled-trigger-fg`, `trigger-hover-fg`, `trigger-transition-duration`, `trigger-transition-ease`, `trigger-focus-ring-offset`, `trigger-focus-ring-width`, `trigger-focus-ring-color`, `content-padding-inline-xs`, `content-padding-inline-sm`, `content-padding-inline-md`, `content-padding-inline-lg`, `content-padding-inline-full`, `content-padding-block-xs`, `content-padding-block-sm`, `content-padding-block-md`, `content-padding-block-lg`, `content-padding-block-full`, `content-font-family`, `content-font-size`, `content-line-height`, `content-fg`, `content-open-duration`, `content-close-duration`, `content-open-ease`, `content-close-ease`, `indicator-size-xs`, `indicator-size-sm`, `indicator-size-md`, `indicator-size-lg`, `indicator-fg`, `open-indicator-fg`, `indicator-rotation`, `indicator-transition-duration`, `indicator-transition-ease`
- **Eje `size`**: sí · **ficheros**: `accordion.css`

@ -4,7 +4,7 @@
> Vista de conjunto: [README](./README.md) · método:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1.
- **Medido**: 2026-08-22 · **Alcance**: **—** (no hay knobs que medir)
- **Medido**: 2026-08-23 · **Alcance**: **—** (no hay knobs que medir)
- **Ficheros del componente**: `affix.svelte`, `index.ts`, `README.md`, `types.ts` — **ningún `.css`**
- **Contrato en `lib/recipes/base.ts`**: sin entrada

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `alert-dialog.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **20%** — 2 de 10 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **20%** — 2 de 10 knobs por token público
- **Knobs de apariencia**: 11 — público 2 · privado 0 · global 8 · literal 0 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 2 pública(s) — `indent`, `rail-width`
- **Eje `size`**: no · **ficheros**: `anchor-nav.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **88%** — 7 de 8 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **88%** — 7 de 8 knobs por token público
- **Knobs de apariencia**: 8 — público 7 · privado 0 · global 1 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 9 pública(s) — `fg`, `padding-block`, `padding-inline`, `radius`, `border-width`, `border`, `bg`, `font-size`, `line-height`
- **Eje `size`**: no · **ficheros**: `announce.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **0%** — 0 de 3 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **0%** — 0 de 3 knobs por token público
- **Knobs de apariencia**: 3 — público 0 · privado 0 · global 1 · literal 2 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `aspect-ratio.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **37%** — 7 de 19 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **37%** — 7 de 19 knobs por token público
- **Knobs de apariencia**: 19 — público 7 · privado 0 · global 8 · literal 4 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 5 pública(s) — `gap`, `artwork-radius`, `artwork-size-card`, `artwork-size-row`, `artwork-size-bar`
- **Eje `size`**: no · **ficheros**: `audio-player.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **80%** — 28 de 35 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **80%** — 28 de 35 knobs por token público
- **Knobs de apariencia**: 35 — público 28 · privado 0 · global 1 · literal 6 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 37 pública(s) — `status-font-size-md`, `status-line-height-md`, `status-letter-spacing-md`, `status-font-size-lg`, `status-line-height-lg`, `status-letter-spacing-lg`, `status-detail-font-size-md`, `status-detail-line-height-md`, `status-detail-letter-spacing-md`, `status-detail-font-size-lg`, `status-detail-line-height-lg`, `status-detail-letter-spacing-lg`, `idle-opacity`, `orb-size-sm`, `orb-size-md`, `orb-size-lg`, `orb-radius`, `gap`, `orb-color-idle`, `orb-color-offered`, `orb-color-planned`, `orb-color-reviewing`, `orb-color-acting`, `orb-color-escalated`, `orb-halo-alpha`, `ring-scale`, `ring-track-fg`, `ring-track-width`, `ring-arc-width`, `ring-halo-width`, `ring-halo-opacity`, `status-fg`, `status-weight`, `status-gap`, `status-detail-fg`, `transition-duration`, `transition-ease`
- **Eje `size`**: sí · **ficheros**: `aura.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `auto-grid.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **75%** — 27 de 36 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **75%** — 27 de 36 knobs por token público
- **Knobs de apariencia**: 36 — público 27 · privado 3 · global 0 · literal 6 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: sí · **ficheros**: `avatar.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **57%** — 13 de 23 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **57%** — 13 de 23 knobs por token público
- **Knobs de apariencia**: 26 — público 13 · privado 1 · global 6 · literal 3 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 31 pública(s) — `pattern-rule`, `pattern-cell`, `pattern-dot-size`, `pattern-glow-size`, `pattern-glow-at`, `pattern-glow-strength`, `pattern-mesh-opacity`, `pattern-noise-opacity`, `pattern-vignette-strength`, `pattern-lines-width`, `pattern-lines-gap`, `pattern-lines-angle`, `pattern-rings-width`, `pattern-rings-gap`, `fade-size`, `fade-at`, `scrim-fg`, `scrim-fg-over-dark`, `scrim-fg-over-light`, `scrim-strength-xs`, `scrim-strength-sm`, `scrim-strength-md`, `scrim-strength-lg`, `scrim-strength-xl`, `gradient-drift-duration`, `pause-offset`, `pause-z`, `parallax-travel`, `spotlight-size`, `spotlight-strength`, `spotlight-fg`
- **Eje `size`**: no · **ficheros**: `background.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **59%** — 13 de 22 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **59%** — 13 de 22 knobs por token público
- **Knobs de apariencia**: 22 — público 13 · privado 6 · global 1 · literal 2 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 65 pública(s) — `padding-inline-xs`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-weight`, `line-height`, `letter-spacing`, `border-width`, `radius-sm`, `radius-md`, `radius-lg`, `radius-full`, `dot-size`, `icon-size`, `remove-size`, `remove-margin-start`, `primary-solid`, `primary-text`, `primary-contrast`, `secondary-solid`, `secondary-text`, `secondary-contrast`, `neutral-solid`, `neutral-text`, `neutral-contrast`, `affirm-solid`, `affirm-text`, `affirm-contrast`, `fulfill-track`, `fulfill-border`, `fulfill-solid`, `fulfill-text`, `fulfill-contrast`, `risk-solid`, `risk-text`, `risk-contrast`, `threat-solid`, `threat-text`, `threat-contrast`, `loss-track`, `loss-border`, `loss-solid`, `loss-text`, `loss-contrast`, `primary-track`, `primary-border`, `secondary-track`, `secondary-border`, `neutral-track`, `neutral-border`, `affirm-track`, `affirm-border`, `risk-track`, `risk-border`, `threat-track`, `threat-border` · 5 privada(s) forward — `_palette-track`, `_palette-border`, `_palette-solid`, `_palette-text`, `_palette-contrast`
- **Eje `size`**: sí · **ficheros**: `badge.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **30%** — 3 de 10 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **30%** — 3 de 10 knobs por token público
- **Knobs de apariencia**: 10 — público 3 · privado 5 · global 1 · literal 1 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 42 pública(s) — `gap`, `radius`, `primary-solid`, `primary-contrast`, `primary-track`, `primary-border`, `primary-text`, `secondary-solid`, `secondary-contrast`, `secondary-track`, `secondary-border`, `secondary-text`, `neutral-solid`, `neutral-contrast`, `neutral-track`, `neutral-border`, `neutral-text`, `affirm-solid`, `affirm-contrast`, `affirm-track`, `affirm-border`, `affirm-text`, `fulfill-solid`, `fulfill-contrast`, `fulfill-track`, `fulfill-border`, `fulfill-text`, `risk-solid`, `risk-contrast`, `risk-track`, `risk-border`, `risk-text`, `threat-solid`, `threat-contrast`, `threat-track`, `threat-border`, `threat-text`, `loss-solid`, `loss-contrast`, `loss-track`, `loss-border`, `loss-text`
- **Eje `size`**: sí · **ficheros**: `banner.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 5 de 5 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 5 de 5 knobs por token público
- **Knobs de apariencia**: 5 — público 5 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 7 pública(s) — `fg`, `bg`, `radius`, `text-font-family`, `text-letter-spacing`, `text-fg`, `invalid-border`
- **Eje `size`**: no · **ficheros**: `barcode.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 9 de 9 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 9 de 9 knobs por token público
- **Knobs de apariencia**: 9 — público 9 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 43 pública(s) — `display`, `position`, `width`, `min-width`, `max-width`, `height`, `min-height`, `max-height`, `padding`, `padding-block`, `padding-inline`, `padding-top`, `padding-right`, `padding-bottom`, `padding-left`, `margin`, `margin-block`, `margin-inline`, `margin-top`, `margin-right`, `margin-bottom`, `margin-left`, `gap`, `top`, `right`, `bottom`, `left`, `inset`, `inset-block`, `inset-inline`, `overflow`, `overflow-x`, `overflow-y`, `grow`, `shrink`, `basis`, `order`, `align-self`, `justify-self`, `place-self`, `grid-column`, `grid-row`, `grid-area`
- **Eje `size`**: no · **ficheros**: `box.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 20 de 20 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 20 de 20 knobs por token público
- **Knobs de apariencia**: 23 — público 20 · privado 0 · global 0 · literal 0 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 28 pública(s) — `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `line-height`, `fg`, `link-radius`, `link-fg`, `hover-link-fg`, `current-link-fg`, `link-font-weight`, `current-link-font-weight`, `separator-fg`, `ellipsis-size`, `ellipsis-radius`, `ellipsis-border-width`, `ellipsis-border`, `hover-ellipsis-border`, `ellipsis-bg`, `ellipsis-fg`, `hover-ellipsis-fg`, `transition-duration`, `transition-ease`
- **Eje `size`**: sí · **ficheros**: `breadcrumb.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **40%** — 2 de 5 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **40%** — 2 de 5 knobs por token público
- **Knobs de apariencia**: 5 — público 2 · privado 0 · global 0 · literal 3 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 1 pública(s) — `divider-strength`
- **Eje `size`**: no · **ficheros**: `button-group.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **91%** — 20 de 22 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **91%** — 20 de 22 knobs por token público
- **Knobs de apariencia**: 23 — público 20 · privado 2 · global 0 · literal 0 · sistema 1 · excepción 7 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 106 pública(s) — `height-xs`, `height-sm`, `height-md`, `height-lg`, `height-xl`, `padding-inline-xs`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `padding-inline-xl`, `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `font-family`, `line-height`, `letter-spacing`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `font-weight-xs`, `font-weight-sm`, `font-weight-md`, `font-weight-lg`, `font-weight-xl`, `icon-size-xs`, `icon-size-sm`, `icon-size-md`, `icon-size-lg`, `icon-size-xl`, `radius-sm`, `radius-md`, `radius-lg`, `radius-xl`, `radius-full`, `border-width`, `shadow`, `transition-duration`, `transition-ease`, `disabled-opacity`, `primary-track`, `primary-element`, `primary-border`, `primary-solid`, `primary-solid-hover`, `primary-text`, `primary-contrast`, `secondary-track`, `secondary-element`, `secondary-border`, `secondary-solid`, `secondary-solid-hover`, `secondary-text`, `secondary-contrast`, `neutral-track`, `neutral-element`, `neutral-border`, `neutral-solid`, `neutral-solid-hover`, `neutral-text`, `neutral-contrast`, `affirm-track`, `affirm-element`, `affirm-border`, `affirm-solid`, `affirm-solid-hover`, `affirm-text`, `affirm-contrast`, `fulfill-track`, `fulfill-element`, `fulfill-border`, `fulfill-solid`, `fulfill-solid-hover`, `fulfill-text`, `fulfill-contrast`, `risk-track`, `risk-element`, `risk-border`, `risk-solid`, `risk-solid-hover`, `risk-text`, `risk-contrast`, `threat-track`, `threat-element`, `threat-border`, `threat-solid`, `threat-solid-hover`, `threat-text`, `threat-contrast`, `loss-track`, `loss-element`, `loss-border`, `loss-solid`, `loss-solid-hover`, `loss-text`, `loss-contrast`, `palette-track`, `palette-element`, `palette-border`, `palette-solid`, `palette-solid-hover`, `palette-text`, `palette-contrast`
- **Eje `size`**: sí · **ficheros**: `button.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **84%** — 57 de 68 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **84%** — 57 de 68 knobs por token público
- **Knobs de apariencia**: 71 — público 57 · privado 7 · global 0 · literal 4 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 74 pública(s) — `gap`, `padding-xs`, `padding-sm`, `padding-md`, `padding-lg`, `radius`, `border-width`, `border`, `invalid-border`, `bg`, `outline-bg`, `outline-shadow`, `fg`, `shadow`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `line-height`, `header-gap`, `heading-fg`, `heading-font-size`, `heading-font-weight`, `control-size-xs`, `control-size-sm`, `control-size-md`, `control-size-lg`, `control-radius`, `control-border-width`, `control-border`, `hover-control-border`, `control-bg`, `control-fg`, `hover-control-fg`, `select-min-width`, `select-padding-inline`, `months-gap`, `grid-gap`, `weekday-size`, `weekday-fg`, `weekday-font-size`, `weekday-font-weight`, `day-size-xs`, `day-size-sm`, `day-size-md`, `day-size-lg`, `day-radius`, `day-border-width`, `day-border`, `hover-day-border`, `day-bg`, `day-fg`, `hover-day-fg`, `day-font-weight`, `day-selected-fg`, `range-start-solid`, `range-start-solid-hover`, `range-start-border`, `range-start-text`, `range-end-solid`, `range-end-solid-hover`, `range-end-border`, `range-end-text`, `day-today-border`, `day-today-fg`, `day-today-font-weight`, `day-outside-fg`, `day-outside-opacity`, `day-weekend-fg`, `day-unavailable-decoration`, `transition-duration`, `transition-ease`, `disabled-opacity` · 5 privada(s) forward — `_palette-solid`, `_palette-solid-hover`, `_palette-track`, `_palette-border`, `_palette-text`
- **Eje `size`**: no · **ficheros**: `calendar-select.css`, `calendar.css`

@ -5,24 +5,16 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **27%** — 4 de 15 knobs por token público
- **Knobs de apariencia**: 15 — público 4 · privado 3 · global 7 · literal 1 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 28 pública(s) — `gap`, `padding`, `accent-width`, `radius`, `primary-track`, `primary-text`, `primary-solid`, `secondary-track`, `secondary-text`, `secondary-solid`, `neutral-track`, `neutral-text`, `neutral-solid`, `affirm-track`, `affirm-text`, `affirm-solid`, `fulfill-track`, `fulfill-text`, `fulfill-solid`, `risk-track`, `risk-text`, `risk-solid`, `threat-track`, `threat-text`, `threat-solid`, `loss-track`, `loss-text`, `loss-solid` · 3 privada(s) forward — `_palette-track`, `_palette-text`, `_palette-solid`
- **Medido**: 2026-08-23 · **Alcance**: **79%** — 11 de 14 knobs por token público
- **Knobs de apariencia**: 14 — público 11 · privado 3 · global 0 · literal 0 · sistema 0 · excepción 1 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 34 pública(s) — `gap`, `padding`, `accent-width`, `radius`, `row-gap`, `font-size`, `line-height`, `fg`, `icon-size`, `title-font-weight`, `primary-track`, `primary-text`, `primary-solid`, `secondary-track`, `secondary-text`, `secondary-solid`, `neutral-track`, `neutral-text`, `neutral-solid`, `affirm-track`, `affirm-text`, `affirm-solid`, `fulfill-track`, `fulfill-text`, `fulfill-solid`, `risk-track`, `risk-text`, `risk-solid`, `threat-track`, `threat-text`, `threat-solid`, `loss-track`, `loss-text`, `loss-solid` · 3 privada(s) forward — `_palette-track`, `_palette-text`, `_palette-solid`
- **Eje `size`**: no · **ficheros**: `callout.css`
## 1. Knobs fuera de alcance
### 1.1 Directo a primitivo global (7)
### 1.1 Directo a primitivo global (0)
| # | fichero:línea | selector | propiedad | valor |
| ---: | --- | --- | --- | --- |
| 1 | `callout.css:17` | `[data-callout]` | `row-gap` | `var(--space-1)` |
| 2 | `callout.css:23` | `[data-callout]` | `font-size` | `var(--size-md-font-size)` |
| 3 | `callout.css:24` | `[data-callout]` | `line-height` | `var(--font-line-height-md, 1.5)` |
| 4 | `callout.css:25` | `[data-callout]` | `color` | `var(--color-content-primary)` |
| 5 | `callout.css:36` | `[data-callout-icon]` | `font-size` | `var(--size-md-icon-size)` |
| 6 | `callout.css:40` | `[data-callout-icon]` | `min-block-size` | `calc(var(--size-md-font-size) * var(--font-line-height-md, 1.5))` |
| 7 | `callout.css:48` | `[data-callout-title]` | `font-weight` | `var(--font-weight-semibold)` |
_Ninguno._
### 1.2 A través de un privado (3)
@ -30,22 +22,22 @@
| ---: | --- | --- | --- | --- |
| 1 | `callout.css:20` | `[data-callout]` | `background` | `var(--_callout-palette-track)` |
| 2 | `callout.css:38` | `[data-callout-icon]` | `color` | `var(--_callout-palette-solid)` |
| 3 | `callout.css:49` | `[data-callout-title]` | `color` | `var(--_callout-palette-text)` |
| 3 | `callout.css:51` | `[data-callout-title]` | `color` | `var(--_callout-palette-text)` |
### 1.3 Literales (1)
### 1.3 Literales (0)
| # | fichero:línea | selector | propiedad | valor |
| ---: | --- | --- | --- | --- |
| 1 | `callout.css:37` | `[data-callout-icon]` | `line-height` | `1` |
_Ninguno._
### 1.4 Excepciones firmadas (0) — fuera del ratio
### 1.4 Excepciones firmadas (1) — fuera del ratio
Literales que llevan su anotación `/* literal: <razón> */` en la propia
declaración: la válvula de recipe-contract §3, la misma que honra
`component-audit`. **Una desviación firmada no es deuda** — se listan para que la
razón se lea, no para acuñarlas.
_Ninguno._
| # | fichero:línea | selector | propiedad | valor |
| ---: | --- | --- | --- | --- |
| 1 | `callout.css:37` | `[data-callout-icon]` | `line-height` | `1` |
## 2. Sistema transversal (0) — informativo, fuera del ratio
Un tema los alcanza **a nivel de sistema**, por diseño (recipe-contract §2).
@ -60,7 +52,7 @@ Consumidos y **no declarados en el CSS** (vienen de `base.ts` o de un estilo inl
## 4. Propuesta de corrección
### 4.1 Tokens a declarar en `lib/recipes/base.ts` (7)
### 4.1 Tokens a declarar en `lib/recipes/base.ts` (0)
Valor **verbatim** del CSS de hoy: el default no se mueve, sólo cambia quién
puede moverlo. Nombres derivados de recipe-contract §1 (ejes lógicos, talla
@ -70,23 +62,12 @@ no distingue lo que debería — se marca `⚠`.
| token (`--callout-…`) | scope TSC | valor propuesto | usos |
| --- | --- | --- | ---: |
| `row-gap` | `root` | `var(--space-1)` | 1 |
| `font-size` | `root` | `var(--size-md-font-size)` | 1 |
| `line-height` | `root` | `var(--font-line-height-md, 1.5)` | 1 |
| `fg` | `root` | `var(--color-content-primary)` | 1 |
| `icon-font-size` | `root` | `var(--size-md-icon-size)` | 1 |
| `icon-height` | `root` | `calc(var(--size-md-font-size) * var(--font-line-height-md, 1.5))` | 1 |
| `title-font-weight` | `root` | `var(--font-weight-semibold)` | 1 |
### 4.2 Sin nombre mecánico (4)
- **⚠ 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** — 3: `background`, `color`.
- **⚠ 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`.
### 4.3 Avisos sobre los tokens propuestos (1)
- **⚠ decisión: el valor es una expresión — el token puede llevar la expresión entera o sólo su término variable** — `--callout-icon-height`
### 4.4 Lo que hay que comprobar a mano (PLAN-theming §1.3 · §7.4)
- [ ] **Privado que no deriva de un público** — §3 lo marca; el privado debe leer el público o desaparecer.
@ -99,6 +80,36 @@ no distingue lo que debería — se marca `⚠`.
<!-- veredicto:start -->
_(pendiente — lo escribe el autor; se conserva al regenerar)_
**EJECUTADO 2026-08-23 — 27 % → 79 %**, 7 claves nuevas (28 → 35) y un literal
anotado. El 21 % que falta es el **puente de paleta** (`_palette-track/text/solid`,
THM-2), que no es deuda: es la vía por la que `data-color` resuelve los 8 roles
y las 33 escalas donantes sin una línea de CSS extra.
Cosido lo que la receta consumía a pelo: el hueco de fila, la tipografía del
cuerpo (`font-size` + `line-height`, que es como se lee una admonición), la
tinta del cuerpo, el tamaño del icono y el peso del título. Los pasos leen el
BUNDLE (`--size-md-font-size`, `--size-md-font-line-height`,
`--size-md-icon-size`), no el primitivo suelto.
**La línea base óptica del icono deja de repetir las métricas del sistema**: era
`calc(var(--size-md-font-size) * var(--font-line-height-md, 1.5))` y ahora es
`calc(var(--callout-font-size) * var(--callout-line-height))` — la MISMA
derivación, sobre los tokens del propio callout, así que un tema que agrande la
copia mueve la caja del glifo con ella.
**Tres respaldos muertos retirados**: `var(--callout-gap, var(--space-3))`,
`var(--callout-padding, …)`, `var(--callout-accent-width, 3px)` y
`var(--callout-radius, …)` llevaban un respaldo que no puede ocurrir —las cuatro
claves están en el contrato— y el `, 1.5` de `--font-line-height-md` tampoco (el
token existe y vale 1.45; el respaldo mentía por 0,05).
**Los 24 rojos del guard son los tonos, y NO son de este componente**: es la
supersesión de la cascada de paleta que `button` destapó el mismo día (el bloque
genérico va el último y gana por orden). Adjudicados con el PATRÓN compartido.
Verificación: **diff de computed = 0** sobre 896 valores en 7 estados ·
centinela **10/34** con los 24 tonos adjudicados por patrón · censo 79 % ·
`component:audit` PASS · suite eidos con el rojo conocido ajeno · `rtl:check` 0 ·
`docs:check` 0 · `check` sin errores propios · captura de cuatro tonos.
<!-- veredicto:end -->

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **90%** — 18 de 20 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **90%** — 18 de 20 knobs por token público
- **Knobs de apariencia**: 22 — público 18 · privado 0 · global 0 · literal 2 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 20 pública(s) — `padding-sm`, `padding-md`, `padding-lg`, `grid-gap-sm`, `grid-gap-md`, `grid-gap-lg`, `padding`, `grid-gap`, `card-radius`, `title-font-weight`, `title-fg`, `title-font-family`, `title-font-size`, `title-line-height`, `title-padding-block-end`, `chevron-size`, `chevron-width`, `description-fg`, `description-font-size`, `description-padding-block-end`
- **Eje `size`**: no · **ficheros**: `card-group.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **80%** — 28 de 35 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **80%** — 28 de 35 knobs por token público
- **Knobs de apariencia**: 36 — público 28 · privado 7 · global 0 · literal 0 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 97 pública(s) — `padding-inline-xs`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `padding-inline-xl`, `padding-block-xs`, `padding-block-sm`, `padding-block-md`, `padding-block-lg`, `padding-block-xl`, `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `font-family`, `line-height`, `title-font-family`, `title-font-size-xs`, `title-font-size-sm`, `title-font-size-md`, `title-font-size-lg`, `title-font-size-xl`, `title-font-weight`, `title-line-height`, `title-letter-spacing`, `description-font-family`, `description-font-size-xs`, `description-font-size-sm`, `description-font-size-md`, `description-font-size-lg`, `description-font-size-xl`, `description-line-height`, `description-fg`, `body-font-size-xs`, `body-font-size-sm`, `body-font-size-md`, `body-font-size-lg`, `body-font-size-xl`, `body-line-height`, `border-width`, `radius-sm`, `radius-md`, `radius-lg`, `header-gap`, `footer-gap`, `footer-padding-start`, `footer-border-fg`, `emerge-duration`, `emerge-ease`, `emerge-distance`, `hover-lift`, `hover-shadow`, `press-scale`, `press-duration`, `selected-ring-width`, `disabled-opacity`, `primary-solid`, `primary-text`, `primary-contrast`, `secondary-solid`, `secondary-text`, `secondary-contrast`, `neutral-solid`, `neutral-text`, `neutral-contrast`, `affirm-solid`, `affirm-text`, `affirm-contrast`, `fulfill-track`, `fulfill-border`, `fulfill-solid`, `fulfill-text`, `fulfill-contrast`, `risk-solid`, `risk-text`, `risk-contrast`, `threat-solid`, `threat-text`, `threat-contrast`, `loss-track`, `loss-border`, `loss-solid`, `loss-text`, `loss-contrast`, `primary-track`, `primary-border`, `secondary-track`, `secondary-border`, `neutral-track`, `neutral-border`, `affirm-track`, `affirm-border`, `risk-track`, `risk-border`, `threat-track`, `threat-border` · 5 privada(s) forward — `_palette-track`, `_palette-border`, `_palette-solid`, `_palette-text`, `_palette-contrast`
- **Eje `size`**: sí · **ficheros**: `card.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **77%** — 23 de 30 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **77%** — 23 de 30 knobs por token público
- **Knobs de apariencia**: 35 — público 23 · privado 2 · global 0 · literal 5 · sistema 5 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 27 pública(s) — `indicator-size-xs`, `indicator-size-sm`, `indicator-size-md`, `indicator-size-lg`, `indicator-size-xl`, `indicator-gap-xs`, `indicator-gap-sm`, `indicator-gap-md`, `indicator-gap-lg`, `indicator-gap-xl`, `indicator-size`, `indicator-gap`, `gap`, `radius`, `font-family`, `fg`, `inner-radius-inset`, `trigger-offset`, `frame-padding`, `border-width`, `border`, `surface-bg`, `vertical-block-size`, `indicator-group-padding-block`, `indicator-bg`, `indicator-radius`, `active-indicator-scale` · 2 privada(s) forward — `_palette-solid`, `_palette-element`
- **Eje `size`**: no · **ficheros**: `carousel.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **0%** — 0 de 1 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **0%** — 0 de 1 knobs por token público
- **Knobs de apariencia**: 1 — público 0 · privado 0 · global 0 · literal 1 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `cascade.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **89%** — 81 de 91 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **89%** — 81 de 91 knobs por token público
- **Knobs de apariencia**: 95 — público 81 · privado 0 · global 0 · literal 10 · sistema 4 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 45 pública(s) — `line-width`, `axis-width`, `grid-width`, `bar-radius`, `point-radius`, `area-opacity`, `slice-stroke-width`, `transition-duration`, `transition-ease`, `tooltip-bg`, `tooltip-border`, `tooltip-radius`, `tooltip-shadow`, `tooltip-padding`, `tooltip-gap`, `crosshair-fg`, `crosshair-width`, `caption-font-size`, `caption-fg`, `label-font-size`, `label-fg`, `label-font-weight`, `gauge-label-font-size`, `axis-fg`, `grid-fg`, `separator-fg`, `smith-boundary-fg`, `track-bg`, `track-height`, `track-radius`, `gap`, `legend-row-gap`, `legend-column-gap`, `legend-item-gap`, `swatch-size`, `swatch-radius`, `tooltip-swatch-size`, `bar-list-row-gap`, `bar-list-column-gap`, `bar-segment-gap`, `bar-segment-track-gap`, `bar-segment-track-radius`, `bar-segment-fill-min-inline-size`, `bar-segment-legend-row-gap`, `bar-segment-legend-column-gap`
- **Eje `size`**: no · **ficheros**: `chart.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **79%** — 31 de 39 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **79%** — 31 de 39 knobs por token público
- **Knobs de apariencia**: 44 — público 31 · privado 0 · global 3 · literal 5 · sistema 5 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 31 pública(s) — `gap`, `bg`, `border`, `border-width`, `focus-border`, `radius`, `padding-inline`, `padding-block`, `input-font-size`, `input-line-height`, `input-fg`, `input-placeholder-fg`, `input-padding-inline`, `input-padding-block`, `context-bg`, `context-accent`, `context-accent-size`, `context-font-size`, `context-fg`, `context-radius`, `context-padding-inline`, `context-padding-block`, `context-gap`, `attachments-gap`, `send-size`, `send-bg`, `send-fg`, `send-radius`, `transition-duration`, `transition-ease`, `disabled-opacity`
- **Eje `size`**: no · **ficheros**: `chat-composer.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 18 de 18 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 18 de 18 knobs por token público
- **Knobs de apariencia**: 18 — público 18 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 18 pública(s) — `bg`, `padding-inline`, `padding-block`, `item-gap`, `item-padding-inline`, `item-padding-block`, `item-radius`, `item-row-gap`, `title-font-size`, `title-font-weight`, `title-fg`, `title-unread-weight`, `preview-font-size`, `preview-fg`, `preview-unread-fg`, `meta-gap`, `meta-font-size`, `meta-fg`
- **Eje `size`**: no · **ficheros**: `chat-list.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **77%** — 30 de 39 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **77%** — 30 de 39 knobs por token público
- **Knobs de apariencia**: 42 — público 30 · privado 0 · global 4 · literal 5 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 31 pública(s) — `bg`, `padding-inline`, `padding-block`, `separator-gap`, `separator-font-size`, `separator-fg`, `separator-bg`, `separator-padding-inline`, `separator-padding-block`, `separator-radius`, `divider-fg`, `divider-line`, `divider-font-size`, `divider-gap`, `event-font-size`, `event-fg`, `event-padding-block`, `pill-bg`, `pill-fg`, `pill-font-size`, `pill-padding-inline`, `pill-height`, `pill-radius`, `pill-shadow`, `pill-offset`, `to-latest-size`, `to-latest-bg`, `to-latest-fg`, `to-latest-border`, `to-latest-shadow`, `to-latest-offset`
- **Eje `size`**: no · **ficheros**: `chat-log.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **84%** — 65 de 77 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **84%** — 65 de 77 knobs por token público
- **Knobs de apariencia**: 84 — público 65 · privado 0 · global 6 · literal 6 · sistema 7 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 75 pública(s) — `gap`, `row-gap-run`, `row-gap-group`, `gutter-inline-size`, `bubble-padding-inline-sm`, `bubble-padding-inline-md`, `bubble-padding-inline-lg`, `bubble-padding-block-sm`, `bubble-padding-block-md`, `bubble-padding-block-lg`, `bubble-radius`, `bubble-radius-run`, `bubble-tail-radius`, `bubble-max-inline-size`, `bubble-font-size-sm`, `bubble-font-size-md`, `bubble-font-size-lg`, `bubble-line-height`, `bubble-bg-in`, `bubble-fg-in`, `bubble-bg-out`, `bubble-fg-out`, `bubble-shadow`, `header-gap`, `header-font-size`, `header-font-weight`, `header-fg`, `meta-gap`, `meta-font-size`, `meta-fg`, `status-size`, `status-fg`, `read-status-fg`, `failed-status-fg`, `read-by-gap`, `read-by-font-size`, `read-by-fg`, `read-by-margin`, `emphasize-bg`, `emphasize-radius`, `emphasize-duration`, `reply-padding-inline`, `reply-padding-block`, `reply-accent-size`, `reply-radius`, `reply-bg`, `reply-accent`, `reply-font-size`, `reaction-gap`, `reaction-height`, `reaction-padding-inline`, `reaction-radius`, `reaction-font-size`, `reaction-bg`, `reaction-border`, `reaction-shadow`, `reaction-overlap`, `reaction-pressed-bg`, `reaction-pressed-border`, `reaction-pressed-fg`, `quick-react-gap`, `quick-react-pad`, `quick-react-size`, `quick-react-emoji-size`, `quick-react-hover-bg`, `quick-react-hover-scale`, `actions-bg`, `actions-border`, `actions-shadow`, `actions-radius`, `actions-padding`, `mentioned-bg`, `mentioned-accent`, `actions-gap`, `actions-offset`
- **Eje `size`**: sí · **ficheros**: `chat-message.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **89%** — 8 de 9 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **89%** — 8 de 9 knobs por token público
- **Knobs de apariencia**: 9 — público 8 · privado 0 · global 1 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 7 pública(s) — `gap`, `font-size`, `fg`, `min-block-size`, `dot-size`, `dot-gap`, `dot-fg`
- **Eje `size`**: no · **ficheros**: `chat-typing.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **59%** — 19 de 32 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **59%** — 19 de 32 knobs por token público
- **Knobs de apariencia**: 33 — público 19 · privado 8 · global 2 · literal 3 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 44 pública(s) — `size-xs-box-size`, `size-xs-indicator-size`, `size-xs-indicator-stroke`, `size-sm-box-size`, `size-sm-indicator-size`, `size-sm-indicator-stroke`, `size-md-box-size`, `size-md-indicator-size`, `size-md-indicator-stroke`, `size-lg-box-size`, `size-lg-indicator-size`, `size-lg-indicator-stroke`, `size-xl-box-size`, `size-xl-indicator-size`, `size-xl-indicator-stroke`, `radius`, `border-width`, `transition-duration`, `transition-ease`, `stroke-duration`, `stroke-ease`, `bg-off`, `border-off`, `hover-border-off`, `disabled-bg`, `disabled-border`, `disabled-opacity`, `indicator-fg`, `disabled-indicator-fg`, `primary-solid`, `primary-solid-hover`, `neutral-solid`, `neutral-solid-hover`, `secondary-solid`, `secondary-solid-hover`, `affirm-solid`, `affirm-solid-hover`, `group-gap`, `group-label-font-family`, `group-label-font-size`, `group-label-font-weight`, `group-label-line-height`, `group-label-fg`, `disabled-group-label-fg` · 3 privada(s) forward — `_palette-solid`, `_palette-solid-hover`, `_palette-text`
- **Eje `size`**: sí · **ficheros**: `checkbox.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **1%** — 3 de 237 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **1%** — 3 de 237 knobs por token público
- **Knobs de apariencia**: 244 — público 3 · privado 21 · global 202 · literal 11 · sistema 7 · excepción 1 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 9 pública(s) — `cell-min-block-sm`, `cell-min-block-md`, `cell-min-block-lg`, `num-row`, `lane-height-sm`, `lane-height-md`, `lane-height-lg`, `timegrid-block-size`, `disabled-opacity`
- **Eje `size`**: sí · **ficheros**: `chronos.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **63%** — 5 de 8 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **63%** — 5 de 8 knobs por token público
- **Knobs de apariencia**: 8 — público 5 · privado 2 · global 1 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 6 pública(s) — `indicator-gap`, `indicator-padding-block`, `indicator-padding-inline`, `indicator-radius`, `indicator-font-size`, `indicator-font-weight` · 2 privada(s) forward — `_palette-solid`, `_palette-element`
- **Eje `size`**: no · **ficheros**: `clipboard.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **81%** — 21 de 26 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **81%** — 21 de 26 knobs por token público
- **Knobs de apariencia**: 26 — público 21 · privado 2 · global 3 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 20 pública(s) — `radius`, `fg`, `border-width`, `border`, `surface-bg`, `header-gap`, `header-padding-inline`, `header-padding-block`, `header-bg`, `title-font-family`, `title-font-size`, `title-fg`, `lang-font-family`, `lang-font-size`, `lang-fg`, `lang-letter-spacing`, `copy-gap`, `copy-font-size`, `copy-fg`, `pre-padding`
- **Eje `size`**: no · **ficheros**: `code-block.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 7 de 7 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 7 de 7 knobs por token público
- **Knobs de apariencia**: 13 — público 7 · privado 0 · global 0 · literal 0 · sistema 6 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 6 pública(s) — `radius`, `soft-bg`, `border-width`, `border`, `padding-inline`, `padding-block` · 1 privada(s) forward — `_palette-text`
- **Eje `size`**: no · **ficheros**: `code.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **90%** — 9 de 10 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **90%** — 9 de 10 knobs por token público
- **Knobs de apariencia**: 12 — público 9 · privado 0 · global 1 · literal 0 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 11 pública(s) — `trigger-font-family`, `trigger-font-size`, `trigger-font-weight`, `trigger-fg`, `hover-trigger-fg`, `trigger-radius`, `trigger-padding`, `content-padding`, `transition-duration`, `transition-ease`, `disabled-opacity`
- **Eje `size`**: no · **ficheros**: `collapsible.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **56%** — 9 de 16 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **56%** — 9 de 16 knobs por token público
- **Knobs de apariencia**: 16 — público 9 · privado 0 · global 2 · literal 5 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 22 pública(s) — `segment-padding-inline-xs`, `segment-padding-inline-sm`, `segment-padding-inline-md`, `segment-padding-inline-lg`, `segment-padding-inline-xl`, `placeholder-fg`, `literal-fg`, `segment-radius`, `segment-fg`, `segment-invalid-fg`, `segment-readonly-bg`, `segment-readonly-fg`, `segment-readonly-decoration`, `swatch-size-xs`, `swatch-size-sm`, `swatch-size-md`, `swatch-size-lg`, `swatch-size-xl`, `format-select-fg`, `transition-duration`, `transition-ease`, `disabled-opacity`
- **Eje `size`**: sí · **ficheros**: `color-field.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **75%** — 59 de 79 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **75%** — 59 de 79 knobs por token público
- **Knobs de apariencia**: 82 — público 59 · privado 7 · global 2 · literal 11 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 71 pública(s) — `gap`, `control-gap`, `label-fg`, `trigger-font-family`, `trigger-line-height`, `value-font-family`, `value-font-weight`, `value-fg`, `value-line-height`, `swatch-border-width`, `channel-track-border-width`, `channel-track-border`, `channel-thumb-border-width`, `channel-thumb-border`, `channel-thumb-shadow`, `swatch-ring-gap`, `eye-dropper-border-width`, `content-width-sm`, `content-width-md`, `content-width-lg`, `trigger-height-sm`, `trigger-height-md`, `trigger-height-lg`, `trigger-padding-inline-sm`, `trigger-padding-inline-md`, `trigger-padding-inline-lg`, `trigger-gap`, `trigger-radius`, `trigger-border-width`, `trigger-border`, `trigger-bg`, `trigger-fg`, `trigger-hover-border`, `trigger-swatch-size-sm`, `trigger-swatch-size-md`, `trigger-swatch-size-lg`, `trigger-swatch-radius`, `area-height`, `area-radius`, `area-border-width`, `area-border`, `area-thumb-size`, `area-thumb-radius`, `area-thumb-border-width`, `area-thumb-border`, `area-thumb-shadow`, `transparency-cell`, `transparency-cell-alt`, `swatch-size-sm`, `swatch-size-md`, `swatch-size-lg`, `swatch-radius`, `swatch-border`, `swatch-checked-ring`, `swatch-gap`, `eye-dropper-size`, `eye-dropper-radius`, `eye-dropper-bg`, `eye-dropper-fg`, `eye-dropper-hover-fg`, `hue-0`, `hue-60`, `hue-120`, `hue-180`, `hue-240`, `hue-300`, `hue-360`, `saturation-floor`, `transition-duration`, `transition-ease`, `disabled-opacity` · 1 privada(s) forward — `_palette-border`
- **Eje `size`**: sí · **ficheros**: `color-picker-spectrum.css`, `color-picker.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **70%** — 7 de 10 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **70%** — 7 de 10 knobs por token público
- **Knobs de apariencia**: 10 — público 7 · privado 0 · global 3 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 12 pública(s) — `size-xs`, `size-sm`, `size-md`, `size-lg`, `size-xl`, `radius`, `border-width`, `border-fg`, `fill`, `checker-cell`, `checker-bg`, `checker-square`
- **Eje `size`**: sí · **ficheros**: `color-swatch.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **85%** — 76 de 89 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **85%** — 76 de 89 knobs por token público
- **Knobs de apariencia**: 97 — público 76 · privado 4 · global 3 · literal 6 · sistema 8 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 106 pública(s) — `content-z`, `control-height-xs`, `control-height-sm`, `control-height-md`, `control-height-lg`, `control-height-xl`, `control-font-size-xs`, `control-font-size-sm`, `control-font-size-md`, `control-font-size-lg`, `control-font-size-xl`, `control-gap-xs`, `control-gap-sm`, `control-gap-md`, `control-gap-lg`, `control-gap-xl`, `control-padding-inline-xs`, `control-padding-inline-sm`, `control-padding-inline-md`, `control-padding-inline-lg`, `control-padding-inline-xl`, `content-padding-block-xs`, `content-padding-block-sm`, `content-padding-block-md`, `content-padding-block-lg`, `content-padding-block-xl`, `content-padding-inline-xs`, `content-padding-inline-sm`, `content-padding-inline-md`, `content-padding-inline-lg`, `content-padding-inline-xl`, `content-font-size-xs`, `content-font-size-sm`, `content-font-size-md`, `content-font-size-lg`, `content-font-size-xl`, `control-height`, `control-font-size`, `control-gap`, `control-padding-inline`, `content-padding-block`, `content-padding-inline`, `content-font-size`, `gap`, `font-family`, `fg`, `border-width`, `control-radius`, `control-bg`, `control-border`, `control-shadow`, `control-fg`, `control-line-height`, `disabled-control-bg`, `disabled-control-border`, `disabled-control-fg`, `placeholder-fg`, `disabled-input-fg`, `trigger-size`, `trigger-radius`, `trigger-fg`, `indicator-size`, `content-min-width`, `content-max-width`, `content-max-height`, `content-radius`, `content-fg`, `content-font-family`, `content-line-height`, `viewport-gap`, `viewport-padding-block-end`, `scrollbar-inset`, `group-gap`, `group-padding-block`, `group-heading-padding-block`, `group-heading-padding-inline`, `group-heading-bg`, `group-heading-fg`, `group-heading-font-family`, `group-heading-font-size`, `group-heading-font-weight`, `group-heading-line-height`, `group-heading-letter-spacing`, `separator-thickness`, `separator-margin-block`, `separator-bg`, `item-gap`, `item-padding-inline`, `item-fg`, `disabled-item-fg`, `item-indicator-size`, `selected-tags-gap`, `selected-tags-margin-block-end`, `selected-tag-gap`, `selected-tag-padding-inline-start`, `selected-tag-padding-inline-end`, `selected-tag-inset`, `selected-tag-radius`, `selected-tag-bg`, `selected-tag-border`, `selected-tag-fg`, `selected-tag-line-height`, `selected-tag-font-size-offset`, `selected-tag-remove-size`, `selected-tag-remove-margin-inline-start`, `selected-tag-remove-radius` · 3 privada(s) forward — `_palette-track`, `_palette-border`, `_palette-text`
- **Eje `size`**: no · **ficheros**: `combobox.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **98%** — 49 de 50 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **98%** — 49 de 50 knobs por token público
- **Knobs de apariencia**: 52 — público 49 · privado 0 · global 0 · literal 1 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 57 pública(s) — `input-padding-inline-sm`, `input-padding-inline-md`, `input-padding-inline-lg`, `input-font-size-sm`, `input-font-size-md`, `input-font-size-lg`, `item-padding-inline-sm`, `item-padding-inline-md`, `item-padding-inline-lg`, `item-font-size-sm`, `item-font-size-md`, `item-font-size-lg`, `input-padding-inline`, `input-font-size`, `item-padding-inline`, `item-font-size`, `radius`, `font-family`, `line-height`, `fg`, `input-padding-block`, `input-margin`, `input-border-width`, `input-border`, `input-radius`, `input-bg`, `input-fg`, `input-placeholder-fg`, `focus-input-border`, `loading-height`, `loading-fg`, `viewport-max-block`, `viewport-gap`, `viewport-padding-inline`, `viewport-padding-block-end`, `scrollbar-inset`, `viewport-padding`, `group-gap`, `group-heading-padding-block`, `group-heading-fg`, `group-heading-font-size`, `group-heading-font-weight`, `group-heading-tracking`, `group-items-gap`, `item-gap`, `item-fg`, `item-icon-size`, `item-icon-fg`, `item-shortcut-gap`, `item-shortcut-fg`, `item-shortcut-font-size`, `selected-item-sub-fg`, `empty-padding-block`, `empty-fg`, `separator-height`, `separator-margin-block`, `separator-bg`
- **Eje `size`**: no · **ficheros**: `command.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 1 pública(s) — `max-width`
- **Eje `size`**: no · **ficheros**: `container.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **90%** — 27 de 30 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **90%** — 27 de 30 knobs por token público
- **Knobs de apariencia**: 33 — público 27 · privado 0 · global 0 · literal 3 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 29 pública(s) — `content-font-family`, `content-fg`, `item-fg`, `item-line-height`, `chevron-stroke`, `heading-fg`, `heading-font-weight`, `heading-letter-spacing`, `open-trigger-outline-width`, `open-trigger-outline`, `open-trigger-radius`, `content-min-width`, `content-max-height`, `content-padding`, `content-radius`, `content-font-size`, `item-gap`, `item-height`, `item-padding-inline`, `item-padding-block`, `item-radius`, `hover-item-bg`, `hover-item-fg`, `item-disabled-opacity`, `heading-padding-inline`, `heading-padding-block`, `heading-font-size`, `separator-bg`, `separator-margin-block`
- **Eje `size`**: no · **ficheros**: `context-menu.css`

@ -4,7 +4,7 @@
> Vista de conjunto: [README](./README.md) · método:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1.
- **Medido**: 2026-08-22 · **Alcance**: **—** (no hay knobs que medir)
- **Medido**: 2026-08-23 · **Alcance**: **—** (no hay knobs que medir)
- **Ficheros del componente**: `count-up.svelte`, `index.ts`, `README.md`, `types.ts` — **ningún `.css`**
- **Contrato en `lib/recipes/base.ts`**: sin entrada

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **60%** — 15 de 25 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **60%** — 15 de 25 knobs por token público
- **Knobs de apariencia**: 27 — público 15 · privado 0 · global 3 · literal 7 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 15 pública(s) — `viewport-bg`, `viewport-radius`, `mask-bg`, `grid-line`, `selection-border`, `selection-border-width`, `handle-size`, `handle-bg`, `handle-border`, `handle-border-width`, `zoom-gap`, `zoom-btn-size`, `zoom-btn-bg`, `zoom-btn-fg`, `zoom-btn-border`
- **Eje `size`**: no · **ficheros**: `cropper.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `css-field.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 11 de 11 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 11 de 11 knobs por token público
- **Knobs de apariencia**: 11 — público 11 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 21 pública(s) — `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `segment-padding-inline-xs`, `segment-padding-inline-sm`, `segment-padding-inline-md`, `segment-padding-inline-lg`, `segment-padding-inline-xl`, `placeholder-fg`, `literal-fg`, `segment-radius`, `segment-fg`, `segment-invalid-fg`, `segment-readonly-bg`, `segment-readonly-fg`, `segment-readonly-decoration`, `transition-duration`, `transition-ease`, `disabled-opacity`
- **Eje `size`**: sí · **ficheros**: `date-field.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **0%** — 0 de 2 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **0%** — 0 de 2 knobs por token público
- **Knobs de apariencia**: 2 — público 0 · privado 0 · global 0 · literal 2 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `date-picker.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **29%** — 2 de 7 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **29%** — 2 de 7 knobs por token público
- **Knobs de apariencia**: 8 — público 2 · privado 0 · global 4 · literal 1 · sistema 1 · excepción 1 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 3 pública(s) — `row-gap`, `separator-fg`, `separator-glyph`
- **Eje `size`**: no · **ficheros**: `date-range-field.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **40%** — 20 de 50 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **40%** — 20 de 50 knobs por token público
- **Knobs de apariencia**: 53 — público 20 · privado 9 · global 19 · literal 2 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 22 pública(s) — `accent-border`, `accent-track`, `accent-text`, `overview-gap`, `overview-width`, `overview-header-gap`, `overview-heading-fg`, `overview-heading-font-weight`, `overview-nav-size`, `overview-nav-radius`, `overview-nav-fg`, `overview-nav-font-size`, `overview-grid-gap`, `overview-cell-height`, `overview-cell-radius`, `overview-cell-fg`, `overview-cell-font-size`, `in-range-overview-cell-bg`, `in-range-overview-cell-fg`, `endpoint-overview-cell-bg`, `endpoint-overview-cell-fg`, `endpoint-overview-cell-border`
- **Eje `size`**: sí · **ficheros**: `date-range-picker-time.css`, `date-range-picker.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **73%** — 24 de 33 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **73%** — 24 de 33 knobs por token público
- **Knobs de apariencia**: 33 — público 24 · privado 4 · global 4 · literal 1 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 37 pública(s) — `overlay-bg`, `overlay-opacity`, `overlay-blur`, `overlay-z`, `content-z`, `content-fg`, `content-radius`, `content-max-height`, `content-max-height-sheet`, `content-width-sm`, `content-width-md`, `content-width-lg`, `content-width-xl`, `content-width-inset`, `content-full-inset`, `content-full-radius`, `content-position-inset`, `content-padding-sm`, `content-padding-md`, `content-padding-lg`, `content-padding-full`, `stack-gap`, `header-gap`, `footer-gap`, `footer-margin-top`, `title-font-family`, `title-font-size`, `title-font-weight`, `title-line-height`, `title-letter-spacing`, `title-fg`, `description-font-family`, `description-font-size`, `description-line-height`, `description-fg`, `close-size`, `close-inset`
- **Eje `size`**: sí · **ficheros**: `dialog.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 6 — público 0 · privado 0 · global 0 · literal 0 · sistema 6 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 0 pública(s) · 1 privada(s) forward — `_palette-text`
- **Eje `size`**: no · **ficheros**: `display.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **89%** — 8 de 9 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **89%** — 8 de 9 knobs por token público
- **Knobs de apariencia**: 16 — público 8 · privado 1 · global 0 · literal 0 · sistema 7 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 9 pública(s) — `preview-padding-block`, `preview-padding-inline`, `preview-radius`, `preview-border-width`, `preview-bg`, `preview-fg`, `preview-font-family`, `preview-font-size`, `preview-shadow` · 2 privada(s) forward — `_palette-solid`, `_palette-element`
- **Eje `size`**: no · **ficheros**: `drag-drop.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **72%** — 43 de 60 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **72%** — 43 de 60 knobs por token público
- **Knobs de apariencia**: 62 — público 43 · privado 8 · global 4 · literal 5 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 54 pública(s) — `trigger-gap`, `trigger-min-block-size`, `trigger-padding-inline`, `trigger-border-width`, `trigger-border`, `trigger-radius`, `trigger-bg`, `trigger-fg`, `trigger-font-weight`, `hover-trigger-bg`, `overlay-bg`, `overlay-blur`, `overlay-opacity`, `overlay-z`, `content-z`, `inline-z`, `handle-bg`, `active-handle-bg`, `handle-radius`, `handle-length`, `handle-thickness`, `handle-active-scale`, `handle-transition-duration`, `handle-transition-ease`, `content-fg`, `content-radius`, `content-shadow-dragging`, `content-ring-dragging-width`, `content-ring-dragging-fg`, `content-ring-dragging-offset`, `content-inset`, `content-width-sm`, `content-width-md`, `content-width-lg`, `content-height-sm`, `content-height-md`, `content-height-lg`, `content-padding-sm`, `content-padding-md`, `content-padding-lg`, `content-padding-full`, `stack-gap`, `header-gap`, `footer-gap`, `footer-margin-top`, `title-font-family`, `title-font-size`, `title-font-weight`, `title-line-height`, `title-fg`, `description-font-family`, `description-font-size`, `description-line-height`, `description-fg`
- **Eje `size`**: sí · **ficheros**: `drawer.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **57%** — 16 de 28 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **57%** — 16 de 28 knobs por token público
- **Knobs de apariencia**: 30 — público 16 · privado 0 · global 9 · literal 3 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 19 pública(s) — `content-z`, `content-min-width`, `content-max-height`, `content-padding`, `content-radius`, `content-font-size`, `item-gap`, `item-height`, `item-padding-inline`, `item-padding-block`, `item-radius`, `hover-item-bg`, `hover-item-fg`, `item-disabled-opacity`, `heading-padding-inline`, `heading-padding-block`, `heading-font-size`, `separator-bg`, `separator-margin-block`
- **Eje `size`**: no · **ficheros**: `dropdown-menu.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **75%** — 30 de 40 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **75%** — 30 de 40 knobs por token público
- **Knobs de apariencia**: 44 — público 30 · privado 7 · global 1 · literal 2 · sistema 4 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 56 pública(s) — `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `control-height-xs`, `control-height-sm`, `control-height-md`, `control-height-lg`, `control-height-xl`, `control-padding-inline-xs`, `control-padding-inline-sm`, `control-padding-inline-md`, `control-padding-inline-lg`, `control-padding-inline-xl`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `line-height`, `fg`, `area-min-inline-size`, `control-radius`, `control-border-width`, `control-border`, `hover-control-border`, `control-bg`, `control-shadow`, `placeholder-fg`, `trigger-gap`, `trigger-padding-inline`, `trigger-radius`, `trigger-border-width`, `trigger-border`, `hover-trigger-border`, `trigger-bg`, `trigger-fg`, `hover-trigger-fg`, `submit-fg`, `transition-duration`, `transition-ease`, `disabled-opacity`, `primary-solid`, `secondary-solid`, `neutral-solid`, `affirm-solid`, `risk-solid`, `threat-solid`, `primary-border`, `secondary-border`, `neutral-border`, `affirm-border`, `risk-border`, `threat-border` · 3 privada(s) forward — `_palette-solid`, `_palette-border`, `_palette-solid-hover`
- **Eje `size`**: sí · **ficheros**: `editable.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **61%** — 17 de 28 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **61%** — 17 de 28 knobs por token público
- **Knobs de apariencia**: 32 — público 17 · privado 0 · global 8 · literal 3 · sistema 4 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 17 pública(s) — `trigger-size`, `trigger-radius`, `trigger-font-size`, `panel-width`, `panel-gap`, `header-gap`, `grid-gap`, `grid-max-block-size`, `option-radius`, `option-font-size`, `footer-gap`, `footer-border-fg`, `preview-gap`, `preview-glyph-size`, `preview-name-font-size`, `preview-name-fg`, `preview-min-block-size`
- **Eje `size`**: no · **ficheros**: `emoji-picker.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **29%** — 5 de 17 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **29%** — 5 de 17 knobs por token público
- **Knobs de apariencia**: 17 — público 5 · privado 7 · global 5 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 6 pública(s) — `gap`, `actions-gap`, `media-bg`, `media-fg`, `media-radius`, `description-measure`
- **Eje `size`**: sí · **ficheros**: `empty-state.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **88%** — 14 de 16 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **88%** — 14 de 16 knobs por token público
- **Knobs de apariencia**: 16 — público 14 · privado 0 · global 2 · literal 0 · sistema 0 · excepción 1 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 10 pública(s) — `size-xs`, `size-sm`, `size-md`, `size-lg`, `icon-xs`, `icon-sm`, `icon-md`, `icon-lg`, `shadow`, `lift`
- **Eje `size`**: no · **ficheros**: `fab.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **94%** — 30 de 32 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **94%** — 30 de 32 knobs por token público
- **Knobs de apariencia**: 33 — público 30 · privado 0 · global 1 · literal 1 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 50 pública(s) — `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `article-padding-block-xs`, `article-padding-block-sm`, `article-padding-block-md`, `article-padding-block-lg`, `article-padding-block-xl`, `article-padding-inline-xs`, `article-padding-inline-sm`, `article-padding-inline-md`, `article-padding-inline-lg`, `article-padding-inline-xl`, `thread-indent-xs`, `thread-indent-sm`, `thread-indent-md`, `thread-indent-lg`, `thread-indent-xl`, `font-size`, `article-padding-block`, `article-padding-inline`, `thread-indent`, `radius`, `font-family`, `line-height`, `fg`, `border-width`, `divider`, `gap`, `surface-bg`, `article-gap`, `article-title-fg`, `article-title-font-weight`, `article-title-font-size-3`, `article-title-font-size-4`, `article-title-font-size-5`, `article-title-font-size-6`, `article-description-fg`, `thread-margin-block-start`, `thread-rail-width`, `sentinel-min-block-size`, `sentinel-fg`, `sentinel-font-size`, `sentinel-spinner-size`, `sentinel-spinner-width`, `sentinel-spinner-gap`, `sentinel-spinner-duration`, `sentinel-spinner-reduced-duration` · 2 privada(s) forward — `_palette-solid`, `_palette-element`
- **Eje `size`**: no · **ficheros**: `feed.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **0%** — 0 de 37 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **0%** — 0 de 37 knobs por token público
- **Knobs de apariencia**: 39 — público 0 · privado 0 · global 31 · literal 6 · sistema 2 · excepción 2 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `field-langs.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **98%** — 58 de 59 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **98%** — 58 de 59 knobs por token público
- **Knobs de apariencia**: 64 — público 58 · privado 1 · global 0 · literal 0 · sistema 5 · excepción 9 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 68 pública(s) — `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `font-family`, `label-gap`, `label-font-weight`, `label-line-height`, `label-fg`, `invalid-label-fg`, `disabled-label-fg`, `floating-label-top`, `floating-label-padding-inline`, `layout-column-gap`, `required-fg`, `optional-fg`, `optional-font-weight`, `control-height-xs`, `control-height-sm`, `control-height-md`, `control-height-lg`, `control-height-xl`, `segment-height`, `control-padding-inline-xs`, `control-padding-inline-sm`, `control-padding-inline-md`, `control-padding-inline-lg`, `control-padding-inline-xl`, `control-gap-xs`, `control-gap-sm`, `control-gap-md`, `control-gap-lg`, `control-gap-xl`, `control-font-size-xs`, `control-font-size-sm`, `control-font-size-md`, `control-font-size-lg`, `control-font-size-xl`, `control-line-height`, `control-font-weight`, `control-radius`, `control-border-width`, `control-border`, `hover-control-border`, `focus-control-border`, `invalid-control-border`, `control-bg`, `control-ghost-border`, `control-ghost-bg`, `control-bg-readonly`, `disabled-control-bg`, `control-fg`, `control-placeholder-fg`, `affix-fg`, `control-trigger-size`, `control-trigger-radius`, `control-trigger-fg`, `hover-control-trigger-fg`, `focus-control-trigger-fg`, `segment-active-bg`, `segment-active-text`, `message-line-height`, `helper-fg`, `error-fg`, `transition-duration`, `transition-ease`, `disabled-opacity` · 1 privada(s) forward — `_palette-text`
- **Eje `size`**: sí · **ficheros**: `field-control-trigger.css`, `field-segment-state.css`, `field.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **76%** — 45 de 59 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **76%** — 45 de 59 knobs por token público
- **Knobs de apariencia**: 61 — público 45 · privado 9 · global 1 · literal 4 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 98 pública(s) — `gap-sm`, `gap-md`, `gap-lg`, `padding-sm`, `padding-md`, `padding-lg`, `control-height-sm`, `control-height-md`, `control-height-lg`, `font-size-sm`, `font-size-md`, `font-size-lg`, `preview-size-sm`, `preview-size-md`, `preview-size-lg`, `font-family`, `line-height`, `fg`, `label-fg`, `label-font-weight`, `dropzone-gap`, `dropzone-min-height`, `dropzone-border-width`, `dropzone-border`, `dropzone-radius`, `dropzone-bg`, `dropzone-fg`, `button-gap`, `button-padding-inline`, `button-border-width`, `button-border`, `hover-button-border`, `button-radius`, `button-bg`, `button-fg`, `hover-button-fg`, `button-solid-fg`, `list-gap`, `item-gap`, `item-padding`, `item-border-width`, `item-border`, `item-radius`, `item-bg`, `item-shadow`, `preview-radius`, `preview-bg`, `preview-fg`, `item-name-fg`, `item-name-font-weight`, `item-size-fg`, `item-size-font-size`, `progress-height`, `progress-radius`, `progress-track-bg`, `transition-duration`, `transition-ease`, `disabled-opacity`, `primary-solid`, `primary-solid-hover`, `primary-text`, `secondary-solid`, `secondary-solid-hover`, `secondary-text`, `neutral-solid`, `neutral-solid-hover`, `neutral-text`, `affirm-solid`, `affirm-solid-hover`, `affirm-text`, `fulfill-solid`, `fulfill-solid-hover`, `fulfill-track`, `fulfill-border`, `fulfill-text`, `risk-solid`, `risk-solid-hover`, `risk-text`, `threat-solid`, `threat-solid-hover`, `threat-text`, `loss-solid`, `loss-solid-hover`, `loss-track`, `loss-border`, `loss-text`, `primary-track`, `primary-border`, `secondary-track`, `secondary-border`, `neutral-track`, `neutral-border`, `affirm-track`, `affirm-border`, `risk-track`, `risk-border`, `threat-track`, `threat-border` · 5 privada(s) forward — `_palette-solid`, `_palette-solid-hover`, `_palette-track`, `_palette-border`, `_palette-text`
- **Eje `size`**: sí · **ficheros**: `file-upload.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 2 de 2 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 2 de 2 knobs por token público
- **Knobs de apariencia**: 2 — público 2 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 7 pública(s) — `direction`, `align`, `justify`, `wrap`, `align-content`, `row-gap`, `column-gap`
- **Eje `size`**: no · **ficheros**: `flex.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **84%** — 41 de 49 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **84%** — 41 de 49 knobs por token público
- **Knobs de apariencia**: 53 — público 41 · privado 3 · global 0 · literal 5 · sistema 4 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 40 pública(s) — `outline-bg`, `outline-border`, `ghost-bg`, `ghost-border`, `ghost-shadow`, `action-radius`, `action-fg`, `action-font-size`, `hover-action-bg`, `hover-action-fg`, `resize-grip-fg`, `resize-grip-radius`, `bg`, `border`, `border-width`, `radius`, `shadow`, `shadow-topmost`, `active-shadow`, `fg`, `font-family`, `font-size`, `line-height`, `header-bg`, `header-padding-inline`, `header-padding-block`, `header-gap`, `controls-gap`, `title-font-size`, `title-font-weight`, `title-fg`, `body-padding-inline`, `body-padding-block`, `resize-size`, `resize-edge`, `button-size`, `grip-size`, `accent`, `transition-duration`, `transition-ease` · 1 privada(s) forward — `_palette-border`
- **Eje `size`**: no · **ficheros**: `float-panel.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 1 pública(s) — `gap`
- **Eje `size`**: no · **ficheros**: `float.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **71%** — 36 de 51 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **71%** — 36 de 51 knobs por token público
- **Knobs de apariencia**: 52 — público 36 · privado 8 · global 5 · literal 2 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 54 pública(s) — `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `font-family`, `fg`, `radius`, `border-width`, `panel-padding`, `panel-border`, `panel-bg`, `panel-shadow`, `grid-min`, `grid-column-gap`, `action-height-xs`, `action-height-sm`, `action-height-md`, `action-height-lg`, `action-height-xl`, `action-padding-inline-xs`, `action-padding-inline-sm`, `action-padding-inline-md`, `action-padding-inline-lg`, `action-padding-inline-xl`, `action-font-size-xs`, `action-font-size-sm`, `action-font-size-md`, `action-font-size-lg`, `action-font-size-xl`, `action-font-weight`, `action-line-height`, `action-gap`, `action-radius`, `action-border-width`, `error-summary-padding`, `error-summary-border-width`, `error-summary-radius`, `error-summary-font-size`, `error-summary-line-height`, `error-summary-list-indent`, `link-underline-offset`, `auto-fields-gap`, `auto-fields-array-padding`, `auto-fields-border-width`, `auto-fields-radius`, `auto-fields-item-gap`, `auto-fields-item-padding`, `widget-padding-inline`, `widget-radius`, `widget-border-width`, `transition-duration`, `transition-ease`, `disabled-opacity` · 4 privada(s) forward — `_palette-solid`, `_palette-solid-hover`, `_palette-border`, `_palette-contrast`
- **Eje `size`**: sí · **ficheros**: `form.css`

@ -4,7 +4,7 @@
> Vista de conjunto: [README](./README.md) · método:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1.
- **Medido**: 2026-08-22 · **Alcance**: **—** (no hay knobs que medir)
- **Medido**: 2026-08-23 · **Alcance**: **—** (no hay knobs que medir)
- **Ficheros del componente**: `format-date.svelte`, `index.ts`, `README.md`, `types.ts` — **ningún `.css`**
- **Contrato en `lib/recipes/base.ts`**: sin entrada

@ -4,7 +4,7 @@
> Vista de conjunto: [README](./README.md) · método:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1.
- **Medido**: 2026-08-22 · **Alcance**: **—** (no hay knobs que medir)
- **Medido**: 2026-08-23 · **Alcance**: **—** (no hay knobs que medir)
- **Ficheros del componente**: `format-number.svelte`, `index.ts`, `README.md`, `types.ts` — **ningún `.css`**
- **Contrato en `lib/recipes/base.ts`**: sin entrada

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **93%** — 52 de 56 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **93%** — 52 de 56 knobs por token público
- **Knobs de apariencia**: 60 — público 52 · privado 0 · global 1 · literal 3 · sistema 4 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 72 pública(s) — `preview-height-sm`, `preview-height-md`, `preview-height-lg`, `track-height-sm`, `track-height-md`, `track-height-lg`, `stop-size-sm`, `stop-size-md`, `stop-size-lg`, `gap-sm`, `gap-md`, `gap-lg`, `padding-block-sm`, `padding-block-md`, `padding-block-lg`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `preview-height`, `track-height`, `stop-size`, `gap`, `padding-block`, `padding-inline`, `radius`, `bg`, `border`, `border-width`, `preview-radius`, `preview-bg`, `preview-border`, `track-radius`, `track-border`, `checker-fg`, `checker-cell`, `stop-radius`, `stop-bg`, `stop-ring`, `stop-ring-width`, `stop-shadow`, `selected-stop-shadow`, `stop-actions-gap`, `angle-dial-gap`, `angle-dial-head-gap`, `label-font-size`, `label-fg`, `value-font-size`, `value-fg`, `stop-color-title-font-size`, `stop-color-title-font-weight`, `stop-color-title-fg`, `stop-color-sliders-gap`, `stop-list-gap`, `stop-list-row-gap`, `stop-list-value-gap`, `stop-list-value-padding-block`, `stop-list-value-padding-inline`, `stop-list-value-radius`, `stop-list-value-bg`, `stop-list-value-fg`, `stop-list-value-border`, `stop-list-value-font-size`, `selected-stop-list-value-border`, `stop-list-pos-fg`, `presets-gap`, `preset-grid-gap`, `preset-height`, `preset-radius`, `preset-border`, `hover-preset-border`, `selected-preset-border`, `selected-preset-outline`
- **Eje `size`**: no · **ficheros**: `gradient-builder.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **88%** — 23 de 26 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **88%** — 23 de 26 knobs por token público
- **Knobs de apariencia**: 27 — público 23 · privado 0 · global 2 · literal 1 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 25 pública(s) — `chip-size-sm`, `chip-size-md`, `chip-size-lg`, `chip-size`, `gap`, `trigger-gap`, `border-width`, `chip-radius`, `chip-border`, `content-width-sm`, `content-width-md`, `content-width-lg`, `stoplist-max-block`, `stoplist-scrollbar-size`, `stoplist-scrollbar-inset`, `presets-panel-width`, `presets-gap`, `presets-min-column`, `preset-height`, `preset-radius`, `preset-border`, `hover-preset-border`, `selected-preset-border`, `selected-preset-outline-offset`, `actions-gap`
- **Eje `size`**: no · **ficheros**: `gradient-picker.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **85%** — 22 de 26 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **85%** — 22 de 26 knobs por token público
- **Knobs de apariencia**: 31 — público 22 · privado 2 · global 1 · literal 1 · sistema 5 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 38 pública(s) — `row-height-xs`, `row-height-sm`, `row-height-md`, `row-height-lg`, `row-height-xl`, `row-padding-inline-xs`, `row-padding-inline-sm`, `row-padding-inline-md`, `row-padding-inline-lg`, `row-padding-inline-xl`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `row-height`, `row-padding-inline`, `font-size`, `gap`, `padding`, `border-width`, `border`, `radius`, `bg`, `fg`, `font-family`, `line-height`, `max-block`, `invalid-border`, `row-gap`, `row-padding-block`, `row-radius`, `row-fg`, `disabled-row-fg`, `selection-checkbox-size`, `selection-checkbox-border`, `selection-checkbox-radius`, `checked-selection-checkbox-fg` · 1 privada(s) forward — `_palette-solid`
- **Eje `size`**: no · **ficheros**: `grid-list.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 2 de 2 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 2 de 2 knobs por token público
- **Knobs de apariencia**: 2 — público 2 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 13 pública(s) — `template-columns`, `template-rows`, `auto-columns`, `auto-rows`, `auto-flow`, `align`, `justify`, `align-content`, `place-items`, `place-content`, `gap`, `row-gap`, `column-gap`
- **Eje `size`**: no · **ficheros**: `grid.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 1 pública(s) — `attached-overlap`
- **Eje `size`**: no · **ficheros**: `group.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 36 — público 0 · privado 0 · global 0 · literal 0 · sistema 36 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 0 pública(s) · 1 privada(s) forward — `_palette-text`
- **Eje `size`**: no · **ficheros**: `heading.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `highlight.css`

@ -4,7 +4,7 @@
> Vista de conjunto: [README](./README.md) · método:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1.
- **Medido**: 2026-08-22 · **Alcance**: **—** (no hay knobs que medir)
- **Medido**: 2026-08-23 · **Alcance**: **—** (no hay knobs que medir)
- **Ficheros del componente**: `icon-button.svelte`, `index.ts`, `README.md`, `types.ts` — **ningún `.css`**
- **Contrato en `lib/recipes/base.ts`**: sin entrada

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 2 pública(s) — `size`, `stroke-width`
- **Eje `size`**: no · **ficheros**: `icon.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **67%** — 10 de 15 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **67%** — 10 de 15 knobs por token público
- **Knobs de apariencia**: 18 — público 10 · privado 0 · global 4 · literal 1 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 12 pública(s) — `gap`, `row-gap`, `label-fg`, `label-font-size`, `label-font-weight`, `value-fg`, `value-font-size`, `value-font-family`, `reset-gap`, `reset-fg`, `reset-font-size`, `hue-track`
- **Eje `size`**: no · **ficheros**: `image-adjustments.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **71%** — 12 de 17 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **71%** — 12 de 17 knobs por token público
- **Knobs de apariencia**: 20 — público 12 · privado 0 · global 1 · literal 4 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 13 pública(s) — `gap`, `preview-radius`, `preview-bg`, `preview-border`, `preview-aspect`, `toolbar-gap`, `toolbar-inset`, `button-size`, `button-bg`, `button-fg`, `button-border`, `button-radius`, `button-font-size`
- **Eje `size`**: no · **ficheros**: `image-picker.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **60%** — 21 de 35 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **60%** — 21 de 35 knobs por token público
- **Knobs de apariencia**: 35 — público 21 · privado 1 · global 1 · literal 12 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 22 pública(s) — `size-xs`, `size-sm`, `size-md`, `size-lg`, `size-xl`, `radius-none`, `radius-sm`, `radius-md`, `radius-lg`, `radius-full`, `fade-duration`, `fade-ease`, `placeholder-base`, `shimmer-duration`, `font-family`, `fallback-fg`, `fallback-font-size`, `fallback-line-height`, `error-bg`, `error-fg`, `error-font-size`, `error-line-height` · 1 privada(s) forward — `_palette-track`
- **Eje `size`**: sí · **ficheros**: `image.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **86%** — 12 de 14 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **86%** — 12 de 14 knobs por token público
- **Knobs de apariencia**: 14 — público 12 · privado 0 · global 1 · literal 1 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 13 pública(s) — `font-size`, `font-weight`, `letter-spacing`, `fg`, `radius`, `padding-inline`, `padding-block`, `min-width`, `border-width`, `border`, `surface-bg`, `surface-border-block-end-width`, `surface-shadow`
- **Eje `size`**: no · **ficheros**: `kbd.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **78%** — 18 de 23 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **78%** — 18 de 23 knobs por token público
- **Knobs de apariencia**: 26 — público 18 · privado 1 · global 1 · literal 3 · sistema 3 · excepción 1 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 33 pública(s) — `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `diameter-sm`, `diameter-md`, `diameter-lg`, `diameter-xl`, `label-font-size-sm`, `label-font-size-md`, `label-font-size-lg`, `label-font-size-xl`, `value-font-size-sm`, `value-font-size-md`, `value-font-size-lg`, `value-font-size-xl`, `gap`, `diameter`, `label-font-size`, `value-font-size`, `radius`, `shadow`, `dragging-shadow`, `track-bg`, `face-bg`, `arc-width`, `pointer-inset`, `pointer-width`, `pointer-bg`, `indicator-radius`, `value-fg`, `label-fg`, `label-line-height`
- **Eje `size`**: no · **ficheros**: `knob.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 2 de 2 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 2 de 2 knobs por token público
- **Knobs de apariencia**: 8 — público 2 · privado 0 · global 0 · literal 0 · sistema 6 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 2 pública(s) — `gap`, `disabled-fg` · 1 privada(s) forward — `_palette-text`
- **Eje `size`**: no · **ficheros**: `label.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **100%** — 14 de 14 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 14 de 14 knobs por token público
- **Knobs de apariencia**: 17 — público 14 · privado 0 · global 0 · literal 0 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 35 pública(s) — `padding-block-xs`, `padding-block-sm`, `padding-block-md`, `padding-block-lg`, `padding-block-xl`, `padding-inline-xs`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `padding-inline-xl`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `min-width-xs`, `min-width-sm`, `min-width-md`, `min-width-lg`, `min-width-xl`, `padding-block`, `padding-inline`, `font-size`, `min-width`, `max-width`, `gap`, `radius`, `fg`, `font-weight`, `font-family`, `line-height`, `trigger-radius`, `trigger-fg`, `hover-trigger-fg`, `trigger-underline`
- **Eje `size`**: no · **ficheros**: `link-preview.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **36%** — 4 de 11 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **36%** — 4 de 11 knobs por token público
- **Knobs de apariencia**: 14 — público 4 · privado 4 · global 1 · literal 2 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 5 pública(s) — `radius`, `gap`, `external-icon-size`, `underline-width`, `underline-offset` · 2 privada(s) forward — `_palette-text`, `_palette-solid-hover`
- **Eje `size`**: no · **ficheros**: `link.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **68%** — 23 de 34 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **68%** — 23 de 34 knobs por token público
- **Knobs de apariencia**: 37 — público 23 · privado 9 · global 1 · literal 1 · sistema 3 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 21 pública(s) — `gap`, `padding`, `radius`, `border-width`, `border`, `bg`, `fg`, `font-family`, `line-height`, `max-block-size`, `invalid-border`, `item-radius`, `item-fg`, `disabled-item-fg`, `item-indicator-size`, `group-gap`, `group-label-padding-block`, `group-label-fg`, `group-label-font-size`, `group-label-font-weight`, `group-label-tracking` · 2 privada(s) forward — `_palette-solid`, `_palette-element`
- **Eje `size`**: no · **ficheros**: `listbox.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **60%** — 3 de 5 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **60%** — 3 de 5 knobs por token público
- **Knobs de apariencia**: 5 — público 3 · privado 2 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 3 pública(s) — `padding-inline`, `padding-block`, `radius` · 2 privada(s) forward — `_palette-element`, `_palette-text`
- **Eje `size`**: no · **ficheros**: `mark.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **—** — 0 de 0 knobs por token público
- **Knobs de apariencia**: 0 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `mask-field.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **88%** — 43 de 49 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **88%** — 43 de 49 knobs por token público
- **Knobs de apariencia**: 49 — público 43 · privado 0 · global 0 · literal 6 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 61 pública(s) — `accent`, `accent-strong`, `bg`, `radius`, `fg`, `fg-muted`, `glass`, `border`, `scrim`, `scrim-height`, `track`, `buffered-bg`, `captions-bg`, `captions-fg`, `captions-radius`, `captions-gap`, `captions-padding-block`, `captions-padding-inline`, `title-font-size`, `title-font-weight`, `title-padding-block`, `title-padding-inline`, `buffering-size`, `buffering-border-width`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `padding-block-sm`, `padding-block-md`, `padding-block-lg`, `padding-block-xl`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `padding-inline-xl`, `time-font-size-sm`, `time-font-size-md`, `time-font-size-lg`, `time-font-size-xl`, `control-height-sm`, `control-height-md`, `control-height-lg`, `control-height-xl`, `gap`, `padding-block`, `padding-inline`, `time-font-size`, `control-height`, `volume-width`, `volume-vertical-length`, `time-slider-min-width`, `rate-button-min-width`, `buffering-radius`, `captions-line-height`, `time-font-family`, `time-padding-inline`, `audio-title-padding-block`, `audio-title-padding-inline`, `volume-float-padding-block`, `volume-float-padding-inline`
- **Eje `size`**: no · **ficheros**: `media-player.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **38%** — 3 de 8 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **38%** — 3 de 8 knobs por token público
- **Knobs de apariencia**: 8 — público 3 · privado 0 · global 1 · literal 4 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 3 pública(s) — `gap`, `stagger-step`, `backdrop-bg`
- **Eje `size`**: sí · **ficheros**: `menu-dial.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **88%** — 23 de 26 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **88%** — 23 de 26 knobs por token público
- **Knobs de apariencia**: 27 — público 23 · privado 0 · global 3 · literal 0 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 35 pública(s) — `bg`, `border-fg`, `border-width`, `radius`, `gap-sm`, `gap-md`, `gap-lg`, `padding-sm`, `padding-md`, `padding-lg`, `height-sm`, `height-md`, `height-lg`, `trigger-fg`, `trigger-font-family`, `trigger-font-weight`, `trigger-line-height`, `trigger-font-size-sm`, `trigger-font-size-md`, `trigger-font-size-lg`, `trigger-padding-inline-sm`, `trigger-padding-inline-md`, `trigger-padding-inline-lg`, `open-trigger-bg`, `open-trigger-fg`, `disabled-trigger-fg`, `panel-z`, `panel-min-width`, `panel-max-height`, `panel-padding`, `panel-radius`, `panel-fg`, `panel-font-size-sm`, `panel-font-size-md`, `panel-font-size-lg`
- **Eje `size`**: sí · **ficheros**: `menubar.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **64%** — 9 de 14 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **64%** — 9 de 14 knobs por token público
- **Knobs de apariencia**: 14 — público 9 · privado 1 · global 2 · literal 2 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 28 pública(s) — `height-xs`, `height-sm`, `height-md`, `height-lg`, `height-xl`, `radius-xs`, `radius-sm`, `radius-md`, `radius-lg`, `radius-xl`, `ring-size-xs`, `ring-size-sm`, `ring-size-md`, `ring-size-lg`, `ring-size-xl`, `ring-thickness-xs`, `ring-thickness-sm`, `ring-thickness-md`, `ring-thickness-lg`, `ring-thickness-xl`, `track-bg`, `ring-track-bg`, `ring-center-bg`, `indicator-bg-below`, `indicator-bg-optimum`, `indicator-bg-above`, `transition-duration`, `transition-ease`
- **Eje `size`**: sí · **ficheros**: `meter.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **82%** — 41 de 50 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **82%** — 41 de 50 knobs por token público
- **Knobs de apariencia**: 50 — público 41 · privado 5 · global 0 · literal 4 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 72 pública(s) — `trend-gap`, `icon-circle-radius`, `icon-rounded-radius`, `icon-square-radius`, `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `gap-xxl`, `icon-gap-xs`, `icon-gap-sm`, `icon-gap-md`, `icon-gap-lg`, `icon-gap-xl`, `icon-gap-xxl`, `icon-box-xs`, `icon-box-sm`, `icon-box-md`, `icon-box-lg`, `icon-box-xl`, `icon-box-xxl`, `icon-border-width`, `icon-bg`, `icon-fg`, `label-font-family`, `label-font-size-xs`, `label-font-size-sm`, `label-font-size-md`, `label-font-size-lg`, `label-font-size-xl`, `label-font-size-xxl`, `label-font-weight`, `label-fg`, `label-line-height`, `label-letter-spacing`, `value-font-family`, `value-font-size-xs`, `value-font-size-sm`, `value-font-size-md`, `value-font-size-lg`, `value-font-size-xl`, `value-font-size-xxl`, `value-font-weight`, `value-fg`, `value-line-height`, `value-letter-spacing`, `value-font-feature`, `description-font-family`, `description-font-size-xs`, `description-font-size-sm`, `description-font-size-md`, `description-font-size-lg`, `description-font-size-xl`, `description-font-size-xxl`, `description-fg`, `description-line-height`, `chart-margin-block-start`, `chart-right-width`, `progress-margin-block-start`, `progress-gap`, `gauge-value-font-size`, `gauge-value-font-weight`, `gauge-value-fg`, `actions-gap`, `actions-margin-block-start`, `actions-padding-block-start`, `actions-border-fg`, `flash-duration`, `flash-ease`, `flash-radius`, `flash-inset` · 5 privada(s) forward — `_palette-track`, `_palette-solid`, `_palette-text`, `_palette-contrast`, `_palette-border`
- **Eje `size`**: sí · **ficheros**: `metrics.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **38%** — 11 de 29 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **38%** — 11 de 29 knobs por token público
- **Knobs de apariencia**: 29 — público 11 · privado 0 · global 13 · literal 5 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `mockup.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **0%** — 0 de 12 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **0%** — 0 de 12 knobs por token público
- **Knobs de apariencia**: 61 — público 0 · privado 7 · global 0 · literal 5 · sistema 49 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 0 pública(s) · 5 privada(s) forward — `_palette-solid`, `_palette-solid-hover`, `_palette-track`, `_palette-border`, `_palette-text`
- **Eje `size`**: no · **ficheros**: `month-grid.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **0%** — 0 de 1 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **0%** — 0 de 1 knobs por token público
- **Knobs de apariencia**: 1 — público 0 · privado 0 · global 0 · literal 1 · sistema 0 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): **sin entrada en `base.ts`**
- **Eje `size`**: no · **ficheros**: `motion.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **74%** — 56 de 76 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **74%** — 56 de 76 knobs por token público
- **Knobs de apariencia**: 77 — público 56 · privado 0 · global 14 · literal 6 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 62 pública(s) — `band-height-sm`, `band-height-md`, `band-height-lg`, `knob-size-sm`, `knob-size-md`, `knob-size-lg`, `band-height`, `knob-size`, `panel-gap-sm`, `panel-gap-md`, `panel-gap-lg`, `panel-gap`, `band-radius`, `band-border`, `band-border-width`, `line-width`, `line-radius`, `knob-radius`, `knob-shadow`, `knob-focus-ring`, `knob-focus-ring-offset`, `ticks-inset-inline`, `ticks-inset-block-end`, `tick-font-size`, `tick-font-family`, `display-gap`, `time-font-family`, `time-font-size`, `time-font-weight`, `time-letter-spacing`, `meridiem-margin-inline-start`, `meridiem-font-size`, `meridiem-font-weight`, `meridiem-fg`, `period-gap`, `period-font-size`, `period-font-weight`, `period-fg`, `steppers-gap`, `stepper-group-gap`, `stepper-label-font-size`, `stepper-label-font-weight`, `stepper-label-fg`, `stepper-label-letter-spacing`, `periods-gap`, `periods-margin-block`, `chip-font-size`, `trigger-gap`, `trigger-min-width`, `trigger-padding-block`, `trigger-padding-inline`, `trigger-bg`, `trigger-fg`, `trigger-border`, `trigger-border-width`, `trigger-radius`, `trigger-font-size`, `hover-trigger-border`, `open-trigger-border`, `open-trigger-ring`, `trigger-value-empty-fg`, `trigger-icon-fg`
- **Eje `size`**: sí · **ficheros**: `natural-time-picker.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-22 · **Alcance**: **96%** — 22 de 23 knobs por token público
- **Medido**: 2026-08-23 · **Alcance**: **96%** — 22 de 23 knobs por token público
- **Knobs de apariencia**: 24 — público 22 · privado 0 · global 0 · literal 1 · sistema 1 · excepción 1 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 18 pública(s) — `indent`, `font-size`, `line-height`, `row-gap`, `row-padding-block`, `row-padding-inline-end`, `row-radius`, `row-fg`, `hover-row-fg`, `active-row-fg`, `active-row-font-weight`, `disabled-row-fg`, `trail-row-fg`, `trigger-min-inline-size`, `trigger-padding-inline`, `badge-padding-inline-start`, `chevron-size`, `chevron-stroke`
- **Eje `size`**: no · **ficheros**: `nav-tree.css`

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save

Powered by TurnKey Linux.