/* ---------------------------------------------------------------------------
   Base cadastral (aba /base) — handoff `handoff_base_cadastral`.

   Layout em `layouts/layout_cedentes.py` (`layout_base_cedentes`), pedacos em
   `utils/utils_base_cadastral_v2.py`, callbacks em `callbacks/callbacks_cedentes.py`.

   Reusa: badges (`badge_status_v2` + `tom_*_status_v2`, `tema_status_operacoes_v2.css`),
   painel/cabecalho do modal (`painel_modal_remessas_v2`, `tema_solicitacoes_v2.css`),
   pills das secoes (`faixa_subabas_v2`, `tema_conteudo_v2.css`) e a timeline
   (`timeline_v2`, `tema_modal_ticket_v2.css`).

   Tokens: os `--v-*` de `tema_conteudo_v2.css`.
   --------------------------------------------------------------------------- */

.tela_base_cad_v2 {
    display: flex;
    flex-direction: column;
    gap: 14px;
    font-family: Manrope, sans-serif;
}

.min_w0_base_cad_v2 {
    min-width: 0;
}

.centro_base_cad_v2 {
    display: flex;
    justify-content: center;
}

.esq_base_cad_v2 {
    text-align: left !important;
}

.forte_base_cad_v2 {
    font-weight: 800;
}

.vazio_base_cad_v2 {
    font-weight: 500;
    color: #93A6A0;
}

.apoio_base_cad_v2 {
    font: 500 12px Manrope, sans-serif;
    color: #93A6A0;
}

.apoio_linha_base_cad_v2 {
    margin-top: 2px;
    font: 500 12px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

/* Tom neutro das badges (conta "Ativa", status sem mapeamento): os outros tres vem da
   aba Status. */
.tom_neutro_status_v2 {
    --st-fundo: var(--v-tab-cabecalho);
    --st-borda: var(--v-tab-divisoria);
    --st-texto: var(--v-texto-inativo);
    --st-ponto: #fff;
}

.tela_base_cad_v2 .badge_status_v2,
.painel_modal_base_cad_v2 .badge_status_v2 {
    gap: 6px;
}

/* ============================================================ FILTROS */

.filtros_base_cad_v2 {
    display: flex;
    align-items: flex-end;
    gap: 14px;
    flex-wrap: wrap;
    padding: 16px 22px;
    border: 1px solid var(--v-tab-divisoria);
    border-radius: 10px;
    background: var(--v-tab-hover);
}

.filtros_base_cad_v2 .rotulo_campo_estoque_v2 {
    margin-bottom: 7px;
}

.campo_base_cad_v2 .mantine-Select-input {
    height: 42px;
    border: 1px solid var(--v-borda-input);
    border-radius: 10px;
    font: 600 13px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.campo_busca_base_cad_v2 {
    flex: 1;
    min-width: 280px;
}

/* Um campo so, com o segmentado Nome | Documento embutido a esquerda. */
.caixa_busca_base_cad_v2 {
    display: flex;
    align-items: center;
    height: 42px;
    box-sizing: border-box;
    border: 1px solid var(--v-borda-input);
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}

.caixa_busca_base_cad_v2:focus-within {
    border-color: var(--v-verde-escuro);
}

.segmentado_busca_base_cad_v2.mantine-SegmentedControl-root {
    flex: none;
    height: 100%;
    padding: 0;
    border-right: 1px solid var(--v-borda-input);
    border-radius: 0;
    background: var(--v-tab-hover);
}

.segmentado_busca_base_cad_v2 .mantine-SegmentedControl-indicator {
    border-radius: 0;
    background: var(--v-verde-escuro);
    box-shadow: none;
}

.segmentado_busca_base_cad_v2 .mantine-SegmentedControl-control {
    border: 0 !important;
}

.segmentado_busca_base_cad_v2 .mantine-SegmentedControl-control + .mantine-SegmentedControl-control {
    border-left: 1px solid var(--v-borda-input) !important;
}

.segmentado_busca_base_cad_v2 .mantine-SegmentedControl-label {
    display: flex;
    align-items: center;
    height: 40px;
    padding: 0 14px;
    font: 800 12.5px Manrope, sans-serif;
    color: var(--v-texto-inativo);
}

.segmentado_busca_base_cad_v2 .mantine-SegmentedControl-label[data-active] {
    color: #fff;
}

.segmentado_busca_base_cad_v2 .mantine-SegmentedControl-label[data-active]:hover {
    color: #fff;
}

.lupa_busca_base_cad_v2 {
    flex: none;
    margin: 0 8px 0 12px;
    color: var(--v-tab-texto-sub);
}

.input_busca_base_cad_v2 {
    flex: 1;
    min-width: 0;
    height: 100%;
    padding: 0 12px 0 0;
    border: 0;
    outline: none;
    background: transparent;
    font: 600 13px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.input_busca_base_cad_v2::placeholder {
    color: #93A6A0;
}

.btn_buscar_base_cad_v2 {
    height: 42px;
    padding: 0 20px;
}

/* ============================================================ CARTOES */

.cartao_base_cad_v2 {
    border: 1px solid var(--v-borda-clara);
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}

.cartao_pad_base_cad_v2 {
    padding: 18px 22px;
}

.cabecalho_secao_base_cad_v2 {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.cartao_pad_base_cad_v2 > .cabecalho_secao_base_cad_v2 {
    margin-bottom: 12px;
}

.topo_cartao_base_cad_v2 {
    padding: 16px 22px;
}

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

.titulo_log_base_cad_v2 {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.borda_topo_base_cad_v2 {
    border-top: 1px solid var(--v-tab-divisoria);
}

.pilha_base_cad_v2 {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* ============================================================ TABELAS (grid) */

.rolagem_base_cad_v2 {
    overflow-x: auto;
}

.cab_tabela_base_cad_v2 {
    display: grid;
    gap: 12px;
    padding: 12px 22px;
    border-top: 1px solid var(--v-tab-divisoria);
    background: var(--v-tab-cabecalho);
    font: 800 13px Manrope, sans-serif;
    color: var(--v-verde-escuro);
    text-align: center;
}

.linha_tabela_base_cad_v2 {
    display: grid;
    gap: 12px;
    align-items: center;
    padding: 14px 22px;
    border-top: 1px solid var(--v-tab-divisoria);
    font: 600 13px Manrope, sans-serif;
    color: var(--v-tab-texto);
    text-align: center;
}

/* --- lista de pessoas --- */

.largura_lista_base_cad_v2 {
    min-width: 820px;
}

.grade_lista_base_cad_v2 {
    grid-template-columns: 2.6fr 1.2fr 1.2fr .8fr 70px;
}

.cab_tabela_base_cad_v2.grade_lista_base_cad_v2 {
    padding: 13px 22px;
}

.linha_base_cad_v2 {
    display: grid;
    gap: 12px;
    align-items: center;
    padding: 13px 22px;
    border-top: 1px solid var(--v-tab-divisoria);
    font: 600 13px Manrope, sans-serif;
    color: var(--v-tab-texto);
    cursor: pointer;
    transition: background .12s;
}

.linha_base_cad_v2:hover {
    background: var(--v-tab-hover);
}

.nome_base_cad_v2 {
    min-width: 0;
    overflow: hidden;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.doc_base_cad_v2 {
    text-align: center;
    color: var(--v-texto-inativo);
}

.id_base_cad_v2 {
    text-align: center;
    color: var(--v-tab-texto-sub);
}

.btn_info_base_cad_v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 10px;
    background: var(--v-tab-cabecalho);
    color: var(--v-verde-escuro);
}

.linha_base_cad_v2:hover .btn_info_base_cad_v2 {
    background: var(--v-tint);
}

.corpo_lista_base_cad_v2 {
    min-height: 120px;
}

.acoes_tabela_base_cad_v2 {
    display: flex;
    align-items: center;
    gap: 10px;
}

.por_pagina_base_cad_v2 .mantine-Select-input {
    height: 36px;
    min-height: 36px;
    border: 1px solid var(--v-borda-input);
    border-radius: 10px;
    font: 600 12.5px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.rodape_lista_base_cad_v2 {
    display: flex;
    justify-content: flex-end;
    padding: 12px 22px;
    border-top: 1px solid var(--v-tab-divisoria);
}

.rodape_lista_base_cad_v2 .pagination {
    margin: 0;
    gap: 4px;
}

.rodape_lista_base_cad_v2 .page-link {
    min-width: 32px;
    height: 32px;
    padding: 0 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-color: var(--v-borda-input);
    border-radius: 8px !important;
    font: 700 12.5px Manrope, sans-serif;
}

.rodape_lista_base_cad_v2 .page-item + .page-item .page-link {
    margin-left: 0;
}

/* ============================================================ MODAL */

.painel_modal_base_cad_v2 {
    border-radius: 10px;
    box-shadow: 0 24px 60px rgba(18, 42, 35, .25);
}

.painel_modal_base_cad_v2 .cabecalho_modal_remessas_v2 {
    padding: 22px 32px;
}

.painel_modal_remessas_v2.painel_modal_base_cad_v2 .modal-body {
    padding: 0 32px 32px;
    border-radius: 0 0 10px 10px;
}

.acoes_modal_base_cad_v2 {
    display: flex;
    flex: none;
    align-items: center;
    gap: 8px;
}

.acoes_modal_base_cad_v2 .fechar_gaveta_solic {
    width: 34px;
    height: 34px;
    margin-left: 6px;
    border-radius: 10px;
}

/* Contador dentro da pill (`rightSection` do `gen_inner_tabs_layout`). Vazio, some com a
   secao inteira, para a pill nao ficar com o respiro de um contador que nao existe. */
.contador_aba_base_cad_v2 {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    box-sizing: border-box;
    border-radius: 9px;
    background: var(--v-tab-cabecalho);
    font: 800 11px Manrope, sans-serif;
    color: var(--v-texto-inativo);
}

.contador_aba_base_cad_v2:empty,
.mantine-Tabs-tabSection:has(> .contador_aba_base_cad_v2:empty) {
    display: none;
}

.faixa_subabas_v2 .mantine-Tabs-tab[data-active] .contador_aba_base_cad_v2 {
    background: rgba(255, 255, 255, .22);
    color: #fff;
}

.painel_modal_base_cad_v2 .faixa_subabas_v2 .mantine-Tabs-tab {
    height: 38px;
    padding: 0 18px;
    border-radius: 19px;
    font-weight: 800;
}

/* --- documentos --- */

.linha_doc_base_cad_v2 {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    padding: 14px 22px;
}

.linha_doc_base_cad_v2 + .linha_doc_base_cad_v2 {
    border-top: 1px solid var(--v-tab-divisoria);
}

.info_doc_base_cad_v2 {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.icone_doc_base_cad_v2 {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: var(--v-tint);
    color: var(--v-verde-escuro);
}

.nome_doc_base_cad_v2 {
    font: 800 13.5px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.meta_doc_base_cad_v2 {
    margin-top: 2px;
    font: 500 12px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

.acoes_doc_base_cad_v2 {
    display: flex;
    gap: 8px;
}

/* Botao secundario de 34px (Visualizar / Baixar). `a.` para vencer a cor dos links soltos
   do conteudo (`tema_conteudo_v2.css`). */
.btn_sec_base_cad_v2,
a.btn_sec_base_cad_v2 {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 34px;
    padding: 0 12px;
    box-sizing: border-box;
    border: 1px solid var(--v-borda-tint);
    border-radius: 10px;
    background: #fff;
    font: 800 12.5px Manrope, sans-serif;
    color: var(--v-verde-escuro) !important;
    text-decoration: none;
    cursor: pointer;
}

.btn_sec_base_cad_v2:hover {
    background: var(--v-tint);
}

/* --- informacoes cadastrais --- */

.grade_campos_base_cad_v2 {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 14px 18px;
}

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

.valor_campo_base_cad_v2 {
    margin-top: 3px;
    overflow: hidden;
    font: 800 14px Manrope, sans-serif;
    color: var(--v-tab-texto);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.valor_vazio_base_cad_v2 {
    font-weight: 500;
    color: #93A6A0;
}

.grade_end_rep_base_cad_v2 {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
    gap: 14px;
}

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

.linha2_end_base_cad_v2 {
    margin-top: 3px;
    font: 500 13px/1.5 Manrope, sans-serif;
    color: var(--v-texto-inativo);
}

.lista_rep_base_cad_v2 {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.linha_rep_base_cad_v2 {
    display: flex;
    align-items: center;
    gap: 10px;
}

.avatar_base_cad_v2 {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--v-tint);
    font: 800 12px Manrope, sans-serif;
    color: var(--v-verde-escuro);
}

.nome_rep_base_cad_v2 {
    font: 800 13.5px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.email_rep_base_cad_v2 {
    margin-top: 2px;
    overflow: hidden;
    font: 500 12px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.grade_contas_base_cad_v2 {
    grid-template-columns: 1.6fr 1fr 1fr 1fr 1fr 1fr;
    min-width: 720px;
}

.banco_base_cad_v2 {
    display: flex;
    align-items: center;
    gap: 10px;
    text-align: left;
}

.quadro_banco_base_cad_v2 {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid var(--v-tab-divisoria);
    border-radius: 10px;
    background: #fff;
    font: 800 10px Manrope, sans-serif;
    color: var(--v-verde-escuro);
    overflow: hidden;
}

/* SVG real do banco, como no `.dados_conta_v2 .icone_banco_conta` do simulador. A altura
   vem inline do `get_img_banco`. */
.icone_banco_base_cad_v2 {
    flex: none;
    width: 36px;
    border-radius: 10px;
    object-fit: contain;
}

.nome_banco_base_cad_v2 {
    overflow: hidden;
    font-weight: 800;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* --- cronologia --- */

.cartao_crono_base_cad_v2 {
    padding: 22px;
}

.cartao_crono_base_cad_v2 > .cabecalho_secao_base_cad_v2 {
    margin-bottom: 16px;
}

.ponto_timeline_v2.ponto_ok_base_cad_v2 {
    background: var(--v-verde-escuro);
}

.ponto_timeline_v2.ponto_andamento_base_cad_v2 {
    background: #D9A13B;
}

.ponto_timeline_v2.ponto_erro_base_cad_v2 {
    background: #C4553F;
}

.ponto_timeline_v2.ponto_neutro_base_cad_v2 {
    box-sizing: border-box;
    border: 2px solid #9CCBBB;
    background: #fff;
}

.titulo_evento_base_cad_v2 {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rep_evento_base_cad_v2 {
    font: 600 11.5px Manrope, sans-serif;
    color: #93A6A0;
}

.por_evento_base_cad_v2 {
    margin-top: 6px;
    font: 500 12.5px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

.por_evento_base_cad_v2 b {
    color: var(--v-texto-inativo);
}

.cartao_crono_base_cad_v2 .evento_timeline_v2 {
    padding-bottom: 18px;
}

/* --- verificacoes --- */

.grade_log_base_cad_v2 {
    grid-template-columns: 1.3fr 1.6fr 1.6fr 1.3fr;
    min-width: 680px;
}

.linha_tabela_base_cad_v2.grade_log_base_cad_v2 {
    padding: 12px 22px;
}

.obs_log_base_cad_v2 {
    font-weight: 500;
    color: var(--v-texto-inativo);
}

/* --- extrato --- */

.filtros_extrato_base_cad_v2 {
    margin-bottom: 14px;
}

.extrato_base_cad_v2 .table {
    font: 600 13px Manrope, sans-serif;
}

/* ============================================================ VAZIO / ERRO */

.vazio_cartao_base_cad_v2 {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 48px 22px;
}

.extrato_base_cad_v2 > .vazio_cartao_base_cad_v2 {
    border: 1px solid var(--v-borda-clara);
    border-radius: 10px;
}

.icone_vazio_base_cad_v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--v-tint);
    color: var(--v-verde-escuro);
}

.texto_vazio_base_cad_v2 {
    font: 800 15px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.erro_base_cad_v2 {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 14px 22px;
    padding: 12px 16px;
    border: 1px solid var(--v-erro-borda);
    border-radius: 10px;
    background: var(--v-erro-fundo);
    font: 600 13px Manrope, sans-serif;
    color: var(--v-erro-texto);
}

/* ============================================================ MOBILE */

@media (max-width: 767px) {
    .filtros_base_cad_v2 {
        padding: 14px 16px;
    }

    .campo_base_cad_v2,
    .campo_base_cad_v2 .mantine-Select-root,
    .campo_busca_base_cad_v2,
    .btn_buscar_base_cad_v2 {
        width: 100% !important;
        min-width: 0;
    }

    .painel_modal_base_cad_v2 .cabecalho_modal_remessas_v2 {
        flex-wrap: wrap;
        padding: 18px 16px;
    }

    .painel_modal_remessas_v2.painel_modal_base_cad_v2 .modal-body {
        padding: 0 16px 20px;
    }

    .grade_end_rep_base_cad_v2 {
        grid-template-columns: minmax(0, 1fr);
    }

    .topo_cartao_base_cad_v2,
    .linha_base_cad_v2,
    .linha_tabela_base_cad_v2,
    .cab_tabela_base_cad_v2,
    .linha_doc_base_cad_v2 {
        padding-left: 16px;
        padding-right: 16px;
    }
}
