/* ==========================================================================
   Paul Merchants Limited × WIGITAL AI Executive Presentation
   Animations: Blur-to-Sharp Reveals, Typewriter Cursor & Data Telemetry
   ========================================================================== */

/* Ambient Documentary Motion (Slow Ken Burns on Image) */
@keyframes ambientKenBurns {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.028);
  }
  100% {
    transform: scale(1);
  }
}

.slide-item.active .cinematic-viewport img {
  animation: ambientKenBurns 18s ease-in-out infinite alternate;
}

/* Typewriter Character Blur-to-Sharp Reveal */
.type-char {
  display: inline;
  animation: charReveal 200ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes charReveal {
  from {
    opacity: 0;
    filter: blur(4px);
    transform: translateY(2px);
  }
  to {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
  }
}

/* Glowing Editorial Cursor */
.type-cursor {
  display: inline-block;
  color: var(--cyan-bright);
  font-family: var(--font-mono);
  font-weight: 300;
  margin-left: 2px;
  text-shadow: 0 0 10px var(--cyan-bright);
  animation: blinkCursor 0.75s step-start infinite;
}

.type-cursor.cursor-fade {
  opacity: 0;
  transition: opacity 300ms ease;
  animation: none;
}

@keyframes blinkCursor {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
}

/* Word-by-Word Reveal */
.word-reveal-span {
  display: inline-block;
  opacity: 0;
  filter: blur(3px);
  transform: translateY(4px);
  animation: wordReveal 320ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
  will-change: opacity, filter, transform;
}

@keyframes wordReveal {
  to {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
  }
}

/* Staggered Card Entrance */
.card-reveal {
  opacity: 0;
  transform: translateY(12px);
  animation: cardFadeUp 420ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes cardFadeUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Status Dot Pulse */
@keyframes pulseLive {
  0%, 100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.6;
    transform: scale(1.15);
  }
}

/* Accessibility: Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  .slide-item.active .cinematic-viewport img {
    animation: none !important;
  }

  .type-char,
  .word-reveal-span,
  .type-cursor {
    animation: none !important;
    filter: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
