:root {
  --pa-motion-fast: var(--pa-dur-fast, 120ms);
  --pa-motion-med: var(--pa-dur-med, 180ms);
  --pa-motion-slow: var(--pa-dur-slow, 280ms);
  --pa-motion-ease-out: var(--pa-ease-out, cubic-bezier(0.2, 0.8, 0.2, 1));
  --pa-motion-ease-in: var(--pa-ease-in, cubic-bezier(0.4, 0, 1, 1));
  --pa-motion-spring: var(--pa-ease-spring, cubic-bezier(0.2, 0.9, 0.2, 1));
  --pa-motion-glow: var(--pa-edge-glow, rgba(15, 118, 110, 0.2));
}

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

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

@keyframes pa-pop {
  0% { transform: scale(0.98); }
  55% { transform: scale(1.01); }
  100% { transform: scale(1); }
}

@keyframes pa-pulse-glow {
  0% { box-shadow: 0 0 0 0 var(--pa-motion-glow); }
  60% { box-shadow: 0 0 0 10px rgba(0, 0, 0, 0); }
  100% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); }
}

.pa-motion-fade {
  animation: pa-fade-in var(--pa-motion-med) var(--pa-motion-ease-out) both;
}

.pa-motion-rise {
  animation: pa-rise-in var(--pa-motion-med) var(--pa-motion-ease-out) both;
}

.pa-motion-pop {
  animation: pa-pop var(--pa-motion-med) var(--pa-motion-spring) both;
}

.pa-motion-glow {
  animation: pa-pulse-glow 900ms var(--pa-motion-ease-out) both;
}

.pa-motion-hover-lift {
  transition: transform var(--pa-motion-fast) var(--pa-motion-spring),
    box-shadow var(--pa-motion-fast) var(--pa-motion-ease-out);
}

.pa-motion-hover-lift:hover {
  transform: translateY(-2px);
}

.pa-motion-press {
  transition: transform var(--pa-motion-fast) var(--pa-motion-ease-out);
}

.pa-motion-press:active {
  transform: scale(0.98);
}

@media (prefers-reduced-motion: reduce) {
  .pa-motion-fade,
  .pa-motion-rise,
  .pa-motion-pop,
  .pa-motion-glow {
    animation: none !important;
  }
  .pa-motion-hover-lift,
  .pa-motion-press {
    transition: none !important;
  }
  .pa-motion-hover-lift:hover,
  .pa-motion-press:active {
    transform: none !important;
  }
}
