/* Cursor glow */
.cursor-glow {
  position: fixed;
  top: 0;
  left: 0;
  width: 500px;
  height: 500px;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
  background: radial-gradient(
    circle,
    rgba(5, 150, 105, 0.14) 0%,
    rgba(43, 92, 125, 0.08) 35%,
    transparent 70%
  );
  transform: translate(-50%, -50%);
  opacity: 0;
  transition: opacity 0.4s ease-in-out;
  will-change: transform;
}

body.has-cursor-glow .cursor-glow.is-visible {
  opacity: 1;
}

@media (pointer: coarse) {
  .cursor-glow {
    display: none;
  }
}

/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.8s ease-in-out, transform 0.8s ease-in-out;
}

.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; }

/* Breathing animation */
@keyframes breathe {
  0%, 100% {
    opacity: 0.4;
    transform: scale(1);
  }
  50% {
    opacity: 0.7;
    transform: scale(1.15);
  }
}

@keyframes glow-breathe {
  0%, 100% {
    opacity: 0.4;
    transform: translate(-50%, -50%) scale(1);
  }
  50% {
    opacity: 0.7;
    transform: translate(-50%, -50%) scale(1.08);
  }
}

.bg-orb--teal {
  animation: float-teal 12s ease-in-out infinite;
}

.bg-orb--emerald {
  animation: float-emerald 14s ease-in-out infinite;
}

@keyframes float-teal {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(30px, 20px); }
}

@keyframes float-emerald {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(-25px, -30px); }
}

/* Hero entrance — opacity only so fixed header stays stable */
.hero__badge {
  animation: fade-in 0.8s ease-in-out both;
}

.hero h1 {
  animation: fade-in 0.8s ease-in-out 0.1s both;
}

.hero__subtitle {
  animation: fade-in 0.8s ease-in-out 0.2s both;
}

.hero__actions {
  animation: fade-in 0.8s ease-in-out 0.3s both;
}

.hero__stats {
  animation: fade-in 0.8s ease-in-out 0.35s both;
}

.hero__visual {
  animation: fade-in 1s ease-in-out 0.4s both;
}

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

/* ISO step pulse */
.iso-step__number {
  animation: pulse-glow 3s ease-in-out infinite;
}

.iso-step:nth-child(3) .iso-step__number {
  animation-delay: 1s;
}

.iso-step:nth-child(5) .iso-step__number {
  animation-delay: 2s;
}

@keyframes pulse-glow {
  0%, 100% {
    box-shadow: 0 4px 20px var(--emerald-glow);
  }
  50% {
    box-shadow: 0 4px 32px rgba(5, 150, 105, 0.55);
  }
}

@keyframes phone-float {
  0%, 100% { transform: translateY(0) translateZ(0); }
  50% { transform: translateY(-8px) translateZ(0); }
}

@media (max-width: 479px) {
  .phone-mockup--float {
    animation: none;
  }
}

@keyframes orbit-spin {
  from { transform: translate(-50%, -50%) rotate(0deg); }
  to { transform: translate(-50%, -50%) rotate(360deg); }
}

@keyframes border-rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes connector-pulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero__badge,
  .hero h1,
  .hero__subtitle,
  .hero__actions,
  .hero__stats,
  .hero__visual {
    animation: none;
  }

  .bg-orb--teal,
  .bg-orb--emerald {
    animation: none;
  }

  .iso-step__number,
  .hero__badge-dot,
  .hero__glow-ring,
  .phone-mockup--float,
  .hero__orbit,
  .download-cta__panel::after {
    animation: none;
  }

  .hero__glow-ring {
    opacity: 0.5;
    transform: translate(-50%, -50%);
  }
}
