/*
 * Arvore colapsavel de dois niveis — o `cxDBTreeList` dos quatro relatorios do ramo
 * `Relatórios DRE` (`modulos/DRE`, `DataController.ParentField = 'ParentID'`).
 *
 * Decisao do usuario em 04/09/2026, §0.2 do plano do ramo: *"Fazer o B, porém colocar
 * scroll horizontal caso não caiba"* — arvore colapsavel, e nao tabela plana, com rolagem
 * horizontal dentro da propria grade quando as colunas nao couberem.
 *
 * **Nenhuma cor literal**: fundo, texto, borda, o realce dos tres `Tipo` e o dark mode
 * saem de `--bs-primary-rgb`, `--bs-danger-rgb`, `--bs-success-rgb`, `--bs-body-bg`,
 * `--bs-gray-*` e `--bs-border-color`, que o Metronic redefine no tema escuro. Mesmo
 * criterio de `alpha-lookup.css`, `alpha-loading.css`, `alpha-alertas.css` e
 * `alpha-dica.css`. Zero dependencia nova: e `<tr hidden>` mais um `<button>` por linha-pai.
 *
 * Ligado por `Views/Layout/Master.cshtml` em toda pagina, como os outros quatro.
 */

/* A janela de rolagem. So a grade rola; a pagina fica parada. */
.alpha-arvore-rolagem {
	overflow-x: auto;
	overflow-y: visible;
	width: 100%;
}

.alpha-arvore {
	--alpha-arvore-c1: 5.5rem;   /* Tipo     — `Width = 100` no `.dfm` */
	--alpha-arvore-c2: 8rem;     /* Código   — `Width = 100` */

	width: 100%;
	margin-bottom: 0;
	border-collapse: separate;
	border-spacing: 0;
}

.alpha-arvore > thead > tr > th,
.alpha-arvore > tbody > tr > td {
	padding: 0.4rem 0.75rem;
	border-bottom: 1px solid var(--bs-border-color);
	white-space: nowrap;
	vertical-align: middle;
}

.alpha-arvore > thead > tr > th {
	background-color: var(--bs-body-bg);
	font-weight: 600;
	color: var(--bs-gray-700);
}

/* O fundo padrao da linha — a conta do plano e a linha de `%`, que o legado nao pinta.
   Fica **antes** das tres classes de `Tipo`, que o vencem por especificidade. */
.alpha-arvore > tbody > tr {
	background-color: var(--bs-body-bg);
}

.alpha-arvore .alpha-arvore-valor {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

/* Linha escondida: o no fechado. O `!important` protege do `display` que o tema poe em
   `.table > tbody > tr`. */
.alpha-arvore > tbody > tr[hidden] {
	display: none !important;
}

/*
 * As tres primeiras colunas ficam **fixas a esquerda** — sem isso, nos dois relatorios
 * anuais (`Tipo`, `Código`, `Descrição` + os doze meses) a linha sai do campo de visao no
 * meio da rolagem e nao se sabe mais qual conta se esta lendo.
 *
 * O fundo e `inherit`: a celula herda a cor que o `Tipo` deu ao `<tr>`, senao o conteudo
 * rolaria por baixo dela.
 */
.alpha-arvore > thead > tr > th:nth-child(-n + 3),
.alpha-arvore > tbody > tr > td:nth-child(-n + 3) {
	position: sticky;
	background-color: inherit;
	background-clip: padding-box;
	z-index: 1;
}

.alpha-arvore > thead > tr > th:nth-child(-n + 3) {
	z-index: 3;
}

.alpha-arvore > thead > tr > th:nth-child(1),
.alpha-arvore > tbody > tr > td:nth-child(1) {
	left: 0;
	min-width: var(--alpha-arvore-c1);
}

.alpha-arvore > thead > tr > th:nth-child(2),
.alpha-arvore > tbody > tr > td:nth-child(2) {
	left: var(--alpha-arvore-c1);
	min-width: var(--alpha-arvore-c2);
}

.alpha-arvore > thead > tr > th:nth-child(3),
.alpha-arvore > tbody > tr > td:nth-child(3) {
	left: calc(var(--alpha-arvore-c1) + var(--alpha-arvore-c2));
	min-width: 18rem;
	white-space: normal;
	border-inline-end: 1px solid var(--bs-border-color);
}

/*
 * O `+` / `−` do no. No `cxDBTreeList` ele fica **antes** da primeira coluna; aqui, no
 * comeco da propria celula de `Tipo`, que e a primeira.
 */
.alpha-arvore-botao {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.15rem;
	height: 1.15rem;
	margin-inline-end: 0.4rem;
	padding: 0;
	border: 1px solid var(--bs-border-color);
	border-radius: 0.2rem;
	background-color: var(--bs-body-bg);
	color: var(--bs-gray-700);
	font-size: 0.8rem;
	line-height: 1;
	cursor: pointer;
}

.alpha-arvore-botao:hover {
	border-color: var(--bs-primary);
	color: var(--bs-primary);
}

/* O espaco do botao na linha que nao tem filho — `Tipo = '='` e todo DRE sem conta ligada. */
.alpha-arvore-sem-filho {
	display: inline-block;
	width: 1.15rem;
	margin-inline-end: 0.4rem;
}

/* A conta do plano: nivel 2, recuada, e sem `Tipo` (o legado grava `''`). */
.alpha-arvore-filha > td:nth-child(1) {
	padding-inline-start: 2.3rem;
}

.alpha-arvore-filha > td:nth-child(3) {
	color: var(--bs-gray-700);
}

/*
 * As cores de `cxDBTreeList1CustomDrawDataCell` (`uDlgRelatorioDRE.pas:232-242`), que le
 * a coluna `Tipo` e pinta a linha inteira:
 *
 *     '+'  ->  14982788  = #849EE4  // Azul
 *     '-'  ->   8689404  = #FC9684  // Vermelho
 *     '='  ->   6610596  = #A4DE64  // Verde
 *
 * Os tres literais do Delphi sao pasteis de tema claro e ficariam ilegiveis no dark mode
 * do Metronic, entao o que se preserva e o **papel** de cada um — azul, vermelho, verde —,
 * escrito nos tokens do tema. `%` nao tem cor no legado, e continua sem.
 */
.alpha-arvore > tbody > tr.alpha-arvore-tipo-mais {
	background-color: rgba(var(--bs-primary-rgb), 0.12);
}

.alpha-arvore > tbody > tr.alpha-arvore-tipo-menos {
	background-color: rgba(var(--bs-danger-rgb), 0.12);
}

.alpha-arvore > tbody > tr.alpha-arvore-tipo-igual {
	background-color: rgba(var(--bs-success-rgb), 0.12);
}

.alpha-arvore-vazia {
	padding: 1.25rem 0.75rem;
	color: var(--bs-gray-600);
}
