﻿


/*DEfinifição da Fonte*/
/* IMPORTAR A FONTE AKSHAR */
/*@import url('https://fonts.googleapis.com/css2?family=Akshar:wght@300;400;500;600;700&display=swap');*/

/* APLICAR A TODOS OS ELEMENTOS */
/** {
    font-family: 'Akshar', sans-serif !important;
}*/

/* GARANTIR EM ELEMENTOS ESPECÍFICOS */
/*body, html, #app, .app-container,
button, input, select, textarea, label,
table, div, span, p, h1, h2, h3, h4, h5, h6 {
    font-family: 'Akshar', sans-serif !important;
}*/

/* COMPONENTES BLAZOR */
/*::deep * {
    font-family: inherit !important;
}*/

/* COMPONENTES BLAZORISE ESPECÍFICOS */
/*.b-component,
.blazorise-component,
.b-btn,
.b-form-control,
.b-select,
.b-modal,
.b-data-grid,
.b-table,
.b-card,
.b-input,
.b-textarea,
.b-label,
.b-check,
.b-radio {
    font-family: 'Akshar', sans-serif !important;
}*/

/*DEfinifição da Fonte*/



/* IMPORTAR A FONTE AKSHAR */
@import url('https://fonts.googleapis.com/css2?family=Akshar:wght@300;400;500;600;700&display=swap');
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');

/* Manter Akshar apenas no texto */
body, html, #app, .app-container,
input, select, textarea, label,
table, div, span, p, h1, h2, h3, h4, h5, h6 {
    font-family: 'Akshar', sans-serif;
}

/* Corrigir FontAwesome */
.fas, .far, .fa, [class^="fa-"], [class*=" fa-"] {
    font-family: "Font Awesome 5 Free" !important;
}

/* Corrigir Bootstrap Icons */
.bi, [class^="bi-"], [class*=" bi-"] {
    font-family: "Bootstrap Icons" !important;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
}
.oi, [class^="oi-"], [class*=" oi-"] {
    font-family: "Icons" !important; /* esse só funciona se o open-iconic realmente registrar "Icons" como fonte */
}


dex: 11000 !important;
    }


/* APLICAR A FON
    TE APENAS A ELEMENTOS DE TEXTO, NÃO A TODOS */
/*body, html, #app, .app-container,
input, select, textarea, label,
table, div, span, p, h1, h2, h3, h4, h5, h6 {
    font-family: 'Akshar', sans-serif;
}*/

/* PRESERVAR OS ÍCONES - EXCEÇÃO PARA ELEMENTOS COM CLASSES DE ÍCONE */
    /*.oi, [class^="oi-"], [class*=" oi-"],
    .fas, .far, .fa, [class^="fa-"], [class*=" fa-"], button .oi, button [class^="oi-"], button [class*=" oi-"] {
        font-family: 'Icons' !important;*/ /* Ou a fonte dos ícones */
    /*}*/

/* Garantir que os ícones dentro de botões sejam preservados */
/*button .oi, button [class^="oi-"], button [class*=" oi-"] {
    font-family: 'Icons' !important;
}*/


/* PRESERVAR OS ÍCONES DO BLazorise - Bootstrap Icons */
/*.bi, [class^="bi-"], [class*=" bi-"] {
    font-family: 'Bootstrap Icons' !important;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
}*/

/* Garantir que os ícones dentro de botões sejam preservados */
/*button .bi, button [class^="bi-"], button [class*=" bi-"],
.btn .bi, .btn [class^="bi-"], .btn [class*=" bi-"] {
    font-family: 'Bootstrap Icons' !important;
}*/




/* COMPONENTES BLAZOR - SEM !important */
/*::deep * {
    font-family: inherit;
}*/



h1:focus {
    outline: none;
}

ul {
    list-style: none;
    padding-left: 0;
}

li {
    list-style-type: none;
    padding-left: 0;
}

a, .btn-link {
    color: #0071c1;
}

.btn-primary {
    color: #fff;
    background-color: #1b6ec2;
    border-color: #1861ac;
}

.content {
    padding-top: 1.1rem;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid red;
}

.validation-message {
    color: red;
}

#blazor-error-ui {
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.loading {
    background: #E9E9E9;
}

.cabecalho {
    color: red;
    /* Subtítulos - 16px */
    font-family: Akshar;
    font-size: 20px;
    font-style: normal;
    font-weight: 400;
    line-height: 100%; /* 24.958px */
    background-color: red;
}





/* MODAL LARGO - RECOMENDADO */
.custom-wide-modal .modal-dialog {
    max-width: 1400px !important;
    width: 1400px !important;
    margin-left: auto;
    margin-right: auto;
}

.custom-wide-modal .modal-content {
    width: 100% !important;
}

/* Ajuste para o grid interno */
.custom-wide-modal .b-datagrid {
    width: 100% !important;
    height: 100% !important;
}

.custom-wide-modal .modal-body {
    max-height: 70vh;
    overflow-y: auto;
}

/* Para telas menores */
@media (max-width: 1600px) {
    .custom-wide-modal .modal-dialog {
        max-width: 95vw !important;
        width: 95vw !important;
    }
}

@media (max-width: 1200px) {
    .custom-wide-modal .modal-dialog {
        max-width: 98vw !important;
        width: 98vw !important;
        margin: 0 auto;
    }
}




.perfil-linha {
    display: flex;
    flex-direction: row; /* 🔹 força o alinhamento horizontal */
    align-items: center;
    gap: 16px;
    /*background: #0E3248;*/
    color: black;
    padding: 5px 5px;
    border-radius: 12px;
    width: 100%; /* ocupa toda a largura */
    flex-wrap: nowrap; /* 🔹 impede que quebre linha */
    /*background-color: blueviolet;*/
    /*border-style:solid;*/
}

.perfil-foto {
    flex-shrink: 0; /* 🔹 impede a imagem de encolher */
    display: flex;
    align-items: center;
    justify-content: center;
    /*background-color: greenyellow;*/
    /*border-style: solid;*/
}

.perfil-info {
    display: flex;
    flex-direction: column;
    gap: 10px;
    flex: 1; /* 🔹 faz ocupar o espaço restante à direita */
    /*background-color:indianred;*/
    width: 100%;
    /*border-style: solid;*/
    align-items: center;
}

.perfil-nome {
    font-size: 1.1rem;
    font-weight: bold;
    color: black;
}

.textoCargo p {
    margin: 2px;
    line-height: 1.2;
    font-size: 0.9rem;
    color: var(--cores-pades-secundary-light, #FDFDFD);
    gap: 10px;
}

/* ===== Visual "clean" das telas de Cadastro ===== */
.cad-limpo {
    max-width: 1200px;
    margin: 0 auto;
    padding: 16px 12px 32px;
}

.cad-limpo .cad-titulo {
    color: #671929;
    font-weight: 600;
    margin-bottom: 4px;
}

.cad-limpo .cad-sub {
    color: #6c757d;
    margin-bottom: 20px;
}

.cad-limpo .table {
    background: #fff;
    margin-bottom: 0;
}

.cad-limpo .table > thead > tr > th {
    border-top: none;
    border-bottom: 2px solid #dee2e6;
    background: #fff;
    color: #495057;
    font-weight: 600;
    padding: 10px 8px;
    vertical-align: middle;
}

.cad-limpo .table > tbody > tr > td {
    border-top: none;
    border-bottom: 1px solid #eee;
    background: #fff !important;
    padding: 9px 8px;
    vertical-align: middle;
}

.cad-limpo .table > tbody > tr:hover > td {
    background: #faf7f8 !important;
}


/* ===== Medição Física: grade larga com rolagem interna =====
   A grade tem 31+ colunas (5 base + 2 de resumo + 4 por mês) e centenas de
   linhas. Sem altura limitada, a barra de rolagem horizontal fica no rodapé das
   480 linhas: as colunas de mês existem, mas ficam inalcançáveis sem rolar a
   página inteira até o fim. Limitando a altura, as duas barras ficam sempre
   visíveis e o cabeçalho acompanha a rolagem vertical.

   Camadas de z-index (importa porque há colunas fixas nos dois eixos):
     5  cabeçalho + coluna fixa (o "canto", fixo nos dois eixos)
     4  cabeçalho comum
     3  corpo + coluna fixa
     1  corpo comum                                                          */
.medicao-grid {
    max-height: calc(100vh - 330px);
    min-height: 300px;
    overflow: auto;
    border: 1px solid #eee;
    border-radius: 8px;
    position: relative;
}

.medicao-grid table {
    margin: 0;
    font-size: 13px;
    white-space: nowrap;
    background: #fff;
    border-collapse: separate;   /* separate: sticky nao "vaza" as bordas */
    border-spacing: 0;
}

.medicao-grid td,
.medicao-grid th { background: #fff; }

/* Numéricos alinhados à direita. Classe em vez de style inline porque são ~30
   células por linha. */
.medicao-grid .num { text-align: right; }

/* --- cabeçalho fixo no topo (duas linhas) ---
   As alturas são explícitas de propósito: o deslocamento da segunda linha
   (top) tem que casar com a altura da primeira, e deixar isso ao conteúdo
   tornaria o alinhamento imprevisível. */
.medicao-grid thead th {
    position: sticky;
    z-index: 4;
    color: #495057;
    font-weight: 600;
    padding: 6px 8px;
    vertical-align: middle;
    border-bottom: 1px solid #e4e4e4;
}

.medicao-grid thead tr:first-child th  { top: 0;    height: 40px; }
.medicao-grid thead tr:nth-child(2) th { top: 40px; height: 28px; font-weight: 500; }

/* rótulo do mês centralizado sobre suas 4 colunas */
.medicao-grid .mes-titulo {
    text-align: center;
    border-bottom: 1px solid #e4e4e4;
}

/* --- colunas Item e Descrição fixas à esquerda ---
   A largura do Item é travada em 70px porque é exatamente o deslocamento
   (left) da coluna de Descrição. Se o Item crescer, a Descrição passa a
   cobri-lo ao rolar na horizontal. */
.medicao-grid .col-item {
    position: sticky;
    left: 0;
    z-index: 3;
    width: 70px;
    min-width: 70px;
    max-width: 70px;
}

.medicao-grid .col-desc {
    position: sticky;
    left: 70px;
    z-index: 3;
    width: 380px;
    min-width: 380px;
    max-width: 380px;
}

/* Descrição truncada com reticências.
   Sem isso a grade quebra: com white-space:nowrap, a descrição de 1.123
   caracteres do item de paisagismo (22.3.1 — uma lista de mudas) estica a
   célula numa linha única e empurra todas as demais colunas para fora da tela.
   Era o motivo de só Item e Descrição aparecerem.
   O truncamento é visual — o texto inteiro fica no title, ao passar o mouse. */
.medicao-grid .desc-texto {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.medicao-grid thead .col-item,
.medicao-grid thead .col-desc { z-index: 5; }

.medicao-grid tbody tr.linha-pai { font-weight: 600; }

.medicao-grid tbody td { border-bottom: 1px solid #f0f0f0; padding: 6px 8px; }

/* --- linhas verticais separando os meses ---
   A borda vai na primeira coluna de cada bloco de mês, em todas as faixas da
   tabela (cabeçalho, corpo e total), para a divisão atravessar a grade inteira. */
.medicao-grid .mes-inicio { border-left: 2px solid #d0d0d0; }

/* Também à esquerda do primeiro bloco de mês, separando-o das colunas fixas. */
.medicao-grid .col-resumo { border-right: 2px solid #d0d0d0; }

/* R$ derivado do percentual: cinza para não competir com o dado digitado. */
.medicao-grid .valor-derivado { color: #777; }

/* campo de digitação de percentual */
.medicao-grid .campo-pct {
    width: 78px;
    text-align: right;
    display: inline-block;
    padding: 2px 6px;
    height: 26px;
}

/* Linha TOTAL fixa no rodapé da grade: com centenas de itens, o total é o que
   mais se quer olhar e seria o primeiro a sair da tela. Fundo branco como o
   resto da tabela; o que a destaca é o peso da fonte e a borda superior. */
.medicao-grid tfoot td {
    position: sticky;
    bottom: 0;
    background: #fff;
    z-index: 4;
    font-weight: 700;
    border-top: 2px solid #adadad;
    padding: 8px;
}

.medicao-grid tfoot .col-item,
.medicao-grid tfoot .col-desc { z-index: 5; }


/* --- Previsto x Real (Caixa/Aditivo) ---
   Mesmo padrao visual do medicao-grid: fundo branco, cabecalho fixo (2
   linhas) e colunas fixas a esquerda -- aqui ate o Orcamento Base (R$ e
   INCC), pedido explicito, entao 3 colunas sticky em vez de 2. */
.previsto-real-grid {
    max-height: calc(100vh - 330px);
    min-height: 300px;
    overflow: auto;
    border: 1px solid #eee;
    border-radius: 8px;
    position: relative;
}

.previsto-real-grid table {
    margin: 0;
    font-size: 13px;
    white-space: nowrap;
    background: #fff;
    border-collapse: separate;
    border-spacing: 0;
}

.previsto-real-grid td,
.previsto-real-grid th {
    background: #fff;
    text-align: center;
}

.previsto-real-grid .num { text-align: center; }

.previsto-real-grid thead th {
    position: sticky;
    z-index: 4;
    color: #495057;
    font-weight: 600;
    text-align: center;
    padding: 6px 8px;
    vertical-align: middle;
    border-bottom: 1px solid #e4e4e4;
}

.previsto-real-grid thead tr:first-child th  { top: 0;    height: 40px; }
.previsto-real-grid thead tr:nth-child(2) th { top: 40px; height: 28px; font-weight: 500; }

.previsto-real-grid .mes-titulo {
    text-align: center;
    border-bottom: 1px solid #e4e4e4;
}

/* Categoria + Orcamento Base (R$/INCC): 3 colunas fixas a esquerda. As
   larguras sao explicitas de proposito -- o left de cada uma e o acumulado
   das anteriores, exatamente como no medicao-grid. */
.previsto-real-grid .col-categoria {
    position: sticky;
    left: 0;
    z-index: 3;
    width: 320px;
    min-width: 320px;
    max-width: 320px;
}

.previsto-real-grid .col-orcbase-rs {
    position: sticky;
    left: 320px;
    z-index: 3;
    width: 120px;
    min-width: 120px;
    max-width: 120px;
    border-right: none;
}

.previsto-real-grid .col-orcbase-incc {
    position: sticky;
    left: 440px;
    z-index: 3;
    width: 110px;
    min-width: 110px;
    max-width: 110px;
    border-right: 2px solid #d0d0d0;
}

.previsto-real-grid .desc-texto {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.previsto-real-grid thead .col-categoria,
.previsto-real-grid thead .col-orcbase-rs,
.previsto-real-grid thead .col-orcbase-incc { z-index: 5; }

.previsto-real-grid tbody td { border-bottom: 1px solid #f0f0f0; padding: 6px 8px; }

/* Linha vertical separando cada bloco de mes/resumo (mesmo criterio do
   medicao-grid: sempre na 1a coluna do bloco, em todas as faixas). */
.previsto-real-grid .mes-inicio { border-left: 2px solid #d0d0d0; }

.previsto-real-grid tfoot td {
    position: sticky;
    bottom: 0;
    background: #fff;
    z-index: 4;
    font-weight: 700;
    border-top: 2px solid #adadad;
    padding: 8px;
}

.previsto-real-grid tfoot .col-categoria,
.previsto-real-grid tfoot .col-orcbase-rs,
.previsto-real-grid tfoot .col-orcbase-incc { z-index: 5; }


/* --- Grade genérica (Atualização Orçamentária, Taxa, Aditivos,
   Incorrido/Comprometido) --- mesmo padrão visual das grades acima
   (fundo branco, cabeçalho fixo, total congelado no rodapé), mas sem
   coluna fixa à esquerda: essas telas têm poucas colunas e cabem na
   largura da tela sem precisar congelar nenhuma. */
.grid-tabela {
    max-height: calc(100vh - 330px);
    min-height: 200px;
    overflow: auto;
    border: 1px solid #eee;
    border-radius: 8px;
    position: relative;
}

.grid-tabela table {
    margin: 0;
    font-size: 13px;
    background: #fff;
    border-collapse: separate;
    border-spacing: 0;
}

/* Tudo centralizado (titulos e valores), pedido explicito -- inclusive as
   colunas numericas, que por padrao iriam alinhadas a direita. */
.grid-tabela td,
.grid-tabela th {
    background: #fff;
    text-align: center;
}

.grid-tabela .num { text-align: center; }
.grid-tabela .nowrap { white-space: nowrap; }

.grid-tabela thead th {
    position: sticky;
    z-index: 4;
    color: #495057;
    font-weight: 600;
    text-align: center;
    padding: 6px 8px;
    vertical-align: middle;
    border-bottom: 1px solid #e4e4e4;
}

/* cabeçalho de 2 linhas (título mesclado em cima, R$/INCC embaixo) */
.grid-tabela thead tr:first-child th  { top: 0;    height: 36px; }
.grid-tabela thead tr:nth-child(2) th { top: 36px; height: 26px; font-weight: 500; }

.grid-tabela .mes-titulo { text-align: center; border-bottom: 1px solid #e4e4e4; }

.grid-tabela tbody td { border-bottom: 1px solid #f0f0f0; padding: 6px 8px; }

/* Linha TOTAL fixa no rodapé (mesmo critério do medicao-grid). */
.grid-tabela tfoot td,
.grid-tabela tfoot th {
    position: sticky;
    bottom: 0;
    background: #fff;
    z-index: 4;
    font-weight: 700;
    border-top: 2px solid #adadad;
    padding: 8px;
}


/* --- Evolução Física / Financeira ---
   Mesmo padrão das demais grades, com 3 colunas fixas à esquerda (Cód.,
   Etapa e a coluna-base: % Total na física, Orçamento na financeira).
   As larguras são explícitas porque o "left" de cada coluna fixa é o
   acumulado das anteriores -- mesmo critério do medicao-grid.

   O rodapé aqui tem 6 linhas (total, mensal/acumulado previsto e
   realizado, IDP mensal e acumulado), então NÃO é sticky: fixar tudo
   comeria metade da altura útil da grade. Só o cabeçalho acompanha. */
.evolucao-grid {
    max-height: calc(100vh - 330px);
    min-height: 300px;
    overflow: auto;
    border: 1px solid #eee;
    border-radius: 8px;
    position: relative;
}

.evolucao-grid table {
    margin: 0;
    font-size: 13px;
    white-space: nowrap;
    background: #fff;
    border-collapse: separate;
    border-spacing: 0;
}

.evolucao-grid td,
.evolucao-grid th {
    background: #fff;
    text-align: center;
}

.evolucao-grid .num { text-align: center; }

.evolucao-grid thead th {
    position: sticky;
    z-index: 4;
    color: #495057;
    font-weight: 600;
    padding: 6px 8px;
    vertical-align: middle;
    border-bottom: 1px solid #e4e4e4;
}

.evolucao-grid thead tr:first-child th  { top: 0;    height: 40px; }
.evolucao-grid thead tr:nth-child(2) th { top: 40px; height: 28px; font-weight: 500; }

.evolucao-grid .mes-titulo { text-align: center; border-bottom: 1px solid #e4e4e4; }

.evolucao-grid .col-cod {
    position: sticky;
    left: 0;
    z-index: 3;
    width: 60px;
    min-width: 60px;
    max-width: 60px;
}

.evolucao-grid .col-etapa {
    position: sticky;
    left: 60px;
    z-index: 3;
    width: 300px;
    min-width: 300px;
    max-width: 300px;
    text-align: left;
}

.evolucao-grid .col-base {
    position: sticky;
    left: 360px;
    z-index: 3;
    width: 130px;
    min-width: 130px;
    max-width: 130px;
    border-right: 2px solid #d0d0d0;
}

/* Só existe na financeira (4a coluna fixa: Orçamento em INCC). Sobrepõe o
   border-right do col-base (mesma posição) quando as duas aparecem juntas. */
.evolucao-grid .col-base-incc {
    position: sticky;
    left: 490px;
    z-index: 3;
    width: 110px;
    min-width: 110px;
    max-width: 110px;
    border-right: 2px solid #d0d0d0;
}

.evolucao-grid thead .col-cod,
.evolucao-grid thead .col-etapa,
.evolucao-grid thead .col-base,
.evolucao-grid thead .col-base-incc { z-index: 5; }

/* Nome da etapa truncado com reticências (texto completo no title) --
   sem isso uma descrição longa estica a coluna e empurra os meses. */
.evolucao-grid .desc-texto {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.evolucao-grid tbody td { border-bottom: 1px solid #f0f0f0; padding: 6px 8px; }

.evolucao-grid .mes-inicio { border-left: 2px solid #d0d0d0; }

.evolucao-grid tfoot td { padding: 6px 8px; }
.evolucao-grid tfoot .linha-total td { font-weight: 700; border-top: 2px solid #adadad; }


