/*!
 * Themeasy — Text Reveal
 *
 * A large-scale heading or paragraph whose words/characters fill from a muted
 * baseline to their final colour as the block scrolls into view. Structure is
 * pure text: the JS splits the text into unit spans and drives a per-unit
 * --tms-u (0 -> 1) that color-mix interpolates from the dimmed to the active
 * colour. The base/un-split state is the finished colour, so with no JS, in the
 * editor (--static) and under reduced motion the text stays fully legible —
 * only the fill motion is skipped.
 *
 * Tokens consumed: --tms-heading-color (public --tms-* design API). The dimmed
 * colour is derived from the active colour so it stays theme-adaptive (dark
 * mode) until the user overrides it.
 *
 * @author Themeasy
 * @link https://themeasy.co
 * @since 1.0.0
 */
.tms-text-reveal{--tms-text-reveal-active:var(--tms-heading-color,#14161d);--tms-text-reveal-muted:color-mix(in srgb, var(--tms-text-reveal-active) 18%, transparent);--tms-text-reveal-rise:.6em;width:100%;position:relative}.tms-text-reveal__text{max-width:100%;color:var(--tms-text-reveal-active,#14161d);letter-spacing:-.01em;text-wrap:pretty;margin:0;font-size:clamp(1.9rem,1.1rem + 4.2vw,4.5rem);font-weight:700;line-height:1.12;display:inline-block}.tms-text-reveal__word{display:inline-block}.tms-text-reveal__unit{color:color-mix(in srgb, var(--tms-text-reveal-active,#14161d) calc(var(--tms-u,1) * 100%), var(--tms-text-reveal-muted,#14161d2e))}.tms-text-reveal--rise .tms-text-reveal__unit{will-change:transform;display:inline-block}.tms-text-reveal--animated .tms-text-reveal__unit{will-change:color}@media (prefers-reduced-motion:reduce){.tms-text-reveal__unit{color:var(--tms-text-reveal-active,#14161d);will-change:auto;transform:none!important}}