.reveal-on-scroll {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 500ms ease, transform 500ms ease;
}

body.page-ready .reveal-on-scroll:not(.is-visible) {
  opacity: 0.15;
  transform: translateY(16px);
}

.reveal-on-scroll.is-visible {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

.reveal-on-scroll[data-reveal-delay='70'] { transition-delay: 70ms; }
.reveal-on-scroll[data-reveal-delay='80'] { transition-delay: 80ms; }
.reveal-on-scroll[data-reveal-delay='120'] { transition-delay: 120ms; }
.reveal-on-scroll[data-reveal-delay='140'] { transition-delay: 140ms; }
.reveal-on-scroll[data-reveal-delay='160'] { transition-delay: 160ms; }
.reveal-on-scroll[data-reveal-delay='210'] { transition-delay: 210ms; }
.reveal-on-scroll[data-reveal-delay='240'] { transition-delay: 240ms; }

.hero-orbit {
  animation: hero-orbit-breathe 7s ease-in-out infinite;
}

.orbit {
  animation: orbit-spin 22s linear infinite;
  transform-origin: center;
}

.orbit-two {
  animation-direction: reverse;
  animation-duration: 17s;
}

.orbit-three {
  animation-duration: 28s;
}

.orbit-node {
  animation: node-pulse 3.5s ease-in-out infinite;
}

.node-right { animation-delay: 700ms; }
.node-bottom { animation-delay: 1.4s; }
.node-left { animation-delay: 2.1s; }

.hero-float-card {
  animation: float-card 5s ease-in-out infinite;
}

.hero-float-card-bottom {
  animation-delay: 1.2s;
}

.status-pulse {
  animation: status-pulse 1.8s ease-out infinite;
}

.service-card,
.principle-card,
.process-step,
.faq-item {
  transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition), background var(--transition);
}

.service-card:hover,
.principle-card:hover,
.process-step:hover {
  transform: translateY(-6px);
}

.service-card:hover img {
  transform: rotate(-7deg) scale(1.08);
}

.service-card img {
  transition: transform var(--transition);
}

.faq-item[open] summary .faq-plus {
  transform: rotate(45deg);
}

.faq-plus {
  transition: transform var(--transition);
}

@keyframes hero-orbit-breathe {
  0%,
  100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-7px) scale(1.015); }
}

@keyframes orbit-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes node-pulse {
  0%,
  100% { box-shadow: 0 0 0 0 rgba(39, 193, 242, 0.12); }
  50% { box-shadow: 0 0 0 8px rgba(39, 193, 242, 0.1); }
}

@keyframes float-card {
  0%,
  100% { transform: translateY(0); }
  50% { transform: translateY(-9px); }
}

@keyframes status-pulse {
  0% { box-shadow: 0 0 0 0 rgba(39, 193, 242, 0.55); }
  70% { box-shadow: 0 0 0 8px rgba(39, 193, 242, 0); }
  100% { box-shadow: 0 0 0 0 rgba(39, 193, 242, 0); }
}

@media (prefers-reduced-motion: reduce) {
  .reveal-on-scroll {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero-orbit,
  .orbit,
  .orbit-node,
  .hero-float-card,
  .status-pulse {
    animation: none;
  }

  .service-card,
  .principle-card,
  .process-step,
  .faq-item,
  .service-card img,
  .faq-plus {
    transition: none;
  }
}
