/* Mesmas durações da operação. Brilho e anel são pintados uma vez; só a opacidade anima. */
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card):is(.new,.novo) { animation:exp-entrada .28s cubic-bezier(.2,.9,.3,1.2); }
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).shake,
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) .card.treme { animation:exp-par .5s ease-in-out 6; }
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).chegou { position:relative; outline:none; animation:exp-par .5s ease-in-out 3; }
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).chegou:not(.foco-cer):is(.shake,.treme) { animation-iteration-count:6; }
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).chegou::after {
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  box-shadow:0 0 0 3px var(--verde,var(--green)),0 0 32px 6px rgba(17,153,74,.35); opacity:0; animation:exp-chegada 4s ease-out;
}
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).foco-cer { position:relative; animation:exp-salto .3s cubic-bezier(.2,.9,.25,1); }
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).foco-cer::after {
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  box-shadow:0 0 0 2px var(--surface,#fff),0 0 36px 12px rgba(245,122,28,.35);
  opacity:0; animation:exp-brilho 2.6s ease-in-out;
}
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.kds-late-tag,.tagl.atr,.latetag) { animation:exp-pulsa 1.6s ease-in-out infinite; }
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) .t-late:not(.prog) { position:relative; animation:none; }
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) .t-late:not(.prog)::after {
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  box-shadow:0 0 0 4px rgba(226,29,60,.25); animation:exp-anel 1.2s ease-in-out infinite;
}
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.kds-late-tag,.latetag)::after { animation:none; opacity:0; }
/* O motor informa o restante pelo estilo; a barra nasce cheia e não altera o layout. */
body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.exp-saida-barra,[data-dispatch-barra]) { width:100%; transform-origin:left; animation:exp-saida var(--exp-saida-restante,15s) linear forwards; }
@keyframes exp-entrada { from { opacity:0; transform:translateY(-10px) scale(.96); } to { opacity:1; transform:none; } }
@keyframes exp-par { 0%,100% { transform:translateX(0); } 25% { transform:translateX(-7px); } 75% { transform:translateX(7px); } }
@keyframes exp-chegada { 0%,60% { opacity:1; } 100% { opacity:0; } }
@keyframes exp-salto { from { opacity:0; transform:translateY(-16px) scale(.94); } to { opacity:1; transform:none; } }
@keyframes exp-brilho { 0%,100% { opacity:0; } 50% { opacity:1; } }
@keyframes exp-pulsa { 0%,100% { opacity:1; } 50% { opacity:.6; } }
@keyframes exp-anel { 0%,100% { opacity:0; } 50% { opacity:1; } }
@keyframes exp-saida { from { transform:scaleX(1); } to { transform:scaleX(0); } }
@media (prefers-reduced-motion:reduce) {
  body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) *,
  body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) *::before,
  body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) *::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
  body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).chegou::after { opacity:1; }
  body[data-hub-exp-v2] :is(#view-exp,#view-kds,[data-hub-sons]) :is(.k,.e,.card).foco-cer::after { opacity:1; }
}
