body { min-height: 100vh; }
.table td, .table th { white-space: nowrap; }

.loading-overlay {
  position: fixed; inset: 0; 
  background: rgba(0,0,0,.35);
  display: none; 
  align-items: center; justify-content: center;
  z-index: 2000;
}
.loading-overlay.show { display: flex; }
.loading-box {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  border-radius: .75rem;
  padding: 1rem 1.25rem;
  display: inline-flex; align-items: center;
  box-shadow: 0 0.5rem 1rem rgba(0,0,0,.15);
}
/* Talkgroups em 2 colunas */
.card-talkgroups .tg-list{
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr)); /* 2 colunas */
  gap: .5rem 1rem; /* espaço entre linhas/colunas */
  list-style: none;
  padding: 0;
  margin: 0;
}
.card-talkgroups .tg-item{
  display: flex;
  align-items: center;
  gap: .5rem;
  break-inside: avoid;   /* evita partir no meio ao mudar de coluna/linha */
}
@media (max-width: 576px){
  .card-talkgroups .tg-list{ grid-template-columns: 1fr; } /* 1 coluna no mobile */
}

/* opcional: se não quiseres que este card estique os outros, limita a altura */
.card-talkgroups .card-body{
  /* max-height: 220px;  overflow-y: auto;  <- descomenta se quiseres scroll interno */
}
/* Suaviza o refresh das tabelas */


/* suavizar updates sem piscar */
.table-smooth td { transition: background-color .25s ease, color .2s ease; }
.table-smooth td.changed { background-color: rgba(13,110,253,.18); }  /* realce curto */
@keyframes fadeInRow { from{opacity:0} to{opacity:1} }
@keyframes fadeOutRow{ from{opacity:1} to{opacity:0} }
tr.fade-in  { animation: fadeInRow .16s ease; }
tr.fade-out { animation: fadeOutRow .16s ease forwards; }