/* Design system do painel, herdado do painel-rotasertoes (HOUER). */
:root{
  --primary-color:var(--acento); --accent-color:var(--acento);
  /* COR DE MARCA NÃO É COR DE TEXTO. O cobre da marca fica como está; lido
     como LETRA sobre fundo claro ele dá 3,8:1, abaixo do mínimo de 4,5:1.
     `--acento-texto` é o MESMO matiz no degrau que se lê. */
  --primary-texto:var(--acento-texto); --bg-light:var(--fundo); --card-bg:var(--superficie);
  --text-primary:var(--texto); --text-secondary:var(--texto-2); --border-color:var(--borda);
  --shadow-sm:0 1px 2px 0 var(--sombra); --neutral-bar:var(--azul-90);
  --ambos:var(--azul);      /* azul    = os dois sentidos */
  --envia:var(--acento);      /* laranja = o lugar como ORIGEM */
  --recebe:var(--ameixa);     /* roxo    = o lugar como DESTINO */
}
*{margin:0;padding:0;box-sizing:border-box}
/* coluna flex: o mapa e a tabela preenchem o que sobrar da altura da janela, sem
   depender de subtrair pixels do header e da barra de filtros na mão */
body{font-family:var(--fonte);background:var(--bg-light);color:var(--text-primary);
     line-height:1.5;-webkit-font-smoothing:antialiased;overflow:hidden;
     height:100vh;display:flex;flex-direction:column}
.main-header,.barra-filtros{flex:0 0 auto}

/* ---------- header ---------- */
.main-header{background:var(--superficie);padding:0 40px;border-bottom:1px solid var(--border-color);
     box-shadow:var(--shadow-sm)}
/* a navegação vive na MESMA linha do logo: custo vertical zero */
.header-top{display:flex;align-items:center;gap:40px;height:64px}
.logo{height:58px;object-fit:contain}
/* nome do painel ao lado do logo, ocupa o espaço vertical que já sobrava no header (não o cresce) */
.header-marca{display:flex;align-items:center;gap:15px;min-width:0}
.header-titulo{display:flex;flex-direction:column;justify-content:center;gap:1px;
  border-left:2px solid var(--border-color);padding-left:15px;min-width:0}
/* nome com a MESMA fonte dos títulos de card (.panel-header h3): 12,5px, 700, caixa alta, escuro */
.header-nome{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;
  color:var(--text-primary);white-space:nowrap}
/* subtítulo no cinza pequeno original */
.header-sub{font-size:10.5px;font-weight:700;letter-spacing:.045em;text-transform:uppercase;
  color:var(--text-secondary);white-space:nowrap}
.header-top .main-nav{margin-left:auto;gap:28px}
.header-top .nav-btn{padding:22px 2px}
.title-container h1{font-size:19px;font-weight:800;letter-spacing:-.025em;
     text-transform:uppercase;line-height:1}
.title-container p{text-transform:uppercase;font-size:10px;color:var(--text-secondary);
     font-weight:700;letter-spacing:.1em;margin-top:4px}
.header-bottom{display:flex;align-items:center;justify-content:space-between}
.main-nav{display:flex;gap:32px}
.nav-btn{background:none;border:none;padding:12px 4px;font-size:11.5px;font-weight:600;
     color:var(--text-secondary);cursor:pointer;text-transform:uppercase;letter-spacing:.1em;
     border-bottom:2px solid transparent;text-decoration:none;transition:all .2s}
.nav-btn:hover{color:var(--primary-texto)}
.nav-btn.active{color:var(--primary-texto);border-bottom-color:var(--primary-color);
     font-weight:700}
.nav-btn.futura{opacity:.35;cursor:not-allowed}
.nav-btn.futura:hover{color:var(--text-secondary)}
.tempo{font-size:9.5px;font-weight:700;color:var(--texto-3);font-variant-numeric:tabular-nums}

/* ---------- filtros ---------- */
/* Todos os campos têm a mesma altura (34px) e a mesma distância do rótulo, para a
   barra ler como uma linha só e não como um amontoado de controles soltos. */
.barra-filtros{display:flex;align-items:flex-end;gap:22px;padding:12px 16px 13px;
     background:var(--superficie);border-bottom:1px solid var(--border-color);flex-wrap:wrap}
.grupo{display:flex;flex-direction:column}
.grupo-campos{display:flex;gap:12px;align-items:flex-end}
.divisor{width:1px;height:34px;align-self:flex-end;background:var(--border-color)}
.campo{display:flex;flex-direction:column;gap:5px}
.campo>span{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
     color:var(--texto-3);line-height:1}
select{font-family:var(--fonte);font-size:12px;font-weight:600;height:34px;
     color:var(--text-primary);background:var(--superficie);border:1.5px solid var(--border-color);
     border-radius:8px;padding:0 10px;min-width:120px;cursor:pointer;transition:all .2s}
/* período: um rótulo só, dois seletores e o "até" entre eles */
.par-periodo{display:flex;align-items:center;gap:7px}
.par-periodo select{min-width:96px}
.par-periodo .ate{font-size:10.5px;font-weight:600;color:var(--texto-3)}
select:hover,select:focus{border-color:var(--primary-color);outline:none;
     box-shadow:0 0 0 3px color-mix(in srgb, var(--azul-80) 10%, transparent)}

/* combo com busca (município e produto) */
.combo{position:relative}
.combo-gatilho{display:flex;align-items:center;justify-content:space-between;gap:10px;
     height:34px;font-size:12px;font-weight:600;background:var(--superficie);
     border:1.5px solid var(--border-color);
     border-radius:8px;padding:0 10px;cursor:pointer;transition:all .2s;
     white-space:nowrap;overflow:hidden}
.combo-gatilho:hover{border-color:var(--primary-color)}
.combo.aberto .combo-gatilho{border-color:var(--primary-color);
     box-shadow:0 0 0 3px color-mix(in srgb, var(--azul-80) 10%, transparent)}
.combo-gatilho .txt{overflow:hidden;text-overflow:ellipsis}
.combo-gatilho .seta{font-size:8px;color:var(--texto-3);flex-shrink:0}
.combo-painel{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:2000;
     width:300px;background:var(--superficie);border:1px solid var(--border-color);border-radius:12px;
     box-shadow:0 8px 28px color-mix(in srgb, var(--texto) 13%, transparent);overflow:hidden}
.combo.aberto .combo-painel{display:block}
.combo-busca{width:100%;border:none;border-bottom:1px solid var(--border-color);
     padding:9px 12px;font-family:var(--fonte);font-size:12px;outline:none}
.combo-lista{max-height:280px;overflow-y:auto;padding:5px}
.combo-item{padding:7px 10px;border-radius:7px;font-size:12px;cursor:pointer;
     white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.combo-item:hover{background:var(--azul-10)}
.combo-item.sel{background:var(--azul-10);color:var(--primary-texto);font-weight:700}
.combo-item .uf{font-size:9px;font-weight:800;color:var(--texto-3);margin-left:5px}
.combo-vazio{padding:14px;text-align:center;font-size:11px;color:var(--texto-3)}

.chips{display:flex;gap:6px}
.chip{font-size:11px;font-weight:700;height:34px;padding:0 14px;border-radius:8px;
     cursor:pointer;background:var(--superficie);border:1.5px solid var(--border-color);
     color:var(--text-secondary);transition:all .2s}
.chip:hover{border-color:var(--primary-color);color:var(--primary-texto);background:var(--azul-10)}
/* seletor de distância mínima: um <select> com a mesma pegada dos chips */
.chip-sel{height:34px;padding:0 26px 0 12px;cursor:pointer;-webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%2364748b'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center}
.chip-sel.active{background-color:var(--primary-texto);color:var(--superficie);border-color:var(--primary-color);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='white'/></svg>")}
.chip-sel.active option{color:var(--text-primary);background:var(--superficie)}
/* o seletor de distância e o botão de vazio não podem encolher no flex: cortava
   "Todas as distâncias" e quebrava "Retorno vazio" em duas linhas */
#sel-dist{flex-shrink:0;min-width:186px}
/* cabeçalho ordenável (todas as tabelas que usam data-o) */
th[data-o]{cursor:pointer;user-select:none}
th[data-o]:hover{color:var(--primary-texto)}

/* ---------- aba Alocação (MDF-e × PNCT) ---------- */
.aloc-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 14px 12px}
.aloc-kpis .k{background:var(--superficie);border:1px solid var(--border-color);border-radius:8px;
  padding:7px 9px}
.aloc-kpis .k .v{font-size:16px;font-weight:800;color:var(--azul-95);line-height:1.15}
.aloc-kpis .k .l{font-size:8.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;color:var(--texto-3);margin-top:2px}
.aloc-trecho{padding:8px 14px 12px;overflow-y:auto;max-height:290px;font-size:11px}
.aloc-trecho .linha-cat{display:grid;grid-template-columns:64px 1fr 58px;gap:8px;
  align-items:center;margin:2px 0}
.aloc-trecho .linha-cat .barra{height:9px;background:var(--superficie-2);border-radius:4px;overflow:hidden}
.aloc-trecho .linha-cat .barra i{display:block;height:100%;background:var(--azul-70)}
.aloc-trecho .linha-cat.ctx .barra i{background:var(--borda)}
.aloc-trecho .num{font-variant-numeric:tabular-nums;text-align:right}
.aloc-trecho h5{font-size:10px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--texto-3);margin:9px 0 4px}
.chip-vazio{flex-shrink:0;white-space:nowrap}
.chip.active{background:var(--primary-texto);color:var(--superficie);border-color:var(--primary-color);
     box-shadow:0 2px 8px color-mix(in srgb, var(--azul-80) 30%, transparent)}
.chip.active[data-sentido=envia]{background:var(--envia);border-color:var(--envia);
     box-shadow:0 2px 8px color-mix(in srgb, var(--vermelho-60) 30%, transparent)}
.chip.active[data-sentido=recebe]{background:var(--recebe);border-color:var(--recebe);
     box-shadow:0 2px 8px color-mix(in srgb, var(--ameixa-90) 30%, transparent)}
.chip.active[data-sentido=ambos]{background:var(--ambos);border-color:var(--ambos);
     box-shadow:0 2px 8px color-mix(in srgb, var(--azul-80) 30%, transparent)}
.combo-item .uf{font-variant-numeric:tabular-nums;float:right}

.range{display:flex;flex-direction:column;gap:2px;width:230px}
.range-track{position:relative;height:22px}
.range-track .linha{position:absolute;top:50%;left:0;right:0;height:4px;border-radius:2px;
     transform:translateY(-50%);background:var(--superficie-2)}
.range input[type=range]{position:absolute;top:0;left:0;width:100%;height:22px;
     -webkit-appearance:none;background:transparent;pointer-events:none;margin:0}
.range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;
     border-radius:50%;background:var(--primary-color);border:2px solid var(--superficie);
     box-shadow:0 1px 3px color-mix(in srgb, var(--texto) 30%, transparent);pointer-events:all;cursor:grab}
.range-rot{display:flex;justify-content:space-between;font-size:10px;font-weight:700;
     color:var(--text-secondary)}
.aviso-ncm{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:10.5px;
     font-weight:600;color:var(--vermelho-80);background:var(--ambar-10);border:1px solid var(--ambar-20);
     border-radius:8px;padding:6px 10px;max-width:300px;line-height:1.35}

/* ---------- layout ---------- */
.layout{display:flex;flex:1 1 auto;min-height:0;padding:12px 16px;gap:12px;
     overflow:hidden;transition:opacity .15s}
.layout.carregando{opacity:.55;pointer-events:none}
.card{background:var(--card-bg);border-radius:10px;border:1px solid var(--border-color);
     box-shadow:0 1px 3px color-mix(in srgb, var(--texto) 6%, transparent);overflow:hidden;display:flex;flex-direction:column}
.panel-header{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;
     border-bottom:1px solid var(--border-color);
     background:linear-gradient(135deg,var(--superficie) 0%,var(--azul-10) 100%);flex-shrink:0}
.panel-header h3{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.panel-header .aux{font-size:11px;font-weight:700;color:var(--primary-texto)}
.col-mapa{flex:0 0 58%;display:flex;flex-direction:column}
.col-dir{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0}

/* ---------- mapa ---------- */
#mapa{flex:1;background:var(--superficie)}
.migalha{font-size:11px;font-weight:700;color:var(--text-secondary)}
.migalha b{color:var(--primary-texto);cursor:pointer}
.migalha b:hover{text-decoration:underline}
.rodape-mapa{font-size:9.5px;color:var(--texto-3);padding:5px 14px;
     border-top:1px solid var(--border-color);background:var(--superficie);flex-shrink:0}
.leaflet-tooltip.tt{font-family:var(--fonte);font-size:11.5px;border-radius:7px;
     border:1px solid var(--border-color);box-shadow:0 3px 12px color-mix(in srgb, var(--texto) 14%, transparent);padding:7px 10px}
.legenda{background:color-mix(in srgb, var(--superficie) 94%, transparent);padding:8px 11px;border-radius:8px;
     box-shadow:0 2px 15px color-mix(in srgb, var(--texto) 15%, transparent);border:1px solid var(--border-color);
     font-size:10px;line-height:1.7;color:var(--text-primary)}
.legenda .tit{font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:9px;
     color:var(--text-secondary);margin-bottom:4px}
.legenda i{display:inline-block;width:14px;height:11px;margin-right:6px;border-radius:2px;
     vertical-align:-1px;border:1px solid color-mix(in srgb, var(--texto) 12%, transparent)}
.legenda .nota{margin-top:5px;padding-top:5px;border-top:1px solid var(--border-color);
     font-size:9px;color:var(--texto-3);line-height:1.5}

/* ---------- perfil ---------- */
/* Identidade e KPIs ocupam a largura toda (é o que se lê primeiro); embaixo, a rosca
   ao lado da composição por produto, que precisa de largura para os nomes. */
.perfil{flex:0 0 auto}
.perfil-topo{display:flex;align-items:center;justify-content:space-between;gap:16px;
     padding:11px 14px 9px}
.lugar{font-size:17px;font-weight:800;letter-spacing:-.015em;white-space:nowrap}
.lugar small{font-size:10px;font-weight:700;color:var(--text-secondary);
     text-transform:uppercase;letter-spacing:.06em;margin-left:5px}
.kpis{display:flex;gap:20px}
.kpi{text-align:right}
.kpi .v{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1;
     white-space:nowrap}
.kpi .l{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
     color:var(--texto-3);margin-top:1px}
/* dentro da barra só cabe a porcentagem; os valores vão na legenda abaixo */
.balanco{display:flex;height:16px;border-radius:5px;overflow:hidden;gap:2px;margin:0 14px}
.balanco div{display:flex;align-items:center;justify-content:center;color:var(--superficie);
     font-size:9.5px;font-weight:800;white-space:nowrap;overflow:hidden;
     transition:opacity .2s}
.b-envia{background:var(--envia)}
.b-recebe{background:var(--recebe)}
.balanco-leg{display:flex;gap:16px;padding:5px 14px 0;font-size:10.5px;
     color:var(--text-secondary)}
.balanco-leg span{display:flex;align-items:center;gap:5px;transition:opacity .2s}
.balanco-leg i{width:8px;height:8px;border-radius:2px;flex-shrink:0}
.balanco-leg b{color:var(--text-primary);font-weight:800;font-variant-numeric:tabular-nums}

.perfil-baixo{display:flex;align-items:center;gap:16px;padding:10px 14px 12px}
/* furo grande o bastante para o número caber inteiro dentro dele: com recorte de 46%
   o texto transbordava para cima do anel */
.rosca-wrap{position:relative;flex:0 0 146px;width:146px;height:146px}
.rosca-centro{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
     justify-content:center;pointer-events:none}
.rosca-centro .saldo{font-size:13px;font-weight:800;line-height:1;white-space:nowrap}
.rosca-centro .rot{font-size:7.5px;font-weight:700;text-transform:uppercase;
     letter-spacing:.06em;color:var(--texto-3);margin-top:3px}
.produtos{flex:1;min-width:0}
.produtos h4{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;
     color:var(--texto-3);margin-bottom:7px}
.pl{display:grid;grid-template-columns:minmax(90px,132px) 1fr 66px;align-items:center;
     gap:8px;font-size:11px;margin-bottom:3px}
.pl .nome{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.pl .barra{height:7px;border-radius:2px;background:var(--azul-10);overflow:hidden}
.pl .barra div{height:100%;border-radius:2px}
.pl .val{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;font-size:10.5px}
.pl.ni .nome{color:var(--texto-3);font-style:italic}
.pl.ni .barra div{background:repeating-linear-gradient(45deg,var(--borda),var(--borda) 4px,
     var(--superficie-2) 4px,var(--superficie-2) 8px)}

/* ---------- tabela ---------- */
.col-tabela{flex:1;min-height:0}
.tab-scroll{flex:1;overflow-y:auto;min-height:0}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:11px}
/* aba de sazonalidade: largura de coluna FIXA (em %), para a tabela não "pular" quando
   muda só o que está sendo mostrado (mês travado, ordenação). As larguras vêm dos <th>
   no JS. Como são percentuais, somam 100% e nunca estouram a coluna estreita. */
.layout-saz table{table-layout:fixed}
.layout-saz thead th{white-space:normal}
/* A barra de rolagem tem que ser FIXA (nunca aparecer/sumir), senão a largura "dança".
   overflow-y:scroll reserva o espaço, mas no macOS a barra é overlay (some sozinha); então
   estiliza-se a ::-webkit-scrollbar, o que troca a overlay por uma barra permanente. */
.layout-saz .tab-scroll{overflow-y:scroll;overflow-x:hidden;scrollbar-gutter:stable;
     scrollbar-width:thin;scrollbar-color:var(--borda) var(--azul-10)}
.layout-saz .tab-scroll::-webkit-scrollbar{width:10px;-webkit-appearance:none}
.layout-saz .tab-scroll::-webkit-scrollbar-track{background:var(--azul-10)}
.layout-saz .tab-scroll::-webkit-scrollbar-thumb{background:var(--borda);border-radius:5px;
     border:2px solid var(--azul-10)}
/* alinha o conteúdo de todas as células pelo TOPO: senão uma célula de 1 linha (Carga) e
   uma de 2 linhas (Tipo) na mesma linha ficam desencontradas na vertical */
.layout-saz tbody td,.flx-dir tbody td{vertical-align:top}
.layout-saz tbody tr.clicavel{cursor:pointer}
.layout-saz tbody tr.clicavel:hover{background:var(--azul-10)}
.layout-saz .cel-carga,.flx-dir .cel-carga{font-weight:600}
.layout-saz .cel-tipo,.flx-dir .cel-tipo{font-size:10px;color:var(--text-secondary);font-weight:600}
/* Carga e Tipo: o texto já vem curto do backend; este clamp de 2 linhas é rede de
   segurança. Fica num DIV INTERNO, não no <td>: -webkit-box no próprio <td> tira dele o
   comportamento de table-cell e desalinha a linha. */
.layout-saz .cl2,.flx-dir .cl2{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;
     -webkit-line-clamp:2;line-clamp:2;overflow:hidden;line-height:1.2;
     word-break:break-word}   /* palavra larga quebra em vez de sumir cortada ("Oleagino") */
/* o mini-gráfico de 12 meses acompanha a largura da sua coluna */
.layout-saz .spark{width:100%}

/* aba de logística: barras horizontais (mix de frota por eixos) */
.faixas-corpo{flex:1;display:flex;flex-direction:column;justify-content:center;gap:9px;
     padding:14px 18px;min-height:0;overflow-y:auto}
.faixa{display:flex;align-items:center;gap:10px}
.faixa-rot{width:88px;font-size:10.5px;font-weight:700;color:var(--text-secondary);
     text-align:right;flex-shrink:0}
.faixa-barra{flex:1;height:15px;background:var(--azul-10);border-radius:5px;overflow:hidden}
.faixa-barra div{height:100%;background:var(--primary-color);border-radius:5px;min-width:2px}
.faixa-val{width:34px;font-size:11px;font-weight:800;color:var(--text-primary);flex-shrink:0}
.veic-nota{font-size:9.5px;font-weight:700;color:var(--texto-3);text-transform:uppercase;letter-spacing:.03em}
.veic-vazio{margin:auto;text-align:center;font-size:12px;color:var(--text-secondary);line-height:1.5}

/* aba mapa de fluxos: mapa grande (68%) + tabela de corredores */
.layout-flx{display:grid;grid-template-columns:68% 1fr;grid-template-rows:1fr;
     flex:1 1 auto;min-height:0;padding:12px 16px;gap:12px;overflow:hidden;
     transition:opacity .15s}
.layout-flx.carregando{opacity:.55;pointer-events:none}
.layout-flx .card{min-height:0}
/* coluna direita: corredores (mais baixa) em cima, principais cargas embaixo.
   min-width:0 é OBRIGATÓRIO: sem ele o item de grid cresce além da coluna e as
   colunas numéricas das tabelas somem da tela */
.flx-dir{display:flex;flex-direction:column;gap:12px;min-height:0;min-width:0;overflow:hidden}
.flx-dir .card{flex:1 1 0;min-height:0;min-width:0}
.flx-dir table{table-layout:fixed}
.flx-dir .tab-scroll{overflow-x:hidden}
/* botão de retorno vazio: âmbar quando ativo */
.chip-vazio.active{background:var(--vermelho-70);border-color:var(--vermelho-70);color:var(--superficie)}
.chip-vazio:not(.active):hover{border-color:var(--vermelho-70);color:var(--vermelho-70)}
/* aviso de traçados aproximados (canto do mapa) */
.aviso-aprox{background:var(--superficie);border:1px solid var(--border-color);border-radius:7px;
     padding:5px 10px;font-size:10.5px;font-weight:700;color:var(--texto-3);
     box-shadow:0 1px 3px color-mix(in srgb, var(--texto) 12%, transparent)}
/* chip do filtro de trecho: card flutuante no canto superior direito do mapa */
#trecho-ctrl{display:flex;align-items:center;gap:8px;padding:7px 10px;max-width:300px;
  background:var(--superficie);border:1px solid var(--azul-30);border-radius:9px;font-size:11px;
  font-weight:600;color:var(--primary-texto);box-shadow:0 1px 6px color-mix(in srgb, var(--texto) 20%, transparent)}
#trecho-ctrl .tc-x{cursor:pointer;font-weight:800;padding:1px 7px;white-space:nowrap;
  border-radius:6px;background:var(--azul-20);color:var(--primary-texto)}
#trecho-ctrl .tc-x:hover{background:var(--azul-30)}
.uf-filtro{font-size:11px;font-weight:700;color:var(--primary-texto);background:var(--azul-10);
  border:1px solid var(--azul-30);border-radius:6px;padding:1px 8px;white-space:nowrap;vertical-align:middle}
.uf-filtro b{cursor:pointer;margin-left:3px;color:var(--texto-3)}
.uf-filtro b:hover{color:var(--vermelho-70)}
.flx-seta{color:var(--texto-3);font-weight:800;padding:0 2px}
.flx-aprox{color:var(--vermelho-70);font-weight:800;cursor:help}
/* tooltip da malha: lista dos principais pares que passam no trecho */
.tt-lista{margin-top:5px;border-top:1px solid var(--superficie-2);padding-top:4px;max-width:320px}
.tt-par{display:flex;justify-content:space-between;gap:14px;font-size:10.5px;line-height:1.55}
.tt-par b{font-variant-numeric:tabular-nums}
.tt-par.sec{color:var(--texto-3)}
.tt-dica{display:block;margin-top:5px;font-size:9.5px;font-style:italic;color:var(--azul-70)}
thead th{position:sticky;top:0;z-index:5;background:var(--azul-10);color:var(--primary-texto);
     font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;
     padding:8px 10px;text-align:left;border-bottom:2px solid var(--border-color);
     cursor:pointer;white-space:nowrap;user-select:none}
thead th.num{text-align:right}
thead th:hover{background:var(--superficie-2)}
tbody td{padding:5px 7px;border-bottom:1px solid var(--azul-10);white-space:nowrap}
tbody td.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
tbody tr:hover td{background:var(--azul-10);cursor:pointer}
tbody tr.sel td{background:var(--azul-20)}
/* nome do parceiro: coluna estreita, quebrando em duas linhas quando preciso, para
   liberar largura às colunas de número (Envio, Recebe, Total, % e % acumulado) */
th.cel-nome{white-space:normal}
td.cel-nome{white-space:normal;line-height:1.2;max-width:104px}
/* Corredor em DUAS linhas: origem em cima, destino embaixo (mais legível que inline) */
td.cel-corr .corr-o,td.cel-corr .corr-d{display:block}
td.cel-corr .corr-d{color:var(--text-secondary)}
td.cel-corr .corr-d b{color:var(--text-primary)}
tbody td.sec{color:var(--text-secondary);font-weight:600}
tbody td.ac{color:var(--texto-3);font-weight:700}
thead th.num{padding-left:5px;padding-right:7px}
.uf-tag{font-size:9px;font-weight:800;color:var(--text-secondary);background:var(--azul-10);
     padding:1px 5px;border-radius:4px}
.minibarra{width:44px;height:8px;border-radius:2px;background:var(--azul-10);overflow:hidden;
     display:inline-block}
.minibarra div{height:100%}
/* uma linha, sempre: nada aqui pode quebrar em duas */
.rodape-tab{display:flex;align-items:center;justify-content:space-between;gap:10px;
     padding:6px 12px;background:var(--azul-10);border-top:2px solid var(--border-color);
     font-size:10.5px;font-weight:800;flex-shrink:0;white-space:nowrap;overflow:hidden}
.rodape-tab span{overflow:hidden;text-overflow:ellipsis}
.rodape-tab .sec{font-weight:600;color:var(--text-secondary);flex-shrink:0}
.busca{font-size:11px;font-weight:500;padding:4px 8px;width:130px;border-radius:6px;
     border:1.5px solid var(--border-color);font-family:var(--fonte);outline:none}
.busca:focus{border-color:var(--primary-color)}
.btn-csv{font-size:10px;font-weight:700;padding:4px 9px;border-radius:6px;
     border:1.5px solid var(--border-color);background:var(--superficie);color:var(--text-secondary);
     cursor:pointer}
.btn-csv:hover{border-color:var(--verde-80);color:var(--verde-80)}

/* ================= ABA 2: SAZONALIDADE ================= */
/* duas linhas, duas colunas: gráfico + mapa em cima, as duas tabelas embaixo */
.layout-saz{display:grid;grid-template-columns:65% 1fr;grid-template-rows:1fr 1fr;
     flex:1 1 auto;min-height:0;padding:12px 16px;gap:12px;overflow:hidden;
     transition:opacity .15s}
.layout-saz.carregando{opacity:.55;pointer-events:none}

/* Heatmap sazonal: carga (linha, por produção) × mês (coluna). Cor = perfil/volume. */
#det-reservado{display:flex;flex-direction:column;min-height:0}
/* padding-top ZERO: o cabeçalho sticky (.hs-head) gruda no topo do container. Com qualquer
   padding-top, sobrava um vão por onde as células roláveis vazavam por cima da linha 1. */
.heat-saz{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 14px 4px;
  scrollbar-width:thin;scrollbar-color:var(--borda) var(--azul-10)}
.heat-saz::-webkit-scrollbar{width:9px}
.heat-saz::-webkit-scrollbar-thumb{background:var(--borda);border-radius:5px;border:2px solid var(--superficie)}
.hs-row{display:grid;grid-template-columns:182px repeat(12,1fr);gap:2px;align-items:stretch}
.hs-nome-h{font-size:9.5px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;
     letter-spacing:.04em;justify-content:center}
.hs-row[data-cod]{cursor:pointer;border-radius:4px}
.hs-row[data-cod] .hs-cel{cursor:pointer}
.hs-row[data-cod]:hover .hs-nome b{color:var(--primary-texto)}
.hs-row.sel .hs-nome b{color:var(--primary-texto);font-weight:700}
.hs-row.sel .hs-nome{border-left:3px solid var(--primary-color);padding-left:6px;margin-left:-9px}
.hs-head{position:sticky;top:0;z-index:2;background:var(--superficie);padding-bottom:3px}
.hs-mh{font-size:9.5px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;
  text-align:center;letter-spacing:.02em;align-self:end}
.hs-nome{display:flex;flex-direction:column;justify-content:center;line-height:1.15;
  padding-right:8px;overflow:hidden}
.hs-nome b{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hs-cel{height:22px;border-radius:3px;cursor:default}
.hs-row + .hs-row{margin-top:2px}
.hs-pico{box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--texto) 55%, transparent)}   /* marca o mês de PICO da carga */
.heat-nota{font-size:9.5px;color:var(--texto-3);padding:4px 14px 8px;flex-shrink:0}
.grafico-corpo{flex:1;min-height:0;padding:10px 14px 6px;position:relative}
/* Ranking por produto: dois gráficos lado a lado (barras por volume + lollipop por distância) */
.rank-duplo{flex:1;display:flex;gap:14px;min-height:0;padding:12px 10px 8px}
.rank-metade{flex:1;min-width:0;display:flex;flex-direction:column}
/* sub-títulos viraram os TÍTULOS do card (o "Ranking por produto" saiu): mais destaque */
.rank-sub{font-size:13px;font-weight:800;letter-spacing:.01em;color:var(--text-primary);
     text-align:center;margin:0;display:flex;align-items:center;justify-content:center;gap:6px;
     position:relative}
.rank-sub .ajuda{position:static}
.rank-metade .grafico-corpo{padding:6px 2px 2px}
/* cada ranking rola verticalmente para ver TODOS os produtos (não só o top 10) */
.rank-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 4px 2px;
     scrollbar-width:thin;scrollbar-color:var(--borda) var(--azul-10)}
.rank-scroll::-webkit-scrollbar{width:9px}
.rank-scroll::-webkit-scrollbar-track{background:var(--azul-10)}
.rank-scroll::-webkit-scrollbar-thumb{background:var(--borda);border-radius:5px;border:2px solid var(--superficie)}
.rank-tall{position:relative;width:100%}   /* altura definida no JS ∝ nº de itens */

/* ranking unificado: nome (1x) + barra de volume + barra de distância, MESMOS itens por linha */
.ru-wrap{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 4px 3px;
  scrollbar-width:thin;scrollbar-color:var(--borda) var(--azul-10)}
.ru-wrap::-webkit-scrollbar{width:9px}
.ru-wrap::-webkit-scrollbar-track{background:var(--azul-10)}
.ru-wrap::-webkit-scrollbar-thumb{background:var(--borda);border-radius:5px;border:2px solid var(--superficie)}
.ru-head,.ru-row{display:grid;grid-template-columns:140px 1fr 1fr;gap:12px;align-items:center;padding:0 8px}
/* cabeçalho grudado no topo do próprio container (padding-top ZERO evita o vazamento por cima) */
.ru-head{position:sticky;top:0;z-index:2;background:var(--superficie);padding-top:5px;padding-bottom:6px;
  font-size:9.5px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;
  letter-spacing:.03em;border-bottom:1px solid var(--superficie-2)}
.ru-head .ru-col{cursor:pointer;user-select:none;white-space:nowrap}
.ru-head .ru-col.on{color:var(--primary-texto)}
.ru-row{padding-top:4px;padding-bottom:4px;border-radius:4px;cursor:pointer}
.ru-row:hover{background:var(--azul-10)}
.ru-row.sel{background:var(--azul-10)}
.ru-row.sel .ru-nome{color:var(--primary-texto);font-weight:700}
.ru-nome{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ru-metrica{display:grid;grid-template-columns:1fr 72px;gap:10px;align-items:center;min-width:0}
.ru-track{height:10px;background:var(--superficie-2);border-radius:3px;overflow:hidden}
.ru-bar{height:100%;border-radius:3px}
/* o VALOR é o herói: número escuro e forte (tabular); a unidade fica discreta ao lado */
.ru-val{font-size:12.5px;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums;
  white-space:nowrap;text-align:right;letter-spacing:-.01em}
.ru-val .ru-unid{font-size:9px;font-weight:600;color:var(--text-secondary);margin-left:3px;letter-spacing:0}
.dica-grafico{font-size:9.5px;color:var(--texto-3);padding:0 14px 7px;flex-shrink:0}

/* botões de modo no cabeçalho dos cards */
.modos{display:flex;gap:4px}
.modo{font-size:9.5px;font-weight:700;padding:3px 9px;border-radius:6px;cursor:pointer;
     background:var(--superficie);border:1.5px solid var(--border-color);color:var(--text-secondary);
     transition:all .15s}
.modo:hover{border-color:var(--primary-color);color:var(--primary-texto)}
.modo.active{background:var(--primary-texto);color:var(--superficie);border-color:var(--primary-color)}

/* legenda cíclica do mapa (mês é variável circular: dez está tão perto de jan
   quanto de nov, então a escala tem que fechar o círculo) */
.legenda-ciclo{display:flex;flex-direction:column;gap:3px;background:color-mix(in srgb, var(--superficie) 94%, transparent);
     padding:7px 9px;border-radius:8px;box-shadow:0 2px 15px color-mix(in srgb, var(--texto) 15%, transparent);
     border:1px solid var(--border-color)}
.legenda-ciclo .tit{font-weight:800;text-transform:uppercase;letter-spacing:.06em;
     font-size:9px;color:var(--text-secondary)}
.legenda-ciclo .tiras{display:flex}
.legenda-ciclo .tiras i{width:15px;height:11px;display:block}
.legenda-ciclo .tiras i:first-child{border-radius:2px 0 0 2px}
.legenda-ciclo .tiras i:last-child{border-radius:0 2px 2px 0}
.legenda-ciclo .rot{display:flex;justify-content:space-between;font-size:8px;
     font-weight:700;color:var(--texto-3)}

/* mini-gráfico de 12 meses dentro da linha da tabela */
.spark{display:flex;align-items:flex-end;gap:1px;height:16px;width:74px}
.spark div{flex:1;border-radius:1px 1px 0 0;min-height:1px}
.pico-tag{font-size:9px;font-weight:800;padding:1px 6px;border-radius:4px;color:var(--superficie)}

.vazio-card{display:flex;align-items:center;justify-content:center;height:100%;
     padding:24px;text-align:center;font-size:11.5px;color:var(--texto-3);line-height:1.5}

/* botão de ajuda: o aviso longo saiu da tela e virou um "?" com popover */
.panel-header .ajuda{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--borda);
     background:var(--superficie);color:var(--texto-3);font-size:10px;font-weight:800;line-height:1;
     cursor:help;flex-shrink:0;transition:all .15s;padding:0}
.panel-header .ajuda:hover,.panel-header .ajuda.on{border-color:var(--primary-color);
     color:var(--superficie);background:var(--primary-texto)}
.popover{display:none;position:absolute;z-index:3000;top:34px;left:14px;width:390px;
     background:var(--superficie);border:1px solid var(--border-color);border-radius:10px;
     box-shadow:0 10px 30px color-mix(in srgb, var(--texto) 16%, transparent);padding:12px 14px;font-size:11.5px;
     line-height:1.5;color:var(--text-primary);font-weight:400;text-transform:none;
     letter-spacing:0}
.popover.on{display:block}
.popover h5{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;
     color:var(--texto-3);margin-bottom:6px}
.popover b{font-weight:700}
.popover table{font-size:11px;margin:7px 0}
.popover td{padding:2px 8px 2px 0;border:none;white-space:nowrap}
.popover .num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.card .panel-header{position:relative}

/* seletores compactos de mês no cabeçalho do gráfico */
.sel-mini{height:24px;font-size:10.5px;padding:0 6px;min-width:76px;border-radius:6px}
.panel-header .par-periodo{gap:5px}
.panel-header .par-periodo .ate{font-size:10px}

/* ---------- botões de rodovias (canto sup. direito do mapa da aba Produção) ---------- */
.ctl-rodovias{background:color-mix(in srgb, var(--superficie) 94%, transparent);padding:7px 8px;border-radius:8px;
     box-shadow:0 2px 15px color-mix(in srgb, var(--texto) 15%, transparent);border:1px solid var(--border-color);
     display:flex;flex-direction:column;gap:4px}
.ctl-rodovias-tit{font-weight:800;text-transform:uppercase;letter-spacing:.06em;
     font-size:9px;color:var(--text-secondary);margin-bottom:1px}
.rodo-btn{display:flex;align-items:center;gap:7px;width:100%;cursor:pointer;
     font-family:inherit;font-size:11px;font-weight:600;color:var(--text-secondary);
     background:var(--superficie);border:1.5px solid var(--border-color);border-radius:6px;
     padding:4px 9px 4px 7px;transition:border-color .12s,background .12s,color .12s}
.rodo-btn:hover{border-color:var(--borda);color:var(--text-primary)}
.rodo-btn.on{color:var(--text-primary);border-color:var(--borda-forte);background:var(--azul-10);font-weight:700}
.rodo-btn.carregando{opacity:.6;cursor:progress}
.rodo-sw{width:16px;height:4px;border-radius:2px;flex:0 0 auto;opacity:.35;
     transition:opacity .12s}
.rodo-sw-pt{width:9px;height:9px;border-radius:50%;margin:0 3px 0 4px;
     box-shadow:0 0 0 1.5px var(--superficie), 0 0 0 2.5px color-mix(in srgb, var(--texto) 15%, transparent)}   /* praça = ponto redondo */
.rodo-btn.on .rodo-sw{opacity:1}

/* ===== painel-antaq: barra de filtros em UMA linha ========================== */
/* A barra nunca quebra: cada campo tem largura FIXA e o valor selecionado é
   cortado com ellipsis (nunca expande o campo). O rótulo neutro é curto
   ("Todas"/"Todos"), o nome do campo já está no label acima; a lista suspensa
   continua com os textos descritivos, e o hover mostra o nome completo (title). */
.barra-filtros{flex-wrap:nowrap;gap:10px}
.grupo-campos{gap:7px}
.barra-filtros .grupo,.grupo-campos,.campo,.combo{min-width:0}
/* grupos NUNCA encolhem: com min-width:0 o flex espremia o campo e os chips
   vazavam por cima do vizinho (Desembarque colado em Viagens); sem encolher,
   qualquer estouro aparece honesto na borda direita, e aí se ajusta largura */
.barra-filtros .grupo{flex-shrink:0}
#c-uf .combo-gatilho{width:100px}
#c-mun .combo-gatilho{width:96px}
#c-porto .combo-gatilho{width:100px}
#c-nat .combo-gatilho{width:90px}
#c-merc .combo-gatilho{width:140px}
.par-periodo select{min-width:80px}
.chips{flex-shrink:0}
.chip{padding:0 8px}
/* legenda do mapa: título mais discreto */
.legenda .tit{font-size:10px;font-weight:700}
/* Linha de Seleção: único lugar que mostra e remove a seleção ativa
   (origem clicável por nível + pill de destino com ✕ + limpar tudo).
   Só aparece quando há seleção fora do padrão. */
.linha-selecao{display:flex;align-items:center;gap:18px;padding:6px 16px;
  background:var(--superficie);border-bottom:1px solid var(--border-color);
  font-size:12px;color:var(--text-secondary);min-height:30px}
.linha-selecao[hidden]{display:none}
.linha-selecao .rot{font-size:9.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.06em;color:var(--texto-3);margin-right:2px}
.linha-selecao .nivel{color:var(--primary-texto);cursor:pointer;font-weight:600}
.linha-selecao .nivel:hover{text-decoration:underline}
.linha-selecao .atual{font-weight:800;color:var(--text-primary)}
.linha-selecao .sep{color:var(--texto-3);margin:0 2px}
.linha-selecao .pill{display:inline-flex;align-items:center;gap:6px;
  background:var(--azul-10);border:1px solid var(--azul-30);border-radius:999px;
  padding:2px 10px;font-weight:700;color:var(--primary-texto)}
.linha-selecao .pill b{cursor:pointer;font-weight:800;color:var(--texto-3)}
.linha-selecao .pill b:hover{color:var(--vermelho-70)}
.linha-selecao .limpar{margin-left:auto;cursor:pointer;color:var(--texto-3);font-weight:600}
.linha-selecao .limpar:hover{color:var(--vermelho-70)}
.linha-selecao .anat{color:var(--texto-3)}

/* OVERRIDE painel-antaq: drill 'Carga em contêineres' (composição interna).
   A linha -2 vira expansível (▸/▾); as sub-linhas indentam e a tara sai cinza. */
.pl.expansivel{cursor:pointer}
.pl.expansivel .nome::before{content:'▸ ';color:var(--texto-3);font-weight:800}
.pl.expansivel.aberto .nome::before{content:'▾ ';color:var(--texto-3)}
.pl.expansivel:hover .nome{color:var(--primary-texto)}
.pl.sub{padding-left:14px}
.pl.sub .nome{font-weight:500;font-size:10.5px;color:var(--text-secondary)}
.pl.sub .barra div{opacity:.75}

/* OVERRIDE painel-antaq: botão liga/oculta da malha hidroviária (controle do mapa) */
.ctl-hidro{background:var(--superficie);border:1px solid var(--border-color);border-radius:6px;
  padding:5px 10px;font-size:11px;font-weight:700;color:var(--text-secondary);
  cursor:pointer;box-shadow:0 1px 3px color-mix(in srgb, var(--texto) 12%, transparent);user-select:none}
.ctl-hidro:hover{color:var(--primary-texto)}
.ctl-hidro.ativo{background:var(--teal-10);border-color:var(--teal-30);color:var(--teal-70)}

/* ---------- a marca, dimensionada pela TINTA (pele Atlas v2) ----------
   A régua é a mesma aprovada nos painéis de concessão, com UMA medida declarada
   (`--altura-do-A`) e todo o resto derivado das métricas da peça ativa
   (identidade/marca-metricas.css). Medido contra o 2 de Julho:

                        cabeçalho   caixa    A     centro do A
     2 de Julho (ok)       80 px   71,7   48,0   11,9 px acima
     ferrovia (antes)      64 px   56,8   38,0    6,3 px acima   <- desalinhado
     ferrovia (agora)      64 px   54,7   46,0    centrado

   A peça do cabeçalho aqui é a SEM DESCRITOR, recortada na tinta
   (identidade/gerar_marca_cabecalho.py): a oficial gasta 33% da caixa em respiro
   e no descritor, que neste cabeçalho de 64 px sairia com menos de 4 px de
   altura, ilegível. Sem esse peso morto o A vai de 38 para 46 px, quase o
   tamanho aprovado no 2 de Julho (48), e o respiro da régua passa a vir do
   layout, que é onde ele deve estar.

   A proporção do A já estava certa (48/80 = 0,60; 38/64 = 0,59). O que faltava
   era o translateY: as peças oficiais são assimétricas (28 unidades de respiro
   acima do A, 14 abaixo), então centrar a CAIXA deixa a TINTA baixa. O fator vem
   do arquivo de métricas, não de ajuste a olho, e por isso vale para qualquer
   versão da peça. */
:root{
  --altura-do-A: 46px;
  --h-logo: calc(var(--altura-do-A) / var(--marca-fracao-a, 0.6693));
  /* calha fixa, proporcional à dos painéis de concessão (200px para A de 48):
     sem ela o título muda de posição a cada troca de peça */
  /* 158 px: no 2 de Julho o título começa 240 px depois da marca, com A de 48
     (razão 5,0). Com A de 38 aqui a mesma razão pede 190 px, dos quais 15 são o
     gap do cabeçalho e 15 o recuo do próprio bloco de título. */
  --largura-marca: 158px;
}
.logo{
  height: var(--h-logo);
  width: auto; object-fit: contain;
  /* centra a TINTA e não a caixa */
  transform: translateY(calc(-1 * var(--marca-desvio, 0.0551) * var(--h-logo)));
}
/* A CALHA É DA MARCA, não do bloco. `min-width` no .header-marca não reserva
   nada, porque esse bloco contém a marca E o título: o título continuava
   colando na peça. A calha vai na própria imagem, com a tinta ancorada à
   esquerda, e é o que faz o título começar sempre no mesmo x, qualquer que seja
   a versão da peça. */
.logo{ width: var(--largura-marca); object-position: left center; }
/* center, e não stretch: com stretch a imagem para de centralizar e a marca
   sobe mais alguns pixels, defeito já registrado no painel de concessões */
.header-marca{ align-items: center; }
/* o SVG da assinatura é desenhado em midnight: no tema escuro ele desapareceria */
[data-tema="escuro"] img.logo{ filter: invert(1) hue-rotate(180deg) saturate(1.15); }
@media (prefers-color-scheme: dark){
  :root:not([data-tema="claro"]) img.logo{ filter: invert(1) hue-rotate(180deg) saturate(1.15); }
}

/* peça do tema escuro para o data URI, COPIADA da referência
   (painel-ferrovia/estilo.css): data URI não lê var(), então o contrato
   é existir dos dois lados. */
/* O PAR DA SETA. Data URI nao le var() nem herda currentColor, e <select> nao renderiza ::after: nao ha como pedir a cor por token. Entao declara-se a peca dos DOIS temas, que e o mesmo contrato de um par fundo/texto. */ [data-tema="escuro"] .chip-sel.active{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%230F172A'/></svg>")}

/* o cinza de fábrica do Leaflet vem de folha de CDN e não
   conhece o tema: enquanto o tile não chega, o mapa é um retângulo
   cinza fora da identidade. */
.leaflet-container{background:var(--fundo)}

/* ── O ESTADO ATIVO VENCE O PONTEIRO ─────────────────────────────────────────
   `[data-tema="escuro"] .x:hover` tem uma classe a mais de especificidade que
   `.x.active`, e passa a mandar no fundo do elemento escolhido enquanto a letra
   continua a do estado ativo. Medido no antaq, no escuro: 1,05:1, ilegível.

   As regras abaixo são DERIVADAS das declarações de estado ativo deste mesmo
   arquivo, uma a uma. Escrever uma regra genérica no lugar delas foi a primeira
   tentativa, e ela apagava as variantes coloridas: `.chip.active[data-s="0"]`
   tem fundo próprio por sentido, e um `background:inherit` de socorro puxava o
   fundo do PAI, que no escuro é escuro. Derivar não tem esse risco: cada estado
   reafirma o que ele mesmo declara. */
:root[data-tema="escuro"] .chip-sel.active:hover, :root:not([data-tema="claro"]) .chip-sel.active:hover, :root[data-tema="claro"] .chip-sel.active:hover { background:var(--primary-texto); color:var(--superficie) }
:root[data-tema="escuro"] .chip-sel.active option:hover, :root:not([data-tema="claro"]) .chip-sel.active option:hover, :root[data-tema="claro"] .chip-sel.active option:hover { background:var(--superficie); color:var(--text-primary) }
:root[data-tema="escuro"] .chip.active:hover, :root:not([data-tema="claro"]) .chip.active:hover, :root[data-tema="claro"] .chip.active:hover { background:var(--primary-texto); color:var(--superficie) }
:root[data-tema="escuro"] .chip.active[data-sentido=envia]:hover, :root:not([data-tema="claro"]) .chip.active[data-sentido=envia]:hover, :root[data-tema="claro"] .chip.active[data-sentido=envia]:hover { background:var(--envia) }
:root[data-tema="escuro"] .chip.active[data-sentido=recebe]:hover, :root:not([data-tema="claro"]) .chip.active[data-sentido=recebe]:hover, :root[data-tema="claro"] .chip.active[data-sentido=recebe]:hover { background:var(--recebe) }
:root[data-tema="escuro"] .chip.active[data-sentido=ambos]:hover, :root:not([data-tema="claro"]) .chip.active[data-sentido=ambos]:hover, :root[data-tema="claro"] .chip.active[data-sentido=ambos]:hover { background:var(--ambos) }
:root[data-tema="escuro"] .modo.active:hover, :root:not([data-tema="claro"]) .modo.active:hover, :root[data-tema="claro"] .modo.active:hover { background:var(--primary-texto); color:var(--superficie) }
