/* Aliqua — movimento. Regras: 500–700 ms, ease-out; itens de lista entram de baixo
   para cima com 80 ms entre eles; barras "fluem" enquanto uma rotina roda; selo aparece
   com pop + anel; a Lia nunca usa spinner genérico, sempre o Lia Core. */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spinBack{to{transform:rotate(-360deg)}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 rgba(180,138,69,.4)}50%{box-shadow:0 0 0 12px rgba(180,138,69,0)}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideOut{to{opacity:0;transform:translateX(40px)}}
@keyframes grow{from{width:0}to{width:var(--w)}}
@keyframes flow{0%{background-position:0 0}100%{background-position:56px 0}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes dots{0%,80%,100%{transform:scale(.5);opacity:.3}40%{transform:scale(1);opacity:1}}
@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}
@keyframes ring{0%{box-shadow:0 0 0 0 rgba(63,125,78,.5)}100%{box-shadow:0 0 0 14px rgba(63,125,78,0)}}
@keyframes check{to{stroke-dashoffset:0}}
@keyframes draw{from{stroke-dashoffset:600}to{stroke-dashoffset:0}}
@keyframes dash{to{stroke-dashoffset:-40}}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
@keyframes scan{0%{top:0}100%{top:100%}}
@keyframes toast{0%{transform:translateX(30px);opacity:0}12%,88%{transform:translateX(0);opacity:1}100%{transform:translateX(30px);opacity:0}}
@keyframes wave{0%,100%{height:6px}50%{height:22px}}
@keyframes typing{0%,100%{opacity:.2}50%{opacity:1}}

/* utilitários */
.rise{animation:rise var(--dur) var(--ease) both}
.rise-list > *{animation:rise .5s var(--ease) both}
.rise-list > *:nth-child(1){animation-delay:.08s}.rise-list > *:nth-child(2){animation-delay:.16s}
.rise-list > *:nth-child(3){animation-delay:.24s}.rise-list > *:nth-child(4){animation-delay:.32s}
.rise-list > *:nth-child(5){animation-delay:.40s}.rise-list > *:nth-child(6){animation-delay:.48s}
.rise-list > *:nth-child(n+7){animation-delay:.56s}
.saindo{animation:slideOut .4s var(--ease) forwards}   /* item validado sai para a direita */

/* skeleton */
.sk{border-radius:var(--r-sm);background:linear-gradient(90deg,var(--linha) 25%,var(--bg-card) 50%,var(--linha) 75%);background-size:200% 100%;animation:shimmer 1.6s linear infinite}
/* progresso que flui enquanto roda */
.prog{height:8px;border-radius:var(--r-pill);background:var(--linha);overflow:hidden}
.prog > b{display:block;height:100%;width:var(--w,0%);background:repeating-linear-gradient(90deg,var(--latao) 0 14px,var(--ouro) 14px 28px);background-size:56px 100%;animation:grow 1.4s var(--ease) both,flow 1.1s linear infinite}
.prog.pronto > b{background:var(--sucesso);animation:grow 1.4s var(--ease) both}
/* spinner pequeno (só dentro de botões) e dots */
.spin{width:22px;height:22px;border-radius:50%;border:2px solid var(--linha);border-top-color:var(--latao);animation:spin .9s linear infinite}
.dots{display:inline-flex;gap:5px}.dots i{width:7px;height:7px;border-radius:50%;background:var(--latao);animation:dots 1.2s ease-in-out infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
/* toast */
.toast{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--grafite);color:var(--osso);border-radius:var(--r-md);border-left:3px solid var(--ouro);font-size:13px;animation:toast 6s ease-in-out both}
/* selo */
.selo{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px 0 6px;border-radius:var(--r-pill);background:var(--sucesso-claro);color:var(--sucesso-texto);font:500 11px var(--f-mono)}
.selo > i{width:14px;height:14px;border-radius:50%;background:var(--sucesso);animation:pop .5s var(--ease) both,ring 1.6s ease-out .5s 2}
.selo.provando{background:var(--atencao-claro);color:var(--atencao-texto)}
.selo.provando > i{background:transparent;border:2px solid var(--latao);border-top-color:transparent;width:12px;height:12px;animation:spin .9s linear infinite}
.selo.divergencia{background:var(--erro-claro);color:var(--erro-texto)}
.selo.divergencia > i{background:var(--erro);animation:none}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition:none !important}
}
