/* Typewriter cursor */
.typewriter-cursor::after {
  content: '\2588';
  animation: blink 0.8s step-end infinite;
  color: var(--primary);
  font-weight: 300;
}

@keyframes blink {
  50% { opacity: 0; }
}

.typewriter-active {
  min-height: 1.5em;
}

/* Skeleton loading */
.skeleton-bar {
  height: 14px;
  background: linear-gradient(90deg, var(--border) 25%, var(--card-hover) 50%, var(--border) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s ease-in-out infinite;
  border-radius: 4px;
  margin-bottom: 8px;
}

.skeleton-bar:nth-child(2) { width: 85%; }
.skeleton-bar:nth-child(3) { width: 70%; }
.skeleton-bar:nth-child(4) { width: 60%; }

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Screen transitions */
.screen-enter {
  animation: fadeIn 0.2s ease forwards;
}

.screen-exit {
  animation: fadeOut 0.15s ease forwards;
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes fadeOut {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* Triage card fly-in */
.triage-card.animating {
  animation: categorize 0.4s ease forwards;
}

@keyframes categorize {
  0% { transform: translateY(0); }
  30% { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}

/* Counter tick animation */
.counter-animate {
  transition: transform 0.1s ease;
}

/* Fade in for action chips */
.fade-in {
  animation: fadeIn 0.3s ease forwards;
}

/* Success checkmark */
.ai-action-chip.done::before {
  content: '\2713 ';
}
