/* Complementos ao Bootstrap — só o que o framework não cobre. */

/* Campo ainda vazio: aviso discreto, sem o peso visual de um erro.
   Vermelho de validação diria "você errou"; aqui é "falta preencher". */
.is-warning {
  border-color: var(--bs-warning-border-subtle);
  background-color: var(--bs-warning-bg-subtle);
}

/* Campo alterado e não salvo. Na edição em lote a pessoa muda dezenas de
   células antes de salvar — precisa enxergar o que mexeu. */
.alterado, .alterado:focus {
  border-color: var(--bs-primary);
  box-shadow: inset 3px 0 0 var(--bs-primary);
}

/* Barra de salvar fixa: com 42 linhas o botão sairia da tela. */
.barra-salvar {
  position: sticky;
  bottom: 0;
  z-index: 3;
  margin-inline: -0.75rem;
}

/* A tabela de lote é densa de propósito: quanto mais linhas couberem, menos
   rolagem entre preencher um SKU e o seguinte. */
.tabela-lote td { padding-top: .35rem; padding-bottom: .35rem; }
.tabela-lote .form-control-sm,
.tabela-lote .form-select-sm { font-size: .8125rem; }

/* Cabeçalho fixo enquanto se rola a tabela — sem isso, na linha 30 ninguém
   lembra qual coluna é qual premissa.
   O sticky precisa de um contêiner que de fato role na vertical: dentro de
   .table-responsive (que é contêiner de rolagem) um `top` maior que zero vira
   deslocamento morto e abre uma faixa vazia. Daí a altura máxima + top:0. */
.rolagem-lote {
  max-height: calc(100vh - 19rem);
  overflow: auto;
}
.tabela-lote thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  box-shadow: inset 0 -1px 0 var(--bs-border-color);
}

code { font-size: .78em; }

@media (max-width: 768px) {
  .tabela-lote thead th { position: static; }
}
