/* AW Bali Digital — Awwwards-inspired entrance motion */

/*
 * NOTE ON SPECIFICITY (v1.3.0 fix):
 * Every "initial state" selector below is scoped with :not(.awbm-in-view).
 * This guarantees that once JS adds .awbm-in-view, the initial-state rule
 * stops matching entirely and the .awbm-in-view "reveal" rule is the only
 * one left targeting transform/filter/clip-path — no more cascade fights
 * between two selectors of equal specificity. Without this, transform /
 * filter / clip-path never reset and the element looked "stuck" even
 * though opacity had already animated to 1.
 */

.awbm-motion {
  --awbm-duration: 900ms;
  --awbm-delay: 0ms;
  --awbm-distance: 48px;
  --awbm-ease: cubic-bezier(0.16, 1, 0.3, 1);
  --awbm-char-stagger: 30ms;
  --awbm-clip: 0%;
  opacity: 0;
  will-change: transform, opacity, filter, clip-path;
  transition:
    opacity var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
    transform var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
    filter var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
    clip-path var(--awbm-duration) var(--awbm-ease) var(--awbm-delay);
}

.awbm-motion.awbm-in-view {
  opacity: 1;
  transform: none;
  filter: none;
  clip-path: inset(0 0 0 0);
}

.awbm-motion:not(.awbm-in-view)[data-awbm-animation="fade-up"] { transform: translate3d(0, var(--awbm-distance), 0); }
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="fade-down"] { transform: translate3d(0, calc(var(--awbm-distance) * -1), 0); }
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="fade-left"] { transform: translate3d(var(--awbm-distance), 0, 0); }
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="fade-right"] { transform: translate3d(calc(var(--awbm-distance) * -1), 0, 0); }

.awbm-motion:not(.awbm-in-view)[data-awbm-animation="scale-up"] { transform: scale(.92); }
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="scale-down"] { transform: scale(1.08); }
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="blur-up"] { transform: translate3d(0, var(--awbm-distance), 0); filter: blur(12px); }
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="zoom-blur"] { transform: scale(1.08); filter: blur(10px); }

.awbm-motion[data-awbm-animation="clip-up"] { opacity: 1; }
.awbm-motion[data-awbm-animation="clip-down"] { opacity: 1; }
.awbm-motion[data-awbm-animation="clip-left"] { opacity: 1; }
.awbm-motion[data-awbm-animation="clip-right"] { opacity: 1; }

.awbm-motion:not(.awbm-in-view)[data-awbm-animation="clip-up"] {
  transform: translate3d(0, var(--awbm-distance), 0);
  clip-path: inset(100% 0 0 0);
}
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="clip-down"] {
  transform: translate3d(0, calc(var(--awbm-distance) * -1), 0);
  clip-path: inset(0 0 100% 0);
}
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="clip-left"] {
  transform: translate3d(var(--awbm-distance), 0, 0);
  clip-path: inset(0 0 0 100%);
}
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="clip-right"] {
  transform: translate3d(calc(var(--awbm-distance) * -1), 0, 0);
  clip-path: inset(0 100% 0 0);
}

.awbm-motion:not(.awbm-in-view)[data-awbm-animation="rotate"] { transform: translate3d(0, 32px, 0) rotate(3deg) scale(.98); }
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="skew-up"] { transform: translate3d(0, var(--awbm-distance), 0) skewY(4deg); }

/* Elastic Pop — a snappier, slightly bouncy scale + rise entrance */
.awbm-motion:not(.awbm-in-view)[data-awbm-animation="elastic-pop"] { transform: scale(.55) translate3d(0, 22px, 0); }
.awbm-motion.awbm-in-view[data-awbm-animation="elastic-pop"] {
  transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* Curtain Reveal — a solid panel wipes away to uncover the element */
.awbm-motion[data-awbm-animation="curtain-reveal"] {
  opacity: 1;
  transform: none;
  position: relative;
  overflow: hidden;
}
.awbm-motion[data-awbm-animation="curtain-reveal"]::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--awbm-curtain-color, #141018);
  transform: translate3d(0, 0, 0);
  transition: transform var(--awbm-duration) var(--awbm-ease) var(--awbm-delay);
  pointer-events: none;
  z-index: 2;
}
.awbm-motion.awbm-in-view[data-awbm-animation="curtain-reveal"]::after {
  transform: translate3d(101%, 0, 0);
}

.awbm-motion[data-awbm-stagger="true"] > .e-con,
.awbm-motion[data-awbm-stagger="true"] > .elementor-element {
  opacity: 0;
  transform: translate3d(0, 24px, 0);
  transition:
    opacity 700ms var(--awbm-ease),
    transform 900ms var(--awbm-ease);
}
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > .e-con,
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > .elementor-element {
  opacity: 1;
  transform: none;
}
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(1) { transition-delay: 80ms; }
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(2) { transition-delay: 160ms; }
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(3) { transition-delay: 240ms; }
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(4) { transition-delay: 320ms; }
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(5) { transition-delay: 400ms; }
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(6) { transition-delay: 480ms; }
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(7) { transition-delay: 560ms; }
.awbm-motion.awbm-in-view[data-awbm-stagger="true"] > :nth-child(8) { transition-delay: 640ms; }

@media (prefers-reduced-motion: reduce) {
  .awbm-motion,
  .awbm-motion[data-awbm-animation] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    clip-path: none !important;
    transition: none !important;
  }
  .awbm-motion[data-awbm-animation="curtain-reveal"]::after { display: none !important; }
  .awbm-motion[data-awbm-stagger="true"] > .e-con,
  .awbm-motion[data-awbm-stagger="true"] > .elementor-element {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* Text entrance animations (whole-block reveal) */
.awbm-motion[data-awbm-animation="text-up"],
.awbm-motion[data-awbm-animation="text-blur"],
.awbm-motion[data-awbm-animation="text-clip"] {
  opacity: 1;
  transform: none;
  filter: none;
  clip-path: none;
}
.awbm-motion[data-awbm-animation="text-up"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-up"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-up"] .elementor-widget-text-editor,
.awbm-motion[data-awbm-animation="text-blur"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-blur"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-blur"] .elementor-widget-text-editor,
.awbm-motion[data-awbm-animation="text-clip"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-clip"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-clip"] .elementor-widget-text-editor {
  transition: opacity var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
              transform var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
              filter var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
              clip-path var(--awbm-duration) var(--awbm-ease) var(--awbm-delay);
  will-change: transform, opacity, filter, clip-path;
}
.awbm-motion[data-awbm-animation="text-up"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-up"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-up"] .elementor-widget-text-editor { opacity: 0; transform: translateY(var(--awbm-distance)); }
.awbm-motion[data-awbm-animation="text-blur"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-blur"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-blur"] .elementor-widget-text-editor { opacity: 0; transform: translateY(20px); filter: blur(12px); }
.awbm-motion[data-awbm-animation="text-clip"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-clip"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-clip"] .elementor-widget-text-editor { opacity: 0; transform: translateY(20px); clip-path: inset(0 0 100% 0); }
.awbm-motion.awbm-in-view[data-awbm-animation="text-up"] .elementor-widget-container,
.awbm-motion.awbm-in-view[data-awbm-animation="text-up"] .elementor-heading-title,
.awbm-motion.awbm-in-view[data-awbm-animation="text-up"] .elementor-widget-text-editor,
.awbm-motion.awbm-in-view[data-awbm-animation="text-blur"] .elementor-widget-container,
.awbm-motion.awbm-in-view[data-awbm-animation="text-blur"] .elementor-heading-title,
.awbm-motion.awbm-in-view[data-awbm-animation="text-blur"] .elementor-widget-text-editor,
.awbm-motion.awbm-in-view[data-awbm-animation="text-clip"] .elementor-widget-container,
.awbm-motion.awbm-in-view[data-awbm-animation="text-clip"] .elementor-heading-title,
.awbm-motion.awbm-in-view[data-awbm-animation="text-clip"] .elementor-widget-text-editor { opacity: 1; transform: none; filter: none; clip-path: inset(0); }

/* Text Reveal Per Character / Per Word (v1.3.0)
 * JS wraps each character/word of the text into a .awbm-char / .awbm-word
 * span and sets --awbm-i (its index) inline. The wrapper itself is always
 * visible — only the individual glyph/word spans animate, staggered via
 * --awbm-i * --awbm-char-stagger. */
.awbm-motion[data-awbm-animation="text-char"],
.awbm-motion[data-awbm-animation="text-word"] {
  opacity: 1;
  transform: none;
  filter: none;
  clip-path: none;
}
.awbm-motion[data-awbm-animation="text-char"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-char"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-char"] .elementor-widget-text-editor,
.awbm-motion[data-awbm-animation="text-word"] .elementor-widget-container,
.awbm-motion[data-awbm-animation="text-word"] .elementor-heading-title,
.awbm-motion[data-awbm-animation="text-word"] .elementor-widget-text-editor {
  opacity: 1;
}

.awbm-char,
.awbm-word {
  display: inline-block;
  opacity: 0;
  transform: translate3d(0, 0.55em, 0);
  transition: opacity calc(var(--awbm-duration) * 0.6) var(--awbm-ease),
              transform calc(var(--awbm-duration) * 0.6) var(--awbm-ease);
  transition-delay: calc(var(--awbm-delay) + (var(--awbm-i, 0) * var(--awbm-char-stagger)));
  will-change: transform, opacity;
}
.awbm-word { margin-right: 0.28em; }

.awbm-motion.awbm-in-view .awbm-char,
.awbm-motion.awbm-in-view .awbm-word {
  opacity: 1;
  transform: none;
}

/* Image entrance animations */
.awbm-motion[data-awbm-animation="image-reveal"],
.awbm-motion[data-awbm-animation="image-zoom"],
.awbm-motion[data-awbm-animation="image-slide"] { opacity: 1; transform: none; filter: none; clip-path: none; }
.awbm-motion[data-awbm-animation="image-reveal"] img,
.awbm-motion[data-awbm-animation="image-zoom"] img,
.awbm-motion[data-awbm-animation="image-slide"] img {
  display: block;
  width: 100%;
  transition: transform var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
              opacity var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
              filter var(--awbm-duration) var(--awbm-ease) var(--awbm-delay),
              clip-path var(--awbm-duration) var(--awbm-ease) var(--awbm-delay);
  will-change: transform, opacity, filter, clip-path;
}
.awbm-motion[data-awbm-animation="image-reveal"] img { opacity: 0; clip-path: inset(0 0 100% 0); transform: scale(1.04); }
.awbm-motion[data-awbm-animation="image-zoom"] img { opacity: 0; transform: scale(1.12); filter: blur(4px); }
.awbm-motion[data-awbm-animation="image-slide"] img { opacity: 0; transform: translateX(var(--awbm-distance)); clip-path: inset(0 0 0 100%); }
.awbm-motion.awbm-in-view[data-awbm-animation="image-reveal"] img,
.awbm-motion.awbm-in-view[data-awbm-animation="image-zoom"] img,
.awbm-motion.awbm-in-view[data-awbm-animation="image-slide"] img { opacity: 1; transform: none; filter: none; clip-path: inset(0); }

@media (prefers-reduced-motion: reduce) {
  .awbm-motion[data-awbm-animation^="text-"] .elementor-widget-container,
  .awbm-motion[data-awbm-animation^="text-"] .elementor-heading-title,
  .awbm-motion[data-awbm-animation^="text-"] .elementor-widget-text-editor,
  .awbm-motion[data-awbm-animation^="image-"] img,
  .awbm-char,
  .awbm-word { opacity: 1 !important; transform: none !important; filter: none !important; clip-path: none !important; transition: none !important; }
}
