/*
 * Grid overflow contract.
 *
 * A tabela e a sua barra horizontal pertencem ao workspace-table-wrap. Nunca
 * comprimimos uma grade operacional para caber no viewport: texto e ações
 * permanecem legíveis, e somente a região tabular passa a rolar quando as
 * colunas excedem a largura disponível.
 */
.workspace-table-wrap,
.workspace-table-wrap:has(table[data-server-url]),
.workspace-table-wrap.client-grid-table,
.workspace-table-wrap.responsive-grid-desktop,
[data-workspace-record-set="true"] > .workspace-table-wrap {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto !important;
  overflow-y: visible;
  overscroll-behavior-inline: contain;
  scrollbar-gutter: stable;
  -webkit-overflow-scrolling: touch;
}

/* DataTables mantém filtros e paginação fora do plano rolável; somente o
 * contêiner que envolve a tabela recebe a rolagem horizontal. */
.workspace-table-wrap:has(table[data-server-url]) .dt-container,
.workspace-table-wrap:has(table[data-server-url]) .dt-layout-row,
.workspace-table-wrap:has(table[data-server-url]) .dt-layout-cell,
.workspace-table-wrap:has(table[data-server-url]) .dt-layout-full {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow: visible !important;
}

.workspace-table-wrap:has(table[data-server-url]) .dt-layout-table,
.workspace-table-wrap:has(table[data-server-url]) .dt-scroll,
.workspace-table-wrap:has(table[data-server-url]) .dt-scroll-head,
.workspace-table-wrap:has(table[data-server-url]) .dt-scroll-body,
.workspace-table-wrap:has(table[data-server-url]) .dt-scroll-foot {
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: auto !important;
  overflow-y: visible;
  overscroll-behavior-inline: contain;
  -webkit-overflow-scrolling: touch;
}

/* A busca/quantidade nativas permanecem ocultas: cada grid expõe seus filtros
 * canônicos acima da tabela e sua paginação canônica no rodapé. */
.workspace-table-wrap:has(table[data-server-url]) .dt-length,
.workspace-table-wrap:has(table[data-server-url]) .dt-search {
  display: none !important;
}

/*
 * A largura intrínseca evita que o browser sacrifique conteúdo ou botões para
 * fazer todas as colunas caberem. Em tabelas curtas, min-width preserva a
 * largura normal do card; em tabelas largas, o wrapper acima é o único plano
 * que rola horizontalmente.
 */
.workspace-table-wrap:has(.workspace-table) .workspace-table,
.workspace-table-wrap:has(table[data-server-url]) table.dataTable,
.workspace-table-wrap.client-grid-table .workspace-table,
.workspace-table-wrap.responsive-grid-desktop .workspace-table,
[data-workspace-record-set="true"] > .workspace-table-wrap .workspace-table {
  width: max-content !important;
  max-width: none !important;
  min-width: 100% !important;
  table-layout: auto;
}

/* Dados descritivos podem ganhar altura em vez de serem truncados. Classes
 * explicitamente nowrap continuam respeitadas pelos estilos de célula próprios. */
.workspace-table-wrap:has(table[data-server-url]) th,
.workspace-table-wrap:has(table[data-server-url]) td,
.workspace-table-wrap.client-grid-table th,
.workspace-table-wrap.client-grid-table td,
.workspace-table-wrap.responsive-grid-desktop th,
.workspace-table-wrap.responsive-grid-desktop td,
[data-workspace-record-set="true"] > .workspace-table-wrap th,
[data-workspace-record-set="true"] > .workspace-table-wrap td {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* Ações são conteúdo operacional: cada botão conserva sua largura e a coluna
 * acompanha o conteúdo, sem recorte, sticky column ou sombra sobre a grade. */
.workspace-table-wrap .workspace-table-col-actions,
.workspace-table-wrap .workspace-table-actions,
.workspace-table-wrap .table-actions,
.workspace-table-wrap .responsive-grid-actions,
.workspace-table-wrap .workspace-table td[data-orderable="false"],
.workspace-table-wrap .workspace-table td:has(> .btn-canonical),
.workspace-table-wrap .workspace-table td:has(> .workspace-table-link),
.workspace-table-wrap .workspace-table td:has(> button),
.workspace-table-wrap .workspace-table td:has(> form) {
  width: max-content !important;
  min-width: max-content !important;
  max-width: none !important;
  overflow: visible;
  white-space: nowrap;
}

.workspace-table-wrap .btn-canonical-sm,
.workspace-table-wrap .btn-canonical,
.workspace-table-wrap .workspace-table-link {
  max-width: none;
  white-space: nowrap;
}
