/* Original text retains the exact flow; measured characters supply the motion. */
.heading-reveal{overflow:visible;clip-path:inset(calc(-1 * var(--heading-mask-padding-y,4px)) calc(-1 * var(--heading-mask-padding-x,8px)))}
.heading-reveal__content{display:block;position:relative}
.heading-reveal.is-reveal-ready>.heading-reveal__content{color:transparent}
.heading-reveal__characters{position:absolute;inset:0;pointer-events:none}
.heading-reveal__probe{position:absolute;left:0;top:0;display:block;white-space:pre;visibility:hidden}
.heading-reveal__mask{position:absolute;display:block;overflow:hidden;padding:var(--heading-mask-padding-y,4px) var(--heading-mask-padding-x,8px)}
.heading-reveal__char{display:block;white-space:pre;transform:translateY(105%);transition:none}
.heading-reveal.is-heading-revealed .heading-reveal__char{transform:translateY(0);transition:transform 1000ms cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--heading-character-index) * 50ms)}
@media(prefers-reduced-motion:reduce){
  .heading-reveal.is-reveal-ready>.heading-reveal__content{color:inherit}
  .heading-reveal__characters{display:none}
}

/* Keep every original child in its native flex/grid/text flow. Only the measured
   visual characters animate; text-fill hides source ink without losing its color. */
.heading-reveal--anchor{position:relative}
.heading-reveal[data-heading-layout="preserve"].is-reveal-ready{-webkit-text-fill-color:transparent}
.heading-reveal[data-heading-layout="preserve"] .heading-reveal__characters{-webkit-text-fill-color:currentColor}
.heading-reveal-subtitle{opacity:0;translate:0 12px}
.heading-reveal-subtitle.is-heading-subtitle-revealed{opacity:1;translate:0 0;transition:opacity 1000ms cubic-bezier(.16,1,.3,1),translate 1000ms cubic-bezier(.16,1,.3,1);transition-delay:150ms}
@media(prefers-reduced-motion:reduce){
 .heading-reveal[data-heading-layout="preserve"].is-reveal-ready{-webkit-text-fill-color:currentColor}
 .heading-reveal-subtitle{opacity:1;translate:none!important;transition:none!important}
}
