/* ============================================================
   ParsinX — Motion
   Smooth, slightly springy material easing. Glows breathe;
   controls respond with quick gloss + subtle press.
   ============================================================ */

:root {
  /* Durations */
  --dur-instant: 80ms;  /* @kind other */
  --dur-fast: 140ms;    /* @kind other */
  --dur-base: 220ms;    /* @kind other */
  --dur-slow: 380ms;    /* @kind other */
  --dur-glow: 6s;       /* @kind other */

  /* Easing */
  --ease-standard: cubic-bezier(0.22, 0.61, 0.36, 1);  /* @kind other */
  --ease-emphasized: cubic-bezier(0.34, 1.56, 0.64, 1); /* @kind other */
  --ease-in-out: cubic-bezier(0.65, 0.05, 0.36, 1);     /* @kind other */
  --ease-exit: cubic-bezier(0.4, 0, 1, 1);              /* @kind other */

  /* Interaction transforms */
  --press-scale: 0.97;  /* @kind other */
  --hover-lift: -2px;   /* @kind other */
}

/* Breathing glow for status dots / live indicators */
@keyframes px-pulse {
  0%, 100% { opacity: 1; box-shadow: var(--glow-online); }
  50%      { opacity: 0.65; box-shadow: 0 0 0 1px color-mix(in srgb, var(--px-emerald) 30%, transparent); }
}

/* Fade + rise for entrances */
@keyframes px-rise {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

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