4 claves en una entrada NUEVA de `recipes/base.ts`. Censo 0 % → 33 %.
**Es layout, no cromo** — la receta lo dice de entrada y la medición lo
confirma: una pista alta cuyo viewport pegajoso fija el medio a sangre mientras
la pista rueda. Lo único que pinta es el rótulo de carga, y ése es el contrato
entero: su separación del borde inferior, el tipo, el tracking y la tinta.
**`--_scroll-frames-viewport-block-size` se queda privado**: es la escotilla
que el consumidor sobrescribe para encajar el viewport en un contenedor
(`100%`) en vez de en la ventana (`100vh`), y su fallback es geometría de
LAYOUT, no un valor de tema — quien lo mueve es el sitio de uso, no el tema.
Con los `100%` del medio y de la pista (identidad, D-TH.2), el `line-height: 1`
del rótulo y el `opacity` del sistema, forman el 67 % que no alcanza, y es
correcto que no lo haga.
Artefactos y gates:
- Sonda antes/después = 0 diffs en 580 valores × 7 estados.
- R-5.4: 0/4, los cuatro adjudicados con su medición — el rótulo sólo existe
mientras se decodifican los fotogramas (0 nodos una vez cargado, contados) y
forzándolo los cuatro mueven (24→1234px, 12→99px, 1.2→9px, rgb(1,2,3)).
- censo --only 33 % · component:audit PASS · suite eidos sin rojos nuevos ·
rtl:check 0 · docs:check 0 · check por fichero limpio.
- README con «Talla y tema» y tab `Tokens` en la demo (4 claves).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
'the time row is CLASS-hooked (.picker-time-row) and the date-picker demo does not render it; the guard filters nodes by attribute, so it cannot see it either way (§13 class-hook debt). Forced → reaches (gap/padding → 1234px, border 1→9px + rgb(7,8,9), label → rgb(10,11,12) / 99px)'
},
'scroll-frames':{
'loader-inset-block-end':
'the loading caption only exists while frames are decoding (0 nodes once loaded, counted); forced → reaches (24 → 1234px)',
'loader-font-size':
'the loading caption only exists while frames are decoding (0 nodes once loaded, counted); forced → reaches (12 → 99px)',
'loader-letter-spacing':
'the loading caption only exists while frames are decoding (0 nodes once loaded, counted); forced → reaches (1.2 → 9px)',
'loader-fg':
'the loading caption only exists while frames are decoding (0 nodes once loaded, counted); forced → reaches (rgb(1,2,3))'
},
skeleton:{
'line-radius':
"only the `text` shape renders [data-skeleton-line]; the demo mounts `rect` (0 lines, counted). Forced shape='text' → reaches (4 → 1234px)"