/* GENERATED from packages/design-tokens — DO NOT EDIT. Run: make sync-tokens */
/* csplog shared keyframes — SINGLE SOURCE OF TRUTH.
 *
 * Only hand-edited copy. Per-app copies are generated by `make sync-tokens`.
 * @keyframes can't be CSS variables, so the brand motion vocabulary lives here
 * as real CSS that both consumers import. The dashboard's tailwind.config.js
 * keeps the `animation:` utility names (animate-eyes-anim, etc.) but no longer
 * defines these keyframes — they resolve from this file.
 */

/* Logo "eyes" — blink + glance. */
@keyframes blinkLook {
  0%, 18%   { transform: translateX(0) scaleY(1); }
  19%, 21%  { transform: translateX(0) scaleY(0.05); }
  24%, 40%  { transform: translateX(-2px) scaleY(1); }
  52%, 70%  { transform: translateX(2px) scaleY(1); }
  78%, 80%  { transform: translateX(0) scaleY(0.05); }
  83%, 100% { transform: translateX(0) scaleY(1); }
}

/* Live dots — pulse opacity. */
@keyframes pulseDot {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.3; }
}

/* Scroll reveal — fade + rise. */
@keyframes revealUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
