/* Typing cursor */
@keyframes caretBlink {
  50% {
    opacity: 0;
  }
}

[data-typing-words]::after {
  content: "";
  display: inline-block;
  width: 0.08em;
  height: 0.9em;
  margin-left: 0.08em;
  background: var(--color-primary);
  animation: caretBlink 900ms steps(1) infinite;
  vertical-align: -0.08em;
}

[data-typing-words] {
  color: var(--color-primary);
}

/* Scroll reveal */
.js-reveal .reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 640ms ease, transform 640ms ease;
}

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

.terminal-card,
.project-card,
.skill-group,
.more-card,
.contact-panel {
  will-change: transform;
}

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

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