﻿/* Layout das telas EF de Fiança. Corrige combos espremidos/ilegíveis (havia um
   `select { font-size:11px; min-width:120px }` global em style.css) e dá respiro aos campos.

   IMPORTANTE: os <link> deste arquivo em cada .aspx usam "?v=N" pra evitar cache do navegador.
   Ao editar este CSS, subir o "v=" em TODAS as paginas que o referenciam (grep por
   "fianca-ef.css?v=" em SistemaImobiliarias/Solicitacoes/Fianca) — sem isso o navegador pode
   continuar servindo a versao antiga do cache mesmo depois do deploy. */

.ef-form { max-width: 1180px; }

.ef-sec { border: 1px solid #d3dde7; border-radius: 12px; padding: 16px 20px; margin: 14px 0; background: #fff; }
.ef-sec h3 { margin: 0 0 14px; font-size: 15px; color: #1d4ed8; font-weight: 700; }

/* Grid mais largo: colunas de no mínimo 300px (antes 220), combos legíveis. */
.ef-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px 22px; }
/* position:relative torna o campo o "container" do calendario (.data-br) — ver scripts-fianca-ef.js
   e a regra .datepicker.datepicker-dropdown abaixo. Vale tambem pro .ef-adv-campo (campos de data
   da busca avancada), que usa o mesmo mecanismo. */
.ef-campo { display: flex; flex-direction: column; gap: 5px; min-width: 0; position: relative; }
.ef-campo.ef-col-2 { grid-column: span 2; }
.ef-campo label { font-size: 12px; color: #5b6b7c; font-weight: 600; }

/* Calendario (bootstrap-datepicker) dos campos .data-br. O plugin sozinho calcula o "top" do
   popup relativo ao <body>; nas paginas EF essa conta fica ~20-25px desalinhada (conflito com o
   restante do layout da pagina) e o calendario abria sobreposto ao proprio campo. Como o JS
   agora usa container: $d.parent() (o .ef-campo/.ef-adv-campo, o wrapper imediato do campo), o
   popup passa a ser filho do proprio wrapper no DOM — daqui pra baixo e' so CSS puro (top/left
   com !important derrubam o inline style que o plugin insiste em aplicar a cada abertura), sem
   depender da conta interna do plugin. Border/sombra tambem reforcados: sozinho o plugin so tem
   uma borda quase invisivel (rgba(0,0,0,.176)) e nenhuma sombra. */
.ef-campo .datepicker.datepicker-dropdown,
.ef-adv-campo .datepicker.datepicker-dropdown {
    top: 100% !important;
    left: 0 !important;
    right: auto !important;
    margin-top: 4px;
    border: 1px solid #cdd8e3;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(22, 33, 46, .18);
    z-index: 20;
}
.ef-campo .datepicker-dropdown:before,
.ef-campo .datepicker-dropdown:after,
.ef-adv-campo .datepicker-dropdown:before,
.ef-adv-campo .datepicker-dropdown:after { display: none; } /* seta do balao nao faz sentido ancorado direto embaixo do campo */

/* Inputs e combos: alto o suficiente e com fonte legível — sobrepõe o `select` global de 11px. */
.ef-form .ef-campo input[type=text],
.ef-form .ef-campo input[type=date],
.ef-form .ef-campo input[type=email],
.ef-form .ef-campo select,
.ef-form .ef-campo textarea {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    height: 38px;
    padding: 7px 10px;
    border: 1px solid #cdd8e3;
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    color: #16212e;
    background: #fff;
}
.ef-form .ef-campo textarea { height: auto; }
.ef-form .ef-campo select { -webkit-appearance: menulist; appearance: menulist; }
.ef-form .ef-campo input:focus,
.ef-form .ef-campo select:focus { outline: 2px solid #93b4fd; outline-offset: 0; border-color: #1d4ed8; }
.ef-form .ef-campo input[readonly] { background: #f2f5f9; color: #5b6b7c; }

/* Botão de busca de CEP ao lado do campo. */
.ef-cep-linha { display: flex; gap: 8px; align-items: stretch; }
.ef-cep-linha input { flex: 1 1 auto; }
.ef-cep-linha .btn { white-space: nowrap; }

/* Cada checkbox e' um <asp:CheckBox Text="..."> — o proprio controle ja renderiza seu
   <input type=checkbox> + <label for=id>Texto</label> como irmaos; o markup das paginas EF
   embrulha os dois num <label> extra (so pra agrupar/servir de item do flex abaixo). Sem
   display:flex nesse wrapper o texto ficava colado no quadradinho (sem espaco) e um pouco
   desalinhado verticalmente — por isso o wrapper vira flex e o checkbox ganha tamanho/alinhamento
   explicitos, garantindo o mesmo espaçamento e fonte em todos os grupos de checkbox das telas EF. */
.ef-checks { display: flex; flex-wrap: wrap; gap: 12px 22px; margin-top: 6px; }
.ef-checks > label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; margin: 0; }
.ef-checks input[type=checkbox] { width: 16px; height: 16px; margin: 0; accent-color: #1d4ed8; cursor: pointer; flex-shrink: 0; }
.ef-checks label { font-size: 13px; color: #16212e; }

.ef-acoes { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; }
/* Mesmos botoes de .ef-acoes, mas dentro de uma faixa de alerta (ex.: mensagem de sucesso
   pos-inclusao com "ir para lista/editar/adicionar pretendente") — margem menor que o padrao
   16px, que ficava largo demais colado ao texto da mensagem. */
.ef-acoes-msg { margin-top: 10px; }
/* Pendencia mostrada junto da mensagem de inclusao concluida (ex.: comercial que ainda nao tem
   pretendente fora do representante legal, que vai travar o envio). */
.ef-aviso-msg { margin-top: 8px; font-size: 13px; font-weight: 600; }
.ef-msg { margin: 10px 0; }

/* Aceite dos termos de uso (so nas telas de inclusao). O checkbox do ASP.NET vem dentro de um
   <span>, por isso o alinhamento explicito — mesmo motivo do .ef-checks acima. */
.ef-termos > label { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap;
    font-size: 13px; color: #16212e; margin: 0; cursor: pointer; }
.ef-termos input[type=checkbox] { width: 16px; height: 16px; margin: 0; accent-color: #1d4ed8;
    cursor: pointer; flex-shrink: 0; }
.ef-termos a { color: #2563eb; }
.ef-erros { margin: 0; padding-left: 18px; }
.ef-erros li { font-size: 13px; }
/* ==========================================================================
   Proposta de fiança — resumo e escolha da oferta
   ========================================================================== */

/* A seguradora escolhida em destaque, e nao como mais um par rotulo/valor no meio do resumo:
   e' a decisao que define tudo o que se preenche abaixo. */
.prop-escolha {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px;
    padding: 10px 14px; margin-bottom: 12px;
    background: #eef6ff; border: 1px solid #cfe2fb; border-radius: 10px;
}
.prop-escolha .rot { font-size: 10px; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: #5b7ba6; }
.prop-escolha .prop-seg { font-size: 16px; font-weight: 700; color: #16212e; }
.prop-escolha .prop-sub { flex: 1 1 100%; font-size: 12px; color: #5b6b7c; }
.prop-escolha .prop-pendente { color: #b45309; font-weight: 600; }

/* Contexto da solicitacao que originou a proposta: titular, imovel e contrato. Sem isto a tela
   dizia so "Solicitacao 1234" — quem preenche varias propostas seguidas nao tinha como saber de
   qual imovel era esta sem abrir a solicitacao noutra aba. */
.prop-contexto { display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px;
    padding: 10px 14px; margin-bottom: 12px;
    background: #fbfcfd; border: 1px solid #e4eaf0; border-radius: 10px; }
.prop-contexto dt { font-size: 10px; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: #8497a8; padding-top: 2px; }
.prop-contexto dd { margin: 0; font-size: 13px; color: #16212e; }

/* Grade de ofertas: substituiu um <select> em que cada linha era "nome - forma/condicao - valor".
   Como varias ofertas so diferem na quantidade de parcelas, a lista parecia cheia de repetidas —
   a informacao que as distinguia ficava no fim do texto, ou nem aparecia. Em colunas da para
   comparar, e a caixa rola em vez de esticar a pagina. */
.tbl-oferta-wrap { max-height: 270px; overflow: auto; border: 1px solid #e4eaf0; border-radius: 8px; }
.tbl-oferta { width: 100%; border-collapse: collapse; }
.tbl-oferta th {
    position: sticky; top: 0; z-index: 1; background: #f7f9fc;
    text-align: left; padding: 8px 10px; font-size: 10px; font-weight: 700;
    text-transform: uppercase; letter-spacing: .04em; color: #8497a8;
    border-bottom: 1px solid #e4eaf0;
}
.tbl-oferta td { padding: 8px 10px; font-size: 13px; color: #16212e; border-top: 1px solid #eef2f7; }
.tbl-oferta tr.sel td { background: #eef6ff; font-weight: 600; }
.tbl-oferta .num { text-align: right; font-variant-numeric: tabular-nums; }
.tbl-oferta .col-radio { width: 34px; text-align: center; }
.tag-aprov { font-size: 10px; font-weight: 700; color: #15803d; border: 1px solid #9ed9b6;
    background: #e7f6ee; padding: 1px 7px; border-radius: 20px; margin-left: 6px; }

/* Alerta de linha na grade (ex.: "Início do contrato vencido" numa solicitação em preenchimento).
   Fica ABAIXO do selo de status, em bloco, e não é outro selo de propósito: selo é estado, isto é
   pendência — se parecesse um status a mais, seria lido como se a solicitação tivesse dois. */
.ef-alerta-linha {
    display: block;
    margin-top: 5px;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.25;
    color: #b45309;
    cursor: help;
}
.ef-alerta-linha::before { content: "\26A0"; margin-right: 4px; } /* triangulo de atencao */

/* Validade da aprovacao, tambem ABAIXO do selo de status (saiu de coluna propria para nao ocupar
   largura com um dado que so faz sentido lido junto do status). Mesma anatomia do .ef-alerta-linha,
   mas a cor varia com a proximidade do vencimento — ver ValidadeAprovacaoFianca.CssLinha. */
.ef-validade-linha {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.25;
    white-space: nowrap;
    cursor: help;
}
.ef-validade-linha::before { content: "\23F1"; margin-right: 4px; } /* cronometro */
.ef-validade-linha.val-ok       { color: #15803d; } /* no prazo        - verde */
.ef-validade-linha.val-alerta   { color: #b45309; } /* vence em <= 7d  - ambar */
.ef-validade-linha.val-expirada { color: #b91c1c; } /* vencida         - vermelho */
.ef-validade-linha.val-sem      { color: #8497a8; } /* sem aprovacao   - cinza */

.ef-hint { font-size: 12px; color: #8497a8; margin-top: 6px; }
/* Faixa de "copiar de outro bloco" (ex.: sócio principal puxando o responsável da empresa).
   Fica entre o h3 e a grade, antes dos campos que ela preenche. O .ef-hint de dentro nasce
   com margin-top, que aqui desalinharia o aviso do botão. */
.ef-copiar-de { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: -4px 0 14px; }
.ef-copiar-de .ef-hint { margin-top: 0; }
.ef-val { color: #b91c1c; font-size: 12px; font-weight: 600; }

/* Select2: garante largura total e altura coerente com os demais campos. */
.ef-form .select2-container { width: 100% !important; }
.ef-form .select2-container--default .select2-selection--single {
    height: 38px; border: 1px solid #cdd8e3; border-radius: 8px;
}
.ef-form .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 36px; font-size: 14px; color: #16212e; padding-left: 10px;
}
.ef-form .select2-container--default .select2-selection--single .select2-selection__arrow { height: 36px; }

/* ===== Página pública / embed (FiancaPublicaEF, ObrigadoEF) — sem MasterPage ===== */
body.ef-publico { margin: 0; background: #eef2f7; color: #16212e;
    font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
.ef-publico-wrap { max-width: 1180px; margin: 0 auto; padding: 24px 18px 48px; }
.ef-publico-header { display: flex; align-items: center; gap: 16px; margin: 8px 0 20px;
    padding-bottom: 16px; border-bottom: 1px solid #d3dde7; }
.ef-publico-header h1 { font-size: 22px; font-weight: 700; margin: 0; color: #1d4ed8; }
.ef-publico-logo { max-height: 56px; max-width: 200px; width: auto; }

.ef-obrigado { max-width: 620px; margin: 48px auto; background: #fff; border: 1px solid #d3dde7;
    border-radius: 12px; padding: 40px 32px; text-align: center; }
.ef-obrigado h1 { color: #15803d; font-size: 24px; margin: 8px 0 12px; }
.ef-obrigado-check { width: 64px; height: 64px; line-height: 64px; margin: 0 auto 8px; border-radius: 50%;
    background: #e7f6ee; color: #15803d; font-size: 34px; font-weight: 700; }
.ef-obrigado-protocolo { margin: 16px 0; font-size: 16px; }

/* ===== Listagem/grid EF (FiancaEF.aspx e futuras telas de listagem por EF) ===== */

/* Popup de integrações (por linha da grid) */
.info-wrap { position: relative; display: inline-block; }
.info-pop {
    display: none; position: absolute; right: 0; top: 26px; z-index: 1000;
    min-width: 260px; max-width: 340px; padding: 10px 12px; text-align: left;
    background: #fff; border: 1px solid #cdd8e3; border-radius: 10px;
    box-shadow: 0 8px 24px rgba(22,33,46,.18);
    /* O pop-up costuma morar numa celula de acoes com white-space:nowrap, e isso herdava para
       dentro dele deixando o texto de ajuda numa linha unica. Aqui a quebra volta ao normal
       independente do host, e palavra longa (URL, chave) quebra em vez de vazar o balao. */
    white-space: normal; overflow-wrap: break-word; word-break: break-word;
}
.info-pop p { margin: 0 0 8px; }
.info-pop p:last-child { margin-bottom: 0; }
.info-wrap.open .info-pop { display: block; }
.info-title { font-size: 12px; font-weight: 700; color: #5b6b7c; margin-bottom: 8px;
    text-transform: uppercase; letter-spacing: .04em; }
.int-line { display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 5px 0; border-top: 1px solid #eef2f7; }
.int-line:first-of-type { border-top: 0; }
.int-seg { font-size: 13px; color: #16212e; overflow: hidden; text-overflow: ellipsis;
    white-space: nowrap; max-width: 190px; }
.int-badge { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 20px;
    white-space: nowrap; color: #fff; }
/* Cores por status da integracao */
.int-badge.st-aprov   { background: #15803d; }               /* Aprovado  - verde */
.int-badge.st-pre     { background: #2563eb; }               /* Pre-aprovado - azul */
.int-badge.st-analise { background: #b45309; }               /* Em Analise - ambar */
.int-badge.st-recus   { background: #b91c1c; }               /* Recusado  - vermelho */
.int-badge.st-erro    { background: #6b7280; }               /* Erro      - cinza */
.int-badge.st-outro   { background: #334155; }               /* Outro */
.int-empty { font-size: 12px; color: #8497a8; font-style: italic; }
/* Oferta de maior parcelamento no pop-up de integracoes ("30x de R$ 100,00"). Fica na ponta direita
   da linha, depois do badge de status; some sozinha quando a seguradora ainda nao tem oferta. */
.int-parc { font-size: 12px; font-weight: 600; color: #16212e; white-space: nowrap;
    font-variant-numeric: tabular-nums; }
.int-parc:empty { display: none; }
/* Com o parcelamento na linha, o nome da seguradora nao pode empurrar o resto. */
.int-line .int-seg { max-width: 140px; }
.int-line .int-parc { margin-left: auto; }

/* Tabela de pretendentes (listagem/visualização) */
.tbl-pret { width: 100%; border-collapse: collapse; }
.tbl-pret th, .tbl-pret td { text-align: left; padding: 8px 12px; font-size: 13px; border-top: 1px solid #eef2f7; }
.tbl-pret th { color: #5b6b7c; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.pret-tit { font-size: 11px; font-weight: 700; color: #15803d; background: #e7f6ee;
    border: 1px solid #9ed9b6; padding: 2px 8px; border-radius: 20px; }
.pret-det td { background: #f7f9fc; }
.pret-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px 20px; padding: 6px 2px; }
.pret-grid > div { display: flex; flex-direction: column; }
.pret-grid span { font-size: 11px; color: #8497a8; text-transform: uppercase; letter-spacing: .03em; }
.pret-grid b { font-size: 13px; color: #16212e; font-weight: 600; }

/* Area com moldura reunindo toolbar + busca + acoes em lote (reusa o card .ef-sec, so ajusta a margem
   de topo pq e o primeiro bloco da tela). */
.ef-toolbar-card { margin-top: 0; }

/* Barra de ferramentas / busca simples */
.ef-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
    gap: 12px; margin-bottom: 16px; }
.ef-toolbar-left { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.ef-export-btn { display: inline-flex; align-items: center; }
.ef-export-btn svg { margin-right: 6px; vertical-align: -3px; }
.ef-search-wrap { position: relative; display: flex; align-items: center; gap: 8px; flex: 1 1 320px; max-width: 460px; }
.ef-search-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #8497a8;
    pointer-events: none; display: flex; }
/* Especificidade .ef-search-wrap + classe (2 niveis) para vencer de proposito o global
   `input[type="text"]` de includes/css/style.css (element+atributo), que senao sobrescreve o
   padding e empurra o texto/placeholder por baixo do icone da lupa. */
.ef-search-wrap .ef-search-input { width: 100%; height: 40px; padding: 0 40px 0 44px; border: 1px solid #cdd8e3;
    border-radius: 20px; font-size: 14px; color: #16212e; background: #fff; box-sizing: border-box; }
.ef-search-wrap .ef-search-input:focus { outline: 2px solid #93b4fd; outline-offset: 0; border-color: #1d4ed8; }
.ef-search-clear { position: absolute; right: 46px; top: 50%; transform: translateY(-50%); border: none;
    background: transparent; color: #8497a8; cursor: pointer; display: none; align-items: center;
    justify-content: center; padding: 5px; border-radius: 50%; }
.ef-search-clear:hover { background: #eef2f7; color: #16212e; }
.ef-search-submit { width: 40px; height: 40px; border-radius: 50%; border: 1px solid #1d4ed8;
    background: #1d4ed8; color: #fff; display: flex; align-items: center; justify-content: center;
    cursor: pointer; flex-shrink: 0; text-decoration: none; }
.ef-search-submit:hover { background: #1741ab; color: #fff; }

/* Busca avançada / ações em lote (painéis colapsáveis, abrem como menu lado a lado) */
.ef-adv-toggle { margin: 2px 0 12px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ef-toolbar-sep { color: #cbd5e1; font-size: 14px; }
.ef-adv-link { display: inline-flex; align-items: center; gap: 6px; background: none; border: none;
    color: #1d4ed8; font-size: 13px; font-weight: 600; cursor: pointer; padding: 4px 2px; }
.ef-adv-link:hover { text-decoration: underline; }
.ef-adv-link .chev { transition: transform .15s ease; }
.ef-adv-link.open .chev { transform: rotate(180deg); }
.ef-adv-panel { display: none; border: 1px solid #d3dde7; border-radius: 12px; background: #f7f9fc;
    padding: 16px 18px; margin-bottom: 16px; }
.ef-adv-panel.ef-adv-open { display: block; }
.ef-adv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px 18px; }
.ef-adv-campo { display: flex; flex-direction: column; gap: 4px; min-width: 0; position: relative; }
.ef-adv-campo label { font-size: 11px; color: #5b6b7c; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; }
.ef-adv-input, .ef-adv-select { height: 36px; padding: 0 10px; border: 1px solid #cdd8e3; border-radius: 8px;
    font-size: 13px; color: #16212e; background: #fff; box-sizing: border-box; width: 100%; }
.ef-adv-input:focus, .ef-adv-select:focus { outline: 2px solid #93b4fd; outline-offset: 0; border-color: #1d4ed8; }
.ef-adv-acoes { display: flex; gap: 10px; margin-top: 14px; }

/* Tabela/grid de listagem. min-height evita a caixa "encolher" e ficar ilegível quando o
   filtro retorna poucos resultados (ex.: 1 item) — mantém a altura do bloco estável entre
   buscas, independente da quantidade de linhas retornadas. */
.ef-table-wrap { border: 1px solid #d3dde7; border-radius: 12px; overflow-x: auto; background: #fff; min-height: 420px; }
.ef-table { width: 100%; border-collapse: collapse; }
.ef-thead th { background: #f7f9fc; color: #5b6b7c; font-size: 11px; text-transform: uppercase;
    letter-spacing: .04em; text-align: left; padding: 10px 12px; border-bottom: 1px solid #d3dde7; white-space: nowrap; }
.ef-row td { padding: 9px 12px; font-size: 13px; color: #16212e; border-bottom: 1px solid #eef2f7; vertical-align: middle; }
.ef-row:hover td { background: #f2f6fb; }
.ef-row-alt td { background: #fbfcfe; }
.ef-row-alt:hover td { background: #eef3fa; }
.ef-cell-main { font-weight: 600; color: #16212e; white-space: nowrap; }
.ef-cell-sub { font-size: 11px; color: #8497a8; margin-top: 2px; white-space: nowrap; }
.ef-pager { padding: 0; } /* padding fica no .ef-pager-bar interno (PagerTemplate) */

/* Selo PF/PJ (coluna propria "Tipo") — no PJ a coluna seguinte mostra o ocupante do imovel,
   nao o pretendente titular do cadastro; por isso o selo existe pra deixar isso evidente. */
.tp-badge { display: inline-block; font-size: 10px; font-weight: 700; padding: 1px 6px;
    border-radius: 10px; vertical-align: middle; }
.tp-badge.tp-pf { color: #1d4ed8; background: #e8f0fe; border: 1px solid #bfd4fb; }
.tp-badge.tp-pj { color: #b45309; background: #fdf3e2; border: 1px solid #f3d9ab; }

/* Icone "Criado por" (substitui o nome/data em texto, que chamava atencao demais na lista);
   ao clicar abre o mesmo popup (.info-wrap/.info-pop) usado na coluna Integracoes, com nome
   e data completos — nao depende de tooltip nativo (title so aparece no hover e nunca no clique,
   confundia o usuario). */
.ef-criado-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px;
    border: 1px solid #cdd8e3; border-radius: 8px; background: #fff; color: #8497a8; cursor: pointer; padding: 0; }
.ef-criado-icon:hover { background: #eef2f7; color: #5b6b7c; }

/* Ações em ícone (linha da grid) */
.ef-icon-actions { display: flex; gap: 6px; flex-wrap: nowrap; justify-content: center; }
.ef-icon-btn { width: 30px; height: 30px; border-radius: 8px; border: 1px solid #cdd8e3; background: #fff;
    color: #5b6b7c; display: inline-flex; align-items: center; justify-content: center;
    cursor: pointer; text-decoration: none; flex-shrink: 0; }
.ef-icon-btn:hover { background: #eef2f7; color: #16212e; border-color: #b7c4d3; }
.ef-icon-btn.ic-ver { color: #2563eb; border-color: #bfd4fb; }
.ef-icon-btn.ic-ver:hover { background: #eaf0fe; }
.ef-icon-btn.ic-editar { color: #1d4ed8; border-color: #bfd4fb; }
.ef-icon-btn.ic-editar:hover { background: #eaf0fe; }
.ef-icon-btn.ic-pj { color: #b45309; border-color: #f3d9ab; }
.ef-icon-btn.ic-pj:hover { background: #fdf3e2; }
.ef-icon-btn.ic-ofertas { color: #15803d; border-color: #a9d9bb; }
.ef-icon-btn.ic-ofertas:hover { background: #e7f6ee; }
.ef-icon-btn.ic-bitrix { color: #334155; border-color: #cbd5e1; }
.ef-icon-btn.ic-bitrix:hover { background: #eef2f7; }
.ef-icon-btn.ic-pdf { color: #b91c1c; border-color: #f3b8b8; }
.ef-icon-btn.ic-pdf:hover { background: #fdeaea; }
/* Proposta: roxo para nao competir com ofertas (verde) nem com PDF (vermelho). O tom cheio e' a
   proposta que JA existe (abrir); o esmaecido e' a que ainda vai ser gerada. */
.ef-icon-btn.ic-proposta { color: #6d28d9; border-color: #c9b6f2; }
.ef-icon-btn.ic-proposta:hover { background: #f2ecfd; }
.ef-icon-btn.ic-proposta-nova { color: #8b5cf6; border-color: #ddd0fa; }
.ef-icon-btn.ic-proposta-nova:hover { background: #f6f1fe; }
.ef-icon-btn.ic-logs { color: #5b21b6; border-color: #d5c5f3; }
.ef-icon-btn.ic-logs:hover { background: #f2ecfc; }
/* Enfileirar envio/cotação (tela IncendioEF) — âmbar, para destacar que é ação, não navegação. */
.ef-icon-btn.ic-enviar { color: #b45309; border-color: #f3d9ab; }
.ef-icon-btn.ic-enviar:hover { background: #fdf3e2; }
/* Ações da tela de itens da cotação (CotacaoItensIncendioEF): aceitar divergência (verde, confirma)
   e excluir o item na seguradora (vermelho, destrutivo). */
.ef-icon-btn.ic-aceitar { color: #15803d; border-color: #a9d9bb; }
.ef-icon-btn.ic-aceitar:hover { background: #e7f6ee; }
.ef-icon-btn.ic-excluir { color: #b91c1c; border-color: #f3b8b8; }
.ef-icon-btn.ic-excluir:hover { background: #fdeaea; }
/* Ações da tela de cotações (CotacoesIncendioEF). Cores por natureza da ação, não por seguradora:
   navegação para os itens (teal), integração com a SuperLógica (azul), conferência/validação
   (âmbar, igual às demais ações de análise), efetivação (verde, é o passo que emite a apólice) e
   releitura de dados (azul-navegação, não altera fase). */
.ef-icon-btn.ic-itens { color: #0f766e; border-color: #a7d8d2; }
.ef-icon-btn.ic-itens:hover { background: #e6f5f3; }
.ef-icon-btn.ic-sl { color: #0369a1; border-color: #bae0f7; }
.ef-icon-btn.ic-sl:hover { background: #e6f3fb; }
.ef-icon-btn.ic-validar { color: #b45309; border-color: #f3d9ab; }
.ef-icon-btn.ic-validar:hover { background: #fdf3e2; }
.ef-icon-btn.ic-docs { color: #7c3aed; border-color: #d5c5f3; }
.ef-icon-btn.ic-docs:hover { background: #f2ecfc; }
.ef-icon-btn.ic-efetivar { color: #15803d; border-color: #a9d9bb; }
.ef-icon-btn.ic-efetivar:hover { background: #e7f6ee; }
.ef-icon-btn.ic-atualizar { color: #2563eb; border-color: #bfd4fb; }
.ef-icon-btn.ic-atualizar:hover { background: #eaf0fe; }

/* Botão de integrações alinhado ao mesmo tamanho da familia de icones acima. */
.info-btn { width: 30px; height: 30px; border-radius: 8px; border: 1px solid #cdd8e3;
    background: #fff; color: #5b6b7c; font-weight: 700; font-style: italic;
    font-family: Georgia, "Times New Roman", serif; line-height: 28px; cursor: pointer; padding: 0; }
.info-btn:hover { background: #eef2f7; color: #16212e; }
.info-btn:focus { outline: 2px solid #93b4fd; outline-offset: 1px; }

/* Barra de acoes em lote (acima da tabela) — discreta de proposito, nao e a acao principal da tela. */
.ef-bulk-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.ef-bulk-label { font-size: 13px; color: #5b6b7c; }
.ef-bulk-select { height: 34px; padding: 0 10px; border: 1px solid #cdd8e3; border-radius: 8px;
    font-size: 13px; color: #16212e; background: #fff; }
.ef-bulk-apply { display: inline-flex; align-items: center; height: 34px; padding: 0 14px;
    border: 1px solid #cdd8e3; border-radius: 8px; background: #fff; color: #1d4ed8;
    font-size: 13px; font-weight: 600; cursor: pointer; text-decoration: none; }
.ef-bulk-apply:hover { background: #eef2f7; }

/* ===== Telas de log/auditoria (AuditoriaEF, LogsIntegracoesFiancaEF) — filtros + grid + detalhe =====

   .aud-tabs/.aud-tab sao o PADRAO DE ABA do repo, nao exclusividade das telas de log: o
   DashboardEF.aspx tambem os usa nas abas de produto (Fianca/Incendio). O prefixo "aud-" ficou do
   primeiro uso; nao duplicar essas regras com outro prefixo por tela. */
.aud-tabs { display: flex; gap: 6px; border-bottom: 2px solid #d3dde7; margin: 14px 0 18px; }
.aud-tab { padding: 10px 20px; font-weight: 600; color: #5b6b7c; cursor: pointer; border: 1px solid transparent;
    border-bottom: none; border-radius: 8px 8px 0 0; text-decoration: none; }
.aud-tab:hover { color: #1d4ed8; }
.aud-tab.on { background: #fff; color: #1d4ed8; border-color: #d3dde7; margin-bottom: -2px; }
.aud-filtros { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px 16px;
    background: #f7f9fc; border: 1px solid #e3eaf2; border-radius: 10px; padding: 14px 16px; margin-bottom: 14px; align-items: end; }
.aud-filtros .campo { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.aud-filtros label { font-size: 11px; color: #5b6b7c; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; }
.aud-grid { width: 100%; border-collapse: collapse; background: #fff; }
.aud-grid th { background: #eef2f7; color: #5b6b7c; font-size: 11px; text-transform: uppercase; letter-spacing: .03em;
    text-align: left; padding: 9px 12px; border-bottom: 1px solid #d3dde7; }
.aud-grid td { padding: 8px 12px; font-size: 13px; border-bottom: 1px solid #eef2f7; color: #16212e; vertical-align: top; }
.aud-grid tr:hover td { background: #f7f9fc; }
.badge-op { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 20px; color: #fff; white-space: nowrap; }
.op-INSERT { background: #15803d; } .op-UPDATE { background: #b45309; } .op-DELETE { background: #b91c1c; }
.op-SELECT, .op-SEND { background: #334155; }
.sev { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 20px; color: #fff; white-space: nowrap; }
.sev-Critical { background: #7f1d1d; } .sev-Error { background: #b91c1c; } .sev-Warning { background: #b45309; } .sev-Info { background: #2563eb; }
.aud-paging { display: flex; align-items: center; gap: 12px; margin: 12px 0; font-size: 13px; color: #5b6b7c; }
.aud-det { margin-top: 16px; border: 1px solid #cdd8e3; border-radius: 10px; background: #fff; padding: 16px 18px; }
.aud-det h3 { margin: 0 0 12px; font-size: 15px; color: #1d4ed8; }
.diff { width: 100%; border-collapse: collapse; }
.diff th, .diff td { text-align: left; padding: 7px 10px; font-size: 13px; border-bottom: 1px solid #eef2f7; vertical-align: top; }
.diff th { color: #5b6b7c; font-size: 11px; text-transform: uppercase; }
.diff .campo { font-weight: 600; color: #16212e; width: 22%; }
.diff tr.changed td { background: #fff8e6; }
.diff .antes { color: #b91c1c; } .diff .depois { color: #15803d; }
.err-msg { white-space: pre-wrap; font-family: Consolas, "Courier New", monospace; font-size: 12px;
    background: #16212e; color: #e6edf3; padding: 12px; border-radius: 8px; overflow: auto; max-height: 340px; }
.tag-ok { color: #15803d; font-weight: 700; } .tag-pend { color: #b45309; font-weight: 700; }
.txt-elip { max-width: 360px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Visualizacao de JSON (payload/retorno/header dos logs de integracao) — pretty-print + realce
   leve por token (chave/string/numero/literal), sem depender de biblioteca externa. */
.json-box { white-space: pre-wrap; word-break: break-word; font-family: Consolas, "Courier New", monospace;
    font-size: 12px; line-height: 1.5; background: #16212e; color: #e6edf3; padding: 14px 16px;
    border-radius: 8px; overflow: auto; max-height: 380px; margin: 0; }
.json-key { color: #7dd3fc; }
.json-str { color: #a7f3d0; }
.json-num { color: #fbbf24; }
.json-lit { color: #f472b6; font-weight: 600; }
.json-hint { color: #8497a8; font-style: italic; font-size: 12px; }
.log-tabs-linha { display: flex; gap: 6px; margin: 14px 0 4px; flex-wrap: wrap; }
.log-tab-link { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border-radius: 20px;
    border: 1px solid #cdd8e3; background: #fff; color: #5b6b7c; font-size: 13px; font-weight: 600;
    cursor: pointer; text-decoration: none; }
.log-tab-link.on { background: #1d4ed8; color: #fff; border-color: #1d4ed8; }
.stcode-2xx { background: #15803d; } .stcode-3xx { background: #2563eb; }
.stcode-4xx { background: #b45309; } .stcode-5xx { background: #b91c1c; } .stcode-outro { background: #334155; }

/* Paginação (PagerTemplate customizado) */
.ef-pager-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; padding: 10px 12px; }
.ef-pager-info { font-size: 12px; color: #5b6b7c; }
.ef-pager-nav { display: flex; gap: 4px; }
.ef-pager-btn { width: 30px; height: 30px; border-radius: 8px; border: 1px solid #cdd8e3; background: #fff;
    color: #1d4ed8; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.ef-pager-btn:hover { background: #eaf0fe; }
/* LinkButton com Enabled=false renderiza <span> em vez de <a> — usa isso p/ o estado desabilitado. */
span.ef-pager-btn { color: #cbd5e1; border-color: #e5e9f0; cursor: default; background: #fbfcfe; }
