/* ---------------------------------------------------------------------------
   Extratos / Conciliacao — handoff `EXTRATOS_PORTAL.md`.

   Cobre o topo (contas gerenciais + status), os callouts, o Resumo e os cabecalhos das
   secoes. As `DataTable` continuam como estao, com o filtro nativo do proprio componente
   — o que muda aqui e arrumacao, nao funcionalidade.

   Monta em `extratos_layout` (`layouts/layout_conta_corrente.py`) e nos callbacks
   `load_status` / `load_resumo_contas_gerenciais` (`callbacks/callbacks_cc_v2.py`).

   Os KPI (`grade_kpi_v2`, `rotulo_kpi_v2`, `valor_kpi_v2`) e as pills de contagem vem de
   `tema_conteudo_v2.css`: sao os mesmos das Solicitacoes.
   --------------------------------------------------------------------------- */

/* ============================================================ CONTAS GERENCIAIS */

/* Dois cartoes lado a lado: os controles a esquerda, o relogio das ultimas execucoes a
   direita, com largura fixa porque o conteudo dele nao cresce. */
.topo_cc_v2 {
    display: flex;
    align-items: stretch;
    gap: 16px;
    flex-wrap: wrap;
}

.cartao_cc_v2 {
    flex: 1;
    min-width: 320px;
    padding: 18px 22px;
    border: 1px solid var(--v-borda-clara);
    border-radius: 10px;
    background: #fff;
}

/* `min-width: 0` nao e enfeite: o `.cartao_cc_v2` acima crava `min-width: 320px` para o
   cartao de controles nao espremer, e `min-width` vence `width` — sem zerar aqui, o
   cartao de status saia com 320px em vez dos 280 do handoff. */
.cartao_status_cc_v2 {
    flex: none;
    width: 280px;
    min-width: 0;
}

/* No estreito os dois cartoes empilham, e o de status nao tem por que ficar preso aos
   280px: sao tres pares rotulo -> valor que so ganham em espalhar. O `min-width` do
   cartao de cima tambem sai — em 320px ele estouraria a tela. */
@media (max-width: 767.98px) {
    .cartao_cc_v2 {
        min-width: 0;
    }

    .cartao_status_cc_v2 {
        width: 100%;
    }
}

.rotulo_cc_v2 {
    margin-bottom: 14px;
    font: 700 12px Manrope, sans-serif;
    color: var(--v-verde-escuro);
    letter-spacing: .6px;
    text-transform: uppercase;
}

/* Os controles numa linha so. Antes o "Carregar" ocupava a largura inteira do cartao e o
   "Processar Arbi" vinha embaixo, o que dava a eles um peso que nao tem — sao duas acoes
   de rotina sobre a data ao lado. */
.linha_cc_v2 {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

.campo_data_cc_v2 .rotulo_cc_v2 {
    margin-bottom: 8px;
}

/* O `DatePickerSingle` e do `dcc`, nao do Mantine: quem desenha a caixa e o
   `.DateInput_input` do react-dates. */
.campo_data_cc_v2 .DateInput,
.campo_data_cc_v2 .DateInput_input {
    width: 140px;
    box-sizing: border-box;
}

.campo_data_cc_v2 .DateInput_input {
    height: 42px;
    padding: 0 12px;
    border: 1px solid var(--v-borda-input);
    border-radius: 10px;
    font: 600 13px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.campo_data_cc_v2 .DateInput_input__focused {
    border-color: var(--v-verde-escuro);
}

.campo_data_cc_v2 .SingleDatePickerInput {
    border: none;
    background: transparent;
}

.linha_cc_v2 .btn {
    height: 42px;
    padding: 0 20px;
    border-radius: 10px;
    font: 800 13.5px Manrope, sans-serif;
}

/* Relogio das ultimas execucoes: tres pares rotulo -> valor no lugar da tabela de uma
   coluna que havia aqui. Nao e dado tabular — sao tres carimbos de tempo. */
.linhas_status_cc_v2 {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.linha_status_cc_v2 {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
}

.rotulo_status_cc_v2 {
    font: 600 12.5px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

.valor_status_cc_v2 {
    font: 700 12.5px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

/* ============================================================ SECOES */

.cabecalho_secao_cc_v2 {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.titulo_secao_cc_v2 {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    font: 700 12px Manrope, sans-serif;
    color: var(--v-verde-escuro);
    letter-spacing: .6px;
    text-transform: uppercase;
}

/* Sub do titulo: "no extrato gerencial mas nao capturado". Fica fora do titulo em caixa
   alta porque e frase, nao rotulo. */
.sub_secao_cc_v2 {
    margin: -6px 0 12px;
    font: 500 12px Manrope, sans-serif;
    color: #93A6A0;
    text-transform: none;
    letter-spacing: 0;
}

.badge_contagem_v2 {
    padding: 3px 9px;
    border-radius: 14px;
    border: 1px solid #F0D5D0;
    background: #FDF6F4;
    font: 700 11px Manrope, sans-serif;
    color: #C4553F;
    letter-spacing: 0;
}

/* "Agrupar por", a esquerda dos checkboxes de agrupamento dos Recebimentos. Menor e mais
   apagado que o titulo da secao: e legenda dos controles ao lado, nao um segundo titulo. */
.rotulo_gby_cc_v2 {
    font: 700 11.5px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
    letter-spacing: .4px;
    text-transform: uppercase;
}

/* Linha do agrupamento, logo abaixo do titulo da secao. */
.linha_gby_cc_v2 {
    margin-top: 8px;
}

/* O `inline=True` do `dbc.Checklist` sozinho nao basta aqui: ele desenha os itens como
   `inline-block`, e a regra de `.acoes_secao_cc_v2 .form-check` logo abaixo os passa
   para `display: flex` — dentro do wrapper do proprio Checklist, que nao e flex, isso os
   empilha. Entao quem alinha e o wrapper. */
.gby_cc_v2 {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

/* Controles da direita do cabecalho: os dois checkboxes e o botao numa linha so. Antes
   vinham empilhados, com o botao entre eles. */
.acoes_secao_cc_v2 {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

.acoes_secao_cc_v2 .form-check {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    min-height: 0;
}

.acoes_secao_cc_v2 .form-check-input {
    width: 17px;
    height: 17px;
    margin: 0;
    border-radius: 5px;
    border: 1.5px solid var(--v-borda-controle);
}

.acoes_secao_cc_v2 .form-check-label {
    margin: 0;
    font: 600 13px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

/* Desabilitado ate marcar "Habilitar" — cinza chapado, sem o verde da acao. E a unica
   pista de que falta um passo antes. */
.acoes_secao_cc_v2 .btn,
.btn_forcar_cc_v2.btn {
    height: 38px;
    padding: 0 16px;
    border-radius: 10px;
    font: 700 12.5px Manrope, sans-serif;
}

.btn_forcar_cc_v2.btn:disabled,
.btn_forcar_cc_v2.btn.disabled {
    border-color: var(--v-tab-divisoria);
    background: var(--v-tab-divisoria);
    color: #93A6A0;
    opacity: 1;
}

/* ============================================================ BAIXAS */

/* Toggle em pills, no lugar dos radios soltos: sao duas fontes de dado para a mesma
   tabela, e nao duas opcoes de formulario. */
.toggle_baixas_v2 {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.toggle_baixas_v2 .form-check {
    margin: 0;
    padding: 0;
    min-height: 0;
}

.toggle_baixas_v2 .form-check-input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.toggle_baixas_v2 .form-check-label {
    display: inline-flex;
    align-items: center;
    padding: 6px 13px;
    border: 1.5px solid var(--v-borda-clara);
    border-radius: 16px;
    background: #fff;
    font: 600 12.5px Manrope, sans-serif;
    color: var(--v-texto-inativo);
    cursor: pointer;
}

.toggle_baixas_v2 .form-check:has(.form-check-input:checked) .form-check-label {
    border-color: var(--v-verde-escuro);
    background: var(--v-tint);
    font-weight: 800;
    color: var(--v-verde-escuro);
}
