/* ============================================================
   Premium — Controle de Prestadores
   Identidade: "mesa de escritório". A página é a mesa (cinza
   quente), os cards são papel (quase branco) apoiado nela, e a
   tinta é preta. Zero arredondamento em tudo — decisão mantida.

   TRÊS SIGNIFICADOS DE COR, e só três:
     tinta   → AÇÃO (botão primário, opção ativa). Ação é o que
               mais se clica no dia; se ela for vermelha, vermelho
               deixa de querer dizer qualquer coisa.
     âmbar   → ATENÇÃO / pendência (falta preencher, advertência,
               aviso que muda a conta).
     vinho   → ERRO / destrutivo (toast de erro, excluir, sair).
   O vermelho Premium fica reservado à MARCA e à localização:
   nome do app, aba em que você está, faixa do card de admin,
   anel de foco, linha do topo do login. Ele identifica, não alerta.

   Não hardcode cor/fonte/espaço: use sempre as variáveis abaixo.
   ============================================================ */
/* Fonte Archivo é carregada via <link> no index.html, não por @import
   aqui — isso evita que uma falha ao buscar a fonte (comum ao abrir o
   arquivo direto no navegador, via file://) derrube o resto do CSS.
   Só existem os pesos 400/600/800 no <link>: não use 500 nem 700,
   que o navegador engorda artificialmente e borra em corpo pequeno. */

:root {
  /* — superfícies — a mesa é mais escura que o papel, então o card
       tem borda de verdade sem precisar de sombra. */
  --color-bg: #eceaea;
  --color-surface: #fbfafa;
  --color-field: #f2f0f0;
  --color-text: #201e1d;
  --color-text-2: #57534f;
  --color-text-3: #6e6866;
  --color-accent: #ec3013;
  --color-accent-2: #e15b47;
  --color-divider: color-mix(in srgb, #201e1d 30%, transparent);
  --color-rule: color-mix(in srgb, #201e1d 14%, transparent);

  --color-neutral-100: #f8f4f4;
  --color-neutral-200: #eae7e7;
  --color-neutral-300: #d7d3d3;
  --color-neutral-400: #bab6b6;
  --color-neutral-500: #9b9797;
  --color-neutral-600: #7d7979;
  --color-neutral-700: #605d5d;
  --color-neutral-800: #444141;
  --color-neutral-900: #2d2b2b;

  --color-accent-100: #ffeae4;
  --color-accent-200: #ffd8ce;
  --color-accent-300: #ffc4b8;
  --color-accent-400: #ff9783;
  --color-accent-500: #ff563c;
  --color-accent-600: #dd2b0f;
  --color-accent-700: #ae1800;
  --color-accent-800: #7c1405;
  --color-accent-900: #4d170e;

  /* AÇÃO — tinta. 11,7:1 de contraste no texto do botão. */
  --color-action: #2d2b2b;
  --color-action-hover: #201e1d;
  --color-action-active: #000000;

  /* ATENÇÃO — âmbar. Tinta 8,5:1 no papel, 7,8:1 no próprio fundo. */
  --color-warn-100: #fbeeda;
  --color-warn-200: #f5dfb9;
  --color-warn-500: #b87514;
  --color-warn-800: #6b4008;

  /* ERRO / DESTRUTIVO — vinho. 8,7:1 no papel. */
  --color-danger: #8e1c08;
  --color-danger-strong: #6d1505;
  --color-danger-100: #fae7e2;

  --font-heading: "Archivo", system-ui, sans-serif;
  --font-heading-weight: 800;
  --font-body: "Archivo", system-ui, sans-serif;
  --font-mono: ui-monospace, "Cascadia Mono", "Segoe UI Mono", Consolas, monospace;
  --weight-medium: 600;
  --weight-strong: 800;

  --space-1: 4px; --space-2: 8px; --space-3: 12px;
  --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px;

  /* Altura de controle: 34px solto, 30px dentro de tabela. A tabela
     de lançamento tem 52 linhas — 4px por linha são 200px de rolagem. */
  --control-h: 34px;
  --control-h-dense: 30px;

  --radius-sm: 0px; --radius-md: 0px; --radius-lg: 0px;

  --shadow-sm: 0 1px 2px color-mix(in srgb, #2d2b2b 14%, transparent);
  --shadow-md: 0 3px 10px color-mix(in srgb, #2d2b2b 16%, transparent);
  --shadow-lg: 0 12px 32px color-mix(in srgb, #2d2b2b 22%, transparent);
}

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; background: var(--color-bg); color: var(--color-text); font-family: var(--font-body); font-size: 15px; line-height: 1.5; font-weight: 400;
  -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); font-weight: var(--font-heading-weight); line-height: 1.15; letter-spacing: -0.02em; margin: 0 0 var(--space-2); }
/* Título de tela em 27px, não 42px: isto é uma ferramenta de trabalho
   aberta o dia inteiro, não a capa de um site. Os 15px devolvidos no
   topo aparecem como mais uma linha e meia de tabela na primeira dobra. */
h1 { font-size: 27px; } h2 { font-size: 16px; } h3 { font-size: 13px; letter-spacing: 0.01em; }
p { margin: 0 0 var(--space-3); }
a { color: var(--color-accent-700); text-underline-offset: 3px; }
.text-muted { color: var(--color-text-2); }
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
::selection { background: color-mix(in srgb, var(--color-accent) 30%, transparent); }
svg.lucide { width: 16px; height: 16px; stroke-width: 1.75; vertical-align: -3px; }

.hr { height: 1px; border: 0; margin: var(--space-4) 0; background: var(--color-rule); }

/* — botões — a ação é tinta, não vermelha (ver cabeçalho). Peso 600:
     800 em corpo 13px vira mancha preta e perde a contraforma. — */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; cursor: pointer; text-decoration: none;
  font-family: var(--font-heading); font-weight: var(--weight-medium); font-size: 13px; line-height: 1.2; letter-spacing: 0.005em; color: var(--color-text);
  background: transparent; border: 1px solid transparent; min-height: var(--control-h); padding: 0 var(--space-3); border-radius: var(--radius-md);
  transition: background-color .12s ease, border-color .12s ease; }
.btn:disabled { opacity: 0.45; cursor: not-allowed; }
.btn-primary { background: var(--color-action); color: var(--color-surface); border-color: var(--color-action); }
.btn-primary:hover { background: var(--color-action-hover); border-color: var(--color-action-hover); }
.btn-primary:active { background: var(--color-action-active); border-color: var(--color-action-active); }
.btn-secondary { border-color: var(--color-divider); background: var(--color-surface); }
.btn-secondary:hover { background: color-mix(in srgb, var(--color-text) 8%, transparent); border-color: var(--color-text-3); }
.btn-ghost { color: var(--color-accent-700); padding-inline: var(--space-1); background: transparent; border: none; min-height: 0; }
.btn-ghost:hover { background: color-mix(in srgb, var(--color-accent) 12%, transparent); }
.btn-danger { color: var(--color-danger); border-color: var(--color-danger); background: transparent; }
.btn-danger:hover { background: var(--color-danger-100); }
.btn-block { width: 100%; }

/* — formulários — */
.field { display: flex; flex-direction: column; gap: 0; }
.field > label { display: block; font-size: 11.5px; font-weight: var(--weight-medium); letter-spacing: 0.02em; margin-bottom: 4px; color: var(--color-text-2); }

/* — página: título grande + subtítulo, fora de qualquer card — */
.page-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4); margin: var(--space-5) 0 var(--space-4); flex-wrap: wrap; }
.page-header h1 { margin: 0 0 2px; }
.page-header .page-sub { margin: 0; color: var(--color-text-2); font-size: 13.5px; }
.page-header .page-actions { display: flex; align-items: flex-end; gap: var(--space-2); }

/* — modal — */
.dialog-backdrop { position: fixed; inset: 0; display: none; place-items: center; padding: var(--space-4); background: color-mix(in srgb, var(--color-neutral-900) 55%, transparent); z-index: 500; }
.dialog-backdrop.open { display: grid; }
.dialog { width: min(520px, 100%); display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-5); background: var(--color-surface); box-shadow: var(--shadow-lg); border-top: 3px solid var(--color-text); }
.dialog-title { font-size: 18px; }
.dialog-actions { display: flex; justify-content: flex-end; gap: var(--space-2); margin-top: var(--space-2); }

/* — radio (usado no toggle de Plantão) — */
.radio { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 13px; }
.radio input { position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none; }
.radio .dot { width: 16px; height: 16px; flex: none; border-radius: 50%; border: 1.5px solid var(--color-divider); }
.radio:hover .dot { border-color: var(--color-text); }
.radio input:checked + .dot { border-color: var(--color-text); background: var(--color-text); box-shadow: inset 0 0 0 4px var(--color-surface); }
/* input[type=time] entrou na lista: sem ele os campos de plantão ficavam
   com o desenho cru do navegador no meio de uma tabela estilizada. */
.input, select, input[type=text], input[type=number], input[type=date], input[type=time], input[type=email], input[type=password], textarea {
  width: 100%; min-height: var(--control-h); padding: 5px 9px; font: inherit; font-family: var(--font-body);
  font-size: 14px; line-height: 1.3; color: var(--color-text); caret-color: var(--color-accent); font-variant-numeric: tabular-nums;
  background: var(--color-field); border: 1px solid var(--color-divider); border-radius: var(--radius-md); }
.input:hover, select:hover, input:hover { border-color: var(--color-text-3); }
.input:focus-visible, select:focus-visible, input:focus-visible { border-color: var(--color-accent); outline-offset: 0; }
textarea { min-height: 100px; resize: vertical; font-family: var(--font-mono); font-size: 12.5px; line-height: 1.45; }
.seg { display: inline-flex; overflow: hidden; border: 1px solid var(--color-divider); border-radius: var(--radius-md); }
.seg-opt-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: 12px; font-family: var(--font-body); font-weight: var(--weight-medium);
  cursor: pointer; background: transparent; border: none; border-left: 1px solid var(--color-divider); color: var(--color-text-2); }
.seg-opt-btn:first-child { border-left: none; }
.seg-opt-btn.active { background: var(--color-action); color: var(--color-surface); }
.seg-opt-btn:not(.active):hover { background: color-mix(in srgb, var(--color-text) 8%, transparent); color: var(--color-text); }

/* — cards — papel sobre a mesa: fica claro porque é mais CLARO que o
     fundo, com fio de contorno. Sombra só no que flutua de verdade. — */
.card { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-4); border-radius: var(--radius-md);
  background: var(--color-surface); border: 1px solid var(--color-rule); }
.card-kicker { font-size: 10px; font-weight: var(--weight-medium); letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-accent-700); }
.card-title { font-family: var(--font-heading); font-weight: var(--font-heading-weight); font-size: 21px; line-height: 1.15; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.card-body { margin: 0; font-size: 13px; color: var(--color-text-2); }
.card h2 { font-size: 15px; margin-bottom: 2px; }
.card .hint { font-size: 12.5px; color: var(--color-text-2); margin: 0 0 var(--space-3); }

/* — tags — .tag-accent marca estado BOM (Ativo, contrato assinado,
     caixinha em 100%): vai de tinta cheia, que lê como "presente",
     contra o cinza vazado do inativo. .tag-outline é o vazado âmbar
     de ATENÇÃO (advertências, semanas perdidas, turno da noite). — */
.tag { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: var(--weight-medium); letter-spacing: 0.02em; padding: 2px 8px; border-radius: var(--radius-sm); border: 1px solid transparent; }
.tag-accent { background: var(--color-text); color: var(--color-surface); border-color: var(--color-text); }
.tag-neutral { background: var(--color-neutral-200); color: var(--color-text-2); border-color: var(--color-neutral-200); }
.tag-outline { border-color: var(--color-warn-500); color: var(--color-warn-800); background: var(--color-warn-100); }
.tag-outline-neutral { border-color: var(--color-divider); color: var(--color-text-2); }

/* — navegação — */
.nav { display: flex; align-items: center; gap: var(--space-4); padding: var(--space-2) var(--space-4); background: var(--color-surface); border-bottom: 1px solid var(--color-divider); flex-wrap: wrap; }
/* 19px/800 não é capricho: em 800 a partir de 18.66px o texto conta como
   "grande" na WCAG e passa com 3:1, então a marca pode usar o vermelho
   real (4,03:1). A 17px ela precisaria de 4,5:1 e teria de escurecer. */
.nav-brand { font-family: var(--font-heading); font-weight: var(--font-heading-weight); font-size: 19px; letter-spacing: -0.02em; color: var(--color-accent); margin-right: var(--space-2); }
.nav a { color: var(--color-text-2); text-decoration: none; font-size: 13px; font-weight: var(--weight-medium); padding: 6px 0; border-bottom: 2px solid transparent; cursor: pointer; }
.nav a:hover { color: var(--color-text); }
.nav a[aria-current='page'] { color: var(--color-accent-700); border-bottom-color: var(--color-accent); }
.nav .spacer { margin-left: auto; }
.nav .logout-link { color: var(--color-danger); cursor: pointer; font-size: 12px; text-decoration: underline; }

/* — tabelas — o miolo do app. Altura de linha enxuta, fio de linha
     bem mais leve que o de estrutura (52 fios escuros viram grade), e
     zebra de 2,5% para o olho não trocar de linha em 11 colunas. — */
.table, table { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.table th, th { text-align: left; font-size: 10.5px; font-weight: var(--weight-medium); letter-spacing: 0.07em; text-transform: uppercase;
  color: var(--color-text-3); padding: 7px var(--space-2) 6px; border-bottom: 1.5px solid var(--color-divider); white-space: nowrap; }
.table td, td { padding: 6px var(--space-2); line-height: 1.35; border-bottom: 1px solid var(--color-rule); vertical-align: middle; }
tbody tr:nth-child(even) { background: color-mix(in srgb, var(--color-text) 2.5%, transparent); }
.table tbody tr:hover, tbody tr:hover { background: color-mix(in srgb, var(--color-text) 6%, transparent); }
tfoot td { font-weight: var(--weight-medium); border-top: 1.5px solid var(--color-divider); border-bottom: none; }
.num { text-align: right; font-variant-numeric: tabular-nums; letter-spacing: 0.005em; white-space: nowrap; }
tr.row-inactive td { opacity: 0.5; }
/* Campo dentro de tabela é mais baixo e mais justo que campo solto. */
td .input, td select, td input[type=text], td input[type=number], td input[type=date], td input[type=time] {
  min-height: var(--control-h-dense); padding: 3px 7px; font-size: 13px; }

/* ============================================================
   Camada específica do app — construída sobre os tokens acima.
   ============================================================ */
body { min-height: 100vh; }
.app { max-width: 1220px; margin: 0 auto; padding: 0 var(--space-4) 60px; }

#login-screen { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: var(--color-neutral-900); }
/* Único lugar onde o vermelho da marca aparece em bloco. */
.login-card { background: var(--color-surface); border-top: 4px solid var(--color-accent); padding: var(--space-6); width: 360px; max-width: 90vw; box-shadow: var(--shadow-lg); }
.login-card h1 { font-size: 20px; margin-bottom: var(--space-1); }
.login-card .field { margin-top: var(--space-3); }
#app-shell { display: none; }

.tabs-row { display: none; } /* nav links now live inside .nav */
.panel { display: none; padding-top: var(--space-4); }
.panel.active { display: block; }

.flex-between { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-3); }
.row { display: grid; gap: var(--space-3); }
.row.cols-2 { grid-template-columns: 1fr 1fr; }
.row.cols-3 { grid-template-columns: 2fr 1fr 1fr; }
.row.cols-4 { grid-template-columns: 2fr 1fr 1fr 1fr; }
.row.cols-5 { grid-template-columns: 2fr 1fr 1fr 1fr auto; align-items: end; }

.section-card { padding: var(--space-4); margin-bottom: var(--space-3); background: var(--color-surface); border: 1px solid var(--color-rule); }
.card.admin-only { border-left: 3px solid var(--color-accent); }

.stats-row { display: flex; gap: var(--space-3); margin-bottom: var(--space-4); flex-wrap: wrap; }
.stats-row .card { flex: 1 1 160px; gap: var(--space-1); }

.filter-bar { display: flex; gap: var(--space-3); flex-wrap: wrap; align-items: center; margin-bottom: var(--space-3); padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-rule); }
.filter-bar .field { flex: 1 1 200px; min-width: 160px; }
.filter-bar .field:has(select) { flex: 0 1 180px; }

.parse-item { display: grid; grid-template-columns: 1.4fr auto auto 2fr; gap: var(--space-2); align-items: center;
  padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--color-rule); }
.parse-item .name { font-weight: var(--weight-medium); font-size: 13px; }
.parse-item .name .fn { font-weight: 400; font-size: 11px; color: var(--color-text-2); display: block; }
.toggle-group { display: flex; gap: 4px; }

.day-chip { font-size: 12px; padding: 5px 10px; border: 1px solid var(--color-divider); display: flex; align-items: center; gap: 6px; cursor: pointer; }
.day-chip.checked { background: var(--color-accent-100); border-color: var(--color-accent); }
.days-grid { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.week-chip { font-size: 12px; padding: 5px 12px; border: 1px solid var(--color-divider); cursor: pointer; }
.week-chip.active { background: var(--color-action); color: var(--color-surface); border-color: var(--color-action); }

/* Faixa de destaque no fluxo da página. Três leituras diferentes, e a
   cor é que separa: .banner puro informa (tinta), .banner-warn avisa
   que a conta pode sair errada (âmbar) e .holiday-banner marca feriado
   (vermelho da marca — é uma exceção do calendário, não um problema). */
.banner { display: flex; align-items: center; gap: 8px; background: color-mix(in srgb, var(--color-text) 6%, transparent); border: 1px solid var(--color-divider); border-left: 3px solid var(--color-text); color: var(--color-text); padding: var(--space-2) var(--space-3); font-size: 12.5px; margin-bottom: var(--space-3); }
.banner-warn { display: block; background: var(--color-warn-100); border-color: var(--color-warn-500); border-left: 3px solid var(--color-warn-500); color: var(--color-warn-800); }
.banner-warn ul { margin: var(--space-2) 0 0; padding-left: var(--space-4); }
.banner-warn li { font-variant-numeric: tabular-nums; }
.banner-warn + .banner-warn { margin-top: calc(var(--space-3) * -1 + var(--space-2)); }
.holiday-banner { display: flex; align-items: center; gap: 8px; background: var(--color-accent-100); border: 1px solid var(--color-accent); border-left: 3px solid var(--color-accent); color: var(--color-accent-800); padding: var(--space-2) var(--space-3); font-size: 12.5px; margin-bottom: var(--space-3); }

/* Tabela larga rola dentro do card em vez de esticar a página inteira. */
.table-scroll { overflow-x: auto; }

/* Resultado de fechamento que ficou velho porque os dias mudaram depois de
   gerar. Continua na tela para comparação, mas sem cor e apagado — e os botões
   de salvar/exportar ficam desabilitados enquanto estiver assim. */
.is-stale { opacity: 0.4; filter: grayscale(1); }

/* Barra de ações em lote acima da tabela de conferência: fundo de mesa
   dentro do papel, para ler como painel embutido e não como outro card. */
.lote-bar { display: flex; gap: var(--space-3); flex-wrap: wrap; align-items: flex-end;
  margin-bottom: var(--space-3); padding: var(--space-3); background: var(--color-bg);
  border: 1px solid var(--color-rule); }

/* Linha marcada para receber uma ação em lote. */
tbody tr.row-selected { background: var(--color-accent-100); box-shadow: inset 2px 0 0 var(--color-accent); }
tbody tr.row-selected:hover { background: var(--color-accent-200); }

/* Par entrada/saída dentro da célula de plantão. */
.horario-par { display: flex; align-items: center; gap: 6px; }
.horario-par input[type=time] { width: 88px; }

/* Barra de totais: o número mais caro da tela. Tinta cheia, corpo 20 em
   800 e algarismo tabular — é o que a pessoa confere antes de pagar. */
.totals-bar { display: flex; gap: var(--space-6); padding: var(--space-3) var(--space-4); background: var(--color-neutral-900); color: var(--color-surface); margin-bottom: var(--space-4); flex-wrap: wrap; border-left: 3px solid var(--color-accent); }
.totals-bar .k { font-size: 10px; font-weight: var(--weight-medium); letter-spacing: 0.1em; text-transform: uppercase; color: color-mix(in srgb, #fbfafa 70%, transparent); }
.totals-bar .v { font-family: var(--font-heading); font-size: 20px; font-weight: var(--weight-strong); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; line-height: 1.2; }

.empty { text-align: center; padding: var(--space-8) var(--space-4); color: var(--color-text-2); }
.empty svg { margin-bottom: var(--space-2); opacity: .5; width: 28px; height: 28px; }

.toast { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background: var(--color-neutral-900); color: var(--color-surface);
  padding: 10px 18px; font-size: 13px; opacity: 0; pointer-events: none; transition: opacity .25s, transform .25s; z-index: 999; max-width: 80vw; text-align: center; box-shadow: var(--shadow-md); }
.toast.show { opacity: 1; transform: translateX(-50%) translateY(-4px); }
.toast.error { background: var(--color-danger-strong); }

.audit { font-size: 10.5px; color: var(--color-text-3); font-variant-numeric: tabular-nums; }
.small-note { font-size: 11.5px; color: var(--color-text-2); }
.mask-btn { background: none; border: none; color: var(--color-accent-700); cursor: pointer; font-size: 11px; text-decoration: underline; padding: 0; }

/* ATENÇÃO — valor que o sistema NÃO vai arbitrar e que alguém precisa
   preencher. Vem DEPOIS de .small-note de propósito: os dois andam
   juntos no mesmo elemento ("small-note valor-faltando") e, na ordem
   antiga, o cinza do .small-note apagava o alerta sem erro nenhum. */
.valor-faltando { display: block; color: var(--color-warn-800); font-size: 11px; font-weight: var(--weight-medium); }
td .valor-faltando { display: inline; }
.input-pendente { border-color: var(--color-warn-500) !important; background: var(--color-warn-100); box-shadow: inset 0 -2px 0 var(--color-warn-500); }

/* Chips de função e operação no cadastro. Reaproveita a linguagem de .tag —
   mesma ausência de arredondamento — com um botão de desativar embutido.
   O "x" é vinho: desativar é a ação destrutiva da tela. */
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12px;
  padding: 3px 6px 3px 10px; border: 1px solid var(--color-divider); background: var(--color-bg); }
.chip-x { border: none; background: none; cursor: pointer; font-size: 14px; line-height: 1;
  padding: 0 2px; color: var(--color-danger); }
.chip-x:hover { background: var(--color-danger-100); }

/* Grade de diárias por tipo de dia x turno, no modal de edição. Tabela em vez
   de oito campos soltos: a matriz deixa óbvio qual valor é de dia e qual é de
   noite, coisa que oito rótulos em sequência não deixam. */
.tabela-diarias { width: 100%; }
.tabela-diarias th { font-size: 10px; }
.tabela-diarias td { padding: 3px var(--space-2); }
.tabela-diarias td:first-child { white-space: nowrap; font-size: 12.5px;
  color: var(--color-text-2); }
.tabela-diarias input { min-height: var(--control-h-dense); }

/* Tabela de prestadores: o nome é a coluna que se procura, então ela não
   pode ser a que encolhe. As oito colunas de valor viraram uma só, com
   resumo — a matriz completa vive no modal de edição. */
.col-nome { min-width: 190px; }
.col-valores { font-size: 11.5px; line-height: 1.3; max-width: 280px; color: var(--color-text-2); }
