diff --git a/app/views/consolidacao_entregas/validar.html.erb b/app/views/consolidacao_entregas/validar.html.erb
index 9b7253e..5440890 100644
--- a/app/views/consolidacao_entregas/validar.html.erb
+++ b/app/views/consolidacao_entregas/validar.html.erb
@@ -24,19 +24,21 @@
<%# basis-40: o nome não pode ser espremido até virar "P…" — se não couber
com o resto, a linha quebra em vez de esmagar a identificação. %>
-
<%= icone :caminhao, espaco: false %> <%= @motorista %>
-
<%= @consolidacao.nome %> · <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %>
+
<%= icone :caminhao, espaco: false %> <%= @motorista %>
+
<%= @consolidacao.nome %> · <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %>
<%# Progresso ao lado do título (em vez de um card de 70px só p/ ele). No
- celular vai para uma linha própria, no fim, para não brigar pelo espaço. %>
-
- <% if @veiculos_sel.any? %><%= icone :caminhao %> <%= @veiculos_sel.join(', ') %> — <% end %>
- <%= @classificadas %>/<%= @total_entregas %>
- classificadas
+ celular vai para uma linha própria, no fim, para não brigar pelo espaço.
+ Números em branco/negrito: esta é a informação que o ADM confere o tempo
+ todo enquanto classifica — compactar não pode custar a leitura dela. %>
+
+ <% if @veiculos_sel.any? %><%= icone :caminhao %> <%= @veiculos_sel.join(', ') %> — <% end %>
+ <%= @classificadas %>/<%= @total_entregas %>
+ classificadas
·
+<%= @manuais %> manuais
-
+
<%= link_to revisar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista),
@@ -46,9 +48,9 @@
<%# Barra com 2 segmentos: laranja = elegíveis classificadas · azul = manuais %>
-
-
-
+
<%# Fechar por veículo — filtra a tela por carro, mostra o estado (pronto/
diff --git a/app/views/consolidacoes/index.html.erb b/app/views/consolidacoes/index.html.erb
index 64df335..47b5202 100644
--- a/app/views/consolidacoes/index.html.erb
+++ b/app/views/consolidacoes/index.html.erb
@@ -71,28 +71,37 @@
<%# ── Filtros ──────────────────────────────────────────── %>
+<%# Filtros em flex-wrap, NÃO em grade de 6 colunas fixas.
+ Motivo: os breakpoints do Tailwind (md:, lg:…) enxergam a JANELA, mas o
+ conteúdo perde 256px para a sidebar (`main.md:ml-64`). A mesma janela de
+ 1280px tem duas larguras conforme o menu esteja aberto ou recolhido, então
+ `md:grid-cols-6` espremia os campos a ~150px e o texto do botão "Filtrar"
+ vazava para fora do fundo. Com flex-wrap + largura mínima, cada campo mantém
+ tamanho legível e a linha quebra sozinha conforme o espaço REAL. %>
<%= form_with url: consolidacoes_path, method: :get,
- class: 'bg-[#1a1a1a] border border-[#2a2a2a] rounded-xl p-4 mb-6 grid grid-cols-1 md:grid-cols-6 gap-3' do |f| %>
+ class: 'bg-[#1a1a1a] border border-[#2a2a2a] rounded-xl p-4 mb-6 flex flex-wrap items-center gap-3' do |f| %>
<%= f.text_field :nome, value: params[:nome], placeholder: 'Buscar por nome…',
- class: 'bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5 focus:border-orange-500 focus:outline-none' %>
+ class: 'flex-1 basis-48 min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5 focus:border-orange-500 focus:outline-none' %>
<%= f.select :status,
options_for_select([['Todos os status', ''], ['Rascunho', 'rascunho'], ['Finalizada', 'finalizada']], params[:status]),
- {}, class: 'bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
+ {}, class: 'flex-1 basis-40 min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
<%= f.select :pagamento,
options_for_select([['Pagamento (todos)', ''], ['Pagas', 'pago'], ['Parciais', 'parcial'], ['Pendentes', 'pendente']], params[:pagamento]),
- {}, class: 'bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
+ {}, class: 'flex-1 basis-44 min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
<%= f.date_field :inicio, value: params[:inicio],
- class: 'bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
+ class: 'flex-1 basis-36 max-w-[13rem] min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
<%= f.date_field :fim, value: params[:fim],
- class: 'bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
+ class: 'flex-1 basis-36 max-w-[13rem] min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
-
- <%= f.submit 'Filtrar', class: 'flex-1 bg-orange-500 hover:bg-orange-600 text-black font-bold rounded-lg cursor-pointer' %>
- <%= link_to 'Limpar', consolidacoes_path, class: 'px-4 py-2.5 text-gray-400 hover:text-white border border-[#2a2a2a] rounded-lg' %>
+ <%# shrink-0 + whitespace-nowrap: os botões nunca são espremidos a ponto de
+ cortar o texto — se faltar espaço, a linha quebra e eles descem inteiros. %>
+
+ <%= f.submit 'Filtrar', class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold rounded-lg cursor-pointer px-5 py-2.5 whitespace-nowrap' %>
+ <%= link_to 'Limpar', consolidacoes_path, class: 'px-4 py-2.5 text-gray-400 hover:text-white border border-[#2a2a2a] rounded-lg whitespace-nowrap' %>
<% end %>
diff --git a/app/views/dashboard/index.html.erb b/app/views/dashboard/index.html.erb
index b95e0a8..167d030 100644
--- a/app/views/dashboard/index.html.erb
+++ b/app/views/dashboard/index.html.erb
@@ -117,15 +117,21 @@
- <%# CARDS GRANDES — KPIs %>
-
+ <%# CARDS GRANDES — KPIs
+ auto-fit + minmax em vez de `xl:grid-cols-5`: o breakpoint xl olha a JANELA
+ (1280px), mas com a sidebar aberta sobram ~960px de conteúdo — 5 colunas de
+ ~176px, e "R$ 82.692,00" em text-4xl era cortado pelo overflow-hidden do
+ card. Com auto-fit o número de colunas cai sozinho quando o menu está
+ aberto e sobe quando ele é recolhido, sem depender de breakpoint. %>
+
- <%# Card 1: Valor estimado %>
-
+ <%# Card 1: Valor estimado — sempre 2 faixas: é o maior número da tela %>
+
<%= icone :dinheiro, cor: nil, espaco: false %> Valor Estimado
-
+ <%# break-words: se ainda faltar espaço, quebra a linha em vez de cortar %>
+
<%= moeda(@valor_estimado) %>
@@ -178,7 +184,7 @@
<%# KPIs FINANCEIROS (consolidações finalizadas, já com filtro de operação) %>
-
+
<%= icone :dinheiro, espaco: false %> Custo total
<%= moeda(@fin_custo_total) %>
@@ -445,7 +451,7 @@
<% if @por_operacao.any? %>
<%= icone :operacao, espaco: false %> Entregas por Local
-
+
<% total_op = @por_operacao.values.sum.to_f %>
<% @por_operacao.each do |local, qtd| %>