/* svc-node.html — hero animation (prefix: nd-)
   Theme: Event loop with orbiting tasks + worker threads */

@keyframes ndGlow  { 0%,100% { opacity: 0.08; } 50% { opacity: 0.2; } }
@keyframes ndFade  { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes ndOrbit { to { transform: rotate(360deg); } }
@keyframes ndBreath { 0%,100% { transform: scale(1); } 50% { transform: scale(1.05); } }

.nd-glow   { animation: ndGlow 3.5s ease-in-out infinite; }
.nd-loop   { animation: ndFade 0.6s var(--ease-spring) 0.4s both; transform-box: fill-box; transform-origin: center; }
.nd-loop circle:nth-child(2) { animation: ndBreath 2.4s ease-in-out 1.8s infinite; transform-box: fill-box; transform-origin: center; }
.nd-orbit  { transform-box: fill-box; transform-origin: 230px 150px; animation: ndFade 0.6s ease-out 0.9s both, ndOrbit 8s linear 1.4s infinite; }
.nd-orbit-2 { animation: ndFade 0.6s ease-out 1.0s both, ndOrbit 10s linear -3s infinite; }
.nd-orbit-3 { animation: ndFade 0.6s ease-out 1.1s both, ndOrbit 12s linear -6s infinite; }

.nd-worker { }
.nd-w1 { animation: ndFade 0.5s var(--ease-spring) 0.8s both; }
.nd-w2 { animation: ndFade 0.5s var(--ease-spring) 0.95s both; }
.nd-w3 { animation: ndFade 0.5s var(--ease-spring) 1.1s both; }
.nd-w4 { animation: ndFade 0.5s var(--ease-spring) 1.25s both; }
.nd-conn { animation: ndFade 0.4s ease-out 1.4s both; }
