/* =============================================================
   SEMOG · Admin Tahoe — componentes do kit (.tk-*)

   Os componentes nasceram na Prestação de Contas (0.55.0) e passaram a
   padrão do kit depois da 0.56.0: tipografia por papel, pilha, cabeçalho, botão, pílula,
   status, aviso, banner, indicador de etapas, lista agrupada, menu,
   diálogo → sheet, campo, esqueleto, estados de tela, trilha de etapas do
   detalhe e primária presa. Qualquer tela do kit (Onboarding, Prestação…)
   usa estes nomes. Comportamento em componentes.js (window.TahoeKit).

   USE: depois de tokens.css, pills.css e tahoe.css. Tudo vive sob
   `.tahoe-shell`, como o resto do kit — e sob `.tahoe-portal`, o contêiner
   de portal de menu, popover e diálogo (seção "Portal" abaixo).

   APELIDOS .prest-*: cada regra lista o nome novo e o antigo no mesmo
   seletor (`.tk-btn, .prest-btn{…}`) — mesma especificidade, mesmas
   declarações, mesma posição na cascata. Não misture prefixos dentro de um
   mesmo componente: `.tk-menu` espera `.tk-menu-pop`, não `.prest-menu-pop`.
   prestacao.css importa este arquivo, então quem só carrega prestacao.css
   continua com tudo.

   Duas regras que mandam no arquivo:

   1. Tipografia só pelos papéis --type-* de tokens.css. Quatro tamanhos
      (25 · 16 · 14 · 12) e nenhum outro. Destaque sobe o PESO, não o
      tamanho. Se um seletor novo precisar de font-size literal, ele está
      errado.
   2. Cor só por token semântico (Tier 3). Os únicos literais são os
      "lavados" neutros abaixo — sobreposição de tinta com alpha para
      hover/press, a mesma que o kit usa em todo lugar. Fora do Tier 3 há
      um só: --gray-800, a cor de texto do .tahoe-portal (sem papel
      semântico).

   Contrato de uso de cada classe: docs/prestacao-redesenho.md e
   kits/admin/SKILL.md, "Componentes do kit".
   ============================================================= */

/* Variáveis. As regras leem --tk-*; o VALOR mora no nome antigo --prest-*
   e --tk-* aponta para ele. A ordem é essa de propósito: quem já sobrescreve
   --prest-alvo no próprio shell (o painel do Chatwoot faz isso no ponteiro
   fino) continua mudando o componente, e quem escreve --tk-alvo em qualquer
   nível também. Para ajustar, escreva --tk-* — --prest-* só vale no
   elemento do shell/portal. */
:is(.tahoe-shell,.tahoe-portal){
  /* Mola criticamente amortecida (damping 1, response 0,35s), amostrada em
     linear(): chega sem passar do ponto. Custom property não valida o valor,
     então não há fallback em cascata aqui: navegador sem linear() (anterior
     a Chrome 113 / Firefox 112 / Safari 17.2) descarta a transição inteira e
     o componente abre e fecha sem animação — funciona, só não anima. */
  --prest-mola: linear(0, 0.055 5%, 0.175 10%, 0.312 15%, 0.445 20%, 0.562 25%, 0.66 30%, 0.74 35%, 0.803 40%, 0.852 45%, 0.89 50%, 0.919 55%, 0.94 60%, 0.956 65%, 0.968 70%, 0.977 75%, 0.983 80%, 0.988 85%, 0.991 90%, 0.994 95%, 1);
  --prest-mola-dur: 420ms;
  --prest-fade: 180ms;

  --prest-lavado:       rgba(10,19,48,0.05);
  --prest-lavado-forte: rgba(10,19,48,0.09);
  --prest-veu:          rgba(10,19,48,0.32);

  --prest-alvo: 36px;      /* altura de controle no ponteiro */
  --prest-raio: var(--radius-md);

  --tk-mola:var(--prest-mola);
  --tk-mola-dur:var(--prest-mola-dur);
  --tk-fade:var(--prest-fade);
  --tk-lavado:var(--prest-lavado);
  --tk-lavado-forte:var(--prest-lavado-forte);
  --tk-veu:var(--prest-veu);
  --tk-alvo:var(--prest-alvo);
  --tk-raio:var(--prest-raio);
}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal){--prest-alvo: 44px;}  /* alvo de toque; --tk-alvo acompanha */
}


/* ─────────── Portal (.tahoe-portal) ───────────
   Menu, popover e diálogo de biblioteca (Radix, Headless UI…) são levados
   para o fim do <body>, fora do .tahoe-shell, e perderiam o estilo. O
   contêiner do portal leva a classe `tahoe-portal`: ele recebe a fonte, a
   cor de texto e os resets de que os componentes .tk-* dependem, sem o
   layout do shell (grid, fundo, altura). Toda regra .tk-* deste arquivo
   vale em :is(.tahoe-shell,.tahoe-portal) — mesma especificidade de antes.
   Uso: docs/prestacao-redesenho.md, "Portal". */
.tahoe-portal{
  font-family:var(--ui-font);
  color:var(--gray-800);  /* o texto do kit; não há papel semântico com este valor (--fg é o azul de marca) */
}
.tahoe-portal *{box-sizing:border-box;}
.tahoe-portal svg{width:1em;height:1em;flex-shrink:0;}

/* ─────────── Papéis tipográficos ───────────
   Para texto solto que não pertence a um componente abaixo. */
:is(.tahoe-shell,.tahoe-portal) .tk-t-page,
:is(.tahoe-shell,.tahoe-portal) .prest-t-page{
  font-family:var(--type-page-font);font-size:var(--type-page-size);font-weight:var(--type-page-weight);
  line-height:var(--type-page-leading);letter-spacing:var(--type-page-tracking);margin:0;
}
:is(.tahoe-shell,.tahoe-portal) .tk-t-title,
:is(.tahoe-shell,.tahoe-portal) .prest-t-title{
  font-family:var(--type-title-font);font-size:var(--type-title-size);font-weight:var(--type-title-weight);
  line-height:var(--type-title-leading);letter-spacing:var(--type-title-tracking);margin:0;
}
:is(.tahoe-shell,.tahoe-portal) .tk-t-body,
:is(.tahoe-shell,.tahoe-portal) .prest-t-body{
  font-family:var(--type-body-font);font-size:var(--type-body-size);font-weight:var(--type-body-weight);
  line-height:var(--type-body-leading);letter-spacing:var(--type-body-tracking);margin:0;
}
:is(.tahoe-shell,.tahoe-portal) .tk-t-meta,
:is(.tahoe-shell,.tahoe-portal) .prest-t-meta{
  font-family:var(--type-meta-font);font-size:var(--type-meta-size);font-weight:var(--type-meta-weight);
  line-height:var(--type-meta-leading);letter-spacing:var(--type-meta-tracking);color:var(--fg-muted);margin:0;
}
:is(.tahoe-shell,.tahoe-portal) .tk-t-label,
:is(.tahoe-shell,.tahoe-portal) .prest-t-label{
  font-family:var(--type-label-font);font-size:var(--type-label-size);font-weight:var(--type-label-weight);
  line-height:var(--type-label-leading);letter-spacing:var(--type-label-tracking);
}
/* Número: Saira tabular, no tamanho de quem o contém. */
:is(.tahoe-shell,.tahoe-portal) .tk-num,
:is(.tahoe-shell,.tahoe-portal) .prest-num{
  font-family:var(--type-num-font);font-weight:var(--type-num-weight);font-variant-numeric:var(--type-num-variant);
  white-space:nowrap;  /* "R$" numa linha e o valor na outra lê errado */
}
/* Ênfase dentro de corpo ou meta: peso, nunca tamanho. */
:is(.tahoe-shell,.tahoe-portal) .tk-forte,
:is(.tahoe-shell,.tahoe-portal) .prest-forte{font-weight:600;}

/* ─────────── Pilha ───────────
   `.card` não tem margem própria. Quem empilha cards dá o respiro com gap. */
:is(.tahoe-shell,.tahoe-portal) .tk-pilha,
:is(.tahoe-shell,.tahoe-portal) .prest-pilha{display:flex;flex-direction:column;gap:var(--space-4);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-pilha.larga,
:is(.tahoe-shell,.tahoe-portal) .prest-pilha.larga{gap:var(--space-5);}
:is(.tahoe-shell,.tahoe-portal) .tk-pilha.justa,
:is(.tahoe-shell,.tahoe-portal) .prest-pilha.justa{gap:var(--space-2);}

/* ─────────── Cabeçalho da tela ───────────
   Identidade (marca + título + meta) à esquerda, ações à direita. Abaixo de
   768px o título divide a linha só com o menu (ícone ⋯); uma primária desce
   para uma faixa própria, com o resto no menu. Secundárias que
   existem no desktop levam .tk-so-desktop; o item equivalente dentro do
   menu leva .tk-so-celular. */
:is(.tahoe-shell,.tahoe-portal) .tk-cab,
:is(.tahoe-shell,.tahoe-portal) .prest-cab{display:flex;align-items:flex-start;gap:var(--space-4);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-cab-id,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-id{display:flex;align-items:flex-start;gap:var(--space-3);flex:1;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-cab-marca,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-marca{
  width:44px;height:44px;border-radius:var(--radius-sm);flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--type-num-font);font-size:var(--type-title-size);font-weight:600;
  background:var(--link-soft);color:var(--link);
}
:is(.tahoe-shell,.tahoe-portal) .tk-cab-txt,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-txt{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-cab-txt h1,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-txt h1{overflow-wrap:anywhere;}
:is(.tahoe-shell,.tahoe-portal) .tk-cab-meta,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-meta{
  display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1) var(--space-2);
  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) .tk-cab-acoes,
:is(.tahoe-shell,.tahoe-portal) .prest-cab-acoes{flex:none;flex-wrap:nowrap;}
/* Entre 768 e ~1100px o título ficava espremido contra as secundárias e a
   primária: a faixa de ações desce inteira quando o título ficaria com menos
   de 420px, e desce alinhada à direita. */
@media (min-width:768px){
  :is(.tahoe-shell,.tahoe-portal) .tk-cab,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab{flex-wrap:wrap;}
  /* O título não encolhe abaixo de 420px: se título + ações não cabem, as
     ações descem inteiras, à direita; e se nem sozinhas cabem, quebram. */
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-id,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-id{flex:1 0 min(420px, 100%);}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-acoes,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-acoes{margin-left:auto;max-width:100%;flex-wrap:wrap;justify-content:flex-end;}
}
/* Abaixo de 768px o cabeçalho vira grade, e .tk-cab-id/.tk-cab-txt
   somem como caixa (display:contents) para os filhos se alinharem por ela:
   linha 1 = marca (40px) + título + menu só com ícone, à direita; o resto
   (meta, linhas extras) começa na borda esquerda do conteúdo, sem recuo sob
   a marca. Um alinhamento só por bloco.
   Quando há outra ação visível além do menu (a primária de A/B, os links do
   hub), as ações descem para uma faixa própria na largura toda — a
   primária esticada, o menu ao lado dela. Só o menu: fica na linha 1, sem
   faixa sozinha. */
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .tk-cab,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab{
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;
    column-gap:var(--space-3);row-gap:var(--space-2);
  }
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-id,
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-txt,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-id,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-txt{display:contents;}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-marca{grid-column:1;grid-row:1;width:40px;height:40px;}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-txt > h1,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-txt > h1{grid-column:2;grid-row:1;}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab:not(:has(.tk-cab-marca)) .tk-cab-txt > h1,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab:not(:has(.prest-cab-marca)) .prest-cab-txt > h1{grid-column:1 / 3;}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-txt > :not(h1),
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-txt > :not(h1){grid-column:1 / -1;}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-acoes,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-acoes{grid-column:3;grid-row:1;display:flex;}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-acoes:has(> :not(.tk-menu):not([hidden]):not(.tk-so-desktop)),
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-acoes:has(> :not(.prest-menu):not([hidden]):not(.prest-so-desktop)){
    grid-column:1 / -1;grid-row:auto;width:100%;
  }
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-acoes > .primario,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-acoes > .primario{flex:1;min-width:0;}
  /* O gatilho do menu no cabeçalho vira ícone só (44×44); o nome vai no
     aria-label. */
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-acoes .tk-menu > [data-tk-menu-gatilho],
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-acoes .prest-menu > [data-prest-menu-gatilho]{width:var(--tk-alvo);padding:0;}
  :is(.tahoe-shell,.tahoe-portal) .tk-cab-acoes .tk-menu > [data-tk-menu-gatilho] .rot,
  :is(.tahoe-shell,.tahoe-portal) .prest-cab-acoes .prest-menu > [data-prest-menu-gatilho] .rot{display:none;}
}

/* ─────────── Botão ───────────
   Um sistema para a tela inteira. Um rótulo = o papel label. Duas alturas,
   e quem escolhe é a faixa de largura, não o autor: 36px no ponteiro, 44px
   no toque. `.icone` é quadrado e EXIGE aria-label. */
:is(.tahoe-shell,.tahoe-portal) .tk-btn,
:is(.tahoe-shell,.tahoe-portal) .prest-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  min-height:var(--tk-alvo);padding:0 var(--space-4);border:0;border-radius:var(--radius-pill);
  font-family:var(--type-label-font);font-size:var(--type-label-size);font-weight:var(--type-label-weight);
  line-height:var(--type-label-leading);letter-spacing:var(--type-label-tracking);
  text-decoration:none;white-space:nowrap;cursor:pointer;
  background:var(--bg);color:var(--link);box-shadow:inset 0 0 0 1px var(--border);
  transition:background-color 120ms ease, box-shadow 120ms ease, transform 70ms ease;
  -webkit-tap-highlight-color:transparent;
}
:is(.tahoe-shell,.tahoe-portal) .tk-btn svg,
:is(.tahoe-shell,.tahoe-portal) .prest-btn svg{width:16px;height:16px;}
/* Rótulo em <span class="rot"> quando pode faltar largura: corta com reticências
   em vez de empurrar o botão para fora da tela. */
:is(.tahoe-shell,.tahoe-portal) .tk-btn .rot,
:is(.tahoe-shell,.tahoe-portal) .prest-btn .rot{min-width:0;overflow:hidden;text-overflow:ellipsis;}
:is(.tahoe-shell,.tahoe-portal) .tk-btn:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-btn:hover{background-color:var(--bg-soft);}
:is(.tahoe-shell,.tahoe-portal) .tk-btn:active,
:is(.tahoe-shell,.tahoe-portal) .prest-btn:active{background-color:var(--tk-lavado-forte);transform:translateY(1px);}
:is(.tahoe-shell,.tahoe-portal) .tk-btn:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-btn:focus-visible{outline:2px solid var(--link);outline-offset:2px;}

:is(.tahoe-shell,.tahoe-portal) .tk-btn.primario,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.primario{background:var(--link);color:var(--fg-inverse);box-shadow:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.primario:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.primario:hover{background-image:linear-gradient(rgba(255,255,255,0.10),rgba(255,255,255,0.10));}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.primario:active,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.primario:active{background-image:linear-gradient(rgba(10,19,48,0.25),rgba(10,19,48,0.25));}

:is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario{background:transparent;box-shadow:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario:hover{background:var(--tk-lavado);}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario:active,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario:active{background:var(--tk-lavado-forte);}

/* Destrutivo cheio: só no botão que CONFIRMA o irreversível, dentro do
   diálogo. Na linha, a ação de excluir é `.terciario.perigo`. */
:is(.tahoe-shell,.tahoe-portal) .tk-btn.destrutivo,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.destrutivo{background:var(--danger);color:var(--fg-inverse);box-shadow:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.destrutivo:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.destrutivo:hover{background-image:linear-gradient(rgba(10,19,48,0.12),rgba(10,19,48,0.12));}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.destrutivo:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.destrutivo:focus-visible{outline-color:var(--danger);}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.perigo,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.perigo{color:var(--danger-fg);}

:is(.tahoe-shell,.tahoe-portal) .tk-btn.icone,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.icone{width:var(--tk-alvo);padding:0;flex:none;}

:is(.tahoe-shell,.tahoe-portal) .tk-btn[disabled],
:is(.tahoe-shell,.tahoe-portal) .tk-btn[aria-disabled="true"],
:is(.tahoe-shell,.tahoe-portal) .prest-btn[disabled],
:is(.tahoe-shell,.tahoe-portal) .prest-btn[aria-disabled="true"]{
  background:var(--bg-soft);background-image:none;color:var(--fg-subtle);box-shadow:inset 0 0 0 1px var(--border);
  cursor:not-allowed;transform:none;
}
:is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario[disabled],
:is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario[aria-disabled="true"],
:is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario[disabled],
:is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario[aria-disabled="true"]{background:transparent;box-shadow:none;}

/* Enviando (aria-busy, sempre com aria-disabled): quem põe o ícone de
   carregamento no lugar do da ação é a página; aqui ele gira. */
:is(.tahoe-shell,.tahoe-portal) .tk-btn[aria-busy="true"] > svg,
:is(.tahoe-shell,.tahoe-portal) .prest-btn[aria-busy="true"] > svg{animation:tk-gira 900ms linear infinite;}
@keyframes tk-gira{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .tk-btn[aria-busy="true"] > svg,
  :is(.tahoe-shell,.tahoe-portal) .prest-btn[aria-busy="true"] > svg{animation:none;}
}

/* Botão indisponível diz o motivo EM TEXTO ao lado (toque não tem hover,
   tooltip não serve). Ligue com aria-describedby. */
:is(.tahoe-shell,.tahoe-portal) .tk-motivo,
:is(.tahoe-shell,.tahoe-portal) .prest-motivo{
  display:inline-flex;align-items:center;gap:6px;
  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) .tk-motivo svg,
:is(.tahoe-shell,.tahoe-portal) .prest-motivo svg{width:14px;height:14px;}

:is(.tahoe-shell,.tahoe-portal) .tk-acoes,
:is(.tahoe-shell,.tahoe-portal) .prest-acoes{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;}
:is(.tahoe-shell,.tahoe-portal) .tk-acoes.fim,
:is(.tahoe-shell,.tahoe-portal) .prest-acoes.fim{justify-content:flex-end;}

/* ─────────── Pílula de estado ───────────
   Texto SEMPRE na variante -fg do papel (a cor cheia reprova o AA sobre o
   -soft em sucesso e aviso). Não use .pill-warn nesta tela. */
:is(.tahoe-shell,.tahoe-portal) .tk-pill,
:is(.tahoe-shell,.tahoe-portal) .prest-pill{
  display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;
  padding:2px 10px;border-radius:var(--radius-pill);white-space:nowrap;
  font-size:var(--type-label-size);font-weight:var(--type-label-weight);
  line-height:var(--type-label-leading);letter-spacing:var(--type-label-tracking);
  background:var(--bg-soft);color:var(--fg-muted);box-shadow:inset 0 0 0 1px var(--border);
}
:is(.tahoe-shell,.tahoe-portal) .tk-pill svg,
:is(.tahoe-shell,.tahoe-portal) .prest-pill svg{width:14px;height:14px;margin-right:4px;vertical-align:-3px;}
:is(.tahoe-shell,.tahoe-portal) .tk-pill .ponto,
:is(.tahoe-shell,.tahoe-portal) .prest-pill .ponto{display:inline-block;width:6px;height:6px;border-radius:var(--radius-pill);background:currentColor;margin-right:6px;vertical-align:1px;}
/* inline-block e não flex: em flex o espaço entre "Aguardando" e o número
   some (espaço na borda de item anônimo é descartado) e vira "Aguardando1/3". */
:is(.tahoe-shell,.tahoe-portal) .tk-pill[data-tom="info"],
:is(.tahoe-shell,.tahoe-portal) .prest-pill[data-tom="info"]{background:var(--info-soft);color:var(--info-fg);box-shadow:inset 0 0 0 1px var(--info-border);}
:is(.tahoe-shell,.tahoe-portal) .tk-pill[data-tom="sucesso"],
:is(.tahoe-shell,.tahoe-portal) .prest-pill[data-tom="sucesso"]{background:var(--success-soft);color:var(--success-fg);box-shadow:inset 0 0 0 1px var(--success-border);}
:is(.tahoe-shell,.tahoe-portal) .tk-pill[data-tom="aviso"],
:is(.tahoe-shell,.tahoe-portal) .prest-pill[data-tom="aviso"]{background:var(--warning-soft);color:var(--warning-fg);box-shadow:inset 0 0 0 1px var(--warning-border);}
:is(.tahoe-shell,.tahoe-portal) .tk-pill[data-tom="erro"],
:is(.tahoe-shell,.tahoe-portal) .prest-pill[data-tom="erro"]{background:var(--danger-soft);color:var(--danger-fg);box-shadow:inset 0 0 0 1px var(--danger-border);}
/* O ponto usa a cor cheia do papel — é marca, não texto. */
:is(.tahoe-shell,.tahoe-portal) .tk-pill[data-tom="sucesso"] .ponto,
:is(.tahoe-shell,.tahoe-portal) .prest-pill[data-tom="sucesso"] .ponto{background:var(--success);}
:is(.tahoe-shell,.tahoe-portal) .tk-pill[data-tom="aviso"] .ponto,
:is(.tahoe-shell,.tahoe-portal) .prest-pill[data-tom="aviso"] .ponto{background:var(--warning);}

/* ─────────── Feedback ───────────
   Quatro tipos, cada um com lugar e peso:
   - status    → .tk-status: linha pequena, sem caixa, junto do que descreve.
   - conclusão → .tk-status[data-tom="sucesso"] no lugar onde estava a ação
                 que concluiu ("Conciliação finalizada em 12/06").
   - aviso     → .tk-aviso[data-tom="aviso"], junto da CAUSA.
   - erro      → .tk-aviso[data-tom="erro"], junto do que falhou.
   .tk-banner é o bloqueio ou o erro da etapa inteira: no MÁXIMO UM por
   etapa, no topo dela. Dois banners na mesma etapa = um deles é aviso inline. */
/* inline-block e não flex: o texto do status mistura nó de texto, número e
   negrito, e em flex cada pedaço viraria uma coluna. */
:is(.tahoe-shell,.tahoe-portal) .tk-status,
:is(.tahoe-shell,.tahoe-portal) .prest-status{
  display:inline-block;min-width:0;
  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) .tk-status svg,
:is(.tahoe-shell,.tahoe-portal) .prest-status svg{width:14px;height:14px;vertical-align:-2px;margin-right:6px;}
:is(.tahoe-shell,.tahoe-portal) .tk-status[data-tom="info"],
:is(.tahoe-shell,.tahoe-portal) .prest-status[data-tom="info"]{color:var(--info-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-status[data-tom="sucesso"],
:is(.tahoe-shell,.tahoe-portal) .prest-status[data-tom="sucesso"]{color:var(--success-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-status[data-tom="aviso"],
:is(.tahoe-shell,.tahoe-portal) .prest-status[data-tom="aviso"]{color:var(--warning-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-status[data-tom="erro"],
:is(.tahoe-shell,.tahoe-portal) .prest-status[data-tom="erro"]{color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-status b,
:is(.tahoe-shell,.tahoe-portal) .prest-status b{font-weight:600;}

:is(.tahoe-shell,.tahoe-portal) .tk-aviso,
:is(.tahoe-shell,.tahoe-portal) .prest-aviso{
  display:flex;align-items:flex-start;gap:var(--space-2);
  padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);letter-spacing:var(--type-meta-tracking);
  background:var(--warning-soft);color:var(--warning-fg);box-shadow:inset 0 0 0 1px var(--warning-border);
}
:is(.tahoe-shell,.tahoe-portal) .tk-aviso svg,
:is(.tahoe-shell,.tahoe-portal) .prest-aviso svg{width:16px;height:16px;flex:none;margin-top:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-aviso[data-tom="erro"],
:is(.tahoe-shell,.tahoe-portal) .prest-aviso[data-tom="erro"]{background:var(--danger-soft);color:var(--danger-fg);box-shadow:inset 0 0 0 1px var(--danger-border);}
:is(.tahoe-shell,.tahoe-portal) .tk-aviso .txt,
:is(.tahoe-shell,.tahoe-portal) .prest-aviso .txt{flex:1;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-aviso b,
:is(.tahoe-shell,.tahoe-portal) .prest-aviso b{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .tk-aviso .tk-btn,
:is(.tahoe-shell,.tahoe-portal) .prest-aviso .prest-btn{min-height:28px;padding:0 var(--space-3);flex:none;}
@media (max-width:767.98px){
  /* No celular a ação desce para a linha de baixo, alinhada ao texto:
     ao lado dele, espremeria a frase em quatro linhas. */
  :is(.tahoe-shell,.tahoe-portal) .tk-aviso,
  :is(.tahoe-shell,.tahoe-portal) .prest-aviso{flex-wrap:wrap;}
  :is(.tahoe-shell,.tahoe-portal) .tk-aviso .txt,
  :is(.tahoe-shell,.tahoe-portal) .prest-aviso .txt{flex-basis:calc(100% - 24px);}
  :is(.tahoe-shell,.tahoe-portal) .tk-aviso .tk-btn,
  :is(.tahoe-shell,.tahoe-portal) .prest-aviso .prest-btn{min-height:var(--tk-alvo);margin-left:24px;}
}

:is(.tahoe-shell,.tahoe-portal) .tk-banner,
:is(.tahoe-shell,.tahoe-portal) .prest-banner{
  display:flex;align-items:flex-start;gap:var(--space-3);
  padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);
  background:var(--info-soft);color:var(--info-fg);box-shadow:inset 0 0 0 1px var(--info-border);
}
:is(.tahoe-shell,.tahoe-portal) .tk-banner > svg,
:is(.tahoe-shell,.tahoe-portal) .prest-banner > svg{width:20px;height:20px;flex:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-banner .txt,
:is(.tahoe-shell,.tahoe-portal) .prest-banner .txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
:is(.tahoe-shell,.tahoe-portal) .tk-banner .titulo,
:is(.tahoe-shell,.tahoe-portal) .prest-banner .titulo{
  font-size:var(--type-body-size);font-weight:600;line-height:var(--type-body-leading);
}
:is(.tahoe-shell,.tahoe-portal) .tk-banner .corpo,
:is(.tahoe-shell,.tahoe-portal) .prest-banner .corpo{
  font-size:var(--type-body-size);font-weight:var(--type-body-weight);line-height:var(--type-body-leading);
}
:is(.tahoe-shell,.tahoe-portal) .tk-banner[data-tom="neutro"],
:is(.tahoe-shell,.tahoe-portal) .prest-banner[data-tom="neutro"]{background:var(--bg-soft);color:inherit;box-shadow:inset 0 0 0 1px var(--border);}
:is(.tahoe-shell,.tahoe-portal) .tk-banner[data-tom="neutro"] > svg,
:is(.tahoe-shell,.tahoe-portal) .prest-banner[data-tom="neutro"] > svg{color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .tk-banner[data-tom="sucesso"],
:is(.tahoe-shell,.tahoe-portal) .prest-banner[data-tom="sucesso"]{background:var(--success-soft);color:var(--success-fg);box-shadow:inset 0 0 0 1px var(--success-border);}
:is(.tahoe-shell,.tahoe-portal) .tk-banner[data-tom="aviso"],
:is(.tahoe-shell,.tahoe-portal) .prest-banner[data-tom="aviso"]{background:var(--warning-soft);color:var(--warning-fg);box-shadow:inset 0 0 0 1px var(--warning-border);}
:is(.tahoe-shell,.tahoe-portal) .tk-banner[data-tom="erro"],
:is(.tahoe-shell,.tahoe-portal) .prest-banner[data-tom="erro"]{background:var(--danger-soft);color:var(--danger-fg);box-shadow:inset 0 0 0 1px var(--danger-border);}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .tk-banner,
  :is(.tahoe-shell,.tahoe-portal) .prest-banner{flex-wrap:wrap;}
  :is(.tahoe-shell,.tahoe-portal) .tk-banner .tk-acoes,
  :is(.tahoe-shell,.tahoe-portal) .prest-banner .prest-acoes{width:100%;}
}

/* ─────────── Indicador de progresso ───────────
   <ol class="tk-etapas"> com um <li class="tk-etapa"> por nó, na ordem
   do fluxo; o desfecho (.desfecho) é o último nó e não leva número. Na
   Prestação: 1 Conciliação · 2 Montagem · 3 Aprovação · Publicada.
   Estado em data-estado: concluida | atual | bloqueada | futura. O nó atual
   leva aria-current="step". Bloqueada diz o motivo no .sub, sempre.
   Horizontal por padrão; `.vertical` para coluna lateral. Abaixo de 768px o
   horizontal vira a forma compacta: barra de segmentos + só o nó atual. */
:is(.tahoe-shell,.tahoe-portal) .tk-etapas,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas{
  list-style:none;margin:0;padding:0;display:flex;align-items:flex-start;gap:var(--space-2);min-width:0;
}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa{display:flex;align-items:flex-start;gap:var(--space-2);flex:1 1 0;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa:last-child,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa:last-child{flex:0 1 auto;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa .marca{
  width:28px;height:28px;border-radius:var(--radius-pill);flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--type-num-font);font-size:var(--type-meta-size);font-weight:600;font-variant-numeric:var(--type-num-variant);
  background:var(--bg);color:var(--fg-muted);box-shadow:inset 0 0 0 1.5px var(--border-strong);
}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa .marca svg,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa .marca svg{width:14px;height:14px;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa .txt,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa .txt{display:flex;flex-direction:column;gap:2px;min-width:0;padding-top:4px;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa .nome{
  font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:500;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa .sub,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa .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) .tk-etapa .sub svg,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa .sub svg{width:12px;height:12px;vertical-align:-2px;margin-right:2px;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa .pos,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa .pos{display:none;}
/* Conector: ocupa o resto do nó, na altura do centro da marca. */
:is(.tahoe-shell,.tahoe-portal) .tk-etapa:not(:last-child)::after,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa:not(:last-child)::after{
  content:"";flex:1 1 16px;min-width:16px;height:2px;margin-top:13px;border-radius:2px;
  background:var(--border);
}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="concluida"] .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="concluida"] .marca{background:var(--success);color:var(--fg-inverse);box-shadow:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="concluida"]::after,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="concluida"]::after{background:var(--success);}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="concluida"] .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="concluida"] .nome{color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="atual"] .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="atual"] .marca{background:var(--link);color:var(--fg-inverse);box-shadow:0 0 0 4px var(--link-soft);}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="atual"] .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="atual"] .nome{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="bloqueada"] .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="bloqueada"] .marca{background:var(--bg-soft);color:var(--fg-muted);box-shadow:inset 0 0 0 1.5px var(--border-strong);}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="bloqueada"] .sub,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="bloqueada"] .sub{color:var(--warning-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="futura"] .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="futura"] .nome{color:var(--fg-muted);}
/* Marca de rejeição (data-marca="rejeitada"): o fluxo voltou para esta
   etapa, e isso não some. */
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-marca="rejeitada"] .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-marca="rejeitada"] .nome{color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-marca="rejeitada"] .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-marca="rejeitada"] .marca{box-shadow:0 0 0 4px var(--danger-soft);background:var(--danger);}
/* O desfecho não é número: é um selo. */
:is(.tahoe-shell,.tahoe-portal) .tk-etapa.desfecho .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa.desfecho .marca{border-radius:var(--radius-sm);}

/* Vertical — marca à esquerda, conector descendo entre as marcas. */
:is(.tahoe-shell,.tahoe-portal) .tk-etapas.vertical,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas.vertical{flex-direction:column;gap:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapas.vertical .tk-etapa,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas.vertical .prest-etapa{flex:none;width:100%;position:relative;padding-bottom:var(--space-4);}
:is(.tahoe-shell,.tahoe-portal) .tk-etapas.vertical .tk-etapa:last-child,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas.vertical .prest-etapa:last-child{padding-bottom:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapas.vertical .tk-etapa:not(:last-child)::after,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas.vertical .prest-etapa:not(:last-child)::after{
  position:absolute;left:13px;top:32px;bottom:4px;width:2px;height:auto;min-width:0;margin:0;
}
:is(.tahoe-shell,.tahoe-portal) .tk-etapas.vertical .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas.vertical .nome{white-space:normal;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapas.vertical a.tk-etapa,
:is(.tahoe-shell,.tahoe-portal) .tk-etapas.vertical .tk-etapa > a,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas.vertical a.prest-etapa,
:is(.tahoe-shell,.tahoe-portal) .prest-etapas.vertical .prest-etapa > a{color:inherit;text-decoration:none;}

@media (max-width:767.98px){
  /* Compacta: o <li> some como caixa (display:contents) e marca/txt viram
     itens do grid — as marcas preenchem a linha 1 como segmentos, o texto do
     nó atual ocupa a linha 2 inteira. Os outros textos saem. */
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical),
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical){
    display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:4px;row-gap:var(--space-2);
  }
  /* Quatro nós (a sequência de hoje); os cinco ficam para as direções A e B,
     desenhadas antes de a assinatura sair da sequência. */
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical):has(> .tk-etapa:nth-child(4):last-child),
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical):has(> .prest-etapa:nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr));}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) .tk-etapa,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) .prest-etapa{display:contents;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) .tk-etapa::after,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) .prest-etapa::after{content:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) .marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) .marca{
    width:auto;height:6px;border-radius:var(--radius-pill);font-size:0;box-shadow:none;background:var(--border);
  }
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) .marca svg,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) .marca svg{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) [data-estado="concluida"] .marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) [data-estado="concluida"] .marca{background:var(--success);}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) [data-estado="atual"] .marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) [data-estado="atual"] .marca{background:var(--link);box-shadow:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) [data-marca="rejeitada"] .marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) [data-marca="rejeitada"] .marca{background:var(--danger);box-shadow:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) .txt,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) .txt{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) [aria-current="step"] .txt,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) [aria-current="step"] .txt{display:flex;grid-row:2;grid-column:1 / -1;padding-top:0;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) .pos,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) .pos{display:inline;color:var(--fg-muted);font-weight:500;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapas:not(.vertical) .nome,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapas:not(.vertical) .nome{white-space:normal;}
}

/* ─────────── Menu (overflow) ───────────
   Popover que nasce do gatilho: transform-origin no canto do botão. O JS
   posiciona acima quando falta espaço embaixo (.acima) e alinha à esquerda
   quando falta à direita (.esquerda). */
:is(.tahoe-shell,.tahoe-portal) .tk-menu,
:is(.tahoe-shell,.tahoe-portal) .prest-menu{position:relative;display:inline-flex;}
:is(.tahoe-shell,.tahoe-portal) .tk-menu-pop,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-pop{
  position:absolute;top:calc(100% + 6px);right:0;z-index:80;min-width:240px;max-width:min(320px, calc(100vw - 32px));
  padding:6px;border-radius:var(--radius-md);background:var(--bg);
  box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-3);
  transform-origin:top right;opacity:0;visibility:hidden;transform:scale(0.96);
  pointer-events:none;  /* fechando, ainda visível por 420ms: não recebe toque */
  transition:opacity var(--tk-fade) ease, transform var(--tk-mola-dur) var(--tk-mola), visibility 0s linear var(--tk-mola-dur);
}
:is(.tahoe-shell,.tahoe-portal) .tk-menu.acima .tk-menu-pop,
:is(.tahoe-shell,.tahoe-portal) .prest-menu.acima .prest-menu-pop{top:auto;bottom:calc(100% + 6px);transform-origin:bottom right;}
:is(.tahoe-shell,.tahoe-portal) .tk-menu.esquerda .tk-menu-pop,
:is(.tahoe-shell,.tahoe-portal) .prest-menu.esquerda .prest-menu-pop{right:auto;left:0;transform-origin:top left;}
:is(.tahoe-shell,.tahoe-portal) .tk-menu.acima.esquerda .tk-menu-pop,
:is(.tahoe-shell,.tahoe-portal) .prest-menu.acima.esquerda .prest-menu-pop{transform-origin:bottom left;}
:is(.tahoe-shell,.tahoe-portal) .tk-menu.aberto .tk-menu-pop,
:is(.tahoe-shell,.tahoe-portal) .prest-menu.aberto .prest-menu-pop{
  opacity:1;visibility:visible;transform:none;pointer-events:auto;
  transition:opacity var(--tk-fade) ease, transform var(--tk-mola-dur) var(--tk-mola);
}
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item{
  display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:36px;padding:0 var(--space-3);
  border:0;border-radius:var(--radius-sm);background:transparent;cursor:pointer;text-align:left;text-decoration:none;
  font-family:var(--type-body-font);font-size:var(--type-body-size);line-height:var(--type-body-leading);color:inherit;
}
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item svg,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item svg{width:16px;height:16px;color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item:hover,
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item:focus-visible{background:var(--tk-lavado);outline:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item.perigo,
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item.perigo svg,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item.perigo,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item.perigo svg{color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item[aria-disabled="true"],
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item[aria-disabled="true"]{color:var(--fg-subtle);cursor:not-allowed;background:transparent;}
:is(.tahoe-shell,.tahoe-portal) .tk-menu-sep,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-sep{height:1px;margin:6px var(--space-2);background:var(--hairline-section);}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .tk-menu-item,
  :is(.tahoe-shell,.tahoe-portal) .prest-menu-item{min-height:44px;}
}

/* ─────────── Diálogo → sheet ───────────
   <dialog class="tk-dialog">, aberto por showModal() via componentes.js
   (foco preso, Esc e ::backdrop são do navegador). Desktop: centrado, nasce
   do gatilho (--tk-origem vem do JS). Abaixo de 768px: sheet de baixo, e
   sai pelo mesmo caminho. prefers-reduced-motion: só cross-fade. */
:is(.tahoe-shell,.tahoe-portal) .tk-dialog,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog{
  width:min(480px, calc(100vw - 32px));max-height:calc(100vh - 64px);padding:0;border:0;
  border-radius:var(--radius-lg);background:var(--bg);color:inherit;overflow:auto;
  font-family:var(--type-body-font);font-size:var(--type-body-size);line-height:var(--type-body-leading);
  box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-4);
  opacity:0;transform:scale(0.96);transform-origin:var(--tk-origem, var(--prest-origem, 50% 50%));
  transition:opacity var(--tk-fade) ease, transform var(--tk-mola-dur) var(--tk-mola);
}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog.largo,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog.largo{width:min(640px, calc(100vw - 32px));}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog.aberto,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog.aberto{opacity:1;transform:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog::backdrop,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog::backdrop{background:transparent;transition:background-color var(--tk-fade) ease;}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog.aberto::backdrop,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog.aberto::backdrop{background:var(--tk-veu);}
/* Saída: o diálogo já foi fechado (a página recebe entrada) e é desenhado
   como não-modal, fixo onde estava, sem ponteiro. O véu, que o ::backdrop
   não tem fora do modo modal, é uma sombra de 200vmax que esmaece junto. */
:is(.tahoe-shell,.tahoe-portal) .tk-dialog.saindo,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog.saindo{
  position:fixed;inset:0;margin:auto;z-index:90;pointer-events:none;
  box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-4), 0 0 0 200vmax transparent;
  transition:opacity var(--tk-fade) ease, transform var(--tk-mola-dur) var(--tk-mola), box-shadow var(--tk-fade) ease;
}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog.saindo.aberto,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog.saindo.aberto{box-shadow:0 0 0 1px var(--hairline-section), var(--shadow-4), 0 0 0 200vmax var(--tk-veu);}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog-h,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog-h{
  display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-3);
}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog-h h2,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog-h h2{
  flex:1;min-width:0;margin:0;padding-top:6px;
  font-family:var(--type-title-font);font-size:var(--type-title-size);font-weight:var(--type-title-weight);
  line-height:var(--type-title-leading);letter-spacing:var(--type-title-tracking);
}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog-h .tk-btn.icone,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog-h .prest-btn.icone{margin:-2px -8px 0 0;}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog-corpo,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog-corpo{padding:0 var(--space-5) var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog-corpo p,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog-corpo p{margin:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-dialog-acoes,
:is(.tahoe-shell,.tahoe-portal) .prest-dialog-acoes{
  display:flex;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;
  padding:var(--space-3) var(--space-5) var(--space-5);
  /* Diálogo longo rola por dentro; a decisão fica à vista, presa embaixo. */
  position:sticky;bottom:0;background:var(--bg);
}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog,
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog.largo,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog.largo{
    width:100%;max-width:100%;max-height:calc(100dvh - 48px);margin:auto 0 0;
    border-radius:var(--radius-lg) var(--radius-lg) 0 0;
    padding-bottom:env(safe-area-inset-bottom);
    opacity:1;transform:translateY(100%);
  }
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog.aberto,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog.aberto{transform:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog-h,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog-h{padding:var(--space-4) var(--space-4) var(--space-3);}
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog-corpo,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog-corpo{padding:0 var(--space-4) var(--space-4);}
  /* Ações em coluna, primária por cima — polegar alcança a de cima primeiro. */
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog-acoes,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog-acoes{
    flex-direction:column-reverse;padding:var(--space-3) var(--space-4) var(--space-4);
    box-shadow:0 -1px 0 var(--hairline-section);
  }
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog-acoes .tk-btn,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog-acoes .prest-btn{width:100%;}
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog.saindo,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog.saindo{margin:auto 0 0;}
}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog,
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog.largo,
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog.aberto,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog.largo,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog.aberto{transform:none;transition:opacity 200ms ease;}
  /* :not(.aberto) e a variante .largo explícita: a regra do sheet no celular
     tem .largo no seletor (0,3,0) e ganharia de um .tk-dialog solto. */
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog:not(.aberto),
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog.largo:not(.aberto),
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog:not(.aberto),
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog.largo:not(.aberto){opacity:0;}
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog.aberto,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog.aberto{opacity:1;}
  :is(.tahoe-shell,.tahoe-portal) .tk-menu-pop,
  :is(.tahoe-shell,.tahoe-portal) .tk-menu.aberto .tk-menu-pop,
  :is(.tahoe-shell,.tahoe-portal) .prest-menu-pop,
  :is(.tahoe-shell,.tahoe-portal) .prest-menu.aberto .prest-menu-pop{transform:none;}
}

/* ─────────── Campo e select ─────────── */
:is(.tahoe-shell,.tahoe-portal) .tk-campo,
:is(.tahoe-shell,.tahoe-portal) .prest-campo{display:flex;flex-direction:column;gap:6px;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-campo > label,
:is(.tahoe-shell,.tahoe-portal) .tk-campo > .rotulo,
:is(.tahoe-shell,.tahoe-portal) .prest-campo > label,
:is(.tahoe-shell,.tahoe-portal) .prest-campo > .rotulo{
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);font-weight:600;color:var(--fg-muted);
}
:is(.tahoe-shell,.tahoe-portal) .tk-select,
:is(.tahoe-shell,.tahoe-portal) .prest-select{position:relative;display:flex;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-select select,
:is(.tahoe-shell,.tahoe-portal) .tk-input,
:is(.tahoe-shell,.tahoe-portal) .prest-select select,
:is(.tahoe-shell,.tahoe-portal) .prest-input{
  appearance:none;-webkit-appearance:none;width:100%;min-height:var(--tk-alvo);
  padding:0 36px 0 var(--space-3);border:0;border-radius:var(--radius-sm);
  background:var(--bg);color:inherit;box-shadow:inset 0 0 0 1px var(--border-strong);
  font-family:var(--type-body-font);font-size:var(--type-body-size);line-height:var(--type-body-leading);cursor:pointer;
}
:is(.tahoe-shell,.tahoe-portal) .tk-input,
:is(.tahoe-shell,.tahoe-portal) .prest-input{padding-right:var(--space-3);cursor:text;}
:is(.tahoe-shell,.tahoe-portal) .tk-select svg,
:is(.tahoe-shell,.tahoe-portal) .prest-select svg{position:absolute;right:12px;top:50%;width:16px;height:16px;margin-top:-8px;pointer-events:none;color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .tk-select select:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .tk-input:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-select select:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-input:focus-visible{outline:2px solid var(--link);outline-offset:1px;}
@media (max-width:767.98px){
  /* 16px no campo impede o zoom automático do iOS ao focar. */
  :is(.tahoe-shell,.tahoe-portal) .tk-select select,
  :is(.tahoe-shell,.tahoe-portal) .tk-input,
  :is(.tahoe-shell,.tahoe-portal) .prest-select select,
  :is(.tahoe-shell,.tahoe-portal) .prest-input{font-size:var(--type-title-size);}
}
/* Só esconde, nunca define display: o elemento mantém o display do próprio
   componente (um .tk-btn continua inline-flex). !important porque estas
   classes convivem com a do componente no mesmo elemento e precisam ganhar
   dela sem depender da ordem do arquivo. */
@media (min-width:768px){
  :is(.tahoe-shell,.tahoe-portal) .tk-so-celular,
  :is(.tahoe-shell,.tahoe-portal) .prest-so-celular{display:none !important;}
}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .tk-so-desktop,
  :is(.tahoe-shell,.tahoe-portal) .prest-so-desktop{display:none !important;}
}

/* ─────────── Estados de tela ───────────
   Carregando, erro e vazio são TRÊS coisas. Erro de carregamento nunca se
   apresenta como vazio: tem ícone de erro, diz o que falhou e oferece
   "Tentar de novo". */
:is(.tahoe-shell,.tahoe-portal) .tk-sk,
:is(.tahoe-shell,.tahoe-portal) .prest-sk{display:flex;flex-direction:column;gap:var(--space-3);}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-linha,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-linha{
  height:12px;border-radius:var(--radius-pill);
  background:linear-gradient(90deg, var(--bg-soft) 0%, var(--tk-lavado-forte) 50%, var(--bg-soft) 100%);
  background-size:300% 100%;animation:tk-brilho 1.6s ease-in-out infinite;
}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-linha.alta,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-linha.alta{height:20px;width:40%;}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-linha.curta,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-linha.curta{width:30%;}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-linha.media,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-linha.media{width:60%;}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-bloco,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-bloco{height:56px;border-radius:var(--radius-md);background:var(--bg-soft);animation:tk-pulso 1.6s ease-in-out infinite;}
/* Linha de lista carregando: marca + duas linhas, na altura da linha real. */
:is(.tahoe-shell,.tahoe-portal) .tk-sk-item,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-item{display:flex;align-items:center;gap:var(--space-3);min-height:56px;}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-item + .tk-sk-item,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-item + .prest-sk-item{box-shadow:inset 0 1px 0 var(--hairline-row);}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-marca,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-marca{width:34px;height:34px;border-radius:var(--radius-sm);flex:none;background:var(--bg-soft);animation:tk-pulso 1.6s ease-in-out infinite;}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-item .tk-sk,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-item .prest-sk{flex:1;gap:var(--space-2);}
@keyframes tk-brilho{0%{background-position:100% 0;}100%{background-position:0 0;}}
@keyframes prest-brilho{0%{background-position:100% 0;}100%{background-position:0 0;}}
@keyframes tk-pulso{0%,100%{opacity:1;}50%{opacity:0.6;}}
@keyframes prest-pulso{0%,100%{opacity:1;}50%{opacity:0.6;}}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .tk-sk-linha,
  :is(.tahoe-shell,.tahoe-portal) .tk-sk-bloco,
  :is(.tahoe-shell,.tahoe-portal) .tk-sk-marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-linha,
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-bloco,
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-marca{animation:none;}
}

:is(.tahoe-shell,.tahoe-portal) .tk-estado,
:is(.tahoe-shell,.tahoe-portal) .prest-estado{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);
  padding:var(--space-7) var(--space-4);
}
:is(.tahoe-shell,.tahoe-portal) .tk-estado .ic,
:is(.tahoe-shell,.tahoe-portal) .prest-estado .ic{
  width:44px;height:44px;border-radius:var(--radius-pill);
  display:inline-flex;align-items:center;justify-content:center;background:var(--bg-soft);color:var(--fg-muted);
}
:is(.tahoe-shell,.tahoe-portal) .tk-estado .ic svg,
:is(.tahoe-shell,.tahoe-portal) .prest-estado .ic svg{width:22px;height:22px;}
:is(.tahoe-shell,.tahoe-portal) .tk-estado h3,
:is(.tahoe-shell,.tahoe-portal) .prest-estado h3{
  margin:0;font-size:var(--type-title-size);font-weight:var(--type-title-weight);
  line-height:var(--type-title-leading);letter-spacing:var(--type-title-tracking);
}
:is(.tahoe-shell,.tahoe-portal) .tk-estado p,
:is(.tahoe-shell,.tahoe-portal) .prest-estado p{
  margin:0;max-width:420px;color:var(--fg-muted);
  font-size:var(--type-body-size);line-height:var(--type-body-leading);
}
:is(.tahoe-shell,.tahoe-portal) .tk-estado .tk-acoes,
:is(.tahoe-shell,.tahoe-portal) .prest-estado .prest-acoes{margin-top:var(--space-2);justify-content:center;}
:is(.tahoe-shell,.tahoe-portal) .tk-estado.erro .ic,
:is(.tahoe-shell,.tahoe-portal) .prest-estado.erro .ic{background:var(--danger-soft);color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-estado .detalhe-erro,
:is(.tahoe-shell,.tahoe-portal) .prest-estado .detalhe-erro{
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg-muted);
}

/* ═══════════ Regras de disposição (28/09/2026) ═══════════
   Viraram regra do componente depois da auditoria mobile da direção C;
   contrato em docs/prestacao-redesenho.md, "Regras de disposição". As
   letras são as da auditoria. A e F valem abaixo de 1100px / no celular;
   B, C, D, E, G, H e I valem em qualquer largura.

   G · escala vertical fixa: 8 dentro do item, 16 entre blocos, 24 entre
   seções. Fora da escala só o espaço tipográfico dentro de um mesmo texto
   (nome→meta, título→corpo, rótulo→campo: 2px/entrelinha); entre dois
   itens distintos, sempre a escala. */
:is(.tahoe-shell,.tahoe-portal){--prest-v-item:var(--space-2);--tk-v-item:var(--prest-v-item);--prest-v-bloco:var(--space-4);--tk-v-bloco:var(--prest-v-bloco);--prest-v-secao:var(--space-5);--tk-v-secao:var(--prest-v-secao);}

/* H · status com ícone usa recuo pendurado: a 2ª linha alinha com o texto,
   não com o ícone (14px de ícone + 6px de respiro). */
:is(.tahoe-shell,.tahoe-portal) .tk-status:has(> svg:first-child),
:is(.tahoe-shell,.tahoe-portal) .prest-status:has(> svg:first-child){padding-left:20px;text-indent:-20px;}

/* B · um nível de superfície dentro do card: o contêiner do grupo (lista
   agrupada, abaixo). Nada de caixa cinza em volta de blocos soltos nem card
   com borda dentro do card. */
:is(.tahoe-shell,.tahoe-portal) .tk-secoes,
:is(.tahoe-shell,.tahoe-portal) .prest-secoes{display:flex;flex-direction:column;gap:var(--tk-v-secao);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-secoes[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-secoes[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-grupo,
:is(.tahoe-shell,.tahoe-portal) .prest-grupo{display:flex;flex-direction:column;gap:var(--tk-v-item);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-grupo[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-grupo[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-grupo-h,
:is(.tahoe-shell,.tahoe-portal) .prest-grupo-h{display:flex;align-items:baseline;gap:var(--space-2);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-grupo-t,
:is(.tahoe-shell,.tahoe-portal) .prest-grupo-t{
  margin:0;font-size:var(--type-meta-size);line-height:var(--type-meta-leading);letter-spacing:var(--type-meta-tracking);
  font-weight:600;color:var(--fg-muted);
}
:is(.tahoe-shell,.tahoe-portal) .tk-grupo-h .cont,
:is(.tahoe-shell,.tahoe-portal) .prest-grupo-h .cont{margin-left:auto;font-size:var(--type-meta-size);line-height:var(--type-meta-leading);color:var(--fg-muted);}

/* B · LISTA AGRUPADA (revista em 28/09/2026, retorno do Leandro: "cada
   item está um sobre o outro… não tem uma separação clara"). Fio fino como
   único divisor é proibido; card por item também sai. Cada GRUPO é um
   contêiner só (.tk-linhas, ou .tk-caixa para listas que não são de
   linhas-ação): fundo de superfície secundária sobre o card branco, cantos
   do kit, sem borda. O rótulo do grupo fica FORA e acima (.tk-grupo-h).
   Dentro, linhas de ≥56px, tudo no mesmo centro vertical, separadas por um
   divisor INSET que começa no eixo do texto (--tk-eixo). Quem define o
   item é o contêiner + o respiro da linha; o divisor é secundário. Linha
   tocável ganha fundo no hover/pressionado — é o que diz "isto é um item".
   Continua sendo um nível de superfície dentro do card.
   E · a linha inteira é o alvo (.tk-linha-alvo estica por ::after); a
   ação principal fica à direita do nome; o resto num ⋯ da linha;
   destrutivo nunca como ícone solto.
   D · um eixo: ícone numa coluna, texto e ação principal na seguinte. */
:is(.tahoe-shell,.tahoe-portal) .tk-linhas,
:is(.tahoe-shell,.tahoe-portal) .tk-caixa,
:is(.tahoe-shell,.tahoe-portal) .prest-linhas,
:is(.tahoe-shell,.tahoe-portal) .prest-caixa{
  list-style:none;margin:0;padding:var(--space-1);display:flex;flex-direction:column;min-width:0;
  border-radius:var(--radius-md);background:var(--bg-soft);
}
:is(.tahoe-shell,.tahoe-portal) .tk-linhas,
:is(.tahoe-shell,.tahoe-portal) .prest-linhas{container:tk-linhas prest-linhas / inline-size;}
:is(.tahoe-shell,.tahoe-portal) .tk-linhas[hidden],
:is(.tahoe-shell,.tahoe-portal) .tk-caixa[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-linhas[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-caixa[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha,
:is(.tahoe-shell,.tahoe-portal) .prest-linha{
  /* Eixo do texto a partir da borda interna da linha: padding + ícone de
     20px + respiro. É onde o divisor começa. */
  --prest-eixo:calc(var(--space-3) + 20px + var(--space-3));--tk-eixo:var(--prest-eixo);
  /* A 4ª coluna (⋯ ou ↗) tem sempre a largura do alvo: a ação principal
     termina no mesmo x em toda linha, com ou sem ⋯. */
  position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto minmax(var(--tk-alvo),auto);align-items:center;
  column-gap:var(--space-3);row-gap:var(--tk-v-item);min-height:56px;padding:var(--space-2) var(--space-3);
  border-radius:var(--radius-sm);transition:background-color 120ms ease;
}
:is(.tahoe-shell,.tahoe-portal) .tk-linha:has(> .av),
:is(.tahoe-shell,.tahoe-portal) .prest-linha:has(> .av){--prest-eixo:calc(var(--space-3) + 32px + var(--space-3));--tk-eixo:var(--prest-eixo);}
:is(.tahoe-shell,.tahoe-portal) .tk-linha:not(:has(> .ic, > .av)),
:is(.tahoe-shell,.tahoe-portal) .prest-linha:not(:has(> .ic, > .av)){--prest-eixo:var(--space-3);--tk-eixo:var(--prest-eixo);}
:is(.tahoe-shell,.tahoe-portal) .tk-linha[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-linha[hidden]{display:none;}
/* Divisor inset só entre linhas VISÍVEIS (com + a primeira visível herdava
   o fio de uma irmã escondida por data-quando). Some ao lado da linha em
   hover, como nas listas agrupadas do iOS. */
:is(.tahoe-shell,.tahoe-portal) .tk-linhas > .tk-linha:not([hidden]) ~ .tk-linha::before,
:is(.tahoe-shell,.tahoe-portal) .tk-caixa > li:not([hidden]) ~ li::before,
:is(.tahoe-shell,.tahoe-portal) .prest-linhas > .prest-linha:not([hidden]) ~ .prest-linha::before,
:is(.tahoe-shell,.tahoe-portal) .prest-caixa > li:not([hidden]) ~ li::before{
  content:"";position:absolute;top:0;left:var(--tk-eixo);right:var(--space-3);height:1px;background:var(--border);pointer-events:none;
}
:is(.tahoe-shell,.tahoe-portal) .tk-linha:has(.tk-linha-alvo):hover::before,
:is(.tahoe-shell,.tahoe-portal) .tk-linha:has(.tk-linha-alvo):hover + .tk-linha::before,
:is(.tahoe-shell,.tahoe-portal) .prest-linha:has(.prest-linha-alvo):hover::before,
:is(.tahoe-shell,.tahoe-portal) .prest-linha:has(.prest-linha-alvo):hover + .prest-linha::before{opacity:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha > .ic,
:is(.tahoe-shell,.tahoe-portal) .tk-linha > .av,
:is(.tahoe-shell,.tahoe-portal) .prest-linha > .ic,
:is(.tahoe-shell,.tahoe-portal) .prest-linha > .av{grid-column:1;grid-row:1;display:inline-flex;color:var(--fg-muted);}
:is(.tahoe-shell,.tahoe-portal) .tk-linha > .ic svg,
:is(.tahoe-shell,.tahoe-portal) .prest-linha > .ic svg{width:20px;height:20px;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha[data-tom="sucesso"] > .ic,
:is(.tahoe-shell,.tahoe-portal) .prest-linha[data-tom="sucesso"] > .ic{color:var(--success);}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-txt,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-txt{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:2px;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha:not(:has(> .ic, > .av)) .tk-linha-txt,
:is(.tahoe-shell,.tahoe-portal) .prest-linha:not(:has(> .ic, > .av)) .prest-linha-txt{grid-column:1 / 3;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-nome,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-nome{
  font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:500;color:var(--fg);
  overflow-wrap:anywhere;text-decoration:none;
}
:is(.tahoe-shell,.tahoe-portal) button.tk-linha-nome,
:is(.tahoe-shell,.tahoe-portal) button.prest-linha-nome{padding:0;border:0;background:none;text-align:left;font-family:inherit;cursor:pointer;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-meta,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-meta{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) .tk-linha-alvo::after,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-alvo::after{content:"";position:absolute;inset:0;border-radius:var(--radius-sm);}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-alvo:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-alvo:focus-visible{outline:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-alvo:focus-visible::after,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-alvo:focus-visible::after{outline:2px solid var(--link);outline-offset:-2px;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha:has(.tk-linha-alvo):hover,
:is(.tahoe-shell,.tahoe-portal) .prest-linha:has(.prest-linha-alvo):hover{background-color:var(--tk-lavado);}
:is(.tahoe-shell,.tahoe-portal) .tk-linha:has(.tk-linha-alvo):active,
:is(.tahoe-shell,.tahoe-portal) .prest-linha:has(.prest-linha-alvo):active{background-color:var(--tk-lavado-forte);}
/* "Adicionar …" é a última linha do grupo, dentro do contêiner. */
:is(.tahoe-shell,.tahoe-portal) .tk-linha-add > .ic,
:is(.tahoe-shell,.tahoe-portal) .tk-linha-add .tk-linha-nome,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-add > .ic,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-add .prest-linha-nome{color:var(--link);}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-principal,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-principal{grid-column:3;grid-row:1;position:relative;z-index:1;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-menu,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-menu{grid-column:4;grid-row:1;position:relative;z-index:2;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-menu[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-linha-menu[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-acao-fim,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-acao-fim{grid-column:4;grid-row:1;position:relative;z-index:1;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-fim,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-fim{grid-column:4;grid-row:1;display:inline-flex;align-items:center;justify-content:center;color:var(--fg-muted);pointer-events:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-linha-fim svg,
:is(.tahoe-shell,.tahoe-portal) .prest-linha-fim svg{width:16px;height:16px;}
/* Linha de lista que não é de ação (portões, estágios): mesmo respiro e
   mesmo divisor inset. */
:is(.tahoe-shell,.tahoe-portal) .tk-caixa > li,
:is(.tahoe-shell,.tahoe-portal) .prest-caixa > li{--prest-eixo:calc(var(--space-3) + 20px + var(--space-3));--tk-eixo:var(--prest-eixo);position:relative;padding:var(--space-3);}
@container tk-linhas (max-width:520px){
  :is(.tahoe-shell,.tahoe-portal) .tk-linha,
  :is(.tahoe-shell,.tahoe-portal) .prest-linha{grid-template-columns:auto minmax(0,1fr) auto auto;}
  /* A ação principal fica à direita do nome também no estreito, compacta
     (rótulo curto, ≥44px de alvo). */
  :is(.tahoe-shell,.tahoe-portal) .tk-linha-principal,
  :is(.tahoe-shell,.tahoe-portal) .prest-linha-principal{padding:0 var(--space-3);}
  :is(.tahoe-shell,.tahoe-portal) .tk-linha-menu,
  :is(.tahoe-shell,.tahoe-portal) .prest-linha-menu{margin:-10px -10px -10px 0;}
}
/* Painel estreito (celular, ≤340px de lista): a ação vira só ícone, 44×44, com
   o nome no aria-label — o texto do documento fica com a largura. */
@container tk-linhas (max-width:340px){
  :is(.tahoe-shell,.tahoe-portal) .tk-linha-principal,
  :is(.tahoe-shell,.tahoe-portal) .prest-linha-principal{width:var(--tk-alvo);padding:0;}
  :is(.tahoe-shell,.tahoe-portal) .tk-linha-principal > :not(svg),
  :is(.tahoe-shell,.tahoe-portal) .prest-linha-principal > :not(svg){display:none;}
}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .tk-linha,
  :is(.tahoe-shell,.tahoe-portal) .prest-linha{transition:none;}
}


/* Link dentro de frase (ex.: "Ver despesas" no portão): texto, não botão;
   alvo de toque ampliado por ::before, sem mexer na linha. */
:is(.tahoe-shell,.tahoe-portal) .tk-link,
:is(.tahoe-shell,.tahoe-portal) .prest-link{
  position:relative;display:inline;padding:0;border:0;background:none;cursor:pointer;
  font:inherit;font-weight:600;color:var(--link);text-decoration:underline;text-underline-offset:2px;white-space:nowrap;
}
/* Ampliado até 12px para cima e para baixo: cabe no padding das linhas
   (12px), sem invadir a vizinha; em texto de 14px dá 20 + 24 = 44px. */
:is(.tahoe-shell,.tahoe-portal) .tk-link::before,
:is(.tahoe-shell,.tahoe-portal) .prest-link::before{content:"";position:absolute;inset:-12px -4px;}
:is(.tahoe-shell,.tahoe-portal) .tk-link:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-link:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:2px;}
/* D · terciário alinhado pelo texto do bloco, sem o recuo do padding. */
:is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario.tk-no-eixo,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario.prest-no-eixo{margin-left:calc(-1 * var(--space-4));gap:var(--space-3);}
/* Com ícone, ele ocupa a coluna de ícone das .tk-linha (20px + 12px):
   o rótulo começa no mesmo x do texto das linhas. */
:is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario.tk-no-eixo svg,
:is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario.prest-no-eixo svg{width:20px;height:20px;}

/* B · disclosure sem caixa: o resumo é um link de rótulo com chevron. */
:is(.tahoe-shell,.tahoe-portal) .tk-disc,
:is(.tahoe-shell,.tahoe-portal) .prest-disc{min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-disc[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-disc[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-disc > summary,
:is(.tahoe-shell,.tahoe-portal) .prest-disc > summary{
  list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:var(--tk-alvo);cursor:pointer;
  font-family:var(--type-label-font);font-size:var(--type-label-size);font-weight:var(--type-label-weight);
  line-height:var(--type-label-leading);letter-spacing:var(--type-label-tracking);color:var(--link);border-radius:var(--radius-sm);
}
:is(.tahoe-shell,.tahoe-portal) .tk-disc > summary::-webkit-details-marker,
:is(.tahoe-shell,.tahoe-portal) .prest-disc > summary::-webkit-details-marker{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-disc > summary:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-disc > summary:hover{text-decoration:underline;}
:is(.tahoe-shell,.tahoe-portal) .tk-disc > summary:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-disc > summary:focus-visible{outline:2px solid var(--link);outline-offset:2px;}
:is(.tahoe-shell,.tahoe-portal) .tk-disc > summary svg,
:is(.tahoe-shell,.tahoe-portal) .prest-disc > summary svg{width:16px;height:16px;transition:transform 220ms var(--ease-out);}
:is(.tahoe-shell,.tahoe-portal) .tk-disc[open] > summary svg,
:is(.tahoe-shell,.tahoe-portal) .prest-disc[open] > summary svg{transform:rotate(180deg);}
:is(.tahoe-shell,.tahoe-portal) .tk-disc-corpo,
:is(.tahoe-shell,.tahoe-portal) .prest-disc-corpo{display:flex;flex-direction:column;gap:var(--tk-v-item);padding-top:var(--tk-v-item);}
:is(.tahoe-shell,.tahoe-portal) .tk-disc-corpo.tk-secoes,
:is(.tahoe-shell,.tahoe-portal) .prest-disc-corpo.prest-secoes{gap:var(--tk-v-bloco);}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .tk-disc > summary svg,
  :is(.tahoe-shell,.tahoe-portal) .prest-disc > summary svg{transition:none;}
}

/* F · uma primária por etapa, fora de caixas, DEPOIS do que ela depende.
   No celular: largura total (secundária embaixo, mesma largura). `.fixa`
   (presa ao rodapé, respeitando a safe-area e a barra do protótipo via
   --tk-rodape) SÓ em etapa longa — a que passa de uma tela no celular
   e cujo feedback fica todo acima da lista (Conciliação). Etapa curta ou
   com feedback logo antes da primária (aviso de falha da Aprovação) não
   leva .fixa: presa, ela cobria justamente o aviso. */
:is(.tahoe-shell,.tahoe-portal) .tk-primaria,
:is(.tahoe-shell,.tahoe-portal) .prest-primaria{display:flex;flex-direction:column;align-items:flex-start;gap:var(--tk-v-item);min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-primaria[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-primaria[hidden]{display:none;}
@media (max-width:767.98px){
  :is(.tahoe-shell,.tahoe-portal) .tk-primaria,
  :is(.tahoe-shell,.tahoe-portal) .prest-primaria{align-items:stretch;}
  :is(.tahoe-shell,.tahoe-portal) .tk-primaria > .tk-acoes,
  :is(.tahoe-shell,.tahoe-portal) .prest-primaria > .prest-acoes{flex-direction:column;align-items:stretch;}
  :is(.tahoe-shell,.tahoe-portal) .tk-primaria > .tk-acoes > .tk-btn,
  :is(.tahoe-shell,.tahoe-portal) .prest-primaria > .prest-acoes > .prest-btn{width:100%;}
  :is(.tahoe-shell,.tahoe-portal) .tk-primaria.fixa,
  :is(.tahoe-shell,.tahoe-portal) .prest-primaria.fixa{
    position:sticky;bottom:calc(var(--tk-rodape, var(--prest-rodape, 0px)) + env(safe-area-inset-bottom, 0px));z-index:5;
    margin:0 calc(-1 * var(--space-4)) calc(-1 * var(--space-4));padding:var(--space-3) var(--space-4);
    border-radius:0 0 var(--radius-lg) var(--radius-lg);background:var(--bg);box-shadow:0 -1px 0 var(--hairline-section);
  }
}

/* ═══════════ Acessibilidade de entrada e de contraste (28/09/2026) ═══════════
   Auditoria contra a skill apple-design: feedback no instante do toque,
   foco forte no menu, erro inline e os modos de contraste do sistema. */

/* Feedback no toque (pointer-down), sem depender de hover: todo alvo que
   navega ou abre algo escurece ao ser pressionado. */
:is(.tahoe-shell,.tahoe-portal) .tk-disc > summary:active,
:is(.tahoe-shell,.tahoe-portal) .tk-link:active,
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item:active,
:is(.tahoe-shell,.tahoe-portal) .prest-disc > summary:active,
:is(.tahoe-shell,.tahoe-portal) .prest-link:active,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item:active{background-color:var(--tk-lavado-forte);}
:is(.tahoe-shell,.tahoe-portal) .tk-disc > summary,
:is(.tahoe-shell,.tahoe-portal) .prest-disc > summary{padding:0 var(--space-2);margin-left:calc(-1 * var(--space-2));}

/* Foco no item de menu: fundo mais forte que o hover e um anel. */
:is(.tahoe-shell,.tahoe-portal) .tk-menu-item:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-menu-item:focus-visible{
  background:var(--tk-lavado-forte);outline:2px solid var(--link);outline-offset:-2px;
}

/* Erro inline de campo: embaixo dele, com o motivo. */
:is(.tahoe-shell,.tahoe-portal) .tk-campo-erro,
:is(.tahoe-shell,.tahoe-portal) .prest-campo-erro{
  font-size:var(--type-meta-size);line-height:var(--type-meta-leading);letter-spacing:var(--type-meta-tracking);color:var(--danger-fg);
}
:is(.tahoe-shell,.tahoe-portal) .tk-campo-erro[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-campo-erro[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-input[aria-invalid="true"],
:is(.tahoe-shell,.tahoe-portal) .prest-input[aria-invalid="true"]{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft);}

/* prefers-contrast: more — divisores e contornos no degrau forte. */
@media (prefers-contrast:more){
  :is(.tahoe-shell,.tahoe-portal) .tk-btn:not(.primario):not(.terciario),
  :is(.tahoe-shell,.tahoe-portal) .prest-btn:not(.primario):not(.terciario){box-shadow:inset 0 0 0 1px var(--fg-muted);}
  :is(.tahoe-shell,.tahoe-portal) .tk-linhas,
  :is(.tahoe-shell,.tahoe-portal) .tk-caixa,
  :is(.tahoe-shell,.tahoe-portal) .prest-linhas,
  :is(.tahoe-shell,.tahoe-portal) .prest-caixa{background:var(--gray-100);box-shadow:inset 0 0 0 1px var(--border-strong);}
  :is(.tahoe-shell,.tahoe-portal) .tk-linhas > .tk-linha:not([hidden]) ~ .tk-linha::before,
  :is(.tahoe-shell,.tahoe-portal) .tk-caixa > li:not([hidden]) ~ li::before,
  :is(.tahoe-shell,.tahoe-portal) .prest-linhas > .prest-linha:not([hidden]) ~ .prest-linha::before,
  :is(.tahoe-shell,.tahoe-portal) .prest-caixa > li:not([hidden]) ~ li::before{background:var(--border-strong);}
  :is(.tahoe-shell,.tahoe-portal) .tk-status,
  :is(.tahoe-shell,.tahoe-portal) .tk-t-meta,
  :is(.tahoe-shell,.tahoe-portal) .tk-linha-meta,
  :is(.tahoe-shell,.tahoe-portal) .prest-status,
  :is(.tahoe-shell,.tahoe-portal) .prest-t-meta,
  :is(.tahoe-shell,.tahoe-portal) .prest-linha-meta{color:var(--fg);}
  :is(.tahoe-shell,.tahoe-portal) .tk-pill,
  :is(.tahoe-shell,.tahoe-portal) .prest-pill{box-shadow:inset 0 0 0 1px currentColor;}
}

/* forced-colors (Alto Contraste do Windows): o navegador apaga box-shadow,
   que é de onde vinham as bordas de botão, card, grupo, pílula e menu.
   Aqui elas viram borda real, nas cores do sistema. */
@media (forced-colors:active){
  :is(.tahoe-shell,.tahoe-portal) .tk-btn,
  :is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho,
  :is(.tahoe-shell,.tahoe-portal) .prest-btn,
  :is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho{border:1px solid ButtonText;}
  :is(.tahoe-shell,.tahoe-portal) .tk-btn.terciario:not(.icone),
  :is(.tahoe-shell,.tahoe-portal) .prest-btn.terciario:not(.icone){border-color:transparent;}
  :is(.tahoe-shell,.tahoe-portal) .tk-btn[aria-disabled="true"],
  :is(.tahoe-shell,.tahoe-portal) .prest-btn[aria-disabled="true"]{border-color:GrayText;color:GrayText;}
  :is(.tahoe-shell,.tahoe-portal) .tk-linhas,
  :is(.tahoe-shell,.tahoe-portal) .tk-caixa,
  :is(.tahoe-shell,.tahoe-portal) .tk-dialog,
  :is(.tahoe-shell,.tahoe-portal) .tk-menu-pop,
  :is(.tahoe-shell,.tahoe-portal) .tk-pill,
  :is(.tahoe-shell,.tahoe-portal) .tk-aviso,
  :is(.tahoe-shell,.tahoe-portal) .tk-banner,
  :is(.tahoe-shell,.tahoe-portal) .tk-input,
  .tahoe-shell .card,
  :is(.tahoe-shell,.tahoe-portal) .prest-linhas,
  :is(.tahoe-shell,.tahoe-portal) .prest-caixa,
  :is(.tahoe-shell,.tahoe-portal) .prest-dialog,
  :is(.tahoe-shell,.tahoe-portal) .prest-menu-pop,
  :is(.tahoe-shell,.tahoe-portal) .prest-pill,
  :is(.tahoe-shell,.tahoe-portal) .prest-aviso,
  :is(.tahoe-shell,.tahoe-portal) .prest-banner,
  :is(.tahoe-shell,.tahoe-portal) .prest-input{border:1px solid CanvasText;}
  :is(.tahoe-shell,.tahoe-portal) .tk-linhas > .tk-linha:not([hidden]) ~ .tk-linha::before,
  :is(.tahoe-shell,.tahoe-portal) .tk-caixa > li:not([hidden]) ~ li::before,
  :is(.tahoe-shell,.tahoe-portal) .prest-linhas > .prest-linha:not([hidden]) ~ .prest-linha::before,
  :is(.tahoe-shell,.tahoe-portal) .prest-caixa > li:not([hidden]) ~ li::before{background:CanvasText;}
  :is(.tahoe-shell,.tahoe-portal) .tk-etapa .marca,
  :is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-etapa .marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca{border:1px solid CanvasText;}
  /* Seleção e etapa atual não podem depender de fundo. */
  :is(.tahoe-shell,.tahoe-portal) .tk-trilha-item[aria-selected="true"],
  :is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-item[aria-checked="true"],
  :is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-estado="atual"] .marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-trilha-item[aria-selected="true"],
  :is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-item[aria-checked="true"],
  :is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-estado="atual"] .marca{outline:2px solid Highlight;outline-offset:-2px;}
  :is(.tahoe-shell,.tahoe-portal) .tk-linha:has(.tk-linha-alvo):hover,
  :is(.tahoe-shell,.tahoe-portal) .prest-linha:has(.prest-linha-alvo):hover{outline:1px solid Highlight;outline-offset:-1px;}
  :is(.tahoe-shell,.tahoe-portal) .tk-primaria.fixa,
  :is(.tahoe-shell,.tahoe-portal) .prest-primaria.fixa{border-top:1px solid CanvasText;}
}

/* ─────────── Detalhe com trilha de etapas ───────────
 Nasceu no detalhe da Prestação (0.55.0). Raiz .tk-detalhe: trilha
 lateral que é navegação (.tk-trilha), seletor de etapa em dropdown
 abaixo de 1100px (.tk-seletor-etapa), painel da etapa
 (.tk-painel-etapa) e barra "Voltar para…" (.tk-onde). Comportamento em
 componentes.js (TahoeKit.trilha). O cabeçalho do detalhe e os blocos de
 cada etapa são da tela (na Prestação, em prestacao.css). */
/* Ícone do sprite: tamanho padrão com especificidade baixa (:where não
   soma), para o componente da fundação (.tk-btn svg, .tk-status svg…)
   mandar. */
:where(.tahoe-shell,.tahoe-portal) .tk-i,
:where(.tahoe-shell,.tahoe-portal) .prest-i{width:16px;height:16px;flex:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item[hidden],
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-item[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-item[hidden]{display:none;}

/* ─────────── Stepper + corpo ─────────── */
:is(.tahoe-shell,.tahoe-portal) .tk-detalhe,
:is(.tahoe-shell,.tahoe-portal) .prest-detalhe{display:grid;grid-template-columns:256px minmax(0,1fr);gap:var(--space-5);align-items:start;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha{position:sticky;top:var(--space-4);display:flex;flex-direction:column;}
/* O realce da etapa selecionada é UM elemento que desliza de item em
   item — a seleção se move, não pisca de um lugar para outro. */
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-realce,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-realce{
  position:absolute;left:0;top:0;width:0;height:0;border-radius:var(--radius-md);pointer-events:none;opacity:0;
  background:var(--bg-soft);box-shadow:inset 0 0 0 1px var(--border-strong);
}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-realce.anima,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-realce.anima{
  transition:transform var(--tk-mola-dur) var(--tk-mola), width var(--tk-mola-dur) var(--tk-mola), height var(--tk-mola-dur) var(--tk-mola);
}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-etapas .tk-etapa,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-etapas .prest-etapa{padding-bottom:4px;}
/* Conector reposicionado: o botão tem 8px de respiro em volta da marca. */
/* Especificidade acima da regra .vertical da fundação (0,5,1). */
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-etapas.tk-etapas.vertical .tk-etapa:not(:last-child)::after,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-etapas.prest-etapas.vertical .prest-etapa:not(:last-child)::after{left:21px;top:40px;bottom:-4px;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item{
  position:relative;z-index:1;display:flex;align-items:flex-start;gap:var(--space-3);width:100%;min-height:44px;
  padding:var(--space-2);border:0;border-radius:var(--radius-md);background:transparent;color:inherit;text-align:left;cursor:pointer;
  font-family:var(--type-body-font);font-size:var(--type-body-size);line-height:var(--type-body-leading);
  -webkit-tap-highlight-color:transparent;transition:background-color 120ms ease;
}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item:hover{background:var(--tk-lavado);}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item[aria-selected="true"]:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item[aria-selected="true"]:hover{background:transparent;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item:active .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item:active .marca{transform:scale(0.94);}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item .marca,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item .marca{transition:transform 100ms ease-out;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item:focus-visible{outline:2px solid var(--link);outline-offset:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item .txt,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item .txt{flex:1;}
/* A selecionada é sempre a mais forte, mesmo concluída (a concluída
   esmaece o nome; selecionada, não). */
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item[aria-selected="true"] .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item[aria-selected="true"] .nome{color:var(--fg);font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .tk-etapa[data-tk-alerta] .sub,
:is(.tahoe-shell,.tahoe-portal) .prest-etapa[data-prest-alerta] .sub{color:var(--danger-fg);}
/* Fora da sequência (.tk-trilha-extra): o que não é etapa (na Prestação,
   Assinatura do conselho e Histórico). Marca neutra, sem número. */
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-extra-marca,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-extra-marca{
  width:28px;height:28px;border-radius:var(--radius-pill);flex:none;display:inline-flex;align-items:center;justify-content:center;
  background:var(--bg-soft);color:var(--fg-muted);box-shadow:inset 0 0 0 1px var(--border);
}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-extra-marca .tk-i,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-extra-marca .prest-i{width:14px;height:14px;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-extra .txt,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-extra .txt{display:flex;flex-direction:column;gap:2px;padding-top:4px;min-width:0;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-extra .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-extra .nome{font-weight:500;}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-extra .sub,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-extra .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) .tk-trilha-extra[data-tk-alerta] .sub,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-extra[data-prest-alerta] .sub{color:var(--danger-fg);}
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-sep,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-sep{height:1px;margin:var(--space-2);background:var(--hairline-section);}

/* ─────────── Seletor de etapa (abaixo de 1100px) ───────────
   Um botão largo que diz onde se está, com texto; abre um .tk-menu com
   todas as etapas e, separados, os dois itens fora da sequência. */
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa{display:none;width:100%;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho{
  display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:56px;padding:var(--space-2) var(--space-3);
  border:0;border-radius:var(--radius-md);background:var(--bg);color:inherit;text-align:left;cursor:pointer;
  box-shadow:inset 0 0 0 1px var(--border-strong);
  font-family:var(--type-body-font);font-size:var(--type-body-size);line-height:var(--type-body-leading);
  -webkit-tap-highlight-color:transparent;transition:background-color 120ms ease;
}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho:hover{background:var(--tk-lavado);}
/* Pressionado: feedback no instante do toque, sem depender de hover. */
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho:active,
:is(.tahoe-shell,.tahoe-portal) .tk-trilha-item:active,
:is(.tahoe-shell,.tahoe-portal) .tk-onde-volta:active,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho:active,
:is(.tahoe-shell,.tahoe-portal) .prest-trilha-item:active,
:is(.tahoe-shell,.tahoe-portal) .prest-onde-volta:active{background:var(--tk-lavado-forte);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho:focus-visible{outline:2px solid var(--link);outline-offset:2px;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho > .tk-i,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho > .prest-i{margin-left:auto;color:var(--fg-muted);transition:transform 220ms var(--ease-out);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa.aberto .tk-seletor-etapa-gatilho > .tk-i,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa.aberto .prest-seletor-etapa-gatilho > .prest-i{transform:rotate(180deg);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .txt,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .txt{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .nome{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .sub,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .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) .tk-seletor-etapa .sub .tk-i,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .sub .prest-i{width:12px;height:12px;vertical-align:-2px;margin-right:4px;color:inherit;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa [data-tk-alerta] .sub,
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .sub[data-tk-alerta],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa [data-prest-alerta] .sub,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .sub[data-prest-alerta]{color:var(--danger-fg);}
/* O menu tem a largura do botão que o abre. */
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-pop,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-pop{left:0;right:0;min-width:0;max-width:none;transform-origin:top center;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa.acima .tk-menu-pop,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa.acima .prest-menu-pop{transform-origin:bottom center;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-item,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-item{min-height:52px;padding:var(--space-2) var(--space-3);align-items:center;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-item .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-item .nome{font-weight:500;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-item[aria-checked="true"],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-item[aria-checked="true"]{background:var(--bg-soft);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-item[aria-checked="true"] .nome,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-item[aria-checked="true"] .nome{font-weight:600;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-item .tk-seletor-etapa-ok,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-item .prest-seletor-etapa-ok{margin-left:auto;color:var(--link);visibility:hidden;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-menu-item[aria-checked="true"] .tk-seletor-etapa-ok,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-menu-item[aria-checked="true"] .prest-seletor-etapa-ok{visibility:visible;}
/* Marca: as mesmas cores do stepper, por estado. */
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca{
  width:28px;height:28px;border-radius:var(--radius-pill);flex:none;display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--type-num-font);font-size:var(--type-meta-size);font-weight:600;font-variant-numeric:var(--type-num-variant);
  background:var(--bg);color:var(--fg-muted);box-shadow:inset 0 0 0 1.5px var(--border-strong);
}
/* O svg do .tk-menu-item pinta de cinza e tem 16px; a marca manda. */
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa .tk-seletor-etapa-marca .tk-i,
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa .prest-seletor-etapa-marca .prest-i{width:14px;height:14px;color:inherit;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca[data-estado="concluida"],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca[data-estado="concluida"]{background:var(--success);color:var(--fg-inverse);box-shadow:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca[data-estado="atual"],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca[data-estado="atual"]{background:var(--link);color:var(--fg-inverse);box-shadow:0 0 0 3px var(--link-soft);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca[data-estado="bloqueada"],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca[data-estado="bloqueada"]{background:var(--bg-soft);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca[data-marca="rejeitada"],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca[data-marca="rejeitada"]{background:var(--danger);color:var(--fg-inverse);box-shadow:0 0 0 3px var(--danger-soft);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca[data-desfecho],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca[data-desfecho]{border-radius:var(--radius-sm);}
:is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-marca[data-extra],
:is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-marca[data-extra]{background:var(--bg-soft);box-shadow:inset 0 0 0 1px var(--border);}

/* ─────────── Corpo ───────────
   Regras de disposição (docs/prestacao-redesenho.md): um nível de
   superfície dentro do card (B), estado dito uma vez (C), um eixo
   esquerdo por bloco (D), escala vertical 8/16/24 (G). Os componentes
   compartilhados são .tk-grupo, .tk-linhas, .tk-disc e
   .tk-primaria; aqui fica só a moldura do detalhe. */
:is(.tahoe-shell,.tahoe-portal) .tk-detalhe-corpo,
:is(.tahoe-shell,.tahoe-portal) .prest-detalhe-corpo{display:flex;flex-direction:column;gap:var(--tk-v-bloco);min-width:0;}
/* Onde estou: uma linha, sem caixa. */
:is(.tahoe-shell,.tahoe-portal) .tk-onde,
:is(.tahoe-shell,.tahoe-portal) .prest-onde{
  display:flex;align-items:center;flex-wrap:wrap;gap:0 var(--space-2);margin:0;min-width:0;
  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) .tk-onde[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-onde[hidden]{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-onde-txt:empty,
:is(.tahoe-shell,.tahoe-portal) .prest-onde-txt:empty{display:none;}
:is(.tahoe-shell,.tahoe-portal) .tk-onde-txt:not(:empty)::after,
:is(.tahoe-shell,.tahoe-portal) .prest-onde-txt:not(:empty)::after{content:"·";margin-left:var(--space-2);}
:is(.tahoe-shell,.tahoe-portal) .tk-onde-volta,
:is(.tahoe-shell,.tahoe-portal) .prest-onde-volta{
  display:inline-flex;align-items:center;gap:6px;min-height:var(--tk-alvo);padding:0 var(--space-2);margin-left:calc(-1 * var(--space-2));border:0;border-radius:var(--radius-sm);background:none;cursor:pointer;
  font-family:var(--type-label-font);font-size:var(--type-label-size);font-weight:var(--type-label-weight);letter-spacing:var(--type-label-tracking);color:var(--link);
}
:is(.tahoe-shell,.tahoe-portal) .tk-onde-volta:hover,
:is(.tahoe-shell,.tahoe-portal) .prest-onde-volta:hover{text-decoration:underline;}
:is(.tahoe-shell,.tahoe-portal) .tk-onde-volta:focus-visible,
:is(.tahoe-shell,.tahoe-portal) .prest-onde-volta:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:var(--radius-sm);}

:is(.tahoe-shell,.tahoe-portal) .tk-painel-etapa.card,
:is(.tahoe-shell,.tahoe-portal) .prest-painel-etapa.card{display:flex;flex-direction:column;gap:var(--tk-v-bloco);min-width:0;padding:var(--space-5);}
:is(.tahoe-shell,.tahoe-portal) .tk-painel-etapa[hidden],
:is(.tahoe-shell,.tahoe-portal) .prest-painel-etapa[hidden]{display:none;}
/* Frase e primária são blocos do card (16px entre eles), não itens de um grupo. */
:is(.tahoe-shell,.tahoe-portal) .tk-contents,
:is(.tahoe-shell,.tahoe-portal) .prest-contents{display:contents;}
:is(.tahoe-shell,.tahoe-portal) .tk-painel-etapa-h,
:is(.tahoe-shell,.tahoe-portal) .prest-painel-etapa-h{display:flex;flex-direction:column;gap:2px;}
:is(.tahoe-shell,.tahoe-portal) .tk-painel-etapa-h .tk-t-meta,
:is(.tahoe-shell,.tahoe-portal) .prest-painel-etapa-h .prest-t-meta{max-width:620px;}
:is(.tahoe-shell,.tahoe-portal) .tk-painel-etapa .tk-secoes,
:is(.tahoe-shell,.tahoe-portal) .prest-painel-etapa .prest-secoes{gap:var(--tk-v-secao);}
:is(.tahoe-shell,.tahoe-portal) .tk-area,
:is(.tahoe-shell,.tahoe-portal) .prest-area{min-height:auto;padding:var(--space-2) var(--space-3);resize:vertical;}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-trilha,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-trilha{display:flex;flex-direction:column;}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-trilha .tk-sk-marca,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-trilha .prest-sk-marca{border-radius:var(--radius-pill);}
/* O esqueleto do seletor tem a caixa real dele (56px), para nada saltar. */
:is(.tahoe-shell,.tahoe-portal) .tk-sk-seletor,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-seletor{
  display:none;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-3);box-sizing:border-box;
  border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px var(--border-strong);
}
:is(.tahoe-shell,.tahoe-portal) .tk-sk-seletor .tk-sk,
:is(.tahoe-shell,.tahoe-portal) .prest-sk-seletor .prest-sk{flex:1;}

/* Alto Contraste do Windows: o seletor tem borda por sombra, que o
   navegador apaga; vira borda real na cor do sistema. */
@media (forced-colors:active){
  :is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho,
  :is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho{border:1px solid ButtonText;}
  :is(.tahoe-shell,.tahoe-portal) .tk-trilha-realce,
  :is(.tahoe-shell,.tahoe-portal) .prest-trilha-realce{outline:2px solid Highlight;}
}
@media (prefers-reduced-motion:reduce){
  :is(.tahoe-shell,.tahoe-portal) .tk-trilha-item .marca,
  :is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa-gatilho > .tk-i,
  :is(.tahoe-shell,.tahoe-portal) .prest-trilha-item .marca,
  :is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa-gatilho > .prest-i{transition:none;}
}

/* ─────────── Abaixo de 1100px: a lateral vira o seletor ───────────
   A 1100px a coluna de 256px deixa o painel com 675px; a 1000px, 575px —
   abaixo dos 640px em que as linhas de documento já quebram. Então o
   stepper sai e entra o botão largo com texto, e o painel ganha a largura
   toda. E o seletor passa a ser o título da etapa (regra A): o card não
   repete nome, estado nem descrição. */
@media (max-width:1099.98px){
  :is(.tahoe-shell,.tahoe-portal) .tk-detalhe,
  :is(.tahoe-shell,.tahoe-portal) .prest-detalhe{grid-template-columns:minmax(0,1fr);gap:var(--tk-v-bloco);}
  :is(.tahoe-shell,.tahoe-portal) .tk-trilha,
  :is(.tahoe-shell,.tahoe-portal) .prest-trilha{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-seletor-etapa,
  :is(.tahoe-shell,.tahoe-portal) .prest-seletor-etapa{display:flex;}
  :is(.tahoe-shell,.tahoe-portal) .tk-painel-etapa-h,
  :is(.tahoe-shell,.tahoe-portal) .prest-painel-etapa-h{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-sk-trilha,
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-trilha{display:none;}
  :is(.tahoe-shell,.tahoe-portal) .tk-sk-seletor,
  :is(.tahoe-shell,.tahoe-portal) .prest-sk-seletor{display:flex;}
  :is(.tahoe-shell,.tahoe-portal) .tk-detalhe-tela.tk-pilha,
  :is(.tahoe-shell,.tahoe-portal) .prest-detalhe-tela.prest-pilha{gap:var(--tk-v-bloco);}
}
@media (max-width:767.98px){
  /* Topo: um respiro só, 16px, entre toolbar, cabeçalho e seletor. */
  .tahoe-shell .content.tk-detalhe-content,
  .tahoe-shell .content.prest-detalhe-content{padding-top:var(--tk-v-bloco);}

  :is(.tahoe-shell,.tahoe-portal) .tk-painel-etapa.card,
  :is(.tahoe-shell,.tahoe-portal) .prest-painel-etapa.card{padding:var(--space-4);}
}
:is(.tahoe-shell,.tahoe-portal) .tk-sr,
:is(.tahoe-shell,.tahoe-portal) .prest-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
/* `hidden` ganha de qualquer componente .tk-* (e .prest-*): o display dele
   (inline-block da pílula, flex da linha…) vencia o [hidden] quando ele
   vinha do JS. */
:is(.tahoe-shell,.tahoe-portal) [class*="tk-"][hidden],
:is(.tahoe-shell,.tahoe-portal) [class*="prest-"][hidden]{display:none !important;}

/* ─────────── Conteúdo no portal ───────────
   No .tahoe-portal quem monta, desmonta e posiciona o overlay é a
   biblioteca: montado é aberto. Os pops aparecem sem o .aberto do ancestral
   (.tk-menu; na Prestação também .prest-competencia e .prest-filtros, em
   prestacao.css) e não se posicionam
   contra o gatilho. O diálogo, que ali é um <div> e não um <dialog>, fica
   fixo e centrado — no celular, sheet de baixo — e o véu é o overlay da
   biblioteca com a classe .tk-veu. */
.tahoe-portal .tk-menu-pop,
.tahoe-portal .prest-menu-pop{position:relative;inset:auto;opacity:1;visibility:visible;transform:none;pointer-events:auto;}
.tahoe-portal .tk-dialog,
.tahoe-portal .tk-dialog.largo,
.tahoe-portal .prest-dialog,
.tahoe-portal .prest-dialog.largo{position:fixed;inset:0;z-index:90;height:fit-content;margin:auto;opacity:1;transform:none;}
.tahoe-portal .tk-veu,
.tahoe-portal .prest-veu{position:fixed;inset:0;z-index:89;background:var(--tk-veu);}
@media (max-width:767.98px){
  .tahoe-portal .tk-dialog,
  .tahoe-portal .tk-dialog.largo,
  .tahoe-portal .prest-dialog,
  .tahoe-portal .prest-dialog.largo{margin:auto 0 0;}
}
