/* Keyframes from EB Automatisation V2.dc.html — names kept identical to the source. */

@keyframes ebpulse{
  0%,100%{ transform:scale(1); opacity:1; }
  50%{ transform:scale(1.55); opacity:.5; }
}

@keyframes ebflow{
  to{ background-position:16px 0; }
}

@keyframes ebblink{
  0%,100%{ opacity:1; }
  50%{ opacity:.25; }
}

/* ---------- lueur : ajoutées lors de l'intégration de la bibliothèque de composants "lueur" ---------- */
/* Perf mobile (PageSpeed) : ces animations tournent en permanence tant que
   l'élément est visible, sur de nombreux éléments à la fois — elles doivent
   donc rester sur transform/opacity (compositées par le GPU) et ne jamais
   toucher top/left/box-shadow/text-shadow (repaint + layout à chaque frame,
   flaggé par l'audit Lighthouse "non-composited animations"). La lueur
   elle-même reste un box-shadow/text-shadow STATIQUE, déjà posé sur chaque
   composant hors animation — seule l'intensité (scale + opacity) pulse ici.
   --eb-travel / --eb-x : distance de déplacement, propres à chaque connecteur
   (hauteur/largeur variable), avec une valeur par défaut sur le cas le plus
   courant pour ne pas avoir à la redéfinir partout. */
@keyframes ebconnectorflow{
  0%{ transform:translateX(var(--eb-x,0)) translateY(0); opacity:0; }
  15%{ opacity:1; }
  85%{ opacity:1; }
  100%{ transform:translateX(var(--eb-x,0)) translateY(var(--eb-travel,18px)); opacity:0; }
}
@keyframes ebcheckpulse{
  0%,100%{ transform:scale(1); opacity:.85; }
  50%{ transform:scale(1.2); opacity:1; }
}
@keyframes ebchecktextpulse{
  0%,100%{ transform:scale(1); opacity:.8; }
  50%{ transform:scale(1.22); opacity:1; }
}
@keyframes ebringpulse{
  0%,100%{ transform:scale(1); opacity:.85; }
  50%{ transform:scale(1.1); opacity:1; }
}
@keyframes ebbadgeflash{
  0%,60%,100%{ opacity:0; }
  75%{ opacity:1; }
  90%{ opacity:0; }
}
@keyframes ebconnectorflowh{
  0%{ transform:translateX(0); opacity:0; }
  15%{ opacity:1; }
  85%{ opacity:1; }
  100%{ transform:translateX(var(--eb-travel-x,22px)); opacity:0; }
}
