/* Word boxes share measured line delays; character spans retain normal inline flow. */
body[data-concept] motion-word{display:inline-block;font:inherit;letter-spacing:inherit;white-space:nowrap}
body[data-concept] motion-char{display:inline;position:relative;font:inherit;letter-spacing:inherit}
body[data-concept] motion-char.typing-cursor:after{content:"";position:absolute;left:100%;top:.08em;height:.88em;width:2px;background:currentColor;pointer-events:none}
/* Text entrance is owned by the new per-line motion, not the old bubble heading effect. */
body[data-concept=play] .story-bubble.is-revealed h2.text-motion-target{animation:none}
body.reduced[data-concept] :is(motion-word,motion-char){opacity:1!important;visibility:visible!important;transform:none!important}
body.reduced[data-concept] .typing-cursor:after{display:none}
@media(prefers-reduced-motion:reduce){body[data-concept] :is(motion-word,motion-char){opacity:1!important;visibility:visible!important;transform:none!important}body[data-concept] .typing-cursor:after{display:none}}
