/* nx-tabela.css — estilo do kit de tabela padrão da casa (NEXUM), 29/10/2026.
   Como ativar numa página gerada:
     <link rel="stylesheet" href="/static/nx-tabela.css">
     <script defer src="/static/nx-tabela.js"></script>
     ...e pôr class="nx-tab" em cada <table> de dados.
   O visual herda o tema da página pelas variáveis da casa (--surf, --line, --ink...)
   com fallback neutro: funciona em página clara e escura sem cor fixa berrante. */

.nx-tab-wrap{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}
.nx-tab-barra{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 8px;font-size:.88em;position:relative}
.nx-tab-busca{flex:0 1 240px;min-width:150px;padding:5px 10px;border:1px solid var(--line,rgba(128,128,128,.4));
  border-radius:8px;background:transparent;color:inherit;font:inherit;font-size:.95em}
.nx-tab-busca::placeholder{color:var(--ink3,rgba(128,128,128,.8))}
.nx-tab-conta{color:var(--ink3,rgba(128,128,128,.9));white-space:nowrap}
.nx-tab-cols{margin-left:auto;padding:4px 10px;border:1px solid var(--line,rgba(128,128,128,.4));border-radius:8px;
  background:transparent;color:inherit;font:inherit;font-size:.95em;cursor:pointer;white-space:nowrap}
.nx-tab-cols:hover,.nx-tab-busca:focus{border-color:var(--ink3,rgba(128,128,128,.8));outline:none}

.nx-tab-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:60;min-width:220px;max-height:60vh;overflow:auto;
  background:var(--surf,#fff);color:inherit;border:1px solid var(--line,rgba(128,128,128,.35));border-radius:10px;
  box-shadow:0 6px 24px rgba(0,0,0,.18);padding:6px}
@media (prefers-color-scheme:dark){.nx-tab-menu{background:var(--surf,#1c1f24)}}
.nx-tab-menu .nx-tab-mtit{font-size:.8em;color:var(--ink3,rgba(128,128,128,.9));padding:4px 8px 6px}
.nx-tab-mlin{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:6px}
.nx-tab-mlin:hover{background:var(--line,rgba(128,128,128,.14))}
.nx-tab-mlin label{flex:1;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nx-tab-mlin input{cursor:pointer}
.nx-tab-mv{border:1px solid var(--line,rgba(128,128,128,.35));background:transparent;color:inherit;border-radius:6px;
  width:26px;height:24px;line-height:1;cursor:pointer;font-size:.9em;padding:0}
.nx-tab-mv:disabled{opacity:.3;cursor:default}

table.nx-tab th{cursor:pointer;user-select:none;-webkit-user-select:none}
table.nx-tab th .nx-seta{display:inline-block;margin-left:4px;font-size:.72em;opacity:.4;transform:translateY(-1px)}
table.nx-tab th.nx-on .nx-seta{opacity:1}
tr.nx-oculta{display:none}

/* 30/10/2026 — filtro de fora, arrastar coluna e filtro de coluna no molde do Sankhya (lei do Diogo) */
tr.nx-fora{display:none}
.nx-tab-etqs{display:contents}
.nx-tab-etq{padding:3px 9px;border:1px solid var(--azul,#2a78d6);border-radius:999px;background:var(--azul-s,rgba(42,120,214,.12));
  color:var(--azul,#2a78d6);font:inherit;font-size:.92em;cursor:pointer;white-space:nowrap}
.nx-tab-etq:hover{text-decoration:line-through}
.nx-tab-etq0{background:transparent}
.nx-tab-fant{position:fixed;z-index:100;pointer-events:none;padding:4px 10px;border-radius:8px;font-size:13px;
  background:var(--azul,#2a78d6);color:#fff;box-shadow:0 4px 14px rgba(0,0,0,.25);white-space:nowrap}
table.nx-tab th.nx-arrasta{opacity:.45}
table.nx-tab th.nx-alvo-e{box-shadow:inset 3px 0 0 var(--azul,#2a78d6)}
table.nx-tab th.nx-alvo-d{box-shadow:inset -3px 0 0 var(--azul,#2a78d6)}
body.nx-arrastando,body.nx-arrastando *{cursor:grabbing!important;user-select:none!important;-webkit-user-select:none!important}
table.nx-tab th .nx-funil{display:inline-block;margin-left:3px;padding:0 4px;border:1px solid transparent;border-radius:5px;
  background:transparent;color:inherit;font:inherit;font-size:.85em;line-height:1.3;opacity:.45;cursor:pointer;vertical-align:baseline}
table.nx-tab th .nx-funil:hover{opacity:1;border-color:var(--line,rgba(128,128,128,.4))}
table.nx-tab th.nx-filtrada .nx-funil{opacity:1;background:var(--azul,#2a78d6);color:#fff;border-color:var(--azul,#2a78d6)}
.nx-tab-fmenu{position:fixed;z-index:120;width:270px;max-width:calc(100vw - 16px);background:var(--surf,#fff);color:var(--ink,#111);
  border:1px solid var(--line,rgba(128,128,128,.35));border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.22);padding:8px;
  font:14px/1.4 Inter,system-ui,sans-serif;text-align:left;font-weight:400;letter-spacing:0;text-transform:none}
@media (prefers-color-scheme:dark){.nx-tab-fmenu{background:var(--surf,#1c1f24);color:var(--ink,#eee)}}
.nx-f-tit{font-weight:600;font-size:13px;padding:2px 6px 6px;color:var(--ink3,rgba(128,128,128,.95))}
.nx-f-ord{display:block;width:100%;text-align:left;border:0;background:transparent;color:inherit;font:inherit;padding:5px 6px;border-radius:6px;cursor:pointer}
.nx-f-ord:hover{background:var(--line,rgba(128,128,128,.14))}
.nx-f-busca{display:block;width:100%;box-sizing:border-box;margin:6px 0;padding:6px 9px;border:1px solid var(--line,rgba(128,128,128,.4));
  border-radius:7px;background:transparent;color:inherit;font:inherit}
.nx-f-tudo,.nx-f-lista label{display:flex;align-items:center;gap:7px;padding:3px 6px;border-radius:6px;cursor:pointer;white-space:nowrap}
.nx-f-tudo{border-bottom:1px solid var(--line,rgba(128,128,128,.25));border-radius:0;padding-bottom:6px;margin-bottom:2px}
.nx-f-lista{max-height:260px;overflow:auto;overscroll-behavior:contain}
.nx-f-lista label:hover{background:var(--line,rgba(128,128,128,.14))}
.nx-f-lista span,.nx-f-tudo span{flex:1;overflow:hidden;text-overflow:ellipsis}
.nx-f-lista small{color:var(--ink3,rgba(128,128,128,.9));font-size:12px}
.nx-f-tudo input,.nx-f-lista input{margin:0;width:15px;height:15px;accent-color:var(--azul,#2a78d6);flex:none}
.nx-f-nada{padding:8px 6px;color:var(--ink3,rgba(128,128,128,.9))}
.nx-f-pe{display:flex;justify-content:flex-end;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line,rgba(128,128,128,.25))}
.nx-f-pe button{font:inherit;font-size:13px;padding:6px 14px;border-radius:7px;cursor:pointer;border:1px solid var(--line,rgba(128,128,128,.4));
  background:transparent;color:inherit}
.nx-f-pe .nx-f-ok{background:var(--azul,#2a78d6);border-color:var(--azul,#2a78d6);color:#fff}

/* 03/11/2026 — largura da coluna arrastando a borda do título, igual ao Excel (pedido do Diogo) */
table.nx-tab th .nx-redim{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;z-index:4;touch-action:none}
table.nx-tab th .nx-redim::after{content:"";position:absolute;top:20%;bottom:20%;right:0;width:2px;border-radius:2px;background:transparent}
table.nx-tab th:hover .nx-redim::after{background:var(--line2,rgba(128,128,128,.45))}
table.nx-tab th .nx-redim:hover::after,table.nx-tab th .nx-redim.on::after{background:var(--azul,#2a78d6);top:0;bottom:0}
body.nx-redimensionando,body.nx-redimensionando *{cursor:col-resize!important;user-select:none!important;-webkit-user-select:none!important}

/* 04/11/2026 — GRADE do Sankhya/Excel: linha e coluna sempre visíveis (pedido do Diogo: "não tem as linhas e
   as colunas claras"). Quem desenha a grade é o kit, não a página — toda tabela da casa fica igual.
   Moldura: a caixa (.nx-tab-wrap) faz a borda de cima e da esquerda; cada célula faz a sua direita e a de baixo.
   Assim coluna escondida, linha filtrada ou total no fim nunca deixam linha dobrada nem faltando.
   :not(.nx-x) só sobe o peso da regra pra vencer o estilo próprio de cada página. Cor da linha: --nx-grade. */
div.nx-tab-wrap:not(.nx-x){border-right:0!important;border-bottom:0!important;border-top:1px solid var(--nx-grade,rgba(128,128,128,.38));border-left:1px solid var(--nx-grade,rgba(128,128,128,.38));border-radius:6px}
table.nx-tab:not(.nx-x){border-collapse:separate;border-spacing:0;min-width:100%}
table.nx-tab:not(.nx-x)>*>tr>th,table.nx-tab:not(.nx-x)>*>tr>td{border-right:1px solid var(--nx-grade,rgba(128,128,128,.38));
  border-bottom:1px solid var(--nx-grade,rgba(128,128,128,.38))}
table.nx-tab:not(.nx-x)>thead>tr>th{background:var(--surf2,rgba(128,128,128,.10));
  border-bottom:2px solid var(--nx-grade2,rgba(128,128,128,.55));font-weight:600}
table.nx-tab:not(.nx-x)>tbody>tr:not(.nx-total):hover>td{background:var(--nx-sobre,rgba(42,120,214,.08))}
/* respiro e cabeçalho de uma linha só, igual ao Sankhya — com peso ZERO (:where), então a página que já tem
   o seu espaçamento continua mandando nele; só a tabela que não disse nada ganha o padrão. */
:where(table.nx-tab) :where(th,td){padding:6px 10px;vertical-align:top}
:where(table.nx-tab) :where(th){text-align:left;white-space:nowrap;vertical-align:bottom}
:where(table.nx-tab) :where(th.n,td.n){text-align:right}
