@keyframes fade-in-up-snappy {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse-roi-dot {
  0%, 100% {
    opacity: 0.5;
    transform: translate(-50%, -50%) scale(0.9);
  }
  50% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.15);
    box-shadow: 0 0 16px var(--accent);
  }
}

@keyframes scale-in-snappy {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes pulse-soft {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

/* Home Screen Snappy Entrances */
.screen.active .brand-icon {
  animation: scale-in-snappy 280ms var(--ease-out) 0ms both;
}

.screen.active .brand-name {
  animation: fade-in-up-snappy 280ms var(--ease-out) 40ms both;
}

.screen.active .brand-tagline {
  animation: fade-in-up-snappy 280ms var(--ease-out) 80ms both;
}

.screen.active .home-description {
  animation: fade-in-up-snappy 280ms var(--ease-out) 120ms both;
}

.screen.active .btn-primary {
  animation: fade-in-up-snappy 280ms var(--ease-out) 160ms both;
}

.screen.active .home-footnote {
  animation: fade-in-up-snappy 280ms var(--ease-out) 200ms both;
}

/* Tips Screen Snappy Entrances */
.tip-item {
  animation: fade-in-up-snappy 240ms var(--ease-out) both;
}

.tip-item:nth-child(1) { animation-delay: 40ms; }
.tip-item:nth-child(2) { animation-delay: 80ms; }
.tip-item:nth-child(3) { animation-delay: 120ms; }
.tip-item:nth-child(4) { animation-delay: 160ms; }

/* Camera Indicators */
.roi-dot {
  animation: pulse-roi-dot 2s var(--ease-in-out) infinite;
}

.confidence-badge[data-quality="analyzing"] .confidence-dot {
  animation: pulse-soft 1.2s var(--ease-in-out) infinite;
}
