/* Quiet motion adds depth while keeping every interaction quick and readable. */
@keyframes node-drift {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes core-breathe {
  0%, 100% { box-shadow: 0 0 50px #99c36612; }
  50% { box-shadow: 0 0 82px #99c36635; }
}
@keyframes status-pulse {
  0%, 100% { opacity: .72; }
  50% { opacity: 1; }
}
@keyframes chart-draw {
  from { stroke-dashoffset: 950; }
  to { stroke-dashoffset: 0; }
}

.node-cloud, .node-observe { animation: node-drift 5.8s ease-in-out infinite; }
.node-ship, .node-secure { animation: node-drift 6.6s ease-in-out -2.8s infinite; }
.art-core { animation: core-breathe 5s ease-in-out infinite; }
.status-dot, .pulse-label i { animation: status-pulse 2.6s ease-in-out infinite; }
.reliability-visual path { stroke-dasharray: 950; stroke-dashoffset: 950; }
.project-card.in-view .reliability-visual path { animation: chart-draw 2.1s .25s ease-out forwards; }
.project-card, .button, .contact-link, .nav-contact { transition: transform .28s ease, border-color .28s ease, background-color .28s ease, color .28s ease; }
.button-bright:hover { transform: translateY(-3px); box-shadow: 0 8px 24px #c7fa6233; }
.contact-link:hover { color: var(--lime); border-color: var(--lime); }
.study-card { display: flex; align-items: center; gap: 14px; max-width: 480px; margin: 24px 0; padding: 15px 16px; border: 1px solid #56624f; background: linear-gradient(105deg, #1b231c, #151a16); }
.study-icon { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 auto; background: var(--lime); color: #172014; font: 11px var(--mono); font-weight: 500; }
.study-card strong, .study-card small { display: block; }
.study-card strong { font-size: 12px; font-weight: 600; }
.study-card small { margin-top: 6px; color: #9aa58f; font: 8px var(--mono); letter-spacing: .04em; }
.study-spark { margin-left: auto; color: var(--lime); animation: status-pulse 2.6s ease-in-out infinite; }

.motion-ready .reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .75s ease var(--reveal-delay, 0ms), transform .75s cubic-bezier(.2,.7,.2,1) var(--reveal-delay, 0ms);
}
.motion-ready .reveal.in-view { opacity: 1; transform: translateY(0); }
.motion-ready .hero-copy > * { animation: hero-enter .8s both; }
.motion-ready .hero-copy > *:nth-child(2) { animation-delay: .1s; }
.motion-ready .hero-copy > *:nth-child(3) { animation-delay: .2s; }
.motion-ready .hero-copy > *:nth-child(4) { animation-delay: .32s; }
.motion-ready .hero-copy > *:nth-child(5) { animation-delay: .5s; }
@keyframes hero-enter { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .motion-ready .reveal { opacity: 1; transform: none; }
  .reliability-visual path { stroke-dashoffset: 0; }
}
