/* ============================
   REVEAL GLOBAL + CASCADE
   ============================ */

:root {
  --lfc-reveal-duration: 0.65s;
  --lfc-reveal-transform-y: 20px;
  --lfc-reveal-cascade-step: 70ms;
}

.reveal {
  opacity: 0;
  transform: translateY(var(--lfc-reveal-transform-y));
  transition:
    opacity var(--lfc-reveal-duration) cubic-bezier(.22, .61, .36, 1),
    transform var(--lfc-reveal-duration) cubic-bezier(.22, .61, .36, 1);
  transition-delay: var(--reveal-delay, 0s);
  will-change: transform, opacity;
}

.reveal.active {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

body.elementor-editor-active .reveal {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  transition-delay: 0s !important;
}

.no-reveal,
.no-reveal.reveal,
.no-reveal.reveal.active,
.no-reveal.reveal-lines,
.no-reveal.reveal-lines.is-visible,
.no-reveal.reveal-words,
.no-reveal.reveal-words.is-visible,
.no-reveal.reveal-chars,
.no-reveal.reveal-chars.is-visible {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  transition-delay: 0s !important;
  will-change: auto !important;
}

.elementor-widget.no-reveal,
.elementor-widget.no-reveal.reveal,
.elementor-widget.no-reveal.reveal.active {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  transition-delay: 0s !important;
}

.no-reveal.reveal-lines .word,
.no-reveal.reveal-lines.is-visible .word,
.no-reveal.reveal-words .word,
.no-reveal.reveal-words.is-visible .word,
.no-reveal.reveal-chars .char,
.no-reveal.reveal-chars.is-visible .char {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  transition-delay: 0s !important;
}

/* ============================
   REVEAL SPLITTING
   Lines / Words / Characters
   ============================ */

.reveal-lines,
.reveal-words,
.reveal-chars {
  display: inline-block;
  position: relative;
}

.reveal.reveal-lines,
.reveal.reveal-words,
.reveal.reveal-chars {
  opacity: 1;
  transform: none;
  transition: none;
  transition-delay: 0s;
}

.reveal-lines .word,
.reveal-words .word,
.reveal-chars .char {
  display: inline-block;
}

.reveal-lines .word {
  opacity: 0;
  transform: translateY(var(--lfc-reveal-transform-y));
  transition:
    opacity var(--lfc-reveal-duration) ease,
    transform var(--lfc-reveal-duration) ease;
  transition-delay: var(--lfc-split-delay, 0ms);
}

.reveal-lines.is-visible .word {
  opacity: 1;
  transform: translateY(0);
}

.reveal-words .word {
  opacity: 0;
  transform: translateY(var(--lfc-reveal-transform-y));
  transition:
    opacity var(--lfc-reveal-duration) ease,
    transform var(--lfc-reveal-duration) cubic-bezier(.2, .9, .3, 1);
  transition-delay: var(--lfc-split-delay, 0ms);
}

.reveal-words.is-visible .word {
  opacity: 1;
  transform: translateY(0);
}

.reveal-chars .char {
  opacity: 0;
  transform: scale(0.85) translateY(0.3em);
  transition:
    opacity var(--lfc-reveal-duration) ease-out,
    transform var(--lfc-reveal-duration) cubic-bezier(.22, 1.25, .36, 1);
  transition-delay: var(--lfc-split-delay, 0ms);
}

.reveal-chars.is-visible .char {
  opacity: 1;
  transform: scale(1) translateY(0);
}

.reveal-chars .hero-sub .char {
  transition-delay: var(--lfc-split-delay, 0ms);
}

.reveal-chars {
  word-break: normal;
  overflow-wrap: normal;
}

.reveal-chars .word {
  display: inline-block;
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-lines .word,
  .reveal-words .word,
  .reveal-chars .char {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    transition-delay: 0s !important;
    animation: none !important;
  }
}
