/* Motion inspired by agen.co — restrained fade-up reveals, subtle hovers */

.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity var(--transition-reveal), transform var(--transition-reveal);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }
.reveal-delay-5 { transition-delay: 0.5s; }

/* Modal transitions */
.modal.is-opening .modal__backdrop {
  animation: modal-fade-in 0.3s ease forwards;
}

.modal.is-opening .modal__panel {
  animation: modal-slide-in 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.modal.is-closing .modal__backdrop {
  animation: modal-fade-out 0.25s ease forwards;
}

.modal.is-closing .modal__panel {
  animation: modal-slide-out 0.25s ease forwards;
}

@keyframes modal-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes modal-fade-out {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes modal-slide-in {
  from {
    opacity: 0;
    transform: translateY(16px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes modal-slide-out {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(8px) scale(0.98);
  }
}

/* Hero entrance */
.hero__line,
.hero__between,
.hero__pair-item {
  opacity: 0;
  transform: translateY(20px);
  animation: hero-enter 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.hero__line:nth-child(1) { animation-delay: 0.1s; }
.hero__line:nth-child(2) { animation-delay: 0.2s; }
.hero__between { animation-delay: 0.35s; }
.hero__pair-item:nth-child(1) { animation-delay: 0.45s; }
.hero__pair-item:nth-child(2) { animation-delay: 0.55s; }

.hero__subtitle { animation: hero-enter 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.65s forwards; opacity: 0; }
.hero__actions { animation: hero-enter 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.75s forwards; opacity: 0; }

@keyframes hero-enter {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Capability step hover lift */
.capability-step {
  transition: background var(--transition-base), transform var(--transition-base);
}

.capability-step:hover {
  transform: translateY(-2px);
}

/* Case study hover */
.case-study {
  transition: border-color var(--transition-base), box-shadow var(--transition-base);
}

.case-study:hover {
  border-color: var(--color-border-strong);
  box-shadow: var(--shadow-md);
}

/* Tech item icon pulse on hover */
.tech-item:hover .tech-item__icon {
  transform: scale(1.08);
}

.tech-item__icon {
  transition: transform var(--transition-base);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .reveal {
    opacity: 1;
    transform: none;
  }

  .hero__line,
  .hero__between,
  .hero__pair-item,
  .hero__subtitle,
  .hero__actions {
    opacity: 1;
    transform: none;
    animation: none;
  }

  .platform__orbit {
    animation: none;
  }
}
