/* Animations & transitions reusable */
@keyframes kt-spin { to { transform: rotate(360deg); } }
@keyframes kt-pulse { 0%,100% { opacity: 0.45; } 50% { opacity: 1; } }
.kt-spin { animation: kt-spin 1s linear infinite; }
.kt-pulse { animation: kt-pulse 1.6s var(--kt-ease-out) infinite; }

/* Skeletons */
.kt-skel {
  background: linear-gradient(90deg, var(--kt-surface-2) 25%, var(--kt-surface-3) 37%, var(--kt-surface-2) 63%);
  background-size: 400% 100%;
  animation: kt-shimmer 1.4s ease-in-out infinite;
  border-radius: var(--kt-radius-sm);
}
@keyframes kt-shimmer {
  0% { background-position: 100% 50%; }
  100% { background-position: 0 50%; }
}

/* Magnetic snap pulse on guide */
@keyframes kt-snap-pulse {
  0% { box-shadow: 0 0 0 0 rgba(255,45,123,.50); }
  100% { box-shadow: 0 0 0 8px rgba(255,45,123,0); }
}
