/*
 * O data-grid das tabelas do painel — a parte visual dos comportamentos do
 * apostolos-grid.js: a linha de busca por coluna movida para CIMA dos títulos, as
 * alças de redimensionar coluna na borda direita de cada th e, no fim do arquivo, a
 * toolbar do acervo de Questões (escopo `.apostolos-acervo`).
 *
 * A linha `.apostolos-linha-de-busca` nasce como primeira <tr> do tbody e o JS a
 * move para dentro do thead; aqui ela ganha o mesmo fundo do cabeçalho nativo
 * (gray-50 / white-5%), uma borda inferior sutil separando-a dos títulos e inputs
 * compactos.
 *
 * **Nenhuma LISTAGEM tem mais essa linha.** Em 01/08/2026 a busca por coluna foi
 * aposentada nas seis, e recortar passou a ser só o painel de filtros fixo
 * (`App\Filament\Tables\PadraoDeTabela`). Onde a linha ainda aparece é nas tabelas
 * embutidas — os itens de um simulado, o histórico de uso de uma questão, os blocos de
 * uma prova —, que não têm painel: lá a busca no cabeçalho é o único jeito de estreitar,
 * e estas regras seguem valendo. Nas tabelas sem coluna buscável a linha nem existe, e
 * nenhum seletor daqui tem efeito.
 */

.fi-ta-table thead tr.apostolos-linha-de-busca > td {
    background-color: var(--gray-50);
    border-bottom: 1px solid var(--gray-200);
    padding-inline: calc(var(--spacing) * 2);
    padding-block: calc(var(--spacing) * 1.5);
}

.dark .fi-ta-table thead tr.apostolos-linha-de-busca > td {
    background-color: rgb(255 255 255 / 0.05);
    border-bottom-color: rgb(255 255 255 / 0.1);
}

/* Movida para o topo, a linha de busca passa a ocupar os cantos superiores do
   cabeçalho — os raios que o tema dava aos primeiros th valem para ela agora. */
.fi-ta-table thead tr.apostolos-linha-de-busca > td:first-child {
    border-start-start-radius: var(--radius-xl);
}

.fi-ta-table thead tr.apostolos-linha-de-busca > td:last-child {
    border-start-end-radius: var(--radius-xl);
}

/* Inputs compactos, que encolhem junto com a coluna: o min-width nativo de 12rem da
   célula de busca é sobrescrito por largura inline quando a coluna é redimensionada,
   e o campo dentro dela precisa aceitar qualquer largura sem estourar. */
.fi-ta-table .apostolos-linha-de-busca .fi-ta-search-field {
    width: 100%;
    min-width: 0;
}

.fi-ta-table .apostolos-linha-de-busca .fi-input-wrp {
    width: 100%;
    min-width: 0;
}

.fi-ta-table .apostolos-linha-de-busca .fi-input {
    padding-block: calc(var(--spacing) * 1);
    font-size: var(--text-sm);
}

/* ------------------------------------------------------------------ */
/* A densidade das linhas do acervo                                    */
/* ------------------------------------------------------------------ */

/*
 * O Filament nasce numa densidade de formulário: 16px de respiro acima e abaixo em
 * cada célula, o que dá linhas de ~56px. Numa tela de leitura isso é acerto; num
 * acervo que se percorre às dezenas, é 25% menos questão por tela.
 *
 * Aqui o respiro cai para 10px — linha de ~44px, a densidade usual de data-grid, e
 * ainda folgada em relação aos 32px de um Excel. Não existe API de densidade no
 * Filament Tables, então é CSS; e são TRÊS lugares porque o Filament reparte o
 * respiro em três donos: o texto da célula, a célula do checkbox e o próprio
 * checkbox. Mexer só no primeiro não encolheria a linha — a mais alta manda.
 */
.fi-ta.apostolos-acervo .fi-ta-text {
    padding-block: calc(var(--spacing) * 2.5);
}

.fi-ta.apostolos-acervo .fi-ta-selection-cell {
    padding-block: calc(var(--spacing) * 2.5);
}

.fi-ta.apostolos-acervo .fi-ta-record-checkbox {
    margin-block: calc(var(--spacing) * 2.5);
}

/* O cabeçalho acompanha, senão ele fica mais alto que as linhas que rotula. */
.fi-ta.apostolos-acervo .fi-ta-header-cell {
    padding-block: calc(var(--spacing) * 2.5);
}

/* ------------------------------------------------------------------ */
/* As alças de redimensionar coluna                                    */
/* ------------------------------------------------------------------ */

/* O th precisa ser o bloco de referência da alça absoluta. */
.fi-ta-table thead th.fi-ta-header-cell {
    position: relative;
}

.apostolos-redimensionador {
    position: absolute;
    top: 0;
    bottom: 0;
    inset-inline-end: 0;
    width: 6px;
    cursor: col-resize;
    touch-action: none;
    user-select: none;
    z-index: 2;
}

/* O traço só aparece no hover — a alça em si é área invisível de 6px, para não
   poluir o cabeçalho nem disputar atenção com o chevron de ordenação. */
.apostolos-redimensionador::after {
    content: '';
    position: absolute;
    top: 18%;
    bottom: 18%;
    inset-inline-end: 1px;
    width: 3px;
    border-radius: 9999px;
    background-color: transparent;
    transition: background-color 100ms ease;
}

.apostolos-redimensionador:hover::after {
    background-color: var(--gray-400);
}

.dark .apostolos-redimensionador:hover::after {
    background-color: var(--gray-500);
}

/* Durante o arrasto (atributo posto pelo JS no <html>) o cursor de redimensionar
   vale na página inteira — sem isso ele piscaria ao sair dos 6px da alça — e a
   seleção de texto fica suspensa para o arrasto não pintar a tabela de azul. */
html[data-apostolos-redimensionando],
html[data-apostolos-redimensionando] * {
    cursor: col-resize !important;
}

html[data-apostolos-redimensionando] {
    user-select: none;
    -webkit-user-select: none;
}

/* Com a tabela congelada em layout fixo, título mais largo que a coluna encolhida
   fica contido no próprio th em vez de invadir o vizinho. A alça segue visível
   porque está DENTRO do th (inset-inline-end: 0). */
.fi-ta-table[data-apostolos-congelada] thead th.fi-ta-header-cell {
    overflow: hidden;
}

/* No empilhamento móvel do Filament a tabela não é mais uma grade — largura de
   coluna não significa nada lá, então a alça some. */
@media (max-width: 767.98px) {
    .apostolos-redimensionador {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .apostolos-redimensionador::after {
        transition: none;
    }
}

/* ------------------------------------------------------------------ */
/* A toolbar do acervo (escopo `.fi-ta.apostolos-acervo` — só Questões) */
/* ------------------------------------------------------------------ */

/*
 * O desenho do dono — arranjo B, escolhido em 30/07/2026 sobre quatro alternativas
 * desenhadas —, numa única linha e SEM deslocamento vertical nunca:
 *
 *   [Exibindo 1 a 10 de 30] [Ações selecionadas (N)] … [Filtros] [Colunas] │ [10] [1 2 3]
 *
 * A regra do arranjo: à ESQUERDA o que responde "onde estou e o que selecionei"; à
 * DIREITA, agrupado, tudo que MUDA a visão — filtros, colunas e paginação —, com um
 * filete separando os controles da tabela dos de navegação. É a convenção dos data-
 * grids (Airtable, Linear, GitHub) e resolve o que a versão anterior tinha contra si:
 * dois ícones sem rótulo ocupando a borda esquerda, que é por onde a leitura começa.
 *
 * O selecionar-tudo não está aqui: é o checkbox NATIVO do cabeçalho da tabela, em cima
 * da coluna das checkboxes de linha.
 *
 * A toolbar não tem mais faixa própria: o `apostolos-grid.js` a move para dentro da
 * `.apostolos-controles-do-topo`, a caixa que ocupa a primeira célula da barra de
 * paginação, ao lado do resumo.
 *
 * Dentro da caixa a toolbar vira `display: contents`: ela deixa de ser uma caixa e os
 * seus botões passam a ser itens do MESMO flex do resumo, o que permite ordenar os
 * quatro independentemente. É isso que põe o botão de lote logo depois do texto — ele
 * fica invisível até haver seleção (o espaço é reservado, para nada se deslocar), e o
 * vão morto some no meio vazio da linha em vez de abrir um buraco entre controles.
 * `display: contents` é seguro AQUI, ao contrário da barra de paginação: nenhuma
 * container query do Filament depende da caixa da toolbar.
 */

/* As DUAS paginações — a do topo e a do rodapé — deixam de ser o grid de três colunas
   do Filament (resumo | por página | páginas, cada um na sua fatia, com o "por página"
   centralizado) e viram flex: o resumo abre a linha, ocupa a folga e empurra o resto
   para o fim. Vale nas duas porque elas têm de ser a mesma barra vista duas vezes —
   alinhamento, filete e respiro iguais (decisão do dono, 30/07/2026).

   `flex` — e não `contents` — porque a <nav> precisa continuar gerando caixa: é ela
   que carrega o `container-type` de que dependem as container queries que escondem os
   botões anterior/próximo e mostram os números de página. */
.fi-ta.apostolos-acervo .fi-pagination {
    display: flex;
    align-items: center;
    gap: calc(var(--spacing) * 3);
}

/* Quem ocupa a folga: no topo é a caixa (resumo + controles), no rodapé é o resumo
   sozinho, que lá é filho direto da barra. */
.fi-ta.apostolos-acervo .apostolos-controles-do-topo,
.fi-ta.apostolos-acervo .fi-pagination > .fi-pagination-overview {
    flex: 1;
}

.fi-ta.apostolos-acervo .apostolos-controles-do-topo {
    display: flex;
    align-items: center;
    gap: calc(var(--spacing) * 2);
    min-width: 0;
}

/*
 * O seletor de "por página" sem o rótulo "por página" (decisão do dono, 30/07/2026).
 *
 * O Filament renderiza DUAS versões do mesmo campo e escolhe por container query: a
 * normal, com o texto "por página" como prefixo dentro da moldura, e a `.fi-compact`,
 * só o select, com o rótulo em `sr-only`. A compacta existe para caixas estreitas — e
 * é exatamente o que se quer aqui, porque o número ao lado dos controles de página se
 * explica sozinho. Trocar as duas é melhor do que esconder o prefixo no braço:
 * o rótulo continua existindo para quem usa leitor de tela.
 *
 * Vale nas duas paginações da tabela, a do topo e a do rodapé — elas têm de continuar
 * iguais uma à outra.
 */
.fi-ta.apostolos-acervo .fi-pagination-records-per-page-select:not(.fi-compact) {
    display: none;
}

.fi-ta.apostolos-acervo .fi-pagination-records-per-page-select.fi-compact {
    display: inline;
}

/* O filete que separa os controles da TABELA dos de NAVEGAÇÃO — sem ele os cinco
   controles da direita leem-se como um bloco só. Nas duas barras, pelo mesmo motivo
   que o alinhamento: elas são a mesma barra vista duas vezes. */
.fi-ta.apostolos-acervo .fi-pagination .fi-pagination-records-per-page-select-ctn {
    border-inline-start: 1px solid var(--gray-200);
    padding-inline-start: calc(var(--spacing) * 3);
}

.dark
    .fi-ta.apostolos-acervo
    .fi-pagination
    .fi-pagination-records-per-page-select-ctn {
    border-inline-start-color: rgb(255 255 255 / 0.1);
}

.fi-ta.apostolos-acervo .fi-ta-header-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    justify-content: flex-start;
    gap: calc(var(--spacing) * 3);
}

.fi-ta.apostolos-acervo .apostolos-controles-do-topo .fi-ta-header-toolbar {
    display: contents;
}

/* A ordem visual da linha, com os quatro itens já achatados no mesmo flex: resumo e
   lote na esquerda; filtros e colunas empurrados para o fim pelo margin auto. */
.fi-ta.apostolos-acervo .apostolos-controles-do-topo .fi-pagination-overview {
    order: 1;
}

.fi-ta.apostolos-acervo .apostolos-controles-do-topo .fi-ta-actions {
    order: 2;
    flex-wrap: nowrap;
    margin-inline-start: 0;
}

/* O que sobra na toolbar — hoje o gerenciador de colunas — vai para a ponta direita.
   O `margin-inline-start: auto` morava no bloco do alternador de busca, que era o
   último item da linha até 01/08/2026; com ele fora, quem empurra é este. */
.fi-ta.apostolos-acervo
    .apostolos-controles-do-topo
    .fi-ta-header-toolbar
    > div:not(.fi-ta-actions) {
    order: 3;
    margin-inline-start: auto;
}

/* O banner nativo "N registros selecionados" criava uma linha extra entre a toolbar e
   a tabela — exatamente o deslocamento vertical que o dono vetou. A contagem vive no
   botão "Ações selecionadas (N)". */
.fi-ta.apostolos-acervo .fi-ta-selection-indicator {
    display: none;
}

/* O espaço RESERVADO do "Ações selecionadas": invisível sem seleção (visibility, não
   display — o lugar continua ocupado), visível quando o Alpine põe a classe de
   seleção (ver AcoesSelecionadas.php). Selecionar/desselecionar não move um pixel. */
.fi-ta.apostolos-acervo .apostolos-acoes-selecionadas {
    visibility: hidden;
}

.fi-ta.apostolos-acervo .apostolos-acoes-selecionadas.apostolos-com-selecao {
    visibility: visible;
}

.apostolos-contagem-selecao {
    font-variant-numeric: tabular-nums;
}

/* A paginação do TOPO é o mesmo componente do rodapé, renderizado como primeira linha
   do cartão (hook HEADER_AFTER — ver ListQuestoes::boot()). Por estar dentro de
   `.fi-ta-ctn`, ela já herda do Filament o respiro, a cor da borda e o modo escuro do
   rodapé; o que muda é o LADO da borda: em cima do cartão quem separa da toolbar é a
   linha de baixo, e a de cima duplicaria o anel do próprio cartão. */
.fi-ta.apostolos-acervo .apostolos-paginacao-no-topo {
    border-top-width: 0;
    border-bottom-style: var(--tw-border-style, solid);
    border-bottom-width: 1px;
}

/* ─────────── A lista suspensa com checkbox do painel de filtros ───────────
 *
 * O controle do FiltroEmLista (ver ListaSuspensaComCheckbox.php). O gatilho reusa o
 * `.fi-input-wrp` do Filament — mesma borda, mesmo anel de foco, mesmo modo escuro que
 * os outros campos do painel — e o que este arquivo acrescenta é só o que o Filament
 * não tem pronto: a altura FIXA, que é o motivo de o controle existir, e a linha de
 * item com checkbox à esquerda e nome quebrando em várias linhas à direita. */
.apostolos-lista-gatilho {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: calc(var(--spacing) * 2);
    width: 100%;
    height: 2.25rem;
    padding-inline: calc(var(--spacing) * 3);
    text-align: start;
    font-size: 0.875rem;
    line-height: 1.25rem;
    color: var(--gray-400);
}

.dark .apostolos-lista-gatilho {
    color: var(--gray-500);
}

/* Com recorte ativo o texto ganha a tinta cheia: "Alguns (2)" é informação, "Todos" é
   o estado de repouso e se lê como placeholder. */
.apostolos-lista-gatilho-ativo {
    color: var(--gray-950);
}

.dark .apostolos-lista-gatilho-ativo {
    color: white;
}

.apostolos-lista-resumo {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-variant-numeric: tabular-nums;
}

.apostolos-lista-seta {
    flex: none;
    width: 1.25rem;
    height: 1.25rem;
    color: var(--gray-400);
}

.apostolos-lista-item {
    display: flex;
    align-items: flex-start;
    gap: calc(var(--spacing) * 2.5);
    padding-inline: calc(var(--spacing) * 3);
    padding-block: calc(var(--spacing) * 2);
    border-radius: var(--radius-md);
    cursor: pointer;
    font-size: 0.875rem;
    line-height: 1.25rem;
    color: var(--gray-950);
}

.dark .apostolos-lista-item {
    color: var(--gray-200);
}

.apostolos-lista-item:hover {
    background-color: var(--gray-50);
}

.dark .apostolos-lista-item:hover {
    background-color: rgb(255 255 255 / 0.05);
}

/* O nome do grupo de afinidade tem sete palavras e QUEBRA — era ele que, virado
   etiqueta dentro do campo, empurrava a grade inteira. Aqui a quebra é de graça: a
   altura que ela ocupa é a do dropdown aberto, não a do campo fechado. */
.apostolos-lista-rotulo {
    flex: 1;
    min-width: 0;
    overflow-wrap: anywhere;
}

.apostolos-lista-item .fi-checkbox-input {
    flex: none;
    margin-top: 0.125rem;
}

.apostolos-lista-vazio {
    padding-inline: calc(var(--spacing) * 3);
    padding-block: calc(var(--spacing) * 2);
    font-size: 0.875rem;
    color: var(--gray-500);
}

/* A faixa "Filtros | Limpar filtros" do painel sai do acervo (decisão do dono,
   01/08/2026): uma linha da largura da tela para anunciar o painel que vem logo abaixo,
   e um link solto na outra ponta. O título é redundante e o link virou ícone na toolbar,
   ao lado do de colunas (ver limpar-filtros.blade.php).

   Tem de ser CSS: o Filament monta `.fi-ta-filters-header` sem condição nenhuma no
   `components/filters.blade.php`, e o `resetActionPosition` só decide se o link fica no
   topo ou no rodapé — não há como não ter a faixa. O escopo é o `.apostolos-acervo`, e
   as outras tabelas do painel seguem com ela. */
.fi-ta.apostolos-acervo .fi-ta-filters-header {
    display: none;
}


/* ------------------------------------------------------------------ */
/* O limpador de cada campo do painel de filtros                       */
/* ------------------------------------------------------------------ */

/*
 * Um × dentro da caixa do campo, na borda direita, que zera SÓ aquele campo.
 *
 * As três regras que vieram das boas práticas, e o que cada uma evita:
 *
 * 1. **Só aparece quando há o que limpar.** Nove campos com × permanente são nove
 *    promessas de estado que não existe, e o olho aprende a ignorar o ícone — que é
 *    justamente quando ele precisaria ser visto.
 * 2. **Alvo de 24px**, o mínimo do WCAG 2.2 (Target Size, AA). O ícone desenhado tem
 *    14px; o resto é área de clique invisível, porque um alvo do tamanho do desenho
 *    erra no toque e no trackpad.
 * 3. **Nome acessível que diz O QUE limpa** — "Limpar Banca", não "Limpar". Com nove
 *    limpadores na tela, um leitor de tela anunciaria nove botões idênticos.
 *
 * O limpador não substitui o "Limpar filtros" do topo: zerar um campo e zerar o recorte
 * inteiro são intenções diferentes, e cada uma tem o seu gesto.
 */
.apostolos-lista-campo {
    position: relative;
}

.apostolos-campo-limpar {
    position: absolute;
    inset-block: 0;
    /* Encostado no chevron do campo, não na borda: o chevron continua sendo quem diz
       "isto abre uma lista". */
    inset-inline-end: calc(var(--spacing) * 7);
    display: flex;
    width: 1.5rem;
    align-items: center;
    justify-content: center;
    border: none;
    background: none;
    padding: 0;
    color: var(--gray-400);
    cursor: pointer;
    transition: color 75ms ease;
}

.apostolos-campo-limpar:hover {
    color: var(--gray-950);
}

.dark .apostolos-campo-limpar:hover {
    color: white;
}

.apostolos-campo-limpar:focus-visible {
    outline: 2px solid var(--primary-600);
    outline-offset: 1px;
    border-radius: var(--radius-md);
}

.apostolos-campo-limpar-icone {
    width: 0.875rem;
    height: 0.875rem;
}

/* Com o × na frente, o resumo do campo precisa parar antes dele — senão "Alguns (2)"
   passa por baixo do ícone em campo estreito. */
.apostolos-lista-campo:has(.apostolos-campo-limpar) .apostolos-lista-gatilho {
    padding-inline-end: calc(var(--spacing) * 11);
}

@media (prefers-reduced-motion: reduce) {
    .apostolos-campo-limpar {
        transition: none;
    }
}

/*
 * O limpador do campo de texto usa a API nativa (`suffixAction`), e o sufixo do Filament
 * vem com um filete separando-o do input — a convenção dele para conteúdo de sufixo, que
 * costuma ser rótulo ou botão de peso. Aqui isso quebraria a leitura da FILEIRA: os nove
 * campos do painel se leem juntos, e um × dentro de uma caixinha própria ao lado de oito
 * × soltos parece outro controle. O filete sai, e os nove limpadores viram um só gesto.
 */
.fi-fo-field-wrp .fi-input-wrp-suffix:has(> .fi-input-wrp-actions) {
    border-inline-start: 0;
    padding-inline-start: 0;
}


/* ------------------------------------------------------------------ */
/* A tabela de disciplinas da montagem (repeater em modo tabela)       */
/* ------------------------------------------------------------------ */

/*
 * Duas correções pedidas na tela de montar simulado, e as duas precisam de CSS porque o
 * repeater desenha o `<td>` e o `<th>` de ações por conta própria.
 *
 * 1. **A coluna "Ações" ganha título.** O Filament já emite o rótulo traduzido no
 *    cabeçalho da coluna da lixeira, mas dentro de um `.fi-sr-only` — só leitor de tela o
 *    alcança. Uma coluna com conteúdo e sem título obriga quem lê a deduzir para que ela
 *    serve, e aqui o conteúdo é uma ação destrutiva: vale dizer o nome. Mostrar o que já
 *    existe é melhor do que escrever um segundo rótulo, que poderia divergir do que o
 *    leitor de tela anuncia. Desde 02/08/2026 a coluna também guarda o lápis de editar a
 *    linha, o que só reforça o título: são duas ações, não uma lixeira solta.
 *
 * 2. **As células curtas centralizam**, junto com o título da coluna (`alignCenter()` no
 *    `TableColumn` alcança só o `th`; o `td` do repeater não recebe alinhamento
 *    horizontal nenhum).
 */
.apostolos-disciplinas th.fi-fo-table-repeater-empty-header-cell:last-child .fi-sr-only {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    overflow: visible;
    white-space: nowrap;
    clip: auto;
    clip-path: none;
}

/* Com o título à mostra, a célula precisa do mesmo respiro e do mesmo peso dos outros
   cabeçalhos da tabela. */
.apostolos-disciplinas th.fi-fo-table-repeater-empty-header-cell:last-child {
    padding-inline: calc(var(--spacing) * 3);
    text-align: center;
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--gray-950);
}

.dark .apostolos-disciplinas th.fi-fo-table-repeater-empty-header-cell:last-child {
    color: white;
}

/* As três células curtas — itens, reaproveitar e tópicos — centralizam sob o título da
   coluna. `alignCenter()` no `TableColumn` alinha só o CABEÇALHO: o conteúdo da célula
   do repeater continua encostado à esquerda, e é o invólucro que precisa alinhar.

   Uma classe só para as três, e `text-align` em vez do `display: flex` que estava aqui:
   desde 02/08/2026 as células são texto (a linha virou leitura, e a edição foi para o
   modal), e centralizar texto não pede contêiner flex. */
.apostolos-disciplinas .apostolos-celula-centro {
    text-align: center;
}

/* ------------------------------------------------------------------ */
/* As duas seções do topo de "Montar simulado", coladas                */
/* ------------------------------------------------------------------ */

/*
 * "Dados gerais" e "Disciplinas e Questões" formam UM cartão (decisão do dono,
 * 01/08/2026): são o mesmo passo do fluxo — escolher o molde e dizer o que entra —, e o
 * vão de 24px entre elas as lia como duas etapas.
 *
 * O vão vem do `gap` do contêiner de schema (`.fi-sc-has-gap`), que é do PAI: filho não
 * desliga gap do pai. Daí o `Group` no PHP, que dá um contêiner próprio para as duas — o
 * gap zerado aqui não alcança o resto da página, e nada depende de adivinhar a medida do
 * vão para cancelá-la com margem negativa.
 */
.apostolos-secoes-coladas > .fi-sc {
    gap: 0;
}

/* Coladas, os cantos que se tocam ficam retos: raio no meio de um cartão inteiro
   desenharia uma cintura. */
.apostolos-secoes-coladas > .fi-sc > .fi-grid-col:first-child .fi-section {
    border-end-start-radius: 0;
    border-end-end-radius: 0;
}

/* E o -1px sobrepõe os dois anéis de 1px num só: encostados, eles somariam uma linha de
   2px atravessando o cartão. */
.apostolos-secoes-coladas > .fi-sc > .fi-grid-col:last-child .fi-section {
    border-start-start-radius: 0;
    border-start-end-radius: 0;
    margin-block-start: -1px;
}

/* ------------------------------------------------------------------ */
/* O título "Ordem" da coluna de reordenar                             */
/* ------------------------------------------------------------------ */

/*
 * O Filament esconde o título da coluna de reordenar num `fi-sr-only` — ela só tem a
 * alça, e para o olho o cabeçalho é uma célula vazia. Aqui ele é REVELADO, pelo mesmo
 * motivo que o "Ações" da última coluna já era: numa tabela em que todas as outras
 * colunas se anunciam, duas anônimas nas pontas parecem defeito de alinhamento.
 *
 * O texto vem de `filament-forms::components.repeater.columns.reorder.label`, traduzido
 * para "Ordem" em `lang/vendor/filament-forms/pt_BR/components.php` — é título de
 * coluna, então nomeia o que ela guarda, e não o verbo do botão.
 */
.apostolos-disciplinas th.fi-fo-table-repeater-empty-header-cell:first-child .fi-sr-only {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    overflow: visible;
    white-space: nowrap;
    clip: auto;
    clip-path: none;
}

.apostolos-disciplinas th.fi-fo-table-repeater-empty-header-cell:first-child {
    padding-inline: calc(var(--spacing) * 3);
    text-align: center;
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--gray-950);
}

.dark .apostolos-disciplinas th.fi-fo-table-repeater-empty-header-cell:first-child {
    color: white;
}
