/* M51 — Colinha viva. Variáveis e blocos portados do mockup aprovado
 * (MODULOS\M51-mockup.html) — mesma paleta, mesmo par claro/escuro por
 * classe no body (padrão do M30/M48). */

:root{ color-scheme: light dark;
  --bg:#ffffff; --painel:#f4f6f8; --card:#fbfcfd; --linha:#dfe4e9;
  --texto:#12171c; --fraco:#67727d; --corpo:#3b444d; --zebra:#f7f9fa;
  --sel:#1a4fa0; --sel-bg:#e6eefb; --sel-bd:#9dbcea;
  --topo-bg:#1d2733; --topo-tx:#eef2f6; --topo-ac:#7fb0ff;
  --botao-bg:#e9edf1; --botao-bd:#c9d1d9; --botao-tx:#2b333b;
  --verde:#1f7a30; --vermelho:#c62828; --amarelo:#8a5a10; --azul:#1a4fa0;
  --verde-bg:#e5f3e6; --verde-bd:#b7dcbb; --vermelho-bg:#fbe8e7; --vermelho-bd:#eebab5;
  --amarelo-bg:#fdf2df; --amarelo-bd:#e6cf9c; --azul-bg:#e6eefb; --azul-bd:#9dbcea;
  --laranja:#FF9900; --edit:#fffbe8; --lock:#eef0f2;
  --hl-amarelo:#fff176; --hl-magenta:#ff7ad9; --hl-vermelho:#ff6b6b;
  --ciano:#0089a8; --ciano-bg:#c9f4fb;
  --sombra:0 6px 20px rgba(16,24,32,.14);
  --fonte-itens:13px;
}
/* O tema é UMA coisa só: a classe `escuro` no body, posta pelo JS (sistema
 * na 1ª abertura, depois o sol/lua, lembrado em colinha.ini). Havia aqui um
 * `@media (prefers-color-scheme: dark)` que sobrepunha as variáveis por
 * cima do botão — com o Windows em escuro, o sol não mudava nada além da
 * pastilha (bug em uso, 04/09/2026). */
body.escuro{
  --bg:#14171a; --painel:#1a1e23; --card:#1c2126; --linha:#2b3239;
  --texto:#e6e9ec; --fraco:#98a2ae; --corpo:#c3cad2; --zebra:#1f242a;
  --sel:#8ab4ff; --sel-bg:#152232; --sel-bd:#31496b;
  --topo-bg:#0f1419; --topo-tx:#e6e9ec; --topo-ac:#7fb0ff;
  --botao-bg:#20262c; --botao-bd:#39424b; --botao-tx:#d6dde4;
  --verde:#7cd88c; --vermelho:#f0958a; --amarelo:#f0b866; --azul:#8ab4ff;
  --verde-bg:#122c17; --verde-bd:#255c30; --vermelho-bg:#331512; --vermelho-bd:#63302a;
  --amarelo-bg:#33260f; --amarelo-bd:#5c4a1e; --azul-bg:#152232; --azul-bd:#31496b;
  --edit:#2a2716; --lock:#21262c;
  --hl-amarelo:#8a7a00; --hl-magenta:#8a2a6a; --hl-vermelho:#8a2a2a;
  --ciano:#00e0ff; --ciano-bg:#0e3a44;
  --sombra:0 6px 20px rgba(0,0,0,.5);
}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--texto);font:13.5px/1.5 "Segoe UI",-apple-system,Roboto,Arial,sans-serif;overflow:hidden}
.app{display:flex;flex-direction:column;height:100%}

/* ---- topo (a barra da app, com o logo — como o M48) ---- */
.topo{flex:none;background:var(--topo-bg);color:var(--topo-tx);padding:6px 12px;display:flex;align-items:center;gap:8px;font-size:12.5px}
.logo-tcjm{filter:drop-shadow(0 0 1px rgba(128,128,128,.5));vertical-align:middle}
.topo b{font-weight:700}
.tema-btn{margin-left:auto;background:transparent;border:1px solid var(--topo-ac);color:var(--topo-tx);border-radius:50%;width:24px;height:24px;display:grid;place-items:center;cursor:pointer;padding:0}
.tema-btn svg{width:15px;height:15px}

/* ---- valor TOTAL (preço × qtd) em modo GLOBAL — C4, emenda §12 ---- */
.tot{color:var(--ciano);font-weight:800;background:var(--ciano-bg);border-radius:3px;padding:0 4px}

/* ---- cabeçalho congelado ---- */
#cab{flex:none;position:sticky;top:0;background:var(--painel);border-bottom:2px solid var(--laranja);padding:7px 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;z-index:3}
#cab .data{font-size:17px;font-weight:800;letter-spacing:.01em}

/* ---- navegador de data (‹ dia ›) — C1, emenda §12 ---- */
.datanav{display:inline-flex;align-items:center;gap:2px}
.datanav .dia{font-size:17px;font-weight:800;letter-spacing:.01em;padding:2px 8px;cursor:pointer;border-radius:6px;display:inline-flex;align-items:center;gap:6px}
.datanav .dia:hover{background:var(--botao-bg)}
.datanav .dia .cal{font-size:12px;color:var(--fraco)}
.input-data-oculto{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}

/* ---- popover "＋ Nova colinha" — C1, emenda §12 (mesma classe do mockup) ---- */
.pop-wrap{position:relative;display:inline-flex}
.pop{position:absolute;top:calc(100% + 6px);right:0;z-index:10}
.pop[hidden]{display:none}
.pop .cartao{border:1px solid var(--linha);border-radius:10px;background:var(--card);box-shadow:var(--sombra);padding:12px 14px;width:min(92vw,420px)}
.pop .cartao h3{margin:0 0 8px;font-size:13.5px}
.pop .lin{display:flex;gap:8px;align-items:center;margin:8px 0;flex-wrap:wrap}
.pop label{font-size:12px;color:var(--fraco);min-width:44px}
.pop input[type=date]{border:1px solid var(--botao-bd);background:var(--bg);color:var(--texto);border-radius:6px;padding:5px 8px;font:inherit}
.pop input[type=text]{flex:1;border:1px solid var(--botao-bd);background:var(--bg);color:var(--texto);border-radius:6px;padding:5px 8px;font:inherit;min-width:160px}
.pop .op{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.pop .divisor{height:1px;background:var(--linha);margin:10px 0}
.pop small{color:var(--fraco);display:block;margin-top:6px;line-height:1.5}

#cab .emp{display:inline-flex;gap:0;border:1px solid var(--botao-bd);border-radius:6px;overflow:hidden}
#cab .emp span{padding:3px 9px;font-size:11px;font-weight:700;background:var(--botao-bg);color:var(--fraco)}
/* A pastilha da empresa usa as CORES DA MARCA, iguais nos dois temas — a
 * mesma `PALETA_EMPRESA` do app.py / `PASTILHA_EMPRESA` do
 * core/ficha_processo.py / `CORES_EMPRESA` do m30/trabalho.js. Mexeu numa
 * cor lá, mexa aqui. (Saiu do mockup com preto por engano — 04/09/2026.) */
#cab .emp span.on{background:#FF9900;color:#0A0A0A}
#cab .emp span.vwm.on{background:#0A5AF6;color:#fff}
/* 14/09/2026: a pastilha da OUTRA empresa é clicável — abre a irmã ou cria
 * com os pregões do dia (bug em uso: TCJM criada bloqueava a VWM). */
#cab .emp span.irma.abre,#cab .emp span.irma.cria{cursor:pointer;opacity:.85}
#cab .emp span.irma.abre:hover,#cab .emp span.irma.cria:hover{opacity:1;color:var(--texto)}
#cab .emp span.irma.cria::after{content:" +";font-weight:900}
#cab .vivo{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--fraco)}
#cab .vivo .led{width:8px;height:8px;border-radius:50%;background:var(--verde);box-shadow:0 0 0 3px var(--verde-bg)}
#cab .vivo.off .led{background:var(--vermelho);box-shadow:0 0 0 3px var(--vermelho-bg)}
#cab .pessoas{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 9px 2px 6px;border-radius:12px;border:1px solid var(--linha);background:var(--card);color:var(--corpo)}
.pill i{width:8px;height:8px;border-radius:50%;display:inline-block}
.pill.eu{border-color:var(--sel-bd);background:var(--sel-bg);color:var(--sel)}
#cab .ferr{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.btn{background:var(--botao-bg);border:1px solid var(--botao-bd);color:var(--botao-tx);border-radius:6px;padding:5px 11px;font-size:12px;cursor:pointer;white-space:nowrap}
.btn.prim{background:var(--verde-bg);border-color:var(--verde-bd);color:var(--verde);font-weight:700}
.btn.on{outline:2px solid var(--laranja);outline-offset:-1px}
.btn.ico{padding:5px 8px}
.seg{display:inline-flex;border:1px solid var(--botao-bd);border-radius:6px;overflow:hidden}
.seg .btn{border:none;border-radius:0;padding:5px 9px}
.seg .btn+.btn{border-left:1px solid var(--botao-bd)}

/* ---- corpo rolável ---- */
#corpoScroll{flex:1;min-height:0;overflow:auto;padding:10px 12px 60px;font-size:var(--fonte-itens)}
.vazio-colinha{color:var(--fraco);text-align:center;padding:40px 10px;line-height:1.7}
.vazio-colinha b{color:var(--texto)}
.vazio-botoes{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.vazio-botoes .btn{font-size:13px;padding:8px 16px}

/* ============ modo Normal: bloco do pregão ============ */
.preg{border:1px solid var(--linha);border-radius:8px;margin:0 0 10px;background:var(--card);overflow:hidden}
/* C11 (emenda §12.5): o mesmo destaque de arraste vale para o bloco do
 * Compacta (classe .pg) — a alça de lá liga o mesmo ligarArraste do Normal. */
.preg.arrastando,.pg.arrastando{outline:2px dashed var(--laranja);opacity:.85}
.preg .ph{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 6px;background:var(--painel);border-bottom:1px solid var(--linha);font-weight:700;font-size:1em}
.preg .ph .alca{cursor:grab;color:var(--fraco);font-size:15px;line-height:1;padding:0 3px;user-select:none}
.preg .ph .alca:hover{color:var(--laranja)}
.preg .ph .chev{cursor:pointer;color:var(--fraco);width:16px;text-align:center;transition:transform .15s;flex:none}
.preg.fechado .ph .chev{transform:rotate(-90deg)}
.preg.fechado .tbl, .preg.fechado .rodape-preg{display:none}
.preg .ph .hora{font-variant-numeric:tabular-nums;min-width:48px}
/* C13 (emenda §12.5): plataforma vira PILL do sistema (borda + fundo suave,
 * como os chips da casa); o amarelo (.hl) é só a exceção — sem plataforma
 * identificada. */
.preg .ph .plat{padding:1px 7px;border-radius:10px;cursor:default;font-size:.82em;font-weight:700;border:1px solid var(--botao-bd);background:var(--botao-bg);color:var(--botao-tx)}
.preg .ph .plat.hl{background:var(--amarelo-bg);color:var(--amarelo);border-color:var(--amarelo-bd)}
.preg .ph .nome{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
/* IGNT0093 (14/09/2026): o marcador é IRMÃO do `.nome` (não filho) e nunca
 * encolhe — antes a elipse do título comia o "-AF-" ("-…"). */
.marc{font-weight:800;padding:0 4px;border-radius:3px;font-size:.92em;flex:none;white-space:nowrap}
.marc.af{background:var(--hl-magenta)}
.marc.fa{background:var(--hl-vermelho)}
/* pill "DE" = dispensa eletrônica (14/09/2026) — roxo fixo, legível nos dois
 * temas; o "DE." some do número na tela. */
.marc.de{background:#6A1B9A;color:#fff;border-radius:8px;font-size:.78em;padding:0 6px;letter-spacing:.03em}
.preg .ph .resumo{font-weight:500;color:var(--fraco);font-size:.85em;white-space:nowrap}
.preg .ph .seg.lance-seg{flex:none}
.preg .ph select, .preg .ph .estado{font-size:11px;font-weight:700;border:1px solid var(--botao-bd);background:var(--botao-bg);color:var(--botao-tx);border-radius:5px;padding:2px 6px}
.preg .ph .estado.ganho{background:var(--verde-bg);color:var(--verde);border-color:var(--verde-bd)}
.preg .ph .estado.perdido{background:var(--vermelho-bg);color:var(--vermelho);border-color:var(--vermelho-bd)}
.preg .ph .estado.morto{background:var(--lock);color:var(--fraco)}
/* Round 3: ✕ tirar pregão da colinha (reversível via toast) */
.preg .ph .excluir,#lista.A .pgh .excluir,.preg .ph .reler,#lista.A .pgh .reler{border:1px solid transparent;background:transparent;color:var(--fraco);border-radius:4px;padding:0 5px;font-size:.9em;cursor:pointer;line-height:1.4;flex:none}
.preg .ph .excluir:hover,#lista.A .pgh .excluir:hover{border-color:var(--vermelho-bd);background:var(--vermelho-bg);color:var(--vermelho)}
.preg .ph .reler:hover,#lista.A .pgh .reler:hover{border-color:var(--azul-bd);background:var(--azul-bg);color:var(--azul)}
.preg .ph .reler:disabled,#lista.A .pgh .reler:disabled{opacity:.5;cursor:default}
/* L1 (emenda §13, 07/09/2026) — 🔗 link do pregão, estilo M01: aceso/azul
 * (.link.tem) com link, apagado (.link.sem) sem link. Mesmo desenho de
 * botão do ↻/✕ (bare class, sem `.ico`), no cluster de ações do `.ph`/`.pgh`. */
.preg .ph .link,#lista.A .pgh .link{border:1px solid transparent;background:transparent;border-radius:4px;padding:0 5px;font-size:.9em;cursor:pointer;line-height:1.4;flex:none}
.preg .ph .link.tem,#lista.A .pgh .link.tem{color:var(--azul)}
.preg .ph .link.sem,#lista.A .pgh .link.sem{color:var(--fraco);opacity:.65}
.preg .ph .link:hover,#lista.A .pgh .link:hover{border-color:var(--azul-bd);background:var(--azul-bg);color:var(--azul)}
/* o menuzinho (Abrir · Copiar · Editar · Remover) e o form (colar + Salvar).
 * UM SÓ elemento, compartilhado, direto em `document.body` (`position:fixed`,
 * calculada em JS do botão) — não o `.pop-wrap`/`.pop .cartao` do "＋ Nova
 * colinha": aquele é posicionado `absolute` dentro de um ancestral com
 * `overflow` normal (`#cab`); aqui o ancestral mais próximo (`.preg`) corta
 * (`overflow:hidden`, as bordas arredondadas do bloco), e um popover preso
 * ali dentro sumiria em qualquer pregão de poucos itens. Por isso a própria
 * `.link-pop` já traz borda/fundo/sombra — não há `.cartao` por baixo. */
.link-pop{position:fixed;width:240px;padding:0;overflow:hidden;text-align:left;z-index:20;
  border:1px solid var(--linha);border-radius:8px;background:var(--card);box-shadow:var(--sombra)}
.link-pop[hidden]{display:none}
.link-pop .link-url{font-size:11px;color:var(--fraco);padding:7px 10px;border-bottom:1px solid var(--linha);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.link-pop .link-item{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--texto);padding:8px 10px;font:inherit;font-size:12.5px;cursor:pointer}
.link-pop .link-item:hover{background:var(--sel-bg)}
.link-pop .link-item.sep{border-top:1px solid var(--linha)}
.link-pop .link-item.rem{color:var(--vermelho)}
.link-pop .link-form{padding:10px}
.link-pop .link-form label{display:block;font-size:11px;color:var(--fraco);text-transform:uppercase;letter-spacing:.03em;margin-bottom:5px}
.link-pop .link-form input{width:100%;border:1px solid var(--botao-bd);background:var(--bg);color:var(--texto);border-radius:6px;padding:6px 8px;font:inherit;margin-bottom:8px;box-sizing:border-box}
.link-pop .link-form .row2{display:flex;gap:8px;justify-content:flex-end}
.link-pop .b-prim{background:var(--verde-bg);border:1px solid var(--verde-bd);color:var(--verde);border-radius:6px;padding:6px 12px;font-weight:700;cursor:pointer}
.link-pop .b-fraco{background:transparent;border:1px solid var(--botao-bd);color:var(--fraco);border-radius:6px;padding:6px 10px;cursor:pointer}
/* C14 (emenda §12.5): nota COM texto fica mais destacada (fundo amarelo
 * cheio + texto forte) que o placeholder "＋ nota" (apagado). */
.preg .ph .nota{font-size:.85em;border-radius:4px;padding:0 6px;cursor:text}
.preg .ph .nota.vazia{font-weight:500;color:var(--fraco);background:transparent;border:1px dashed var(--botao-bd);opacity:.75}
.preg .ph .nota.tem{font-weight:800;color:var(--texto);background:var(--hl-amarelo);border:1px solid var(--amarelo-bd)}
.preg .ph .cotado{font-weight:500;font-size:.85em;color:var(--azul);background:var(--azul-bg);border:1px solid var(--azul-bd);border-radius:4px;padding:0 6px}
.preg.morto{opacity:.6}
.preg.morto .ph .nome{text-decoration:line-through}
/* Round 3 (08/09/2026): estado do pregão Ganho/Perdido — fundo do título
   (o cabeçalho `.ph`) verde/vermelho, óbvio na tela. "OK — feito" saiu. */
.preg.pg-ganho .ph{background:var(--verde-bg);border-left:4px solid var(--verde)}
.preg.pg-perdido .ph{background:var(--vermelho-bg);border-left:4px solid var(--vermelho)}
.sep-mortos{display:flex;align-items:center;gap:10px;color:var(--fraco);font-size:11px;text-transform:uppercase;letter-spacing:.06em;margin:16px 0 8px}
.sep-mortos::before,.sep-mortos::after{content:"";flex:1;height:1px;background:var(--linha)}

/* tabela de itens */
.tbl{width:100%;border-collapse:collapse;table-layout:fixed}
.tbl th{font-size:.78em;text-transform:uppercase;letter-spacing:.03em;color:var(--fraco);font-weight:600;text-align:left;padding:3px 8px;border-bottom:1px solid var(--linha);position:relative;background:var(--card)}
.tbl th .rz{position:absolute;right:-3px;top:0;bottom:0;width:6px;cursor:col-resize}
.tbl th .rz:hover{background:var(--laranja)}
.tbl td{padding:3px 8px;border-bottom:1px solid var(--linha);vertical-align:middle;white-space:nowrap}
.tbl tr:last-child td{border-bottom:none}
.tbl tr:hover td{background:var(--zebra)}
.tbl .n{text-align:right;font-variant-numeric:tabular-nums}
.tbl .num{font-weight:700;font-variant-numeric:tabular-nums;color:var(--corpo)}
.tbl td.desc{overflow:hidden;text-overflow:ellipsis;cursor:text}
.tbl td.marca{overflow:hidden;text-overflow:ellipsis;color:var(--corpo)}
.tbl .ref{color:var(--fraco);font-size:.9em}
.tbl .ref::before{content:"(("}.tbl .ref::after{content:"))"}
.tbl tr.verm td.desc,.tbl tr.verm td.marca,.tbl tr.verm td.preco{color:var(--vermelho)}
/* C10 (emenda §12.5 / round 3): item PERDIDO tacha a LINHA inteira. Só
 * text-decoration risca o TEXTO e deixa vãos (células vazias, inputs de
 * preço/arremate) — por isso desenhamos uma linha CONTÍNUA no fundo de cada
 * td (o gradiente), que se junta de célula a célula (border-collapse), e
 * deixamos os inputs transparentes para a linha atravessar. */
.tbl tr.perdido td{color:var(--fraco);text-decoration:line-through;
  background-image:linear-gradient(transparent calc(50% - .75px),var(--fraco) calc(50% - .75px),var(--fraco) calc(50% + .75px),transparent calc(50% + .75px));
  background-repeat:no-repeat}
.tbl tr.perdido td input{opacity:.65;background:transparent;text-decoration:line-through}
/* IGNT0093 (14/09/2026): item GANHO mais destacado — negrito E borda verde
 * à esquerda (o usuário: "talvez negritar ou pôr borda verde ou os dois"). */
.tbl tr.ganho td{background:var(--verde-bg);font-weight:700}
.tbl tr.ganho:hover td{background:var(--verde-bg)}
.tbl tr.ganho td:first-child{box-shadow:inset 4px 0 0 var(--verde)}
.tbl tr.ganho td.num{color:var(--verde)}
.tbl tr.revog td{color:var(--fraco);font-style:italic}
.tag{display:inline-block;font-size:.72em;font-weight:800;text-transform:uppercase;padding:0 6px;border-radius:8px;border:1px solid;vertical-align:middle;margin-left:4px;letter-spacing:.03em}
.tag.ganho{background:var(--verde);color:#fff;border-color:var(--verde)}
.tag.perdido{background:var(--lock);color:var(--fraco);border-color:var(--linha)}
.tag.revog{background:var(--amarelo-bg);color:var(--amarelo);border-color:var(--amarelo-bd)}
.arr{width:92px;border:1px solid var(--linha);background:var(--edit);color:var(--texto);border-radius:4px;padding:1px 6px;text-align:right;font:inherit;font-variant-numeric:tabular-nums}
.arr.vazio{background:transparent;border-style:dashed;color:var(--fraco)}
/* C5 (emenda §12.5) — preço editável inline (input .arr) + marca de alterado */
.preco-inp.alterado{border-color:var(--laranja)}
.marca-alt{color:var(--laranja);font-weight:900;margin-left:3px;cursor:default}
.acoes{white-space:nowrap;text-align:right}
.acoes button{border:1px solid transparent;background:transparent;color:var(--fraco);border-radius:4px;padding:0 5px;font-size:1em;cursor:pointer;line-height:1.5}
.acoes button:hover{border-color:var(--botao-bd);background:var(--botao-bg);color:var(--texto)}
.acoes button.on-g{color:var(--verde);border-color:var(--verde-bd);background:var(--verde-bg)}
.acoes button.on-p{color:var(--vermelho);border-color:var(--vermelho-bd);background:var(--vermelho-bg)}
.quem{font-size:.75em;color:var(--fraco);margin-left:4px}

/* rodapé do pregão (lote / global) */
.rodape-preg{display:flex;gap:14px;align-items:center;padding:5px 10px;border-top:1px solid var(--linha);font-size:.9em;color:var(--corpo);background:var(--painel);flex-wrap:wrap}
.rodape-preg b{font-variant-numeric:tabular-nums}
.rodape-preg .modo{margin-left:auto}
.lote-cab td{background:var(--painel);font-weight:700;font-size:.88em;color:var(--corpo);text-transform:uppercase;letter-spacing:.03em}
.lote-cab td .sub{font-weight:500;color:var(--fraco);text-transform:none;letter-spacing:0;margin-left:8px}

/* ============ modo Compacta — variante A: a GRADE (emenda §12, C2) ============ */
/* `#lista.A` — outra renderização (grid de colunas fixas), não a tabela do
 * Normal com colunas escondidas. Sem font-size próprio: herda
 * `--fonte-itens` do `#corpoScroll` — o A± continua valendo aqui também. */
#lista.A .pg{margin:0 0 9px}
#lista.A .pg.morto{opacity:.62}
#lista.A .pg.morto .pgh .nome{text-decoration:line-through}

#lista.A .pgh{display:flex;align-items:center;gap:6px;font-weight:800;font-size:.92em;padding:3px 4px;border-bottom:1.5px solid var(--linha)}
#lista.A .pgh .alca{color:var(--fraco);cursor:grab;font-size:1.15em;line-height:1}
#lista.A .pgh .hora{font-variant-numeric:tabular-nums;color:var(--corpo)}
/* C13 (emenda §12.5): mesma inversão do Normal — pill neutro por padrão,
 * amarelo (.hl) só quando não há plataforma identificada. */
#lista.A .pgh .plat{padding:1px 6px;border-radius:9px;font-size:.86em;font-weight:700;border:1px solid var(--botao-bd);background:var(--botao-bg);color:var(--botao-tx)}
#lista.A .pgh .plat.hl{background:var(--amarelo-bg);color:var(--amarelo);border-color:var(--amarelo-bd)}
#lista.A .pgh .nome{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#lista.A .pgh .chip{font-weight:600;font-size:.82em;padding:0 5px;border-radius:4px;white-space:nowrap}
#lista.A .pgh .chip.cot{color:var(--azul);background:var(--azul-bg);border:1px solid var(--azul-bd)}
/* C14 (emenda §12.5): nota com texto mais proeminente (fundo amarelo cheio). */
#lista.A .pgh .chip.nota{font-weight:800;color:var(--texto);background:var(--hl-amarelo);border:1px solid var(--amarelo-bd)}
#lista.A .pgh .chip.ok{color:var(--verde);background:var(--verde-bg);border:1px solid var(--verde-bd)}
#lista.A .pgh .chip.morto{background:var(--lock);color:var(--fraco)}
#lista.A .pgh .resumo{font-weight:500;color:var(--fraco);font-size:.82em;white-space:nowrap}
/* Round 3: seletor de estado também no compacto (antes só no Normal) */
#lista.A .pgh select.estado{font-size:.82em;font-weight:700;border:1px solid var(--botao-bd);background:var(--botao-bg);color:var(--botao-tx);border-radius:5px;padding:1px 3px;flex:none;max-width:98px;cursor:pointer}
#lista.A .pgh .estado.ganho{background:var(--verde-bg);color:var(--verde);border-color:var(--verde-bd)}
#lista.A .pgh .estado.perdido{background:var(--vermelho-bg);color:var(--vermelho);border-color:var(--vermelho-bd)}
#lista.A .pgh .estado.morto{background:var(--lock);color:var(--fraco)}

/* colunas fixas: nº · descrição · marca · qtd · preço/total · ref — ALINHAM
 * entre pregões (mesmo template em toda a lista). Marca era 92px fixos e
 * truncava "ELBER - CSV 360" / "HOSPITALARE HSP 2004" (usuário, 07/09/2026:
 * "descrição pode ser menor, pro marca ser maior"): descrição e marca agora
 * dividem o espaço flexível (1.1fr / 1fr) e as duas crescem com a janela. */
#lista.A .row{position:relative;display:grid;grid-template-columns:26px 1.1fr 1fr 30px 76px 46px;align-items:center;column-gap:6px;padding:1px 4px;border-radius:3px}
#lista.A .row.head{color:var(--fraco);font-size:.78em;text-transform:uppercase;letter-spacing:.04em;font-weight:700;border-bottom:1px solid var(--linha);padding-bottom:2px;margin-top:2px}
#lista.A .row:not(.head):nth-child(even){background:var(--zebra)}
#lista.A .row:hover:not(.head){background:var(--sel-bg)}
#lista.A .num{font-weight:700;color:var(--corpo);font-variant-numeric:tabular-nums;white-space:nowrap}
#lista.A .desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#lista.A .mca{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--corpo)}
#lista.A .qt,#lista.A .pr,#lista.A .rf{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
#lista.A .pr{font-weight:700}
#lista.A .rf{color:var(--fraco);font-size:.94em}
#lista.A .desc.verm,#lista.A .mca.verm,#lista.A .pr.verm{color:var(--vermelho)}
#lista.A .row.ganho{background:var(--verde-bg)!important}
/* IGNT0093: ganho mais destacado — negrito + borda verde à esquerda */
#lista.A .row.ganho{font-weight:700;box-shadow:inset 4px 0 0 var(--verde)}
#lista.A .row.ganho .num{color:var(--verde)}
/* IGNT0093: colapsar no compacto — mesmo chev/pref do Normal */
#lista.A .pgh .chev{cursor:pointer;color:var(--fraco);width:14px;text-align:center;transition:transform .15s;flex:none}
#lista.A .pg.fechado .pgh .chev{transform:rotate(-90deg)}
#lista.A .pg.fechado .row,#lista.A .pg.fechado .extra-item-c{display:none}
/* C10 (round 3): linha inteira tachada — `::after` desenha um risco contínuo
 * por cima de TODA a linha da grade (inclusive o input de preço e os vãos),
 * pointer-events:none para não atrapalhar a edição. */
#lista.A .row.perdido{color:var(--fraco)}
#lista.A .row.perdido::after{content:"";position:absolute;left:2px;right:2px;top:50%;border-top:1.5px solid var(--fraco);pointer-events:none;z-index:1}
#lista.A .row.perdido .arr-compacto{opacity:.65;background:transparent}
/* C5/C12 (emenda §12.5) — preço/arremate editáveis inline na coluna "pr" da
 * grade compacta: input estreito, alinhado à direita, tabular. Ganho usa o
 * mesmo grifo amarelo do docx; preço alterado ganha a borda laranja. */
#lista.A .arr-compacto{width:100%;border:1px solid var(--linha);background:var(--edit);color:var(--texto);border-radius:3px;padding:0 3px;text-align:right;font:inherit;font-weight:700;font-variant-numeric:tabular-nums}
#lista.A .arr-compacto.preco-inp.alterado{border-color:var(--laranja)}
#lista.A .arr-compacto.ganho-amarelo{background:var(--hl-amarelo);border-color:var(--amarelo-bd);color:var(--texto)}
#lista.A .arr-compacto::placeholder{color:var(--fraco);font-weight:400}
#lista.A .row.rod{display:flex;gap:12px;font-size:.9em;color:var(--corpo);padding:2px 4px;border-top:1px dashed var(--linha)}
#lista.A .row.rod b{font-variant-numeric:tabular-nums}

/* ✓ ✗ … no hover — sobreposto (a grade não reserva coluna para eles) */
#lista.A .ac{position:absolute;right:2px;top:0;bottom:0;display:none;align-items:center;gap:1px;background:var(--card);border:1px solid var(--linha);border-radius:3px;padding:0 3px}
#lista.A .row:hover .ac{display:inline-flex}
#lista.A .ac span{cursor:pointer;padding:0 3px;color:var(--fraco)}
#lista.A .ac span:hover{color:var(--texto)}

/* ---- loader (o quadrado da TCJM, sempre) ---- */
@keyframes rotate-m51{to{transform:rotate(360deg)}}
.loader{display:inline-block;animation:rotate-m51 1.4s linear infinite}

/* ============ overlays: diálogo ＋Pregão e Arquivo ============ */
.sobrepor{position:fixed;inset:0;background:rgba(10,14,18,.45);display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:20}
.sobrepor[hidden]{display:none}
.dlg{max-width:640px;width:100%;margin:0 auto;background:var(--bg);border:1px solid var(--linha);border-radius:10px;box-shadow:var(--sombra);overflow:hidden;max-height:85vh;display:flex;flex-direction:column}
.dlg .cabd{padding:10px 14px;background:var(--painel);border-bottom:1px solid var(--linha);font-weight:700;display:flex;gap:8px;align-items:center}
.dlg .busca{margin:10px 14px;display:flex;gap:8px;align-items:center}
.dlg .busca input[type=text]{flex:1;border:1px solid var(--botao-bd);background:var(--bg);color:var(--texto);border-radius:6px;padding:6px 10px;font:inherit}
/* C7 (emenda §12.5) — checkbox "só hoje" do diálogo ＋ Pregão */
.dlg .busca .chk-sohoje{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--fraco);white-space:nowrap;cursor:pointer}
.dlg .busca .chk-sohoje input{cursor:pointer}
.dlg .lista{margin:0 14px 10px;border:1px solid var(--linha);border-radius:6px;overflow:auto;flex:1}
.dlg .lin{display:grid;grid-template-columns:22px 56px 1fr auto;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--linha);font-size:12.5px;cursor:pointer}
.dlg .lin:last-child{border-bottom:none}
.dlg .lin.ja{color:var(--fraco);cursor:default}
.dlg .lin small{color:var(--fraco)}
.cx{width:15px;height:15px;border:2px solid var(--fraco);border-radius:3px;display:inline-grid;place-items:center;font-size:10px;color:#fff}
.cx.on{background:var(--sel);border-color:var(--sel)}
.dlg .pe{display:flex;gap:8px;justify-content:flex-end;padding:10px 14px;border-top:1px solid var(--linha);background:var(--painel)}

.pnl-arquivo{max-width:900px;width:100%}
.arq{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;padding:12px 14px;overflow:auto}
.arq .c{border:1px solid var(--linha);border-radius:8px;padding:8px 10px;background:var(--card);cursor:pointer}
.arq .c b{display:block;font-size:14px}
.arq .c small{color:var(--fraco);display:block}
.arq .c .e{font-size:10px;font-weight:800;padding:0 6px;border-radius:8px;background:#0A0A0A;color:#fff;display:inline-block;margin-top:4px}
.arq .c .e.vwm{background:#1a4fa0}
.arq .c .e.livre{background:var(--amarelo-bg);color:var(--amarelo);border:1px solid var(--amarelo-bd)}
.arq .c.hoje{outline:2px solid var(--laranja)}
.arq .c.retro small.r{color:var(--amarelo)}

.nota-edit{font:inherit;border:1px solid var(--botao-bd);border-radius:4px;padding:0 5px;background:var(--edit);color:var(--texto)}

/* Round 3: toast de "Desfazer" (ex.: pregão tirado da colinha) */
.toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%) translateY(20px);background:var(--topo-bg);color:var(--topo-tx);border-radius:8px;box-shadow:var(--sombra);padding:9px 14px;display:flex;align-items:center;gap:12px;font-size:13px;z-index:40;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
.toast-acao{background:transparent;border:1px solid var(--topo-ac);color:var(--topo-ac);border-radius:6px;padding:3px 10px;font:inherit;font-weight:700;cursor:pointer}
.toast-acao:hover{background:var(--topo-ac);color:var(--topo-bg)}

/* Round 3: painel inline do "…" no modo Compacta (revogado/suspenso/nota) */
.extra-item-c{padding:4px 6px 6px 30px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.extra-item-c .btn{background:var(--botao-bg);border:1px solid var(--botao-bd);color:var(--botao-tx);border-radius:5px;padding:2px 8px;font-size:.9em;cursor:pointer}

.oculto{display:none !important}

/* Colinha na NUVEM (emenda §14.9, 14/09/2026): o Worker não tem índice nem
   disco — os gestos que dependem deles somem (o Worker responde "só no
   desktop" se alguém chamar mesmo assim). */
body.web #btnAdicionar,body.web #btnDocx,body.web button.reler{display:none !important}
/* o pedido de senha + nome da Colinha na nuvem (uma vez por navegador) */
.dlg-login{max-width:340px}
.corpo-login{padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.corpo-login label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700}
.corpo-login input{font:inherit;font-weight:400;font-size:14px;padding:6px 8px;border:1px solid var(--botao-bd);border-radius:6px;background:var(--botao-bg);color:var(--botao-tx)}
.erro-login{margin:0;color:#c62828;font-weight:700;font-size:12px}
