diff --git a/express/code/blocks/grid-marquee/grid-marquee.css b/express/code/blocks/grid-marquee/grid-marquee.css index 1c62bbfd1..f6412708e 100644 --- a/express/code/blocks/grid-marquee/grid-marquee.css +++ b/express/code/blocks/grid-marquee/grid-marquee.css @@ -6,6 +6,13 @@ text-align: center; } +/* Anti-FOUC: hide raw authored rows until the block builds .foreground, so the + staged decoration (image removed first, video anchor removed a frame later) + never paints the raw anchor text beneath the card image. */ +.grid-marquee:not(:has(> .foreground)) > div { + visibility: hidden; +} + .grid-marquee .express-logo { diff --git a/express/code/blocks/grid-marquee/grid-marquee.js b/express/code/blocks/grid-marquee/grid-marquee.js index 5b0f53733..c97461ba0 100644 --- a/express/code/blocks/grid-marquee/grid-marquee.js +++ b/express/code/blocks/grid-marquee/grid-marquee.js @@ -183,8 +183,20 @@ function toCard(drawer) { const panelsFrag = new DocumentFragment(); panelsFrag.append(...panels); panels.forEach((panel) => panel.classList.add('panel')); - const videoAnchor = face.querySelector('a'); - videoAnchor?.remove(); + // The drawer video is authored in the face as an . But if + // Express's auto-video decoration ran first (e.g. inside an MEP replacePage + // fragment where #_dnb wasn't applied to the link), it arrives as an inlined + //