.utr-heading {
  --utr-duration: 900ms;
  position: relative;
}

.utr-heading-source {
  display: block;
}

.utr-heading.utr-heading-ready .utr-heading-source,
.utr-heading.utr-heading-ready .utr-heading-source * {
  visibility: hidden !important;
}

.utr-char {
  position: absolute;
  overflow: hidden;
  pointer-events: none;
}

.utr-heading.utr-complete .utr-char {
  overflow: visible;
}

.utr-heading-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.utr-char-inner {
  position: absolute;
  left: 0;
  display: block;
  white-space: pre;
  transform: translate3d(0, var(--utr-shift, 112%), 0);
  transition: transform var(--utr-duration) cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
  backface-visibility: hidden;
}

.utr-heading.utr-visible .utr-char-inner {
  transform: translate3d(0, 0, 0);
}

.utr-copy {
  --utr-duration: 700ms;
  opacity: 0;
  transform: translate3d(0, 30px, 0);
  transition: none;
  will-change: transform, opacity;
}

.utr-copy.utr-armed {
  transition: transform calc(var(--utr-duration) * 1.08) cubic-bezier(0.22, 1, 0.36, 1), opacity var(--utr-duration) ease;
}

.utr-copy.utr-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.utr-instant .utr-char-inner,
.utr-instant.utr-copy,
.utr-reduced-motion .utr-char-inner,
.utr-reduced-motion .utr-copy {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}
