/* ============================================================
   Reveal Text Module — Styles
   Character-by-character text reveal on scroll.
   ============================================================ */

.reveal-text {
  position: relative;
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  padding: var(--cs-space-xl, 2.5rem);
  min-height: 30vh;
  width: 100%;
  align-items: center;
  justify-content: flex-start;
}

/* ---- Content ---- */
.reveal-text__content {
  font-family: var(--cs-font-heading, sans-serif);
  font-size: var(--cs-text-3xl, 2rem);
  font-weight: var(--cs-weight-bold, 700);
  color: var(--cs-text, #f1f5f9);
  line-height: var(--cs-leading-snug, 1.3);
  letter-spacing: var(--cs-tracking-tight, -0.02em);
}

/* ---- Individual character spans ---- */
.reveal-text__char {
  display: inline-block;
  opacity: 0;
  will-change: opacity, transform;
  transition: opacity var(--cs-duration-fast, 150ms) var(--cs-ease-out, cubic-bezier(0, 0, 0.2, 1)),
              transform var(--cs-duration-fast, 150ms) var(--cs-ease-out, cubic-bezier(0, 0, 0.2, 1));
  transform: translateY(4px);
}

.reveal-text__char--visible {
  opacity: 1;
  transform: translateY(0);
}

/* Space character */
.reveal-text__char--space {
  width: 0.3em;
}

/* ---- Blinking cursor ---- */
.reveal-text__cursor {
  display: inline-block;
  font-family: var(--cs-font-mono, monospace);
  font-size: var(--cs-text-3xl, 2rem);
  font-weight: var(--cs-weight-normal, 400);
  color: var(--cs-accent, #f59e0b);
  margin-left: 2px;
  opacity: 0;
  animation: revealTextBlink 1s step-end infinite;
}

.reveal-text--active .reveal-text__cursor {
  opacity: 1;
}

.reveal-text--done .reveal-text__cursor {
  opacity: 0;
  transition: opacity var(--cs-duration-normal, 300ms);
}

/* ---- Direction modifier: RTL ---- */
.reveal-text--rtl .reveal-text__content {
  direction: rtl;
}

.reveal-text--rtl .reveal-text__char {
  transform: translateX(8px);
}

.reveal-text--rtl .reveal-text__char--visible {
  transform: translateX(0);
}

/* ---- Direction modifier: center ---- */
.reveal-text--center .reveal-text__content {
  text-align: center;
  width: 100%;
}

.reveal-text--center {
  justify-content: center;
}

/* ---- Keyframes ---- */
@keyframes revealTextBlink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* ---- Responsive ---- */
@media (max-width: 768px) {
  .reveal-text {
    padding: var(--cs-space-lg, 1.5rem);
    min-height: 25vh;
  }

  .reveal-text__content,
  .reveal-text__cursor {
    font-size: var(--cs-text-2xl, 1.5rem);
  }
}

@media (max-width: 375px) {
  .reveal-text {
    padding: var(--cs-space-md, 1rem);
    min-height: 20vh;
  }

  .reveal-text__content,
  .reveal-text__cursor {
    font-size: var(--cs-text-xl, 1.25rem);
  }
}

/* ---- Reduced motion: reveal all characters immediately ---- */
@media (prefers-reduced-motion: reduce) {
  .reveal-text__char {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }

  .reveal-text__cursor {
    animation: none !important;
  }
}
