/* NANDA V22.130.00 | interface-scale | 2026-08-14
 * Escala única de leitura do ERP: texto, controles e respiro mudam juntos.
 * Médio é o padrão. Pequeno preserva densidade; Grande prioriza leitura.
 *
 * V22.130.00 — PISO DE 12px. Nada abaixo disso em nenhum dos três tamanhos.
 * O ERP é lido em monitor de galpão e escritório o dia inteiro; texto de 9 e 10px
 * (que era o que a tela de Colaboradores usava em 143 lugares) não se lê, por mais
 * organizada que a tela esteja. Legibilidade é requisito, não estilo.
 * "Pequeno" agora comprime o RESPIRO, não a letra: é assim que se ganha densidade
 * sem cobrar do olho de quem usa.
 *
 * Ao escrever tela nova: NUNCA crave font-size em px no inline. Use os tokens.
 *   --ui-font-micro    rótulo curto em CAIXA ALTA, badge, unidade
 *   --ui-font-caption  metadado, texto de apoio, legenda
 *   --ui-font-small    texto secundário denso, célula de tabela apertada
 *   --ui-font-body     corpo, nome em lista, o padrão
 *   --ui-font-lead     nome principal do card, subtítulo forte
 *   --ui-font-title    título de tela e de modal
 *   --ui-font-kpi      número grande
 */

:root,
html[data-ui-size="medium"] {
  --ui-font-micro: 12px;
  --ui-font-caption: 13px;
  --ui-font-small: 14px;
  --ui-font-body: 15px;
  --ui-font-control: 14px;
  --ui-font-lead: 17px;
  --ui-font-title: 21px;
  --ui-font-kpi: 28px;
  --ui-control-height: 38px;
  --ui-row-pad-y: 11px;
  --ui-card-pad-y: 14px;
  --ui-card-pad-x: 16px;
  --ui-gap: 10px;
  --ui-topbar-height: 60px;
}

/* Pequeno = mais linhas na tela, NÃO letra menor. O piso de 12px vale aqui também. */
html[data-ui-size="small"] {
  --ui-font-micro: 12px;
  --ui-font-caption: 12px;
  --ui-font-small: 13px;
  --ui-font-body: 14px;
  --ui-font-control: 13px;
  --ui-font-lead: 16px;
  --ui-font-title: 19px;
  --ui-font-kpi: 25px;
  --ui-control-height: 32px;
  --ui-row-pad-y: 6px;
  --ui-card-pad-y: 10px;
  --ui-card-pad-x: 12px;
  --ui-gap: 7px;
  --ui-topbar-height: 54px;
}

html[data-ui-size="large"] {
  --ui-font-micro: 13px;
  --ui-font-caption: 14px;
  --ui-font-small: 15px;
  --ui-font-body: 17px;
  --ui-font-control: 16px;
  --ui-font-lead: 19px;
  --ui-font-title: 24px;
  --ui-font-kpi: 33px;
  --ui-control-height: 44px;
  --ui-row-pad-y: 14px;
  --ui-card-pad-y: 18px;
  --ui-card-pad-x: 20px;
  --ui-gap: 13px;
  --ui-topbar-height: 66px;
}

html,
body {
  font-size: var(--ui-font-body);
}

.topbar {
  height: var(--ui-topbar-height);
  min-height: var(--ui-topbar-height);
  gap: 14px;
}

.topbar > div:first-child {
  min-width: 0;
}

.topbar-title {
  font-size: var(--ui-font-title);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.topbar-date,
.card-sub,
.modal-sub,
.kpi-sub {
  font-size: var(--ui-font-caption);
  line-height: 1.35;
}

.topbar-right {
  min-width: 0;
  flex-shrink: 1;
  gap: var(--ui-gap);
}

.nav-item,
.tab,
.theme-btn,
.btn-sm,
.btn-import,
.btn-primary,
.btn-secondary,
.btn-danger,
.finput,
.fsel,
.form-input,
.form-select,
.form-textarea {
  font-size: var(--ui-font-control);
}

.nav-item {
  min-height: var(--ui-control-height);
}

.btn-sm,
.btn-import,
.btn-primary,
.btn-secondary,
.btn-danger,
.finput,
.fsel,
.form-input,
.form-select {
  min-height: var(--ui-control-height);
}

.card-header {
  padding: var(--ui-card-pad-y) var(--ui-card-pad-x);
}

.card-body,
.modal-body {
  padding: var(--ui-card-pad-y) var(--ui-card-pad-x);
}

.card-title,
.modal-title {
  font-size: var(--ui-font-body);
  line-height: 1.3;
}

table {
  font-size: var(--ui-font-body);
}

th {
  padding: var(--ui-row-pad-y) 13px;
  font-size: var(--ui-font-caption);
  line-height: 1.25;
}

td {
  padding: var(--ui-row-pad-y) 13px;
  line-height: 1.4;
}

.badge,
.form-label,
.kpi-label {
  font-size: var(--ui-font-caption);
}

.kpi-value {
  font-size: var(--ui-font-kpi);
}

.empty {
  font-size: var(--ui-font-body);
}

/* Controle compacto e persistente, compartilhado com Preferências. */
.ui-scale-control {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  min-height: 34px;
  border: 1px solid rgba(255, 255, 255, .14);
  border-radius: 8px;
  background: rgba(255, 255, 255, .08);
  white-space: nowrap;
}

.ui-scale-label {
  padding: 0 6px 0 5px;
  color: var(--text2);
  font-size: var(--ui-font-caption);
  font-weight: 600;
}

.ui-scale-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 26px;
  min-height: 26px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--text2);
  font-family: var(--font);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: background .15s, color .15s, box-shadow .15s;
}

.ui-scale-btn[data-ui-size-option="small"] { font-size: 10px; }
.ui-scale-btn[data-ui-size-option="large"] { font-size: 15px; }

.ui-scale-btn:hover:not(.active) {
  color: var(--text);
  background: rgba(255, 255, 255, .07);
}

.ui-scale-btn.active {
  color: var(--text);
  background: rgba(255, 255, 255, .16);
  box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
}

.ui-scale-btn:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}

html.theme-light .ui-scale-control {
  background: rgba(0, 0, 0, .06);
  border-color: #d1d5db;
}

html.theme-light .ui-scale-btn.active {
  background: #fff;
  color: #0f1117;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .12);
}

html.theme-light .ui-scale-btn:hover:not(.active) {
  background: rgba(0, 0, 0, .06);
}

body.apresentacao .ui-scale-control {
  display: none !important;
}

/* Ações secundárias cedem espaço; tema e tamanho continuam acessíveis. */
@media (max-width: 1366px) {
  .topbar-right { gap: 6px; }
  .ui-scale-label { display: none; }
  #btn-apresentacao { display: none; }
  .topbar > .topbar-right > .btn-import { display: none; }
}

@media (max-width: 1180px) {
  #btn-importar-topbar { display: none; }
  #connection-status > span { display: none; }
  #connection-status { min-width: 30px; justify-content: center; padding-inline: 8px; }
  .topbar-action-label { display: none; }
  #btn-novidades { min-width: 36px; justify-content: center; padding-inline: 8px; }
}

@media (max-width: 1050px) {
  .theme-label { display: none; }
  .theme-btn { min-width: 30px; justify-content: center; padding-inline: 7px; }
  .topbar { padding-inline: 10px; }
}

@media (prefers-reduced-motion: reduce) {
  .ui-scale-btn { transition: none; }
}
