/**
 * Cognifiy motion primitives
 */

@keyframes cg-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes cg-rise-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

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

@keyframes cg-modal-in {
  from { opacity: 0; transform: translateY(8px) scale(0.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes cg-sheet-in {
  from { transform: translateY(100%); }
  to { transform: translateY(0); }
}

@keyframes cg-spin {
  to { transform: rotate(360deg); }
}

@keyframes cg-skeleton {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}

@keyframes cg-check-draw {
  from { stroke-dashoffset: 16; }
  to { stroke-dashoffset: 0; }
}

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

@keyframes cg-error-nudge {
  0%, 100% { transform: translateX(0); }
  30% { transform: translateX(-3px); }
  60% { transform: translateX(3px); }
}

@keyframes cg-page-enter {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes cg-ai-pulse {
  0%, 100% { opacity: 0.65; }
  50% { opacity: 1; }
}

@keyframes cg-caret {
  50% { opacity: 0; }
}

@keyframes cg-indeterminate {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(350%); }
}

@keyframes cg-success-flash {
  0% { background: var(--success-soft); }
  100% { background: transparent; }
}

.cg-anim-fade { animation: cg-fade-in var(--motion-base) var(--ease) both; }
.cg-anim-rise { animation: cg-rise-in var(--motion-panel) var(--ease) both; }
.cg-anim-scale { animation: cg-scale-in var(--motion-base) var(--ease) both; }
.cg-page-enter { animation: cg-page-enter 140ms var(--ease) both; }

.cg-transition {
  transition:
    transform var(--motion-base) var(--ease),
    opacity var(--motion-base) var(--ease),
    background var(--motion-base) var(--ease),
    border-color var(--motion-base) var(--ease),
    box-shadow var(--motion-base) var(--ease),
    color var(--motion-base) var(--ease);
}

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

  .btn:hover:not(:disabled),
  .cg-btn:hover:not(:disabled),
  .cg-card--interactive:hover,
  .cg-icon-btn:hover {
    transform: none !important;
  }

  .cg-skeleton {
    animation: none !important;
    background: var(--surface-secondary) !important;
  }

  .cg-progress--indeterminate .cg-progress__bar {
    animation: none !important;
  }
}
