/* ------------------------------------------------------------------ *
 * 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;
  }
}
