.mbfe-split-text-wrap,
.mbfe-blur-text-wrap,
.mbfe-shiny-text-wrap,
.mbfe-magnet-button-wrap {
  width: 100%;
}

.mbfe-split-text,
.mbfe-blur-text,
.mbfe-shiny-text {
  display: inline-block;
  white-space: normal;
  word-wrap: break-word;
}

.mbfe-split-word,
.mbfe-blur-word {
  display: inline-block;
  white-space: nowrap;
}

.mbfe-split-char,
.mbfe-blur-char {
  display: inline-block;
}

.mbfe-shiny-text {
  color: var(--mbfe-shiny-base, #8a8a8a);
  background-image: linear-gradient(
    110deg,
    var(--mbfe-shiny-base, #8a8a8a) 0%,
    var(--mbfe-shiny-base, #8a8a8a) calc(50% - var(--mbfe-shiny-width, 22%)),
    var(--mbfe-shiny-shine, #ffffff) 50%,
    var(--mbfe-shiny-base, #8a8a8a) calc(50% + var(--mbfe-shiny-width, 22%)),
    var(--mbfe-shiny-base, #8a8a8a) 100%
  );
  background-size: 180% 100%;
  background-position: 160% center;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: mbfe-shiny-text var(--mbfe-shiny-speed, 3.5s) linear infinite;
}

@keyframes mbfe-shiny-text {
  0% { background-position: 160% center; }
  100% { background-position: -160% center; }
}

.mbfe-magnet-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  position: relative;
  line-height: 1;
  text-decoration: none !important;
  transform: translate3d(0, 0, 0);
  will-change: transform;
  transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.mbfe-magnet-button-text {
  display: inline-block;
  pointer-events: none;
  will-change: transform;
}

.mbfe-spotlight-card,
.mbfe-tilt-card {
  display: block;
  text-decoration: none !important;
  color: inherit;
}

.mbfe-spotlight-card {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.mbfe-spotlight-glow {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  pointer-events: none;
  border-radius: 999px;
  background: radial-gradient(circle, var(--mbfe-spotlight-color, rgba(255,255,255,0.22)), transparent 65%);
  transition: opacity 0.25s ease;
  z-index: 0;
  will-change: transform, opacity;
}

.mbfe-spotlight-content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.mbfe-spotlight-eyebrow,
.mbfe-spotlight-title,
.mbfe-spotlight-description,
.mbfe-tilt-title,
.mbfe-tilt-description {
  display: block;
}

.mbfe-spotlight-eyebrow {
  font-size: 0.82rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.mbfe-spotlight-title,
.mbfe-tilt-title {
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.15;
}

.mbfe-spotlight-description,
.mbfe-tilt-description {
  line-height: 1.6;
}

.mbfe-tilt-card {
  perspective: 1000px;
}

.mbfe-tilt-card-inner {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 18px;
  overflow: hidden;
  transform-style: preserve-3d;
  transform: perspective(900px) rotateX(0deg) rotateY(0deg) translateY(0px);
  transition: transform 0.45s cubic-bezier(0.2, 0.8, 0.2, 1);
  will-change: transform;
}

.mbfe-tilt-card:hover .mbfe-tilt-card-inner {
  transition-duration: 0.12s;
}

.mbfe-tilt-image {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
  transform: translateZ(32px);
}

.mbfe-tilt-content {
  display: flex;
  flex-direction: column;
  gap: 10px;
  position: relative;
  z-index: 1;
  transform: translateZ(42px);
}

.mbfe-tilt-glare {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
  z-index: 0;
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-split-word,
  .mbfe-split-char,
  .mbfe-blur-word,
  .mbfe-blur-char {
    transform: none !important;
    opacity: 1 !important;
    filter: none !important;
  }

  .mbfe-shiny-text {
    animation: none !important;
    background-position: center !important;
  }

  .mbfe-magnet-button,
  .mbfe-magnet-button-text,
  .mbfe-tilt-card-inner,
  .mbfe-tilt-image,
  .mbfe-tilt-content {
    transform: none !important;
    transition: none !important;
  }
}

.mbfe-motion-effect {
  position: relative;
  transform-style: preserve-3d;
  will-change: transform;
}

.mbfe-motion-effect--spotlight,
.mbfe-motion-effect--both {
  overflow: hidden !important;
  isolation: isolate;
  contain: paint;
}

.mbfe-motion-spotlight-glow {
  position: absolute;
  width: var(--mbfe-container-spotlight-size, 360px);
  height: var(--mbfe-container-spotlight-size, 360px);
  left: var(--mbfe-container-spotlight-x, 50%);
  top: var(--mbfe-container-spotlight-y, 50%);
  transform: translate3d(-50%, -50%, 0);
  opacity: 0;
  pointer-events: none;
  border-radius: 999px;
  background: radial-gradient(circle, var(--mbfe-container-spotlight-color, rgba(255,255,255,0.22)), rgba(255,255,255,0.08) 34%, transparent 70%);
  z-index: 1;
  max-width: 100%;
  max-height: 100%;
  will-change: left, top, opacity;
}

.mbfe-motion-effect--spotlight > :not(.mbfe-motion-spotlight-glow),
.mbfe-motion-effect--both > :not(.mbfe-motion-spotlight-glow) {
  position: relative;
  z-index: 2;
}

.mbfe-motion-effect--tilt,
.mbfe-motion-effect--both {
  transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
}

.mbfe-motion-effect--tilt:hover,
.mbfe-motion-effect--both:hover {
  transition-duration: 0s;
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-motion-effect {
    transform: none !important;
    transition: none !important;
  }

  .mbfe-motion-spotlight-glow {
    opacity: 0 !important;
  }
}

/* Shiny Text uses inline render values plus Elementor selector overrides. */

.mbfe-tilt-card {
  --mbfe-tilt-card-popout-depth: 70px;
  transform-style: preserve-3d;
}

.mbfe-tilt-image {
  transform: translateZ(calc(var(--mbfe-tilt-card-popout-depth, 42px) * 0.78));
}

.mbfe-tilt-content {
  transform: translateZ(var(--mbfe-tilt-card-popout-depth, 42px));
}

.mbfe-motion-effect--3d-popout {
  transform-style: preserve-3d;
  perspective-origin: center;
}

.mbfe-motion-effect--3d-popout > :not(.mbfe-motion-spotlight-glow),
.mbfe-motion-effect--3d-popout .e-con-inner,
.mbfe-motion-effect--3d-popout .elementor-container,
.mbfe-motion-effect--3d-popout .elementor-widget-wrap {
  transform-style: preserve-3d;
}

.mbfe-motion-effect--3d-popout .e-con-inner > .elementor-element,
.mbfe-motion-effect--3d-popout .elementor-container > .elementor-column,
.mbfe-motion-effect--3d-popout .elementor-widget-wrap > .elementor-element,
.mbfe-motion-effect--3d-popout > .elementor-element:not(.mbfe-motion-spotlight-glow) {
  transform: translateZ(var(--mbfe-tilt-popout-depth, 70px));
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-motion-effect--3d-popout .e-con-inner > .elementor-element,
  .mbfe-motion-effect--3d-popout .elementor-container > .elementor-column,
  .mbfe-motion-effect--3d-popout .elementor-widget-wrap > .elementor-element,
  .mbfe-motion-effect--3d-popout > .elementor-element:not(.mbfe-motion-spotlight-glow) {
    transform: none !important;
  }
}

/* Motion Bits Background Effects */
.mbfe-background-effect {
  position: relative;
  overflow: hidden !important;
  isolation: isolate;
  contain: paint;
}

.mbfe-background-layer {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 1;
  overflow: hidden;
  border-radius: inherit;
  transform: translateZ(0);
}

.mbfe-background-effect > :not(.mbfe-background-layer):not(.mbfe-motion-spotlight-glow) {
  position: relative;
  z-index: 1;
}

.mbfe-background-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.mbfe-background-layer--aurora {
  background: transparent;
}

.mbfe-background-layer--aurora-fallback {
  background:
    radial-gradient(circle at 24% 20%, rgba(82, 39, 255, 0.65), transparent 36%),
    radial-gradient(circle at 72% 18%, rgba(124, 255, 103, 0.5), transparent 34%),
    radial-gradient(circle at 52% 92%, rgba(82, 39, 255, 0.55), transparent 42%);
  filter: blur(18px);
}

.mbfe-background-layer--dot_grid {
  background: transparent;
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-background-layer,
  .mbfe-background-canvas {
    transform: none !important;
  }
}

.mbfe-background-layer--beams,
.mbfe-background-layer--gradient_blinds,
.mbfe-background-layer--silk {
  background: transparent;
}

/* v0.5.0 - practical motion widgets */
.mbfe-rotating-text-wrap,
.mbfe-decrypted-text-wrap {
  width: 100%;
}

.mbfe-rotating-text,
.mbfe-decrypted-text {
  display: inline-block;
  margin: 0;
}

.mbfe-rotating-words {
  position: relative;
  display: inline-grid;
  vertical-align: baseline;
  overflow: hidden;
  line-height: 1.12;
}

.mbfe-rotating-word {
  grid-area: 1 / 1;
  display: inline-block;
  opacity: 0;
  transform: translate3d(0, 110%, 0);
  transition: opacity var(--mbfe-rotate-duration, 0.55s) ease, transform var(--mbfe-rotate-duration, 0.55s) cubic-bezier(0.16, 1, 0.3, 1), filter var(--mbfe-rotate-duration, 0.55s) ease;
  will-change: transform, opacity, filter;
}

.mbfe-rotating-word.is-active {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

.mbfe-rotating-word.is-leaving {
  opacity: 0;
  transform: translate3d(0, -110%, 0);
}

.mbfe-rotating-style-fade .mbfe-rotating-word {
  transform: translate3d(0, 0, 0);
}

.mbfe-rotating-style-fade .mbfe-rotating-word.is-leaving {
  transform: translate3d(0, 0, 0);
}

.mbfe-rotating-style-blur .mbfe-rotating-word {
  transform: translate3d(0, 40%, 0);
  filter: blur(10px);
}

.mbfe-rotating-style-blur .mbfe-rotating-word.is-active {
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

.mbfe-rotating-style-blur .mbfe-rotating-word.is-leaving {
  transform: translate3d(0, -35%, 0);
  filter: blur(10px);
}

.mbfe-rotating-style-flip .mbfe-rotating-words {
  perspective: 700px;
}

.mbfe-rotating-style-flip .mbfe-rotating-word {
  transform: rotateX(-82deg) translateY(18%);
  transform-origin: 50% 50%;
}

.mbfe-rotating-style-flip .mbfe-rotating-word.is-active {
  transform: rotateX(0deg) translateY(0);
}

.mbfe-rotating-style-flip .mbfe-rotating-word.is-leaving {
  transform: rotateX(82deg) translateY(-18%);
}

.mbfe-decrypted-text {
  white-space: pre-wrap;
  font-variant-ligatures: none;
}

.mbfe-decrypted-text.is-scrambling {
  text-shadow: 0 0 0.35em currentColor;
}

.mbfe-animated-list {
  --mbfe-list-line-color: rgba(82,39,255,0.28);
  display: flex;
  width: 100%;
}

.mbfe-animated-list--vertical {
  flex-direction: column;
}

.mbfe-animated-list--horizontal {
  flex-direction: row;
  align-items: stretch;
}

.mbfe-animated-list--horizontal .mbfe-animated-list-item {
  flex: 1 1 0;
}

.mbfe-animated-list-item {
  position: relative;
}

.mbfe-animated-list--line.mbfe-animated-list--vertical .mbfe-animated-list-item:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 31px;
  top: calc(100% - 1px);
  width: 1px;
  height: var(--mbfe-list-line-height, 18px);
  background: var(--mbfe-list-line-color);
  pointer-events: none;
}

.mbfe-animated-list--line.mbfe-animated-list--horizontal .mbfe-animated-list-item:not(:last-child)::after {
  content: "";
  position: absolute;
  left: calc(100% - 1px);
  top: 31px;
  width: var(--mbfe-list-line-height, 18px);
  height: 1px;
  background: var(--mbfe-list-line-color);
  pointer-events: none;
}

.mbfe-animated-list-item-inner {
  position: relative;
  display: grid;
  grid-template-columns: auto auto 1fr;
  gap: 14px;
  align-items: flex-start;
  height: 100%;
  color: inherit;
  text-decoration: none !important;
  transition: transform 0.28s ease, background-color 0.28s ease, border-color 0.28s ease, box-shadow 0.28s ease;
}

.mbfe-animated-list-item-inner:hover {
  transform: translate3d(0, -4px, 0);
}

.mbfe-animated-list-index {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid var(--mbfe-list-line-color);
  font-size: 0.78rem;
  line-height: 1;
  opacity: 0.7;
}

.mbfe-animated-list-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  font-size: 20px;
  line-height: 1;
}

.mbfe-animated-list-copy {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.mbfe-animated-list-title,
.mbfe-animated-list-description {
  display: block;
}

.mbfe-animated-list-title {
  font-weight: 700;
  line-height: 1.2;
}

.mbfe-animated-list-description {
  line-height: 1.55;
  opacity: 0.78;
}

.mbfe-entrance-effect {
  will-change: transform, opacity, filter;
}

@media (max-width: 767px) {
  .mbfe-animated-list--horizontal {
    flex-direction: column;
  }
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-rotating-word,
  .mbfe-animated-list-item,
  .mbfe-entrance-effect {
    transform: none !important;
    opacity: 1 !important;
    filter: none !important;
    transition: none !important;
  }
  .mbfe-decrypted-text {
    text-shadow: none !important;
  }
}

/* Animated List must not inherit Elementor's invisible entrance state.
   The widget has its own GSAP reveal, so Elementor's visibility gate can hide it on the frontend. */
.elementor-widget-mbfe-animated-list.elementor-invisible,
.elementor-widget-mbfe-animated-list .elementor-invisible {
  visibility: visible !important;
  opacity: 1 !important;
}

/* v0.6.1 - Magnetic Hover parity patch */
.mbfe-hover-effects {
  position: relative;
  isolation: isolate;
  transform-style: preserve-3d;
  will-change: transform;
}

.mbfe-hover-effects--glare,
.mbfe-hover-effects--spotlight,
.mbfe-hover-effects--border {
  overflow: hidden !important;
  border-radius: inherit;
  contain: paint;
}

.mbfe-hover-effects > :not(.mbfe-hover-glare-layer):not(.mbfe-hover-border-layer):not(.mbfe-hover-spotlight-layer):not(.mbfe-motion-spotlight-glow):not(.mbfe-background-layer) {
  position: relative;
  z-index: 2;
}

.mbfe-hover-glare-layer,
.mbfe-hover-spotlight-layer,
.mbfe-hover-border-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  opacity: 0;
  z-index: 1;
  will-change: opacity, background, transform;
}

.mbfe-hover-glare-layer {
  background:
    radial-gradient(
      circle at var(--mbfe-hover-x, 50%) var(--mbfe-hover-y, 50%),
      var(--mbfe-hover-glare-color, rgba(255,255,255,0.42)) 0%,
      rgba(255,255,255,0.12) 24%,
      transparent 58%
    );
  width: var(--mbfe-hover-glare-size, 420px);
  height: var(--mbfe-hover-glare-size, 420px);
  inset: auto;
  left: calc(var(--mbfe-hover-x, 50%) - (var(--mbfe-hover-glare-size, 420px) / 2));
  top: calc(var(--mbfe-hover-y, 50%) - (var(--mbfe-hover-glare-size, 420px) / 2));
  background-position: center;
  background-size: 100% 100%;
  mix-blend-mode: screen;
}

.mbfe-hover-spotlight-layer {
  background: radial-gradient(
    circle at var(--mbfe-hover-x, 50%) var(--mbfe-hover-y, 50%),
    var(--mbfe-hover-spotlight-color, rgba(255,255,255,0.24)) 0%,
    rgba(255,255,255,0.07) 34%,
    transparent 72%
  );
  background-size: var(--mbfe-hover-spotlight-size, 360px) var(--mbfe-hover-spotlight-size, 360px);
  background-repeat: no-repeat;
  background-position:
    calc(var(--mbfe-hover-x, 50%) - (var(--mbfe-hover-spotlight-size, 360px) / 2))
    calc(var(--mbfe-hover-y, 50%) - (var(--mbfe-hover-spotlight-size, 360px) / 2));
}

.mbfe-hover-border-layer {
  padding: var(--mbfe-hover-border-width, 1px);
  background:
    radial-gradient(
      circle at var(--mbfe-hover-x, 50%) var(--mbfe-hover-y, 50%),
      var(--mbfe-hover-border-color, #5227FF),
      transparent 42%
    ),
    linear-gradient(135deg, transparent, var(--mbfe-hover-border-color, #5227FF), transparent);
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  filter: drop-shadow(0 0 18px var(--mbfe-hover-border-color, #5227FF));
}

.mbfe-hover-effects--border-idle .mbfe-hover-border-layer {
  opacity: 0.35;
}

.mbfe-hover-effects--magnetic {
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-hover-effects {
    transform: none !important;
    transition: none !important;
  }

  .mbfe-hover-glare-layer,
  .mbfe-hover-spotlight-layer,
  .mbfe-hover-border-layer {
    opacity: 0 !important;
  }
}

/* v0.7.0 - Scroll Interaction Pack */
.mbfe-scroll-stack {
  position: relative;
  width: 100%;
  --mbfe-stack-default-card-color: #111111;
  --mbfe-stack-default-card-text: #ffffff;
}

.mbfe-scroll-stack-card {
  position: sticky;
  top: var(--mbfe-stack-top, 12vh);
  transform-style: preserve-3d;
  will-change: transform;
}

.mbfe-scroll-stack-card-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(180px, 0.95fr);
  gap: clamp(24px, 5vw, 72px);
  align-items: center;
  min-height: 420px;
  padding: clamp(28px, 5vw, 64px);
  border-radius: 28px;
  background: var(--mbfe-stack-card-color, var(--mbfe-stack-default-card-color, #111111));
  color: var(--mbfe-stack-card-text, var(--mbfe-stack-default-card-text, #ffffff));
  overflow: hidden;
  text-decoration: none !important;
  box-shadow: 0 24px 80px rgba(0,0,0,0.22);
}

.mbfe-scroll-stack-content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.mbfe-scroll-stack-eyebrow {
  display: inline-flex;
  margin-bottom: 14px;
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: 0.72;
}

.mbfe-scroll-stack-title {
  margin: 0 0 16px;
  color: inherit;
  font-size: clamp(2rem, 5vw, 4.4rem);
  line-height: 0.95;
}

.mbfe-scroll-stack-description {
  margin: 0;
  max-width: 58ch;
  color: inherit;
  opacity: 0.78;
  font-size: 1.05rem;
  line-height: 1.6;
}

.mbfe-scroll-stack-button {
  display: inline-flex;
  margin-top: 28px;
  padding: 0.8em 1.15em;
  border-radius: 999px;
  background: rgba(255,255,255,0.12);
  color: inherit;
  line-height: 1;
}

.mbfe-scroll-stack-template {
  position: relative;
  z-index: 2;
  width: 100%;
}

.mbfe-scroll-stack-card-inner--template {
  display: block;
}

.mbfe-scroll-stack-media {
  position: relative;
  z-index: 1;
  align-self: stretch;
  min-height: 240px;
  border-radius: inherit;
  overflow: hidden;
}

.mbfe-scroll-stack-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.mbfe-scroll-velocity {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
  contain: paint;
}

.mbfe-scroll-velocity-text {
  display: block;
  margin: 0;
  color: inherit;
  line-height: 1;
  white-space: nowrap;
}

.mbfe-scroll-velocity-track {
  display: inline-flex;
  align-items: center;
  width: max-content;
  will-change: transform;
}

.mbfe-scroll-velocity-item {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 32px;
  padding-inline: 16px;
}

.mbfe-scroll-velocity-copy,
.mbfe-scroll-velocity-separator {
  display: inline-block;
}

.mbfe-scroll-velocity-text--stroke {
  color: transparent;
  -webkit-text-stroke-width: 1px;
  -webkit-text-stroke-color: currentColor;
}

.mbfe-entrance-effect[data-mbfe-entrance-effect] {
  backface-visibility: hidden;
}

@media (max-width: 767px) {
  .mbfe-scroll-stack-card {
    position: relative;
    top: auto !important;
  }

  .mbfe-scroll-stack-card-inner {
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .mbfe-scroll-stack-media {
    min-height: 180px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-scroll-stack-card,
  .mbfe-scroll-velocity-track {
    transform: none !important;
  }
}

/* v0.7.3 - Live/container Scroll Stack */
.mbfe-scroll-stack-live {
  position: relative;
  --mbfe-live-stack-top: 12vh;
  --mbfe-live-stack-gap: 24px;
}

.mbfe-scroll-stack-live-card {
  position: sticky !important;
  top: var(--mbfe-live-stack-top, 12vh);
  transform-style: preserve-3d;
  will-change: transform, background-color;
  backface-visibility: hidden;
}

.mbfe-scroll-stack-live-card > .e-con-inner,
.mbfe-scroll-stack-live-card > .elementor-widget-container,
.mbfe-scroll-stack-live-card > .elementor-container,
.mbfe-scroll-stack-live-card > .elementor-widget-wrap {
  position: relative;
  z-index: 1;
}

@media (max-width: 767px) {
  .mbfe-scroll-stack-live-card {
    position: relative !important;
    top: auto !important;
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-scroll-stack-live-card {
    transform: none !important;
  }
}

/* v0.8.0 - Cursor effects */
.mbfe-cursor-effects--hide-native,
.mbfe-cursor-effects--hide-native * {
  cursor: none !important;
}

.mbfe-cursor-follower {
  position: fixed;
  left: 0;
  top: 0;
  width: var(--mbfe-cursor-size, 44px);
  height: var(--mbfe-cursor-size, 44px);
  border-radius: 999px;
  background: var(--mbfe-cursor-color-local, var(--mbfe-cursor-color, #fff));
  opacity: 0;
  pointer-events: none;
  z-index: 999999;
  transition: opacity 0.18s ease;
  will-change: transform, opacity;
}

.mbfe-cursor-follower--border {
  background: transparent;
  border: 1.5px solid var(--mbfe-cursor-color-local, var(--mbfe-cursor-color, #fff));
}

.mbfe-cursor-follower.is-visible {
  opacity: 1;
}

.mbfe-cursor-pixel {
  position: fixed;
  display: block;
  pointer-events: none;
  z-index: 999997;
  animation: mbfe-cursor-pixel-life var(--mbfe-pixel-life, 0.75s) ease forwards;
  will-change: transform, opacity;
}

.mbfe-cursor-pixel--circle {
  border-radius: 999px;
}

@keyframes mbfe-cursor-pixel-life {
  0% { opacity: 1; transform: translate3d(-50%,-50%,0) scale(1) rotate(0deg); }
  100% { opacity: 0; transform: translate3d(-50%,-50%,0) scale(0.2) rotate(80deg); }
}

.mbfe-cursor-text-trail {
  position: fixed;
  left: 0;
  top: 0;
  display: inline-block;
  pointer-events: none;
  opacity: 0;
  line-height: 1;
  font-weight: 700;
  white-space: nowrap;
  transition: opacity 0.18s ease;
  will-change: transform, opacity;
  mix-blend-mode: difference;
}

.mbfe-cursor-text-trail.is-visible {
  opacity: 1;
}

/* v0.8.0 - Image Reveal Menu */
.mbfe-image-reveal-menu {
  position: relative;
}

.mbfe-image-reveal-list {
  display: flex;
  flex-direction: column;
}

.mbfe-image-reveal-item {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 24px;
  border-top: 1px solid rgba(255,255,255,0.16);
  text-decoration: none !important;
  transition: background-color 0.25s ease, padding-left 0.25s ease;
  overflow: hidden;
}

.mbfe-image-reveal-item:last-child {
  border-bottom: 1px solid rgba(255,255,255,0.16);
}

.mbfe-image-reveal-item:hover,
.mbfe-image-reveal-item.is-active {
  padding-left: calc(var(--mbfe-image-reveal-hover-push, 12px) + 20px);
}

.mbfe-image-reveal-title,
.mbfe-image-reveal-meta,
.mbfe-image-reveal-arrow {
  position: relative;
  z-index: 1;
}

.mbfe-image-reveal-title {
  font-size: clamp(2rem, 5vw, 5rem);
  line-height: 0.95;
  font-weight: 700;
}

.mbfe-image-reveal-meta {
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.mbfe-image-reveal-arrow {
  font-size: 1.5rem;
  transition: transform 0.25s ease;
}

.mbfe-image-reveal-item:hover .mbfe-image-reveal-arrow,
.mbfe-image-reveal-item.is-active .mbfe-image-reveal-arrow {
  transform: translateX(8px);
}

.mbfe-image-reveal-preview {
  position: fixed;
  left: 0;
  top: 0;
  width: 320px;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  z-index: 999996;
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
  transition: opacity 0.22s ease, clip-path 0.32s ease;
  will-change: transform, opacity;
  clip-path: inset(0 0 0 0 round inherit);
}

.mbfe-image-reveal-preview img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
  transform: scale(1.08);
  transition: transform 0.35s ease;
}

.mbfe-image-reveal-preview.is-visible {
  opacity: 1;
}

.mbfe-image-reveal-preview.is-visible img {
  transform: scale(1);
}

.mbfe-image-reveal-preview--clip {
  clip-path: inset(0 100% 0 0 round inherit);
}

.mbfe-image-reveal-preview--clip.is-visible {
  clip-path: inset(0 0 0 0 round inherit);
}

.mbfe-image-reveal-preview--fade img {
  transform: scale(1);
}

@media (max-width: 767px), (pointer: coarse) {
  .mbfe-cursor-follower,
  .mbfe-cursor-pixel,
  .mbfe-cursor-text-trail,
  .mbfe-image-reveal-preview {
    display: none !important;
  }

  .mbfe-cursor-effects--hide-native,
  .mbfe-cursor-effects--hide-native * {
    cursor: auto !important;
  }

  .mbfe-image-reveal-item {
    grid-template-columns: 1fr auto;
  }

  .mbfe-image-reveal-meta {
    display: none;
  }
}

/* v0.8.1 - Image Reveal as hover effect */
.mbfe-hover-image-reveal-preview {
  position: fixed;
  left: 0;
  top: 0;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
  transition: opacity 0.22s ease, clip-path 0.32s ease;
  will-change: transform, opacity;
  clip-path: inset(0 0 0 0 round inherit);
}

.mbfe-hover-image-reveal-preview img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
  transform: scale(1.08);
  transition: transform 0.35s ease;
}

.mbfe-hover-image-reveal-preview[style*="opacity: 1"] img,
.mbfe-hover-image-reveal-preview.is-visible img {
  transform: scale(1);
}

.mbfe-hover-image-reveal-preview--clip {
  clip-path: inset(0 100% 0 0 round inherit);
}

.mbfe-hover-image-reveal-preview--clip[style*="opacity: 1"],
.mbfe-hover-image-reveal-preview--clip.is-visible {
  clip-path: inset(0 0 0 0 round inherit);
}

.mbfe-hover-image-reveal-preview--fade img {
  transform: scale(1);
}

@media (max-width: 767px), (pointer: coarse) {
  .mbfe-hover-image-reveal-preview {
    display: none !important;
  }
}

/* v0.8.2 - Transparent image reveal previews for PNG/AVIF assets */
.mbfe-image-reveal-preview,
.mbfe-hover-image-reveal-preview {
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
  border: 0 !important;
  outline: 0 !important;
}

.mbfe-image-reveal-preview img,
.mbfe-hover-image-reveal-preview img {
  background: transparent !important;
  box-shadow: none !important;
  filter: none !important;
  object-fit: contain;
}

/* Motion Bits Text Effects */
.mbfe-text-effects .mbfe-text-effect-char {
  display: inline-block;
  white-space: pre;
  transform-origin: center center;
  will-change: transform, opacity;
}

.mbfe-text-effects--mask .mbfe-text-effect-char,
.mbfe-text-effects--wave .mbfe-text-effect-char,
.mbfe-text-effects--proximity .mbfe-text-effect-char {
  backface-visibility: hidden;
}

/* Motion Bits Text Effects refinements */
.mbfe-text-effects .mbfe-text-effect-char-wrap {
  display: inline-block;
  vertical-align: baseline;
  white-space: pre;
}

.mbfe-text-effects--mask .mbfe-text-effect-char-wrap {
  overflow: hidden;
}

.mbfe-text-effects .mbfe-text-effect-char {
  display: inline-block;
  transform-origin: 50% 80%;
  will-change: transform, opacity, font-variation-settings;
}

.mbfe-text-effects .mbfe-text-effect-word-wrap,
.mbfe-text-effects .mbfe-text-effect-word,
.mbfe-text-effects .mbfe-text-effect-line-wrap,
.mbfe-text-effects .mbfe-text-effect-line {
  vertical-align: baseline;
  transform-origin: 50% 100%;
  backface-visibility: hidden;
}

.mbfe-text-effects .mbfe-text-effect-word-wrap,
.mbfe-text-effects .mbfe-text-effect-word,
.mbfe-text-effects .mbfe-text-effect-line {
  display: inline-block;
}

.mbfe-text-effects .mbfe-text-effect-line-wrap {
  display: block;
  overflow: hidden;
}

.mbfe-text-effects .mbfe-text-effect-token {
  white-space: pre-wrap;
}

/* v1.9.29 - block-mode line splits are measured into visual lines first; the
   generated line must never rewrap afterwards (no mid-word hyphen breaks, no
   theme-forced word breaking). Scoped to generated block-mode lines only —
   never the original paragraph or rich-mode in-place word wraps. */
[data-mbfe-text-lines-mode="block"] > .mbfe-text-effect-line-wrap > .mbfe-text-effect-line,
[data-mbfe-text-lines-mode="block"] .mbfe-text-effect-line .mbfe-text-effect-token--word {
  white-space: nowrap;
  word-break: normal;
  overflow-wrap: normal;
  -webkit-hyphens: manual;
  hyphens: manual;
}

/* v1.9.30 - flash-of-unstyled-text prevention. PHP renders
   data-mbfe-text-prehide="1" on the widget wrapper for load triggers (and for
   scroll triggers when the admin "Hide Text Before Scroll Animation" setting is
   on). These rules hide ONLY the known text targets - visibility keeps layout,
   never display - until JS finishes splitting/prepping and stamps
   data-mbfe-text-prehide-released="true" on the wrapper. The zero-duration
   keyframe below is a no-JS/failed-JS failsafe: it forces the text visible
   after 4s even if the script never runs, so text can never stay hidden. */
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-heading-title,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-button-text,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-icon-box-title,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-image-box-title,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > h1,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > h2,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > h3,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > h4,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > h5,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > h6,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > p,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > span,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > ul > li,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container > ol > li,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > h1,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > h2,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > h3,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > h4,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > h5,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > h6,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > p,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > span,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > ul > li,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor > ol > li,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .mbfe-text-direct-text-target,
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]).elementor-widget-text-editor:not(:has(.elementor-widget-container)):not(:has(*)),
.mbfe-text-effects[data-mbfe-text-prehide="1"]:not([data-mbfe-text-prehide-released="true"]) .elementor-widget-container:not(:has(*)) {
  visibility: hidden;
  animation: mbfe-text-prehide-failsafe 0s linear 4s forwards;
}

@keyframes mbfe-text-prehide-failsafe {
  to {
    visibility: visible;
  }
}

/* v1.9.3 - splitting wraps text nodes in place, so links/bold/spans survive.
   Underlines do not propagate into inline-block boxes; chain them down. */
.mbfe-text-effects a .mbfe-text-effect-char-wrap,
.mbfe-text-effects a .mbfe-text-effect-char,
.mbfe-text-effects a .mbfe-text-effect-word-wrap,
.mbfe-text-effects a .mbfe-text-effect-word {
  text-decoration: inherit;
}

.mbfe-text-effects[class*="mbfe-text-effects--gsap_"] {
  text-rendering: geometricPrecision;
}

.mbfe-text-effects--gsap_skew_reveal .mbfe-text-effect-word-wrap,
.mbfe-text-effects--gsap_reveal_wipe,
.mbfe-text-effects--gsap_liquid_fill,
.mbfe-text-effects--gsap_curtain_reveal,
.mbfe-text-effects--gsap_slide_up_reveal,
.mbfe-text-effects--gsap_lines_up .mbfe-text-effect-line-wrap {
  overflow: hidden;
}

.mbfe-text-collection-target {
  transform-style: preserve-3d;
  backface-visibility: hidden;
}

.mbfe-text-effects [style*="will-change"] {
  backface-visibility: hidden;
}

.mbfe-text-effects--scramble,
.mbfe-text-effects--wave,
.mbfe-text-effects--proximity,
.mbfe-text-effects--mask {
  text-rendering: geometricPrecision;
}


/* v0.9.2 - Character Wave hover reliability */
.mbfe-text-effects--wave .mbfe-text-effect-char-wrap,
.mbfe-text-effects--wave .mbfe-text-effect-char {
  pointer-events: none;
}

.mbfe-text-effects--wave .mbfe-text-effect-char {
  display: inline-block;
  transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  transform-origin: 50% 80%;
}

/* v1.3.0 - production fallback safety */
.mbfe-motion-fallback,
.mbfe-effect-fallback,
.mbfe-js-failed .mbfe-split-text,
.mbfe-js-failed .mbfe-blur-text,
.mbfe-js-failed .mbfe-animated-list,
.mbfe-js-failed .mbfe-scroll-stack,
.mbfe-js-failed .mbfe-scroll-velocity-text,
.mbfe-js-failed [data-mbfe-entrance],
.mbfe-js-failed [data-mbfe-text-effects] {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  filter: none !important;
  clip-path: none !important;
}

.elementor-widget-mbfe-animated-list.elementor-invisible,
.elementor-widget-mbfe-scroll-stack.elementor-invisible,
.elementor-widget-mbfe-scroll-velocity-text.elementor-invisible,
.elementor-widget-mbfe-image-reveal-menu.elementor-invisible,
.elementor-widget-mbfe-rotating-text.elementor-invisible,
.elementor-widget-mbfe-decrypted-text.elementor-invisible {
  visibility: visible !important;
  opacity: 1 !important;
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-text-effects,
  .mbfe-scroll-stack-card,
  .mbfe-animated-list-item,
  [data-mbfe-entrance],
  [data-mbfe-motion-effect],
  [data-mbfe-hover-effect] {
    transition-duration: 0.001ms !important;
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    opacity: 1 !important;
    visibility: visible !important;
  }
}

/* v1.4.0 - Motion Bits Scroll Scene */
.mbfe-scroll-scene {
  position: relative;
}

.mbfe-scroll-scene--ready {
  --mbfe-scroll-scene-height: 80vh;
}

.mbfe-scroll-scene-stage {
  position: relative;
  min-height: var(--mbfe-scroll-scene-height, 80vh);
  width: 100%;
  overflow: hidden;
}

.mbfe-scroll-scene-step {
  will-change: transform, opacity, clip-path;
  transform-origin: 50% 50%;
}

.mbfe-scroll-scene-step--overlay {
  position: absolute !important;
  inset: 0 !important;
  width: 100%;
  min-height: var(--mbfe-scroll-scene-height, 80vh);
  margin: 0 !important;
}

.mbfe-scroll-scene-step.is-active {
  z-index: 2;
}

.mbfe-scroll-scene-step--inactive {
  z-index: 1;
}

.mbfe-scroll-scene-progress {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 18px;
  height: 3px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.18);
  overflow: hidden;
  z-index: 20;
  pointer-events: none;
}

.mbfe-scroll-scene-progress-bar {
  display: block;
  width: 100%;
  height: 100%;
  transform: scaleX(0);
  transform-origin: 0 50%;
  background: currentColor;
  opacity: 0.85;
}

.mbfe-scroll-scene--fallback .mbfe-scroll-scene-stage,
.mbfe-scroll-scene--fallback .mbfe-scroll-scene-step {
  position: relative !important;
  inset: auto !important;
  min-height: auto !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  clip-path: none !important;
}

@media (max-width: 767px) {
  .mbfe-scroll-scene--fallback .mbfe-scroll-scene-step,
  .mbfe-scroll-scene .mbfe-scroll-scene-step {
    position: relative !important;
    inset: auto !important;
    min-height: auto !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    clip-path: none !important;
    pointer-events: auto !important;
  }
}

/* v1.4.1 - React Bits-style Text Pressure refinements */
.mbfe-text-effects--proximity .mbfe-text-pressure-target {
  user-select: none;
  font-kerning: none;
  text-rendering: geometricPrecision;
}

.mbfe-text-effects--proximity .mbfe-text-pressure-flex {
  display: flex !important;
  justify-content: space-between;
  align-items: baseline;
  gap: 0;
  width: 100%;
}

.mbfe-text-effects--proximity .mbfe-text-pressure-target .mbfe-text-effect-char-wrap,
.mbfe-text-effects--proximity .mbfe-text-pressure-target .mbfe-text-effect-char {
  overflow: visible;
}

.mbfe-text-effects--proximity .mbfe-text-pressure-target .mbfe-text-effect-char {
  position: relative;
  line-height: inherit;
}

.mbfe-text-effects--proximity .mbfe-text-pressure-stroke .mbfe-text-effect-char::after {
  content: attr(data-char);
  position: absolute;
  inset: 0;
  color: transparent;
  z-index: -1;
  -webkit-text-stroke-width: 3px;
  -webkit-text-stroke-color: var(--mbfe-pressure-stroke-color, #ff0000);
  pointer-events: none;
}

/* v1.4.3 - Scroll Scene parked fallback + Scroll Stack cleanup */
.mbfe-scroll-scene,
.mbfe-scroll-scene-stage,
.mbfe-scroll-scene-step,
.mbfe-scroll-scene-step--overlay,
.mbfe-scroll-scene--fallback .mbfe-scroll-scene-stage,
.mbfe-scroll-scene--fallback .mbfe-scroll-scene-step {
  position: relative !important;
  inset: auto !important;
  min-height: auto !important;
  height: auto !important;
  transform: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
}

.mbfe-scroll-scene-progress,
.mbfe-scroll-scene-progress-bar {
  display: none !important;
}

.mbfe-scroll-stack-live {
  position: relative;
}

.mbfe-scroll-stack-live-progress {
  position: fixed;
  left: 24px;
  right: 24px;
  bottom: 24px;
  height: 3px;
  z-index: 999;
  pointer-events: none;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.14);
  mix-blend-mode: difference;
}

.mbfe-scroll-stack-live-progress-bar {
  display: block;
  width: 100%;
  height: 100%;
  transform: scaleX(0);
  transform-origin: 0 50%;
  background: currentColor;
  color: #ffffff;
}

.mbfe-scroll-stack-live-card.is-active {
  will-change: transform;
}

/* v1.5.2 - Button / Link Effects */
.mbfe-button-link-effect-item.mbfe-bl-effect-target {
  position: relative;
}

.mbfe-bl-text-roll,
.mbfe-bl-text-roll .mbfe-bl-roll-wrap {
  overflow: hidden;
}

.mbfe-bl-text-roll .mbfe-bl-roll-wrap {
  display: inline-grid;
  vertical-align: inherit;
  line-height: inherit;
}

.mbfe-bl-text-roll .mbfe-bl-roll-line {
  grid-area: 1 / 1;
  display: block;
  line-height: inherit;
  transition: transform var(--mbfe-bl-duration, .45s) cubic-bezier(.22,1,.36,1);
  will-change: transform;
}

.mbfe-bl-text-roll .mbfe-bl-roll-line--current {
  transform: translateY(0);
}

.mbfe-bl-text-roll .mbfe-bl-roll-line--next {
  transform: translateY(var(--mbfe-bl-roll-offset, 100%));
}

.mbfe-bl-text-roll:hover .mbfe-bl-roll-line--current,
.mbfe-bl-text-roll:focus-visible .mbfe-bl-roll-line--current {
  transform: translateY(calc(var(--mbfe-bl-roll-offset, 100%) * -1));
}

.mbfe-bl-text-roll:hover .mbfe-bl-roll-line--next,
.mbfe-bl-text-roll:focus-visible .mbfe-bl-roll-line--next {
  transform: translateY(0);
}

.mbfe-bl-text-roll--down .mbfe-bl-roll-line--next {
  transform: translateY(calc(var(--mbfe-bl-roll-offset, 100%) * -1));
}

.mbfe-bl-text-roll--down:hover .mbfe-bl-roll-line--current,
.mbfe-bl-text-roll--down:focus-visible .mbfe-bl-roll-line--current {
  transform: translateY(var(--mbfe-bl-roll-offset, 100%));
}

.mbfe-bl-text-roll--down:hover .mbfe-bl-roll-line--next,
.mbfe-bl-text-roll--down:focus-visible .mbfe-bl-roll-line--next {
  transform: translateY(0);
}

.mbfe-bl-underline {
  text-decoration: none !important;
  display: inline-block;
}

.mbfe-bl-underline::after {
  content: '';
  position: absolute;
  left: 0;
  right: auto;
  bottom: calc(var(--mbfe-bl-underline-offset, 4px) * -1);
  width: 100%;
  height: var(--mbfe-bl-underline-height, 2px);
  background: var(--mbfe-bl-underline-color, currentColor);
  pointer-events: none;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--mbfe-bl-duration, .45s) cubic-bezier(.22,1,.36,1);
}

.mbfe-bl-underline--right::after {
  transform-origin: right center;
}

.mbfe-bl-underline--center::after {
  transform-origin: center center;
}

.mbfe-bl-underline:hover::after,
.mbfe-bl-underline:focus-visible::after {
  transform: scaleX(1);
}

.mbfe-bl-bg-wipe {
  overflow: hidden;
  isolation: isolate;
  position: relative;
  transform: translateZ(0);
  transition: color var(--mbfe-bl-duration, .45s) cubic-bezier(.22,1,.36,1), border-color var(--mbfe-bl-duration, .45s) cubic-bezier(.22,1,.36,1);
}

.mbfe-bl-bg-wipe::before,
.mbfe-bl-bg-wipe > .mbfe-bl-wipe-layer {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background-color: var(--mbfe-bl-wipe-color, #5227FF) !important;
  pointer-events: none;
  transition: transform var(--mbfe-bl-duration, .45s) cubic-bezier(.22,1,.36,1);
  will-change: transform;
}

.mbfe-bl-bg-wipe > .mbfe-bl-wipe-layer {
  display: block !important;
}

.mbfe-bl-bg-wipe > * {
  position: relative;
  z-index: 2;
}

.mbfe-bl-bg-wipe .elementor-button-content-wrapper,
.mbfe-bl-bg-wipe .elementor-button-text,
.mbfe-bl-bg-wipe .elementor-button-icon,
.mbfe-bl-bg-wipe .elementor-heading-title,
.mbfe-bl-bg-wipe .elementor-icon-box-title,
.mbfe-bl-bg-wipe .elementor-image-box-title {
  position: relative;
  z-index: 2;
}

.mbfe-bl-bg-wipe--left::before, .mbfe-bl-bg-wipe--left > .mbfe-bl-wipe-layer { transform: scaleX(0); transform-origin: left center; }
.mbfe-bl-bg-wipe--right::before, .mbfe-bl-bg-wipe--right > .mbfe-bl-wipe-layer { transform: scaleX(0); transform-origin: right center; }
.mbfe-bl-bg-wipe--top::before, .mbfe-bl-bg-wipe--top > .mbfe-bl-wipe-layer { transform: scaleY(0); transform-origin: center top; }
.mbfe-bl-bg-wipe--bottom::before, .mbfe-bl-bg-wipe--bottom > .mbfe-bl-wipe-layer { transform: scaleY(0); transform-origin: center bottom; }
.mbfe-bl-bg-wipe--center::before, .mbfe-bl-bg-wipe--center > .mbfe-bl-wipe-layer { transform: scale(0); transform-origin: center center; }

.mbfe-bl-bg-wipe:hover::before,
.mbfe-bl-bg-wipe:focus-visible::before,
.mbfe-bl-bg-wipe:hover > .mbfe-bl-wipe-layer,
.mbfe-bl-bg-wipe:focus-visible > .mbfe-bl-wipe-layer {
  transform: scale(1);
}

.mbfe-bl-bg-wipe:hover,
.mbfe-bl-bg-wipe:focus-visible,
.mbfe-bl-bg-wipe:hover *,
.mbfe-bl-bg-wipe:focus-visible * {
  color: var(--mbfe-bl-wipe-hover-color, var(--mbfe-bl-wipe-text-color, currentColor)) !important;
  -webkit-text-fill-color: var(--mbfe-bl-wipe-hover-color, var(--mbfe-bl-wipe-text-color, currentColor)) !important;
}

.mbfe-bl-bg-wipe:hover svg,
.mbfe-bl-bg-wipe:focus-visible svg,
.mbfe-bl-bg-wipe:hover svg *,
.mbfe-bl-bg-wipe:focus-visible svg * {
  fill: var(--mbfe-bl-wipe-hover-color, var(--mbfe-bl-wipe-text-color, currentColor)) !important;
  stroke: var(--mbfe-bl-wipe-hover-color, var(--mbfe-bl-wipe-text-color, currentColor)) !important;
}

.mbfe-bl-icon-nudge .elementor-button-icon,
.mbfe-bl-icon-nudge .elementor-icon,
.mbfe-bl-icon-nudge i,
.mbfe-bl-icon-nudge svg {
  display: inline-flex;
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-bl-text-roll .mbfe-bl-roll-line,
  .mbfe-bl-underline::after,
  .mbfe-bl-bg-wipe::before,
  .mbfe-bl-bg-wipe > .mbfe-bl-wipe-layer {
    transition: none !important;
  }
}

/* v1.5.5 recovery: real DOM layers for Button / Link effect colours.
   These avoid Elementor/pseudo-element colour scoping issues while keeping older markup safe. */
.mbfe-bl-underline--real-layer::after {
  display: none !important;
}

.mbfe-bl-underline > .mbfe-bl-underline-layer {
  content: '';
  position: absolute;
  left: 0;
  right: auto;
  bottom: calc(var(--mbfe-bl-underline-offset, 4px) * -1);
  width: 100%;
  height: var(--mbfe-bl-underline-height, 2px);
  background-color: var(--mbfe-bl-underline-color, currentColor) !important;
  pointer-events: none;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--mbfe-bl-duration, .45s) cubic-bezier(.22,1,.36,1);
  will-change: transform;
}

.mbfe-bl-underline--right > .mbfe-bl-underline-layer {
  transform-origin: right center;
}

.mbfe-bl-underline--center > .mbfe-bl-underline-layer {
  transform-origin: center center;
}

.mbfe-bl-underline:hover > .mbfe-bl-underline-layer,
.mbfe-bl-underline:focus-visible > .mbfe-bl-underline-layer {
  transform: scaleX(1);
}

.mbfe-bl-bg-wipe.mbfe-bl-has-wipe-layer::before {
  display: none !important;
}

.mbfe-bl-bg-wipe > .mbfe-bl-wipe-layer {
  background-color: var(--mbfe-bl-wipe-color, #5227FF) !important;
}

/* Border / Outline Effects - radius-aware SVG system */
.mbfe-border-effect-target {
  position: relative !important;
  isolation: isolate;
  --mbfe-border-color: #5227FF;
  --mbfe-border-color-2: rgba(255,255,255,0.88);
  --mbfe-border-width: 2px;
  --mbfe-border-radius: inherit;
  --mbfe-border-duration: .7s;
  --mbfe-border-corner-length: 34px;
}

.mbfe-border-svg,
.mbfe-border-corner {
  position: absolute;
  pointer-events: none;
  z-index: 8;
  box-sizing: border-box;
}

.mbfe-border-svg {
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  opacity: 0;
  transition: opacity .22s ease;
}

.mbfe-border-effect-target > *:not(.mbfe-border-svg):not(.mbfe-border-corner):not(.mbfe-border-overlay-host) {
  position: relative;
  z-index: 1;
}

.mbfe-border-effect-target:hover > .mbfe-border-svg,
.mbfe-border-effect-target:focus-within > .mbfe-border-svg,
.mbfe-border-effect-target.mbfe-border-effect--always > .mbfe-border-svg {
  opacity: 1;
}

/* Neutral overlay host for button Border Effects: an unstyled, absolutely
   positioned box the plugin sizes/places over the visible button so the SVG
   never inherits the outer widget's custom border/padding as its coordinate
   context (which caused a doubled/offset border on Singular templates). */
.mbfe-border-overlay-host {
  position: absolute;
  pointer-events: none;
  z-index: 8;
  overflow: visible;
  box-sizing: border-box;
  border: 0;
  padding: 0;
  margin: 0;
}

.mbfe-border-overlay-host > .mbfe-border-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: visible;
}

.mbfe-border-effect-target:hover > .mbfe-border-overlay-host > .mbfe-border-svg,
.mbfe-border-effect-target:focus-within > .mbfe-border-overlay-host > .mbfe-border-svg,
.mbfe-border-effect-target.mbfe-border-effect--always > .mbfe-border-overlay-host > .mbfe-border-svg {
  opacity: 1;
}

/* When an overlay-hosted button Border Effect sits on a widget that already
   carries a custom CSS border (e.g. drk-btn's 3px solid), that widget border
   would render as a second, dark outline around the animated one. The plugin
   adds .mbfe-border-root-border-suppressed (JS) only in that exact case and
   hides the border COLOUR — never the width — so the box size, layout, and the
   overlay's border-compensated position stay identical. Removing the class
   fully restores the user's border. Scoped to Motion Bits Border Effects
   widgets carrying the marker; non-button, custom-selector, and non-overlay
   Border Effects never receive it. */
.mbfe-border-effects.mbfe-border-root-border-suppressed {
  border-top-color: transparent !important;
  border-right-color: transparent !important;
  border-bottom-color: transparent !important;
  border-left-color: transparent !important;
}

.mbfe-border-svg-rect {
  transition: stroke-dashoffset var(--mbfe-border-duration, .7s) cubic-bezier(.22,1,.36,1), opacity .22s ease;
}

/* Border Draw */
.mbfe-border-svg-rect--draw {
  opacity: 1;
  transition: stroke-dashoffset var(--mbfe-border-duration, .7s) cubic-bezier(.65,0,.35,1);
}
.mbfe-border-effect--draw:hover .mbfe-border-svg-rect--draw,
.mbfe-border-effect--draw:focus-within .mbfe-border-svg-rect--draw,
.mbfe-border-effect--draw.mbfe-border-effect--always .mbfe-border-svg-rect--draw {
  stroke-dashoffset: 0 !important;
}

/* Animated Gradient Border (static gradient base + CSS-driven flowing sweep) */
.mbfe-border-svg-rect--gradient-base {
  opacity: .9;
}
.mbfe-border-svg-rect--gradient {
  opacity: 1;
  filter: drop-shadow(0 0 6px var(--mbfe-border-color-2, rgba(255,255,255,.7)));
  animation: mbfe-border-scan-move var(--mbfe-border-duration, 3s) linear infinite paused;
}
.mbfe-border-effect--gradient:hover .mbfe-border-svg-rect--gradient,
.mbfe-border-effect--gradient:focus-within .mbfe-border-svg-rect--gradient,
.mbfe-border-effect--gradient.mbfe-border-effect--always .mbfe-border-svg-rect--gradient {
  animation-play-state: running;
}

/* Scanning Border */
.mbfe-border-svg-rect--scan-base {
  opacity: .22;
}
.mbfe-border-svg-rect--scan {
  opacity: 1;
  filter: drop-shadow(0 0 8px var(--mbfe-border-color-2, rgba(255,255,255,.7)));
  animation: mbfe-border-scan-move var(--mbfe-border-duration, 2.2s) linear infinite paused;
}
.mbfe-border-effect--scan:hover .mbfe-border-svg-rect--scan,
.mbfe-border-effect--scan:focus-within .mbfe-border-svg-rect--scan,
.mbfe-border-effect--scan.mbfe-border-effect--always .mbfe-border-svg-rect--scan {
  animation-play-state: running;
}
.mbfe-border-effect--reverse .mbfe-border-svg-rect--scan,
.mbfe-border-effect--reverse .mbfe-border-svg-rect--gradient,
.mbfe-border-effect--reverse .mbfe-border-svg-rect--dashed {
  animation-direction: reverse;
}

/* Dashed Motion Border */
.mbfe-border-svg-rect--dashed {
  opacity: 1;
  animation: mbfe-border-dash-move var(--mbfe-border-duration, 2.4s) linear infinite paused;
}
.mbfe-border-effect--dashed:hover .mbfe-border-svg-rect--dashed,
.mbfe-border-effect--dashed:focus-within .mbfe-border-svg-rect--dashed,
.mbfe-border-effect--dashed.mbfe-border-effect--always .mbfe-border-svg-rect--dashed {
  animation-play-state: running;
}

/* Pulse Outline */
.mbfe-border-svg-rect--pulse {
  opacity: .75;
  filter: drop-shadow(0 0 1px var(--mbfe-border-color, #5227FF));
}
.mbfe-border-effect--pulse:hover .mbfe-border-svg-rect--pulse,
.mbfe-border-effect--pulse:focus-within .mbfe-border-svg-rect--pulse,
.mbfe-border-effect--pulse.mbfe-border-effect--always .mbfe-border-svg-rect--pulse {
  animation: mbfe-border-pulse-clean var(--mbfe-border-duration, 1.4s) ease-in-out infinite;
}

/* Corner Brackets */
.mbfe-border-effect--corners {
  overflow: hidden;
  border-radius: var(--mbfe-border-radius, inherit);
}
.mbfe-border-effect--corners .mbfe-border-corner {
  width: var(--mbfe-border-corner-length, 34px);
  height: var(--mbfe-border-corner-length, 34px);
  opacity: 0;
  transition: opacity .25s ease, transform var(--mbfe-border-duration, .7s) cubic-bezier(.22,1,.36,1);
}
.mbfe-border-corner::before,
.mbfe-border-corner::after {
  content: '';
  position: absolute;
  background: var(--mbfe-border-color, #5227FF);
}
.mbfe-border-corner::before { width: 100%; height: var(--mbfe-border-width, 2px); }
.mbfe-border-corner::after { width: var(--mbfe-border-width, 2px); height: 100%; }
.mbfe-border-corner--tl { left: 0; top: 0; transform: translate(10px,10px); }
.mbfe-border-corner--tr { right: 0; top: 0; transform: translate(-10px,10px); }
.mbfe-border-corner--br { right: 0; bottom: 0; transform: translate(-10px,-10px); }
.mbfe-border-corner--bl { left: 0; bottom: 0; transform: translate(10px,-10px); }
.mbfe-border-corner--tl::before, .mbfe-border-corner--tr::before { top: 0; }
.mbfe-border-corner--bl::before, .mbfe-border-corner--br::before { bottom: 0; }
.mbfe-border-corner--tl::after, .mbfe-border-corner--bl::after { left: 0; }
.mbfe-border-corner--tr::after, .mbfe-border-corner--br::after { right: 0; }
.mbfe-border-effect--corners:hover .mbfe-border-corner,
.mbfe-border-effect--corners:focus-within .mbfe-border-corner,
.mbfe-border-effect--corners.mbfe-border-effect--always .mbfe-border-corner {
  opacity: 1;
  transform: translate(0,0);
}

@keyframes mbfe-border-scan-move {
  to { stroke-dashoffset: 0; }
}

@keyframes mbfe-border-dash-move {
  to { stroke-dashoffset: var(--mbfe-border-dash-shift, -18); }
}

@keyframes mbfe-border-pulse-clean {
  0%, 100% {
    filter: drop-shadow(0 0 1px var(--mbfe-border-color, #5227FF));
    opacity: .55;
  }
  50% {
    filter:
      drop-shadow(0 0 4px var(--mbfe-border-color, #5227FF))
      drop-shadow(0 0 14px var(--mbfe-border-color, #5227FF));
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-border-svg,
  .mbfe-border-svg-rect,
  .mbfe-border-corner,
  .mbfe-border-effect-target {
    animation: none !important;
    transition: none !important;
  }
}

/* Bento Hover Expand */
.mbfe-bento-hover {
  --mbfe-bento-duration: .45s;
  --mbfe-bento-ease: cubic-bezier(.22,1,.36,1);
}

.mbfe-bento-hover--ready {
  isolation: isolate;
}

.mbfe-bento-hover-host {
  min-width: 0;
  box-sizing: border-box;
}

.mbfe-bento-hover-host--auto {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  grid-auto-flow: row;
}

.mbfe-bento-hover-host--auto.mbfe-bento-hover-host--full-width {
  max-width: none;
}

.mbfe-bento-item {
  min-width: 0;
  min-height: 0;
  max-width: none;
  box-sizing: border-box;
  transform-origin: center center;
  backface-visibility: hidden;
  transition:
    opacity var(--mbfe-bento-duration, .45s) var(--mbfe-bento-ease, ease),
    filter var(--mbfe-bento-duration, .45s) var(--mbfe-bento-ease, ease);
}

.mbfe-bento-hover-host--auto > .mbfe-bento-item {
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  height: 100%;
  flex-basis: auto !important;
  align-self: stretch;
  justify-self: stretch;
  overflow: hidden;
}

.mbfe-bento-scale-node {
  scale: var(--mbfe-bento-content-scale, 1);
  transform-origin: center center;
  transition:
    scale var(--mbfe-bento-duration, .45s) var(--mbfe-bento-ease, ease);
  will-change: scale;
}

.mbfe-bento-reveal-node {
  opacity: 0;
  translate: 0 14px;
  scale: .96;
  filter: blur(5px);
  pointer-events: none;
  transition:
    opacity var(--mbfe-bento-duration, .45s) var(--mbfe-bento-ease, ease),
    translate var(--mbfe-bento-duration, .45s) var(--mbfe-bento-ease, ease),
    scale var(--mbfe-bento-duration, .45s) var(--mbfe-bento-ease, ease),
    filter var(--mbfe-bento-duration, .45s) var(--mbfe-bento-ease, ease);
  will-change: opacity, translate, scale, filter;
}

.mbfe-bento-reveal-node.is-revealed {
  opacity: 1;
  translate: 0 0;
  scale: 1;
  filter: blur(0);
  pointer-events: auto;
}

.mbfe-bento-hover--flip .mbfe-bento-item {
  will-change: transform, opacity, filter;
}

.mbfe-bento-hover--flex .mbfe-bento-item,
.mbfe-bento-hover-host--flex > .mbfe-bento-item {
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  flex-basis: 0% !important;
  flex-shrink: 1 !important;
}

.mbfe-bento-item.is-active {
  z-index: 3;
}

.mbfe-bento-item.is-inactive {
  z-index: 1;
}

.mbfe-bento-hover--reduced .mbfe-bento-item,
.mbfe-bento-hover--reduced .mbfe-bento-hover-host--auto,
.mbfe-bento-hover--reduced .mbfe-bento-scale-node,
.mbfe-bento-hover--reduced .mbfe-bento-reveal-node {
  transition: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .mbfe-bento-item,
  .mbfe-bento-hover-host--auto,
  .mbfe-bento-scale-node,
  .mbfe-bento-reveal-node {
    transition: none !important;
  }
}
