@keyframes ring {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes fade-in-right {
  0% { opacity: 0; transform: translateX(10px); }
  100% { opacity: 1; transform: translateX(0); }
}

@keyframes fade-in-top {
  0% { opacity: 0; transform: translateY(-10px); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes fade-out-top {
  0% { height: 100%; }
  99% { height: 0; }
  100% { visibility: hidden; }
}

@keyframes accordion-slide-up {
  0% { height: var(--radix-accordion-content-height); opacity: 1; }
  100% { height: 0; opacity: 0; }
}

@keyframes accordion-slide-down {
  0% { min-height: 0; max-height: 0; opacity: 0; }
  100% { min-height: var(--radix-accordion-content-height); max-height: none; opacity: 1; }
}

@keyframes accordion-down {
  from { height: 0; }
  to { height: var(--radix-accordion-content-height); }
}

@keyframes accordion-up {
  from { height: var(--radix-accordion-content-height); }
  to { height: 0; }
}

@keyframes enter {
  0% { transform: scale(0.9); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes leave {
  0% { transform: scale(1); opacity: 1; }
  100% { transform: scale(0.9); opacity: 0; }
}

@keyframes slide-in {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(0); }
}

/* Utility Execution Classes */
.animate-ring { animation: ring 2.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; }
.animate-fade-in-right { animation: fade-in-right 0.3s cubic-bezier(0.5, 0, 0.5, 1) forwards; }
.animate-fade-in-top { animation: fade-in-top 0.2s cubic-bezier(0.5, 0, 0.5, 1) forwards; }
.animate-fade-out-top { animation: fade-out-top 0.2s cubic-bezier(0.5, 0, 0.5, 1) forwards; }
.animate-accordion-open { animation: accordion-slide-down 300ms cubic-bezier(0.87, 0, 0.13, 1) forwards; }
.animate-accordion-close { animation: accordion-slide-up 300ms cubic-bezier(0.87, 0, 0.13, 1) forwards; }
.animate-accordion-down { animation: accordion-down 0.2s ease-out; }
.animate-accordion-up { animation: accordion-up 0.2s ease-out; }
.animate-enter { animation: enter 200ms ease-out; }
.animate-slide-in { animation: slide-in 1.2s cubic-bezier(.41,.73,.51,1.02); }
.animate-leave { animation: leave 150ms ease-in forwards; }
