/*!
 * LR Design System · Canon v1 · animations.css
 * 13 keyframes core + 5 ambient (opt-in via .with-ambient no body)
 * Nota: extraído 1 keyframe extra do Brand LP (lr-scan) não listado no plano original — incluído em CORE como ferramenta complementar.
 * Respeita prefers-reduced-motion (tokens.css garante encurtamento global)
 * Spec: docs/superpowers/specs/2026-05-28-design-system-lr-canonico.md
 * Última atualização: 2026-05-28
 */

/* ===== KEYFRAMES CORE (13) ===== */
@keyframes lr-fade-rise {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes lr-fade-in {
  from { opacity: 0; } to { opacity: 1; }
}
@keyframes lr-pulse-dot {
  0%, 100% { box-shadow: 0 0 0 0 currentColor; opacity: 1; }
  50%      { box-shadow: 0 0 0 6px transparent; opacity: 0.7; }
}
@keyframes lr-ripple {
  to { transform: scale(4); opacity: 0; }
}
@keyframes lr-shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
@keyframes lr-bar-fill {
  from { width: 0; }
}
@keyframes lr-toast-in {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes lr-toast-out {
  to { opacity: 0; transform: translateX(20px); }
}
@keyframes lr-spin {
  to { transform: rotate(360deg); }
}
@keyframes lr-blink {
  0%, 49%   { opacity: 1; }
  50%, 100% { opacity: 0; }
}
@keyframes lr-scan {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
@keyframes lr-draw-line {
  to { stroke-dashoffset: 0; }
}
@keyframes lr-modal-in {
  from { opacity: 0; transform: scale(0.96) translateY(8px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes lr-pulse-ring {
  0% { box-shadow: 0 0 0 0 var(--accent-glow); }
  100% { box-shadow: 0 0 0 8px transparent; }
}

/* ===== AMBIENT (5 · opt-in via body.with-ambient) ===== */
@keyframes lr-aurora {
  0%, 100% { transform: translate(0, 0) scale(1); }
  25%      { transform: translate(8%, -5%) scale(1.1); }
  50%      { transform: translate(-3%, 6%) scale(0.95); }
  75%      { transform: translate(-7%, -3%) scale(1.05); }
}
@keyframes lr-sidebar-scan {
  0%   { top: -36px; opacity: 0; }
  8%   { opacity: 0.7; }
  92%  { opacity: 0.7; }
  100% { top: 100%; opacity: 0; }
}
@keyframes lr-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@keyframes lr-tick-flash {
  0%   { color: var(--accent); text-shadow: 0 0 12px var(--accent-glow); }
  100% { color: var(--ink); text-shadow: none; }
}

/* ===== GUARD: ambient só ativa quando body tem .with-ambient ===== */
body:not(.with-ambient) .lr-aurora-target,
body:not(.with-ambient) .lr-marquee-target,
body:not(.with-ambient) .lr-sidebar-scan-target {
  animation: none !important;
}
