The defect
The card content area's reveal computes to opacity: 0 under prefers-reduced-motion: reduce, and no setting
stops it. The content stays laid out and visibility: visible while painting nothing, so a visitor who has asked
for reduced motion cannot see it at all.
This hides author content on every site using the affected blocks. It is not a preference issue; the reduced-motion
end state is the bug.
Measured
On the probe element:
no-preference: style="opacity: 0.9998; transform: translate3d(0px, 0.0101px, 0px)" — note the resting opacity
is written inline by script, not by a class or a media query;
reduce: opacity: 0 at both 1440×900 and 390×844, max opacity over a full page sweep 0;
- every ancestor computes to
1, so nothing upstream is responsible.
Root cause
packages/scrolling-effect/src/utils.js:255-257 sets progress = 0.5 unconditionally under reduced motion —
after every attribute-derived clamp, and the four motion attributes only feed those clamps (:167,
:230-231). So the end state a reduced-motion visitor gets is the middle of the effect rather than its finished
state.
What does not fix it
scrollingEffect: "static", the least animated value available — still 0.
sm_intro_animations_enable set to false — already false in the tested configuration; changes nothing.
- The library's only four front-end
prefers-reduced-motion rules cover an unrelated recipe and the Customizer UI.
The ask
Under prefers-reduced-motion: reduce, the effect should resolve to its finished state, not its midpoint: the
content fully visible, no transform. A per-block or global setting would help, but the default itself is the
problem — content must never end at opacity: 0 for a visitor who asked for less motion.
Acceptance
- With
prefers-reduced-motion: reduce, card content areas compute to opacity: 1 with no residual transform, at
both desktop and small-phone widths.
- No author setting is required to get that; it is the default end state.
- Motion attributes still take effect for visitors with no preference.
The defect
The card content area's reveal computes to
opacity: 0underprefers-reduced-motion: reduce, and no settingstops it. The content stays laid out and
visibility: visiblewhile painting nothing, so a visitor who has askedfor reduced motion cannot see it at all.
This hides author content on every site using the affected blocks. It is not a preference issue; the reduced-motion
end state is the bug.
Measured
On the probe element:
no-preference:style="opacity: 0.9998; transform: translate3d(0px, 0.0101px, 0px)"— note the resting opacityis written inline by script, not by a class or a media query;
reduce:opacity: 0at both 1440×900 and 390×844, max opacity over a full page sweep 0;1, so nothing upstream is responsible.Root cause
packages/scrolling-effect/src/utils.js:255-257setsprogress = 0.5unconditionally under reduced motion —after every attribute-derived clamp, and the four motion attributes only feed those clamps (
:167,:230-231). So the end state a reduced-motion visitor gets is the middle of the effect rather than its finishedstate.
What does not fix it
scrollingEffect: "static", the least animated value available — still 0.sm_intro_animations_enableset tofalse— already false in the tested configuration; changes nothing.prefers-reduced-motionrules cover an unrelated recipe and the Customizer UI.The ask
Under
prefers-reduced-motion: reduce, the effect should resolve to its finished state, not its midpoint: thecontent fully visible, no transform. A per-block or global setting would help, but the default itself is the
problem — content must never end at
opacity: 0for a visitor who asked for less motion.Acceptance
prefers-reduced-motion: reduce, card content areas compute toopacity: 1with no residual transform, atboth desktop and small-phone widths.