/* ============================================================
   TOOLS · ANIMATIONS
   Reusable @keyframes. Components opt in via `animation-name`.
   Respect prefers-reduced-motion at the consumer side.
   ============================================================ */

@keyframes pulse-glow {
  0%, 100% { filter: brightness(1); }
  50%      { filter: brightness(1.4); }
}

@keyframes pulse-fade {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.4; }
}

@keyframes blink {
  0%, 49%   { opacity: 1; }
  50%, 100% { opacity: 0; }
}

@keyframes scanline-sweep {
  0%   { transform: translateY(-100%); }
  100% { transform: translateY(100%); }
}

@keyframes radar-sweep {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

@keyframes flicker {
  0%, 100%        { opacity: 1; }
  41%, 43%, 47%   { opacity: 0.85; }
  42%             { opacity: 0.6; }
}

@keyframes boot-type {
  from { width: 0; }
  to   { width: 100%; }
}

@keyframes warn {
  0%, 100% { background-color: var(--color-caution); }
  50%      { background-color: transparent; }
}
