1055 lines
21 KiB
CSS
1055 lines
21 KiB
CSS
/* "Conciliação de Fornecedores" (Utilitários) — .conc-* — só usado em
|
|
conciliacao-fornecedores.html. Carrega perfis-acesso.css também, pra
|
|
reaproveitar .pa-table/.pa-table-wrap/.pa-search/.status-pill (mesmo
|
|
padrão de nao-conformidades.css/dashboard-contabil.css). */
|
|
|
|
.conc-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: var(--space-4);
|
|
margin-bottom: var(--space-5);
|
|
}
|
|
|
|
.conc-header h2 {
|
|
margin: 0 0 var(--space-1);
|
|
}
|
|
|
|
.conc-subtitle {
|
|
color: var(--text-secondary);
|
|
font-size: 0.9rem;
|
|
margin: 0;
|
|
max-width: 760px;
|
|
}
|
|
|
|
.conc-empty {
|
|
color: var(--text-muted);
|
|
font-style: italic;
|
|
padding: var(--space-4);
|
|
text-align: center;
|
|
}
|
|
|
|
.conc-num {
|
|
text-align: right !important;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* .pa-table td:last-child (perfis-acesso.css) alinha a última coluna à
|
|
direita; na tabela de fornecedores ela é a Situação, e numa célula de
|
|
aviso com colspan ela é a única. */
|
|
.conc-table td:last-child,
|
|
.pa-table td.conc-empty {
|
|
text-align: left;
|
|
}
|
|
|
|
.pa-table td.conc-empty {
|
|
text-align: center;
|
|
}
|
|
|
|
.conc-toolbar {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
flex-wrap: wrap;
|
|
margin-bottom: var(--space-3);
|
|
}
|
|
|
|
.conc-toolbar .pa-search {
|
|
margin-left: auto;
|
|
}
|
|
|
|
/* ---------------- Formulário de nova conciliação ---------------- */
|
|
|
|
.conc-form {
|
|
background: var(--bg-surface);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius-md);
|
|
padding: var(--space-5);
|
|
margin-bottom: var(--space-5);
|
|
animation: pidFadeSlideUp 160ms ease-out;
|
|
}
|
|
|
|
.conc-form__grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
gap: var(--space-3) var(--space-4);
|
|
}
|
|
|
|
.conc-form__empresa {
|
|
margin: var(--space-1) 0 0;
|
|
font-size: 0.82rem;
|
|
font-weight: 600;
|
|
color: var(--accent);
|
|
min-height: 1.2em;
|
|
}
|
|
|
|
.conc-form__empresa.is-erro {
|
|
color: var(--danger);
|
|
}
|
|
|
|
.conc-form__empresa.is-carregando {
|
|
color: var(--text-muted);
|
|
font-weight: 400;
|
|
}
|
|
|
|
.conc-form__hint {
|
|
margin: var(--space-1) 0 0;
|
|
font-size: 0.75rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.conc-file-field {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.conc-file-field__btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.conc-file-field__input {
|
|
display: none;
|
|
}
|
|
|
|
.conc-file-field__name {
|
|
font-size: 0.85rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
/* ---------------- Cabeçalho da empresa ---------------- */
|
|
|
|
.conc-voltar-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-1);
|
|
margin-bottom: var(--space-3);
|
|
}
|
|
|
|
.conc-empresa {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: var(--space-4);
|
|
background: var(--bg-surface);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius-md);
|
|
padding: var(--space-3) var(--space-4);
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
|
|
.conc-empresa .btn-outline {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.conc-empresa__codigo {
|
|
margin-right: var(--space-2);
|
|
font-size: 0.75rem;
|
|
font-weight: 700;
|
|
color: var(--accent);
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
.conc-empresa__nome {
|
|
display: inline;
|
|
margin: 0;
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.conc-empresa__meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-1) var(--space-5);
|
|
margin-top: 4px;
|
|
font-size: 0.78rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-empresa__meta strong {
|
|
color: var(--text-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.conc-alertas-gerais {
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
|
|
.conc-filtro-alerta {
|
|
font-size: 0.82rem;
|
|
color: var(--text-secondary);
|
|
margin: 0 0 var(--space-3);
|
|
}
|
|
|
|
.conc-filtro-alerta button {
|
|
color: var(--accent);
|
|
font-weight: 600;
|
|
margin-left: var(--space-2);
|
|
}
|
|
|
|
/* ---------------- Faixa de indicadores ---------------- */
|
|
|
|
.conc-cards {
|
|
margin-bottom: var(--space-3);
|
|
}
|
|
|
|
.conc-kpis {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.4fr);
|
|
background: var(--bg-surface);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius-md);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.conc-kpi,
|
|
.conc-progresso {
|
|
padding: var(--space-3) var(--space-4);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
text-align: left;
|
|
font: inherit;
|
|
color: inherit;
|
|
background: none;
|
|
border: 0;
|
|
border-right: 1px solid var(--border-subtle);
|
|
}
|
|
|
|
.conc-progresso {
|
|
border-right: 0;
|
|
justify-content: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
button.conc-kpi {
|
|
cursor: pointer;
|
|
transition: background var(--transition-fast);
|
|
}
|
|
|
|
button.conc-kpi:hover {
|
|
background: var(--card-bg-hover);
|
|
}
|
|
|
|
button.conc-kpi.is-active {
|
|
box-shadow: inset 0 -2px 0 var(--accent);
|
|
}
|
|
|
|
.conc-kpi__rotulo {
|
|
font-size: 0.72rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-kpi__valor {
|
|
font-size: 1.35rem;
|
|
font-weight: 700;
|
|
line-height: 1.2;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-kpi__detalhe {
|
|
font-size: 0.72rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.conc-kpi--warning .conc-kpi__valor {
|
|
color: var(--gold);
|
|
}
|
|
|
|
.conc-kpi--danger .conc-kpi__valor {
|
|
color: var(--danger);
|
|
}
|
|
|
|
.conc-progresso__topo {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
font-size: 0.82rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-progresso__topo strong {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-progresso__barra {
|
|
height: 8px;
|
|
border-radius: var(--radius-pill);
|
|
background: var(--bg-surface-raised);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.conc-progresso__barra span {
|
|
display: block;
|
|
height: 100%;
|
|
background: #2f9e6e;
|
|
border-radius: var(--radius-pill);
|
|
transition: width 0.3s ease;
|
|
}
|
|
|
|
/* Apontamentos menores em etiquetas clicáveis (filtram a tabela). */
|
|
.conc-tags {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
margin-top: var(--space-3);
|
|
}
|
|
|
|
.conc-tags__rotulo {
|
|
font-size: 0.75rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.conc-tag {
|
|
font-size: 0.75rem;
|
|
padding: 3px 10px;
|
|
border-radius: var(--radius-pill);
|
|
border: 1px solid var(--border-subtle);
|
|
background: var(--bg-surface);
|
|
color: var(--text-secondary);
|
|
transition: border-color var(--transition-fast), background var(--transition-fast);
|
|
}
|
|
|
|
.conc-tag strong {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-tag--warning strong {
|
|
color: var(--gold);
|
|
}
|
|
|
|
.conc-tag--danger strong {
|
|
color: var(--danger);
|
|
}
|
|
|
|
.conc-tag--info strong {
|
|
color: var(--accent);
|
|
}
|
|
|
|
.conc-tag:hover,
|
|
.conc-tag.is-active {
|
|
border-color: var(--accent);
|
|
}
|
|
|
|
.conc-tag.is-active {
|
|
background: rgba(var(--accent-rgb), 0.12);
|
|
}
|
|
|
|
/* ---------------- Chips de filtro ---------------- */
|
|
|
|
.conc-chip-row {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-2);
|
|
}
|
|
|
|
.conc-chip {
|
|
padding: 4px 12px;
|
|
border-radius: var(--radius-pill);
|
|
border: 1px solid var(--border-subtle);
|
|
background: var(--bg-surface);
|
|
color: var(--text-secondary);
|
|
font-size: 0.8rem;
|
|
font-weight: 600;
|
|
transition: border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast);
|
|
}
|
|
|
|
.conc-chip:hover {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-chip.is-active {
|
|
border-color: var(--accent);
|
|
color: var(--accent);
|
|
background: rgba(var(--accent-rgb), 0.12);
|
|
}
|
|
|
|
.conc-chip__count {
|
|
margin-left: 4px;
|
|
font-weight: 700;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
/* ---------------- Tabela de fornecedores ---------------- */
|
|
|
|
.conc-table th[data-sort] {
|
|
cursor: pointer;
|
|
user-select: none;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.conc-sort-icon {
|
|
color: var(--text-muted);
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.conc-table th.is-sort-asc .conc-sort-icon,
|
|
.conc-table th.is-sort-desc .conc-sort-icon {
|
|
color: var(--accent);
|
|
}
|
|
|
|
.conc-expand-col {
|
|
width: 32px;
|
|
}
|
|
|
|
.conc-row {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.conc-row.is-aberta td {
|
|
background: var(--bg-surface-raised);
|
|
}
|
|
|
|
.conc-expand-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 24px;
|
|
height: 24px;
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-expand-chevron {
|
|
transition: transform var(--transition-fast);
|
|
}
|
|
|
|
.conc-row.is-aberta .conc-expand-chevron {
|
|
transform: rotate(90deg);
|
|
}
|
|
|
|
.conc-conta-numero {
|
|
font-variant-numeric: tabular-nums;
|
|
color: var(--text-secondary);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.conc-fornecedor__nome {
|
|
font-weight: 600;
|
|
}
|
|
|
|
.conc-fornecedor__alerta {
|
|
display: block;
|
|
font-size: 0.75rem;
|
|
color: var(--text-muted);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.conc-valor {
|
|
font-variant-numeric: tabular-nums;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.conc-valor--devedor {
|
|
color: var(--danger);
|
|
}
|
|
|
|
.conc-valor--zero {
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.conc-valor--vencido {
|
|
color: var(--gold);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.conc-status {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.conc-status svg {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.status-pill--ok {
|
|
color: #2f9e6e;
|
|
background: rgba(47, 158, 110, 0.14);
|
|
}
|
|
|
|
.status-pill--danger {
|
|
color: var(--danger);
|
|
background: rgba(var(--danger-rgb), 0.14);
|
|
}
|
|
|
|
.status-pill--warning {
|
|
color: var(--gold);
|
|
background: rgba(var(--gold-rgb), 0.18);
|
|
}
|
|
|
|
.status-pill--neutral {
|
|
color: var(--text-secondary);
|
|
background: var(--bg-surface-raised);
|
|
}
|
|
|
|
.status-pill--validada {
|
|
color: var(--accent);
|
|
background: rgba(var(--accent-rgb), 0.14);
|
|
}
|
|
|
|
/* ---------------- Detalhe expandido ---------------- */
|
|
|
|
.pa-table td.conc-detail-cell {
|
|
background: var(--bg-surface-raised);
|
|
padding: var(--space-4) var(--space-5);
|
|
text-align: left;
|
|
cursor: default;
|
|
}
|
|
|
|
/* Só a célula externa da linha de detalhe (`>`): sem isso a regra pegava
|
|
também todas as células das sub-tabelas de lançamentos. */
|
|
.conc-detail-row:hover > td {
|
|
background: var(--bg-surface-raised);
|
|
}
|
|
|
|
.conc-detail {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-4);
|
|
animation: pidFadeIn 140ms ease-out;
|
|
}
|
|
|
|
.conc-alertas {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-2);
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.conc-alerta {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: var(--space-2);
|
|
font-size: 0.85rem;
|
|
padding: var(--space-2) var(--space-3);
|
|
border-radius: var(--radius-sm);
|
|
background: var(--bg-surface);
|
|
border-left: 3px solid var(--border-subtle);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-alerta--alta {
|
|
border-left-color: var(--danger);
|
|
}
|
|
|
|
.conc-alerta--media {
|
|
border-left-color: var(--gold);
|
|
}
|
|
|
|
.conc-alerta--baixa {
|
|
border-left-color: var(--accent);
|
|
}
|
|
|
|
.conc-alerta__severidade {
|
|
font-size: 0.68rem;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
padding-top: 2px;
|
|
min-width: 44px;
|
|
}
|
|
|
|
.conc-alerta--alta .conc-alerta__severidade {
|
|
color: var(--danger);
|
|
}
|
|
|
|
.conc-alerta--media .conc-alerta__severidade {
|
|
color: var(--gold);
|
|
}
|
|
|
|
.conc-alerta--baixa .conc-alerta__severidade {
|
|
color: var(--accent);
|
|
}
|
|
|
|
.conc-detail__secao-titulo {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
flex-wrap: wrap;
|
|
margin: 0 0 var(--space-2);
|
|
}
|
|
|
|
.conc-detail__secao-titulo h4 {
|
|
margin: 0;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.conc-detail__titulo-grupo {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-4);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.conc-detail__acoes {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.conc-selecao-resumo {
|
|
font-size: 0.8rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-selecao-resumo strong {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-subtabela {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
background: var(--bg-surface);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius-sm);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.conc-subtabela th {
|
|
text-align: left;
|
|
font-size: 0.68rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
color: var(--text-muted);
|
|
padding: var(--space-2) var(--space-3);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
}
|
|
|
|
.conc-subtabela td {
|
|
padding: var(--space-2) var(--space-3);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
font-size: 0.82rem;
|
|
color: var(--text-primary);
|
|
vertical-align: top;
|
|
}
|
|
|
|
.conc-subtabela tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
|
|
/* As sub-tabelas ficam dentro da .pa-table de fornecedores, então
|
|
`.pa-table tr:hover td` (perfis-acesso.css) casava com toda célula delas
|
|
sempre que o mouse estava em qualquer ponto da linha de detalhe, clareando
|
|
todos os lançamentos de uma vez. Estas três regras têm especificidade
|
|
maior que aquela: fundo neutro por padrão, destaque só na linha sob o
|
|
mouse, e seleção por último para vencer o hover. */
|
|
.pa-table .conc-subtabela tr td {
|
|
background: transparent;
|
|
}
|
|
|
|
.pa-table .conc-subtabela tbody tr:hover td {
|
|
background: var(--card-bg-hover);
|
|
}
|
|
|
|
.pa-table .conc-subtabela tr.is-selecionado td {
|
|
background: rgba(var(--accent-rgb), 0.12);
|
|
}
|
|
|
|
.conc-subtabela__check {
|
|
width: 28px;
|
|
}
|
|
|
|
.conc-historico {
|
|
max-width: 380px;
|
|
}
|
|
|
|
.conc-historico__contrapartida {
|
|
display: block;
|
|
font-size: 0.72rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.conc-natureza {
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
padding: 1px 6px;
|
|
border-radius: var(--radius-pill);
|
|
}
|
|
|
|
.conc-natureza--C {
|
|
color: var(--accent);
|
|
background: rgba(var(--accent-rgb), 0.12);
|
|
}
|
|
|
|
.conc-natureza--D {
|
|
color: var(--coral);
|
|
background: rgba(var(--coral-rgb), 0.14);
|
|
}
|
|
|
|
.conc-situacao {
|
|
font-size: 0.78rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-situacao--vencido,
|
|
.conc-situacao--nao_vinculado {
|
|
color: var(--gold);
|
|
}
|
|
|
|
.conc-situacao--excedente {
|
|
color: var(--danger);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.conc-vinculo {
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius-sm);
|
|
background: var(--bg-surface);
|
|
margin-bottom: var(--space-2);
|
|
}
|
|
|
|
.conc-vinculo__header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
padding: var(--space-2) var(--space-3);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
font-size: 0.8rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-vinculo__header strong {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-vinculo .conc-subtabela {
|
|
border: none;
|
|
border-radius: 0;
|
|
}
|
|
|
|
.conc-vinculos-lista {
|
|
max-height: 420px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.conc-validacao {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-2);
|
|
border-top: 1px solid var(--border-subtle);
|
|
padding-top: var(--space-4);
|
|
}
|
|
|
|
.conc-validacao textarea {
|
|
width: 100%;
|
|
min-height: 64px;
|
|
resize: vertical;
|
|
padding: var(--space-2) var(--space-3);
|
|
border-radius: var(--radius-sm);
|
|
border: 1px solid var(--border-subtle);
|
|
background: var(--bg-surface);
|
|
color: var(--text-primary);
|
|
font: inherit;
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
.conc-validacao textarea:focus {
|
|
outline: none;
|
|
border-color: var(--accent);
|
|
}
|
|
|
|
.conc-validacao__info {
|
|
font-size: 0.78rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.conc-btn-sm {
|
|
padding: 4px 12px;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.conc-sem-pendencias {
|
|
font-size: 0.85rem;
|
|
color: var(--text-muted);
|
|
font-style: italic;
|
|
margin: 0;
|
|
}
|
|
|
|
.conc-detail button:disabled {
|
|
opacity: 0.45;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* Checkbox de "validado" no fim de cada linha de fornecedor (atalho do
|
|
botão "Marcar como validada" do detalhe, mesmo endpoint). */
|
|
.conc-table th.conc-validado-col,
|
|
.conc-table td.conc-validado-col {
|
|
width: 90px;
|
|
text-align: center !important;
|
|
}
|
|
|
|
.conc-validado-check {
|
|
width: 18px;
|
|
height: 18px;
|
|
cursor: pointer;
|
|
accent-color: var(--accent);
|
|
}
|
|
|
|
/* ---------------- Toggle de validadas ---------------- */
|
|
|
|
.conc-toggle {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 0.8rem;
|
|
color: var(--text-secondary);
|
|
white-space: nowrap;
|
|
flex-shrink: 0;
|
|
margin-left: auto;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.conc-toggle input {
|
|
accent-color: var(--accent);
|
|
}
|
|
|
|
.conc-toggle .conc-chip__count {
|
|
margin-left: 0;
|
|
}
|
|
|
|
/* ---------------- Filtros e cabeçalho fixos ao rolar ---------------- */
|
|
/* Sempre com `>`: as sub-tabelas de lançamentos ficam dentro desta tabela,
|
|
e um seletor descendente fixava o thead delas no meio da lista. */
|
|
/* A página rola pela janela e a .topbar (layout.css) já é sticky com
|
|
--topbar-height; os filtros ficam logo abaixo dela e o cabeçalho da
|
|
tabela logo abaixo dos filtros (altura fixa de --conc-toolbar-altura
|
|
para o cálculo bater). .pa-table-wrap tem overflow:hidden, que anularia
|
|
o sticky do thead: esta tabela abre mão dele. */
|
|
|
|
.conc-detail-view,
|
|
#conc-detail-view {
|
|
--conc-toolbar-altura: 52px;
|
|
--conc-thead-altura: 41px;
|
|
--conc-selecao-altura: 44px;
|
|
}
|
|
|
|
.conc-toolbar--fixa {
|
|
position: sticky;
|
|
top: var(--topbar-height);
|
|
z-index: 15;
|
|
flex-wrap: nowrap;
|
|
height: var(--conc-toolbar-altura);
|
|
margin-bottom: 0;
|
|
background: var(--bg-canvas);
|
|
}
|
|
|
|
.conc-toolbar--fixa .pa-search {
|
|
margin-left: 0;
|
|
width: 210px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.conc-table-wrap {
|
|
overflow: visible;
|
|
}
|
|
|
|
.conc-table > thead > tr > th {
|
|
position: sticky;
|
|
top: calc(var(--topbar-height) + var(--conc-toolbar-altura));
|
|
z-index: 10;
|
|
}
|
|
|
|
.conc-table > thead > tr > th:first-child {
|
|
border-top-left-radius: var(--radius-md);
|
|
}
|
|
|
|
.conc-table > thead > tr > th:last-child {
|
|
border-top-right-radius: var(--radius-md);
|
|
}
|
|
|
|
/* ---------------- Linhas compactas ---------------- */
|
|
|
|
.conc-table tbody tr.conc-row > td {
|
|
padding-top: 7px;
|
|
padding-bottom: 7px;
|
|
}
|
|
|
|
.conc-fornecedor__nome {
|
|
font-size: 0.86rem;
|
|
}
|
|
|
|
.conc-fornecedor__alerta {
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
/* Coluna do fornecedor flexível e cortada com reticências (max-width:0 +
|
|
largura em % faz a célula ceder espaço em vez de alargar a tabela). */
|
|
.conc-table tbody tr.conc-row > td:nth-child(3) {
|
|
max-width: 0;
|
|
width: 40%;
|
|
}
|
|
|
|
.conc-table tbody tr.conc-row > td:nth-child(3) span {
|
|
display: block;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
/* "Recolher" no fim da área expandida, à direita das ações da observação. */
|
|
.conc-recolher-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
margin-left: auto;
|
|
}
|
|
|
|
/* ---------------- Sugestões (dedução da ferramenta, não fato) ---------------- */
|
|
|
|
.conc-sugestao-tag {
|
|
display: inline-block;
|
|
margin-right: 6px;
|
|
padding: 0 6px;
|
|
border-radius: var(--radius-pill);
|
|
border: 1px dashed var(--text-muted);
|
|
font-size: 0.64rem;
|
|
font-weight: 700;
|
|
font-style: normal;
|
|
letter-spacing: 0.03em;
|
|
text-transform: uppercase;
|
|
color: var(--text-secondary);
|
|
vertical-align: 1px;
|
|
}
|
|
|
|
/* Sugestão numa linha própria, abaixo do fato, em tom neutro: não herda a
|
|
cor de alerta da situação (dourado/vermelho), que é do fato. */
|
|
.conc-sugestao {
|
|
display: block;
|
|
margin-top: 3px;
|
|
font-style: italic;
|
|
font-weight: 400;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.conc-vinculo--parcial {
|
|
border-left: 3px solid var(--gold);
|
|
}
|
|
|
|
/* ---------------- Barra de seleção fixa na conta expandida ---------------- */
|
|
/* Com muitos lançamentos, a soma da seleção e o "Vincular selecionados"
|
|
ficam fixos logo abaixo do thead da tabela de fornecedores (pedido do
|
|
usuário), e o thead da lista de pendentes logo abaixo da barra. O sticky
|
|
vale dentro da célula de detalhe: some quando a conta sai da tela. */
|
|
.conc-selecao-barra {
|
|
position: sticky;
|
|
top: calc(var(--topbar-height) + var(--conc-toolbar-altura) + var(--conc-thead-altura));
|
|
z-index: 9;
|
|
min-height: var(--conc-selecao-altura);
|
|
margin: 0 calc(-1 * var(--space-5)) 0;
|
|
padding: var(--space-2) var(--space-5);
|
|
background: var(--bg-surface-raised);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
}
|
|
|
|
/* overflow:hidden (do raio da borda) faria a tabela virar o contêiner de
|
|
rolagem do próprio thead e anularia o sticky */
|
|
.conc-subtabela--pendentes {
|
|
overflow: visible;
|
|
}
|
|
|
|
.conc-subtabela--pendentes > thead > tr > th {
|
|
position: sticky;
|
|
top: calc(var(--topbar-height) + var(--conc-toolbar-altura) + var(--conc-thead-altura) + var(--conc-selecao-altura));
|
|
z-index: 8;
|
|
background: var(--bg-surface);
|
|
}
|
|
|
|
/* Linha do lançamento pendente é clicável (marca/desmarca a seleção). */
|
|
.conc-subtabela--pendentes tbody tr {
|
|
cursor: pointer;
|
|
user-select: none;
|
|
}
|
|
|
|
.conc-subtabela--pendentes tbody tr .conc-historico {
|
|
user-select: text;
|
|
}
|
|
|
|
.conc-subtabela__check input {
|
|
cursor: pointer;
|
|
accent-color: var(--accent);
|
|
}
|
|
|
|
.conc-vinculo__acoes {
|
|
display: inline-flex;
|
|
gap: var(--space-2);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.conc-vinculo__acoes button:disabled {
|
|
opacity: 0.45;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* ---------------- Razão desde a primeira pendência ---------------- */
|
|
/* Linhas já vinculadas aparecem apagadas, sem seleção; passando o mouse,
|
|
o vínculo inteiro (as outras linhas dele) acende. */
|
|
.pa-table .conc-subtabela--pendentes tbody tr.conc-linha--vinculada {
|
|
cursor: default;
|
|
}
|
|
|
|
/* Toggle "Ocultar conciliados" ao lado do título do razão. */
|
|
.pa-table .conc-subtabela--pendentes.is-ocultando-conciliados tbody tr.conc-linha--vinculada {
|
|
display: none;
|
|
}
|
|
|
|
.pa-table .conc-subtabela--pendentes tbody tr.conc-linha--vinculada td {
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.pa-table .conc-subtabela--pendentes tbody tr.conc-linha--vinculada.is-grupo td {
|
|
background: rgba(47, 158, 110, 0.1);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.conc-valor--saldo {
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.conc-vinculado {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
}
|
|
|
|
.conc-vinculado-tag {
|
|
font-size: 0.68rem;
|
|
font-weight: 700;
|
|
padding: 1px 7px;
|
|
border-radius: var(--radius-pill);
|
|
color: #2f9e6e;
|
|
background: rgba(47, 158, 110, 0.14);
|
|
}
|
|
|
|
.conc-vinculado__tipo {
|
|
font-size: 0.76rem;
|
|
}
|
|
|
|
.conc-link-btn {
|
|
font-size: 0.76rem;
|
|
font-weight: 600;
|
|
color: var(--accent);
|
|
background: none;
|
|
border: 0;
|
|
padding: 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.conc-link-btn:hover {
|
|
text-decoration: underline;
|
|
}
|