/* ------------------------------------------------------------------ *
 * Listas — o motor de segmentação (fatia 7).
 * Layout de duas colunas (barra de listas + conteúdo) e o construtor
 * visual de critérios. Usa apenas tokens do design system.
 * ------------------------------------------------------------------ */

.lista-pagina {
  display: grid;
  /* minmax(0, 1fr) e não 1fr: sem o zero explícito o trilho de conteúdo herda
     min-width:auto, se recusa a encolher e empurra a tela para o lado. */
  grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
  gap: var(--esp-4);
  align-items: start;
}

.lista-pagina__lateral {
  position: sticky;
  /* Gruda ABAIXO da barra do topo (que é sticky em top:0), não embaixo dela. */
  top: calc(var(--alt-cromo, 60px) + var(--esp-4));
  /* Nunca mais alta que a janela: com muitas listas, quem rola é a coluna. */
  max-height: calc(100vh - var(--alt-cromo, 60px) - var(--esp-4) * 2);
  max-height: calc(100dvh - var(--alt-cromo, 60px) - var(--esp-4) * 2);
  overflow-y: auto;
  overscroll-behavior: contain;
  /* O nome comprido de uma lista não pode alargar a coluna além do trilho. */
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--esp-3);
  padding: var(--esp-3);
  background: var(--cor-superficie);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio-2, 12px);
}

.lista-pagina__lateral-topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--esp-2);
}

.lista-pagina__conteudo {
  display: flex;
  flex-direction: column;
  gap: var(--esp-4);
  min-width: 0;
}

.lista-pagina__vazio,
.lista-pagina__acoes-dados {
  padding: var(--esp-3);
}

.lista-pagina__acoes-dados {
  display: flex;
  gap: var(--esp-2);
  flex-wrap: wrap;
}

/* Construtor visual --------------------------------------------------- */

.lista-construtor__grupo {
  border: 1px solid var(--cor-borda);
}

.lista-construtor__grupo-cab {
  display: flex;
  align-items: center;
  gap: var(--esp-3);
  flex-wrap: wrap;
  justify-content: space-between;
}

.lista-construtor__condicao {
  display: flex;
  align-items: center;
  gap: var(--esp-2);
  flex-wrap: wrap;
  padding: var(--esp-2);
  background: var(--cor-fundo-suave, rgba(0, 0, 0, 0.02));
  border-radius: var(--raio-1, 8px);
}

.lista-construtor__condicao > .campo__controle,
.lista-construtor__valor > .campo__controle {
  min-width: 8rem;
  /* <select> se dimensiona pela opção mais comprida do catálogo ("Data de
     nascimento", "Não tem nenhuma das etiquetas"...). Sem teto ele atravessa o
     cartão inteiro, e a linha nem chega a poder quebrar. */
  max-width: 100%;
}

.lista-construtor__condicao > select.campo__controle {
  flex: 1 1 10rem;
}

.lista-construtor__valor {
  display: inline-flex;
  flex: 1 1 12rem;
  min-width: 0;
}

/* A frase "O registro precisa atender as condições de [todos os grupos]" é
   texto e controle na mesma linha: em tela estreita ela quebra junto. */
.lista-construtor__juncao {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--esp-2);
  min-width: 0;
}

.lista-construtor__valor > .campo__controle {
  width: 100%;
}

.lista-construtor__previa {
  display: flex;
  flex-direction: column;
  gap: var(--esp-2);
}

.lista-construtor__regras {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--esp-2);
}

.lista-construtor__regras li {
  display: flex;
  align-items: center;
  gap: var(--esp-2);
}

.campo__controle--inline {
  display: inline-block;
  width: auto;
  min-width: 7rem;
}

.texto--suave {
  color: var(--cor-texto-suave, var(--cor-texto-secundario, #6b7280));
  font-size: 0.9em;
}

/* Degrau intermediário: em notebook (e com a barra lateral aberta) a lateral
   afina antes de ir embora, para os resultados terem onde caber. */
@media (max-width: 1200px) {
  .lista-pagina {
    grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
    gap: var(--esp-3);
  }
}

@media (max-width: 860px) {
  .lista-pagina {
    grid-template-columns: minmax(0, 1fr);
  }
  .lista-pagina__lateral {
    position: static;
    max-height: none;
    overflow-y: visible;
  }
}

/* ── S1-listas (23/09): cabeçalho que ordena, sugestões de cidade/bairro ── */

/* O cabeçalho inteiro é o alvo do clique (o legado ordenava assim). A seta
   neutra "↕" mostra que a coluna ordena; a cheia, a direção atual. */
.tabela__ordenar {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
  /* Válvula: o rótulo é o nome do campo (pode ser longo, vem do catálogo);
     não passa da largura do th, que já mora no trilho de rolagem. */
  max-width: 100%;
  overflow: hidden;
}
.tabela__ordenar:hover,
.tabela__ordenar:focus-visible { color: var(--cor-acao-forte); text-decoration: underline; }
.tabela__ordenar--ativa { color: var(--cor-acao-forte); }
.tabela__seta { font-size: 0.75em; opacity: 0.55; }
.tabela__ordenar--ativa .tabela__seta { opacity: 1; }

/* O valor ganha uma âncora para a caixa de sugestões ficar colada nele. */
.lista-construtor__valor { position: relative; }
.lista-construtor__sugestoes {
  position: absolute;
  z-index: 20;
  top: calc(100% + 2px);
  left: 0;
  min-width: 100%;
  max-height: 16rem;
  overflow-y: auto;
  margin: 0;
  padding: 4px 0;
  list-style: none;
  background: var(--cor-fundo-elevado);
  border: 1px solid var(--cor-borda-forte);
  border-radius: 6px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
}
.lista-construtor__sugestoes[hidden] { display: none; }
.lista-construtor__sugestao {
  display: block;
  width: 100%;
  padding: 6px 10px;
  border: 0;
  background: none;
  color: var(--cor-texto);
  font: inherit;
  text-align: left;
  cursor: pointer;
  white-space: nowrap;
  /* Válvula: nome de bairro/cidade vem do cadastro e pode ser enorme; corta
     com reticências em vez de vazar por cima da tela. O title leva o nome
     inteiro (lista_construtor_controller). */
  overflow: hidden;
  text-overflow: ellipsis;
}
.lista-construtor__sugestao:hover,
.lista-construtor__sugestao[aria-selected="true"] { background: var(--cor-acao-suave); }
.lista-construtor__sugestao-total { color: var(--cor-texto-suave); }

/* Prévia esperando a condição ficar completa: sem número, sem susto. */
.lista-construtor__previa-pendente { color: var(--cor-texto-suave); }
