/* fx.css — vanilla replacements for Elementor's runtime effects.
   Entrance keyframes (animate.css subset) + spinning globe for dead Lottie. */
.fx [data-fx-hidden]{opacity:0}
.animated{animation-duration:1s;animation-fill-mode:both}
@media(prefers-reduced-motion:reduce){.animated{animation:none!important;opacity:1!important}}

@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{animation-name:fadeIn}
@keyframes fadeInUp{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}.fadeInUp{animation-name:fadeInUp}
@keyframes fadeInUpBig{from{opacity:0;transform:translateY(120px)}to{opacity:1;transform:none}}.fadeInUpBig{animation-name:fadeInUpBig}
@keyframes fadeInDown{from{opacity:0;transform:translateY(-40px)}to{opacity:1;transform:none}}.fadeInDown{animation-name:fadeInDown}
@keyframes fadeInLeft{from{opacity:0;transform:translateX(-50px)}to{opacity:1;transform:none}}.fadeInLeft{animation-name:fadeInLeft}
@keyframes fadeInRight{from{opacity:0;transform:translateX(50px)}to{opacity:1;transform:none}}.fadeInRight{animation-name:fadeInRight}
@keyframes fadeInLeftBig{from{opacity:0;transform:translateX(-120px)}to{opacity:1;transform:none}}.fadeInLeftBig{animation-name:fadeInLeftBig}
@keyframes fadeInRightBig{from{opacity:0;transform:translateX(120px)}to{opacity:1;transform:none}}.fadeInRightBig{animation-name:fadeInRightBig}
@keyframes zoomIn{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}.zoomIn{animation-name:zoomIn}
@keyframes slideInUp{from{transform:translateY(100%);visibility:visible}to{transform:none}}.slideInUp{animation-name:slideInUp}
@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}.bounceIn{animation-name:bounceIn}

/* will-change for motion-fx parallax targets */
.fx-mfx{will-change:transform,opacity,filter}

/* ---- self-contained spinning globe (substitute for a missing Lottie) ---- */
.fx-globe{position:relative;width:100%;max-width:360px;aspect-ratio:1/1;margin:0 auto;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#7db8ff 0,#2f7ce0 38%,#11407e 78%,#0a2c5c 100%);
  box-shadow:inset -22px -22px 60px rgba(2,12,35,.65),0 30px 70px -28px rgba(15,60,130,.85);
  overflow:hidden;isolation:isolate}
.fx-globe::before{content:"";position:absolute;inset:0;border-radius:50%;
  background-image:repeating-linear-gradient(90deg,transparent 0 26px,rgba(255,255,255,.16) 26px 27px),
    repeating-linear-gradient(0deg,transparent 0 26px,rgba(255,255,255,.10) 26px 27px);
  background-size:220% 100%,100% 100%;animation:fxGlobeSpin 9s linear infinite;mix-blend-mode:screen}
.fx-globe::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.55),transparent 40%)}
@keyframes fxGlobeSpin{to{background-position:220% 0,0 0}}
@media(prefers-reduced-motion:reduce){.fx-globe::before{animation:none}}
