/* Modo claro/escuro: mesmo mecanismo do admin do Django (data-theme no
   <html>, guardado em localStorage sob a chave "theme") — continuamos
   reaproveitando o admin/js/theme.js dele pra aplicar o tema, sem
   reescrever essa parte. Só dois modos (claro/escuro, sem "auto"/sistema)
   e o padrão é escuro — por isso o bloco escuro é o que casa com :root
   (sem data-theme definido cai no escuro), e "light" é a exceção
   explícita. A escolha em si mora no menu de engrenagem
   (core/_cabecalho.html), não num botão solto no cabeçalho. */
html[data-theme="dark"],
:root {
  --cor-primaria: #5B9BE0;
  --cor-primaria-clara: #7FB1E8;
  --cor-secundaria: #5B9BE0;
  --cor-fundo: #12181F;
  --cor-secao: #1B222C;
  --cor-borda: #2B3543;
  --cor-texto: #E7ECF2;
  --cor-texto-suave: #9AA7B5;
  --cor-erro: #E5837B;
  --cor-sucesso: #6FCB84;
  --fonte: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --raio: 6px;
  color-scheme: dark;
}

html[data-theme="light"] {
  --cor-primaria: #0B1F3A;
  --cor-primaria-clara: #132C4D;
  --cor-secundaria: #1E73BE;
  --cor-fundo: #FFFFFF;
  --cor-secao: #F4F6F8;
  --cor-borda: #E1E5EA;
  --cor-texto: #1F2933;
  --cor-texto-suave: #5A6672;
  --cor-erro: #B3261E;
  --cor-sucesso: #1E7B34;
  color-scheme: light;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: var(--fonte);
  color: var(--cor-texto);
  background: var(--cor-fundo);
  line-height: 1.5;
}

header.topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 2rem;
  border-bottom: 1px solid var(--cor-borda);
}

header.topo a {
  display: inline-flex;
  line-height: 0;
}

.topo-direita {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

header.topo img {
  height: 32px;
}

/* Logo troca de versão conforme o tema — mesma lógica de data-theme das
   cores acima. Os dois <img> ficam sempre no DOM, só a visibilidade muda. */
header.topo img.logo-escuro { display: block; }
header.topo img.logo-claro { display: none; }

@media (prefers-color-scheme: dark) {
  header.topo img.logo-escuro { display: none; }
  header.topo img.logo-claro { display: block; }
}

html[data-theme="dark"] header.topo img.logo-escuro { display: none; }
html[data-theme="dark"] header.topo img.logo-claro { display: block; }
html[data-theme="light"] header.topo img.logo-escuro { display: block; }
html[data-theme="light"] header.topo img.logo-claro { display: none; }

.topo-bemvindo {
  font-size: 0.9rem;
  color: var(--cor-texto-suave);
  white-space: nowrap;
}

/* Menu do usuário (avatar/iniciais), canto superior direito — mesmo
   dropdown <details>/<summary> do menu de engrenagem, só que o "resumo"
   é redondo (foto ou iniciais) em vez de um ícone. "Sair" mora dentro
   dele agora, junto com o resto (regra do Daniel: um botão só). */
.menu-usuario {
  position: relative;
}

.menu-usuario summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
  display: block;
  border-radius: 50%;
}

.menu-usuario summary::-webkit-details-marker {
  display: none;
}

.menu-usuario-avatar {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  object-fit: cover;
  display: block;
}

.menu-usuario-iniciais {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--cor-secundaria);
  color: #FFFFFF;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  font-weight: 600;
}

.menu-usuario summary:hover .menu-usuario-iniciais,
.menu-usuario[open] .menu-usuario-iniciais {
  background: var(--cor-primaria);
}

.menu-usuario summary:hover .menu-usuario-avatar,
.menu-usuario[open] .menu-usuario-avatar {
  outline: 2px solid var(--cor-secundaria);
  outline-offset: 1px;
}

.menu-usuario .menu-engrenagem-itens form {
  margin: 0;
}

/* Menu de engrenagem (Administração / Saúde), canto superior direito.
   <details>/<summary> dá um dropdown nativo, sem precisar de JavaScript. */
.menu-engrenagem {
  position: relative;
}

.menu-engrenagem summary {
  list-style: none;
  cursor: pointer;
  font-size: 1.3rem;
  line-height: 1;
  padding: 0.4rem 0.6rem;
  border-radius: var(--raio);
  user-select: none;
}

.menu-engrenagem summary::-webkit-details-marker {
  display: none;
}

.menu-engrenagem summary:hover,
.menu-engrenagem[open] summary {
  background: var(--cor-secao);
}

.menu-engrenagem-itens {
  position: absolute;
  right: 0;
  top: 100%;
  margin-top: 0.4rem;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  min-width: 160px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  overflow: hidden;
  z-index: 10;
}

.menu-engrenagem-itens a,
.menu-engrenagem-itens button {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.6rem 1rem;
  background: transparent;
  border: none;
  color: var(--cor-texto);
  text-decoration: none;
  font-size: 0.9rem;
  cursor: pointer;
}

.menu-engrenagem-itens a:hover,
.menu-engrenagem-itens button:hover {
  background: var(--cor-secao);
}

/* Layout com barra lateral, usado em toda tela pós-login/2FA. */
.layout {
  display: flex;
  align-items: flex-start;
}

.barra-lateral {
  width: 220px;
  flex-shrink: 0;
  border-right: 1px solid var(--cor-borda);
  padding: 1.5rem 1rem;
  min-height: calc(100vh - 65px);
  overflow: hidden;
  transition: width 0.15s ease;
}

.barra-lateral.encolhida {
  width: 44px;
  padding: 1.5rem 0.5rem;
}

.barra-lateral.encolhida .barra-lateral-links {
  display: none;
}

.barra-lateral-toggle {
  display: block;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  color: var(--cor-texto-suave);
  padding: 0.3rem 0.5rem;
  margin-bottom: 1rem;
  border-radius: var(--raio);
}

.barra-lateral-toggle:hover {
  background: var(--cor-secao);
}

.barra-lateral a {
  display: block;
  padding: 0.5rem 0.75rem;
  border-radius: var(--raio);
  color: var(--cor-texto);
  text-decoration: none;
  font-size: 0.95rem;
  margin-bottom: 0.2rem;
  white-space: nowrap;
}

.barra-lateral a:hover {
  background: var(--cor-secao);
}

/* Módulos com sub-menu (<details name="barra-lateral-modulos">) — ver
   comentário em _barra_lateral.html com o padrão a copiar. */
.barra-lateral-links summary {
  display: block;
  padding: 0.5rem 0.75rem;
  border-radius: var(--raio);
  color: var(--cor-texto);
  cursor: pointer;
  font-size: 0.95rem;
  list-style: none;
  user-select: none;
  white-space: nowrap;
}

.barra-lateral-links summary::-webkit-details-marker {
  display: none;
}

.barra-lateral-links summary::before {
  content: '▸';
  display: inline-block;
  width: 1em;
  transition: transform 0.1s ease;
}

.barra-lateral-links details[open] summary::before {
  transform: rotate(90deg);
}

.barra-lateral-links summary:hover {
  background: var(--cor-secao);
}

.barra-lateral-links .submenu {
  padding-left: 1.3rem;
}

.barra-lateral-links .submenu a {
  font-size: 0.88rem;
}

.conteudo-principal {
  flex: 1;
  padding: 2rem;
}

/* Sem sessão autenticada+verificada (login, 2FA): sem barra lateral,
   volta a ser um cartão único centralizado — só troca via CSS, o HTML é
   o mesmo em toda tela (ver base.html). */
body:not(.logado) .barra-lateral {
  display: none;
}

body:not(.logado) .conteudo-principal {
  flex: none;
  width: 100%;
  max-width: 480px;
  margin: 3rem auto;
  padding: 0 1.5rem;
}

.grade-metricas {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1rem;
  margin-top: 1.5rem;
}

.grade-metricas h2 {
  font-size: 1rem;
  color: var(--cor-primaria);
  margin: 0 0 0.5rem;
}

.grade-metricas p {
  margin: 0.2rem 0;
}

h1 {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--cor-texto);
  margin-bottom: 0.5rem;
}

/* Tabelas de listagem (projetos, membros etc.) — nenhuma tinha estilo
   próprio até aqui, só o padrão sem formatação do navegador. */
table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 1.5rem;
}

th,
td {
  text-align: left;
  padding: 0.65rem 0.9rem;
  border-bottom: 1px solid var(--cor-borda);
}

th {
  color: var(--cor-texto-suave);
  font-weight: 600;
  font-size: 0.8rem;
}

/* Caixa alta SÓ em cabeçalho de COLUNA (thead) — célula-cabeçalho de
   LINHA (<th scope="row">) carrega DADOS (ex.: e-mails na tela de
   adicionar vários usuários) e não pode ser transformada (issue #14). */
thead th {
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

tbody tr:hover {
  background: var(--cor-secao);
}

p {
  color: var(--cor-texto-suave);
}

.cartao {
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 1.5rem;
  /* Nomes de arquivo (ex.: do último backup) não têm espaço pra quebrar
     naturalmente — sem isso, uma string longa empurra a borda do cartão. */
  overflow-wrap: break-word;
  min-width: 0;
}

label {
  display: block;
  font-size: 0.9rem;
  color: var(--cor-texto);
  margin-bottom: 0.3rem;
}

input[type="text"],
input[type="email"],
input[type="password"] {
  width: 100%;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  font-family: inherit;
  font-size: 1rem;
  margin-bottom: 1rem;
}

input:focus {
  outline: 2px solid var(--cor-secundaria);
  outline-offset: 1px;
}

button,
.botao {
  display: inline-block;
  padding: 0.35rem 0.9rem;
  border-radius: var(--raio);
  font-size: 0.9rem;
  font-family: inherit;
  cursor: pointer;
  border: 1px solid var(--cor-secundaria);
  background: var(--cor-secundaria);
  color: #FFFFFF;
  text-decoration: none;
}

button:hover,
.botao:hover {
  background: var(--cor-primaria);
  border-color: var(--cor-primaria);
}

.botao-secundario {
  background: var(--cor-fundo);
  color: var(--cor-secundaria);
}

.botao-secundario:hover {
  background: var(--cor-secao);
  color: var(--cor-primaria);
}

/* Botão só com o logotipo (sem texto) — pedido do Daniel, mesmo padrão
   visual do ícone "G" oficial do Google, num botão quadrado/arredondado
   compacto, centralizado, em vez do botão de largura total com texto. */
.botao-google {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  margin: 0 auto 1rem;
  border-radius: var(--raio);
  border: 1px solid var(--cor-borda);
  background: #FFFFFF;
  text-decoration: none;
}

.botao-google:hover {
  background: var(--cor-secao);
}

.login-separador {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin: 1rem 0;
  color: var(--cor-texto-suave);
  font-size: 0.85rem;
}

.login-separador::before,
.login-separador::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--cor-borda);
}

/* Issue #31: formulário de e-mail/senha recolhido atrás de um link
   discreto — o Google é o caminho principal. Cores só por variáveis,
   valendo igual nos dois temas. */
.login-detalhes summary {
  cursor: pointer;
  text-align: center;
  color: var(--cor-texto-suave);
  font-size: 0.9rem;
  list-style: none;
}

.login-detalhes summary::-webkit-details-marker {
  display: none;
}

.login-detalhes summary:hover,
.login-detalhes summary:focus-visible {
  color: var(--cor-primaria);
  text-decoration: underline;
}

.login-detalhes[open] summary {
  margin-bottom: 0.8rem;
}

/* Aviso dentro do formulário recolhido (pedido do Daniel, 2026-07-21):
   quase ninguém tem senha local — quem expandir por engano é orientado
   de volta pro Google. */
.login-aviso {
  margin: 0 0 0.8rem;
  padding: 0.6rem 0.8rem;
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  color: var(--cor-texto-suave);
  font-size: 0.85rem;
}

.abana-excluir-projeto {
  background: var(--cor-fundo);
  border-color: var(--cor-erro);
  color: var(--cor-erro);
}

.abana-excluir-projeto:hover {
  background: var(--cor-erro);
  border-color: var(--cor-erro);
  color: #FFFFFF;
}

.abana-excluir-projeto-discreto {
  padding: 0.3rem 0.7rem;
  font-size: 0.8rem;
}

/* Abas das configurações do projeto (Geral / Membros e Permissões) —
   páginas separadas de verdade (URLs distintas), isto aqui é só a
   navegação entre elas. */
.abana-abas-config {
  display: flex;
  gap: 1.5rem;
  border-bottom: 1px solid var(--cor-borda);
  margin-bottom: 1.5rem;
}

.abana-abas-config a {
  display: inline-block;
  padding: 0.6rem 0;
  color: var(--cor-texto-suave);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  font-size: 0.95rem;
}

.abana-abas-config a:hover {
  color: var(--cor-texto);
}

.abana-abas-config a.ativa {
  color: var(--cor-texto);
  border-bottom-color: var(--cor-secundaria);
  font-weight: 600;
}

/* Papel de um membro já existente, editado direto na linha da tabela. */
.abana-form-papel-membro {
  display: inline-flex;
  gap: 0.4rem;
  align-items: center;
}

/* Mensagens do framework messages do Django (django.contrib.messages) —
   a cor segue message.tags (success/error/warning/info), não é sempre
   vermelho: antes disso era um bug (base.html usava sempre a mesma classe
   "erro" pra qualquer mensagem, inclusive as de sucesso). */
.mensagem {
  border-radius: var(--raio);
  padding: 0.6rem 0.9rem;
  margin-bottom: 1rem;
  font-size: 0.9rem;
  border: 1px solid;
}

.mensagem-error {
  background: #FBEAE9;
  color: var(--cor-erro);
  border-color: var(--cor-erro);
}

.mensagem-success {
  background: #EAF7ED;
  color: var(--cor-sucesso);
  border-color: var(--cor-sucesso);
}

.mensagem-warning {
  background: #FFF6E5;
  color: #8A6300;
  border-color: #8A6300;
}

.mensagem-info {
  background: var(--cor-secao);
  color: var(--cor-texto);
  border-color: var(--cor-borda);
}

/* Erros de campo dos formulários do Django (ex.: senha atual errada) —
   mesmo estilo do .erro acima, só que o Django gera isso sozinho como
   <ul class="errorlist">, então precisa de uma regra própria. */
.errorlist {
  list-style: none;
  background: #FBEAE9;
  color: var(--cor-erro);
  border: 1px solid var(--cor-erro);
  border-radius: var(--raio);
  padding: 0.6rem 0.9rem;
  margin: 0 0 0.5rem;
  font-size: 0.9rem;
}

.errorlist li {
  margin: 0;
}

code {
  background: var(--cor-secao);
  padding: 0.2rem 0.4rem;
  border-radius: 4px;
  font-size: 0.9rem;
}

.foto-perfil-atual {
  max-width: 120px;
  border-radius: 50%;
  border: 1px solid var(--cor-borda);
}

ul {
  padding-left: 1.2rem;
}

a {
  color: var(--cor-secundaria);
}

/* Quadro Kanban do Abana — renderizado em React (abana/frontend), estas
   classes são compartilhadas com o CSS puro do resto do sistema de
   propósito (mesmos tokens --cor-*, sem CSS duplicado no bundle do React).
   Reordenar é por @dnd-kit: mouse/toque na alça (.abana-alca-arrastar) OU
   teclado (Tab até a alça, Espaço pra pegar, setas pra mover, Espaço pra
   soltar) — a alternativa acessível ao arrastar vem de graça da lib. */
.abana-cabecalho-quadro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.abana-cabecalho-quadro h1 {
  margin-bottom: 0;
}

/* Menu "Configurações" do quadro: mesmo .menu-engrenagem do cabeçalho
   global, mas discreto (texto, não emoji) — pedido explícito de não
   ficar chamativo do lado do título. */
.abana-cabecalho-quadro .menu-engrenagem summary {
  font-size: 0.85rem;
  color: var(--cor-texto-suave);
  border: 1px solid var(--cor-borda);
  padding: 0.4rem 0.8rem;
}

.abana-cabecalho-quadro .menu-engrenagem summary:hover,
.abana-cabecalho-quadro .menu-engrenagem[open] summary {
  color: var(--cor-texto);
}

.abana-quadro {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  overflow-x: auto;
  padding-bottom: 1rem;
}

.abana-coluna {
  background: var(--cor-secao);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 0.8rem;
  /* Largura FIXA (issue #55, referência Asana): sem ela a coluna
     esticava pra caber a pílula/título mais compridos e o quadro
     inteiro transbordava na horizontal — o conteúdo é quem quebra
     linha, não a coluna que cresce. */
  width: 300px;
  min-width: 300px;
  flex-shrink: 0;
  cursor: grab;
}

.abana-coluna:active {
  cursor: grabbing;
}

.abana-coluna-vazia {
  color: var(--cor-texto-suave);
  font-size: 0.9rem;
}

/* Último item da fileira do quadro — mesmo tamanho de uma coluna, pra
   ficar visualmente na mesma fileira em vez de um formulário separado
   embaixo do quadro. */
.abana-adicionar-secao {
  min-width: 220px;
  flex-shrink: 0;
  align-self: flex-start;
}

button.abana-adicionar-secao {
  background: transparent;
  border: 1px dashed var(--cor-borda);
  border-radius: var(--raio);
  color: var(--cor-texto-suave);
  padding: 0.8rem;
  text-align: left;
  cursor: pointer;
  font-size: 0.9rem;
}

button.abana-adicionar-secao:hover,
button.abana-adicionar-secao:focus {
  background: var(--cor-secao);
  color: var(--cor-texto);
  outline: none;
}

.abana-adicionar-secao-editando input {
  width: 100%;
  box-sizing: border-box;
  padding: 0.75rem;
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  background: var(--cor-secao);
  color: var(--cor-texto);
  font-size: 0.9rem;
}

/* Cartões de tarefa dentro da coluna. */
.abana-lista-tarefas {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0.6rem 0;
}

/* O cartão empilha linhas (linha principal, rodapé com prazo/subtarefas,
   lista expandida de subtarefas) — a linha principal é .abana-tarefa-linha. */
.abana-tarefa {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 0.5rem 0.6rem;
  cursor: grab;
  /* Issue #26: sem isto, no toque o navegador dispara zoom de duplo
     toque e atrapalha o pressionar-e-segurar que inicia o arraste.
     "manipulation" mantém a rolagem normal e só corta esses atalhos. */
  touch-action: manipulation;
}

.abana-tarefa-linha {
  display: flex;
  align-items: center;
  gap: 0.3rem;
}

/* Alinhamento vertical explícito de tudo dentro da linha (check, título,
   selo do responsável, menu ⋮) — Daniel reportou o check desalinhado do
   título; além do align-items do pai, cada filho declara o próprio
   align-self pra nenhum estilo futuro (ou de user-agent) desalinhar de
   novo sem ser de propósito. */
.abana-tarefa-linha > * {
  align-self: center;
  margin-top: 0;
  margin-bottom: 0;
}

/* Rodapé do cartão: prazo à esquerda, indicador de subtarefas à direita
   (como no Asana de referência do Daniel). */
.abana-rodape-tarefa {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  min-height: 1.2rem;
}

.abana-prazo-mini {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  font-size: 0.75rem;
  cursor: pointer;
  padding: 0.1rem 0.2rem;
}

.abana-prazo-mini.vazio {
  border: 1px dashed var(--cor-borda);
  border-radius: 50%;
  padding: 0.25rem;
}

.abana-prazo-mini:hover {
  color: var(--cor-texto);
  border-color: var(--cor-texto-suave);
}

.abana-chip-comentarios,
.abana-chip-subtarefas {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  font-size: 0.75rem;
  cursor: pointer;
  padding: 0.1rem 0.2rem;
}

.abana-chip-comentarios:hover,
.abana-chip-subtarefas:hover {
  color: var(--cor-texto);
}

.abana-cadeado-mini {
  display: inline-flex;
  color: var(--cor-erro);
  flex-shrink: 0;
}

/* Lista de subtarefas expandida dentro do cartão. */
.abana-subtarefas-expandido {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  border-top: 1px solid var(--cor-borda);
  padding-top: 0.4rem;
  cursor: default;
}

.abana-linha-subtarefa {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.abana-linha-subtarefa .abana-painel-subtarefa-titulo {
  flex: 1;
}

/* Sugestões de menção (@) nos comentários. */
.abana-mencoes {
  position: relative;
}

.abana-mencoes-sugestoes {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  z-index: 10;
  list-style: none;
  margin: 0.1rem 0 0;
  padding: 0.2rem;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
  max-height: 10rem;
  overflow-y: auto;
}

.abana-mencoes-sugestoes button {
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  border: none;
  color: var(--cor-texto);
  font-size: 0.9rem;
  padding: 0.35rem 0.5rem;
  border-radius: var(--raio);
  cursor: pointer;
}

.abana-mencoes-sugestoes button:hover,
.abana-mencoes-sugestoes button.ativa {
  background: var(--cor-secao);
}

.abana-tarefa .abana-titulo-tarefa,
.abana-tarefa .abana-titulo-tarefa-texto {
  line-height: 1.2;
}

.abana-tarefa:active {
  cursor: grabbing;
}

.abana-tarefa-completa .abana-titulo-tarefa-texto,
.abana-tarefa-completa .abana-titulo-tarefa {
  text-decoration: line-through;
  color: var(--cor-texto-suave);
}

.abana-titulo-tarefa-texto {
  flex: 1;
  font-size: 0.9rem;
}

.abana-titulo-tarefa {
  flex: 1;
  width: 100%;
  box-sizing: border-box;
  border: 1px solid transparent;
  background: transparent;
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.3rem 0.4rem;
  font-size: 0.9rem;
  cursor: text;
}

.abana-titulo-tarefa:hover,
.abana-titulo-tarefa:focus {
  border-color: var(--cor-borda);
  background: var(--cor-secao);
  outline: none;
}

/* Fora da edição (readonly), o título é área de "pega" do arraste
   (2026-07-20): a mãozinha avisa que dá pra arrastar dali; o cursor de
   texto volta quando a edição liga (foco). */
.abana-titulo-tarefa[readonly] {
  cursor: grab;
}

/* Pé da coluna com carregamento parcial (issue #54): traz o próximo
   lote de cartões. Discreto como o "+ Adicionar tarefa", mas
   centralizado — é continuação da lista, não criação. */
.abana-mostrar-mais {
  display: block;
  width: 100%;
  background: transparent;
  border: 1px dashed var(--cor-borda);
  border-radius: var(--raio);
  color: var(--cor-texto-suave);
  text-align: center;
  padding: 0.4rem 0.2rem;
  cursor: pointer;
  font-size: 0.8rem;
  margin-top: 0.4rem;
}

.abana-mostrar-mais:hover,
.abana-mostrar-mais:focus {
  color: var(--cor-texto);
  background: var(--cor-secao);
  outline: none;
}

.abana-adicionar-tarefa {
  display: block;
  width: 100%;
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  text-align: left;
  padding: 0.4rem 0.2rem;
  cursor: pointer;
  font-size: 0.85rem;
  margin-top: 0.4rem;
}

.abana-adicionar-tarefa:hover,
.abana-adicionar-tarefa:focus {
  color: var(--cor-texto);
  outline: none;
}

.abana-menu-titulo {
  display: block;
  padding: 0.5rem 1rem 0.2rem;
  color: var(--cor-texto-suave);
  font-size: 0.75rem;
  font-weight: 600;
}

/* Só indicador visual agora — a coluna/tarefa inteira é que arrasta (ver
   useSortable em SortableColumn.jsx/TaskCard.jsx), não só esta alcinha. */
.abana-alca-arrastar {
  color: var(--cor-texto-suave);
  font-size: 1rem;
  padding: 0.1rem 0.2rem;
}

/* Selo do responsável — foto (se tiver) ou iniciais, pequeno e discreto
   de propósito: não deve competir visualmente com o título do cartão. */
.abana-responsavel {
  width: 1.1rem;
  height: 1.1rem;
  min-width: 1.1rem;
  border-radius: 50%;
  flex-shrink: 0;
  object-fit: cover;
}

.abana-responsavel-iniciais {
  background: var(--cor-secao);
  border: 1px solid var(--cor-borda);
  color: var(--cor-texto-suave);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.55rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Botão de concluir tarefa. Preenche e ganha uma "pulsada" ao concluir —
   feedback visual imediato e otimista (regra do briefing: não pedir
   confirmação pra conclusão comum, e mostrar o resultado na hora). */
.abana-check-tarefa {
  width: 1.4rem;
  height: 1.4rem;
  min-width: 1.4rem;
  border-radius: 50%;
  border: 2px solid var(--cor-borda);
  background: transparent;
  color: transparent;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  line-height: 1;
  position: relative;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.abana-check-tarefa:hover {
  border-color: var(--cor-sucesso);
}

.abana-check-tarefa.concluida {
  background: var(--cor-sucesso);
  border-color: var(--cor-sucesso);
  color: #FFFFFF;
  animation: abana-check-pop 0.35s ease;
}

.abana-check-tarefa.concluida::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  border: 2px solid var(--cor-sucesso);
  opacity: 0;
  animation: abana-check-anel 0.5s ease-out;
}

@keyframes abana-check-pop {
  0% { transform: scale(0.6); }
  60% { transform: scale(1.3); }
  100% { transform: scale(1); }
}

@keyframes abana-check-anel {
  0% { opacity: 0.6; transform: scale(0.5); }
  100% { opacity: 0; transform: scale(1.7); }
}

@media (prefers-reduced-motion: reduce) {
  .abana-check-tarefa.concluida,
  .abana-check-tarefa.concluida::after {
    animation: none;
  }
}

/* Campo de nome da coluna: parece texto normal até ganhar foco/hover —
   é o que fica editável direto, sem precisar de botão de confirmar. */
.abana-nome-coluna {
  font-weight: bold;
  font-size: 1rem;
  width: 100%;
  border: 1px solid transparent;
  background: transparent;
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.2rem 0.3rem;
  box-sizing: border-box;
  cursor: text;
}

.abana-nome-coluna:hover,
.abana-nome-coluna:focus {
  border-color: var(--cor-borda);
  background: var(--cor-fundo);
  outline: none;
}

.abana-coluna-cabecalho {
  display: flex;
  align-items: center;
  gap: 0.2rem;
}

.abana-coluna-cabecalho .abana-nome-coluna {
  flex: 1;
}

/* Menu de ações da coluna (mover, clonar, excluir) — mesmo padrão
   <details>/<summary> do menu de engrenagem do cabeçalho global
   (.menu-engrenagem), só que com <button> em vez de <a> porque os itens
   disparam ações, não navegação. */
.abana-menu-coluna {
  position: relative;
  flex-shrink: 0;
}

.abana-menu-coluna summary {
  list-style: none;
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  padding: 0.2rem 0.5rem;
  border-radius: var(--raio);
  color: var(--cor-texto-suave);
  user-select: none;
}

.abana-menu-coluna summary::-webkit-details-marker {
  display: none;
}

.abana-menu-coluna summary:hover,
.abana-menu-coluna[open] summary {
  background: var(--cor-fundo);
  color: var(--cor-texto);
}

.abana-menu-coluna-itens {
  /* position: fixed, não absolute — renderizado via portal em <body>
     (SortableColumn.jsx), com top/left calculados em JS na abertura, pra
     escapar do "overflow-x: auto" de .abana-quadro (ver comentário lá). */
  position: fixed;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  min-width: 180px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  overflow: hidden;
  z-index: 10;
  display: flex;
  flex-direction: column;
}

.abana-menu-coluna-itens button,
.abana-menu-coluna-itens a {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.6rem 1rem;
  background: transparent;
  border: none;
  color: var(--cor-texto);
  text-decoration: none;
  font-size: 0.9rem;
  cursor: pointer;
  box-sizing: border-box;
}

.abana-menu-coluna-itens button:hover:not(:disabled),
.abana-menu-coluna-itens a:hover {
  background: var(--cor-secao);
}

.abana-menu-coluna-itens button:disabled {
  color: var(--cor-texto-suave);
  cursor: not-allowed;
}

/* Cartão selecionado (painel de detalhes aberto pra ele) — contorno na
   cor de destaque, pra achar fácil qual tarefa está aberta no painel ao
   lado (pedido explícito do Daniel, com print de referência). */
.abana-tarefa-selecionada {
  outline: 2px solid var(--cor-primaria);
  outline-offset: -1px;
}

/* Painel de detalhes da tarefa (título, responsável, projeto, descrição)
   — lateral, não modal centralizado: o quadro continua visível (só
   escurecido) atrás, igual ao comportamento do Asana que serviu de
   referência. Fecha ao clicar fora, apertar Esc ou no ✕. */
.abana-painel-fundo {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  display: flex;
  justify-content: flex-end;
  z-index: 100;
}

.abana-painel-detalhe {
  background: var(--cor-fundo);
  border-left: 1px solid var(--cor-borda);
  box-shadow: -2px 0 12px rgba(0, 0, 0, 0.25);
  width: min(480px, 100vw);
  height: 100%;
  overflow-y: auto;
  padding: 1.25rem 1.5rem;
  box-sizing: border-box;
}

.abana-painel-cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;
}

.abana-painel-concluir {
  border: 1px solid var(--cor-borda);
  background: var(--cor-secao);
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.4rem 0.8rem;
  font-size: 0.85rem;
  cursor: pointer;
}

.abana-painel-concluir.concluida {
  border-color: var(--cor-sucesso);
  color: var(--cor-sucesso);
}

.abana-painel-fechar {
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  font-size: 1.1rem;
  cursor: pointer;
  padding: 0.2rem 0.5rem;
}

.abana-painel-fechar:hover {
  color: var(--cor-texto);
}

h2.abana-painel-titulo {
  margin: 0 0 1rem 0;
}

input.abana-painel-titulo {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 1rem 0;
  border: 1px solid transparent;
  background: transparent;
  color: var(--cor-texto);
  font-size: 1.2rem;
  font-weight: bold;
  padding: 0.3rem 0.4rem;
  border-radius: var(--raio);
}

input.abana-painel-titulo:hover,
input.abana-painel-titulo:focus {
  border-color: var(--cor-borda);
  background: var(--cor-secao);
  outline: none;
}

.abana-painel-campo {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-bottom: 0.6rem;
}

.abana-painel-campo .abana-painel-rotulo {
  margin: 0;
  min-width: 110px;
}

.abana-painel-valor {
  color: var(--cor-texto);
  font-size: 0.9rem;
}

/* Campos "Responsável"/"Projetos" clicáveis (viram seletor ao clicar) —
   mesmo visual do texto normal até passar o mouse, pra dar a dica de que
   é clicável sem parecer um botão comum. */
button.abana-painel-valor-editavel {
  background: transparent;
  border: 1px dashed transparent;
  border-radius: var(--raio);
  padding: 0.15rem 0.4rem;
  cursor: pointer;
  text-align: left;
}

button.abana-painel-valor-editavel:hover,
button.abana-painel-valor-editavel:focus {
  border-color: var(--cor-borda);
  background: var(--cor-secao);
  outline: none;
}

.abana-painel-mover-projeto {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}

.abana-painel-mover-projeto-acoes {
  display: flex;
  gap: 0.4rem;
}

/* Listas do painel: projetos onde a tarefa está (com dropdown de status)
   e lembretes de prazo — mesma anatomia: linha flexível, texto à
   esquerda, controles à direita. */
.abana-painel-projetos,
.abana-painel-lembretes {
  list-style: none;
  margin: 0 0 0.5rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.abana-painel-projetos li,
.abana-painel-lembretes li {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  font-size: 0.9rem;
  color: var(--cor-texto);
}

.abana-painel-projetos li .abana-painel-valor {
  flex: 1;
}

.abana-painel-novo-lembrete {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.abana-painel-novo-lembrete input[type="number"] {
  width: 5rem;
}

/* Botão "Adicionar lembrete" pequenininho, no mesmo espírito discreto do
   "Remover" das listas do painel (pedido do Daniel, com print). */
.abana-painel-novo-lembrete button {
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  cursor: pointer;
  font-size: 0.8rem;
  padding: 0.2rem 0.3rem;
}

.abana-painel-novo-lembrete button:hover {
  color: var(--cor-texto);
}

/* Link discreto no cabeçalho do quadro (ex.: "Ver em lista" no quadro
   pessoal) — mesmo peso visual do "Configurações" do quadro de projeto. */
/* Link discreto — usado tanto em <a> quanto em <button>. AUTOSSUFICIENTE
   de propósito (fundo, borda e cor declarados nos dois estados): botão
   que herda metade da regra global de botão (fundo azul) vira texto
   invisível no modo claro — diretriz do CLAUDE.md. */
.abana-link-discreto {
  background: transparent;
  border: none;
  padding: 0.15rem 0.3rem;
  color: var(--cor-texto-suave);
  font-size: 0.85rem;
  text-decoration: none;
  cursor: pointer;
}

.abana-link-discreto:hover,
.abana-link-discreto:focus-visible {
  background: transparent;
  border: none;
  color: var(--cor-texto);
  text-decoration: underline;
}

/* Selo de tarefa bloqueada por dependência — no cartão do quadro e no
   topo do painel de detalhes. */
.abana-chip-bloqueada {
  color: var(--cor-erro);
  border: 1px solid var(--cor-erro);
  border-radius: var(--raio);
  padding: 0.1rem 0.4rem;
  font-size: 0.75rem;
  white-space: nowrap;
}

p.abana-chip-bloqueada {
  display: inline-block;
  white-space: normal;
  margin: 0 0 0.8rem;
}

/* Selo/ícone de tarefa pausada (2026-07-20): discreto no cartão (só o
   ícone) e aviso no topo do painel — tom neutro, não é erro. */
.abana-pause-mini {
  display: inline-flex;
  color: var(--cor-texto-suave);
  flex-shrink: 0;
}

/* Development-environment strip (issue #13): loud on purpose, present
   on every page of the dev instance only. */
.faixa-ambiente-dev {
  background: var(--cor-erro);
  color: #FFFFFF;
  text-align: center;
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0.25rem 0.5rem;
}

/* Pedidos (issue #18): lista com saldo de votos à esquerda, pílula de
   status à direita; votos ▲/▼ com estado ativo declarando fundo, borda
   E cor nos dois temas (regra do CLAUDE.md). */
.pedidos-barra {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 1.25rem 0;
}

/* Botão de novo pedido: declara fundo, borda E cor nos dois estados e
   nos dois temas (regra do CLAUDE.md contra herdar metade do estilo). */
.pedido-botao-novo {
  display: inline-block;
  background: var(--cor-secundaria);
  border: 1px solid var(--cor-secundaria);
  color: #FFFFFF;
  border-radius: var(--raio);
  padding: 0.45rem 1rem;
  text-decoration: none;
  font-weight: 600;
}

.pedido-botao-novo:hover,
.pedido-botao-novo:focus-visible {
  background: var(--cor-secundaria);
  border-color: var(--cor-secundaria);
  color: #FFFFFF;
  filter: brightness(1.1);
}

.pedidos-filtros {
  display: flex;
  gap: 0.5rem;
  margin-left: auto;
}

.pedidos-filtros select {
  min-width: 9rem;
}

.pedidos-lista {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.pedido-linha {
  display: flex;
  align-items: center;
  gap: 1.1rem;
}

.pedido-linha:hover {
  border-color: var(--cor-secundaria);
}

/* Bloco de votos à esquerda, estilo placar — número grande, rótulo
   pequeno embaixo. */
.pedido-votos-bloco {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 3.2rem;
  padding: 0.3rem 0.4rem;
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  background: var(--cor-secao);
  flex-shrink: 0;
}

.pedido-votos-numero {
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.2;
}

.pedido-votos-rotulo {
  font-size: 0.65rem;
  color: var(--cor-texto-suave);
}

.pedido-corpo {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  min-width: 0;
  flex: 1;
}

.pedido-titulo {
  font-weight: 600;
  font-size: 1.02rem;
  color: var(--cor-texto);
  text-decoration: none;
}

.pedido-titulo:hover {
  color: var(--cor-secundaria);
  text-decoration: underline;
}

.pedido-meta {
  font-size: 0.8rem;
  color: var(--cor-texto-suave);
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
}

.pedido-tipo-ideia { color: var(--cor-secundaria); border-color: var(--cor-secundaria); }
.pedido-tipo-problema { color: var(--cor-erro); border-color: var(--cor-erro); }

.pedido-pill {
  flex-shrink: 0;
  border-radius: 999px;
  padding: 0.1rem 0.6rem;
  font-size: 0.75rem;
  border: 1px solid var(--cor-borda);
  color: var(--cor-texto-suave);
  background: var(--cor-secao);
}

/* Só a pílula de STATUS da linha (última filha direta) cola à direita. */
.pedido-linha > .pedido-pill {
  margin-left: auto;
}

.pedido-concluido { color: var(--cor-sucesso); border-color: var(--cor-sucesso); }
.pedido-recusado { color: var(--cor-erro); border-color: var(--cor-erro); }
.pedido-github { margin-left: 0.3rem; }

.pedido-acoes {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 1rem;
}

.pedido-votar {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

/* Clone do cartão em arraste (issue #57): desenhado pelo DragOverlay,
   fora dos contêineres roláveis — nunca cortado, sempre sob o cursor. */
.abana-tarefa-em-arraste {
  cursor: grabbing;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
  font-size: 0.9rem;
}

/* Convidados de cartão (issue #48): lista discreta + busca de convite.
   Cores sempre por variáveis — vale nos dois temas. */
.abana-painel-lista {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.abana-convidado-linha {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.abana-pill-suave {
  background: var(--cor-secao);
  border: 1px solid var(--cor-borda);
  color: var(--cor-texto-suave);
  border-radius: 999px;
  padding: 0.05rem 0.6rem;
  font-size: 0.78rem;
}

.abana-convidar {
  margin-top: 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.abana-convidar-sugestoes button {
  background: none;
  border: none;
  color: var(--cor-texto);
  cursor: pointer;
  padding: 0.25rem 0.3rem;
  border-radius: var(--raio);
  text-align: left;
  width: 100%;
}

.abana-convidar-sugestoes button:hover,
.abana-convidar-sugestoes button:focus-visible {
  background: var(--cor-secao);
  color: var(--cor-texto);
}

.abana-convidar-papel {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

/* Setas de voto na LISTA de pedidos (issue #36) — mesmos botões da
   página do pedido, empilhados verticalmente no bloco de votos. */
.pedido-voto-form {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15rem;
}

.pedido-voto {
  background: var(--cor-secao);
  border: 1px solid var(--cor-borda);
  color: var(--cor-texto-suave);
  border-radius: var(--raio);
  padding: 0.2rem 0.6rem;
  cursor: pointer;
}

.pedido-voto:hover,
.pedido-voto:focus-visible {
  background: var(--cor-secao);
  border-color: var(--cor-secundaria);
  color: var(--cor-texto);
}

.pedido-voto.ativo {
  background: var(--cor-secundaria);
  border-color: var(--cor-secundaria);
  color: #FFFFFF;
}

.pedido-voto.ativo:hover,
.pedido-voto.ativo:focus-visible {
  background: var(--cor-secundaria);
  border-color: var(--cor-secundaria);
  color: #FFFFFF;
}

/* Seta a favor desabilitada no próprio pedido (issue #53) — visível,
   mas apagada e com o porquê no title (diretriz: ação primária nunca
   some, se desabilita explicando). */
.pedido-voto:disabled {
  opacity: 0.45;
  cursor: default;
}

.pedido-voto:disabled:hover {
  background: var(--cor-secao);
  border-color: var(--cor-borda);
  color: var(--cor-texto-suave);
}

.pedido-saldo {
  min-width: 2rem;
  text-align: center;
  font-weight: 600;
}

.pedido-anexo-linha {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.35rem 0;
  border-bottom: 1px solid var(--cor-borda);
}

.pedido-anexo-linha:last-of-type {
  border-bottom: none;
}

.pedido-remover-anexo {
  margin-left: auto;
}

.pedido-anexar {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin-top: 0.9rem;
}

.pedido-comentario {
  border-bottom: 1px solid var(--cor-borda);
  padding: 0.6rem 0;
}

.pedido-comentario:last-of-type {
  border-bottom: none;
}

.pedido-comentar textarea {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin: 0.75rem 0 0.5rem;
}

.pedido-form label {
  display: block;
  margin-bottom: 0.25rem;
}

.pedido-form input[type="text"],
.pedido-form textarea,
.pedido-form select {
  width: 100%;
  max-width: 40rem;
  box-sizing: border-box;
}

/* Tokens de API (issue #6): valor do token recém-criado em destaque
   copiável; lista de tokens com linhas finas e revogação discreta no
   hover (padrão de ações destrutivas do CLAUDE.md). */
.token-valor {
  display: block;
  padding: 0.6rem 0.8rem;
  background: var(--cor-secao);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  word-break: break-all;
  user-select: all;
}

.lista-de-tokens {
  list-style: none;
  margin: 0;
  padding: 0;
}

.lista-de-tokens li {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--cor-borda);
}

.lista-de-tokens li:last-child {
  border-bottom: none;
}

.lista-de-tokens .token-nome {
  font-weight: 600;
}

.lista-de-tokens .form-revogar {
  margin-left: auto;
}

.token-vencido {
  color: var(--cor-erro);
}

.form-criar-token label {
  display: inline-block;
  min-width: 5.5rem;
}

/* Barra de progresso das subtarefas no cartão (issue #3, 2026-07-20):
   contagem à esquerda, trilho no meio, porcentagem à direita — layout do
   print do GitHub. Tokens do tema nos dois modos: trilho sutil sobre
   --cor-secao com borda fina, preenchimento no azul de destaque
   (--cor-secundaria: #5B9BE0 no escuro, #1E73BE no claro) e verde de
   sucesso quando chega em 100%. */
.abana-progresso-subtarefas {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.75rem;
  color: var(--cor-texto-suave);
  cursor: default;
}

.abana-progresso-contagem,
.abana-progresso-porcentagem {
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}

.abana-progresso-trilho {
  flex: 1;
  height: 6px;
  border-radius: 3px;
  background: var(--cor-secao);
  border: 1px solid var(--cor-borda);
  overflow: hidden;
}

.abana-progresso-preenchimento {
  display: block;
  height: 100%;
  background: var(--cor-secundaria);
  border-radius: 3px;
  transition: width 0.25s ease;
}

.abana-progresso-preenchimento.completo {
  background: var(--cor-sucesso);
}

/* Símbolo de dependência (2026-07-20): neutro quando as dependências já
   foram concluídas — o estado bloqueado usa o cadeado vermelho de
   sempre (.abana-cadeado-mini). */
.abana-dep-mini {
  display: inline-flex;
  color: var(--cor-texto-suave);
  flex-shrink: 0;
}

p.abana-chip-pausada {
  display: inline-block;
  color: var(--cor-texto-suave);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 0.1rem 0.4rem;
  font-size: 0.75rem;
  margin: 0 0 0.8rem;
}

/* Cabeçalho das seções colapsáveis do painel (2026-07-20): botão que
   parece o rótulo de sempre, com a setinha na frente. Declara fundo,
   borda E cor nos dois estados — regra do CLAUDE.md contra herdar metade
   do estilo global de botão (fundo azul + texto invisível). */
.abana-secao-cabecalho {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  width: 100%;
  background: transparent;
  border: none;
  padding: 0;
  color: var(--cor-texto-suave);
  cursor: pointer;
  text-align: left;
}

.abana-secao-cabecalho:hover,
.abana-secao-cabecalho:focus-visible {
  background: transparent;
  border: none;
  color: var(--cor-texto);
}

.abana-secao-cabecalho:hover .abana-painel-rotulo,
.abana-secao-cabecalho:focus-visible .abana-painel-rotulo {
  color: var(--cor-texto);
}

.abana-secao-cabecalho .abana-painel-rotulo {
  margin: 0;
}

.abana-secao-seta {
  font-size: 0.7rem;
  color: var(--cor-texto-suave);
  width: 0.8rem;
}

.abana-secao-contagem {
  font-size: 0.75rem;
  color: var(--cor-texto-suave);
  border: 1px solid var(--cor-borda);
  border-radius: 999px;
  padding: 0 0.4rem;
  line-height: 1.3;
}

.abana-secao-corpo,
.abana-secao-colapsavel .abana-secao-corpo {
  margin-top: 0.6rem;
}

/* Config de pausa dentro do painel: linhas empilhadas com respiro. */
.abana-painel-config-pausa {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.abana-pausa-opcao {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  cursor: pointer;
}

/* Lista de subtarefas do painel — check pequeno + título clicável (abre
   o painel da subtarefa). */
.abana-painel-subtarefas {
  list-style: none;
  margin: 0 0 0.5rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.abana-painel-subtarefas li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.abana-painel-subtarefa-titulo {
  background: transparent;
  border: none;
  color: var(--cor-texto);
  font-size: 0.9rem;
  text-align: left;
  cursor: pointer;
  padding: 0.1rem 0.2rem;
}

.abana-painel-subtarefa-titulo:hover {
  text-decoration: underline;
}

.abana-painel-subtarefa-titulo.concluida {
  text-decoration: line-through;
  color: var(--cor-texto-suave);
}

.abana-painel-nova-subtarefa {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.abana-painel-nova-subtarefa input {
  flex: 1;
}

.abana-painel-info {
  color: var(--cor-texto-suave);
  font-size: 0.8rem;
}

.abana-painel-secao {
  margin-top: 1.75rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--cor-borda);
}

.abana-painel-rotulo {
  display: block;
  margin: 0 0 0.3rem;
  color: var(--cor-texto-suave);
  font-size: 0.8rem;
  font-weight: 600;
}

.abana-painel-descricao {
  display: block;
  width: 100%;
  box-sizing: border-box;
  resize: vertical;
  border: 1px solid transparent;
  background: transparent;
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.5rem 0.6rem;
  /* Sem margem negativa EMBAIXO (issue #50): a caixa pintada no
     hover/foco (ou redimensionada) cobria a linha seguinte. */
  margin: -0.5rem -0.6rem 0;
  font-family: inherit;
  font-size: 0.9rem;
}

.abana-painel-descricao:hover,
.abana-painel-descricao:focus {
  border-color: var(--cor-borda);
  background: var(--cor-secao);
  outline: none;
}

.abana-painel-descricao-texto {
  white-space: pre-wrap;
  color: var(--cor-texto);
  font-size: 0.9rem;
}

.abana-painel-comentarios {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
}

.abana-comentario {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
}

.abana-comentario-corpo {
  flex: 1;
  padding: 0.1rem 0;
}

.abana-comentario-cabecalho {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.2rem;
  font-size: 0.85rem;
}

.abana-comentario-cabecalho strong {
  color: var(--cor-texto);
}

.abana-comentario-corpo p {
  margin: 0;
  white-space: pre-wrap;
  color: var(--cor-texto);
  font-size: 0.9rem;
}

/* Comentário do próprio autor: parece texto normal até ganhar foco —
   mesmo padrão de clique-e-digite de CampoTituloDaTarefa/CampoNomeDaColuna
   (TaskCard.jsx/SortableColumn.jsx), sem precisar de um botão "Editar". */
.abana-comentario-texto-editavel {
  display: block;
  box-sizing: border-box;
  width: 100%;
  resize: vertical;
  border: 1px solid transparent;
  background: transparent;
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.3rem 0.4rem;
  margin: -0.3rem -0.4rem 0;  /* mesma regra da descrição (issue #50) */
  font-family: inherit;
  font-size: 0.9rem;
  cursor: text;
}

.abana-comentario-texto-editavel:hover,
.abana-comentario-texto-editavel:focus {
  border-color: var(--cor-borda);
  background: var(--cor-fundo);
  outline: none;
}

.abana-painel-novo-comentario {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin-top: 0.8rem;
}

.abana-painel-novo-comentario textarea {
  box-sizing: border-box;
  width: 100%;
  resize: vertical;
  border: 1px solid transparent;
  background: transparent;
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.5rem 0.6rem;
  font-family: inherit;
  font-size: 0.9rem;
}

.abana-painel-novo-comentario textarea:hover,
.abana-painel-novo-comentario textarea:focus {
  border-color: var(--cor-borda);
  background: var(--cor-secao);
  outline: none;
}

.abana-painel-novo-comentario button {
  align-self: flex-end;
  border: 1px solid var(--cor-borda);
  background: var(--cor-secao);
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.35rem 0.9rem;
  cursor: pointer;
}

.abana-painel-novo-comentario button:disabled {
  color: var(--cor-texto-suave);
  cursor: not-allowed;
}


/* Ação destrutiva de linha (X discreto): invisível até o hover da linha
   ou o foco por teclado — diretriz de UI do CLAUDE.md. Em telas de toque
   (sem hover) fica meio visível, senão seria inalcançável. */
.abana-icone-acao {
  display: inline-flex;
  align-items: center;
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  cursor: pointer;
  padding: 0.2rem;
  opacity: 0;
  transition: opacity 0.12s ease;
}

/* Revelação GENÉRICA (issue #51): qualquer linha que contenha o ícone
   direto o revela no hover — a lista enumerada continua só pros casos em
   que o ícone fica mais fundo na árvore. Enumerar linha a linha foi o que
   deixou convidados e anexos pendentes sem botão visível. */
:hover > .abana-icone-acao,
.abana-painel-lembretes li:hover .abana-icone-acao,
.abana-painel-projetos li:hover .abana-icone-acao,
.abana-painel-subtarefas li:hover .abana-icone-acao,
.abana-linha-subtarefa:hover .abana-icone-acao,
.abana-comentario:hover .abana-icone-acao,
.abana-icone-acao:focus-visible {
  opacity: 1;
}

.abana-icone-acao:hover {
  color: var(--cor-erro);
}

/* No cabeçalho do comentário, o X vai pro canto direito da linha. */
.abana-comentario-cabecalho .abana-icone-acao {
  margin-left: auto;
}

@media (hover: none) {
  .abana-icone-acao {
    opacity: 0.5;
  }
}

/* Pílulas (tags) — projeto e status no painel: categórico bate no olho,
   sem cara de dropdown padrão (diretriz de UI do CLAUDE.md). A cor de
   fundo/borda do projeto vem inline do React (matiz estável por id). */
.abana-pill {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--cor-borda);
  background: var(--cor-secao);
  color: var(--cor-texto);
  border-radius: 999px;
  padding: 0.15rem 0.7rem;
  font-size: 0.8rem;
  white-space: nowrap;
}

select.abana-pill-seletor {
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  padding-right: 1.4rem;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.45rem center;
  background-size: 0.7rem;
}

select.abana-pill-seletor:hover {
  border-color: var(--cor-texto-suave);
}

/* O campo de nova subtarefa do painel também é inline: transparente até
   hover/foco, Enter confirma. */
.abana-painel-nova-subtarefa input {
  border: 1px solid transparent;
  background: transparent;
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.3rem 0.4rem;
  font-size: 0.9rem;
  width: 100%;
}

.abana-painel-nova-subtarefa input:hover,
.abana-painel-nova-subtarefa input:focus {
  border-color: var(--cor-borda);
  background: var(--cor-secao);
  outline: none;
}

/* Ícones da barra lateral/listas: visões fixas têm SVG próprio
   (icone-menu); cada projeto tem um quadradinho com cor estável por id
   (--matiz vem do template, mesma matiz da pílula do projeto no painel). */
.icone-menu {
  width: 0.85rem;
  height: 0.85rem;
  flex-shrink: 0;
  vertical-align: -0.1em;
  margin-right: 0.35rem;
  color: var(--cor-texto-suave);
}

.icone-projeto {
  display: inline-block;
  width: 0.65rem;
  height: 0.65rem;
  flex-shrink: 0;
  border-radius: 3px;
  margin-right: 0.4rem;
  vertical-align: -0.05em;
  background: hsla(var(--matiz), 65%, 50%, 0.85);
}

.abana-titulo-quadro {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.abana-titulo-quadro .icone-projeto {
  width: 0.85rem;
  height: 0.85rem;
  margin-right: 0;
}

/* Busca do Abana na barra lateral. */
.busca-lateral {
  margin: 0.3rem 0 0.2rem;
  padding: 0 0.75rem;
}

.busca-lateral input {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--cor-borda);
  background: var(--cor-fundo);
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.3rem 0.5rem;
  font-size: 0.85rem;
}

.abana-lista-atualizacoes {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

/* Paleta de cores do projeto (aba Geral): cada opção é uma bolinha; a
   selecionada ganha anel. O input rádio real fica invisível mas
   focável/clicável (acessível por teclado). */
.paleta-de-cores {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.bolinha-de-cor {
  width: 1.4rem;
  height: 1.4rem;
  border-radius: 50%;
  background: hsla(var(--matiz), 65%, 50%, 0.9);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.bolinha-de-cor input {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  height: 100%;
  margin: 0;
  border-radius: 50%;
  cursor: pointer;
}

.bolinha-de-cor input:checked {
  outline: 2px solid var(--cor-texto);
  outline-offset: 2px;
}

.bolinha-de-cor input:focus-visible {
  outline: 2px solid var(--cor-primaria);
  outline-offset: 2px;
}

/* Lápis de abrir detalhes no cartão: mesmo padrão discreto dos ícones de
   ação — aparece no hover do cartão (ou foco). */
.abana-tarefa:hover .abana-editar-cartao,
.abana-editar-cartao:focus-visible {
  opacity: 1;
}

/* Check de conclusão mais minimalista (pedido do Daniel): menor e com
   traço mais fino. */
.abana-check-tarefa {
  width: 1.1rem;
  height: 1.1rem;
  min-width: 1.1rem;
  border-width: 1.5px;
  font-size: 0.65rem;
}

.abana-tags-cartao {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

.abana-pill-mini {
  font-size: 0.7rem;
  padding: 0.05rem 0.5rem;
}

.abana-curtir {
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: 0.85rem;
  color: var(--cor-texto-suave);
  padding: 0.2rem 0.3rem;
}

.abana-curtir.curtido {
  color: var(--cor-texto);
}

.abana-botoes-sociais {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
}

.abana-enviar-anexo {
  cursor: pointer;
}

.abana-tirar-tag {
  opacity: 0.6;
  margin-left: 0.2rem;
  padding: 0;
}

.abana-pill:hover .abana-tirar-tag {
  opacity: 1;
}

/* Curtir no estilo do print do Daniel: contagem à esquerda do joinha;
   curtido = azul de destaque, senão discreto. */
.abana-curtir {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
}

.abana-curtir.curtido {
  color: var(--cor-secundaria);
}

.abana-rodape-direita {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}

/* Busca inline (quadros e página de busca): campo pequeno, Enter envia,
   sem botão — diretriz de UI. */
.abana-form-busca {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.abana-form-busca input[type="search"] {
  border: 1px solid var(--cor-borda);
  background: var(--cor-fundo);
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.3rem 0.6rem;
  font-size: 0.85rem;
  min-width: 12rem;
}

.abana-form-busca select {
  font-size: 0.8rem;
  padding: 0.25rem 0.4rem;
}

.abana-busca-quadro {
  margin-left: auto;
  margin-right: 0.8rem;
}

.abana-filtro-tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0.4rem 0 0.8rem;
}

.abana-pill-clicavel {
  cursor: pointer;
}

.abana-pill-clicavel.ativa {
  font-weight: 600;
}

/* ============================================================
   Lote: filtro do quadro, check sutil e seletores só-no-hover
   ============================================================ */

/* Check de conclusão ainda menor e mais sutil (print do Daniel):
   círculo fino na cor da borda, verde só no hover e quando concluído.
   Este bloco vem por último de propósito — vence os tamanhos antigos. */
.abana-check-tarefa {
  width: 1rem;
  height: 1rem;
  min-width: 1rem;
  border-width: 1.5px;
  border-color: var(--cor-borda);
  font-size: 0.55rem;
  line-height: 1;
}

/* Alinhamento check × título: o input do título tem padding vertical
   igual em cima e embaixo e line-height fixo, pro centro óptico do texto
   bater com o centro do círculo (Daniel reportou desalinhamento). */
.abana-tarefa-linha .abana-titulo-tarefa {
  padding-top: 0.2rem;
  padding-bottom: 0.2rem;
  line-height: 1.3;
}

/* Botão do filtro (funil) ao lado da busca; ponto azul indica filtro
   ativo mesmo com o painel fechado. */
.abana-filtro {
  position: relative;
  display: inline-flex;
}

.abana-filtro-botao {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--raio);
  color: var(--cor-texto-suave);
  cursor: pointer;
  padding: 0.3rem 0.4rem;
  position: relative;
}

.abana-filtro-botao:hover,
.abana-filtro-botao.ativo {
  color: var(--cor-texto);
  border-color: var(--cor-borda);
  background: var(--cor-secao);
}

.abana-filtro-indicador {
  position: absolute;
  top: 0.15rem;
  right: 0.15rem;
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  background: var(--cor-secundaria);
}

/* Painel suspenso do filtro: ancorado à direita do botão, acima do
   quadro (z-index maior que os cartões arrastáveis). */
.abana-filtro-painel {
  position: absolute;
  top: calc(100% + 0.3rem);
  right: 0;
  z-index: 40;
  min-width: 16rem;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15);
  padding: 0.7rem 0.8rem;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.abana-filtro-grupo {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.abana-filtro-grupo select {
  font-size: 0.8rem;
  padding: 0.25rem 0.4rem;
}

/* As etiquetas dentro do painel não precisam da margem da antiga barra
   de filtro que ficava solta no cabeçalho. */
.abana-filtro-painel .abana-filtro-tags {
  margin: 0;
}

/* Seletores vazios (prazo/responsável tracejados) só aparecem ao passar
   o mouse (ou focar via teclado) — pedido do Daniel. Valores já
   definidos continuam sempre visíveis; o responsável do cartão principal
   é o selo na linha do título e nunca some. */
.abana-linha-subtarefa .abana-prazo-mini,
.abana-rodape-esquerda .abana-prazo-mini {
  opacity: 0;
  transition: opacity 0.15s ease;
}

.abana-tarefa:hover .abana-prazo-mini,
.abana-tarefa:focus-within .abana-prazo-mini,
.abana-linha-subtarefa:hover .abana-prazo-mini,
.abana-linha-subtarefa:focus-within .abana-prazo-mini {
  opacity: 1;
}

/* Formulário de automações: três blocos (gatilho / condições / ação)
   com borda fininha de baixo contraste — respiro, não caixas pesadas
   (diretriz de UI do CLAUDE.md). */
.abana-form-automacao {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-width: 34rem;
}

.abana-grupo-automacao {
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 0.8rem 1rem 0.6rem;
}

.abana-grupo-automacao legend {
  font-weight: 600;
  padding: 0 0.4rem;
}

.abana-grupo-automacao label {
  display: block;
  margin-bottom: 0.2rem;
}

/* Texto de apoio pequeno embaixo de cada campo (o mesmo texto vira
   tooltip via title). */
.abana-ajuda-campo {
  display: block;
  font-size: 0.75rem;
  color: var(--cor-texto-suave);
  margin-top: 0.2rem;
}

/* Janelinhas (popovers estilo Asana): painel pequeno flutuante pra UMA
   escolha (responsável, coluna, template), aberto a partir dos menus. */
.abana-janelinha {
  position: fixed;
  z-index: 120;
  width: 17.5rem;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
  padding: 0.6rem 0.7rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.abana-janelinha-cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.8rem;
  color: var(--cor-texto-suave);
}

.abana-janelinha-busca {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.abana-janelinha-busca input[type="search"] {
  flex: 1;
  min-width: 0;
  border: 1px solid var(--cor-borda);
  background: var(--cor-fundo);
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.3rem 0.5rem;
  font-size: 0.85rem;
}

.abana-janelinha-busca button {
  white-space: nowrap;
}

/* Lista de opções: botões de linha inteira, discretos, com rolagem
   própria quando a lista é longa. */
.abana-janelinha-lista {
  display: flex;
  flex-direction: column;
  max-height: 16rem;
  overflow-y: auto;
}

.abana-janelinha-lista button {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  text-align: left;
  background: transparent;
  border: none;
  border-radius: var(--raio);
  color: var(--cor-texto);
  padding: 0.35rem 0.4rem;
  cursor: pointer;
}

.abana-janelinha-lista button:hover:not(:disabled),
.abana-janelinha-lista button:focus-visible {
  background: var(--cor-secao);
}

.abana-janelinha-lista button:disabled {
  opacity: 0.5;
  cursor: default;
}

/* Lista "Gerenciar automações": cada regra numa linha com divisória fina;
   os ícones de editar/excluir aparecem no hover da linha (e no foco por
   teclado, como os outros ícones de ação do sistema). */
.abana-lista-regras {
  list-style: none;
  padding: 0;
  margin: 0.4rem 0 0;
}

.abana-lista-regras li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.6rem;
  padding: 0.45rem 0.2rem;
  border-bottom: 1px solid var(--cor-borda);
}

.abana-lista-regras li:last-child {
  border-bottom: none;
}

.abana-lista-regras li.em-edicao {
  background: var(--cor-secao);
  border-radius: var(--raio);
}

.abana-lista-regras li:hover .abana-icone-acao {
  opacity: 1;
}

.abana-acoes-regra {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  flex-shrink: 0;
}

.abana-acoes-regra a.abana-icone-acao {
  text-decoration: none;
}

/* O ✕ das janelinhas usa .abana-icone-acao, que nasce invisível (padrão
   revelar-no-hover das linhas) — aqui ele fica sempre visível, senão a
   janelinha parece não ter como fechar (bug reportado pelo Daniel). */
.abana-janelinha-cabecalho .abana-icone-acao {
  opacity: 1;
}

/* Calendário da janelinha de prazo (print do Asana como referência). */
.abana-calendario-cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.85rem;
}

.abana-calendario-cabecalho button {
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  cursor: pointer;
  font-size: 1rem;
  padding: 0.1rem 0.5rem;
}

.abana-calendario-cabecalho button:hover {
  color: var(--cor-texto);
}

.abana-calendario-grade {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0.1rem;
  text-align: center;
}

.abana-calendario-semana {
  font-size: 0.7rem;
  color: var(--cor-texto-suave);
  padding: 0.2rem 0;
}

.abana-calendario-dia {
  background: transparent;
  border: 1px solid transparent;
  border-radius: 50%;
  color: var(--cor-texto);
  cursor: pointer;
  font-size: 0.8rem;
  width: 1.9rem;
  height: 1.9rem;
  padding: 0;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
}

.abana-calendario-dia:hover {
  background: var(--cor-secao);
}

.abana-calendario-dia.fora {
  color: var(--cor-texto-suave);
  opacity: 0.6;
}

.abana-calendario-dia.hoje {
  border-color: var(--cor-secundaria);
}

.abana-calendario-dia.selecionado {
  background: var(--cor-secundaria);
  color: #FFFFFF;
}

.abana-calendario-rodape {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid var(--cor-borda);
  padding-top: 0.5rem;
}

.abana-calendario-hora {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}

.abana-calendario-hora input[type="time"] {
  border: 1px solid var(--cor-borda);
  background: var(--cor-fundo);
  color: var(--cor-texto);
  border-radius: var(--raio);
  padding: 0.2rem 0.4rem;
  font-size: 0.8rem;
}

/* Grupo esquerdo do rodapé do cartão (prazo + responsável vazio). */
.abana-rodape-esquerda {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
}

/* Selo do responsável clicável (abre a janelinha de responsável). */
.abana-responsavel-botao {
  display: inline-flex;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
}

.abana-responsavel-botao:disabled {
  cursor: default;
}

/* Ícones de ação dentro dos campos do painel (ex.: remover recorrência)
   aparecem ao passar o mouse no campo — mesma regra das listas. */
.abana-painel-campo:hover .abana-icone-acao {
  opacity: 1;
}

/* Selects com a mesma cara das janelinhas (pedido do Daniel): sem a
   roupagem nativa, borda fina, seta própria em cinza neutro (funciona
   nos dois temas). A lista aberta continua a nativa do navegador. */
select {
  appearance: none;
  -webkit-appearance: none;
  background-color: var(--cor-fundo);
  color: var(--cor-texto);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 0.3rem 1.7rem 0.3rem 0.6rem;
  font-size: 0.85rem;
  cursor: pointer;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat: no-repeat;
  background-position: right 0.5rem center;
  background-size: 0.75rem;
}

select:hover {
  border-color: var(--cor-texto-suave);
}

select:focus {
  outline: none;
  border-color: var(--cor-secundaria);
}

/* Toast do rodapé ("Tarefa concluída — Desfazer"): flutua embaixo, some
   sozinho em alguns segundos. */
.abana-toast {
  position: fixed;
  bottom: 1.2rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 130;
  display: flex;
  align-items: center;
  gap: 0.7rem;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
  padding: 0.5rem 0.9rem;
  font-size: 0.85rem;
}

.abana-toast-fechar {
  background: transparent;
  border: none;
  color: var(--cor-texto-suave);
  cursor: pointer;
  padding: 0.1rem 0.2rem;
}

/* Abas Início/Conclusão do calendário (print do Asana). */
.abana-calendario-abas {
  display: flex;
  gap: 0.4rem;
}

.abana-calendario-abas button {
  flex: 1;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--raio);
  color: var(--cor-texto-suave);
  cursor: pointer;
  font-size: 0.8rem;
  padding: 0.3rem 0.4rem;
}

.abana-calendario-abas button.ativa {
  border-color: var(--cor-borda);
  color: var(--cor-texto);
  font-weight: 600;
}

/* Anexos de comentário: pendentes no compositor e prontos no comentário. */
.abana-anexos-pendentes,
.abana-anexos-do-comentario {
  list-style: none;
  margin: 0.3rem 0 0;
  padding: 0;
  font-size: 0.8rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.abana-anexos-pendentes li {
  display: flex;
  align-items: center;
  gap: 0.3rem;
}

.abana-anexos-pendentes li:hover .abana-icone-acao {
  opacity: 1;
}

.abana-comentario-acoes {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem;
}

/* O 📎 do compositor fica sempre visível (é uma ação primária ali, não
   um ícone de linha). */
.abana-comentario-acoes .abana-icone-acao {
  opacity: 1;
  cursor: pointer;
}

/* Correção de contraste (bug do Daniel, modo claro): estes botões zeram
   o fundo mas herdavam o color #FFFFFF da regra global de button —
   texto branco invisível sobre fundo claro. */
button.abana-painel-valor-editavel,
.abana-responsavel-botao {
  color: var(--cor-texto);
}

/* Botão "Ver quadro" das configurações do projeto: pílula com destaque,
   em vez de um link solto. */
.abana-ver-quadro {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  background: var(--cor-secundaria);
  color: #FFFFFF;
  border: 1px solid var(--cor-secundaria);
  border-radius: 999px;
  padding: 0.3rem 0.9rem;
  font-size: 0.85rem;
  font-weight: 600;
  text-decoration: none;
  transition: filter 0.15s ease;
}

.abana-ver-quadro:hover,
.abana-ver-quadro:focus-visible {
  filter: brightness(1.15);
  text-decoration: none;
}

/* Prazo vencido no Resumo. */
.abana-prazo-vencido {
  color: var(--cor-erro);
  font-size: 0.8rem;
  font-weight: 600;
}

/* Imagem da página inicial editável. */
.imagem-pagina-inicial {
  max-width: 100%;
  max-height: 320px;
  border-radius: var(--raio);
  margin: 0.5rem 0 1rem;
}

/* Listas de checkbox dos formulários de template (etiquetas e
   participantes do rodízio): horizontais, com respiro. */
.abana-form-automacao ul {
  list-style: none;
  margin: 0.2rem 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem 1rem;
}

.abana-form-automacao ul li label {
  font-weight: normal;
}

/* Lista "Todos os projetos" (pedido do Daniel): nome como link forte e
   limpo, divisórias finas, ações da linha como ícones discretos que
   aparecem no hover (padrão do sistema). */
.abana-tabela-projetos {
  border-collapse: collapse;
  width: 100%;
}

.abana-tabela-projetos th {
  text-align: left;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--cor-texto-suave);
  padding: 0.4rem 0.6rem;
  border-bottom: 1px solid var(--cor-borda);
}

.abana-tabela-projetos td {
  padding: 0.55rem 0.6rem;
  border-bottom: 1px solid var(--cor-borda);
  font-size: 0.9rem;
}

.abana-tabela-projetos tr:hover td {
  background: var(--cor-secao);
}

.abana-tabela-projetos tr:hover .abana-icone-acao,
.abana-tabela-projetos .abana-icone-acao:focus-visible {
  opacity: 1;
}

.abana-link-projeto {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--cor-texto);
  font-weight: 600;
  text-decoration: none;
}

.abana-link-projeto:hover {
  color: var(--cor-secundaria);
  text-decoration: none;
}

.abana-celula-acoes {
  text-align: right;
  white-space: nowrap;
}

.abana-icone-perigo:hover {
  color: var(--cor-erro);
}

/* Tela Resumo (pedido do Daniel): linhas com divisória fina, contadores
   nas seções e pílulas de atraso/prazo — vermelho só onde é urgência. */
.abana-titulo-resumo {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.abana-contador {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.5rem;
  height: 1.5rem;
  padding: 0 0.4rem;
  border-radius: 999px;
  background: var(--cor-secao);
  color: var(--cor-texto-suave);
  font-size: 0.8rem;
  font-weight: 600;
}

.abana-contador-vermelho {
  background: hsla(0, 70%, 50%, 0.15);
  color: var(--cor-erro);
}

.abana-lista-resumo {
  list-style: none;
  margin: 0.4rem 0 0;
  padding: 0;
}

.abana-linha-resumo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  padding: 0.55rem 0.2rem;
  border-bottom: 1px solid var(--cor-borda);
}

.abana-linha-resumo:last-child {
  border-bottom: none;
}

/* Filete vermelho à esquerda nas atrasadas — urgência visível sem
   transformar a lista num bloco pesado. */
.abana-linha-atrasada {
  border-left: 3px solid var(--cor-erro);
  padding-left: 0.6rem;
}

.abana-resumo-principal {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  min-width: 0;
}

.abana-resumo-meta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

.abana-pill-atraso {
  background: hsla(0, 70%, 50%, 0.15);
  border: 1px solid hsla(0, 70%, 50%, 0.4);
  color: var(--cor-erro);
  font-weight: 600;
}

.abana-pill-prazo {
  background: hsla(40, 90%, 50%, 0.15);
  border: 1px solid hsla(40, 90%, 50%, 0.45);
}

.abana-pill-projeto {
  background: hsla(var(--matiz), 65%, 50%, 0.18);
  border: 1px solid hsla(var(--matiz), 65%, 50%, 0.45);
}

/* Tela "Minha foto": foto redonda grande (clicável pra ver em tamanho
   real), iniciais quando não há foto, e o seletor de arquivo escondido
   atrás de um rótulo-botão (escolheu, salvou — sem botão Salvar). */
.perfil-foto-linha {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.perfil-foto-grande {
  width: 8rem;
  height: 8rem;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--cor-borda);
  transition: filter 0.15s ease;
}

a:hover .perfil-foto-grande {
  filter: brightness(1.08);
  border-color: var(--cor-secundaria);
}

.perfil-foto-iniciais {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--cor-secao);
  color: var(--cor-texto-suave);
  font-size: 2.4rem;
  font-weight: 600;
}

.perfil-foto-acoes {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  align-items: flex-start;
}

.perfil-escolher-foto {
  cursor: pointer;
}

.perfil-escolher-foto input[type="file"] {
  display: none;
}

/* Foto expandida num <dialog> (pedido do Daniel: sem botões na tela —
   ampliar, substituir e apagar moram no diálogo). */
.perfil-foto-botao {
  background: transparent;
  border: none;
  padding: 0;
  cursor: zoom-in;
  display: inline-flex;
}

.perfil-foto-dialogo {
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  background: var(--cor-fundo);
  color: var(--cor-texto);
  padding: 1rem;
  max-width: min(26rem, 90vw);
}

.perfil-foto-dialogo::backdrop {
  background: rgba(0, 0, 0, 0.55);
}

.perfil-foto-expandida {
  display: block;
  width: 100%;
  max-height: 60vh;
  object-fit: contain;
  border-radius: var(--raio);
}

.perfil-foto-dialogo-acoes {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.8rem;
  margin-top: 0.8rem;
}

/* Os três botões do diálogo da foto: pílulas iguais em forma e tamanho,
   minimalistas (contorno fino, fundo transparente), cada uma com sua cor
   semântica — azul de destaque, vermelho destrutivo, neutro — e o
   preenchimento só no hover. */
.perfil-botao-dialogo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 6.5rem;
  padding: 0.35rem 1rem;
  border-radius: 999px;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  background: transparent;
  border: 1px solid var(--cor-borda);
  color: var(--cor-texto-suave);
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.perfil-botao-dialogo:hover,
.perfil-botao-dialogo:focus-visible {
  background: var(--cor-secao);
  color: var(--cor-texto);
}

.perfil-botao-dialogo.destaque {
  border-color: var(--cor-secundaria);
  color: var(--cor-secundaria);
}

.perfil-botao-dialogo.destaque:hover,
.perfil-botao-dialogo.destaque:focus-visible {
  background: var(--cor-secundaria);
  color: #FFFFFF;
}

.perfil-botao-dialogo.perigo {
  border-color: var(--cor-erro);
  color: var(--cor-erro);
}

.perfil-botao-dialogo.perigo:hover,
.perfil-botao-dialogo.perigo:focus-visible {
  background: var(--cor-erro);
  color: #FFFFFF;
}

/* Lápis sutil da página inicial: quase invisível até pousar o mouse no
   título (padrão dos ícones de ação), sempre alcançável por teclado. */
.titulo-editavel {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.titulo-editavel .abana-icone-acao {
  font-size: 1rem;
  text-decoration: none;
}

.titulo-editavel:hover .abana-icone-acao,
.titulo-editavel .abana-icone-acao:focus-visible {
  opacity: 1;
}

/* Campos de formulário server-rendered (templates, página inicial):
   rótulo em cima, respiro entre campos. */
.abana-campo-formulario {
  margin: 0 0 0.7rem;
}

.abana-campo-formulario label {
  display: block;
  margin-bottom: 0.2rem;
}

.abana-campo-formulario textarea,
.abana-campo-formulario input[type="text"],
.abana-campo-formulario input[type="number"] {
  width: 100%;
  max-width: 34rem;
  box-sizing: border-box;
}

/* Correção sistêmica do "blob escuro" no hover (bug do Daniel, modo
   claro): a regra global button:hover pinta o fundo com --cor-primaria,
   e todo botão-ícone transparente que não declarava o próprio fundo de
   hover herdava isso — pílula/ícone viravam um borrão escuro com texto
   ilegível. Aqui, TODOS os botões de roupagem transparente ganham hover
   neutro (fundo suave da seção); os que já definem o próprio hover
   continuam vencendo por virem com mais especificidade ou depois. */
.abana-adicionar-tarefa:hover,
.abana-calendario-abas button:hover,
.abana-calendario-cabecalho button:hover,
.abana-chip-comentarios:hover,
.abana-chip-subtarefas:hover,
.abana-curtir:hover,
.abana-icone-acao:hover,
.abana-janelinha-lista button:hover,
.abana-menu-coluna-itens button:hover,
.abana-painel-fechar:hover,
.abana-painel-novo-lembrete button:hover,
.abana-painel-subtarefa-titulo:hover,
.abana-prazo-mini:hover,
.abana-responsavel-botao:hover,
.abana-toast-fechar:hover,
.perfil-foto-botao:hover {
  background: var(--cor-secao);
  border-color: transparent;
}

/* Exceções: o check de conclusão e o prazo tracejado mantêm o próprio
   contorno no hover (o fundo continua neutro). */
.abana-check-tarefa:hover {
  background: transparent;
  border-color: var(--cor-sucesso);
}

.abana-prazo-mini.vazio:hover {
  border-color: var(--cor-texto-suave);
}

/* Versão do sistema no pé da barra lateral — quase invisível, mas lá. */
.versao-do-sistema {
  display: block;
  margin-top: auto;
  padding: 0.6rem 1rem;
  font-size: 0.7rem;
  color: var(--cor-texto-suave);
  opacity: 0.7;
  text-decoration: none;
}

.versao-do-sistema:hover {
  opacity: 1;
  color: var(--cor-texto);
  text-decoration: underline;
}

/* Bolinha de novidades não vistas (issue #8) ao lado da versão. */
.bolinha-novidades {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--cor-secundaria);
  margin-left: 0.3rem;
  vertical-align: middle;
}

/* Banner-link de atualização (issue #8): discreto, some sozinho ao
   visitar as Novidades. Declara fundo, borda E cor nos dois estados —
   regra do CLAUDE.md. */
.banner-novidades {
  display: block;
  margin: 0 0 1rem;
  padding: 0.5rem 0.9rem;
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  background: var(--cor-secao);
  color: var(--cor-texto);
  font-size: 0.85rem;
  text-decoration: none;
}

.banner-novidades:hover,
.banner-novidades:focus-visible {
  background: var(--cor-secao);
  border-color: var(--cor-secundaria);
  color: var(--cor-texto);
  text-decoration: underline;
}

.novidade-versao ul {
  margin: 0.4rem 0 0;
  padding-left: 1.2rem;
}

.novidade-versao li {
  margin-bottom: 0.35rem;
}

.barra-lateral.encolhida .versao-do-sistema {
  display: none;
}

/* Pontinho de cor nas listas de janelinha (opções de seleção). */
.abana-ponto-de-cor {
  display: inline-block;
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 50%;
  flex-shrink: 0;
}

/* O painel de filtro cresceu (campos dinâmicos + critérios extras):
   rola por dentro em vez de estourar a tela. */
.abana-filtro-painel {
  max-height: 70vh;
  overflow-y: auto;
}

.abana-filtro-criterio {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.85rem;
  font-weight: normal;
}

.abana-filtro-faixa {
  display: flex;
  align-items: center;
  gap: 0.3rem;
}

.abana-filtro-faixa input {
  width: 6.5rem;
  min-width: 0;
}

/* Título do cartão como textarea elástico: sem barra própria, cresce
   junto com o texto (o JS ajusta a altura ao conteúdo). */
.abana-tarefa-linha textarea.abana-titulo-tarefa {
  resize: none;
  overflow: hidden;
  min-height: 1.6rem;
  font-family: inherit;
}

/* O check e as ações alinham pelo TOPO quando o título quebra linha —
   centralizar num cartão de 3 linhas deixava tudo flutuando no meio.
   (O align-self vence a regra antiga ".abana-tarefa-linha > *" que
   centralizava cada filho.) */
.abana-tarefa-linha {
  align-items: flex-start;
}

.abana-tarefa-linha > * {
  align-self: flex-start;
}

.abana-tarefa-linha > .abana-check-tarefa,
.abana-tarefa-linha > .abana-icone-acao,
.abana-tarefa-linha > .abana-responsavel-botao,
.abana-tarefa-linha > details {
  margin-top: 0.25rem;
}

/* Scroll por coluna (pedido do Daniel, exemplo do Asana): o quadro ocupa
   a altura útil da janela e cada coluna rola por dentro — a página não
   rola mais inteira por causa de uma coluna cheia. */
.abana-quadro {
  height: calc(100vh - 205px);
  min-height: 320px;
  align-items: stretch;
}

.abana-coluna {
  display: flex;
  flex-direction: column;
  max-height: 100%;
}

.abana-coluna .abana-lista-tarefas {
  overflow-y: auto;
  flex: 1;
  min-height: 2rem;
  scrollbar-width: thin;
}

/* Editor de opções da seleção única (aba Campos): linhas limpas com a
   bolinha de cor redonda de verdade — a .bolinha-de-cor original é um
   rótulo de radio da paleta do projeto e ficava disforme como botão. */
.abana-lista-opcoes {
  list-style: none;
  margin: 0.2rem 0 0.4rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  max-width: 24rem;
}

.abana-lista-opcoes li {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.25rem 0.3rem;
  border-radius: var(--raio);
}

.abana-lista-opcoes li:hover {
  background: var(--cor-secao);
}

.abana-lista-opcoes li:hover .abana-icone-acao {
  opacity: 1;
}

.abana-lista-opcoes li .abana-icone-acao {
  margin-left: auto;
}

.bolinha-editor {
  width: 1.15rem;
  height: 1.15rem;
  min-width: 1.15rem;
  border-radius: 50%;
  border: 2px solid transparent;
  background: hsl(var(--matiz, 210), 65%, 50%);
  cursor: pointer;
  padding: 0;
  transition: transform 0.12s ease, border-color 0.12s ease;
}

.bolinha-editor:hover,
.bolinha-editor:focus-visible {
  transform: scale(1.15);
  border-color: var(--cor-texto-suave);
  background: hsl(var(--matiz, 210), 65%, 50%);
}

.abana-nova-opcao {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  max-width: 24rem;
}

.abana-nova-opcao input {
  flex: 1;
}

/* Coluna no estilo do Asana (pedido do Daniel): o CABEÇALHO é uma barra
   própria, destacada; o corpo da coluna fica transparente e os cartões
   carregam o tom elevado. Estas regras vencem as antigas por virem
   depois com a mesma especificidade. */
.abana-coluna {
  background: transparent;
  border: none;
  padding: 0 0.2rem;
}

.abana-coluna-cabecalho {
  background: var(--cor-secao);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 0.45rem 0.7rem;
  margin-bottom: 0.6rem;
}

.abana-tarefa {
  background: var(--cor-secao);
}

/* Contador de tarefas ao lado do nome (como no print do Asana). */
.abana-contador-coluna {
  color: var(--cor-texto-suave);
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0 0.3rem;
}

/* ⚡ da ordenação automática no cabeçalho da coluna. */
.abana-raio-ordenacao {
  font-size: 0.8rem;
  cursor: default;
}

/* Corpo da coluna com fundo próprio (referência do Asana, pedido do
   Daniel): um painel contínuo atrás dos cartões, do cabeçalho ao
   "+ Adicionar tarefa" — o scroll continua por dentro. */
.abana-corpo-coluna {
  background: color-mix(in srgb, var(--cor-secao) 55%, var(--cor-fundo));
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  padding: 0.5rem;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}

.abana-corpo-coluna .abana-lista-tarefas {
  margin: 0 0 0.3rem;
}

/* O campo de criar tarefa NÃO estica: o flex:1 de .abana-titulo-tarefa é
   do layout do cartão, e aqui (filho do corpo flex vertical) fazia o
   campo crescer pra preencher a coluna — o "título gigante" do print. */
.abana-corpo-coluna > .abana-titulo-tarefa {
  flex: 0 0 auto;
}

/* Linha de montagem de condição das automações. */
.abana-nova-condicao {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-wrap: wrap;
  margin: 0.4rem 0;
}

/* Campo de criar tarefa: mesmo elástico do título do cartão. */
textarea.abana-titulo-novo {
  resize: none;
  overflow: hidden;
  min-height: 1.8rem;
  font-family: inherit;
}

/* Nos construtores (opções/condições) o ✕ fica SEMPRE visível — regra
   do CLAUDE.md: ação primária não se esconde (Daniel não achava como
   apagar condições). */
.abana-lista-opcoes .abana-icone-acao {
  opacity: 1;
}

/* Sugestões de @ no comentário da automação. */
.abana-mencao-automacao {
  position: relative;
}

.abana-mencao-automacao .sugestoes {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  z-index: 50;
  background: var(--cor-fundo);
  border: 1px solid var(--cor-borda);
  border-radius: var(--raio);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.2);
  max-height: 12rem;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}

.abana-mencao-automacao .sugestoes button {
  background: transparent;
  border: none;
  color: var(--cor-texto);
  text-align: left;
  padding: 0.35rem 0.6rem;
  cursor: pointer;
}

.abana-mencao-automacao .sugestoes button:hover,
.abana-mencao-automacao .sugestoes button:focus-visible {
  background: var(--cor-secao);
}

/* Linhas do construtor de condições: controles agrupados à esquerda,
   quebrando com respiro — antes o ✕ herdava margin-left:auto da lista
   de opções e voava pra borda direita do fieldset (print do Daniel). */
#lista-de-condicoes li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  max-width: 100%;
}

#lista-de-condicoes li .abana-icone-acao {
  margin-left: 0;
}

#lista-de-condicoes input[type="number"],
#lista-de-condicoes input[type="text"] {
  width: 7rem;
}

/* Campo de tempo (número + unidade) e botão de data do construtor. */
.abana-campo-de-tempo {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
}

.abana-campo-de-tempo input[type="number"] {
  width: 4.5rem;
}

button.abana-botao-data {
  background: transparent;
  border: 1px dashed var(--cor-borda);
  border-radius: var(--raio);
  color: var(--cor-texto);
  cursor: pointer;
  padding: 0.25rem 0.6rem;
  font-size: 0.85rem;
}

button.abana-botao-data:hover {
  background: var(--cor-secao);
  border-color: var(--cor-texto-suave);
}
