/* animations — subtle, "alive but not AI". Reduce-motion respected by base.css. */

@keyframes iblis-fade-up {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes iblis-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes iblis-anaglyph-drift {
  0%, 100% { text-shadow: var(--anaglyph-shift) 0 0 var(--color-accent), calc(var(--anaglyph-shift) * -1) 0 0 var(--color-accent-cool); }
  50%      { text-shadow: 1px 0 0 var(--color-accent), -1px 0 0 var(--color-accent-cool); }
}
@keyframes iblis-watermark-float {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  50%      { transform: translate(0, -6px) rotate(0.4deg); }
}
@keyframes iblis-blink {
  0%, 92% { opacity: 1; }
  95%     { opacity: 0.2; }
  100%    { opacity: 1; }
}
@keyframes iblis-caret {
  0%, 50%  { opacity: 1; }
  51%, 100% { opacity: 0; }
}

/* Reveal on scroll — JS adds .is-visible. */
.iblis-reveal {
  opacity: 0;
  transform: translateY(12px);
  transition:
    opacity var(--motion-slow) var(--ease-standard),
    transform var(--motion-slow) var(--ease-standard);
  will-change: opacity, transform;
}
.iblis-reveal.is-visible { opacity: 1; transform: none; }
.iblis-reveal-delay-1 { transition-delay: 80ms; }
.iblis-reveal-delay-2 { transition-delay: 160ms; }
.iblis-reveal-delay-3 { transition-delay: 240ms; }
.iblis-reveal-delay-4 { transition-delay: 320ms; }

/* Anaglyph text — the 3D-glasses signature. Static by default,
 * animated only on hover/focus or when .is-anaglyph-live applied. */
.is-anaglyph {
  text-shadow:
    var(--anaglyph-shift) 0 0 var(--color-accent),
    calc(var(--anaglyph-shift) * -1) 0 0 var(--color-accent-cool);
}
.is-anaglyph-live { animation: iblis-anaglyph-drift 6s ease-in-out infinite; }
.is-anaglyph:hover { animation: iblis-anaglyph-drift 1.4s ease-in-out infinite; }

/* Caret for typewriter-style copy. */
.iblis-caret::after {
  content: "_";
  display: inline-block;
  margin-left: 2px;
  color: var(--color-accent);
  animation: iblis-caret 1.1s step-end infinite;
}

/* Soft float for watermarks. */
.iblis-watermark { animation: iblis-watermark-float 14s ease-in-out infinite; }

/* Tag-style entrance for nav / hero on first paint. */
.iblis-enter { animation: iblis-fade-up var(--motion-slow) var(--ease-standard) both; }
.iblis-enter-1 { animation-delay: 50ms; }
.iblis-enter-2 { animation-delay: 150ms; }
.iblis-enter-3 { animation-delay: 250ms; }

/* "alive" pulse for status dots. */
.iblis-pulse {
  display: inline-block;
  width: 8px; height: 8px; border-radius: var(--radius-full);
  background: var(--color-state-success);
  box-shadow: 0 0 0 0 currentColor;
  animation: iblis-blink 3s ease-in-out infinite;
}
.iblis-pulse-warn { background: var(--color-state-warning); }
.iblis-pulse-danger { background: var(--color-state-danger); }
