/* A slow, non-synchronous neural scheme for the homepage hero. */
.neural-shell {
  animation: neural-shell-drift 31s ease-in-out infinite alternate;
}

.neural-glow {
  animation: neural-glow-breathe 19s ease-in-out infinite alternate;
}

.neural-glow-b {
  animation-duration: 27s;
  animation-delay: -9s;
}

.neural-line {
  opacity: 0.42;
  clip-path: inset(0 100% 0 0);
  animation:
    neural-line-reveal var(--line-reveal-duration, 1.25s) cubic-bezier(.22, .61, .36, 1) var(--line-reveal-delay, .2s) both,
    neural-line-sway var(--line-sway-duration, 21s) ease-in-out calc(var(--line-reveal-delay, .2s) + var(--line-reveal-duration, 1.25s)) infinite alternate;
}

.line-1 { --line-reveal-delay: .12s; --line-reveal-duration: 1.18s; --line-sway-duration: 23s; }
.line-2 { --line-reveal-delay: .28s; --line-reveal-duration: 1.36s; --line-sway-duration: 19s; }
.line-3 { --line-reveal-delay: .46s; --line-reveal-duration: 1.24s; --line-sway-duration: 27s; }
.line-4 { --line-reveal-delay: .66s; --line-reveal-duration: 1.08s; --line-sway-duration: 21s; }
.line-5 { --line-reveal-delay: .84s; --line-reveal-duration: 1.32s; --line-sway-duration: 25s; }

.neural-node {
  opacity: 0;
  animation: neural-node-reveal 680ms cubic-bezier(.22, .61, .36, 1) var(--node-reveal-delay, .8s) forwards;
}

.node-1 { --node-reveal-delay: .72s; }
.node-2 {
  --node-reveal-delay: .9s;
  animation:
    neural-node-reveal 680ms cubic-bezier(.22, .61, .36, 1) var(--node-reveal-delay) forwards,
    neural-node-drift-one 17s ease-in-out 1.8s infinite alternate,
    neural-node-soft-pulse 8.6s ease-in-out 2.6s infinite;
}
.node-3 { --node-reveal-delay: 1.08s; }
.node-4 { --node-reveal-delay: 1.26s; }
.node-5 {
  --node-reveal-delay: 1.44s;
  animation:
    neural-node-reveal 680ms cubic-bezier(.22, .61, .36, 1) var(--node-reveal-delay) forwards,
    neural-node-drift-two 23s ease-in-out 2.2s infinite alternate,
    neural-node-soft-pulse 11.4s ease-in-out 3.8s infinite;
}
.node-6 { --node-reveal-delay: 1.62s; }
.node-7 {
  --node-reveal-delay: 1.8s;
  animation:
    neural-node-reveal 680ms cubic-bezier(.22, .61, .36, 1) var(--node-reveal-delay) forwards,
    neural-node-drift-three 20s ease-in-out 2.9s infinite alternate,
    neural-node-soft-pulse 9.8s ease-in-out 4.4s infinite;
}
.node-8 { --node-reveal-delay: 1.98s; }

@keyframes neural-line-reveal {
  from { clip-path: inset(0 100% 0 0); }
  to { clip-path: inset(0 0 0 0); }
}

@keyframes neural-line-sway {
  from { transform: translate3d(0, 0, 0) rotate(var(--line-rotate, 0deg)); }
  to { transform: translate3d(2px, -1px, 0) rotate(var(--line-rotate, 0deg)); }
}

@keyframes neural-node-reveal {
  from { opacity: 0; transform: scale(.62); }
  to { opacity: .82; transform: scale(1); }
}

@keyframes neural-node-drift-one {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(3px, -2px, 0); }
}

@keyframes neural-node-drift-two {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(-2px, 3px, 0); }
}

@keyframes neural-node-drift-three {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(2px, 2px, 0); }
}

@keyframes neural-node-soft-pulse {
  0%, 100% { opacity: .74; }
  50% { opacity: .96; }
}

@keyframes neural-glow-breathe {
  from { transform: scale(1); opacity: .86; }
  to { transform: scale(1.025); opacity: .98; }
}

@keyframes neural-shell-drift {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(2px, -1px, 0); }
}

@media (prefers-reduced-motion: reduce) {
  .neural-shell,
  .neural-glow,
  .neural-line,
  .neural-node {
    animation: none;
    transform: none;
  }

  .neural-line { clip-path: inset(0 0 0 0); }
  .neural-node { opacity: .82; }
}
