/* Oculta el texto original antes de procesarlo */
.lemon-hidden {
  opacity: 0;
}

/* Oculta TODO el contenido de un widget que tenga lemon- o .animated
 hasta que el JS lo procese (evita el flash). */
/* Solo ocultamos si el widget ha sido marcado para animación */
 .elementor-widget.lemon-prepare-hide .elementor-widget-container > * {
   opacity: 0;
   transition: none !important;
 }

/* Clase añadida por PHP para ocultar antes de renderizado */
.lemon-prepare-hide {
  opacity: 0 !important;
  visibility: hidden;
}

/* Reveal containers */
.reveal-text,
.reveal-word {
  overflow: hidden;
  display: block;
  margin-bottom: 0;
}

.reveal-word {
  display: inline-block;
  vertical-align: top;
  margin-right: 0.3em;
}

.reveal-text span,
.reveal-word span {
  display: inline-block;
  line-height: inherit;
  padding-bottom: 0.1em;
}

/* Animaciones */
.reveal-text.lemon-fade-up span,
.reveal-word.lemon-fade-up span {
  transform: translateY(30px);
  opacity: 0;
  transition: transform 0.6s ease, opacity 0.6s ease;
}

.reveal-text.lemon-reveal-up span,
.reveal-word.lemon-reveal-up span {
  transform: translateY(100%);
  opacity: 0;
  transition: transform 0.8s cubic-bezier(0.77, 0, 0.175, 1), opacity 0.5s ease;
}

.reveal-text.lemon-reveal-down span,
.reveal-word.lemon-reveal-down span {
  transform: translateY(-100%);
  opacity: 0;
  transition: transform 0.8s cubic-bezier(0.77, 0, 0.175, 1), opacity 0.5s ease;
}

/* Activación */
.reveal-text.active span,
.reveal-word.active span {
  transform: translateY(0);
  opacity: 1;
}

/* EXACTAMENTE IGUAL AL EJEMPLO */
.scroll-degrade .word {
  display: inline-block;
  white-space: nowrap;
}

.scroll-degrade .char {
  display: inline-block;
  opacity: 0;
  filter: none; /* ← por defecto SIN desenfoque */
  transition: opacity 0.3s linear, filter 0.3s linear;
  will-change: opacity, filter;
}
