/** * theming-sentinel-exceptions — the written adjudications R-5.4 requires. * * A public token the sentinel reports as "no effect" is EITHER a lie (retire * it) OR its silence has a measured reason that lives here, one line per * token: the part is conditional and the demo does not mount it, the state * needs forcing, the consumer is a pseudo-element or a composed component the * instrument cannot read, the value sits behind a media query. "Forced → * reaches" means the adjudication PROVED the token alive by mounting what it * needs; an instrument-limit entry names the limit (they are also registered * in next-features §13). * * An entry whose token starts moving again is reported as STALE by the guard — * prune it (a stale exception is the same debt as a stale allowlist row). * * All entries below were measured during the F2-A adversarial review * (2026-08-21) unless dated otherwise. */ const PLANE_SUPERSEDED = 'SUPERSEDED by the depth plane: the part carries data-depth=overlay, and [data-depth=overlay] declares this property at the same specificity (0,1,0) and LATER in the cascade, so the recipe key is bypassed (see next-features 12.9, measured on tooltip, popover and float-panel)'; export const SENTINEL_EXCEPTIONS: Record> = { background: { // 2026-08-23. Its parts are independent OPT-IN layers and only ONE pattern // renders at a time, so the default stage moved 3 of 37 tokens. The guard // now switches the scrim on and sweeps `data-pattern` (18/37); what is // left is measured here, forcing the attribute on the REAL layer — never // on a node built by hand. // // The mask: the guard does not read `mask-image`, so both read dead while // being perfectly alive (instrument gap, next-features §13). 'fade-size': 'the guard does not snapshot mask-image; measured by hand → reaches (the radial mask changes)', 'fade-at': 'the guard does not snapshot mask-image; measured by hand → reaches (at 50% 35% → at 11% 50%)', // The ink context: only under `on='dark'` / `on='light'`. 'scrim-fg-over-dark': "only under on='dark'; forced → reaches (the veil colour changes)", 'scrim-fg-over-light': "only under on='light'; forced → reaches (the veil colour changes)", // Two scales where only the step in force paints (the `section` / `qr-code` // class): every step measured one by one on the real scrim layer. 'scrim-blur-sm': 'only the step in force paints; forced data-blur=sm → reaches (4px → 33px)', 'scrim-blur-md': 'only the step in force paints; forced data-blur=md → reaches (8px → 33px)', 'scrim-blur-lg': 'only the step in force paints; forced data-blur=lg → reaches (12px → 33px)', 'scrim-blur-xxl': 'only the step in force paints; forced data-blur=xxl → reaches (24px → 33px)', 'scrim-strength-xs': 'only the step in force paints; forced data-strength=xs → reaches (alpha 0.08 → 0.9)', 'scrim-strength-sm': 'only the step in force paints; forced data-strength=sm → reaches (alpha 0.13 → 0.9)', 'scrim-strength-lg': 'only the step in force paints; forced data-strength=lg → reaches (alpha 0.4 → 0.9)', 'scrim-strength-xl': 'only the step in force paints; forced data-strength=xl → reaches (alpha 0.7 → 0.9)', // A gradient layer EXCLUDES a pattern layer, so the sweep cannot have both. 'gradient-drift-duration': 'the gradient layer is exclusive with the pattern one the sweep needs; forced data-kind=gradient → reaches (24s → 42s)', // The spotlight is off on the default stage and, once on, it repaints the // pattern layer it shares a node with — measured on its own pass. 'spotlight-size': 'spotlight is off in the demo; forced data-spotlight → reaches (40% 40% → 42px)', 'spotlight-strength': 'spotlight is off in the demo; forced data-spotlight → reaches (the mix stop moves)', 'spotlight-fg': 'spotlight is off AND the demo layer carries data-color, where --palette-solid wins by design; forced data-spotlight with no data-color → reaches', // Structural, not conditional: the travel only enters through the // scroll-linked `background-parallax` keyframes, which need a scroll // timeline the measured stage does not have. 'parallax-travel': 'the demo boots at speed 0, so no layer carries data-parallax; forced data-parallax + speed 1 on the real layer, the scroll-linked translate follows it (14.6 -> 60.5 px at the same scrollY). The guard would not see it anyway: translate / transform are not in its property snapshot (next-features 13)', // No node at all: the demo never mounts the pause control. 'pause-offset': 'the pause control is not mounted in the demo (0 nodes on the page)', 'pause-z': 'the pause control is not mounted in the demo (0 nodes on the page)' }, badge: { // 2026-08-23. The demo mounts ONE chip, and its `rounded` axis paints only // the step in force — measured forcing each on the real chip. 'radius-sm': 'only the step in force paints; forced data-rounded=sm → reaches (4px → 37px)', 'radius-lg': 'only the step in force paints; forced data-rounded=lg → reaches (10px → 37px)' }, meter: { // 2026-08-23. The demo sits on the OPTIMUM zone, so the two off-zone inks // have no node to paint; forced on the real root, transitions frozen. 'indicator-bg-below': "only under [data-state='below']; forced -> reaches (oklch(0.6908 0.1909 45.02) -> rgb(1,2,3))", 'indicator-bg-above': "only under [data-state='above']; forced -> reaches (oklch(0.6256 0.1933 23.03) -> rgb(1,2,3))", 'transition-duration': 'frozen by the guard by design; unfrozen pass -> reaches (0.18s -> 11.5s)', 'transition-ease': 'same freeze; unfrozen pass -> reaches (cubic-bezier(0.4,0,0.2,1) -> steps(7))' }, 'emoji-picker': { // 2026-08-23. Four keys of the PORTALED panel. The guard writes the // sentinel on :root and on the host, and :root does cross the portal // (verified) — what it cannot do is measure a node the demo never mounts // or one that carries no attribute of the component. 'tone-marker-size': 'the corner dot lives on [data-tone-capable]::after and the demo mounts ZERO tone-capable cells; forced the attribute on a real option -> reaches (4px -> 37px)', 'tone-marker-radius': 'same pseudo, same absent state; forced -> reaches (9999px -> 37px)', 'tone-marker-bg': 'same pseudo, same absent state; forced -> reaches (-> rgb(1,2,3))', 'preview-name-fg': 'the preview children are bare s stamped inline, with no data-emoji-picker-* attr, so they are outside the measured set; read on the last child -> reaches (oklch(0.5032 0 0) -> rgb(1,2,3))', // NON-DETERMINISTIC, and that is the reason: three runs of the same code // gave 17/21, 16/21, 16/21 — the panel closes somewhere in the pass and the // trigger loses [data-state=open], which is what this rule selects on. // Measured alive FOUR times, the last one replicating the guard's own // staticPass step by step (moved on the first size): oklch(0.2435 0 0) -> // rgb(1,2,3), from :root and from the host. An openMarker on the trigger was // tried and did NOT fix it (still oscillates), so the cause is the reopen // timing, not the marker. EXPECT THIS ENTRY TO BE FLAGGED STALE on the runs // where it does reach — do not delete it on that alone. next-features 13. 'open-trigger-fg': 'oscillates run to run (17/21 vs 16/21 on the same code); measured alive four times, including a step-by-step replica of the guard staticPass -> reaches (oklch(0.2435 0 0) -> rgb(1,2,3))' }, 'color-field': { // 2026-08-23. Thirteen tokens, none of them a lie: the demo boots with a // value, in `md`, editable, with three formats allowed — so every state // and every size step but the mounted one has no node to paint. All // forced on the REAL nodes (never a fabricated one), transitions frozen. 'placeholder-fg': 'no empty field in the demo; forced data-placeholder → reaches (oklch(0.61 0 0) → rgb(1,2,3))', 'segment-invalid-fg': 'invalid is off in the demo; forced data-invalid → reaches (oklch(0.5855 0.1743 42.74) → rgb(1,2,3))', 'segment-readonly-bg': 'readonly is off in the demo; forced data-readonly → reaches (oklch(0.931 0 0) → rgb(1,2,3))', 'segment-readonly-fg': 'readonly is off in the demo; forced data-readonly → reaches (oklch(0.5032 0 0) → rgb(1,2,3))', 'segment-readonly-decoration': 'readonly is off in the demo; forced data-readonly → reaches (underline dotted → overline wavy)', 'disabled-opacity': 'disabled is off in the demo; forced data-disabled → reaches (0.4 → 0.123)', // The swatch scale: only the step in force paints. Forced each size on the // real root and measured the swatch — every step reaches. 'swatch-size-xs': 'only the size in force paints; forced data-size=xs → reaches (14px → 77px)', 'swatch-size-sm': 'only the size in force paints; forced data-size=sm → reaches (16px → 77px)', 'swatch-size-lg': 'only the size in force paints; forced data-size=lg → reaches (20px → 77px)', 'swatch-size-xl': 'only the size in force paints; forced data-size=xl → reaches (32px → 77px)', // The locked-format LABEL only renders when a single format is allowed // (`isLocked`). Driven through the demo's own chips — not a hand-made node. 'format-select-fg': 'the static label only renders with ONE allowed format; unchecked rgb+hsl in the demo → reaches (oklch(0.5032 0 0) → rgb(1,2,3))', // The known law: the guard freezes `transition` to make everything else // measurable, so the tokens that ARE the transition can never move under // it. Measured in a separate unfrozen pass, on an EDITABLE segment — the // first segment is a `literal`, which declares `transition: none` of its // own and reads 0s whatever the token says. 'transition-duration': 'frozen by the guard by design; unfrozen pass on the hex segment → reaches (0.12s → 11.5s)', 'transition-ease': 'frozen by the guard by design; unfrozen pass on the hex segment → reaches (cubic-bezier(0.4,0,0.2,1) → steps(7))' }, 'navigation-menu': { // 2026-08-23. The rule is `[…-trigger][data-disabled], […-link][data-disabled]` // and the demo mounts neither — measured with transitions FROZEN, because // `color` is transitioned on this part and an immediate read returns the // OLD value (the eyedropper trap: three false diagnoses before freezing). 'disabled-trigger-fg': 'no disabled trigger or link in the demo; forced data-disabled → reaches on BOTH parts (rgb(1,2,3))' }, command: { 'focus-input-border': 'consumed only under :focus-visible, which the guard blurs away ON PURPOSE (the click-focus poisoning fix); focused by hand → reaches (rgb(9,9,9))', 'loading-height': 'the loading bar is conditional and the demo does not mount it', 'loading-fg': 'the loading bar is conditional and the demo does not mount it', 'viewport-padding': 'the non-ScrollArea viewport variant is not mounted in the demo', 'empty-padding-block': 'the empty state is conditional and not mounted at measurement', 'empty-fg': 'the empty state is conditional and not mounted at measurement' }, table: { 'header-z': 'consumed only under [data-sticky-header], which the demo does not set; forced → reaches (2 → 4321)', 'row-detail-fg': 'detail rows are closed (display:none) in the demo initial state; forced data-state=open → reaches (rgb(1,2,3))', 'row-detail-padding-block': 'detail rows are closed (display:none) in the demo initial state; forced data-state=open → reaches (12 → 1234)' }, 'media-player': { 'accent-strong': 'consumed by the live indicator, which only paints under [data-live]', 'buffered-bg': 'forwarded into the composed Slider (SecondaryRange) — outside this component attribute space', 'captions-bg': 'captions are conditional and the demo video carries no track', 'captions-fg': 'captions are conditional and the demo video carries no track', 'captions-radius': 'captions are conditional and the demo video carries no track', 'captions-padding-block': 'captions are conditional and the demo video carries no track', 'captions-padding-inline': 'captions are conditional and the demo video carries no track', 'captions-line-height': 'captions are conditional and the demo video carries no track', 'volume-vertical-length': 'the volume float is interaction-mounted; not open at measurement', 'volume-float-padding-block': 'the volume float is interaction-mounted; not open at measurement', 'volume-float-padding-inline': 'the volume float is interaction-mounted; not open at measurement', 'rate-button-min-width': 'the rate control is conditional and the demo does not mount it', 'audio-title-padding-block': 'audio variant — the video demo does not mount the audio title', 'audio-title-padding-inline': 'audio variant — the video demo does not mount the audio title' }, 'tree-grid': { 'header-z': 'consumed only under [data-sticky-header], which the demo does not set; forced → reaches (2 → 4321)', 'disabled-row-fg': 'no disabled row in the demo; forced data-disabled → reaches (rgb(1,2,3))' }, 'gradient-picker': { 'chip-radius': 'the swatch is a CLASS hook (.gradient-picker-trigger-swatch) outside the attribute-filtered node set; direct read → reaches (§13 class-hook debt)', 'chip-border': 'the swatch is a CLASS hook outside the attribute-filtered node set; direct read → reaches (§13 class-hook debt)', 'content-width-sm': "sized by data-picker-size (picker-shell's axis, not data-size); forced → reaches (288 → 512)", 'content-width-lg': "sized by data-picker-size (picker-shell's axis, not data-size); forced → reaches (352 → 512)", 'stoplist-max-block': "consumer node lives in the composed ScrollArea's attribute space (--scroll-area-auto-max-block on the viewport); direct read → reaches (132 → 1234)", 'stoplist-scrollbar-size': 'the design scrollbar only mounts on overflow; the demo list is short', 'stoplist-scrollbar-inset': "consumer node lives in the composed ScrollArea's attribute space; direct read → reaches (12 → 1234)", 'presets-panel-width': "the presets popover needs a second click the guard's open step does not perform; forced → reaches (240 → 1234)", 'presets-gap': 'presets popover not mounted by the open step; forced → reaches (8 → 1234)', 'presets-min-column': 'presets popover not mounted by the open step; forced → reaches (66px columns → 1234)', 'preset-height': 'presets popover not mounted by the open step; forced → reaches (32 → 1234)', 'preset-radius': 'presets popover not mounted by the open step; forced → reaches (6 → 1234)', 'preset-border': 'presets popover not mounted by the open step; forced → reaches (rgb(1,2,3))', 'hover-preset-border': 'presets popover not mounted by the open step; forced + real hover → reaches (rgb(1,2,3))', 'selected-preset-border': 'presets popover not mounted by the open step; forced data-selected → reaches (rgb(1,2,3))', 'selected-preset-outline-offset': 'presets popover not mounted by the open step; forced data-selected → reaches (2 → 1234)' }, listbox: { 'invalid-border': 'no invalid listbox in the demo; forced data-invalid → reaches (rgb(1,2,3))' }, carousel: { 'vertical-block-size': 'vertical orientation not mounted in the demo; forced → reaches (256 → 1234)' }, feed: { 'sentinel-spinner-size': 'the spinner only exists while [data-busy], and the guard WAITS for the busy window to close (the settle fix); measured live during the busy window (::before, 12 → 1234)', 'sentinel-spinner-width': 'the spinner only exists while [data-busy]; measured live during the busy window (::before border)', 'sentinel-spinner-gap': 'the spinner only exists while [data-busy]; measured live during the busy window (::before margin)', 'sentinel-spinner-duration': 'the spinner only exists while [data-busy]; measured live during the busy window (animation-duration 0.7s → 11.5s)', 'article-title-font-size-5': 'the demo mounts heading levels 3–4 only; forced aria-level=5 → reaches (14 → 1234)', 'article-title-font-size-6': 'the demo mounts heading levels 3–4 only; forced aria-level=6 → reaches (12 → 1234)', 'sentinel-spinner-reduced-duration': 'behind prefers-reduced-motion; emulated reduce context → reaches (4s → 11.5s)' }, 'drag-drop': { 'preview-padding-block': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (8 → 1234px)', 'preview-padding-inline': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (12 → 1235px)', 'preview-radius': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (6 → 1236px)', 'preview-border-width': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (1 → 9px)', 'preview-bg': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (rgb(1,2,3))', 'preview-fg': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (rgb(4,5,6))', 'preview-font-family': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (Zapfino)', 'preview-font-size': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (14 → 99px)', 'preview-shadow': 'the drag PREVIEW is created only while a drag is in flight (0 nodes at rest, counted); forced → reaches (0 0 0 7px rgb(7,8,9))' }, link: { 'external-icon-size': 'the demo mounts no EXTERNAL link, so the glyph never renders (0 nodes, counted); forced → reaches (11.89 → 77px on both axes)', 'underline-width': "the demo link sits at data-underline='hover' with no pointer on it, so there IS no underline to move (text-decoration-line: none, thickness: auto). Forced 'always' → reaches (1 → 9px). textDecorationThickness was missing from the guard prop list and was added in the same pass", 'underline-offset': "same: no underline at rest under data-underline='hover'; forced → reaches (2 → 11px). textUnderlineOffset added to the guard prop list too" }, knob: { 'label-font-size-sm': 'the demo mounts no [data-knob-label] (0 nodes, counted); forced → reaches (per-size coordinate; the resolved name moves with it)', 'label-font-size-md': 'the demo mounts no [data-knob-label] (0 nodes, counted); forced → reaches (16 → 99px)', 'label-font-size-lg': 'the demo mounts no [data-knob-label] (0 nodes, counted); forced → reaches (per-size coordinate)', 'label-font-size-xl': 'the demo mounts no [data-knob-label] (0 nodes, counted); forced → reaches (per-size coordinate)', 'label-font-size': 'the demo mounts no [data-knob-label] (0 nodes, counted); forced → reaches (16 → 99px)', 'label-fg': 'the demo mounts no [data-knob-label] (0 nodes, counted); forced → reaches (rgb(1,2,3))', 'label-line-height': 'the demo mounts no [data-knob-label] (0 nodes, counted); forced → reaches (20px → 3.77em)', 'dragging-shadow': 'consumed only under [data-dragging], and the demo knob is at rest (0 nodes, counted); forced → reaches (0 0 0 7px rgb(4,5,6))' }, label: { 'disabled-fg': 'the demo mounts no disabled label (0 [data-disabled] nodes, counted); forced → reaches (rgb(1,2,3))' }, 'link-preview': { 'font-family': "declared but out-ranked: the panel stamps `data-depth='overlay'`, whose plane declares font-family too at an EQUAL (0,1,0) — the generated sheet loads later, so it wins. Kept on purpose: retiring it would fix that tie in the plane's favour, a pixel decision pending signature (next-features §12.9). Measured with CDP matched-rules 2026-08-21, stable across 5 dev reloads", 'line-height': 'same load-order tie with the `overlay` plane, which imposes 1.25 where this recipe asks for --leading-normal (1.5). Declared and kept until the signature resolves who owns overlay typography', 'trigger-fg': 'the panel opens on HOVER, so measuring it REQUIRES the pointer on the trigger — and hover is exactly the state whose rule overrides the resting ink. Structural, not a demo gap: the hover token (`hover-trigger-fg`) reads live in the same run', 'trigger-underline': 'same structural conflict: the hover rule sets `text-decoration-color: currentColor` over the resting mix, and the panel cannot be opened without hovering' }, 'menu-dial': { 'backdrop-bg': 'the backdrop only exists while the dial is open (0 nodes at rest, counted); forced → reaches (rgb(1,2,3))', 'stagger-step': "consumed only by `[data-stagger] [data-state='open'] .menu-dial-action`, and the demo dial is closed and un-staggered; forced both attrs with index 3 → reaches (0.084s → 2.331s = 3 × 777ms)" }, 'picker-shell': { 'section-gap-xs': 'its size axis is `data-picker-size` on the PORTALED [data-popover-content], not `data-size` on itself, and the guard only cycles `data-size`; the demo popover sits at md. Cycled by hand across the four picker-sizes 2026-08-21 → reaches (section/row/footer spacing follows the picker size)', 'section-gap-sm': 'its size axis is `data-picker-size` on the PORTALED [data-popover-content], not `data-size` on itself, and the guard only cycles `data-size`; the demo popover sits at md. Cycled by hand across the four picker-sizes 2026-08-21 → reaches (section/row/footer spacing follows the picker size)', 'section-gap-lg': 'its size axis is `data-picker-size` on the PORTALED [data-popover-content], not `data-size` on itself, and the guard only cycles `data-size`; the demo popover sits at md. Cycled by hand across the four picker-sizes 2026-08-21 → reaches (section/row/footer spacing follows the picker size)', 'row-spacing-xs': 'its size axis is `data-picker-size` on the PORTALED [data-popover-content], not `data-size` on itself, and the guard only cycles `data-size`; the demo popover sits at md. Cycled by hand across the four picker-sizes 2026-08-21 → reaches (section/row/footer spacing follows the picker size)', 'row-spacing-lg': 'its size axis is `data-picker-size` on the PORTALED [data-popover-content], not `data-size` on itself, and the guard only cycles `data-size`; the demo popover sits at md. Cycled by hand across the four picker-sizes 2026-08-21 → reaches (section/row/footer spacing follows the picker size)', 'footer-gap-xs': 'its size axis is `data-picker-size` on the PORTALED [data-popover-content], not `data-size` on itself, and the guard only cycles `data-size`; the demo popover sits at md. Cycled by hand across the four picker-sizes 2026-08-21 → reaches (section/row/footer spacing follows the picker size)', 'footer-gap-lg': 'its size axis is `data-picker-size` on the PORTALED [data-popover-content], not `data-size` on itself, and the guard only cycles `data-size`; the demo popover sits at md. Cycled by hand across the four picker-sizes 2026-08-21 → reaches (section/row/footer spacing follows the picker size)', 'header-font-size-xs': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (12/14/16/16px → 102px, each in its own picker-size)', 'header-font-size-sm': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (12/14/16/16px → 102px, each in its own picker-size)', 'header-font-size-md': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (12/14/16/16px → 102px, each in its own picker-size)', 'header-font-size-lg': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (12/14/16/16px → 102px, each in its own picker-size)', 'header-gap': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (gap 8→1234px, fg → rgb(4,5,6), weight 500→123, line-height 20→60.32px)', 'header-fg': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (gap 8→1234px, fg → rgb(4,5,6), weight 500→123, line-height 20→60.32px)', 'header-font-weight': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (gap 8→1234px, fg → rgb(4,5,6), weight 500→123, line-height 20→60.32px)', 'header-line-height': 'the date-picker demo renders no [data-picker-header] (0 nodes, counted) — picker-shell has no demo route of its own (404) and is measured inside a host picker; forced → reaches (gap 8→1234px, fg → rgb(4,5,6), weight 500→123, line-height 20→60.32px)', 'time-row-gap': '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)', 'time-row-padding-block-start': '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)', 'time-row-padding-inline': '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)', 'time-row-border-width': '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)', 'time-row-border': '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)', 'time-label-fg': '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)', 'time-label-font-size-xs': '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)', 'time-label-font-size-sm': '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)', 'time-label-font-size-md': '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)', 'time-label-font-size-lg': '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)" }, 'skin-media-player': { 'record-base-width': 'the width is `min(100%, base * scale)`, so the LARGE sentinel of the guard is capped by the container and proves nothing. Re-measured with SMALL values 2026-08-22, with data-skin=record forced (the demo mounts turntable) -> reaches (111px exactly)', 'cassette-base-width': 'the width is `min(100%, base * scale)`, so the LARGE sentinel of the guard is capped by the container and proves nothing. Re-measured with SMALL values 2026-08-22, data-skin=cassette forced -> reaches (122px exactly)', 'deck-base-width': 'the width is `min(100%, base * scale)`, so the LARGE sentinel of the guard is capped by the container and proves nothing. Re-measured with SMALL values 2026-08-22, data-skin=deck forced -> reaches (133px exactly)', 'scale-sm': 'the width is `min(100%, base * scale)`, so the LARGE sentinel of the guard is capped by the container and proves nothing. Re-measured with SMALL values 2026-08-22, with the data-size=sm of the PLAYER forced -> reaches (133 x 0.11 = 14.625px)', 'scale-lg': 'the width is `min(100%, base * scale)`, so the LARGE sentinel of the guard is capped by the container and proves nothing. Re-measured with SMALL values 2026-08-22, data-size=lg forced -> reaches (133 x 0.22 = 29.25px)', 'scale-xl': 'the width is `min(100%, base * scale)`, so the LARGE sentinel of the guard is capped by the container and proves nothing. Re-measured with SMALL values 2026-08-22, data-size=xl forced -> reaches (133 x 0.33 = 43.875px)', 'lamp-opacity': 'the lamp only dims while the player is paused and the deck still; forced -> reaches (0.18 -> 0.123)' }, spinner: { 'bar-radius': "the demo mounts the RING variant only (0 bars, 0 dots, counted); forced variant='bars' → reaches (1234px)", 'label-font-size': 'the label is optional and the demo mounts none (0 nodes, counted); forced → reaches (1234px)', 'label-fg': 'the label is optional and the demo mounts none; forced → reaches (rgb(1,2,3))', 'track-opacity': 'its only declaration lives inside `prefers-reduced-motion`; emulated reduce context → reaches (0.6 → 0.123)' }, 'card-group': { 'title-fg': 'the STATIC heading form is not mounted in the demo (0 [data-static] nodes vs 1 [data-button], counted); forced → reaches (rgb(1,2,3))', 'title-font-family': 'static heading not mounted in the demo; forced → reaches (Instrument Sans → Zapfino)', 'title-font-size': 'static heading not mounted in the demo; forced → reaches (16 → 1234px)', 'title-line-height': 'static heading not mounted in the demo; forced → reaches (20px → 3.77em)', 'title-padding-block-end': 'static heading not mounted in the demo; forced → reaches (8 → 1234px)' }, clipboard: { 'indicator-gap': 'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (4 → 1234px)', 'indicator-padding-block': 'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (2 → 1235px)', 'indicator-padding-inline': 'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (8 → 1236px)', 'indicator-radius': 'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (9999 → 1237px)', 'indicator-font-size': 'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (12 → 99px)', 'indicator-font-weight': 'the “Copied!” indicator only exists for a moment after a copy (0 nodes at rest, counted); forced → reaches (500 → 123)' }, code: { radius: 'the DEMO HARNESS wins: `[data-uix-docs] code` (uix.css, 0-1-1) beats the recipe base rule `[data-code]` (0-1-0) and sets border-radius/padding/font on the inline code — confirmed with CDP matched-rules. The variant rules (0,2,0) DO win, which is why only this base-rule token reads dead. Same harness rule that hides the
 of code-block (next-features §13)',
		'soft-bg':
			"the demo mounts the `plain` variant only (no chrome); forced variant='soft' → reaches (rgb(1,2,3))",
		'border-width': "the demo mounts `plain` only; forced variant='outline' → reaches (1 → 9px)",
		border: "the demo mounts `plain` only; forced variant='outline' → reaches (rgb(4,5,6))",
		'padding-inline':
			'only the chromed variants pad; forced → reaches (4.12 → 77px), and the variant rule (0,2,0) beats the harness',
		'padding-block': 'only the chromed variants pad; forced → reaches (1.29 → 66px)'
	},
	'code-block': {
		'pre-padding':
			'the DEMO HARNESS outweighs the component: `[data-uix-docs] pre` (uix.css:801, 0-1-1) beats `[data-code-block-pre]` (0-1-0) and paints padding/border/radius/bg/font on the 
. Forced with !important → reaches (16px 20px → 12px). Seven properties measured, registered in next-features §13'
	},
	'tree-view': {
		'disabled-row-fg':
			'no disabled row in the demo (0 mounted, counted); forced data-disabled → reaches (oklch(0.61 0 0) → rgb(1,2,3))'
	},
	'password-field': {
		// The demo boots with an empty field: data-strength=0, so no segment is
		// active and none of the four steps paints. Forced level by level
		// 2026-08-22, transitions frozen.
		'strength-1-bg': 'the meter sits at strength 0 (empty field); forced -> reaches (oklch(0.5787 0.1877 322.11) -> rgb(1,2,3))',
		'strength-2-bg': 'same; forced -> reaches (oklch(0.6908 0.1909 45.02) -> rgb(1,2,3))',
		'strength-3-bg': 'same; forced -> reaches (oklch(0.6406 0.1329 157.68) -> rgb(1,2,3))',
		'strength-4-bg': 'same; forced -> reaches (oklch(0.6491 0.1136 181.96) -> rgb(1,2,3))',
		// The visibility trigger owns both: the guard freezes transitions, and the
		// demo boots enabled. Measured on it 2026-08-22.
		'transition-duration': 'the guard freezes transitions; measured without the freeze on the visibility trigger -> reaches (0.12s -> 11.5s)',
		'transition-ease': 'same freeze, same node -> reaches (cubic-bezier(0.4, 0, 0.2, 1) -> steps(4))',
		'disabled-opacity': 'only under [data-disabled] on the visibility trigger; forced -> reaches (0.4 -> 0.123)'
	},
	'context-menu': {
		// Third measurement of the same finding: the overlay DEPTH PLANE imposes the
		// panel font and beats the recipe (section 12.9, pending signature, 20
		// components). Writing the token moves nothing while the plane does.
		'item-disabled-opacity': 'no disabled item in the demo; forced data-disabled -> reaches (0.55 -> 0.123)'
	},
	metrics: {
		// The demo's icon runs the `rounded` shape; the other two only paint under
		// their own data-shape value. Forced in place 2026-08-22.
		'icon-circle-radius': 'the demo icon is data-shape=rounded; forced circle -> reaches (9999px -> 1234px)',
		'icon-square-radius': 'same; forced square -> reaches (6px -> 1234px)'
	},
	'float-panel': {
		// The demo mounts the DEFAULT variant and no generic action button (only the
		// close control). Forced in place 2026-08-22, transitions frozen.
		'outline-bg': 'the demo runs the default variant; set data-variant=outline -> reaches (oklch(0.9911 0 0) -> rgb(1,2,3))',
		'outline-border': 'same variant; forced -> reaches (oklch(0.7921 0 0) -> rgb(1,2,3))',
		'ghost-bg': 'same, variant ghost; forced -> reaches (oklch(0.9911 0 0) -> rgb(1,2,3))',
		'ghost-border': 'same, variant ghost; forced -> reaches (oklch(0.931 0 0) -> rgb(1,2,3))',
		'ghost-shadow': 'same, variant ghost; forced -> reaches (rgba(15,23,42,0.1) 0 4px 12px -> rgb(1,2,3) 0 0 0 7px)',
		'action-fg': 'no generic action button in the demo (only the close control); mounted in place -> reaches (oklch(0.5032 0 0) -> rgb(1,2,3))',
		'action-radius': 'same button; mounted -> reaches (4px -> 1234px)',
		'action-font-size': 'same button; mounted -> reaches (16px -> 1234px)',
		'hover-action-bg': 'same button, and only under :hover; same mounting pass',
		'hover-action-fg': 'same button, and only under :hover; same mounting pass',
		'resize-grip-radius': 'only under :focus-visible; focused the grip -> reaches (4px -> 1234px)',
		// 2026-08-23. The twelve the 2026-08-22 commit left written as "rojo que
		// queda" and nobody measured. Measured now, one by one, on the real panel.
		//
		// SIX are the depth plane, exactly as that commit predicted: the content
		// carries `data-depth='overlay'`, and `[data-depth='overlay']` declares
		// background / border / box-shadow / font-family / line-height at the SAME
		// specificity (0,1,0) and LATER in the cascade. Verified by moving the
		// plane's own tokens on this node: surface, border, font and leading
		// repaint it, and the plane's `box-shadow` rule is in its matched list.
		// Same adjudication as `tooltip`, same open decision (PLAN 12.9).
		bg: PLANE_SUPERSEDED,
		border: PLANE_SUPERSEDED,
		'border-width': PLANE_SUPERSEDED + ' (the plane writes the `border` shorthand)',
		shadow:
			PLANE_SUPERSEDED +
			'; `shadow-topmost` DOES reach — its [data-topmost] rule is (0,2,0) and beats the plane (-> rgb(4,5,6))',
		'font-family': PLANE_SUPERSEDED,
		'line-height': PLANE_SUPERSEDED,
		// Three states / parts the demo does not mount.
		'active-shadow':
			'only under [data-dragging] / [data-resizing]; forced -> reaches (rgba(15,23,42,0.22) 0 28px 72px -> rgb(1,2,3))',
		'resize-size':
			'the CORNER handles (se/ne/sw/nw) carry it and the demo mounts only the edge ones (e, s)',
		'button-size':
			'consumed by [data-float-panel-action] / [data-float-panel-stage-trigger], neither mounted in the demo — the only control is the close Button, which is a composed