/* NEXULIS — Motion
 * Calm, precise, never bouncy. Short durations, standard/decelerate easing.
 * Telemetry pulses are subtle and slow. Respect prefers-reduced-motion.
 */

:root {
  --duration-instant: 80ms;  /* @kind other */
  --duration-fast:    140ms; /* @kind other */
  --duration-base:    220ms; /* @kind other */
  --duration-slow:    360ms; /* @kind other */
  --duration-slower:  560ms; /* @kind other */

  /* Easing — engineered curves, no overshoot/bounce */
  --ease-standard:   cubic-bezier(0.4, 0, 0.2, 1); /* @kind other */
  --ease-decelerate: cubic-bezier(0.0, 0, 0.2, 1); /* @kind other */
  --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);   /* @kind other */
  --ease-emphasized: cubic-bezier(0.2, 0, 0, 1);   /* @kind other */

  --transition-control: color var(--duration-fast) var(--ease-standard),
                        background-color var(--duration-fast) var(--ease-standard),
                        border-color var(--duration-fast) var(--ease-standard),
                        box-shadow var(--duration-fast) var(--ease-standard),
                        transform var(--duration-fast) var(--ease-standard); /* @kind other */
}

@keyframes nx-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.45; }
}

@keyframes nx-ping {
  0%   { transform: scale(1);   opacity: 0.6; }
  80%, 100% { transform: scale(2.2); opacity: 0; }
}

@keyframes nx-scan {
  from { background-position-y: 0; }
  to   { background-position-y: var(--grid-size, 56px); }
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-instant: 0ms; /* @kind other */
    --duration-fast: 0ms;    /* @kind other */
    --duration-base: 0ms;    /* @kind other */
    --duration-slow: 0ms;    /* @kind other */
    --duration-slower: 0ms;  /* @kind other */
  }
}
