/* =============================================================
   SEMOG · Admin Tahoe — Prestação de Contas (camada da Prestação)

   USE: depois de tokens.css, pills.css e tahoe.css. Tudo aqui vive sob
   `.tahoe-shell`, como o resto do kit — e sob `.tahoe-portal`, o contêiner
   de portal de menu, popover e diálogo. Comportamento em prestacao.js;
   vocabulário (etapas, competência, versões) em prestacao-core.js.

   Os componentes genéricos (tipografia, botão, pílula, status, etapas,
   lista agrupada, menu, diálogo, campo, esqueleto, trilha…) viraram padrão
   do kit e moram em componentes.css, com o nome novo .tk-* e o antigo
   .prest-* como apelido. Este arquivo IMPORTA componentes.css: carregar só
   prestacao.css continua trazendo tudo, com o mesmo render de antes. Aqui
   fica o que é da Prestação: bloco Publicada, competência, filtros e lente
   da lista, tabela que vira cartões, cabeçalho e blocos do detalhe e a
   barra do protótipo.

   As mesmas duas regras de componentes.css: tipografia só pelos papéis
   --type-*, cor só por token semântico (Tier 3). Os únicos literais são os
   "lavados" (em componentes.css) e o #000 das máscaras da lente, que só
   valem pelo alfa.

   Contrato de uso de cada classe: docs/prestacao-redesenho.md.

   CLASSE DOBRADA (`.prest-pub.prest-pub`): componentes.css pode ser
   importado mais de uma vez — a página que carrega prestacao.css e
   onboarding.css recebe o arquivo duas vezes, e a segunda cópia vem DEPOIS
   destas regras. Regra daqui que sobrescreve um componente com a mesma
   especificidade dele só venceria pela ordem, e perderia. Por isso ela
   dobra a própria classe: vence por especificidade, em qualquer ordem.
   tests/camadas-especificidade.test.js acha os empates e trava.
   ============================================================= */
@import "./componentes.css";

/* ─────────── Bloco "Publicada" ───────────
   O desfecho da sequência, não um card solto. Recolhido: uma linha — selo,
   estado + versão + data, avisos como status inline, UMA primária e o menu.
   Expandido (disclosure): histórico de versões e validação. O link público
   aparece UMA vez, dentro do disclosure. */
:is(.tahoe-shell,.tahoe-portal) .prest-publicada{
  border-radius:var(--radius-lg);background:var(--bg);
  box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-1);
}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada-linha{
  display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-width:0;
}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .selo{
  width:32px;height:32px;border-radius:var(--radius-sm);flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--success-soft);color:var(--success-fg);
}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .selo svg{width:18px;height:18px;}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .resumo{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .resumo-l1{display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .titulo{
  font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:600;
}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .versao{
  font-size:var(--type-body-size);line-height:var(--type-body-leading);color:var(--fg-muted);
}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .avisos{display:flex;align-items:center;gap:var(--space-1) var(--space-3);flex-wrap:wrap;}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .prest-acoes{flex:none;flex-wrap:nowrap;}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada .alterna svg{transition:transform 220ms var(--ease-out);}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada[data-aberto="true"] .alterna svg{transform:rotate(180deg);}

/* Disclosure: altura por grid 0fr → 1fr, sem medir em JS. */
:is(.tahoe-shell,.tahoe-portal) .prest-publicada-detalhe{
  display:grid;grid-template-rows:0fr;
  transition:grid-template-rows var(--prest-mola-dur) var(--prest-mola);
}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada[data-aberto="true"] .prest-publicada-detalhe{grid-template-rows:1fr;}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada-detalhe > .dentro{overflow:hidden;min-height:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada-detalhe .grade{
  display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--space-5);
  margin:0 var(--space-4);padding:var(--space-4) 0;border-top:1px solid var(--hairline-section);
}
:is(.tahoe-shell,.tahoe-portal) .prest-publicada-detalhe h3{
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);font-weight:600;color:var(--fg-muted);
  margin:0 0 var(--space-2);
}
:is(.tahoe-shell,.tahoe-portal) .prest-versoes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
:is(.tahoe-shell,.tahoe-portal) .prest-versoes li{
  display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;min-height:var(--prest-alvo);
}
:is(.tahoe-shell,.tahoe-portal) .prest-versoes li + li{box-shadow:inset 0 1px 0 var(--hairline-row);}
:is(.tahoe-shell,.tahoe-portal) .prest-versoes .v-nome{font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:500;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-versoes .v-meta{
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg-muted);flex:1;min-width:0;
}
:is(.tahoe-shell,.tahoe-portal) .prest-validacao{display:flex;flex-direction:column;gap:var(--space-2);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-validacao .codigo{
  font-family:var(--type-num-font);font-variant-numeric:var(--type-num-variant);font-weight:600;
  font-size:var(--type-title-size);line-height:var(--type-title-leading);letter-spacing:0.04em;
}
:is(.tahoe-shell,.tahoe-portal) .prest-validacao .link{
  display:flex;align-items:center;gap:var(--space-2);min-width:0;
  padding:0 0 0 var(--space-3);border-radius:var(--radius-sm);background:var(--bg-soft);
  box-shadow:inset 0 0 0 1px var(--border);
}
/* O link inteiro, quebrando onde precisar: é o único lugar em que ele
   aparece, e reticências escondiam justamente o código no fim. */
:is(.tahoe-shell,.tahoe-portal) .prest-validacao .link span{
  flex:1;min-width:0;overflow-wrap:anywhere;padding:var(--space-2) 0;
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg-muted);
}
@media (max-width:767.98px){
  /* No celular a linha vira grade de duas faixas: selo · resumo · disclosure
     em cima, primária · menu embaixo. display:contents solta os botões de
     .prest-acoes para a grade posicioná-los sem mudar o HTML. */
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada-linha{
    display:grid;grid-template-columns:32px minmax(0,1fr) var(--prest-alvo);gap:var(--space-3);align-items:start;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada .prest-acoes{display:contents;}
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada .alterna{grid-column:3;grid-row:1;}
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada .prest-acoes .primario{grid-column:1 / 3;grid-row:2;min-width:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada .prest-acoes .prest-menu{grid-column:3;grid-row:2;}
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada-detalhe .grade{grid-template-columns:1fr;gap:var(--space-4);}
}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada-detalhe{transition:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-publicada .alterna svg{transition:none;}
}

/* ─────────── Seletor de competência ───────────
   Gatilho mostra "Mai/2026"; o popover tem dois selects (mês Jan..Dez e ano).
   Nunca input type=month — o Firefox não implementa. */
:is(.tahoe-shell,.tahoe-portal) .prest-competencia{position:relative;display:inline-flex;}
:is(.tahoe-shell,.tahoe-portal) .prest-competencia .gatilho .prest-num{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .prest-competencia-pop{
  position:absolute;top:calc(100% + 6px);left:0;z-index:80;width:260px;max-width:calc(100vw - 32px);
  padding:var(--space-3);border-radius:var(--radius-md);background:var(--bg);
  box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-3);
  display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);
  transform-origin:top left;opacity:0;visibility:hidden;transform:scale(0.96);
  pointer-events:none;
  transition:opacity var(--prest-fade) ease, transform var(--prest-mola-dur) var(--prest-mola), visibility 0s linear var(--prest-mola-dur);
}
:is(.tahoe-shell,.tahoe-portal) .prest-competencia.direita .prest-competencia-pop{left:auto;right:0;transform-origin:top right;}
:is(.tahoe-shell,.tahoe-portal) .prest-competencia.acima .prest-competencia-pop{top:auto;bottom:calc(100% + 6px);transform-origin:bottom left;}
:is(.tahoe-shell,.tahoe-portal) .prest-competencia.acima.direita .prest-competencia-pop{transform-origin:bottom right;}
:is(.tahoe-shell,.tahoe-portal) .prest-competencia.aberto .prest-competencia-pop{
  opacity:1;visibility:visible;transform:none;pointer-events:auto;
  transition:opacity var(--prest-fade) ease, transform var(--prest-mola-dur) var(--prest-mola);
}
:is(.tahoe-shell,.tahoe-portal) .prest-competencia-pop .prest-status{grid-column:1 / -1;}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .prest-competencia-pop,
  :is(.tahoe-shell,.tahoe-portal) .prest-competencia.aberto .prest-competencia-pop{transform:none;}
}

/* ─────────── Filtros no celular ───────────
   Abaixo de 768px a linha de filtros vira UM botão "Filtros" que abre um
   .prest-dialog (sheet). Os filtros ativos ficam visíveis como chips
   removíveis logo abaixo — fora do sheet, sempre. */
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-botao .contagem{
  min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--link);color:var(--fg-inverse);font-family:var(--type-num-font);font-variant-numeric:var(--type-num-variant);
}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-botao .contagem[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-filtro-grupo{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;}
:is(.tahoe-shell,.tahoe-portal) .prest-filtro-grupo + .prest-filtro-grupo{margin-top:var(--space-3);}
:is(.tahoe-shell,.tahoe-portal) .prest-filtro-grupo legend{
  padding:0 0 var(--space-1);font-size:var(--type-meta-size);line-height:var(--type-meta-leading);
  font-weight:600;color:var(--fg-muted);
}
:is(.tahoe-shell,.tahoe-portal) .prest-opcao{
  display:flex;align-items:center;gap:var(--space-3);min-height:var(--prest-alvo);padding:0 var(--space-2);
  border-radius:var(--radius-sm);cursor:pointer;
  font-size:var(--type-body-size);line-height:var(--type-body-leading);
}
:is(.tahoe-shell,.tahoe-portal) .prest-opcao:hover{background:var(--prest-lavado);}
:is(.tahoe-shell,.tahoe-portal) .prest-opcao input{width:18px;height:18px;margin:0;accent-color:var(--link);flex:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-opcao .qtd{margin-left:auto;color:var(--fg-muted);font-family:var(--type-num-font);font-variant-numeric:var(--type-num-variant);}

:is(.tahoe-shell,.tahoe-portal) .prest-chips{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-chips:empty{display:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-chip{
  display:inline-flex;align-items:center;gap:2px;max-width:100%;min-height:32px;padding:0 4px 0 var(--space-3);
  border-radius:var(--radius-pill);background:var(--info-soft);color:var(--info-fg);box-shadow:inset 0 0 0 1px var(--info-border);
  font-size:var(--type-label-size);font-weight:var(--type-label-weight);line-height:var(--type-label-leading);
}
:is(.tahoe-shell,.tahoe-portal) .prest-chip .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-chip button{
  position:relative;
  width:28px;height:28px;border:0;border-radius:var(--radius-pill);background:transparent;color:inherit;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;flex:none;
}
:is(.tahoe-shell,.tahoe-portal) .prest-chip button:hover{background:var(--prest-lavado-forte);}
:is(.tahoe-shell,.tahoe-portal) .prest-chip button:focus-visible{outline:2px solid var(--link);outline-offset:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-chip button svg{width:14px;height:14px;}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .prest-chip{min-height:36px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-chip button{width:36px;height:36px;}
  /* Área de toque de 44px sem engordar o chip: 4px além do botão em cada
     lado (cabe no gap de 8px entre chips). */
  :is(.tahoe-shell,.tahoe-portal) .prest-chip button::after{content:"";position:absolute;inset:-4px;}
}
@media (forced-colors:active){
  :is(.tahoe-shell,.tahoe-portal) .prest-competencia-pop,
  :is(.tahoe-shell,.tahoe-portal) .prest-proto{border:1px solid CanvasText;}
}

/* ─────────── Detalhe da prestação ───────────
 Promovido de shell-prestacao-direcao-c.html (0.55.0). A moldura (trilha,
 seletor de etapa, painel, "Voltar para…") é componente do kit, em
 componentes.css (.tk-detalhe / .prest-detalhe). Aqui fica o que é da
 Prestação: o cabeçalho do detalhe (.prest-cab-detalhe) e os blocos das
 etapas. Comportamento em prestacao.js (initObrigatorios) e
 componentes.js (trilha). Contrato: docs/prestacao-redesenho.md. */
/* ─────────── Cabeçalho ───────────
   .prest-cab da fundação. Sem ação primária: nesta direção ela mora na
   etapa atual, então a faixa de ações tem só o menu. */
:is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-cab-meta{gap:var(--space-2) var(--space-3);}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel{
  display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--prest-alvo);padding:0 var(--space-3) 0 4px;
  border-radius:var(--radius-pill);background:var(--link-soft);color:var(--link);text-decoration:none;
  font-size:var(--type-label-size);font-weight:var(--type-label-weight);line-height:var(--type-label-leading);letter-spacing:var(--type-label-tracking);
}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel:hover{background-image:linear-gradient(var(--prest-lavado),var(--prest-lavado));}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel:focus-visible{outline:2px solid var(--link);outline-offset:2px;}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel .av{
  width:28px;height:28px;border-radius:var(--radius-pill);flex:none;display:inline-flex;align-items:center;justify-content:center;
  background:var(--bg);font-family:var(--type-num-font);font-variant-numeric:var(--type-num-variant);
}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel.vazio{background:transparent;box-shadow:inset 0 0 0 1px var(--border-strong);color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel.vazio .av{background:var(--bg-soft);}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel.vazio .prest-i{width:14px;height:14px;}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel.vazio b{color:var(--link);font-weight:600;}

/* Metas do cabeçalho. No desktop, na ordem de sempre: competência,
   financeiro, unidades, prazo. No celular (bloco de 767.98px), duas
   linhas de texto: "Ago/2026 ▾ · 31 unidades" e "Financeiro: Paula
   Cordeiro · Publicar até 20/09/2026". */
:is(.tahoe-shell,.tahoe-portal) .prest-cab-so-cel,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-quebra{display:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-competencia{order:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-cab-m-resp,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel.vazio{order:1;}
:is(.tahoe-shell,.tahoe-portal) .prest-cab-m-unid{order:2;}
:is(.tahoe-shell,.tahoe-portal) .prest-cab-m-prazo{order:3;}
:is(.tahoe-shell,.tahoe-portal) .prest-cab-m-resp{display:inline-flex;align-items:center;gap:4px;}
:is(.tahoe-shell,.tahoe-portal) .prest-responsavel:active{background-image:linear-gradient(var(--prest-lavado-forte),var(--prest-lavado-forte));}
:is(.tahoe-shell,.tahoe-portal) .prest-estrela{width:14px;height:14px;color:var(--warning);vertical-align:-2px;margin-right:4px;}

/* Portões da conciliação: lista direta no card, sem caixa. */
:is(.tahoe-shell,.tahoe-portal) .prest-portoes{list-style:none;margin:0;display:flex;flex-direction:column;}
/* Ícone na coluna de ícone das linhas (20 + 12): o texto dos portões
   começa no mesmo x do texto dos documentos (regra D). */
:is(.tahoe-shell,.tahoe-portal) .prest-portoes li{display:flex;align-items:flex-start;gap:var(--space-3);min-width:0;line-height:var(--type-body-leading);}
:is(.tahoe-shell,.tahoe-portal) .prest-portoes li[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-portoes li > .prest-i{width:20px;height:20px;}
:is(.tahoe-shell,.tahoe-portal) .prest-portoes [data-ok="sim"] > .prest-i{color:var(--success);}
:is(.tahoe-shell,.tahoe-portal) .prest-portoes [data-ok="nao"] > .prest-i{color:var(--fg-subtle);}
:is(.tahoe-shell,.tahoe-portal) .prest-portoes [data-ok="aviso"] > .prest-i{color:var(--warning-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-portoes b{font-weight:600;}

/* Montagem: o estágio que importa, e os nove num disclosure. */
:is(.tahoe-shell,.tahoe-portal) .prest-estagios{list-style:none;margin:0;display:flex;flex-direction:column;}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios li{display:flex;align-items:center;gap:var(--space-3);min-height:44px;}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios li > .prest-i{width:20px;height:20px;flex:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios .nome{flex:1;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios .quando{font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="ok"] > .prest-i{color:var(--success);}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="rodando"] > .prest-i{color:var(--link);animation:prest-gira 900ms linear infinite;}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="rodando"] .nome{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="erro"] > .prest-i{color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="erro"] .nome{font-weight:600;color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="espera"]{color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="espera"] > .prest-i{color:var(--fg-subtle);}
@keyframes prest-gira{to{transform:rotate(360deg);}}
:is(.tahoe-shell,.tahoe-portal) .prest-codigos{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-1) var(--space-4);margin:0;padding:0;list-style:none;
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg-muted);
}
:is(.tahoe-shell,.tahoe-portal) .prest-codigos b{color:var(--fg);font-weight:600;margin-right:6px;}

/* Diálogos: signatário e textarea. */
:is(.tahoe-shell,.tahoe-portal) .prest-signatario{gap:var(--space-2);}
:is(.tahoe-shell,.tahoe-portal) .prest-signatario legend{font-size:var(--type-body-size);line-height:var(--type-body-leading);color:inherit;}

/* Publicada: a versão é o título do bloco; o link público mostra o
   código uma vez e quebra ANTES dele, nunca no meio. */
:is(.tahoe-shell,.tahoe-portal) .prest-pub.prest-pub{gap:2px;}  /* título e status: espaço tipográfico (regra G) */
:is(.tahoe-shell,.tahoe-portal) .prest-pub > .prest-status:not([hidden]) ~ .prest-status{margin-top:6px;}  /* entre dois status: 8 */
:is(.tahoe-shell,.tahoe-portal) .prest-pub-versao .prest-num{font-weight:inherit;}
:is(.tahoe-shell,.tahoe-portal) .prest-link-pub.prest-link-pub{margin:0;overflow-wrap:normal;word-break:normal;color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-link-pub b{color:var(--fg);font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .prest-linha-fim .prest-seta{transform:rotate(-90deg);}

/* Signatários: avatar, nome/papel e o status à direita. */
:is(.tahoe-shell,.tahoe-portal) .prest-pessoas .av{
  width:32px;height:32px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;
  background:var(--bg);color:var(--fg-muted);font-family:var(--type-num-font);font-size:var(--type-meta-size);font-weight:600;
  box-shadow:inset 0 0 0 1px var(--border);  /* branco com contorno: some-se no fundo do grupo sem isso */
}
:is(.tahoe-shell,.tahoe-portal) .prest-pessoas .prest-linha-fim{text-align:right;}
/* O e-mail do convite vai no papel da linha. Quebra de preferência no
   <wbr> depois do "@"; no meio da palavra só se nem assim couber
   (break-word, não anywhere: anywhere encolhe a coluna do texto). */
:is(.tahoe-shell,.tahoe-portal) .prest-pessoas .prest-linha-meta{overflow-wrap:break-word;}
/* Com o ⋯ de "Trocar contato" em alguma linha, o status de TODAS passa para
   a 3ª coluna: termina no mesmo x, com ou sem ⋯ (regra E). Sem ⋯ nenhum,
   continua na 4ª. */
:is(.tahoe-shell,.tahoe-portal) .prest-pessoas:has(.prest-linha-menu:not([hidden])) .prest-linha-fim{grid-column:3;justify-content:flex-end;}
/* E a coluna do ⋯ tem a largura do gatilho em TODAS as linhas, também no
   estreito: lá a grade do componente é `auto` e a coluna vazia das linhas
   sem ⋯ virava 0px, desalinhando o fim dos status. */
:is(.tahoe-shell,.tahoe-portal) .prest-pessoas:has(.prest-linha-menu:not([hidden])) > .prest-linha{grid-template-columns:auto minmax(0,1fr) auto var(--tk-alvo);}


/* Carregando. */
/* O esqueleto do cabeçalho tem a altura do cabeçalho real (70px no
   desktop, 92px no celular com as duas linhas de meta), para o seletor e o
   card não saltarem ao carregar. */
:is(.tahoe-shell,.tahoe-portal) .prest-sk-cab{display:flex;align-items:center;gap:var(--space-3);min-height:70px;}
:is(.tahoe-shell,.tahoe-portal) .prest-sk-cab .prest-sk{flex:1;}
:is(.tahoe-shell,.tahoe-portal) .prest-sk-cab-marca{width:44px;height:44px;border-radius:var(--radius-sm);background:var(--bg-soft);animation:prest-pulso 1.6s ease-in-out infinite;}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .prest-estagios [data-e="rodando"] > .prest-i{animation:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-cab-marca{animation:none;}
}
@media (max-width:767.98px){
  /* Cabeçalho: as metas viram texto, sem pílula nem chip. */
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-cab-meta{column-gap:0;row-gap:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-competencia{order:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-m-unid{order:1;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-quebra{order:2;display:block;flex-basis:100%;height:var(--space-2);}
  /* 2ª linha: "Publicar até … · Financeiro: Paula". O link do financeiro
     fica à direita, longe da competência (que está à esquerda na linha de
     cima): os alvos de 44px dos dois não se sobrepõem. */
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-m-prazo{order:3;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-m-resp,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel.vazio{order:4;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-m-unid::before,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-m-resp::before{content:"·";margin:0 var(--space-2);}
  /* Sem financeiro, "Sem financeiro · Definir" cabe na 2ª linha ao lado
     do prazo (o cabeçalho tem a mesma altura com ou sem financeiro, e o
     esqueleto não salta). */
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe:has(.prest-responsavel.vazio:not([hidden])) .prest-cab-m-prazo::after{content:"·";margin:0 var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-so-cel{display:inline;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-so-desk{display:none;}
  /* Competência e financeiro: gatilho e link com cara de texto, e alvo de
     toque de 44px por um ::before que não ocupa lugar. */
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe.prest-cab-detalhe .prest-competencia .gatilho,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel{
    position:relative;min-height:0;padding:0;gap:2px;border-radius:var(--radius-sm);
    background:none;box-shadow:none;font-weight:600;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-competencia .gatilho{color:var(--fg);}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-competencia .gatilho > svg:first-child,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel .av{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-competencia .gatilho::before,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel::before{content:"";position:absolute;inset:-14px -6px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel:hover{background-image:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel:active,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-competencia .gatilho:active{background:var(--prest-lavado-forte);}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel.vazio{color:var(--fg-muted);font-weight:400;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel.vazio b{margin-left:4px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel.vazio{justify-content:flex-start;}
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-cab{min-height:92px;align-items:flex-start;}
}
/* Abaixo de ~375px a 2ª linha não cabe inteira: o financeiro vai para uma
   3ª linha própria, sem o "·" pendurado no começo dela. */
@media (max-width:374.98px){
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-m-resp,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe .prest-responsavel.vazio{flex-basis:100%;margin-top:var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-m-resp::before,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-detalhe:has(.prest-responsavel.vazio:not([hidden])) .prest-cab-m-prazo::after{content:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-cab{min-height:116px;}  /* o cabeçalho real ganhou a 3ª linha */
}

/* ─────────── Lista de prestações ───────────
 Promovido de shell-prestacoes.html (0.55.0). Raiz .prest-lista-prestacoes:
 cabeçalho com a competência no título, barra de filtros numa linha
 (.prest-filtros-barra) com a lente rolável (.prest-lente), popover/sheet
 de filtros (.prest-filtros) e a tabela que vira cartões no celular
 (.prest-tabela-cartoes). Comportamento em prestacao.js (initLentes,
 initFiltrosPop, initTabelas). */
/* ─────────── Cabeçalho ───────────
   Um título só, e ele diz a competência: "Prestações de Ago/2026". O
   topbar já diz "Prestações"; repetir sem acrescentar nada seria ruído.
   O gatilho do seletor fica ao lado e o popover nasce dele (.prest-lista-gat é
   o ancestral posicionado, não o bloco inteiro). */
:is(.tahoe-shell,.tahoe-portal) .prest-lista-cab{display:flex;flex-direction:column;gap:var(--space-2);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-titulo.prest-competencia{position:static;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-titulo h1{min-width:0;overflow-wrap:anywhere;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-titulo h1 .prest-num{font-weight:inherit;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-gat{position:relative;display:inline-flex;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-resumo{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin:0;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-resumo-sk{width:320px;max-width:100%;}

/* ─────────── Linha de filtros ───────────
   Padrão .prest-filtros-barra do Tahoe: busca, lente (.prest-lente) e chips-dropdown. */
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra{margin:0;gap:var(--space-2);}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .list-search{min-width:240px;}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-espaco{flex:1;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-lente button{display:inline-flex;align-items:center;justify-content:center;gap:6px;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-lente button:focus-visible{outline:2px solid var(--link);outline-offset:1px;}
:is(.tahoe-shell,.tahoe-portal) .prest-lente-qtd{color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-lente button.on .prest-lente-qtd{color:var(--fg);}
/* Carregando: a lente existe, a contagem ainda não. Zero seria dado inventado. */
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes[data-state="carregando"] .prest-lente-qtd{visibility:hidden;}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-ativos{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);min-width:0;}
/* `hidden` ganha do display dos componentes (.prest-estado é flex, a tabela é table). */
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes [hidden]{display:none !important;}

/* Cabeçalho um pouco mais alto e avatar de 24px: a linha da lista tem
   duas linhas de texto e o avatar de 20px ficava miúdo ao lado delas. */
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .tbl th{color:var(--fg-muted);padding:10px 12px;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .condo-sub{color:var(--fg-muted);margin-top:2px;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .owner-avatar{width:24px;height:24px;flex:none;font-weight:600;}

/* ─────────── Barra de filtros no desktop ───────────
   Uma linha só, sempre: [busca] [lente de etapas] … [Filtros]. A
   competência não é filtro (está no título). Quando a lente não cabe, a
   busca vira lupa que abre ao focar; se ainda não couber, a lente rola de
   lado dentro dela — a barra nunca quebra em duas linhas. */
@media (min-width:768px){
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra{
    display:flex;flex-wrap:nowrap;align-items:center;gap:var(--space-2);min-width:0;
    container:prest-filtros-barra / inline-size;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search{flex:0 1 240px;min-width:160px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente{
    flex:0 1 auto;min-width:0;display:flex;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente::-webkit-scrollbar{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente button{flex:none;white-space:nowrap;}
  /* Prazo não espreme: texto curto numa linha, coluna com largura mínima
     (a tabela rola dentro do card se faltar espaço). */
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes th[data-col="prazo"],
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-prazo{min-width:150px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-prazo,
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-prazo .prest-cel-sub{white-space:nowrap;}
  :is(.tahoe-shell,.tahoe-portal) .prest-filtros-espaco{flex:1 1 0;min-width:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-filtros{flex:none;}
}
@container prest-filtros-barra (max-width:960px){
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search{
    flex:none;min-width:0;width:34px;padding:0;gap:0;justify-content:center;cursor:pointer;overflow:hidden;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search input{flex:0 0 0;width:0;opacity:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search:focus-within,
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search.tem-valor{width:200px;padding:0 13px;gap:7px;justify-content:flex-start;cursor:text;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search:focus-within input,
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search.tem-valor input{flex:1;opacity:1;}
}
@media (min-width:768px) and (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search{transition:none;}
}

/* Popover de filtros: nasce do botão, alinhado à direita dele. */
:is(.tahoe-shell,.tahoe-portal) .prest-filtros{position:relative;display:inline-flex;}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-pop{
  position:absolute;top:calc(100% + 6px);right:0;z-index:80;width:320px;max-width:calc(100vw - 32px);
  max-height:min(70vh, 560px);overflow:auto;display:flex;flex-direction:column;
  border-radius:var(--radius-md);background:var(--bg);box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-3);
}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-pop-corpo{padding:var(--space-3) var(--space-4);}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-pop-pe{
  position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  padding:var(--space-2) var(--space-4);background:var(--bg);box-shadow:0 -1px 0 var(--hairline-section);
}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-pop-pe .prest-btn{margin-left:calc(-1 * var(--space-4));}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-pop .prest-filtros-so-sheet{display:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-grupos{display:flex;flex-direction:column;gap:var(--space-4);}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-busca{position:relative;display:flex;align-items:center;margin-bottom:var(--space-1);}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-busca svg{position:absolute;left:10px;width:14px;height:14px;color:var(--fg-muted);pointer-events:none;}
:is(.tahoe-shell,.tahoe-portal) .prest-filtros-busca .prest-input{width:100%;padding-left:30px;}

/* Lente que transborda (desktop estreito e celular): a borda que esconde
   itens esmaece. O #000 das máscaras não é cor: a máscara só lê o alfa. */
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente[data-mais-dir]{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 40px),transparent);}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente[data-mais-esq]{-webkit-mask-image:linear-gradient(to left,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(to left,#000 calc(100% - 40px),transparent);}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente[data-mais-esq][data-mais-dir]{-webkit-mask-image:linear-gradient(to right,transparent,#000 40px,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(to right,transparent,#000 40px,#000 calc(100% - 40px),transparent);}

/* ─────────── Tabela ─────────── */
/* Tabela mais larga que o card (768–~900px) rola dentro dele, não é cortada. */
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-caixa{padding:0;overflow-x:auto;}
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes th:first-child,
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td:first-child{padding-left:var(--space-4);}
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes th:last-child,
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td:last-child{padding-right:var(--space-4);}
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td{vertical-align:middle;}
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes tbody tr{cursor:pointer;}
/* Pressionado: a linha inteira, o nome e o cabeçalho de ordenação. */
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-tabela-cartoes tbody tr:active td{background:var(--prest-lavado-forte);}
:is(.tahoe-shell,.tahoe-portal) .prest-ord:active{background:var(--prest-lavado-forte);border-radius:4px;}
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes tbody tr:last-child td{border-bottom:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes tbody tr:has(a:focus-visible) td{background:var(--prest-lavado);}
:is(.tahoe-shell,.tahoe-portal) .prest-ord{
  appearance:none;border:0;background:none;margin:0;padding:0;cursor:pointer;
  display:inline-flex;align-items:center;min-height:24px;
  font:inherit;color:inherit;letter-spacing:inherit;
}
:is(.tahoe-shell,.tahoe-portal) .prest-ord:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:4px;}
:is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .tbl th.sortable:focus-within .sort-ic{opacity:.4;}
:is(.tahoe-shell,.tahoe-portal) .prest-condo-t{display:flex;flex-direction:column;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes a.condo-name{display:block;}
:is(.tahoe-shell,.tahoe-portal) .prest-cel{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-cel-sub{font-size:var(--type-meta-size);line-height:var(--type-meta-leading);letter-spacing:var(--type-meta-tracking);color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-cel-sub[data-tom="erro"]{color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-prazo{font-weight:500;}
:is(.tahoe-shell,.tahoe-portal) .prest-prazo[data-tom="erro"]{color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-prazo[data-tom="aviso"]{color:var(--warning-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-prazo[data-tom="sucesso"]{color:var(--success-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-nada{color:var(--fg-muted);}  /* fg-subtle dava 3,3:1 */
:is(.tahoe-shell,.tahoe-portal) .prest-resp{display:flex;align-items:center;gap:var(--space-2);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-resp .nome{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
:is(.tahoe-shell,.tahoe-portal) .prest-resp-nd{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1);}
:is(.tahoe-shell,.tahoe-portal) .prest-resp-nd .nd{color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-resp-nd.prest-resp-nd .prest-btn{min-height:28px;padding:0 var(--space-2);gap:4px;}
:is(.tahoe-shell,.tahoe-portal) .prest-resp-nd .prest-btn svg{width:14px;height:14px;}
:is(.tahoe-shell,.tahoe-portal) .prest-sk-lista{padding:var(--space-2) var(--space-4);}

/* ─────────── Celular ─────────── */
@media (max-width:767.98px){
  /* Título: a competência é o gatilho ao lado dele, só o chevron. */
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-titulo.prest-competencia{flex-wrap:nowrap;justify-content:space-between;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-gat .gatilho{width:var(--prest-alvo);padding:0;flex:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-gat .gatilho .rot,
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-gat .gatilho > svg:first-child{display:none;}
  /* Filtros: busca + "Filtros" numa faixa; a lente numa faixa só, que rola
     de lado dentro dela (a página não rola). */
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .list-search{grid-column:1;grid-row:1;min-width:0;height:var(--prest-alvo);}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .list-search input{font-size:var(--type-title-size);}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-filtros{grid-column:2;grid-row:1;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente{
    grid-column:1 / -1;grid-row:2;display:flex;flex-wrap:nowrap;overflow-x:auto;min-width:0;
    scrollbar-width:none;overscroll-behavior-x:contain;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-filtros-barra .prest-lente::-webkit-scrollbar{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-lente button{flex:none;height:auto;min-height:var(--prest-alvo);padding:0 var(--space-3);white-space:nowrap;}
  :is(.tahoe-shell,.tahoe-portal) .prest-filtros-espaco{display:none;}
  /* Chips ativos + um "Limpar" só, também numa faixa. */
  :is(.tahoe-shell,.tahoe-portal) .prest-filtros-ativos{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-filtros-ativos::-webkit-scrollbar{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-filtros-ativos .prest-chips{flex-wrap:nowrap;flex:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-filtros-ativos > .prest-btn{flex:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes:has([data-prest-sem-resultado]:not([hidden])) .prest-filtros-ativos > [data-prest-limpa-filtros]{display:none;}

  /* Cartão enxuto, três faixas sem rótulo: condomínio · etapa e prazo ·
     responsável e assinatura (quando existe). O rótulo de cada célula
     continua para o leitor de tela (::before visualmente escondido). */
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-caixa.card{background:transparent;box-shadow:none;border-radius:0;overflow:visible;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes,
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes tbody{display:block;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes thead{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes tbody{display:flex;flex-direction:column;gap:var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes tbody tr{
    display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"condo condo" "etapa prazo" "resp ass";
    align-items:center;gap:var(--space-2) var(--space-3);
    padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);background:var(--bg);
    box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-1);
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes tbody tr:active{background:var(--bg-soft);}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-tabela-cartoes td{display:block;padding:0;border:0;min-width:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-lista-prestacoes .prest-tabela-cartoes tr:hover td{background:transparent;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-condo{grid-area:condo;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-etapa{grid-area:etapa;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-prazo{grid-area:prazo;text-align:right;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-prazo .prest-cel{align-items:flex-end;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-resp{grid-area:resp;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-ass{grid-area:ass;justify-self:end;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-ass.vazia{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-etapa .prest-cel{flex-direction:row;flex-wrap:wrap;align-items:center;gap:0 var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-condo .condo{gap:var(--space-3);}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-condo .condo-mark{width:32px;height:32px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td.c-condo .condo-name{white-space:normal;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td[data-rotulo]{position:relative;}
  :is(.tahoe-shell,.tahoe-portal) .prest-tabela-cartoes td[data-rotulo]::before{
    content:attr(data-rotulo) ": ";position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-resp-nd.prest-resp-nd .prest-btn{min-height:var(--prest-alvo);margin:-10px 0 -10px -8px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-lista{padding:var(--space-2) 0;}
}

/* ─────────── Versões e revisão ───────────
   Decisão do Leandro, 06/10/2026 (direção A, com três peças da B). A versão
   é "Versão N", o número do banco (rotuloVersao). Contrato em
   docs/prestacao-redesenho.md, seção "Versões e revisão". */

/* Faixa de versão: logo abaixo do cabeçalho, acima da trilha. Só existe
   com uma revisão em andamento ou com uma versão antiga aberta: à esquerda
   o que se prepara, à direita o que o público vê agora. Tom info; neutro ao
   consultar uma versão antiga. */
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao{
  display:flex;flex-direction:column;gap:var(--space-3);min-width:0;
  padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);
  background:var(--info-soft);box-shadow:inset 0 0 0 1px var(--info-border);
}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao[data-tom="neutro"]{background:var(--bg-soft);box-shadow:inset 0 0 0 1px var(--border);}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-linha{display:flex;align-items:center;gap:var(--space-3) var(--space-5);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-agora{display:flex;align-items:flex-start;gap:var(--space-3);flex:1;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-agora > .prest-i{width:20px;height:20px;flex:none;color:var(--info-fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao[data-tom="neutro"] .prest-faixa-versao-agora > .prest-i{color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-agora[data-gira] > .prest-i{animation:prest-gira 900ms linear infinite;}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-txt{display:flex;flex-direction:column;gap:2px;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-titulo{
  font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:600;color:var(--info-fg);
}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao[data-tom="neutro"] .prest-faixa-versao-titulo{color:var(--fg);}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-corpo{
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);letter-spacing:var(--type-meta-tracking);color:var(--fg);
}
/* O que está no ar: rótulo + ação, à direita no largo. */
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar{
  display:flex;align-items:center;gap:var(--space-1) var(--space-3);flex:none;min-width:0;
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg);
}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar .rot{display:inline-flex;align-items:center;gap:6px;}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar .rot .prest-i{width:14px;height:14px;color:var(--success);}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar .rot b{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao .prest-disc > summary{font-size:var(--type-meta-size);}
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao.prest-faixa-versao .prest-disc-corpo{display:flex;flex-direction:column;gap:var(--space-2);}  /* dobrada: vence .prest-secoes por especificidade */
:is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao .prest-linhas{background:var(--bg);}
@media (max-width:767.98px){
  /* No celular a faixa é curta (medido a 390px: 225px → ~110px): o que se
     prepara em cima; embaixo, no eixo do texto, o que está no ar e "Abrir"
     na mesma linha, e "Motivo e anexos" logo abaixo. "Abrir" e o resumo são
     texto com alvo de 44px por ::before, que não ocupa lugar; um fica à
     direita e o outro à esquerda, então os alvos não se cruzam. */
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao{padding:var(--space-3);gap:var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-linha{flex-direction:column;align-items:stretch;gap:var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar{justify-content:space-between;flex-wrap:nowrap;padding-left:32px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar .rot{min-width:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar .prest-btn.terciario{
    position:relative;min-height:0;height:auto;padding:0;gap:4px;flex:none;
  }
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-noar .prest-btn.terciario::before{content:"";position:absolute;inset:-14px -8px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao.prest-faixa-versao > .prest-disc{padding-left:32px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao.prest-faixa-versao > .prest-disc > summary{position:relative;min-height:0;}
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao.prest-faixa-versao > .prest-disc > summary::before{content:"";position:absolute;inset:-14px -4px;}
}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .prest-faixa-versao-agora[data-gira] > .prest-i{animation:none;}
}

/* Aprovação da revisão: sai do ar × entra no ar (peça da direção B). Lado
   a lado no largo, com a seta entre os dois; empilhado no celular (e em
   painel estreito), com a seta apontando para baixo. */
:is(.tahoe-shell,.tahoe-portal) .prest-troca{
  display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:var(--space-3);align-items:start;
}
:is(.tahoe-shell,.tahoe-portal) .prest-troca-seta{
  display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-top:34px;
  border-radius:var(--radius-pill);background:var(--bg-soft);color:var(--fg-muted);
}
:is(.tahoe-shell,.tahoe-portal) .prest-troca-seta .prest-i{width:16px;height:16px;}
:is(.tahoe-shell,.tahoe-portal) .prest-troca-cabeca .prest-linha-nome{font-weight:600;}
@media (max-width:899.98px){
  :is(.tahoe-shell,.tahoe-portal) .prest-troca{grid-template-columns:minmax(0,1fr);gap:var(--space-2);}
  :is(.tahoe-shell,.tahoe-portal) .prest-troca-seta{margin:0 auto;transform:rotate(90deg);}
}
/* O que compõe a Versão Condôminos da versão nova: lista de estado. */
:is(.tahoe-shell,.tahoe-portal) .prest-composicao li{display:flex;align-items:flex-start;gap:var(--space-3);line-height:var(--type-body-leading);}
:is(.tahoe-shell,.tahoe-portal) .prest-composicao li > .prest-i{width:20px;height:20px;flex:none;color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-composicao b{font-weight:600;overflow-wrap:anywhere;}

/* Nome do arquivo do PDF: na meta, linha própria; como nome da linha, o
   nome inteiro. Nos dois, quebra onde precisar (55+ caracteres não cabem
   no celular). */
:is(.tahoe-shell,.tahoe-portal) .prest-arquivo{overflow-wrap:anywhere;}
:is(.tahoe-shell,.tahoe-portal) .prest-linha-meta .prest-arquivo{display:block;}

/* Pedido de assinatura: o título do grupo diz de qual versão (rotuloPedido). */
:is(.tahoe-shell,.tahoe-portal) .prest-pedido .prest-grupo-h{flex-wrap:wrap;}
:is(.tahoe-shell,.tahoe-portal) .prest-pedido .prest-grupo-h .cont{font-weight:600;}

/* Diálogo "Criar revisão" (dialog.prest-revisao): dois passos. */
:is(.tahoe-shell,.tahoe-portal) dialog.prest-revisao [hidden]{display:none !important;}
/* As ações ficam presas embaixo (sticky) e os botões das linhas de anexo têm
   z-index próprio: sem isto o "×" de remover rolava por cima da decisão. */
:is(.tahoe-shell,.tahoe-portal) dialog.prest-revisao .prest-dialog-acoes{z-index:3;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-passo{display:flex;flex-direction:column;gap:var(--space-4);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcoes{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcoes legend{
  padding:0 0 var(--space-2);font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:600;
}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcao{
  display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:var(--space-3);row-gap:2px;align-items:start;
  min-height:var(--tk-alvo);padding:var(--space-3);border-radius:var(--radius-md);cursor:pointer;
  background:var(--bg);box-shadow:inset 0 0 0 1px var(--border);
}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcao:hover{background:var(--tk-lavado);}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcao:has(input:checked){background:var(--link-soft);box-shadow:inset 0 0 0 2px var(--link);}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcao:has(input:focus-visible){outline:2px solid var(--link);outline-offset:2px;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcao input{grid-row:1 / 3;width:18px;height:18px;margin:2px 0 0;accent-color:var(--link);}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcao .t{font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-opcao .d{font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-anexar{
  display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);
  background:var(--bg-soft);box-shadow:inset 0 0 0 1px var(--border-strong);
  font-size:var(--type-body-size);line-height:var(--type-body-leading);
}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-anexar .prest-t-meta{margin:0;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-anexo .prest-opcao{grid-column:2 / 4;grid-row:2;padding:0;min-height:var(--tk-alvo);}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-anexo .prest-linha-acao-fim{grid-row:1;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-prevista{
  margin:0;font-size:var(--type-title-size);line-height:var(--type-title-leading);font-weight:600;
}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-resumo{
  display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-2) var(--space-3);margin:0;
  padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--bg-soft);
  font-size:var(--type-body-size);line-height:var(--type-body-leading);
}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-resumo dt{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .prest-revisao-resumo dd{margin:0;min-width:0;overflow-wrap:break-word;}

/* ─────────── Barra de estados do protótipo ───────────
   NÃO é produto. Faixa escura, rotulada "Protótipo", presa embaixo. Fica
   ABAIXO dos popovers (80) e do rail (70): quem está testando a tela precisa
   ver o menu inteiro, não a barra por cima dele. Quem a
   monta é prestacao.js, a partir de [data-prest-proto]. Contrato em
   docs/prestacao-redesenho.md. */
.tahoe-shell.prest-com-proto .main{padding-bottom:72px;}  /* no .main (claro), não no shell (azul) */
/* A barra aberta ocupa ~76px do rodapé: a primária presa sobe esse tanto.
   Recolhida, a barra mora no fim da página e não cobre nada. */
.tahoe-shell.prest-com-proto{--prest-rodape:76px;}
.tahoe-shell.prest-com-proto:has(.prest-proto.recolhida){--prest-rodape:0px;}
:is(.tahoe-shell,.tahoe-portal) .prest-proto{
  position:fixed;left:50%;bottom:16px;z-index:60;transform:translateX(-50%);
  display:flex;align-items:center;gap:var(--space-2);max-width:calc(100vw - 32px);
  padding:6px 6px 6px var(--space-4);border-radius:var(--radius-pill);
  background:var(--bg-inverse);color:var(--fg-inverse);
  box-shadow:var(--shadow-4), 0 0 0 1px var(--prest-veu);
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);
}
:is(.tahoe-shell,.tahoe-portal) .prest-proto .lbl{font-weight:600;white-space:nowrap;}
:is(.tahoe-shell,.tahoe-portal) .prest-proto select{
  min-height:32px;min-width:0;flex:0 1 auto;max-width:60vw;padding:0 var(--space-3);border:0;border-radius:var(--radius-pill);
  background:var(--bg);color:var(--link);cursor:pointer;
  font-family:var(--type-label-font);font-size:var(--type-label-size);font-weight:var(--type-label-weight);
}
:is(.tahoe-shell,.tahoe-portal) .prest-proto select:focus-visible{outline:2px solid var(--link-soft);outline-offset:2px;}
:is(.tahoe-shell,.tahoe-portal) .prest-proto .erro{color:var(--danger-soft);font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .prest-proto .recolhe{
  width:32px;height:32px;flex:none;padding:0;border:0;border-radius:var(--radius-pill);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;background:transparent;color:inherit;
}
:is(.tahoe-shell,.tahoe-portal) .prest-proto .recolhe:hover{background:rgba(255,255,255,0.12);}
:is(.tahoe-shell,.tahoe-portal) .prest-proto .recolhe:focus-visible{outline:2px solid var(--link-soft);outline-offset:1px;}
:is(.tahoe-shell,.tahoe-portal) .prest-proto .recolhe svg{width:16px;height:16px;}
/* Com um menu ou popover aberto, a barra sai da frente: o .main é outro
   contexto de empilhamento e o menu (80) ficava sob ela (60) — o último
   item, perto do rodapé, não recebia o toque. */
.tahoe-shell:has(.prest-menu.aberto, .prest-competencia.aberto) .prest-proto{opacity:0;pointer-events:none;}
/* Recolhida: só o botão, e ele deixa de ser fixo — mora na faixa de 72px
   reservada no fim da página. Fixo no canto, cobria (e roubava o clique de)
   o que passasse por baixo dele durante a rolagem. */
.tahoe-shell.prest-com-proto{position:relative;}
:is(.tahoe-shell,.tahoe-portal) .prest-proto.recolhida{position:absolute;left:auto;right:16px;bottom:16px;transform:none;padding:6px;}
:is(.tahoe-shell,.tahoe-portal) .prest-proto.recolhida .lbl,
:is(.tahoe-shell,.tahoe-portal) .prest-proto.recolhida select{display:none;}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .prest-proto select{min-height:40px;}
  :is(.tahoe-shell,.tahoe-portal) .prest-proto .recolhe{width:40px;height:40px;}
}
/* Conteúdo condicionado ao estado: o JS põe `hidden`; isto garante que
   `hidden` ganha de qualquer display declarado pelo componente. */
:is(.tahoe-shell,.tahoe-portal) [data-quando][hidden]{display:none !important;}

/* Conteúdo no portal: a regra do kit (componentes.css, "Conteúdo no
   portal") vale para os pops da Prestação também. */
.tahoe-portal .prest-competencia-pop,
.tahoe-portal .prest-filtros-pop{position:relative;inset:auto;opacity:1;visibility:visible;transform:none;pointer-events:auto;}
