.kinetic-text-reveal {
  display: inline-flex;
  flex-wrap: wrap;
  white-space: pre-wrap;
  align-items: baseline;
  justify-content: inherit;
  text-align: inherit;
}

.kinetic-text-reveal--lines {
  flex-direction: column;
  align-items: inherit;
}

.kinetic-text-reveal__sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.kinetic-text-reveal__space {
  white-space: pre;
}

.kinetic-text-reveal__mask {
  display: inline-block;
  overflow: hidden;
  vertical-align: baseline;
  padding-bottom: 0.08em;
}

.kinetic-text-reveal__segment {
  display: inline-block;
  will-change: transform, opacity, filter;
  opacity: 0;
  transform: translate3d(var(--kinetic-x, 0), var(--kinetic-y, 20px), 0);
  filter: blur(var(--kinetic-blur, 6px));
}

.kinetic-text-reveal.is-visible .kinetic-text-reveal__segment {
  animation: kinetic-text-reveal-in var(--kinetic-duration, 0.72s)
    cubic-bezier(0.22, 1, 0.36, 1) var(--kinetic-delay, 0s) forwards;
}

.kinetic-text-reveal.is-settled .kinetic-text-reveal__segment {
  animation: none;
  opacity: 1;
  transform: none;
  filter: none;
}

.kinetic-text-reveal.is-reduced .kinetic-text-reveal__segment {
  animation-duration: 0.01s;
  animation-delay: 0s !important;
}

@keyframes kinetic-text-reveal-in {
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .kinetic-text-reveal__segment {
    opacity: 1;
    transform: none;
    filter: none;
    animation: none !important;
  }
}

/* Block flow — portfolio descriptions (normal line wrapping, no flex gaps) */
.kinetic-text-reveal.kinetic-text-reveal--block-flow {
  display: block;
  width: 100%;
  white-space: normal;
  position: relative;
}

.kinetic-text-reveal--block-flow .kinetic-text-reveal__mask {
  display: inline-block;
  vertical-align: top;
  padding-bottom: 0.1em;
}

.kinetic-text-reveal--block-flow .kinetic-text-reveal__space {
  white-space: normal;
}

.project-tag.kinetic-text-reveal {
  display: inline-flex;
  vertical-align: top;
}

.project-tag.kinetic-text-reveal .kinetic-text-reveal__mask {
  padding-bottom: 0.02em;
}

.footer-cta__title.kinetic-text-reveal {
  justify-content: center;
  width: 100%;
  overflow: visible;
}

.footer-cta__intro.kinetic-text-reveal {
  justify-content: center;
  width: 100%;
}
