/*
 * Evolury Min Quantity — feedback visual no single product.
 * O JS controla a classe `.is-below` na `.evg-mq` e `.evg-mq-blocked` nos
 * botões. Servidor é a autoridade real (validação no add_to_cart).
 */

.evg-mq {
  margin: .5rem 0 1rem;
  padding: .7rem 1rem;
  background: rgba(245, 158, 11, .08);
  border: 1px solid rgba(245, 158, 11, .25);
  border-radius: 8px;
  font-size: .9rem;
}
.evg-mq__status {
  margin: 0;
  color: #92400e;
  font-weight: 500;
}
.evg-mq.is-below {
  background: rgba(185, 28, 28, .08);
  border-color: rgba(185, 28, 28, .25);
}
.evg-mq.is-below .evg-mq__status { color: #b91c1c; }
.evg-mq.is-met {
  background: rgba(4, 120, 87, .08);
  border-color: rgba(4, 120, 87, .25);
}
.evg-mq.is-met .evg-mq__status { color: #047857; font-weight: 600; }

/* Feedback de shake quando o cliente tenta add abaixo do mínimo (o JS adiciona
   .is-shake com reflow pra re-disparar). Faltava a regra — animação não tocava. */
@keyframes evg-mq-shake {
  0%, 100% { transform: translateX(0); }
  20%, 60% { transform: translateX(-4px); }
  40%, 80% { transform: translateX(4px); }
}
.evg-mq.is-shake { animation: evg-mq-shake 0.4s ease; }
@media (prefers-reduced-motion: reduce) { .evg-mq.is-shake { animation: none; } }

/* Botão bloqueado pelo min — via classe, sem mexer no `disabled` pra não
 * conflitar com a lógica da grade. JS intercepta o click pra cancelar. */
.evg-mq-blocked {
  pointer-events: none;
  opacity: .55;
  cursor: not-allowed;
  filter: grayscale(.15);
}
