
/* Hex Field Motion v2
   Actual field movement refinement */

body::before {
  background-position: 0 0 !important;
  animation:
    cgHexTranslate 55s linear infinite,
    cgHexBreath 10s ease-in-out infinite !important;
  will-change: background-position, opacity;
}

body:not(.home-page)::before {
  opacity: .18 !important;
}

@keyframes cgHexTranslate {
  0%   { background-position: 0 0; }
  25%  { background-position: -110px 55px; }
  50%  { background-position: -220px 0; }
  75%  { background-position: -110px -55px; }
  100% { background-position: 0 0; }
}

@keyframes cgHexBreath {
  0%,100% {
    opacity: .12;
    filter: brightness(.7) saturate(.7);
  }
  50% {
    opacity: .22;
    filter: brightness(.95) saturate(1);
  }
}

body > .signal-layer {
  animation: cgSignalDrift 70s linear infinite;
}

@keyframes cgSignalDrift {
  0% { transform: translate3d(0,0,0); }
  50% { transform: translate3d(-25px,18px,0); }
  100% { transform: translate3d(0,0,0); }
}

@media (prefers-reduced-motion: reduce) {
  body::before,
  body > .signal-layer {
    animation: none !important;
  }
}
