

html.fx-on .fx-aurora{
  position:absolute; inset:0; z-index:0;
  pointer-events:none; overflow:hidden;
  contain:strict;
}

html.fx-on .fx-aurora__blob{
  position:absolute;
  width:74vmax; height:74vmax;
  border-radius:50%;
  filter:blur(56px);
  mix-blend-mode:screen;
  opacity:.55;
  will-change:transform;
  transform:translate3d(0,0,0);
}

html.fx-on .fx-aurora__blob--a{
  inset-block-start:-26%;
  inset-inline-start:-18%;
  background:radial-gradient(circle at 50% 50%,
            rgba(200,16,46,.55), transparent 70%);
  animation:fxAuroraA 34s var(--ease) infinite alternate;
}
html.fx-on .fx-aurora__blob--b{
  inset-block-end:-30%;
  inset-inline-end:-16%;
  width:64vmax; height:64vmax;
  background:radial-gradient(circle at 50% 50%,
            rgba(231,205,134,.42), transparent 70%);
  opacity:.5;
  animation:fxAuroraB 41s var(--ease) infinite alternate;
  animation-delay:-7s;
}
html.fx-on .fx-aurora__blob--c{
  inset-block-start:8%;
  inset-inline-end:6%;
  width:58vmax; height:58vmax;
  background:radial-gradient(circle at 50% 50%,
            rgba(225,20,52,.45), transparent 70%);
  opacity:.45;
  animation:fxAuroraC 38s var(--ease) infinite alternate;
  animation-delay:-15s;
}

html.fx-on .page-hero .fx-aurora--lite .fx-aurora__blob--a{
  opacity:.4;
  filter:blur(60px);
  background:radial-gradient(circle at 50% 50%,
            rgba(231,205,134,.34), transparent 70%);
  animation-duration:46s;
}

@keyframes fxAuroraA{
  from{ transform:translate3d(0,0,0) scale(1) }
  to  { transform:translate3d(6%,5%,0) scale(1.15) }
}
@keyframes fxAuroraB{
  from{ transform:translate3d(0,0,0) scale(1.05) }
  to  { transform:translate3d(-7%,-4%,0) scale(1.18) }
}
@keyframes fxAuroraC{
  from{ transform:translate3d(0,0,0) scale(1) }
  to  { transform:translate3d(-5%,7%,0) scale(1.12) }
}

@media (max-width:760px){
  html.fx-on .fx-aurora__blob{ filter:blur(40px) }
  html.fx-on .fx-aurora__blob--c{ display:none }
}


html.fx-on .fx-progress{
  position:fixed; inset-block-start:0; inset-inline:0;
  height:3px; z-index:2001;
  pointer-events:none;
  background:transparent;
}
html.fx-on .fx-progress__fill{
  display:block; height:100%; width:100%;
  transform:scaleX(var(--fx-progress,0));
  transform-origin:left center;            
  background:linear-gradient(90deg,var(--gold-2),var(--gold) 55%,var(--red));
  box-shadow:0 0 10px rgba(201,162,75,.5);
  transition:transform .1s linear;
  will-change:transform;
}
html.fx-on[dir="rtl"] .fx-progress__fill{ transform-origin:right center }


html.fx-on .fx-parallax{
  transform:translate3d(0,var(--fx-py,0),0);
  will-change:transform;
}


html.fx-on.fx-ready .reveal.fx-reveal-up{
  transform:translateY(34px) scale(.985);
  filter:blur(4px);
  transition:opacity .7s var(--ease),
             transform .75s var(--ease),
             filter .6s var(--ease);
}
html.fx-on.fx-ready .reveal.fx-reveal-up.in{
  opacity:1;
  transform:none;
  filter:none;
}

html.fx-on.fx-ready .fx-stagger > .reveal:nth-child(1){ transition-delay:0ms }
html.fx-on.fx-ready .fx-stagger > .reveal:nth-child(2){ transition-delay:55ms }
html.fx-on.fx-ready .fx-stagger > .reveal:nth-child(3){ transition-delay:110ms }
html.fx-on.fx-ready .fx-stagger > .reveal:nth-child(4){ transition-delay:165ms }
html.fx-on.fx-ready .fx-stagger > .reveal:nth-child(5){ transition-delay:220ms }
html.fx-on.fx-ready .fx-stagger > .reveal:nth-child(n+6){ transition-delay:280ms }

html.fx-on.fx-ready .clients-strip.fx-stagger .client-chip:nth-child(1){ transition-delay:0ms }
html.fx-on.fx-ready .clients-strip.fx-stagger .client-chip:nth-child(2){ transition-delay:55ms }
html.fx-on.fx-ready .clients-strip.fx-stagger .client-chip:nth-child(3){ transition-delay:110ms }
html.fx-on.fx-ready .clients-strip.fx-stagger .client-chip:nth-child(4){ transition-delay:165ms }
html.fx-on.fx-ready .clients-strip.fx-stagger .client-chip:nth-child(5){ transition-delay:220ms }
html.fx-on.fx-ready .clients-strip.fx-stagger .client-chip:nth-child(n+6){ transition-delay:280ms }


html.fx-on .fx-words .fx-word{
  display:inline-block;
  opacity:0;
  transform:translateY(.4em);
  filter:blur(3px);
  transition:opacity .5s var(--ease),
             transform .5s var(--ease),
             filter .5s var(--ease);
  color:inherit;
}
html.fx-on .fx-words{ word-spacing:.04em }

html.fx-on .fx-words.fx-word-in .fx-word{
  opacity:1;
  transform:none;
  filter:none;
  transition-delay:calc(var(--fx-i,0) * 50ms);
}


html.fx-on .grid-3,
html.fx-on .stats-grid{ perspective:1100px }

html.fx-on .fx-tilt{
  transform:rotateX(var(--fx-rx,0)) rotateY(var(--fx-ry,0));
  transform-style:preserve-3d;
  transition:transform .25s var(--ease);
  will-change:transform;
}

html.fx-on .project-card.fx-tilt:hover{
  transform:translateY(-6px) rotateX(var(--fx-rx,0)) rotateY(var(--fx-ry,0));
}
html.fx-on .service-card.fx-tilt:hover{
  transform:translateY(-6px) rotateX(var(--fx-rx,0)) rotateY(var(--fx-ry,0));
}
html.fx-on .cert-card.fx-tilt:hover{
  transform:translateY(-4px) rotateX(var(--fx-rx,0)) rotateY(var(--fx-ry,0));
}
html.fx-on .vm-card.fx-tilt:hover,
html.fx-on .flagship.fx-tilt:hover{
  transform:rotateX(var(--fx-rx,0)) rotateY(var(--fx-ry,0));
}

html.fx-on .project-card.fx-tilt img{ transform:translateZ(-20px) }
html.fx-on .project-card.fx-tilt:hover img{ transform:translateZ(-20px) scale(1.06) }

html.fx-on .project-card.fx-tilt.fx-spotlight::before,
html.fx-on .service-card.fx-tilt.fx-spotlight::after,
html.fx-on .cert-card.fx-tilt.fx-spotlight::after,
html.fx-on .vm-card.fx-tilt.fx-spotlight::after,
html.fx-on .flagship.fx-tilt.fx-spotlight::after{
  content:"";
  position:absolute; inset:0; z-index:1;
  pointer-events:none;
  border-radius:inherit;
  background:radial-gradient(circle at var(--fx-px,50%) var(--fx-py,50%),
            rgba(231,205,134,.18), transparent 45%);
  opacity:0;
  transition:opacity .3s var(--ease);
}
html.fx-on .project-card.fx-tilt.fx-spotlight:hover::before,
html.fx-on .service-card.fx-tilt.fx-spotlight:hover::after,
html.fx-on .cert-card.fx-tilt.fx-spotlight:hover::after,
html.fx-on .vm-card.fx-tilt.fx-spotlight:hover::after,
html.fx-on .flagship.fx-tilt.fx-spotlight:hover::after{ opacity:1 }

html.fx-on .service-card.fx-tilt.fx-spotlight > *,
html.fx-on .cert-card.fx-tilt.fx-spotlight > *,
html.fx-on .vm-card.fx-tilt.fx-spotlight > *{ position:relative; z-index:2 }
html.fx-on .project-card.fx-tilt .project-card__body{ z-index:2 }


html.fx-on .fx-magnetic{ position:relative; overflow:hidden }

html.fx-on .fx-magnetic__label{
  display:inline-flex;
  align-items:center;
  gap:inherit;
  transform:translate(var(--fx-mx,0),var(--fx-my,0));
  transition:transform .25s var(--ease);
  will-change:transform;
}

html.fx-on .fx-magnetic::after{
  content:"";
  position:absolute; inset:0;
  border-radius:inherit;
  background:linear-gradient(115deg,
            transparent 30%,
            rgba(231,205,134,.5) 50%,
            transparent 70%);
  background-size:250% 100%;
  background-position:calc(var(--fx-sweep,0) * 100%) 0;
  opacity:0;
  mix-blend-mode:screen;
  pointer-events:none;
  transition:opacity .3s var(--ease);
}
html.fx-on .fx-magnetic:hover::after{ opacity:1 }


html.fx-on .stat.fx-counter-lock .stat__num{
  animation:fxLock .6s var(--ease) forwards;
}
html.fx-on .flagship-hours.fx-counter-lock .n{
  animation:fxLock .6s var(--ease) forwards;
}

@keyframes fxLock{
  0%  { text-shadow:0 0 0 rgba(231,205,134,0) }
  45% { text-shadow:0 0 26px rgba(231,205,134,.7) }
  100%{ text-shadow:0 0 18px rgba(231,205,134,.34) }
}

html.fx-on .stat.fx-counter-lock .stat__num,
html.fx-on .flagship-hours.fx-counter-lock .n{ position:relative }
html.fx-on .stat.fx-counter-lock .stat__num::after,
html.fx-on .flagship-hours.fx-counter-lock .n::after{
  content:"";
  position:absolute; inset-inline:0; inset-block-end:-6px;
  height:1px; background:var(--gold);
  transform:scaleX(0);
  transform-origin:left center;
  animation:fxTick .5s var(--ease) .15s forwards;
}
html.fx-on[dir="rtl"] .stat.fx-counter-lock .stat__num::after,
html.fx-on[dir="rtl"] .flagship-hours.fx-counter-lock .n::after{
  transform-origin:right center;
}
@keyframes fxTick{
  from{ transform:scaleX(0) }
  to  { transform:scaleX(1) }
}


html.fx-on .clients-strip.fx-marquee{
  overflow:hidden;
  flex-wrap:nowrap;
  justify-content:flex-start;
  -webkit-mask:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
          mask:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
}
html.fx-on .clients-strip.fx-marquee .fx-marquee__track{
  display:flex;
  gap:14px;
  width:max-content;
  flex-wrap:nowrap;
  animation:fxMarquee 38s linear infinite;
  will-change:transform;
}
@keyframes fxMarquee{
  from{ transform:translateX(0) }
  to  { transform:translateX(-50%) }
}
html.fx-on[dir="rtl"] .clients-strip.fx-marquee .fx-marquee__track{
  animation-name:fxMarqueeRtl;
}
@keyframes fxMarqueeRtl{
  from{ transform:translateX(0) }
  to  { transform:translateX(50%) }
}
html.fx-on .clients-strip.fx-marquee:hover .fx-marquee__track,
html.fx-on .clients-strip.fx-marquee:focus-within .fx-marquee__track{
  animation-play-state:paused;
}


@media (prefers-reduced-motion:reduce){
  html.fx-on .fx-aurora__blob{ animation:none }
  html.fx-on .fx-parallax{ transform:none }
  html.fx-on.fx-ready .reveal.fx-reveal-up{ transform:none; filter:none }
  html.fx-on.fx-ready .reveal.fx-reveal-up.in{ transform:none; filter:none }
  html.fx-on .fx-words .fx-word{
    opacity:1; transform:none; filter:none; transition:none;
  }
  html.fx-on .fx-tilt{ transform:none }
  html.fx-on .project-card.fx-tilt:hover,
  html.fx-on .service-card.fx-tilt:hover,
  html.fx-on .cert-card.fx-tilt:hover,
  html.fx-on .vm-card.fx-tilt:hover,
  html.fx-on .flagship.fx-tilt:hover{ transform:none }
  html.fx-on .project-card.fx-tilt img,
  html.fx-on .project-card.fx-tilt:hover img{ transform:none }
  html.fx-on .project-card.fx-tilt.fx-spotlight::before,
  html.fx-on .service-card.fx-tilt.fx-spotlight::after,
  html.fx-on .cert-card.fx-tilt.fx-spotlight::after,
  html.fx-on .vm-card.fx-tilt.fx-spotlight::after,
  html.fx-on .flagship.fx-tilt.fx-spotlight::after{ display:none }
  html.fx-on .fx-magnetic__label{ transform:none }
  html.fx-on .fx-magnetic::after{ opacity:0 }
  html.fx-on .clients-strip.fx-marquee .fx-marquee__track{ animation:none }
  html.fx-on .stat.fx-counter-lock .stat__num,
  html.fx-on .flagship-hours.fx-counter-lock .n{
    animation:none; text-shadow:none;
  }
  html.fx-on .stat.fx-counter-lock .stat__num::after,
  html.fx-on .flagship-hours.fx-counter-lock .n::after{ animation:none; transform:scaleX(0) }
  html.fx-on .fx-progress{ opacity:0 }
}

html.fx-on.fx-no-anim .fx-aurora__blob{ animation:none }
html.fx-on.fx-no-anim .fx-parallax{ transform:none }
html.fx-on.fx-no-anim.fx-ready .reveal.fx-reveal-up{ transform:none; filter:none }
html.fx-on.fx-no-anim.fx-ready .reveal.fx-reveal-up.in{ transform:none; filter:none }
html.fx-on.fx-no-anim .fx-words .fx-word{
  opacity:1; transform:none; filter:none; transition:none;
}
html.fx-on.fx-no-anim .fx-tilt{ transform:none }
html.fx-on.fx-no-anim .project-card.fx-tilt:hover,
html.fx-on.fx-no-anim .service-card.fx-tilt:hover,
html.fx-on.fx-no-anim .cert-card.fx-tilt:hover,
html.fx-on.fx-no-anim .vm-card.fx-tilt:hover,
html.fx-on.fx-no-anim .flagship.fx-tilt:hover{ transform:none }
html.fx-on.fx-no-anim .project-card.fx-tilt img,
html.fx-on.fx-no-anim .project-card.fx-tilt:hover img{ transform:none }
html.fx-on.fx-no-anim .project-card.fx-tilt.fx-spotlight::before,
html.fx-on.fx-no-anim .service-card.fx-tilt.fx-spotlight::after,
html.fx-on.fx-no-anim .cert-card.fx-tilt.fx-spotlight::after,
html.fx-on.fx-no-anim .vm-card.fx-tilt.fx-spotlight::after,
html.fx-on.fx-no-anim .flagship.fx-tilt.fx-spotlight::after{ display:none }
html.fx-on.fx-no-anim .fx-magnetic__label{ transform:none }
html.fx-on.fx-no-anim .fx-magnetic::after{ opacity:0 }
html.fx-on.fx-no-anim .clients-strip.fx-marquee .fx-marquee__track{ animation:none }
html.fx-on.fx-no-anim .stat.fx-counter-lock .stat__num,
html.fx-on.fx-no-anim .flagship-hours.fx-counter-lock .n{ animation:none; text-shadow:none }
html.fx-on.fx-no-anim .stat.fx-counter-lock .stat__num::after,
html.fx-on.fx-no-anim .flagship-hours.fx-counter-lock .n::after{ animation:none; transform:scaleX(0) }
html.fx-on.fx-no-anim .fx-progress{ opacity:0 }
