/* ============================================================================
   laben.css — folha de estilo do sistema (AEM/MS)

   POR QUE ESTE ARQUIVO EXISTE
   As telas nasceram com a paleta escrita a mao, cor por cor, dentro do HTML:
   eram 2.259 ocorrencias de style= em 108 views (medido em 07/08/2026), e o
   numero CRESCIA a cada tela nova, porque nao havia onde reaproveitar. O
   custom_Evandro.css tinha 10 linhas e so cuidava de modal.

   COMO USAR
   1. Cor nova NUNCA entra como hex no HTML. Entra como token aqui embaixo.
   2. Padrao que se repete em 2+ telas vira classe .lbn-*.
   3. O prefixo lbn- existe para nao colidir com Bootstrap 2 nem com o Ace.

   ⚠️ IDENTIDADE POR ORGAO — NAO COPIAR ESTE ARQUIVO PARA O MT
   O bloco de tokens institucionais do MS (azul da AEM + verde do Governo de MS)
   e DIFERENTE do MT (marinho do IPEM) de proposito: e o que deixa obvio, de
   relance, em qual dos dois sistemas se esta. Ao portar para o MT, copie a
   ESTRUTURA e os nomes das variaveis, e troque so os valores do bloco
   "institucional". Os tokens semanticos (sucesso/erro/alerta) sao os mesmos nos
   dois -- verde e aprovado nos dois estados.

   Variaveis CSS sao suportadas por todos os navegadores em uso aqui; o
   cabecalho ja usa flexbox e linear-gradient desde 06/08/2026.
   ============================================================================ */

:root {
    /* --- Institucional AEM/MS -------------------------------------------
       Lidas do proprio site do orgao (www.aem.ms.gov.br). Antes o sistema
       usava #2C3E50, herdado do template Ace (2013), sem relacao com a AEM. */
    --lbn-marca: #004f9e;
    --lbn-marca-escura: #00386a;
    --lbn-marca-acento: #009c3d; /* verde da regua do Governo de MS */
    --lbn-marca-clara: #eaf2fb;
    --lbn-marca-clara-hover: #d9e8f8;
    --lbn-marca-suave: #f3f8fd;
    --lbn-marca-borda: #d5e3f4;

    /* --- Semanticas -------------------------------------------------------
       Sao as cores que o laboratorio ja associa a um significado. Os valores
       vieram do censo do proprio codigo: #27ae60 aparecia 102x, #c0392b 87x. */
    --lbn-sucesso: #27ae60;
    --lbn-sucesso-escuro: #1a8a40;
    --lbn-sucesso-bg: #eafaf1;
    --lbn-sucesso-borda: #a9dfbf;

    --lbn-erro: #e74c3c;
    --lbn-erro-escuro: #c0392b;
    --lbn-erro-critico: #cb4335;
    --lbn-erro-bg: #fdedec;
    --lbn-erro-borda: #f5b7b1;

    --lbn-alerta: #e67e22;
    --lbn-alerta-escuro: #d68910;
    --lbn-alerta-bg: #fef9e7;
    --lbn-alerta-borda: #f9e79f;

    --lbn-info: #2980b9;
    --lbn-info-claro: #3498db;
    --lbn-info-bg: #eaf4fb;

    --lbn-destaque: #8e44ad; /* roxo -- usado em relatorios e destaques */
    --lbn-atencao: #f39c12;

    /* --- Neutras ---------------------------------------------------------- */
    --lbn-tinta: #2c3e50; /* titulo forte */
    --lbn-tinta-2: #34495e; /* corpo de texto */
    --lbn-tinta-3: #555;
    --lbn-neutro: #95a5a6;
    --lbn-neutro-escuro: #7f8c8d;
    --lbn-neutro-claro: #b0b8c1;
    --lbn-apagado: #aaa; /* metadado, data, "carregando..." */

    --lbn-fundo: #f4f4f4;
    --lbn-superficie: #fff;
    --lbn-superficie-2: #fafafa;
    --lbn-superficie-3: #f8f9fa;
    --lbn-linha: #e9ecef;
    --lbn-linha-2: #ddd;
    --lbn-linha-3: #eee;
    --lbn-linha-tracejada: #e0e0e0;

    /* --- Forma ------------------------------------------------------------ */
    --lbn-raio: 8px;
    --lbn-raio-p: 4px;
    --lbn-raio-pilula: 99px;
    --lbn-sombra: 0 1px 4px rgba(0,0,0,.07);
    --lbn-sombra-alta: 0 4px 12px rgba(0,0,0,.15);
}

/* ============================================================================
   1. IDENTIDADE — cabecalho e menu lateral
   Estava num bloco <style> dentro do <body> do _Layout desde 06/08/2026.
   Sai de la para nao ser reprocessado a cada request e para poder ser cacheado.
   Os !important sao necessarios: o ace.min.css e carregado depois e e agressivo.
   ============================================================================ */

body {
    background: var(--lbn-fundo) !important;
}

.navbar-inverse {
    background: linear-gradient(180deg, var(--lbn-marca) 0%, var(--lbn-marca-escura) 100%) !important;
    border: none;
    border-bottom: 3px solid var(--lbn-marca-acento) !important;
}

.navbar .navbar-inner {
    border: none;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}

/* Cabecalho em flexbox. Antes as midias sociais usavam position:absolute;
   right:240px -- numero magico que assumia a largura do nome do usuario e
   colidia no celular. */
.navbar .navbar-inner .container-fluid {
    display: flex;
    align-items: center;
    gap: 14px;
    position: relative;
}

.cab-marca {
    display: flex !important;
    align-items: baseline;
    gap: 10px;
    color: #fff !important;
    text-decoration: none !important;
    float: none !important;
    padding: 0 !important;
    margin: 0 !important;
    text-shadow: none !important;
}

.cab-sigla {
    font-size: 19px;
    font-weight: 800;
    letter-spacing: .01em;
    line-height: 1.2;
}

.cab-nome {
    font-size: 12.5px;
    font-weight: 400;
    color: rgba(255,255,255,.70);
    white-space: nowrap;
}

.cab-ambiente {
    font-size: 10.5px;
    font-weight: 700;
    background: #f1c40f;
    color: #4d3c00;
    padding: 2px 9px;
    border-radius: var(--lbn-raio-pilula);
    letter-spacing: .03em;
    white-space: nowrap;
}

.navbar .ace-nav {
    margin-left: auto !important;
    float: none !important;
    display: flex;
    align-items: center;
    margin-right: 10px;
}

.cab-avatar {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .02em;
}

@media (max-width: 767px) {
    .cab-nome {
        display: none;
    }
}

/* Menu lateral na mesma paleta. Os estilos vem do ace.min.css, entao sao
   sobrepostos aqui. box-shadow inset no lugar de border-left para nao deslocar
   o texto do item. */
#sidebar .nav-list > li.active > a,
#sidebar .nav-list > li.active > a:hover,
#sidebar .nav-list > li.active > a:focus {
    color: var(--lbn-marca-escura) !important;
    background-color: var(--lbn-marca-clara) !important;
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--lbn-marca);
}

#sidebar .nav-list > li.active > a > .menu-icon {
    color: var(--lbn-marca) !important;
}

#sidebar .nav-list > li.active:after {
    border-right-color: var(--lbn-marca) !important;
}

#sidebar .nav-list > li > a:hover {
    background-color: var(--lbn-marca-suave) !important;
}

#sidebar .nav-list > li.open > a {
    color: var(--lbn-marca-escura) !important;
}

/* O controle de encolher era uma faixa fina e sem contraste. Vira botao
   evidente. ⚠️ O icone estava como "fa fa-angle-double-left" (Font Awesome 4)
   num sistema que carrega o FA3, cujo prefixo e "icon-": o glifo nao existia e
   o controle renderizava VAZIO. */
#sidebar-collapse {
    background: var(--lbn-marca-clara) !important;
    border-top: 1px solid var(--lbn-marca-borda) !important;
    padding: 8px 0 !important;
    text-align: center;
    cursor: pointer;
    transition: background .15s ease;
}

    #sidebar-collapse:hover {
        background: var(--lbn-marca-clara-hover) !important;
    }

    #sidebar-collapse > i {
        color: var(--lbn-marca-escura) !important;
        font-size: 17px !important;
        background: none !important;
        border: none !important;
        box-shadow: none !important;
        opacity: 1 !important;
    }

/* ============================================================================
   2. SINO DE NOTIFICACOES
   ============================================================================ */

.lbn-sino-li {
    position: relative;
}

.lbn-sino-ico {
    color: #fff;
    font-size: 17px;
    vertical-align: middle;
}

.lbn-sino-badge {
    display: none;
    position: absolute;
    top: 4px;
    right: 2px;
    background: var(--lbn-erro);
    color: #fff;
    border-radius: 9px;
    font-size: 10px;
    min-width: 16px;
    height: 16px;
    line-height: 16px;
    text-align: center;
    padding: 0 3px;
    font-weight: bold;
}

.lbn-notif-menu {
    width: 390px;
    padding: 0;
    max-height: 480px;
    overflow-y: auto;
    border: 1px solid var(--lbn-linha-2);
    box-shadow: var(--lbn-sombra-alta);
}

.lbn-notif-cabecalho {
    background: var(--lbn-superficie-3);
    padding: 9px 14px;
    border-radius: var(--lbn-raio-p) var(--lbn-raio-p) 0 0;
    border-bottom: 1px solid var(--lbn-linha);
    list-style: none;
}

.lbn-notif-titulo {
    color: #333;
    font-weight: 700;
    font-size: 13px;
}

    .lbn-notif-titulo > i {
        color: var(--lbn-alerta);
        margin-right: 5px;
    }

.lbn-notif-marcar {
    float: right;
    color: var(--lbn-info);
    font-size: 11px;
    margin-top: 2px;
    text-decoration: none;
}

.lbn-notif-corpo {
    list-style: none;
}

/* Estado vazio / carregando — tambem gerado pelo JS do sino. */
.lbn-notif-aviso {
    padding: 18px;
    text-align: center;
    color: var(--lbn-apagado);
    font-size: 12px;
}

/* O item e montado pelo JS: a cor da borda e o fundo de "nao lida" mudam por
   item, entao continuam inline. Todo o resto e classe. */
.lbn-notif-item {
    padding: 9px 14px;
    border-bottom: 1px solid var(--lbn-linha-3);
    border-left: 3px solid var(--lbn-neutro);
    cursor: pointer;
}

.lbn-notif-item-titulo {
    font-size: 12px;
}

.lbn-notif-item-data {
    float: right;
    font-size: 10px;
    color: var(--lbn-apagado);
}

.lbn-notif-item-resumo {
    font-size: 11px;
    color: #666;
    margin-top: 3px;
}

.lbn-notif-nao-lida {
    font-weight: bold;
}

/* ============================================================================
   3. MODAL DE DETALHE DA NOTIFICACAO
   ============================================================================ */

.lbn-modal-notif {
    top: 3%;
    width: 94%;
    max-width: 580px;
    margin: 0 auto;
}

.lbn-modal-cabecalho {
    background: var(--lbn-superficie);
    border-bottom: 2px solid #f1f3f7;
    padding: 16px 20px;
    border-radius: var(--lbn-raio-p) var(--lbn-raio-p) 0 0;
}

.lbn-modal-fechar {
    color: var(--lbn-apagado);
    font-size: 24px;
    opacity: .7;
    line-height: 1;
}

.lbn-modal-cabecalho-linha {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding-right: 30px;
}

.lbn-modal-icone-wrap {
    width: 46px;
    height: 46px;
    border-radius: 11px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: var(--lbn-info-bg);
}

.lbn-modal-icone {
    font-size: 20px;
    color: var(--lbn-info-claro);
}

.lbn-modal-identificacao {
    flex: 1;
    min-width: 0;
}

.lbn-modal-titulo {
    margin: 0 0 4px 0;
    font-size: 15px;
    font-weight: 700;
    color: var(--lbn-tinta);
    line-height: 1.35;
    word-break: break-word;
}

.lbn-modal-data {
    color: var(--lbn-neutro);
    font-size: 11px;
}

.lbn-modal-corpo {
    max-height: 380px;
    overflow-y: auto;
    padding: 20px 22px;
    background: var(--lbn-superficie-2);
}

.lbn-modal-texto {
    font-size: 13.5px;
    line-height: 1.85;
    color: var(--lbn-tinta-2);
}

.lbn-modal-ia {
    display: none;
    margin-top: 14px;
    padding-top: 10px;
    border-top: 1px dashed var(--lbn-linha-tracejada);
    text-align: right;
}

    .lbn-modal-ia span {
        font-size: 11px;
        color: var(--lbn-neutro-claro);
    }

.lbn-modal-rodape {
    background: var(--lbn-superficie);
    border-top: 1px solid #f1f3f7;
    padding: 12px 20px;
    border-radius: 0 0 var(--lbn-raio-p) var(--lbn-raio-p);
}

.lbn-oculto {
    display: none;
}

/* ============================================================================
   4. MENU DO USUARIO
   Os icones sao cores de MARCA de servicos externos (Portal do Servidor, Diario
   Oficial, GSI, WhatsApp) -- por isso ficam fora dos tokens semanticos.
   ============================================================================ */

.lbn-menu-secao {
    padding: 6px 14px 2px;
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: #999;
    font-weight: 700;
}

/* Redes sociais no menu do usuário.
   🛑 POR QUE O SELETOR É LONGO: `.lbn-menu-social a` (0,1,1) PERDE para o
      `.dropdown-menu li > a` do Bootstrap (0,1,2), que impõe `display:block`. Resultado
      até 13/08/2026: os cinco ícones empilhados um embaixo do outro, sem rótulo, dentro
      do menu. O `display:inline-block` estava escrito e simplesmente não valia.
      ⚠️ Não baixar a especificidade "para ficar limpo" — o Bootstrap vence de novo. */
.lbn-menu-social {
    display: flex;
    gap: 2px;
    padding: 4px 12px 10px;
}

    .dropdown-menu .lbn-menu-social > a {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 30px;
        height: 30px;
        padding: 0;
        border-radius: 6px;
        color: var(--lbn-texto-suave, #7b8a99);
        transition: background-color .15s ease, color .15s ease;
    }

        /* ⚠️ O Bootstrap pinta o fundo do <a> do dropdown no hover com o azul de seleção e
           deixa o texto branco — num ícone de 30px isso vira um quadrado azul. Aqui o hover
           é discreto e a cor vai para a marca. */
        .dropdown-menu .lbn-menu-social > a:hover,
        .dropdown-menu .lbn-menu-social > a:focus {
            background: var(--lbn-fundo-suave, #eef2f6);
            color: var(--lbn-marca, #1b3483);
        }

        .lbn-menu-social > a > i { font-size: 15px; line-height: 1; }
        /* o SVG herda a cor do <a> por `fill: currentColor` no markup */
        .lbn-menu-social > a > svg { display: block; }

.lbn-ico-meus-dados { color: #f6ce52; }
.lbn-ico-gov { color: #1b3483; }
.lbn-ico-diario { color: #8b3dff; }
.lbn-ico-gsi { color: #b8d452; }
.lbn-ico-sair { color: var(--lbn-erro-escuro); }

.lbn-link-whats {
    color: #25d366;
}

.lbn-whats-icone {
    vertical-align: middle;
    display: inline-block;
}

.lbn-avatar-topo {
    color: #fff;
}

/* ============================================================================
   5. ESTRUTURA DE PAGINA — linhas, colunas e caixas
   Padroes que se repetiam escritos a mao em toda tela com widgets.
   ============================================================================ */

.lbn-linha {
    margin-top: 20px;
}

/* Duas colunas que precisam terminar na mesma altura. Antes: display:flex e
   align-items:stretch repetidos no row e flex-direction:column em cada span. */
.lbn-linha-igual {
    display: flex;
    align-items: stretch;
}

.lbn-col-flex {
    display: flex;
    flex-direction: column;
}

.lbn-box-cheio {
    flex: 1;
}

.lbn-clicavel {
    cursor: pointer;
}

/* Estados de carregamento / vazio dos widgets e modais. */
.lbn-carregando {
    text-align: center;
    padding: 30px;
    display: none;
}

.lbn-vazio {
    color: #888;
    padding: 16px;
}

/* Titulo de modal sobre cabecalho colorido. */
.lbn-modal-titulo-claro {
    color: #fff;
    margin: 0;
}

.lbn-modal-fechar-claro {
    color: #fff;
    opacity: 1;
}

/* --- Texto com significado -------------------------------------------------
   Sao as cinco cores que o laboratorio ja le como estado. Estavam escritas como
   hex em icone, celula de tabela, numero de painel e rotulo -- 647 ocorrencias
   so nas 15 telas de SQL/diagnostico.

   ⚠️ POR QUE !important AQUI (e so aqui)
   Estas classes substituem estilo INLINE, que vencia tudo. O ace.min.css tem
   regras de descendencia como ".widget-title i { color: ... }", cuja
   especificidade (0,0,1,1) e MAIOR que a de uma classe (0,0,1,0) -- sem o
   !important a cor mudaria em alguns lugares, que e exatamente o que esta
   refatoracao nao pode fazer. Sao classes de UMA propriedade so, entao o
   !important nao amarra mais nada.
   ⚠️ NAO fazer o mesmo em .lbn-oculto: o .show() do jQuery escreve display
   inline, e com !important na classe o elemento nunca mais apareceria. */
.lbn-txt-erro {
    color: var(--lbn-erro-escuro) !important;
}

.lbn-txt-erro-vivo {
    color: var(--lbn-erro) !important;
}

.lbn-txt-ok {
    color: var(--lbn-sucesso) !important;
}

.lbn-txt-info {
    color: var(--lbn-info) !important;
}

.lbn-txt-alerta {
    color: var(--lbn-alerta) !important;
}

.lbn-txt-claro {
    color: #fff !important;
}

/* Cinza de corpo de texto -- o mais usado depois das cores de estado. */
.lbn-txt-3 {
    color: var(--lbn-tinta-3) !important;
}

/* Legenda de apoio: o "explica o que este numero significa". */
.lbn-ajuda {
    font-size: 12px;
    color: #888;
}

.lbn-nota {
    font-size: 12px;
    color: var(--lbn-tinta-3);
}

/* Rotulo de formulario nas telas de diagnostico (variante mais escura que a
   .lbn-rotulo usada nos modais da Home). */
.lbn-rotulo-forte {
    font-size: 13px;
    font-weight: bold;
    color: #333;
}

.lbn-mini {
    font-size: 12px;
}

/* Subtitulo dentro de cabecalho colorido (titulo da tela de diagnostico). */
.lbn-sub-claro {
    color: rgba(255,255,255,.85);
    font-size: 12px;
    margin-left: 8px;
}

/* Rotulo pequeno acima de um campo/valor. */
.lbn-rotulo-mini {
    font-size: 11px;
    color: #666;
    display: block;
    margin-bottom: 3px;
}

.lbn-flex-centro {
    display: flex;
    align-items: center;
    gap: 16px;
}

/* Coluna que ocupa o espaco restante sem estourar o pai (min-width:0 e o que
   impede texto longo de empurrar o layout). */
.lbn-flex-cresce {
    flex: 1;
    min-width: 0;
}

/* --- Tabelas de diagnostico ------------------------------------------------ */
.lbn-th-medio {
    width: 130px;
    padding: 7px 10px;
}

.lbn-td {
    padding: 5px 10px;
}

/* ============================================================================
   8. COMPONENTES DE FORMULARIO E PAINEL
   Os padroes abaixo vieram do censo das 108 views: sao os que se repetiam 7x ou
   mais, escritos a mao em cada tela. Numero ao lado = quantas vezes aparecia.
   ============================================================================ */

/* Caixa/painel simples de conteudo (19x). */
.lbn-caixa {
    padding: 10px;
    border: 1px solid var(--lbn-linha-2);
    border-radius: var(--lbn-raio-p);
}

/* Modal largo -- o formato usado pelas telas de consulta e diagnostico (18x). */
.lbn-modal-largo {
    top: 1%;
    width: 90%;
    max-width: 1200px;
    margin: 0 auto;
}

/* Campo de formulario que ocupa a linha (8x). */
.lbn-campo {
    width: 100%;
    padding: 6px 10px;
    border: 1px solid #ccc;
    border-radius: var(--lbn-raio-p);
    font-size: 14px;
    box-sizing: border-box;
}

/* Etiqueta compacta (badge, contador, marcador de tipo) -- 24x nas duas
   grafias. */
.lbn-chip {
    font-size: 11px;
    padding: 4px 8px;
}

/* Observacao curta sob um campo (14x cada variante). */
.lbn-obs {
    font-size: 11px;
    margin-top: 5px;
}

.lbn-obs-bloco {
    font-size: 11px;
    margin-top: 5px;
    display: block;
}

/* Separador tracejado entre itens de uma lista compacta (12x). */
.lbn-separador {
    border-top: 1px dashed #bbb;
    margin: 4px 0;
}

/* Texto clicavel discreto -- "ver detalhes", "mostrar mais" (10x). */
.lbn-link-sutil {
    color: #666;
    font-size: 12px;
    cursor: pointer;
    text-decoration: underline;
}

/* Bloco de texto corrido (termos, observacoes longas) -- 9x. */
.lbn-texto-justificado {
    line-height: 1.6;
    font-size: 13px;
    text-align: justify;
}

/* Largura cheia (43x). */
.lbn-w100 {
    width: 100%;
}

/* Legenda de campo em formulario e modal. */
.lbn-rotulo {
    font-size: 13px;
    color: var(--lbn-tinta-3);
    font-weight: bold;
}

/* Texto que acompanha o spinner ("Carregando medidores..."). */
.lbn-carregando-texto {
    margin-top: 8px;
    color: var(--lbn-tinta-3);
}

/* Cabecalho de tabela simples dentro de modal. */
.lbn-tr-cabecalho {
    background: #f5f5f5;
}

/* Micro-legenda sob um numero (matriz de predicao, cartoes de resumo). */
.lbn-micro {
    font-size: 9px;
    color: var(--lbn-neutro);
    margin-top: 2px;
}

.lbn-link-relatorios {
    float: right;
    color: #666;
    font-size: 12px;
    display: flex;
    align-items: center;
    gap: 5px;
    text-decoration: none;
}

/* ============================================================================
   6. DASHBOARD — faixa de identidade e cartoes de KPI
   Estava num <style> de 253 linhas dentro da propria Home/Index.cshtml.
   Sai de la pelo mesmo motivo do _Layout: reprocessado a cada request, nao
   cacheavel, e invisivel para quem procura "onde mexo nessa cor".
   ⚠️ Valores hex preservados exatamente como estavam -- este passo e refatoracao,
   nao redesenho. Onde o valor ja era igual a um token, virou token.
   ============================================================================ */

/* ---- Faixa de identidade do topo (06/08/2026) ---- */
.faixa-identidade {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    padding: 4px 0 14px;
    border-bottom: 1px solid #eceff2;
    margin-bottom: 16px;
}

.fi-avatar {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    flex: none;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 16px;
    letter-spacing: .02em;
}

.fi-quem {
    flex: 1;
    min-width: 200px;
}

.fi-ola {
    font-size: 21px;
    font-weight: 700;
    color: #2b3440;
    line-height: 1.2;
}

.fi-meta {
    font-size: 12.5px;
    color: #7c8894;
    margin-top: 3px;
}

    .fi-meta b {
        color: #5a6673;
        font-weight: 600;
    }

.fi-pill {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: var(--lbn-raio-pilula);
    background: #e8f0fb;
    color: #1a5fb4;
    border: 1px solid #c5daf5;
    margin-right: 6px;
}

.fi-meu {
    display: flex;
    gap: 22px;
    flex-wrap: wrap;
}

.fi-bloco {
    text-align: right;
    display: block;
    text-decoration: none !important;
}

a.fi-bloco:hover .fi-n {
    color: #1a5fb4;
    text-decoration: underline;
}

.fi-n {
    font-size: 22px;
    font-weight: 700;
    color: #2b3440;
    line-height: 1.1;
}

.fi-r {
    font-size: 11px;
    color: #8a95a1;
    text-transform: uppercase;
    letter-spacing: .05em;
    font-weight: 600;
}

@media (max-width: 767px) {
    .fi-meu {
        width: 100%;
        justify-content: flex-start;
        gap: 26px;
    }

    .fi-bloco {
        text-align: left;
    }
}

/* ---- Cartoes de KPI ---- */
.linha-kpi {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem;
    margin-bottom: 0.5rem;
    justify-content: flex-start;
    align-items: stretch;
}

.kpi-card-link {
    flex: 1 1 21%;
    min-width: 220px;
    max-width: 26%;
    text-decoration: none !important;
    display: flex;
    height: 100%;
}

.kpi-card {
    width: 100%;
    height: 100%;
    background: none;
    border: none;
    box-sizing: border-box;
    padding: 0 4px;
    display: flex;
    flex-direction: column;
}

.infobox {
    width: 100%;
    height: 100%;
    min-height: 180px;
    background: var(--lbn-superficie);
    border-radius: 20px;
    box-shadow: 0 1px 8px #ececec;
    margin-bottom: 18px;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 28px 10px 18px 10px;
    justify-content: center;
    border: none;
    transition: box-shadow .25s;
}

    .infobox:hover {
        box-shadow: 0 2px 20px #c8e4f6;
        filter: brightness(1.04);
    }

.infobox-icon i {
    background: #f7f7f7;
    border-radius: 50%;
    padding: 22px;
    font-size: 2.8em;
    margin-bottom: 13px;
    display: inline-block;
    color: inherit;
    box-shadow: 0 1px 4px #f0f0f0;
}

/* Cada KPI tem a sua cor -- e como o laboratorio distingue os cartoes de
   relance. Nao entram nos tokens semanticos por isso. */
.infobox-green .icon-inbox { background: #68BC31 !important; color: #fff; }
.infobox-green .infobox-data-number { color: #68BC31 !important; }

.infobox-blue .icon-dashboard { background: #3399ff !important; color: #fff; }
.infobox-blue .infobox-data-number { color: #3399ff !important; }

.infobox-orange2 .icon-eye-open { background: #36a2d6 !important; color: #fff; }
.infobox-orange2 .infobox-data-number { color: #36a2d6 !important; }

.infobox-brown .icon-bolt { background: #f6ce52 !important; color: #fff; }
.infobox-brown .infobox-data-number { color: #f6ce52 !important; }

.infobox-pink .icon-search { background: #ef5fff !important; color: #fff; }
.infobox-pink .infobox-data-number { color: #ef5fff !important; }

.infobox-purple .icon-lock { background: #9c27b0 !important; color: #fff; }
.infobox-purple .infobox-data-number { color: #9c27b0 !important; }

.infobox-red .icon-upload { background: #e53935 !important; color: #fff; }
.infobox-red .infobox-data-number { color: #e53935 !important; }

.infobox-verdemusgo .icon-search { background: #b8d452 !important; color: #fff; }
.infobox-verdemusgo .infobox-data-number { color: #b8d452 !important; }

.infobox-data-number {
    font-size: 2.5em;
    font-weight: bold;
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 8px;
}

.infobox-content {
    font-size: 1.15em;
    font-weight: 600;
    margin-bottom: 4px;
    text-align: center;
    white-space: normal;
}

.infobox-label {
    font-size: 1.05em;
    font-weight: 400;
    color: #585858;
    margin-bottom: 2px;
}

.infobox-finalizado,
.infobox-pendente {
    font-size: 1.04em;
    font-weight: 500;
    color: #222;
    margin-bottom: 0;
    margin-top: 0px;
    line-height: 1.3em;
}

.infobox-finalizado {
    color: #08a10c;
}

.infobox-pendente {
    color: #2951a7;
}

/* ── DataTables 1.10 · paginação ───────────────────────────────────────────
   A 1.10 emite <a class="paginate_button">, e não o <ul><li> que o plugin de
   2013 montava. O ace.min.css estiliza .dataTables_paginate mas NÃO conhece
   .paginate_button (conferido: 0 ocorrências), então a paginação sairia sem
   contorno nenhum. Este bloco devolve o aspecto de caixas do Bootstrap 2.
   ⚠️ Mexer aqui muda a paginação de TODOS os grids dos dois sistemas.        */
.dataTables_paginate.paging_full_numbers {
    float: right;
    padding-top: 6px;
}
.dataTables_paginate .paginate_button {
    display: inline-block;
    padding: 4px 10px;
    margin-left: -1px;
    border: 1px solid #ddd;
    background: #fff;
    color: #2b7dbc;
    cursor: pointer;
    text-decoration: none;
    line-height: 18px;
}
.dataTables_paginate .paginate_button:first-child { border-radius: 3px 0 0 3px; }
.dataTables_paginate .paginate_button:last-child  { border-radius: 0 3px 3px 0; }
.dataTables_paginate .paginate_button:hover {
    background: #f5f5f5;
    text-decoration: none;
}
.dataTables_paginate .paginate_button.current,
.dataTables_paginate .paginate_button.current:hover {
    background: #6fb3e0;
    border-color: #6fb3e0;
    color: #fff;
    cursor: default;
}
.dataTables_paginate .paginate_button.disabled,
.dataTables_paginate .paginate_button.disabled:hover {
    color: #bbb;
    background: #fff;
    cursor: default;
}

/* No celular a barra de paginação quebrava em duas linhas, com "Seguinte" e
   "Último" caindo desalinhados à direita. Aqui ela deixa de flutuar e passa a
   centralizar, com as caixas se acomodando em linhas inteiras.
   ⚠️ 767px é o MESMO ponto de corte do grid-responsivo.css — os dois têm de
      virar cartão e centralizar juntos. */
@media (max-width: 767px) {
    .dataTables_paginate.paging_full_numbers {
        float: none;
        text-align: center;
        padding-top: 10px;
    }
    .dataTables_paginate .paginate_button {
        margin: 3px 2px 0;
        border-radius: 3px;
    }
    /* sem os cantos "colados": as caixas passam a ser independentes */
    .dataTables_paginate .paginate_button:first-child,
    .dataTables_paginate .paginate_button:last-child {
        border-radius: 3px;
    }
}


/* ---- Cartao "Visualizar Simulacao" (Ensaio na Bancada) ----
   Mesma linguagem dos KPIs da Home: cartao branco, icone em circulo, numero
   grande. O contador da fila, que antes era um badge vermelho no canto, virou
   o NUMERO do KPI — e o cartao passou a dizer de relance quantos medidores
   estao na bancada.
   Antes disto havia `linear-gradient(90deg,#458CCB ...)` escrito a mao DENTRO
   da view, nos dois sistemas: um azul que nao era token de nenhum deles.
   ⚠️ A cor e literal de proposito, como as dos KPIs da Home ("cada KPI tem a
      sua cor") — o teal distingue este cartao dos oito da Home. */
.card-simulacao-link {
    display: block;
    text-decoration: none !important;
    color: inherit;
}
.card-simulacao-link .infobox { cursor: pointer; }
.infobox-simulacao .icon-desktop {
    background: #0f9b96 !important;
    color: #fff;
}
.infobox-simulacao .infobox-data-number { color: #0f9b96 !important; }
.infobox-simulacao .infobox-bancada {
    font-size: .95em;
    color: var(--lbn-texto-suave, #777);
    margin-top: 2px;
}
.infobox-simulacao .infobox-bancada u { text-decoration-color: #bcd7d6; }
/* 🔑 Foco visivel: e um <a> operado por tecnico, e o diagnostico aponta foco
   nao gerido como fraqueza de acessibilidade. */
.card-simulacao-link:focus-visible .infobox {
    outline: 3px solid #0f9b96;
    outline-offset: 3px;
}

/* Versao COMPACTA do cartao. O .infobox da Home tem min-height:180px, icone de
   2.8em com 22px de respiro e numero de 2.5em com min-height:48px -- proporcoes
   feitas para uma linha de oito cartoes ocupando a largura toda. Aqui ele divide
   espaco com os "Dados Tecnicos da Bancada", e nessa altura esticava o bloco
   inteiro. Mesma linguagem, escala menor. */
.infobox-simulacao {
    min-height: 0;
    padding: 14px 12px 12px;
}
.infobox-simulacao .infobox-icon i {
    padding: 12px;
    font-size: 1.7em;
    margin-bottom: 6px;
    box-shadow: none;
}
.infobox-simulacao .infobox-content {
    font-size: 1.02em;
    margin-bottom: 0;
}
.infobox-simulacao .infobox-data-number {
    font-size: 1.9em;
    min-height: 0;
    margin: 2px 0 1px;
    line-height: 1.1;
}
.infobox-simulacao .infobox-pendente {
    font-size: .92em;
    line-height: 1.2;
}
.infobox-simulacao .infobox-bancada {
    font-size: .88em;
    margin-top: 1px;
}

