/* tokens-motion.css
 * Camada de motion do extract-agent-motion.
 * Nao redefine cor/tipo do kit. --ease / --duration iguais ao agent-highend.
 * Keyframes novos do Beautiful UI entram no --ease do kit.
 * Nao sobrescreve extract-sys, extract-highend, extract-highend-ui, agent-highend.
 */

:root {
  --ease: cubic-bezier(0.32, 0.72, 0, 1);
  --duration: 600ms;
  --duration-slow: 700ms;
  --duration-fade: 200ms;
  --duration-artifact: 350ms;
  --duration-dots: 1050ms;
  --duration-pix: 1400ms;
  --duration-blink: 1000ms;
  --duration-spin-orbit: 900ms;
  --duration-spin-task: 1100ms;
  --duration-stagger: 80ms;
  --duration-stagger-2: 160ms;
  --duration-stagger-3: 240ms;
}

/* --- ja no agent-highend ------------------------------------------------- */

@keyframes dots {
  0%, 100% { opacity: 0.22; transform: translateY(0); }
  40% { opacity: 1; transform: translateY(-5px); }
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes pix {
  0%, 100% { opacity: 0.12; }
  35% { opacity: 1; }
}

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

@keyframes chip-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}

@keyframes rise {
  from { opacity: 0; transform: translateY(4rem); }
  to { opacity: 1; transform: translateY(0); }
}

/* --- BUI remapeado pro --ease -------------------------------------------- */

@keyframes shimmer-text {
  0% { background-position: 150%; }
  to { background-position: -50%; }
}

@keyframes fade-up {
  0% { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes records-pulse {
  0%, to { opacity: 0.35; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1); }
}

@keyframes fade-in {
  0% { opacity: 0; }
  to { opacity: 1; }
}

@keyframes eq-bounce {
  0%, to { transform: scaleY(0.35); }
  50% { transform: scaleY(1); }
}

@keyframes caret-blink {
  0%, to { opacity: 1; }
  50% { opacity: 0; }
}

@keyframes pop-in {
  0% { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes pixel-on {
  0%, to { opacity: 0.15; }
  18%, 42% { opacity: 1; }
  62% { opacity: 0.15; }
}

/* --- utilities ----------------------------------------------------------- */

.anim-dots { animation: dots var(--duration-dots) var(--ease) infinite; }
.anim-spin-orbit { animation: spin var(--duration-spin-orbit) linear infinite; }
.anim-spin-task { animation: spin var(--duration-spin-task) linear infinite; }
.anim-pix { animation: pix var(--duration-pix) var(--ease) infinite; }
.anim-blink { animation: blink var(--duration-blink) var(--ease) infinite; }
.anim-caret { animation: caret-blink var(--duration-blink) step-end infinite; }
.anim-chip-in { animation: chip-in var(--duration) var(--ease) forwards; }
.anim-rise { animation: rise var(--duration-slow) var(--ease) both; }
.anim-shimmer-text { animation: shimmer-text var(--duration-slow) var(--ease) infinite; }
.anim-fade-up { animation: fade-up var(--duration) var(--ease) both; }
.anim-fade-in { animation: fade-in var(--duration-fade) var(--ease) both; }
.anim-pop-in { animation: pop-in var(--duration) var(--ease) both; }
.anim-records-pulse { animation: records-pulse var(--duration-spin-task) var(--ease) infinite; }
.anim-eq-bounce { animation: eq-bounce var(--duration-spin-task) var(--ease) infinite; }
.anim-pixel-on { animation: pixel-on var(--duration-pix) var(--ease) infinite; }

.anim-stagger-1 { animation-delay: var(--duration-stagger); }
.anim-stagger-2 { animation-delay: var(--duration-stagger-2); }
.anim-stagger-3 { animation-delay: var(--duration-stagger-3); }

@media (prefers-reduced-motion: reduce) {
  .anim-dots,
  .anim-spin-orbit,
  .anim-spin-task,
  .anim-pix,
  .anim-blink,
  .anim-caret,
  .anim-chip-in,
  .anim-rise,
  .anim-shimmer-text,
  .anim-fade-up,
  .anim-fade-in,
  .anim-pop-in,
  .anim-records-pulse,
  .anim-eq-bounce,
  .anim-pixel-on {
    animation: none;
  }
  .anim-chip-in,
  .anim-rise,
  .anim-fade-up,
  .anim-fade-in,
  .anim-pop-in {
    opacity: 1;
    transform: none;
  }
}
