/* =========================================================================
   AP – "Separator with text" enhancements (WPBakery vc_text_separator)
   Extra text sizes + creative scroll-in entrance animations.
   ========================================================================= */

/* ---------- Text sizes ---------- */
.ap-sep.ap-sep-size-sm  .vc_sep_text { font-size: 15px; }
.ap-sep.ap-sep-size-md  .vc_sep_text { font-size: 20px; }
.ap-sep.ap-sep-size-lg  .vc_sep_text { font-size: 28px; }
.ap-sep.ap-sep-size-xl  .vc_sep_text { font-size: 38px; }
.ap-sep.ap-sep-size-xxl .vc_sep_text { font-size: 52px; }

.ap-sep[class*="ap-sep-size-"] .vc_sep_text {
  line-height: 1.15;
  font-weight: 700;
}

@media (max-width: 767px) {
  .ap-sep.ap-sep-size-lg  .vc_sep_text { font-size: 24px; }
  .ap-sep.ap-sep-size-xl  .vc_sep_text { font-size: 30px; }
  .ap-sep.ap-sep-size-xxl .vc_sep_text { font-size: 36px; }
}

/* =========================================================================
   Entrance animations
   Hidden until the element scrolls into view; JS adds .ap-in-view.
   We animate the text (.vc_sep_text) and, for some effects, the side lines.
   ========================================================================= */
.ap-sep-anim .vc_sep_text {
  display: inline-block;
  will-change: transform, opacity, filter;
  --ap-sep-dur: 0.7s;
}
.ap-sep-anim.ap-sep-speed-slow .vc_sep_text { --ap-sep-dur: 1.2s; }
.ap-sep-anim.ap-sep-speed-fast .vc_sep_text { --ap-sep-dur: 0.4s; }

/* initial (pre-view) states */
.ap-sep-anim-fade-up   .vc_sep_text { opacity: 0; transform: translateY(28px); }
.ap-sep-anim-zoom-in   .vc_sep_text { opacity: 0; transform: scale(0.6); }
.ap-sep-anim-pop       .vc_sep_text { opacity: 0; transform: scale(0.4); }
.ap-sep-anim-blur-in   .vc_sep_text { opacity: 0; filter: blur(12px); transform: scale(1.05); }
.ap-sep-anim-flip      .vc_sep_text { opacity: 0; transform: perspective(600px) rotateX(-90deg); }
.ap-sep-anim-spread    .vc_sep_text { opacity: 0; letter-spacing: 18px; transform: scale(0.96); }
.ap-sep-anim-glow      .vc_sep_text { opacity: 0; }
.ap-sep-anim-rotate-in .vc_sep_text { opacity: 0; transform: rotate(-12deg) scale(0.7); }
.ap-sep-anim-slide-right .vc_sep_text { opacity: 0; transform: translateX(60px); }

/* ---------- fire when in view ---------- */
.ap-sep-anim.ap-in-view .vc_sep_text {
  opacity: 1;
  transform: none;
  filter: none;
  letter-spacing: normal;
  transition:
    opacity var(--ap-sep-dur) ease,
    transform var(--ap-sep-dur) cubic-bezier(0.22, 1, 0.36, 1),
    filter var(--ap-sep-dur) ease,
    letter-spacing var(--ap-sep-dur) ease;
}

/* pop needs an overshoot beyond the shared transition */
.ap-sep-anim-pop.ap-in-view .vc_sep_text {
  animation: ap-sep-pop var(--ap-sep-dur) cubic-bezier(0.18, 1.5, 0.4, 1) both;
  transition: opacity var(--ap-sep-dur) ease;
}
@keyframes ap-sep-pop {
  0%   { transform: scale(0.4); }
  60%  { transform: scale(1.15); }
  100% { transform: scale(1); }
}

/* neon glow flash */
.ap-sep-anim-glow.ap-in-view .vc_sep_text {
  opacity: 1;
  animation: ap-sep-glow calc(var(--ap-sep-dur) * 1.6) ease-out both;
}
@keyframes ap-sep-glow {
  0% {
    opacity: 0;
    text-shadow: 0 0 0 rgba(255, 90, 160, 0);
  }
  35% {
    opacity: 1;
    text-shadow: 0 0 22px rgba(255, 90, 160, 0.95), 0 0 40px rgba(120, 160, 255, 0.8);
  }
  100% {
    opacity: 1;
    text-shadow: 0 0 0 rgba(255, 90, 160, 0);
  }
}

/* lines-open: the two separator lines slide open from the center */
.ap-sep-anim-lines-open .vc_sep_holder .vc_sep_line {
  transform: scaleX(0);
  transition: transform var(--ap-sep-dur, 0.7s) cubic-bezier(0.22, 1, 0.36, 1);
}
.ap-sep-anim-lines-open .vc_sep_holder_l .vc_sep_line { transform-origin: right center; }
.ap-sep-anim-lines-open .vc_sep_holder_r .vc_sep_line { transform-origin: left center; }
.ap-sep-anim-lines-open .vc_sep_text { opacity: 0; transform: scale(0.9); }
.ap-sep-anim-lines-open.ap-in-view .vc_sep_holder .vc_sep_line { transform: scaleX(1); }
.ap-sep-anim-lines-open.ap-in-view .vc_sep_text { opacity: 1; transform: none; }

/* respect reduced-motion preferences */
@media (prefers-reduced-motion: reduce) {
  .ap-sep-anim .vc_sep_text,
  .ap-sep-anim .vc_sep_line {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    letter-spacing: normal !important;
    animation: none !important;
  }
}
