433f719676
Under Window Translucency → Glass, the glass block sets the surface tokens transparent so <body> is the sole painter. A tab's `--tab-face` read those tokens, so the ✕ runway resolved to transparent→transparent and the chip's `bg-(--tab-face)` painted nothing: hovering showed a bare ✕ over un-faded text, with no gradient at all. Add a `data-glass-field` contract beside the block's existing `data-glass-opaque` / `data-glass-raised`: a declarer receives `--glass-field`, the same body mix glass already paints. The tab prefers it and falls back to its own surface token (`--tab-surface`, which TAB_ACTIVE / TAB_IDLE now set instead of `--tab-bg` so they feed the chain rather than bypass it). Face, hover-darken, and the selection wash all inherit the one base. Inert with glass off: the fallback resolves to the exact opaque surface it did before.