/* ============================================================
   SAIKAT DESIGN — MOTION
   Motion should explain hierarchy, not decorate the page.
   ============================================================ */

@keyframes float-slow{
  0%   { transform: translate3d(0,0,0) rotate(0deg); }
  50%  { transform: translate3d(0,-14px,0) rotate(2deg); }
  100% { transform: translate3d(0,0,0) rotate(0deg); }
}
@keyframes float-slower{
  0%   { transform: translate3d(0,0,0); }
  50%  { transform: translate3d(0,10px,0); }
  100% { transform: translate3d(0,0,0); }
}
.hero-orb.o1{ animation: float-slow 9s ease-in-out infinite; }
.hero-orb.o2{ animation: float-slower 7s ease-in-out infinite; }
.hero-orb.o3{ animation: float-slow 11s ease-in-out infinite reverse; }

@keyframes fade-in{
  from{ opacity: 0; }
  to{ opacity: 1; }
}
@keyframes fade-up{
  from{ opacity: 0; transform: translateY(18px); }
  to{ opacity: 1; transform: translateY(0); }
}

/* Page enter transition */
.page-enter{ animation: fade-up 620ms cubic-bezier(.22,.61,.36,1) both; }

/* NDA gate transition-out */
.nda-leaving{
  animation: gate-leave 560ms cubic-bezier(.5,0,.2,1) forwards;
}
@keyframes gate-leave{
  to{ opacity: 0; transform: translateY(-18px) scale(0.99); }
}
.site-entering{
  animation: fade-up 700ms cubic-bezier(.22,.61,.36,1) both;
}

/* flow diagram draw-in */
.flow-line{
  background-size: 200% 100%;
}
.flow.is-visible .flow-node{ animation: fade-up 560ms cubic-bezier(.22,.61,.36,1) both; }
.flow.is-visible .flow-node:nth-child(1){ animation-delay: 0ms; }
.flow.is-visible .flow-node:nth-child(3){ animation-delay: 90ms; }
.flow.is-visible .flow-node:nth-child(5){ animation-delay: 180ms; }
.flow.is-visible .flow-node:nth-child(7){ animation-delay: 270ms; }
.flow.is-visible .flow-node:nth-child(9){ animation-delay: 360ms; }
.flow.is-visible .flow-node:nth-child(11){ animation-delay: 450ms; }
.flow.is-visible .flow-node:nth-child(13){ animation-delay: 540ms; }

@media (prefers-reduced-motion: reduce){
  .hero-orb{ animation: none !important; }
  .project-card-inner{ transform: none !important; }
}
