/* Controles globais de formulário e de lista (leva 6, tema W1, 14/10/2026).
   Um só conjunto de regras no lugar dos remendos por tela. Carregado por último para valer sobre as camadas antigas.
   Medidas tiradas das capturas do original (1440 × 900): campo, select e botão da busca com 38 px de altura, borda #c7ced4;
   select com seta dupla compacta (dois triângulos de 8 × 3 px, 12 px da borda direita); caixa de busca de 330 px nas listas;
   botões de ação da linha com 28 px; textarea sem alça de redimensionamento.
   As regras com seletor de ID já valem sobre os seletores de classe das telas; telas que precisam de outra medida
   continuam podendo declará-la com [data-view] (especificidade maior). */

:root {
  --ctl-height: 38px;
  --ctl-border: #c7ced4;
  --ctl-pad-x: 12px;
  --ctl-action: 28px;
  --ctl-search-width: 330px;
  --ctl-select-width: 220px;
  /* Seta dupla (cima e baixo) do select: dois triângulos de 8 × 3 px com 2 px de vão, cor #343a40. */
  --ctl-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%23343a40' d='M0 3 4 0 8 3zM0 5 4 8 8 5z'/%3E%3C/svg%3E");
}

/* 1. Altura única: campo de texto, número, e-mail, telefone, busca, data e select têm 38 px. As caixas de paginação
   ("Por página", rodapés) ficam de fora porque o original as faz menores. */
:is(#view-root, dialog, [role='dialog']) :is(
  input:where(:not([type='checkbox'], [type='radio'], [type='hidden'], [type='file'], [type='color'], [type='range'], [type='image'], [type='button'], [type='submit'], [type='reset'])),
  select
):where(:not(:is([class*='per-page'], [class*='footer-controls'], [class*='pager'], [class*='paginat']) *)) {
  box-sizing: border-box;
  height: var(--ctl-height);
  min-height: var(--ctl-height);
}

/* Formulários de venda, orçamento e ordem têm regra própria por ID (37 px): mesma altura dos demais. */
:is(#sale-form, #quote-form, #work-order-form) :is(input:not([type='checkbox']):not([type='radio']), select) {
  box-sizing: border-box; height: var(--ctl-height); min-height: var(--ctl-height);
}
/* Caixas de paginação ("Por página", rodapés): mantêm a altura que a tela declarou; só tiram o piso de 44 px do tema antigo. */
:is(#view-root, dialog, [role='dialog']) :is([class*='per-page'], [class*='footer-controls'], [class*='pager'], [class*='paginat']) :is(select, input) { min-height: 0; }

/* 2. Select com a seta dupla do tema, no lugar da seta nativa do navegador. Continua sendo o <select> nativo
   (teclado, leitor de tela e lista de opções do sistema); só a aparência muda. */
:is(#view-root, dialog, [role='dialog']) select:where(:not([multiple], [size])) {
  -webkit-appearance: none;
  appearance: none;
  padding-right: 32px;
  background-image: var(--ctl-arrow);
  background-repeat: no-repeat;
  background-position: right var(--ctl-pad-x) center;
  background-size: 8px 8px;
}
:is(#view-root, dialog, [role='dialog']) :is([class*='per-page'], [class*='footer-controls'], [class*='pager'], [class*='paginat']) select:where(:not([multiple], [size])) { padding-right: 28px; }

/* Selects das configurações (Casas decimais, Registros por página, Valor de custo): 220 px, e o largo 260 px. */
#view-root .fincfg-select { width: var(--ctl-select-width); }
#view-root .fincfg-select-wide { width: 260px; }

/* 3. Textarea sem a alça de redimensionamento. */
:is(#view-root, dialog, [role='dialog']) textarea { resize: none; }

/* 4. Caixa de busca das listas: campo de 330 px (o botão de busca fica ao lado), 38 px de altura, botão com a mesma altura. */
#view-root :is(.g8c-search, .situations-search, .aux-search) input:where(:not(.agenda-sit-page *)) { width: var(--ctl-search-width); flex: 0 0 var(--ctl-search-width); }
#view-root .situations-search:where(:not(.agenda-sit-page *)) { flex: 0 0 auto; width: calc(var(--ctl-search-width) + 40px); }
#view-root .team-search input[type='search'] { width: 278px; }
#view-root :is(.fincfg-search-button, .situations-search-button, .aux-search-button, .g8c-search-go, .reg-square, .product-square,
  .service-square, .search-dark, .customer-search > .button, .suppliers-search > .button, .team-search > .button) {
  box-sizing: border-box; height: var(--ctl-height); min-height: var(--ctl-height);
}
/* "Buscar configuração": o texto não pode ficar cortado ("Ex.: estoque, nota, e-mail"). */
#view-root .fincfg-settings-search-box input { padding: 0; font-size: 15px; text-overflow: clip; }

/* 5. Botões de ação da linha (lupa, lápis, lixeira): 28 × 28; o de excluir desabilitado fica esmaecido. */
#view-root :is(.row-icon, .fincfg-action, .situation-action, .product-row-button, .service-row-button, .reg-row-button,
  .fin-row-btn, .ff-row-btn, .pc-action) {
  box-sizing: border-box; width: var(--ctl-action); height: var(--ctl-action); min-width: var(--ctl-action); min-height: var(--ctl-action);
}
#view-root :is(.row-icon.danger, .fincfg-action-delete, .fincfg-action.is-danger, .situation-action-delete, .pc-action-delete,
  .product-row-button.danger, .service-row-button.danger, .reg-row-button.danger, .fin-row-btn.danger, .ff-row-btn.danger):disabled {
  opacity: 0.65; cursor: not-allowed;
}

/* 6. Caixa "Registros N no total": uma linha só, sem cortar o texto. */
#view-root[data-view] :is(.situations-count, .aux-count, .fin-count, .team-total, .product-count, .pc-count, .reg-count) {
  display: inline-flex; align-items: center; width: max-content; min-width: 150px; max-width: none; overflow: visible; white-space: nowrap;
}

/* 7. Data com máscara 99/99/9999 e um botão de calendário (public/controles.js). O <input type="date"> original fica
   escondido dentro do conjunto e continua dono do valor AAAA-MM-DD. */
.ctl-date { position: relative; display: flex; align-items: stretch; width: 100%; min-width: 150px; max-width: 100%; }
.ctl-date > .ctl-date-text { flex: 1 1 auto; width: auto; min-width: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; }
.ctl-date > .ctl-date-button {
  flex: 0 0 var(--ctl-height); display: inline-grid; place-items: center; box-sizing: border-box; width: var(--ctl-height); height: var(--ctl-height); min-height: 0;
  margin: 0; padding: 0; border: 1px solid var(--ctl-border); border-left: 0; border-radius: 0 3px 3px 0; color: #495057; background: #fff; cursor: pointer;
}
.ctl-date > .ctl-date-button:hover:not(:disabled) { background: #f2f4f6; }
.ctl-date > .ctl-date-button:focus-visible { outline: 2px solid var(--color-primary, #175fc1); outline-offset: -2px; }
.ctl-date > .ctl-date-button:disabled { color: #999; background: #eee; cursor: not-allowed; }
.ctl-date > .ctl-date-button svg { width: 16px; height: 16px; fill: currentColor; }
.ctl-date > .ctl-date-native {
  position: absolute !important; left: 0; bottom: 0; width: 1px !important; height: 1px !important; min-width: 0 !important; min-height: 0 !important;
  margin: 0 !important; padding: 0 !important; border: 0 !important; opacity: 0; pointer-events: none;
}
.ctl-date[hidden] { display: none; }

/* ===== Leva 7 (X2): defeitos pequenos e repetidos da terceira auditoria ===== */

/* 8. Botão do período (seletor de mês) das notas fiscais: texto inteiro "Outubro de 2026" (150 px de botão, 111 px de texto)
   e caret de dropdown de um só triângulo logo depois do texto, no lugar da seta dupla de select. */
#view-root .fdoc-month {
  width: 150px; padding: 0 22px 0 12px; text-overflow: clip; background-size: 8px 4px; background-position: right 11px center;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3E%3Cpath fill='%23fff' d='M0 0h8L4 4z'/%3E%3C/svg%3E");
}

/* 9. Botões "Devoluções" (locações), "Saiba mais" (balanças, trocas e devoluções, estados vazios) e "Importar extrato bancário":
   dependem de serviço que ainda não grava, mas no original têm texto e borda escuros, sem esmaecer. */
#view-root :is(.service-outline, .sr-button.is-outline, .reg-outline, .ff-btn-outline):disabled,
#view-root :is([class*='empty-actions'], [class*='-empty'], .aux-empty) :is(.button.secondary, .button.ghost, .button.accent):disabled {
  opacity: 1; cursor: not-allowed;
}
#view-root :is(.service-outline, .sr-button.is-outline):disabled,
#view-root :is([class*='empty-actions'], [class*='-empty'], .aux-empty) .button.secondary:disabled { color: #0f1921; border-color: #0f1921; background: #fff; }
#view-root .fin-btn-dark.fin-btn-pending:disabled { opacity: 1; color: #fff; background: #0f1921; border-color: #0f1921; }

/* 10. Campo de data que já tem botão de calendário próprio ao lado (ordem nova): o componente não soma o segundo. */
.ctl-date > .ctl-date-button[hidden] { display: none; }
.ctl-date.ctl-date-own > .ctl-date-text { border-top-right-radius: 0; border-bottom-right-radius: 0; }

/* 11. "Adicionar variação": círculo escuro com o sinal de mais branco. */
#view-root .pog-add-variation .reg-icon svg circle { fill: #0f1921; }
#view-root .pog-add-variation .reg-icon svg path { fill: #fff; }
#view-root .pog-add-variation .reg-icon { display: inline-flex; width: 16px; height: 16px; }
#view-root .pog-add-variation .reg-icon svg { width: 16px; height: 16px; }
#view-root .pog-add-variation { gap: 4px; }

/* 12. Nomes das linhas das listas de cadastro (grupos, campos extras, tipos, fornecedores): texto preto, não cor de link.
   O nome continua clicável quando é link; só perde a cor azul. */
#view-root td.record-name, #view-root td.record-name a { color: #262b2f !important; }

/* 13. Botões de ação da linha: lupa e lápis escuros, excluir em vermelho forte, sem esmaecer quando desabilitados. */
#view-root :is(.row-icon, .fincfg-action, .situation-action, .product-row-button, .service-row-button, .reg-row-button, .fin-row-btn, .ff-row-btn, .pc-action):not(.danger):disabled { opacity: 1; color: #212529; cursor: not-allowed; }
#view-root :is(.row-icon.danger, .fincfg-action-delete, .fincfg-action.is-danger, .situation-action-delete, .pc-action-delete,
  .product-row-button.danger, .service-row-button.danger, .reg-row-button.danger, .fin-row-btn.danger, .ff-row-btn.danger),
#view-root :is(.row-icon.danger, .fincfg-action-delete, .fincfg-action.is-danger, .situation-action-delete, .pc-action-delete,
  .product-row-button.danger, .service-row-button.danger, .reg-row-button.danger, .fin-row-btn.danger, .ff-row-btn.danger):disabled {
  color: #d9534f; opacity: 1;
}

/* 14. Cliente novo: ícone do cartão de contatos (megafone) em SVG cheio da cor do tema; caixas vazias (contatos e endereços
   extras) não ocupam o vão do grid, e a seção Contatos sobe os 13 px que o app tinha a mais. */
.ref-card-icon svg { display: inline-block; width: 15px; height: 15px; fill: currentColor; vertical-align: -2px; }
.customer-contacts:empty, .customer-extra-addresses:empty { display: none; }
.customer-cards > .ref-card:first-child > .ref-card-body { padding-top: 15px; }

/* 15. Relatório de comissão de vendedores: legenda, barra, abas e tabela 12 a 27 px mais abaixo, como no original;
   abas de 33 px; cabeçalho "Valor recebido" à esquerda. */
#view-root .frr-progress-label { margin-top: 20px; margin-bottom: 6px; }
#view-root .frr-seller-tabs { margin-top: 15px; margin-bottom: 19px; }
#view-root .frr-seller-tabs a { box-sizing: border-box; display: inline-flex; align-items: center; height: 33px; }
#view-root .frr-table th.frr-head-left { text-align: left; }

/* 16. Meu plano: o selo "Ativo" fica na mesma linha do nome do plano (cartão 15 a 20 px mais baixo no app). */
#view-root .ecfg-fact > strong { white-space: nowrap; }
#view-root .ecfg-fact > strong .ecfg-status { white-space: nowrap; }
