/* ============================================================
   M��dulo de Estoque ��� spec_estoque.md ��5 e ��10
   Faixa de indicadores, barra de abas, cabe��alho e cards.

   Reaproveita os tokens de cor do material-ui-extensions.css
   (--mui-success-*, --mui-warning-*, --mui-error-*, --mui-info-*).
   ============================================================ */

:root {
	/* Segue a marca do sistema (Sischef #f10b5c / Sisagil #588DA1) em vez de cor fixa:
	   --primary-color e --selected-color j�� s��o trocados pelos arquivos de tema,
	   inclusive no modo escuro. */
	--est-primary: var(--primary-color, #f10b5c);
	--est-primary-hover: var(--primary-color-hover, #d00950);
	--est-primary-soft: var(--selected-color, rgba(241, 11, 92, .08));

	/* Acento secund��rio, para diferenciar cards de KPI entre si */
	--est-accent: var(--mui-info-main, #0288d1);
	--est-accent-soft: var(--mui-info-light, #e5f6fd);

	--est-surface: #fff;
	--est-surface-alt: #f8f9fc;
	--est-border: #e6e8f0;
	--est-border-soft: #f0f1f7;
	--est-text: #1f2937;
	--est-text-2: #6b7280;
	--est-text-3: #9ca3af;
	--est-radius: 12px;
	--est-radius-sm: 8px;
	--est-shadow: 0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04);
	--est-shadow-lg: 0 10px 30px rgba(16, 24, 40, .12);
}

/* ������ ��5.1 Faixa de indicadores ��������������������������������������������������������������������������������������������� */
.est-strip {
	display: grid;
	grid-template-columns: 1fr 1fr 1.25fr;
	gap: 16px;
	margin-bottom: 16px;
}

/* faixa de cor embaixo, n��o na lateral */
.est-kpi {
	background: var(--est-surface);
	border: 1px solid var(--est-border);
	border-bottom: 4px solid var(--est-primary);
	border-radius: var(--est-radius);
	padding: 18px 20px;
	position: relative;
	box-shadow: var(--est-shadow);
	min-height: 104px;
}

/* segundo KPI com acento pr��prio, para os cards n��o se confundirem */
.est-kpi-info { border-bottom-color: var(--est-accent); }

.est-kpi-label {
	font-size: 12px;
	color: var(--est-text-2);
	font-weight: 500;
}

.est-kpi-value {
	font-size: 30px;
	font-weight: 700;
	letter-spacing: -.5px;
	line-height: 1.2;
	margin-top: 2px;
	color: var(--est-text);
}

.est-kpi-sub {
	font-size: 12.5px;
	margin-top: 4px;
	color: var(--est-text-2);
}

.est-kpi-ico {
	position: absolute;
	right: 18px;
	top: 18px;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	background: var(--est-primary-soft);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--est-primary);
	/* Conten����o: se a fonte de ��cones n��o carregar, o span vira TEXTO no tamanho do ��cone
	   e vaza para fora do c��rculo, atravessando o card inteiro (foi o que aconteceu com o
	   "payments" em 11/08/2026). Aqui ele fica preso aos 42px, e no pior caso some. */
	overflow: hidden;
}

.est-kpi-info .est-kpi-ico {
	background: var(--est-accent-soft);
	color: var(--est-accent);
}

.est-alerts {
	background: var(--est-surface);
	border: 1px solid var(--est-border);
	border-radius: var(--est-radius);
	padding: 14px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	box-shadow: var(--est-shadow);
}

.est-alert {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	padding: 12px 14px;
	border-radius: var(--est-radius-sm);
}

.est-alert-ico {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	color: #fff;
}

.est-alert-ico .material-symbols-outlined { font-size: 16px; }

.est-alert-txt { display: flex; flex-direction: column; }

.est-alert-title {
	font-weight: 600;
	font-size: 14px;
	line-height: 1.3;
}

/* o link de a����o �� o subt��tulo do alerta; s�� aparece para quem tem a role da tela */
.est-alert-link {
	font-size: 12.5px;
	margin-top: 2px;
	text-decoration: underline;
	display: inline-block;
}

.est-alert-link:hover { filter: brightness(.85); }

/* subt��tulo n��o-clic��vel (usado no estado "nenhum alerta") */
.est-alert-sub {
	font-size: 12.5px;
	margin-top: 2px;
}

.est-alert-danger { background: #fef2f2; }
.est-alert-danger .est-alert-ico { background: #fca5a5; }
.est-alert-danger .est-alert-title,
.est-alert-danger .est-alert-link { color: var(--mui-error-main, #d32f2f); }

.est-alert-warn { background: #fefce8; }
.est-alert-warn .est-alert-ico { background: #fcd34d; }
.est-alert-warn .est-alert-title,
.est-alert-warn .est-alert-link { color: var(--mui-warning-dark, #e65100); }

.est-alert-info { background: #eff6ff; }
.est-alert-info .est-alert-ico { background: #93c5fd; }
.est-alert-info .est-alert-title,
.est-alert-info .est-alert-link { color: var(--mui-info-main, #0288d1); }

/* Excesso (saldo acima do ideal): o unico alerta da faixa que aponta para CIMA.

   Nao reusa o .est-alert-info porque aquele e do "abaixo do ideal", a condicao oposta -- duas
   faixas contrarias na mesma cor se leriam como o mesmo aviso repetido. Fica no teal, que nao
   colide com o vermelho da ruptura, o amarelo do minimo, o azul do ideal nem o verde do "sem
   alerta", e nao puxa urgencia: sobra pede atencao, nao acao imediata. */
.est-alert-excesso { background: #ecfeff; }
.est-alert-excesso .est-alert-ico { background: #67e8f9; }
.est-alert-excesso .est-alert-title,
.est-alert-excesso .est-alert-link { color: #0e7490; }

.est-alert-ok { background: var(--mui-success-light, #edf7ed); }
.est-alert-ok .est-alert-ico { background: #86c58a; }
.est-alert-ok .est-alert-title,
.est-alert-ok .est-alert-sub { color: var(--mui-success-dark, #1b5e20); }

/* ������ ��5.2 Barra de abas ������������������������������������������������������������������������������������������������������������������ */
ul.est-tabs {
	display: flex;
	gap: 6px;
	list-style: none;
	margin: 0 0 18px 0;
	padding: 0 8px;
	background: var(--est-surface);
	border: 1px solid var(--est-border);
	border-radius: var(--est-radius);
	box-shadow: var(--est-shadow);
	overflow-x: auto;
}

ul.est-tabs > li { list-style: none; margin: 0; }

a.est-tab {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 16px 14px;
	font-size: 14.5px;
	font-weight: 500;
	color: #4b5563;
	white-space: nowrap;
	border-bottom: 3px solid transparent;
	text-decoration: none;
	transition: color .15s;
}

a.est-tab:hover { color: var(--est-text); text-decoration: none; }

a.est-tab.active {
	color: var(--est-primary);
	font-weight: 600;
	border-bottom-color: var(--est-primary);
}

.est-tab-ico { font-size: 18px; }

/* ��5.3 O cabecalho de pagina (.est-page-head, .est-sub) saiu em 18/08/2026: as telas do
   modulo usam a barraLinks do template, e essas regras nao eram aplicadas por ninguem. */
/* ��5.5 O CARD PADRAO do primeiro desenho do hub saiu em 18/08/2026 -- cerca de 200 linhas.

   Era a grade de cartoes com faixa de cor embaixo (.est-cards/.est-card e variacoes), as
   metricas (.est-metric-*), os botoes redondos de icone (.est-icon-*), os campos do modal de
   cadastro (.est-form-*), o rodape do dialog, o estado vazio (.est-empty*) e o par chave/valor
   (.est-kv). Nada disso sobreviveu as telas de hoje: a listagem virou a lista de cards do
   acerto (.est-cardp/.est-cardl) e os locais viraram p:dataTable.

   Conferido antes de apagar: nenhuma das classes aparece em xhtml, js ou java do projeto, e
   nenhuma classe do modulo e montada dinamicamente (nao existe 'est-' + variavel no codigo),
   que e o que tornaria a varredura mentirosa. */

/* ������ Modal de produtos do alerta (��5.1) ������������������������������������������������������������������ */
.est-dialog-body { padding: 4px 2px 8px; }

/* .est-dialog-title saiu em 18/08/2026 (orfa). O .est-dialog-body e o .est-dialog-filtros
   abaixo continuam em uso pelo modal do alerta. */
/* filtros do modal ��� mesmo padr��o da barra de filtros (��5.4) */
.est-dialog-filtros {
	display: flex;
	gap: 14px;
	align-items: flex-end;
	flex-wrap: wrap;
	background: var(--est-surface-alt);
	border: 1px solid var(--est-border-soft);
	border-radius: var(--est-radius);
	padding: 14px 16px;
	margin-bottom: 14px;
}

.est-filtro-campo {
	display: flex;
	flex-direction: column;
	flex: 1 1 180px;
	min-width: 150px;
}

.est-filtro-campo label {
	font-size: 13px;
	color: var(--est-text-2);
	margin-bottom: 5px;
}

.est-dialog-filtros .est-input {
	width: 100%;
	box-sizing: border-box;
	background: var(--est-surface);
	border: 1px solid #d7dae5;
	border-radius: 6px;
	padding: 7px 10px;
	font-size: 14px;
	font-family: inherit;
	color: var(--est-text);
}

.est-filtro-acoes {
	display: flex;
	gap: 8px;
	flex: 0 0 auto;
}

/* C��lulas empilhadas do modal de m��nimo: "M��nimo: 10 / Ideal: 20" na coluna Estoque
   e as faltas correspondentes na coluna Comprar. O nowrap + line-height igual nos
   dois lados �� o que mant��m cada linha lendo em par com a sua vizinha. */
.est-ref-linha {
	white-space: nowrap;
	line-height: 1.6;
}

.est-ref-rotulo {
	color: var(--est-text-2);
	font-size: 12px;
}

.est-dialog-table { margin-bottom: 10px; }

.est-num-neg { color: var(--mui-error-main, #d32f2f); font-weight: 600; }

.est-dialog-aviso {
	font-size: 12.5px;
	color: var(--est-text-2);
	background: var(--est-surface-alt);
	border-radius: var(--est-radius-sm);
	padding: 10px 12px;
	margin-top: 6px;
}

/* ������ Chips de status ��������������������������������������������������������������������������������������������������������������������������� */
.est-chip {
	display: inline-flex;
	align-items: center;
	font-size: 12.5px;
	font-weight: 500;
	padding: 4px 12px;
	border-radius: 14px;
	white-space: nowrap;
}

.est-chip-ok      { background: var(--mui-success-light, #edf7ed); color: var(--mui-success-dark, #1b5e20); }
.est-chip-rupt    { background: #fee2e2; color: var(--mui-error-main, #d32f2f); }
.est-chip-neutro  { background: #f3f4f6; color: #4b5563; }

/* ������ Responsivo ������������������������������������������������������������������������������������������������������������������������������������������ */
@media (max-width: 1240px) {
	.est-strip { grid-template-columns: 1fr 1fr; }
	.est-alerts { grid-column: 1 / -1; }
}

@media (max-width: 680px) {
	.est-strip { grid-template-columns: 1fr; }
	.est-kpi-value { font-size: 26px; }
}

/* ������ Barra de a����es da tela ������������������������������������������������������������������������������������������������
   Faixa de bot��es que fica entre a barra de busca e o conte��do.
   Nasceu no acerto (.est-acerto-barra-acoes) e virou compartilhada quando a
   "Transfer��ncia entre empresas" foi para a Entrada/Sa��da Manual.
   Hoje quem a usa �� S�� a Entrada/Sa��da Manual: em 17/08/2026 o acerto levou o
   "Importar contagem (CSV)" para a barra de resumo da lista, e uma faixa inteira
   para um bot��o s�� virava espa��o em branco entre os filtros e os cards.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-barra-acoes {
	display: flex;
	justify-content: flex-end;
	margin: 8px 0;
}

/* ������ Bot��o secund��rio: ferramenta, n��o a����o ������������������������������������������������
   At�� 18/08/2026 o "Importar contagem (CSV)" era amarelo cheio (.est-btn-amarelo). Chamava
   mais aten����o que o "Salvar tudo", que �� a a����o principal da tela, e o amarelo n��o existe na
   palheta do m��dulo ��� entrava como uma cor a mais, sem significar nada. Importar �� ferramenta:
   precisa ser ach��vel, n��o disputada.

   Agora usa o ACENTO do m��dulo (--est-accent) em vers��o tingida: fundo suave, borda e texto na
   cor. Tem identidade e se acha na barra, mas pesa menos que o rosa cheio do "Salvar tudo" ��� a
   hierarquia fica preenchido (a����o principal) > tingido (ferramenta) > link (descartar).

   Neutro puro, que foi a primeira tentativa, n��o serve: sem cor nenhuma o bot��o l�� como
   desabilitado. Cor forte s�� vale enquanto for a ��nica da tela; aus��ncia de cor tamb��m comunica,
   e comunica a coisa errada.

   Como sai de token, acompanha claro e escuro sozinho.

   Precisa do !important e do par .est-btn-secundario.ui-button: o p:commandButton do
   PrimeFaces 3.5 sai com .ui-state-default do tema, que pinta fundo, borda e cor. Uma classe
   solta perderia a disputa. Os estados de hover/focus/active s��o repetidos porque o tema troca
   o fundo em cada um deles. */
.est-btn-secundario.ui-button,
.est-btn-secundario.ui-button:focus,
.est-btn-secundario.ui-button:active {
	background: var(--est-accent-soft) !important;
	border: 1px solid var(--est-accent) !important;
	color: var(--est-accent) !important;
}

/* No hover ele preenche: �� o que d�� a sensa����o de clic��vel sem precisar de cor forte parado. */
.est-btn-secundario.ui-button:hover {
	background: var(--est-accent) !important;
	border: 1px solid var(--est-accent) !important;
	color: #fff !important;
}

/* o tema p��e a cor no span do r��tulo, n��o s�� no button; inherit evita repetir a cor em cada
   estado acima */
.est-btn-secundario .ui-button-text { color: inherit !important; }

/* ��cone do Font Awesome, e n��o um ui-icon do tema: o ui-icon �� sprite de IMAGEM, ent��o o
   "color" n��o o alcan��a e ele sumiria no tema escuro, onde o fundo do bot��o �� escuro. O fa ��
   fonte e herda a cor. (Mesma raz��o do V do bot��o de salvar da linha.) */
.est-btn-secundario .ui-button-icon-left { color: inherit !important; }

/* ������ ��6.1 Movimenta����o: chips de tipo ������������������������������������������������������������������
   Cores conforme o mapa da spec. A classifica����o vem do ChipMovimentoEstoque,
   que resolve CV (entrada E sa��da no mapa) pelo sinal da opera����o.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-chip-mov {
	display: inline-block;
	font-size: 11px;
	font-weight: 600;
	line-height: 1.4;
	padding: 2px 9px;
	border-radius: 12px;
	white-space: nowrap;
}

.est-chip-mov-entrada  { background: var(--mui-success-light, #edf7ed); color: var(--mui-success-dark, #1b5e20); }
.est-chip-mov-saida    { background: #fee2e2; color: var(--mui-error-main, #d32f2f); }
.est-chip-mov-transf   { background: #dbeafe; color: var(--mui-info-main, #0288d1); }
.est-chip-mov-acerto   { background: #fef3c7; color: var(--mui-warning-dark, #e65100); }
.est-chip-mov-transf-p { background: #f3f4f6; color: #4b5563; }
.est-chip-mov-estorno  { background: #f3f4f6; color: #4b5563; text-decoration: line-through; }
.est-chip-mov-neutro   { background: #f3f4f6; color: #4b5563; }

.est-chip-mov-cancelado {
	background: #fee2e2;
	color: var(--mui-error-main, #d32f2f);
}

/* o "Cancelado" fica ao lado do chip de tipo, na mesma linha */
.est-chip-mov + .est-chip-mov { margin-left: 4px; }

/* movimento cancelado: linha inteira esmaecida, sem esconder o conte��do */
tr.est-mov-cancelada > td { opacity: .55; }

.est-num-pos { color: var(--mui-success-dark, #1b5e20); }

.est-mov-qtd { font-size: 14px; font-weight: 600; }

.est-mov-un {
	color: var(--est-text-3);
	font-size: 12px;
	font-weight: 400;
}

.est-mov-acoes {
	color: var(--est-text-3);
	display: inline-flex;
	align-items: center;
	padding: 2px 4px;
	border-radius: 4px;
}

.est-mov-acoes:hover {
	color: var(--est-primary);
	background: var(--est-border-soft);
	text-decoration: none;
}

.est-mov-acoes .material-symbols-outlined { font-size: 20px; }

/* ������ Barra de filtros do m��dulo (��5.4) ���������������������������������������������������������������
   Grid que quebra sozinho: os campos t��m largura m��nima e ocupam o que sobra,
   ent��o some uma coluna por vez em vez de espremer todas.

   Nasceu na movimenta����o e desde 07/08/2026 �� o padr��o de TODAS as abas do hub:
   markup �� sempre p:outputPanel styleClass="well well-small est-filtros", com uma
   div.est-filtros-linha por linha e div.est-filtro-campo por campo (r��tulo em cima).
   O acerto tinha uma barra pr��pria e a confer��ncia montava a dela com h:panelGrid ���
   tr��s desenhos de filtro no mesmo m��dulo, que liam como tr��s sistemas.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
/* Tudo escopado em .est-filtros de prop��sito: .est-filtro-campo j�� existe para os
   filtros do modal de alertas (��5.1.1), com outra medida de label e min-width.
   Sem o escopo, esta regra venceria l�� tamb��m por vir depois no arquivo. */
.est-filtros { margin-bottom: 12px; }

/* Grid de colunas FIXAS, n��o flex: com flex o ��ltimo campo de uma linha incompleta
   estica para ocupar a sobra (a Opera����o sozinha virava uma faixa da largura toda).
   Em grid, a coluna mant��m a largura mesmo com a linha pela metade. */
.est-filtros-linha {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px 14px;
	align-items: end;
}

.est-filtros .est-filtro-campo {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.est-filtros .est-filtro-campo label {
	color: var(--est-text-2);
	font-size: 11px;
	margin-bottom: 3px;
}

/* os selects/autocomplete do PrimeFaces trazem largura pr��pria; sem isto eles
   estouram a coluna do grid em vez de acompanh��-la */
.est-filtros .est-filtro-campo .ui-autocomplete,
.est-filtros .est-filtro-campo .ui-selectonemenu,
.est-filtros .est-filtro-campo .ui-calendar,
.est-filtros .est-filtro-campo input,
.est-filtros .est-filtro-campo select {
	width: 100%;
	box-sizing: border-box;
	max-width: 100%;
}

/* o p:calendar envolve o input num span inline: sem virar bloco, a largura de 100% acima
   seria 100% de um elemento que encolhe at�� o conte��do, e o campo sairia estreito */
.est-filtros .est-filtro-campo .ui-calendar { display: block; }

/* Linha que termina com o bot��o, na mesma faixa dos campos.
   A ��ltima trilha �� 'auto': o bot��o ocupa a largura dele e nada mais, enquanto os campos
   continuam dividindo o resto por igual. Com uma quarta trilha 1fr o "Filtrar" viraria uma
   barra do tamanho de um campo. Serve para as telas de tr��s filtros (acerto, confer��ncia),
   onde uma linha s�� para o bot��o deixava um v��o in��til embaixo. */
.est-filtros-linha-acao { grid-template-columns: repeat(3, 1fr) auto; }

/* Abaixo de 1100px o .est-filtros-linha volta a mandar (mesma especificidade, vem depois):
   os campos passam a duas colunas e o bot��o desce junto, em vez de espremer tudo numa
   faixa s��. �� de prop��sito que o modificador N��O seja repetido l�� dentro. */
@media (max-width: 1100px) {
	.est-filtros-linha { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
	.est-filtros-linha { grid-template-columns: 1fr; }
}

/* as a����es ocupam uma c��lula do grid, alinhadas com os campos ao lado; por isso
   flex-direction row e n��o column como os demais .est-filtro-campo */
.est-filtros .est-filtros-acoes {
	flex-direction: row;
	gap: 8px;
	align-items: flex-end;
}

/* Acima de 1100px a trilha do bot��o �� 'auto': ele fica do tamanho do texto, encostado nos
   campos, e isso �� o desenho certo ��� uma faixa larga s�� para "Filtrar" seria peso �� toa. */

/* Abaixo disso a coisa muda de figura. O grid cai para duas colunas e o bot��o passa a dividir
   a linha com o "Local de Estoque", numa c��lula de meia tela. Do tamanho do texto ele vira um
   ret��ngulo pequeno perdido ao lado de um campo largo ��� l��-se como desalinhamento, n��o como
   escolha. Aqui ele estica e ocupa a c��lula, que �� o que o faz parecer par do campo ao lado.
   A 640px o grid vira uma coluna s�� e a mesma regra o deixa na largura inteira, que �� o
   comportamento esperado num toque. */
@media (max-width: 1100px) {
	.est-filtros .est-filtros-acoes { width: 100%; }

	.est-filtros .est-filtros-acoes .ui-button,
	.est-filtros .est-filtros-acoes .est-btn-filtrar {
		flex: 1 1 auto;
		justify-content: center;
	}
}

/* Filtrar enquanto a busca corre: apagado e sem cursor de clique. O JS �� quem p��e e tira o
   disabled ��� o tema do PrimeFaces j�� esmaece o ui-state-disabled, mas a regra fica expl��cita
   porque quem l�� a tela precisa entender que o bot��o est�� fora de servi��o, e n��o quebrado. */
.est-filtros .est-btn-filtrar[disabled] {
	cursor: default;
	opacity: 0.5;
}


/* ������ ��6.1 Linha da listagem de movimenta����o ������������������������������������������������
   Cada c��lula empilha mais de um dado: a hierarquia �� dada por peso e cor, n��o
   por coluna. Reaproveita os tokens --est-text* em vez de cores fixas, para o
   tema escuro continuar funcionando.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-mov-col-produto { max-width: 460px; }

/* R��tulo do produto ��� "1729138 - GORJETA" ��� em TODAS as listagens do m��dulo (��5.4.1).
   Id e descri����o num link s��, tudo em negrito; display:block para o text-overflow
   funcionar (ele n��o age em elemento inline).
   Quem escreve o markup �� o comp:produtoEstoque; esta �� a ��nica regra que o veste. */
.est-produto-nome,
.est-produto-nome:hover {
	color: var(--est-text);
	display: block;
	font-size: 14px;
	/* bold (700), e n��o 600: �� o mesmo peso da .negrito do style.css, que �� o negrito do
	   projeto inteiro. A confer��ncia e o di��logo de transfer��ncia usavam .negrito antes
	   desta padroniza����o, e com 600 o nome do produto sa��a visivelmente mais leve do que
	   era ��� a fonte da interface tem os dois pesos, ent��o a diferen��a aparece. */
	font-weight: bold;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.est-produto-nome:hover { text-decoration: underline; }

/* Segunda linha da c��lula do produto: grupo, c��digo de barras, notas. Mesmo tratamento do
   .est-mov-origem da movimenta����o ��� a hierarquia vem de peso e cor, n��o de coluna. */
.est-produto-apoio {
	color: var(--est-text-2);
	display: block;
	font-size: 12px;
	margin-top: 2px;
}

.est-mov-origem {
	color: var(--est-text-2);
	display: block;
	font-size: 12px;
	margin-top: 2px;
}

.est-mov-pessoa {
	align-items: center;
	color: var(--est-text-2);
	display: flex;
	font-size: 12px;
	gap: 4px;
	margin-top: 2px;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.est-mov-pessoa .material-symbols-outlined {
	color: var(--est-text-3);
	flex: 0 0 auto;
	font-size: 15px;
}

.est-mov-obs {
	color: var(--est-text-3);
	display: block;
	font-size: 11px;
	font-style: italic;
	margin-top: 2px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Unit. / custo e Total: valor forte em cima, refer��ncia fraca embaixo */
.est-mov-valor {
	color: var(--est-text);
	font-size: 14px;
	font-weight: 600;
}

.est-mov-custo {
	color: var(--est-text-3);
	display: block;
	font-size: 12px;
}

.est-mov-total {
	color: var(--est-text);
	font-size: 15px;
	font-weight: 700;
	white-space: nowrap;
}

/* ������ ��6.1 Dialog de detalhes ���������������������������������������������������������������������������������������������
   Duas colunas de label/valor; .est-det-full ocupa a linha toda.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-det {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px 20px;
	padding: 4px 2px 12px;
}

.est-det-origem {
	border-top: 1px solid var(--est-border);
	padding-top: 12px;
}

.est-det-item { display: flex; flex-direction: column; min-width: 0; }
.est-det-full { grid-column: 1 / -1; }

.est-det-label {
	color: var(--est-text-2);
	font-size: 11px;
	margin-bottom: 2px;
}

.est-det-valor {
	color: var(--est-text);
	font-size: 13px;
	word-break: break-word;
}

/* ��nico valor colorido do dialog, conforme a spec */
.est-det-total {
	color: var(--est-primary);
	font-weight: 700;
	font-size: 15px;
}

@media (max-width: 620px) {
	.est-det { grid-template-columns: 1fr; }
}

/* ������ ��6.2 Acerto: tabela plana (produto �� local) ���������������������������������
   Uma linha por (produto, local), sem expans��o. O cabe��alho vem de oito p:column
   vazias na dataTable pai; o corpo vem de oito p:column dentro do p:subTable. O
   alinhamento entre os dois �� por CONTAGEM ��� n��o existe rede de seguran��a, ent��o
   mexer numa lista exige mexer na outra.
   Escopo em .est-acerto-table (o PF concatena o styleClass no container da tabela).
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */

/* Alinhamento do cabe��alho. O core do PF 3.5 for��a
   ".ui-datatable thead th { text-align: center }" (0-1-2); a utilit��ria .direita
   (style.css:476) �� 0-1-0 e perde. Precisa dos DOIS seletores porque nesta vers��o o
   r��tulo mora dentro de <span class="ui-column-title"> ��� mesmo rem��dio que
   precoPendente.xhtml:776 j�� aplica. */
.est-acerto-table thead th.direita,
.est-acerto-table thead th.direita .ui-column-title { text-align: right; }

.est-acerto-table thead th.est-acerto-col-produto,
.est-acerto-table thead th.est-acerto-col-produto .ui-column-title,
.est-acerto-table thead th.est-acerto-col-local,
.est-acerto-table thead th.est-acerto-col-local .ui-column-title { text-align: left; }

/* Larguras. Declaradas para th e td na MESMA regra: o subTable �� outro elemento na
   ��rvore de componentes, e sem isso as duas metades da tabela derivam.
   O local ganhou 200px porque "LOCAL ESTOQUE RESTAURANTE" quebrava em duas linhas. */
/* nowrap �� o que resolve de fato: com table-layout autom��tico a largura �� s�� sugest��o,
   e sem ele o navegador prefere quebrar "LOCAL ESTOQUE RESTAURANTE" em duas linhas a
   tirar espa��o da coluna Produto. A tela tem largura sobrando ��� quem cede �� o Produto */
.est-acerto-table th.est-acerto-col-local,
.est-acerto-table td.est-acerto-col-local { white-space: nowrap; width: 240px; }

/* Atual guarda s�� o n��mero; a sigla mora na coluna Un. ao lado. Larguras declaradas na
   mesma regra de prop��sito ��� as duas juntas ocupam o que a Atual sozinha ocupava antes. */
.est-acerto-table th.est-acerto-col-atual,
.est-acerto-table td.est-acerto-col-atual { width: 110px; }

/* estreita e colada na Atual: �� r��tulo de duas ou tr��s letras, n��o n��mero. O padding
   esquerdo �� o ��nico respiro entre o valor e a sigla. */
.est-acerto-table th.est-acerto-col-un,
.est-acerto-table td.est-acerto-col-un {
	padding-left: 4px;
	text-align: left;
	white-space: nowrap;
	width: 40px;
}

/* As colunas Contado e Diferen��a sa��ram daqui em 12/08/2026: eram do acerto, que virou
   card. Quem sobrou nesta tabela plana �� a entrada/sa��da manual (��6.4). */

.est-acerto-table td { vertical-align: middle; }

/* ������ Escala tipogr��fica ������������������������������������������������������������������������������������������������������������������
   Dois tamanhos, e s�� dois: 13px para o dado e 11px para o apoio. Antes havia 14, 13,
   12 e 11 misturados na mesma linha e a leitura ficava serrilhada. A hierarquia �� dada
   por PESO e COR, n��o por tamanho.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-acerto-table tbody td { font-size: 13px; }

.est-acerto-un { font-size: 11px; }

/* ������ Coluna Produto ������������������������������������������������������������������������������������������������������������������������ */

/* O r��tulo do produto �� o .est-produto-nome compartilhado (��5.4.1), l�� em cima; esta tela
   n��o tem mais estilo pr��prio para ele. */

.est-acerto-local-padrao { color: var(--est-text-2); font-style: italic; }

/* Os locais s��o sub-linhas da linha de totaliza����o logo acima. O recuo �� o que mostra
   isso ��� a coluna Produto delas fica vazia, ent��o sem o recuo elas pareceriam soltas.
   Vale para a coluna Local de toda linha que N��O �� de totaliza����o. */
.est-acerto-loc-recuo { padding-left: 18px; }


/* ������ Coluna Atual ������������������������������������������������������������������������������������������������������������������������������ */

.est-acerto-saldo { font-weight: 600; }
.est-acerto-un { color: var(--est-text-3); }

/* ������ Contado e Diferen��a ��������������������������������������������������������������������������������������������������������� */

.est-acerto-input {
	font-size: 13px;
	text-align: right;
	width: 80px;
}

.est-acerto-input::-webkit-input-placeholder { color: var(--est-text-3); }
.est-acerto-input::-moz-placeholder { color: var(--est-text-3); opacity: 1; }
.est-acerto-input:-ms-input-placeholder { color: var(--est-text-3); }

/* campo mexido ganha borda de destaque ��� mesma ideia do .preco-alterado de precoPendente */
.est-acerto-alterado {
	border-color: var(--est-primary) !important;
	font-weight: 600;
}

.est-acerto-dif { color: var(--est-text-3); font-weight: 600; }

/* Verde entra, vermelho sai. Seletores soltos, e n��o presos ao .est-acerto-dif: a pr��via da
   importa����o por CSV (��6.2.2) mostra a mesma diferen��a e tem de significar a mesma coisa.
   V��m depois do .est-acerto-dif de prop��sito ��� mesma especificidade, ganha a ordem. */
.est-dif-mais  { color: #2e7d32; }
.est-dif-menos { color: #c62828; }

/* ������ Aviso de rascunho ���������������������������������������������������������������������������������������������������������������������
   A barra de rodap�� (.est-acerto-rodape/.est-acerto-acoes) saiu em 14/08/2026: o "Salvar
   tudo" dela subiu para a barra de resumo, ao lado do "Descartar contagem". Do conjunto
   sobrou s�� o contador, que mora l�� em cima.

   A barra de filtros daqui tamb��m j�� tinha sa��do, em 07/08/2026: era pr��pria
   (.est-acerto-filtros, grid auto-fit) e passou a usar a .est-filtros padr��o do m��dulo ��� as
   abas estavam com tr��s desenhos diferentes de filtro e pareciam telas de sistemas distintos.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-acerto-contador { color: var(--est-text-2); font-size: 13px; }
.est-acerto-contador.est-acerto-tem-alteracao { color: var(--est-primary); font-weight: 600; }

/* no celular a tabela tem colunas demais para caber; rolar �� melhor que espremer */
@media (max-width: 979px) {
	.est-acerto-wrap { overflow-x: auto; }
}

/* ������ ��6.2 Acerto: o card do produto ������������������������������������������������������������������������
   Desde 12/08/2026 o acerto n��o �� mais uma tabela de (produto �� local): cada produto �� um
   card, com os locais dele dentro. O que mudou de verdade �� a unidade de leitura ��� antes,
   para saber de que produto era a terceira linha de um bloco, era preciso subir com o olho
   at�� onde o nome aparecia; agora o produto inteiro cabe num quadro, com o total e as a����es
   dele ali mesmo.

   A p:dataTable de fora continua sendo a dona do lazy e do paginador; estas regras s��
   apagam o vestu��rio de tabela dela. Nada aqui toca .est-acerto-table, que �� a tabela plana
   da entrada/sa��da manual (��6.4) e continua de p��.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */

/* ������ A lista ��������������������������������������������������������������������������������������������������������������������������������������������� */

/* UM card por linha, sempre.
   Contar estoque e percorrer a lista de cima a baixo com o card inteiro a vista; varias
   colunas cabiam na tela, mas obrigavam o olho a ziguezaguear e espremiam a coluna Local.
   Ate 18/08/2026 isto era um grid de N colunas com um seletor na barra de resumo (classes
   est-col-*, escolha guardada no localStorage). O seletor saiu junto com elas: a resposta
   certa era sempre a mesma. */
.est-cards-grid {
	display: grid;
	gap: 12px;
	grid-template-columns: 1fr;
}

.est-cards-resumo {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 4px 0 10px;
}

.est-cards-conta { color: var(--est-text-2); font-size: 13px; }

/* Usada pelo JS para esconder o que s�� faz sentido com rascunho na tela. !important porque
   o que ela esconde s��o bot��es do PrimeFaces, que trazem display do tema. */
.est-escondido { display: none !important; }

/* Descartar contagem sai como LINK, n��o como bot��o: �� destrutivo e secund��rio, e ao lado do
   "Salvar tudo" dois bot��es de mesmo peso faziam a barra parecer oferecer duas a����es
   equivalentes. Como link ele continua ach��vel, mas n��o disputa. S�� ganha o vermelho quando
   o ponteiro est�� em cima. */
.est-acerto-descartar.ui-button,
.est-acerto-descartar.ui-button:focus,
.est-acerto-descartar.ui-button:active {
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
	color: var(--est-text-2) !important;
	font-size: 12px;
	height: auto;
	padding: 0 !important;
}

.est-acerto-descartar.ui-button:hover {
	background: none !important;
	border: 0 !important;
	color: var(--mui-error-main, #d32f2f) !important;
	text-decoration: underline;
}

/* Sem a moldura do bot��o, o recuo que o tema reserva para o ��cone (padding do r��tulo, ~2.1em)
   vira um buraco antes do texto. O ��cone �� trazido para a margem e o recuo cai para o que
   ele realmente ocupa. */
.est-acerto-descartar .ui-button-text {
	color: inherit !important;
	padding: 0 0 0 16px !important;
}

.est-acerto-descartar .ui-button-icon-left {
	left: 0 !important;
	margin-left: 0 !important;
}

/* Os dois bot��es do rascunho ficam colados no fim do bloco da esquerda, antes do seletor de
   colunas. (At�� 18/08/2026 as ferramentas eram empurradas para a direita; hoje quem ocupa a
   borda �� o "Salvar tudo".) */
.est-acerto-descartar.ui-button { margin: 0; }

/* uma regra s��: estava partida em duas, uma zerando a margem e outra com o tamanho, e a
   primeira ainda zerava o margin-left que a ancoragem �� direita precisa */
.est-acerto-salvar-tudo.ui-button {
	font-size: 12px;
	margin: 0;
	padding: 3px 10px;
}

/* O ui-icon do tema �� sprite e esconde o glifo do Font Awesome ��� mesma neutraliza����o do
   bot��o da linha, aqui para os dois bot��es de texto da barra.

   S�� o sprite �� desarmado: o POSICIONAMENTO continua sendo o do tema, que j�� p��e o ��cone
   absoluto �� esquerda e reserva o padding do bot��o. Mexer nele (position: static, por
   exemplo) deixaria o padding reservado e vazio, com o ��cone escorregado para dentro do
   texto. */
.est-acerto-descartar .ui-button-icon-left,
.est-acerto-salvar-tudo .ui-button-icon-left {
	background: none !important;
	font-size: 12px;
	line-height: 16px;
	overflow: visible !important;
	text-align: center;
	text-indent: 0 !important;
}

/* Empurrado para a direita: s��o ferramentas da tela, n��o informa����o sobre a lista ��� o que se
   l�� nesta barra (contagem, aviso de rascunho, aviso de corte) fica �� esquerda. */
/* Ferramentas no fluxo, logo depois da informa����o. Sem margin-left:auto: empurradas para a
   direita, elas disputavam a borda com o "Salvar tudo" e, com a barra cheia, quebravam para
   uma linha s�� delas. */
.est-cards-ferramentas {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

/* A a����o principal ancorada na borda direita.
   O auto come todo o espa��o livre da linha, ent��o ela vai para a ponta com a barra vazia ou
   cheia ��� e, quando a barra quebra, o bot��o continua �� direita na linha em que cair. �� isso
   que a torna responsiva sem media query nenhuma: quem decide �� o espa��o que sobrou. */
/* .ui-button no seletor porque o "margin: 0" do bot��o, mais acima, �� atalho e zera o
   margin-left junto ��� sem empatar a especificidade, ele ganharia. */
.est-cards-resumo .est-acerto-salvar-tudo.ui-button { margin-left: auto; }

/* o bot��o de importar perdeu a faixa pr��pria (.est-barra-acoes) e agora divide a barra */
.est-cards-ferramentas .est-btn-secundario.ui-button {
	font-size: 12px;
	margin: 0;
	padding: 3px 10px;
}

/* Filtro "ver s�� os em rascunho". Fica junto do contador, �� esquerda: �� sobre o rascunho,
   n��o sobre a apar��ncia da lista. */
.est-cards-so-rascunho {
	align-items: center;
	color: var(--est-text-2);
	cursor: pointer;
	display: inline-flex;
	font-size: 12px;
	gap: 4px;
	margin: 0;
}

.est-cards-so-rascunho input {
	margin: 0;
	vertical-align: middle;
}

/* o r��tulo �� irm��o do input (ver o porqu�� no acertoEstoqueList.xhtml), ent��o precisa das
   mesmas medidas que tinha quando era o label de fora */
.est-cards-so-rascunho label {
	cursor: pointer;
	font-size: 12px;
	margin: 0;
}

/* O card em foco NUNCA some, mesmo deixando de ser rascunho: quem digita "38" num campo de
   saldo 3 passa por um instante valendo 3, e o card sairia debaixo do cursor. */
.est-so-rascunho .est-cardp:not(.est-cardp-alterado):not(.est-cardp-focado) { display: none; }

/* O aviso de corte precisa ser lido, n��o notado: sem paginador, �� ele que diz que a lista
   n��o est�� inteira. Da�� o ��mbar de aten����o do m��dulo. */
.est-cards-corte {
	background: #fef3c7;
	border-radius: var(--est-radius-sm);
	color: #7c4a03;
	font-size: 12px;
	padding: 5px 10px;
}

.est-cards-corte .fa { margin-right: 5px; }

.est-cards-vazio {
	color: var(--est-text-3);
	font-size: 13px;
	padding: 24px 0;
	text-align: center;
}

/* Estado inicial da tela: nada listado at�� algu��m filtrar. N��o �� um "vazio" de resultado ���
   �� um convite ���, ent��o tem moldura tracejada e peso maior que o "Nada encontrado". */
.est-cards-convite {
	align-items: center;
	background: var(--est-surface-alt);
	border: 1px dashed var(--est-border);
	border-radius: var(--est-radius);
	color: var(--est-text-2);
	display: flex;
	gap: 10px;
	justify-content: center;
	padding: 28px 20px;
	text-align: center;
}

.est-cards-convite .fa {
	color: var(--est-text-3);
	font-size: 18px;
}

.est-cards-convite-txt { font-size: 13px; }

/* ������ O card ������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-cardp {
	background: var(--est-surface);
	border: 1px solid var(--est-border);
	border-radius: var(--est-radius);
	box-shadow: var(--est-shadow);
	overflow: hidden;
}

/* A faixa do topo �� sempre desenhada, transparente, e s�� ganha cor quando h�� contagem
   pendente: pintar a borda s�� no estado alterado mexeria na altura do card e a p��gina
   inteira dan��aria a cada tecla. ��mbar �� a cor de "aten����o" do m��dulo, a mesma dos chips
   e do alerta de estoque. */
.est-cardp { border-top: 3px solid transparent; }
.est-cardp-alterado { border-top-color: #f0b429; }

.est-cardp-topo { padding: 12px 14px 10px; }

/* Selo de rascunho: aparece com a mesma marca que acende a faixa do topo, ent��o nunca
   discorda dela. Existe porque a faixa sozinha n��o diz o que est�� pendente ��� e depois de um
   F5 que restaurou a contagem do localStorage, "isto ainda n��o foi salvo" �� a informa����o
   mais importante da tela. */
.est-cardp-titulo {
	align-items: center;
	display: flex;
	gap: 8px;
	min-width: 0;
}

/* deixa o nome ceder espa��o ao selo em vez de empurr��-lo para fora ��� o ellipsis dele
   depende de poder encolher */
.est-cardp-titulo .est-produto-nome { flex: 0 1 auto; min-width: 0; }

.est-cardp-rascunho { display: none; }

.est-cardp-alterado .est-cardp-rascunho {
	background: #fef3c7;
	border-radius: 999px;
	color: #7c4a03;
	display: inline-block;
	flex: 0 0 auto;
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .04em;
	padding: 2px 8px;
	text-transform: uppercase;
}

/* O aviso ".est-cardp-travado" saiu em 18/08/2026, junto com o bloqueio de um acerto por
   dia que ele explicava. */

/* ������ As linhas de local, dentro do card ������������������������������������������������������������ */

/* Cada linha �� um flex de quatro c��lulas. O alinhamento entre linhas vem das larguras
   fixas das c��lulas 2, 3 e 4 ��� a 1 (o local) fica com a sobra. �� o que uma tabela dava de
   gra��a; em troca, no celular a linha reflui, coisa que c��lula de tabela n��o faz. */
.est-cardl {
	align-items: center;
	border-bottom: 1px solid var(--est-border-soft);
	display: flex;
	font-size: 13px;
	gap: 8px;
	padding: 7px 14px;
}

.est-cardl:last-child { border-bottom: 0; }

/* min-width:0 �� o que autoriza o flex a encolher esta c��lula: sem ele, o nome longo do
   local empurra as outras tr��s para fora do card em vez de reticenciar */
.est-cardl-c1 {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.est-cardl-c2 { flex: 0 0 84px;  text-align: right; white-space: nowrap; }
/* Eram 118px para caber numero mais sigla. Sem a sigla (saiu em 18/08/2026) a coluna
   estreita e sobra largura para o Local, que e o texto que costuma faltar espaco. A
   largura segue fixa porque e ela que alinha a coluna entre cards diferentes: nao ha
   tabela aqui para fazer esse trabalho. */
.est-cardl-c3 { flex: 0 0 96px; text-align: right; white-space: nowrap; }
.est-cardl-c4 { flex: 0 0 84px;  text-align: right; white-space: nowrap; }
.est-cardl-c5 { flex: 0 0 32px;  text-align: right; white-space: nowrap; }

/* ������ Bot��o de confirmar a linha ������������������������������������������������������������������������������������������
   Quadrado de 26px, s�� com o "V". Verde, e n��o o rosa da marca: aqui verde �� confirma����o, e
   �� o mesmo verde que a coluna Diferen��a j�� usa para entrada de estoque (.est-dif-mais). O
   rosa fica com o "Salvar tudo" do rodap��, que �� a a����o principal da tela; repetido em cada
   linha ele pintaria a lista inteira e deixaria de significar "o bot��o importante".
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-cardl-salvar.ui-button {
	height: 26px;
	margin: 0;
	padding: 0;
	position: relative;
	width: 26px;
}

/* O PrimeFaces 3.5 n��o tem bot��o "s�� ��cone" de verdade: sem value ele escreve o texto
   literal "ui-button" dentro do span do r��tulo (CommandButtonRenderer, offset 393). */
.est-cardl-salvar .ui-button-text { display: none; }

/* E o span do ��cone sai com "ui-button-icon-left ui-icon ui-c" (HTML.BUTTON_LEFT_ICON_CLASS):
   o ui-icon do tema �� SPRITE ��� background-image mais text-indent de -99999px. Ele empurrava o
   glifo do Font Awesome para fora da tela e deixava �� vista o canto superior esquerdo da
   imagem do sprite, que s��o duas setinhas. Desarmar os dois �� o que faz o "V" aparecer. */
.est-cardl-salvar .ui-button-icon-left {
	background: none !important;
	font-size: 13px;
	height: 26px;
	left: 0;
	line-height: 26px;
	margin: 0;
	overflow: visible !important;
	position: absolute;
	text-align: center;
	text-indent: 0 !important;
	top: 0;
	width: 26px;
}

/* O :not() vem depois da regra de tamanho para ganhar por ordem. */
.est-cardl-salvar.ui-button:not(.ui-state-disabled),
.est-cardl-salvar.ui-button:not(.ui-state-disabled):focus,
.est-cardl-salvar.ui-button:not(.ui-state-disabled):active {
	background: #2e7d32 !important;
	border: 1px solid #2e7d32 !important;
	color: #fff !important;
}

.est-cardl-salvar.ui-button:not(.ui-state-disabled):hover {
	background: var(--mui-success-dark, #1b5e20) !important;
	border: 1px solid var(--mui-success-dark, #1b5e20) !important;
}

/* Desabilitado �� o estado de repouso ��� a linha s�� ganha bot��o ativo quando o contado muda.
   Some de leve em vez de parecer defeito: fica vis��vel o bastante para se saber que existe. */
.est-cardl-salvar.ui-button.ui-state-disabled {
	filter: none;
	opacity: .3;
}

/* respiro entre o n��mero e a sigla ��� na linha quem separa �� a borda do campo, mas no total
   o n��mero �� texto solto e "40ML" sa��a grudado */

.est-cardl-cab {
	background: var(--est-surface-alt);
	border-top: 1px solid var(--est-border-soft);
	color: var(--est-text-3);
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.est-cardl-tot {
	background: var(--est-surface-alt);
	border-bottom: 0;
	border-top: 1px solid var(--est-border);
	color: var(--est-text-2);
	font-weight: 600;
}

/* ������ Contado e diferen��a dentro do card ������������������������������������������������������������ */

/* O campo j�� vem preenchido com o saldo atual, ent��o "mexido" precisa de mais que a borda
   colorida que a tabela antiga usava: ali o campo estava vazio e qualquer texto j�� era o
   sinal. O ��mbar �� o mesmo da faixa do topo do card ��� �� a mesma informa����o, em dois
   tamanhos. Escopado no card para n��o mudar nada fora dele. */
.est-cardp .est-acerto-alterado {
	background: #fffbeb;
	border-color: #f0b429 !important;
	font-weight: 600;
}

/* o campo tem de caber na c��lula de 118px junto com a sigla da unidade */
.est-cardp .est-acerto-input { width: 74px; }

/* A diferen��a vira pastilha s�� aqui dentro. As cores continuam sendo as do m��dulo ��� verde
   entra, vermelho sai (.est-dif-mais/.est-dif-menos, compartilhadas com a pr��via da
   importa����o por CSV) ���, o que muda �� s�� o fundo. */
.est-cardp .est-acerto-dif {
	border-radius: 999px;
	display: inline-block;
	font-size: 12px;
	padding: 2px 8px;
}

.est-cardp .est-acerto-dif.est-dif-mais  { background: var(--mui-success-light, #edf7ed); }
.est-cardp .est-acerto-dif.est-dif-menos { background: #fee2e2; }

/* ������ Bot��o de gravar ���������������������������������������������������������������������������������������������������������������������������
   O rodap�� de a����es do card (.est-cardp-acoes) saiu em 14/08/2026: o Confirmar dele virou um
   bot��o por linha, e quem sobrou usando esta classe �� o "Salvar tudo" do fim da tela.

   Ele veste a cor do sistema, e n��o o quase-preto do desenho original: �� a a����o principal, e
   o rosa da marca j�� �� o que marca a����o principal em todo o resto do Sischef. Sai dos tokens
   do m��dulo, que apontam para as vari��veis do tema (--primary-color / --primary-color-hover)
   ��� assim acompanha uma troca de tema em vez de ficar com uma cor fixa que s�� bate com o
   tema de hoje.

   Mesma briga do .est-btn-secundario: o p:commandButton sai com .ui-state-default do tema, que
   pinta fundo, borda e a cor do span do r��tulo. Sem o !important e sem o par
   .est-cardp-btn-ok.ui-button, o tema ganha. */
.est-cardp-btn-ok.ui-button,
.est-cardp-btn-ok.ui-button:focus,
.est-cardp-btn-ok.ui-button:active {
	background: var(--est-primary) !important;
	border: 1px solid var(--est-primary) !important;
	color: #fff !important;
}

.est-cardp-btn-ok.ui-button:hover {
	background: var(--est-primary-hover) !important;
	border: 1px solid var(--est-primary-hover) !important;
}

/* o tema p��e a cor no span do r��tulo e no ��cone, n��o s�� no button */
.est-cardp-btn-ok .ui-button-text { color: #fff !important; }

/* Sem ROLE_LOCAL_ESTOQUE o card tem UMA linha, com o saldo somado de todos os locais ��� e
   quem faz isso �� o bean, em prepararLinhas(). Os "outros locais" j�� n��o chegam �� tela; n��o
   h�� o que esconder aqui.

   O CSS escondia a c��lula do local (primeiro com display:none, depois com visibility) e as
   duas tentativas estavam erradas, por motivos diferentes (19/08/2026):

   - display:none tirava do fluxo a ��NICA c��lula el��stica da linha ��� �� ela que "fica com a
     sobra", como diz o coment��rio l�� em cima. Sobravam quatro larguras fixas, que n��o
     crescem: tudo encostava �� esquerda e o resto do card ficava vazio.
   - visibility guardava o lugar e resolvia a geometria, mas apagava junto o r��tulo "Local
     padr��o", que �� justamente o que essa linha tem a dizer: o movimento vai sair sem local,
     e �� assim que o sistema chama isso.

   Sem regra nenhuma, a linha consolidada se desenha igual �� de quem tem a permiss��o. */

/* No celular a linha de local vira duas faixas: o nome do local em cima, ocupando a largura
   toda, e os tr��s n��meros embaixo. Espremer quatro c��lulas de largura fixa num visor de
   360px deixaria o nome do local com tr��s letras. */
@media (max-width: 560px) {
	.est-cardl {
		align-items: baseline;
		flex-wrap: wrap;
		padding: 8px 12px;
	}

	/* Os tr��s n��meros encostam na direita, em vez de ficarem soltos no meio com espa��o
	   morto depois do ��ltimo. Alinhados pela borda do card, eles formam uma coluna de
	   leitura de cima a baixo ��� que �� como se confere contagem: comparando o que est��
	   embaixo do que. As larguras fixas continuam valendo, ent��o Atual, Contado e Dif.
	   seguem batendo entre uma linha e outra. */
	.est-cardl { justify-content: flex-end; }

	.est-cardl-c1 { flex: 1 0 100%; }

	/* o cabe��alho perde o sentido quebrado em duas faixas; os n��meros se explicam pela
	   posi����o, e o campo pelo tamanho */
	.est-cardl-cab { display: none; }

	/* o bot��o da linha vai junto com os n��meros, na segunda faixa */
	.est-cardl-c5 { flex: 0 0 32px; }
}

/* ������ ��6.2.2 Modal de importa����o de contagem por CSV ������������������������
   O modal �� uma tela de confer��ncia, n��o um formul��rio: o que ele tem de fazer bem ��
   deixar claro, antes de qualquer grava����o, o que o sistema entendeu de cada linha do
   arquivo. Da�� o peso visual estar na pr��via e n��o nos campos.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-import-dialog .ui-dialog-content { padding: 16px 18px; }

/* local e arquivo lado a lado; empilham sozinhos em tela estreita */
.est-import-topo {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 14px;
	align-items: start;
}

.est-import-campo {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

.est-import-campo select { box-sizing: border-box; width: 100%; }

/* o bot��o do uploader do PrimeFaces vem com largura pr��pria */
.est-import-campo .fileupload-buttonbar { padding: 0; border: 0; background: none; }

.est-import-formato {
	background: var(--est-surface-alt);
	border-radius: 6px;
	color: var(--est-text-2);
	font-size: 12px;
	margin: 14px 0;
	padding: 10px 12px;
}

.est-import-formato .fa { color: var(--est-text-3); margin-right: 6px; }

.est-import-formato code {
	background: #fff;
	border: 1px solid var(--est-border, #e5e7eb);
	border-radius: 4px;
	margin: 0 6px;
	padding: 1px 6px;
}

.est-import-formato-nota { display: block; margin-top: 4px; }

/* faixa de contagens da pr��via: �� o resumo que o usu��rio l�� antes de decidir */
.est-import-resumo {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 8px;
}

.est-import-arquivo {
	color: var(--est-text-2);
	font-size: 13px;
	font-weight: 600;
	margin-right: 4px;
}

.est-import-table { font-size: 13px; }
.est-import-table td { vertical-align: middle; }

.est-import-table th.est-import-col-num,
.est-import-table td.est-import-col-num { width: 60px; }

.est-import-table th.est-import-col-cod,
.est-import-table td.est-import-col-cod { width: 170px; white-space: nowrap; }

.est-import-table th.est-import-col-qtd,
.est-import-table td.est-import-col-qtd { width: 110px; }

.est-import-table th.est-import-col-un,
.est-import-table td.est-import-col-un {
	padding-left: 4px;
	text-align: left;
	white-space: nowrap;
	width: 40px;
}

/* a linha problem��tica precisa saltar: ela �� a raz��o de a pr��via existir */
.est-import-table tr.est-import-erro td { background: #fef2f2; }
.est-import-msg-erro { color: var(--mui-error-main, #d32f2f); font-size: 12px; }

/* contagem que bate com o saldo n��o vai gerar movimento; fica de lado, sem sumir */
.est-import-table tr.est-import-igual td { color: var(--est-text-3); }

.est-import-nota { color: var(--mui-warning-dark, #e65100); margin-left: 6px; }

.est-import-dif { font-weight: 600; }

.est-import-rodape {
	align-items: center;
	border-top: 1px solid var(--est-border, #e5e7eb);
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: space-between;
	margin-top: 14px;
	padding-top: 12px;
}

.est-import-botoes { display: inline-flex; gap: 8px; margin-left: auto; }

/* Usu��rio sem ROLE_LOCAL_ESTOQUE: a coluna Local some e o bean j�� entrega uma linha por
   produto, com o saldo consolidado. Sumir por CSS, e n��o por rendered, �� obrigat��rio aqui:
   SubTable.getColumns() filtra por isRendered() e CACHEIA o conjunto na primeira chamada do
   request (que acontece no decode) ��� com rendered, o cabe��alho e o corpo congelariam com
   contagens diferentes e a tabela sairia torta. */
.est-sem-locais .est-acerto-col-local { display: none; }

/* ������ ��6.4 Entrada/sa��da manual ���������������������������������������������������������������������������������������
   A tela usa a MESMA tabela plana do acerto (.est-acerto-table e as colunas Produto,
   Local, Atual e Un.), porque a pergunta �� a mesma: quanto tem deste produto em cada
   local. O que muda �� a ��ltima coluna ��� l�� �� "Contado", aqui �� a quantidade a somar ou
   subtrair, com os dois bot��es ao lado.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-acerto-table th.est-esm-col-acao,
.est-acerto-table td.est-esm-col-acao { white-space: nowrap; width: 320px; }

.est-esm-qtd { text-align: right; width: 80px; }

/* os dois bot��es colados no campo, sem quebrar a linha em tela estreita */
.est-esm-col-acao .ui-button { margin-left: 4px; vertical-align: middle; }

/* ������ Box explicativo dentro da tela ������������������������������������������������������������������������
   Mesma moldura dos alertas da faixa (.est-alert + .est-alert-ico), em amarelo, mas com
   tipografia pr��pria: t��tulo 13px em ��mbar escuro e corpo 11.5px em marrom.

   Variante separada, e n��o .est-alert-warn: aquele pertence aos alertas da FAIXA (��5.1),
   onde o t��tulo �� 14px e o box compete com os KPIs por aten����o. Dentro da tela o box
   explica, n��o alarma ��� e retunar um arrastaria o outro junto.

   Usado nos Locais de Estoque (��6.3, com o recolhe/expande) e na Entrada/Sa��da Manual
   (��6.4, sem recolher). Quem s�� quer a tipografia usa .est-alert-ajuda + .est-ajuda e
   deixa o .est-ajuda-corpo de fora.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
.est-alert-ajuda { background: #fefce8; }
.est-alert-ajuda .est-alert-ico { background: #fcd34d; }
.est-alert-ajuda .est-alert-title { color: var(--mui-warning-dark, #e65100); font-size: 13px; }

.est-ajuda {
	margin-bottom: 16px;
	color: #713f12;
	font-size: 11.5px;
	line-height: 1.55;
}

.est-ajuda p { margin: 6px 0 0; }
.est-ajuda .negrito { color: #4a2c0a; }

/* Recolhido mostra 1 linha. O primeiro par��grafo perde a margem do topo para o
   corte bater exatamente em 1 line-height; max-height em em acompanha a fonte e
   o line-height acima, ent��o mudar um dos dois n��o desalinha o recorte. */
.est-ajuda .est-ajuda-corpo p:first-child { margin-top: 0; }

.est-ajuda-corpo {
	max-height: 1.6em;
	overflow: hidden;
}

.est-ajuda-aberto .est-ajuda-corpo { max-height: none; }

.est-ajuda-toggle {
	color: var(--mui-warning-dark, #e65100);
	display: inline-block;
	font-weight: 600;
	margin-top: 6px;
	text-decoration: underline;
}

.est-ajuda-toggle:hover { color: var(--mui-warning-dark, #e65100); filter: brightness(.85); }

/* a nota de rodap�� s�� faz sentido com o box aberto */
.est-ajuda-nota {
	border-top: 1px solid rgba(113, 63, 18, .18);
	margin-top: 10px !important;
	padding-top: 8px;
	opacity: .85;
}

/* ������ Tema escuro ���������������������������������������������������������������������������������������������������������������������������������
   O toggle do template grava data-theme="dark" no documentElement e os temas
   trocam --surface-color / --bg-color / --border-color / --text-color.
   Como as vari��veis daqui s��o pr��prias (--est-*), elas N��O s��o atingidas por
   isso ��� sem este bloco a faixa e as abas ficariam brancas no modo escuro.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
[data-theme="dark"] {
	--est-surface: var(--surface-color);
	--est-surface-alt: var(--bg-color);
	--est-border: var(--border-color);
	--est-border-soft: rgba(255, 255, 255, .08);
	--est-text: var(--text-color);
	--est-text-2: rgba(255, 255, 255, .70);
	--est-text-3: rgba(255, 255, 255, .50);
	/* --est-primary e --est-primary-soft n��o precisam de override: herdam
	   --primary-color / --selected-color, que os temas j�� trocam no escuro. */
	--est-accent: #4fc3f7;                       /* #0288d1 n��o contrasta sobre #2a3a47 */
	--est-accent-soft: rgba(79, 195, 247, .18);
	--est-shadow: 0 2px 4px rgba(0, 0, 0, .25);
	--est-shadow-lg: 0 10px 30px rgba(0, 0, 0, .45);
}

/* No tema escuro o acento �� claro (#4fc3f7), ent��o texto branco em cima dele no hover ficaria
   ileg��vel. Aqui o preenchimento pede letra escura. */
[data-theme="dark"] .est-btn-secundario.ui-button:hover { color: #06232e !important; }

/* fundos de alerta s��o literais (n��o passam por vari��vel): mesmo padr��o
   rgba .15 + texto claro usado no material-ui-extensions.css */
[data-theme="dark"] .est-alert-danger { background: rgba(211, 47, 47, .15); }
[data-theme="dark"] .est-alert-danger .est-alert-title,
[data-theme="dark"] .est-alert-danger .est-alert-link { color: #ef9a9a; }

[data-theme="dark"] .est-alert-warn { background: rgba(237, 108, 2, .15); }
[data-theme="dark"] .est-alert-warn .est-alert-title,
[data-theme="dark"] .est-alert-warn .est-alert-link { color: #ffcc80; }

[data-theme="dark"] .est-alert-info { background: rgba(2, 136, 209, .15); }
[data-theme="dark"] .est-alert-info .est-alert-title,
[data-theme="dark"] .est-alert-info .est-alert-link { color: #81d4fa; }

[data-theme="dark"] .est-alert-excesso { background: rgba(14, 116, 144, .18); }
[data-theme="dark"] .est-alert-excesso .est-alert-title,
[data-theme="dark"] .est-alert-excesso .est-alert-link { color: #7dd3e8; }

[data-theme="dark"] .est-alert-ok { background: rgba(46, 125, 50, .15); }
[data-theme="dark"] .est-alert-ok .est-alert-title,
[data-theme="dark"] .est-alert-ok .est-alert-sub { color: #a5d6a7; }

[data-theme="dark"] .est-chip-neutro { background: rgba(255, 255, 255, .10); color: rgba(255, 255, 255, .80); }

/* o box de ajuda usa marrons literais no claro; no escuro eles ficam ileg��veis */
[data-theme="dark"] .est-alert-ajuda { background: rgba(252, 211, 77, .15); }
[data-theme="dark"] .est-alert-ajuda .est-alert-title { color: #ffe082; }
[data-theme="dark"] .est-ajuda { color: rgba(255, 255, 255, .80); }
[data-theme="dark"] .est-ajuda .negrito { color: #fff; }
[data-theme="dark"] .est-ajuda-nota { border-top-color: rgba(255, 255, 255, .15); }
[data-theme="dark"] .est-ajuda-toggle,
[data-theme="dark"] .est-ajuda-toggle:hover { color: #ffe082; }

/* chips da Movimenta����o: mesmos fundos rgba .15 dos alertas */
[data-theme="dark"] .est-chip-mov-entrada  { background: rgba(46, 125, 50, .18);  color: #a5d6a7; }
[data-theme="dark"] .est-chip-mov-saida,
[data-theme="dark"] .est-chip-mov-cancelado { background: rgba(211, 47, 47, .18);  color: #ef9a9a; }
[data-theme="dark"] .est-chip-mov-transf   { background: rgba(2, 136, 209, .18);  color: #81d4fa; }
[data-theme="dark"] .est-chip-mov-acerto   { background: rgba(237, 108, 2, .18);  color: #ffcc80; }
[data-theme="dark"] .est-chip-mov-transf-p,
[data-theme="dark"] .est-chip-mov-estorno,
[data-theme="dark"] .est-chip-mov-neutro   { background: rgba(255, 255, 255, .10); color: rgba(255, 255, 255, .80); }

[data-theme="dark"] .est-num-pos { color: #a5d6a7; }

/* ������ ��6.2 Cards do acerto no escuro ������������������������������������������������������������������������
   Os cards nasceram s�� com os ��mbares e verdes claros do tema claro. O pior deles era o
   campo alterado: ele for��a s�� o FUNDO (#fffbeb) e deixa a cor do texto por conta do tema ���
   no escuro isso vira texto claro sobre creme, e o n��mero contado ficava ileg��vel justamente
   na linha que o usu��rio acabou de digitar.

   Mesmo rem��dio dos alertas e dos chips acima: fundo rgba .15/.18 da mesma cor e texto claro.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
[data-theme="dark"] .est-cardp .est-acerto-alterado {
	background: rgba(252, 211, 77, .18);
	border-color: #f0b429 !important;
}

[data-theme="dark"] .est-cardp-alterado .est-cardp-rascunho,
[data-theme="dark"] .est-cards-corte {
	background: rgba(237, 108, 2, .18);
	color: #ffcc80;
}

/* as pastilhas de diferen��a: a cor do texto vem das .est-dif-mais/.est-dif-menos
   compartilhadas, ent��o as duas precisam ser trocadas junto com o fundo */
[data-theme="dark"] .est-cardp .est-acerto-dif.est-dif-mais {
	background: rgba(46, 125, 50, .18);
	color: #a5d6a7;
}

[data-theme="dark"] .est-cardp .est-acerto-dif.est-dif-menos {
	background: rgba(211, 47, 47, .18);
	color: #ef9a9a;
}

/* o verde do bot��o de confirmar a linha escurece demais sobre o card escuro */
[data-theme="dark"] .est-cardl-salvar.ui-button:not(.ui-state-disabled),
[data-theme="dark"] .est-cardl-salvar.ui-button:not(.ui-state-disabled):focus,
[data-theme="dark"] .est-cardl-salvar.ui-button:not(.ui-state-disabled):active {
	background: #388e3c !important;
	border: 1px solid #388e3c !important;
}

/* o descartar �� link: no escuro muda s�� a cor, n��o h�� moldura para pintar */
[data-theme="dark"] .est-acerto-descartar.ui-button:hover {
	color: #ef9a9a !important;
}

/* ������ Impress��o ���������������������������������������������������������������������������������������������������������������������������������������
   A moldura antiga (ul.my-nav-tabs) j�� era escondida pelo style_print.css;
   a nova precisa do mesmo tratamento, sen��o a faixa de KPIs passa a sair
   em toda listagem impressa do m��dulo.
   ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ */
@media print {
	.est-strip,
	ul.est-tabs,
	.est-ajuda {
		display: none;
	}
}
