/* Shared contact CTA effect; each placement keeps its own TOV presentation. */
.tov-cta {
  --cta-roll-duration: 450ms;
  --cta-roll-ease: cubic-bezier(.1, 0, .2, 1);
  max-inline-size: 100%;
}

.tov-cta__row {
  display: inline-flex;
  inline-size: 100%;
  align-items: center;
  justify-content: space-between;
  column-gap: inherit;
  line-height: 1.25;
  transition: transform var(--cta-roll-duration) var(--cta-roll-ease);
}

.tov-cta__row--copy {
  position: absolute;
  inset: 0;
  padding: inherit;
  transform: translateY(130%);
}

.tov-cta--text {
  position: relative;
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
}

.tov-cta--text .tov-cta__row {
  line-height: inherit;
}

.tov-cta--text .tov-cta__row--original {
  min-block-size: inherit;
}

.wa-float.tov-cta {
  overflow: hidden;
}

.tov-cta--icon .tov-cta__row {
  block-size: 100%;
  justify-content: center;
}

/* Match the reference's rounded fill rising together with the text and icon. */
.btn.tov-cta::before {
  inset: 0 0 auto;
  height: 300%;
  border-radius: 80%;
  transform: translateY(40%);
  transition: transform var(--cta-roll-duration) var(--cta-roll-ease),
    border-radius var(--cta-roll-duration) var(--cta-roll-ease);
}

/* The whole icon rolls with the label; suppress the previous arrow-only cue. */
.btn.tov-cta .arw path {
  animation: none;
}

.btn.tov-cta--outline {
  border: 1px solid currentColor;
  background: transparent;
  box-shadow: none;
}

@media (prefers-reduced-motion: no-preference) {
  .tov-cta:focus-visible .tov-cta__row--original {
    transform: translateY(-130%);
  }

  .tov-cta:focus-visible .tov-cta__row--copy {
    transform: none;
  }

  .btn.tov-cta:focus-visible::before {
    transform: none;
    border-radius: 0;
  }
}

@media (prefers-reduced-motion: no-preference) and (hover: hover) and (pointer: fine) {
  .tov-cta:hover .tov-cta__row--original {
    transform: translateY(-130%);
  }

  .tov-cta:hover .tov-cta__row--copy {
    transform: none;
  }

  .btn.tov-cta:hover::before {
    transform: none;
    border-radius: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .btn.tov-cta,
  .btn.tov-cta::before,
  .tov-cta .tov-cta__row,
  .btn.tov-cta .arw,
  .btn.tov-cta .arw path {
    transition: none !important;
    animation: none !important;
  }

  .tov-cta .tov-cta__row--original {
    transform: none;
  }

  .tov-cta .tov-cta__row--copy {
    display: none;
  }
}
