.hero-network{
  position:absolute;
  inset:0;
  z-index:1;
  width:100%;
  height:100%;
  pointer-events:none;
  opacity:.72;
  mix-blend-mode:screen;
}

.hero-panel{
  animation:panel-float 6s cubic-bezier(.45,0,.55,1) infinite;
  will-change:transform;
}

.orbit .node{
  top:50%;
  left:50%;
  right:auto;
  bottom:auto;
  margin:-6px 0 0 -6px;
  will-change:transform,opacity;
}

.orbit .n1{animation:orbit-one 9s linear infinite, node-pulse 2.4s ease-in-out infinite}
.orbit .n2{animation:orbit-two 7s linear infinite reverse, node-pulse 2s ease-in-out .4s infinite}
.orbit .n3{animation:orbit-three 11s linear infinite, node-pulse 2.8s ease-in-out .8s infinite}
.core{animation:core-breathe 3.8s ease-in-out infinite}

.product::before{
  content:"";
  position:absolute;
  z-index:0;
  width:190px;
  height:190px;
  right:-65px;
  top:70px;
  border-radius:50%;
  background:var(--accent);
  filter:blur(78px);
  opacity:.16;
  animation:product-glow 8s ease-in-out infinite;
  pointer-events:none;
}

.product:nth-child(2)::before{animation-delay:-2.5s}
.product:nth-child(3)::before{animation-delay:-5s}
.product>*{position:relative;z-index:1}

.btn.primary{position:relative;overflow:hidden}
.btn.primary::after{
  content:"";
  position:absolute;
  inset:-50% auto -50% -45%;
  width:28%;
  transform:skewX(-22deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);
  animation:button-sheen 5s ease-in-out infinite;
  pointer-events:none;
}

.motion-ready .reveal{
  opacity:0;
  transform:translateY(28px) scale(.985);
  transition:
    opacity .75s cubic-bezier(.22,1,.36,1),
    transform .75s cubic-bezier(.22,1,.36,1);
  transition-delay:var(--reveal-delay,0ms);
}

.motion-ready .reveal.in-view{
  opacity:1;
  transform:translateY(0) scale(1);
}

@keyframes panel-float{
  0%,100%{transform:rotate(1.5deg) translateY(0)}
  50%{transform:rotate(1.5deg) translateY(-12px)}
}

@keyframes orbit-one{
  from{transform:rotate(0deg) translateX(104px) rotate(0deg)}
  to{transform:rotate(360deg) translateX(104px) rotate(-360deg)}
}

@keyframes orbit-two{
  from{transform:rotate(30deg) translateX(70px) rotate(-30deg)}
  to{transform:rotate(390deg) translateX(70px) rotate(-390deg)}
}

@keyframes orbit-three{
  from{transform:rotate(150deg) translateX(92px) rotate(-150deg)}
  to{transform:rotate(510deg) translateX(92px) rotate(-510deg)}
}

@keyframes node-pulse{
  0%,100%{opacity:.55;box-shadow:0 0 10px #9a86ff}
  50%{opacity:1;box-shadow:0 0 24px #9a86ff}
}

@keyframes core-breathe{
  0%,100%{box-shadow:0 0 30px rgba(104,71,245,.58)}
  50%{box-shadow:0 0 52px rgba(34,184,230,.78)}
}

@keyframes product-glow{
  0%,100%{transform:translate3d(0,0,0) scale(.92)}
  50%{transform:translate3d(-38px,45px,0) scale(1.15)}
}

@keyframes button-sheen{
  0%,68%{left:-45%;opacity:0}
  73%{opacity:1}
  88%,100%{left:125%;opacity:0}
}

@media(max-width:900px){
  .hero-panel{animation-name:panel-float-mobile}
  .hero-network{opacity:.56}
  @keyframes panel-float-mobile{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-8px)}
  }
}

@media(prefers-reduced-motion:reduce){
  .hero-panel,.orbit .node,.core,.product::before,.btn.primary::after{animation:none!important}
  .motion-ready .reveal{opacity:1;transform:none;transition:none}
}
