/* VxOS V2 - camada de estilos da repaginada (carrega por ULTIMO, sobre o CSS base).
   Contem: (1) o FAROL de pontos de atencao (transfer-in), (2) as correcoes de CONTRASTE
   (WCAG AA) apontadas nas auditorias (ux_shell F27, ux_transferin P1-3, ux_diligencia P1-4,
   ux_admin P1-6, ux_dashboard F4): escurece o TEXTO mantendo os fundos/identidade, e
   (3) o modo TRIAGEM/CARDS do Buscador. */

/* ---------- tokens novos (so texto; tokens.css original fica intocado) ---------- */
:root{
  --warn-text:#92600A;   /* ambar escuro: 4.9:1 sobre --warn-bg e >6:1 sobre branco */
  --pos-text:#075E45;    /* verde escuro (ja usado no banner-ok da producao) */
  --neg-text:#B91C1C;    /* vermelho escuro: 5.2:1 sobre --neg-bg */
  --teal-btn:#007A7A;    /* teal de acao: 5.2:1 com texto branco (btn-primary/links) */
}

/* toast com variante de erro (shell F7: erro nao pode sumir igual sucesso) */
.vx-toast.err{background:var(--neg-text)}

/* ---------- 3) FAROL de pontos de atencao (transfer-in) ---------- */
/* indicador no tile do grid (verde/amarelo/vermelho; cinza = nao avaliado nao exibe) */
.farol-ind{font:700 10px 'Space Grotesk';letter-spacing:.02em;padding:1px 7px;border-radius:999px;white-space:nowrap;border:1px solid transparent}
.farol-ind.farol-verde{background:var(--pos-bg);color:var(--pos-text)}
.farol-ind.farol-amarelo{background:var(--warn-bg);color:var(--warn-text);border-color:#F3D9A4}
.farol-ind.farol-vermelho{background:var(--neg-bg);color:var(--neg-text);border-color:#F5C2C2}
/* pilula de filtro no overview */
.ov-farol-btn{border:1px solid var(--warn-text)}
.ov-farol-btn.on{background:var(--warn-bg)}
/* painel de detalhe do fundo */
.farol-panel{border:1px solid var(--gray-200);border-left:4px solid var(--gray-300);border-radius:var(--r-ctrl);background:#fff;padding:10px 14px;margin:10px 0}
.farol-panel.farol-amarelo{border-left-color:var(--warn)}
.farol-panel.farol-vermelho{border-left-color:var(--neg)}
.farol-panel.farol-verde{border-left-color:var(--pos)}
.farol-h{display:flex;align-items:center;gap:8px;font:700 12px 'Space Grotesk';color:var(--navy);text-transform:uppercase;letter-spacing:.04em}
.farol-list{list-style:none;margin:8px 0 0;display:flex;flex-direction:column;gap:5px}
.farol-list li{display:flex;align-items:baseline;gap:8px;font-size:12.5px;flex-wrap:wrap}
.farol-sev{flex:none;font:700 10px 'Space Grotesk';text-transform:uppercase;padding:1px 7px;border-radius:999px}
.farol-sev.farol-amarelo{background:var(--warn-bg);color:var(--warn-text)}
.farol-sev.farol-vermelho{background:var(--neg-bg);color:var(--neg-text)}
.farol-lbl{font-weight:600;color:var(--gray-800)}
.farol-val{color:var(--gray-600)}
.farol-dt{color:var(--gray-500);font-size:11px;white-space:nowrap}
.farol-ok{color:var(--pos-text);font-size:12.5px;margin-top:6px}

/* banner do monitor pausado (transfer-in P1-1: parada silenciosa do acompanhamento) */
.tf-monitor-note{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--warn-bg);color:var(--warn-text);border:1px solid #F3D9A4;border-radius:var(--r-ctrl);padding:9px 12px;font-size:12.5px;margin:8px 0}
.tf-monitor-note button{border:1px solid var(--warn-text);background:#fff;color:var(--warn-text);border-radius:var(--r-ctrl);padding:4px 10px;font:600 12px 'Space Grotesk';cursor:pointer}

/* aviso de fontes que falharam na leitura (dashboard F2: nada de falso verde) */
.ovw2-warnstrip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--warn-bg);color:var(--warn-text);border-radius:var(--r-ctrl);padding:8px 12px;font-size:12.5px;margin:0 0 10px}
.ovw2-warnstrip button{border:1px solid var(--warn-text);background:#fff;color:var(--warn-text);border-radius:var(--r-ctrl);padding:3px 10px;font:600 12px 'Space Grotesk';cursor:pointer}
.ovw2-refresh{margin-left:6px;border:1px solid var(--gray-300);background:#fff;color:var(--navy);border-radius:var(--r-ctrl);padding:2px 9px;font:600 11px 'Space Grotesk';cursor:pointer}
.ovw2-refresh:hover{background:var(--gray-50)}

/* erro de carga da grade de projetos (shell F5: estado de ERRO distinto do vazio legitimo) */
.empty-err{border:1px solid #F5C2C2;background:var(--neg-bg);border-radius:var(--r-card);padding:22px;text-align:center;color:var(--neg-text)}
.empty-err button{margin-top:10px;border:1px solid var(--neg-text);background:#fff;color:var(--neg-text);border-radius:var(--r-ctrl);padding:6px 14px;font:600 13px 'Space Grotesk';cursor:pointer}

/* status do tile com TEXTO nos estados de atencao (transferin P1-5: cor nao pode ser a unica codificacao) */
.tf-tile .status-chip{font-size:9px;padding:1px 6px}
.tile-top-r{display:inline-flex;align-items:center;gap:5px}

/* teclado: tiles/faixas/cabecalhos agora sao focaveis (shell F26, transferin P1-4, diligencia P1-3) */
.tranche-band:focus-visible,.tema-h:focus-visible,.tf-tile:focus-visible,.pcard:focus-visible{outline:2px solid var(--teal);outline-offset:2px}

/* ---------- 4) contraste (WCAG AA): escurece TEXTO, mantem fundos ---------- */
/* botao primario: branco sobre #00B4B4 era 2.6:1; teal mais escuro mantem a identidade (F27) */
.btn-primary{background:var(--teal-btn)}
.btn-primary:hover{background:#005F5F}
/* chips e selos ambar/verde/vermelho (F27, P1-3, P1-4, P1-6, F4) */
.chip-pending{color:var(--warn-text)}
.status-chip.s-md{color:var(--warn-text)}
.status-chip.s-ok{color:var(--pos-text)}
.status-chip.s-err{color:var(--neg-text)}
.cf-media{color:var(--warn-text)}
.cf-baixa{color:var(--neg-text)}
.doc-pend-tag{color:var(--warn-text)}
.chip.hist-falha{color:var(--warn-text)}
.cp-sanc-badge{color:var(--warn-text)}
.hist-erro{color:var(--neg-text)}
.banner-error{color:var(--neg-text)}
.pst-ok,.pst-btn.pst-ok{color:var(--pos-text)}
.pst-late,.pst-btn.pst-late{color:var(--neg-text)}
.pub-div-count,.cp-sanc-count,.ir-div,.ir-err{color:var(--neg-text)}
/* textos informativos em gray-400 (2.6:1) sobem para gray-500/600 */
.login-foot,.ov-flabel,.tranche-band .tb-date,.tranche-band .tb-count,.src-txt{color:var(--gray-500)}
/* dashboard (F4): tags de alerta, links "abrir ->", data da tranche, funil */
.ovw2-alert.sev-neg .ovw2-alert-tag{color:var(--neg-text)}
.ovw2-alert.sev-warn .ovw2-alert-tag{color:var(--warn-text)}
.ovw2-go{color:var(--teal-btn)}
.ovw2-health-go .ovw2-go{color:var(--teal-btn)}
.ovw2-health-err .ovw2-go{color:var(--neg-text)}
.ovw2-tr-dt{color:var(--gray-500)}
.ovw2-stage.st-0{background:var(--gray-500)}
.ovw2-stage.st-2{background:var(--teal-btn)}
/* timers de prazo (dashboard/diligencia) */
.dlg-timer.atrasado{color:var(--neg-text)}
.dlg-timer.hoje{color:var(--warn-text)}
.dlg-timer.ok{color:var(--pos-text)}
/* diligencia (P1-4): avisos de governanca em ambar */
.dlg-gate-warn{color:var(--warn-text)}
.dlg-ress-flag{color:var(--warn-text)}
.dlg-grp-macro.st-ok_ressalva{color:var(--warn-text)}
.dash-open{color:var(--gray-600)}
/* admin (P1-6): status pendente/sem-area, separadores e badges */
.u-st.u-pend{color:var(--warn-text)}
.u-st.u-ok{color:var(--pos-text)}
.u-st.u-blk{color:var(--neg-text)}
.adm-noarea{color:var(--warn-text)}
.adm-day,.adm-user.sys,.adm-empty{color:var(--gray-500)}
.adm-nav-badge,.adm-ctx-tag{background:var(--navy)}
/* links gerais: teal-dark 3.5:1 -> teal de acao 5.2:1 */
a{color:var(--teal-btn)}

/* ---------- 5) MODO TRIAGEM (V2): lista densa do transfer-in, farol primeiro ---------- */
/* Redesenho do Buscador: varredura dos 50 fundos de uma vez, ordenados por gravidade do farol,
   com o motivo da atencao inline e a completude como barra fina (nao mais o anel dominante). */
.tf-viewtoggle{display:inline-flex;border:1px solid var(--gray-300);border-radius:var(--r-ctrl);overflow:hidden}
.tf-vbtn{border:0;background:#fff;color:var(--gray-600);font:600 12px 'Space Grotesk',sans-serif;padding:5px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.tf-vbtn+.tf-vbtn{border-left:1px solid var(--gray-300)}
.tf-vbtn.on{background:var(--navy);color:#fff}
.tf-vbtn:not(.on):hover{background:var(--gray-50)}

.trow-wrap{border:1px solid var(--gray-200);border-radius:var(--r-card);overflow-x:auto;background:#fff;margin-top:2px}
/* colunas de largura FIXA (a ultima nao pode ser 'auto': o cabecalho vazio e as linhas com botoes
   calculariam larguras diferentes e as colunas escorregariam). Header e linhas partilham este template.
   5 colunas enxutas: Farol | Fundo (tipo + nome + excecao de status) | Completude | Pontos | Acoes.
   O TIPO virou chip dentro do nome e o STATUS "pronto" saiu (so aparece como excecao) para tirar ruido. */
.trow{display:grid;grid-template-columns:96px minmax(170px,1.3fr) 132px minmax(190px,1.9fr) 196px;align-items:center;gap:14px;padding:9px 14px;border-top:1px solid var(--gray-100);min-width:860px;cursor:pointer}
.trow:first-child{border-top:0}
.trow-head{background:var(--gray-50);cursor:default;font:700 10px 'Space Grotesk',sans-serif;text-transform:uppercase;letter-spacing:.05em;color:var(--gray-500);padding-top:7px;padding-bottom:7px}
.trow-head span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trow:not(.trow-head):hover{background:#EAF7F7}
.trow:focus-visible{outline:2px solid var(--teal);outline-offset:-2px}
/* faixa de cor a esquerda por severidade (cor nunca e a unica codificacao: ha texto e contagem) */
.trow.farol-row-vermelho{box-shadow:inset 3px 0 0 var(--neg)}
.trow.farol-row-amarelo{box-shadow:inset 3px 0 0 var(--warn)}
.trow.farol-row-verde{box-shadow:inset 3px 0 0 var(--pos)}
.trow.farol-row-nd{box-shadow:inset 3px 0 0 var(--gray-300)}
.trow-c{min-width:0;overflow:hidden}
.trow-farol{display:inline-flex;align-items:center;gap:4px;font:700 12px 'Space Grotesk',sans-serif;padding:2px 9px;border-radius:999px;white-space:nowrap}
.trow-farol.farol-verde{background:var(--pos-bg);color:var(--pos-text)}
.trow-farol.farol-amarelo{background:var(--warn-bg);color:var(--warn-text)}
.trow-farol.farol-vermelho{background:var(--neg-bg);color:var(--neg-text)}
.trow-farol.farol-nd{background:var(--gray-100);color:var(--gray-500)}
.trow-name{display:flex;align-items:center;gap:7px;min-width:0}
.trow-name > *{flex:none}
.trow-nm{flex:1 1 auto;min-width:0;font:600 13.5px 'Space Grotesk',sans-serif;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* status da coleta como EXCECAO ao lado do nome (so quando nao esta "pronto") */
.trow-stex{font:700 9px 'Space Grotesk',sans-serif;text-transform:uppercase;letter-spacing:.03em;padding:1px 6px;border-radius:5px;white-space:nowrap}
.trow-stex.st-erro{background:var(--neg-bg);color:var(--neg-text)}
.trow-stex.st-parcial{background:var(--warn-bg);color:var(--warn-text)}
.trow-stex.st-pendente,.trow-stex.st-na_fila,.trow-stex.st-buscando{background:var(--gray-100);color:var(--gray-600)}
/* cabecalho da completude com icone de ajuda (explica em relacao a que) */
.trow-compl-h{display:inline-flex;align-items:center;gap:4px}
.trow-info{cursor:help;color:var(--gray-400);font-size:11px;font-weight:400}
/* traco discreto para "sem pontos" (farol verde): mantem a coluna sem repetir texto */
.trow-dash{color:var(--gray-300)}
.trow-tipo{font:700 10px 'Space Grotesk',sans-serif;padding:1px 7px;border-radius:6px;border:1px solid;white-space:nowrap}
.trow-compl{display:flex;align-items:center;gap:8px}
.trow-bar{flex:1;height:6px;background:var(--gray-100);border-radius:999px;overflow:hidden;min-width:48px;max-width:78px}
.trow-bar i{display:block;height:100%;border-radius:999px}
.trow-compl b{font:600 12px 'Space Grotesk',sans-serif;color:var(--gray-700);min-width:34px}
.trow-motivos{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.trow-chip{font:600 10.5px 'Space Grotesk',sans-serif;padding:1px 7px;border-radius:6px;white-space:nowrap;border:1px solid transparent}
.trow-chip.farol-amarelo{background:var(--warn-bg);color:var(--warn-text);border-color:#F3D9A4}
.trow-chip.farol-vermelho{background:var(--neg-bg);color:var(--neg-text);border-color:#F5C2C2}
.trow-more{font:600 10.5px 'Space Grotesk',sans-serif;color:var(--gray-500)}
.trow-ok{color:var(--pos-text);font-size:12px;white-space:nowrap}
.trow-nd{color:var(--gray-500);font-size:12px;white-space:nowrap}
.trow-status .status-chip{font-size:10px}
.trow-acts{display:inline-flex;align-items:center;gap:7px;justify-content:flex-end;white-space:nowrap}
.trow-acts .tile-dlg{border:1px solid var(--gray-300);background:#fff;color:var(--gray-600);border-radius:var(--r-ctrl);font:600 11px 'Space Grotesk',sans-serif;padding:3px 9px;cursor:pointer}
.trow-acts .tile-dlg.has{border-color:var(--teal-btn);color:var(--teal-btn)}
.trow-acts .tile-dl,.trow-acts .tile-del{border:1px solid var(--gray-200);background:#fff;border-radius:var(--r-ctrl);padding:3px 8px;cursor:pointer;color:var(--gray-500);font-size:12px}
.trow-acts .tile-del:hover{color:var(--neg-text);border-color:#F5C2C2}
.trow-open{color:var(--gray-400);font:600 11px 'Space Grotesk',sans-serif;white-space:nowrap}
.trow:hover .trow-open{color:var(--teal-btn)}
.trow-tombado{font:700 9px 'Space Grotesk',sans-serif;text-transform:uppercase;background:var(--navy);color:#fff;padding:1px 6px;border-radius:5px;letter-spacing:.04em;vertical-align:middle}
.tranche-sec.collapsed .trow-wrap{display:none}

/* ---------- 6) MODO CARDS: card CENTRADO com o ANEL colorido de completude (o donut da rampa de
   ringColor) - da "vida" a galeria (pedido do dono). As telas DENSAS (Triagem, detalhe) usam barra
   fina; a galeria de CARDS usa o anel. Mantem/centra o layout de producao via `body .tf-tile`. */
body .tile-grid{grid-template-columns:repeat(auto-fill,minmax(186px,1fr));gap:12px}
body .tf-tile{text-align:center;padding:14px 12px 12px;display:flex;flex-direction:column;align-items:center;gap:8px}
body .tf-tile .tile-top{width:100%;margin-bottom:0}
body .tf-tile .tile-name{min-height:34px;justify-content:center;align-items:center;margin:0;font:600 13.5px 'Space Grotesk',sans-serif;line-height:1.25;text-align:center}
/* anel de completude (donut com o % dentro) + legenda pequena embaixo */
body .tf-tile .tile-ring{display:flex;flex-direction:column;align-items:center;gap:3px;margin:2px 0}
body .tf-tile .tile-ring-l{font:600 9.5px 'Space Grotesk',sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--gray-500)}
/* botao dossie no card, centrado */
body .tf-tile .tile-dlg{align-self:center;margin:0;border:1px solid var(--gray-300);border-radius:8px;color:var(--gray-600);font:600 11px 'Space Grotesk',sans-serif;padding:3px 10px}
body .tf-tile .tile-dlg.has{border-color:var(--teal-btn);color:var(--teal-btn);background:#fff}
/* acoes (baixar/excluir/abrir) coladas na base para alinhar cards de alturas diferentes */
body .tf-tile .tile-actions{margin-top:auto;width:100%}
