/* ─── Animations & Reveal ────────────────────────────────── */

/* Reveal on scroll */
.reveal-up {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1) var(--delay, 0s),
    transform 0.6s cubic-bezier(0.16, 1, 0.3, 1) var(--delay, 0s);
}

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

/* Features cards stagger */
.features-cards .feat-card:nth-child(1) { --delay: 0.0s; }
.features-cards .feat-card:nth-child(2) { --delay: 0.07s; }
.features-cards .feat-card:nth-child(3) { --delay: 0.14s; }
.features-cards .feat-card:nth-child(4) { --delay: 0.07s; }
.features-cards .feat-card:nth-child(5) { --delay: 0.14s; }
.features-cards .feat-card:nth-child(6) { --delay: 0.21s; }

/* Floating animation for terminal demo */
@keyframes float {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}

.terminal-demo {
  animation: float 6s ease-in-out infinite;
}

/* Shimmer effect */
@keyframes shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position:  200% 0; }
}

.shimmer {
  background: linear-gradient(
    90deg,
    rgba(255,255,255,0)   0%,
    rgba(255,255,255,0.05) 50%,
    rgba(255,255,255,0)   100%
  );
  background-size: 200% 100%;
  animation: shimmer 2.5s linear infinite;
}

/* Glow pulse on CTA button */
@keyframes glow-pulse {
  0%,100% { box-shadow: 0 4px 24px rgba(124,58,237,0.45); }
  50%      { box-shadow: 0 4px 48px rgba(124,58,237,0.75), 0 0 80px rgba(6,182,212,0.2); }
}

.btn--primary { animation: glow-pulse 3s ease-in-out infinite; }
.btn--primary:hover { animation: none; }

/* Noise texture overlay */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.025;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
}

/* Typing cursor blink for terminal */
@keyframes type-cursor {
  0%,100% { opacity: 1; }
  50%      { opacity: 0; }
}
