/* Credenciamento GRU — componentes (de web/app.css). Cores, raios, sombras e famílias vêm de tokens.css. */
:root {
  /* ponte: o código usa --fonte-*; tokens.json declara as famílias como --font-* */
  --fonte-titulo: var(--font-titulo);
  --fonte-texto: var(--font-texto);
  font-family: var(--fonte-texto);
  color: var(--texto);
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; background: var(--fundo); font-size: 16px; line-height: 1.45; }
a { color: var(--primaria); }
h1, h2, h3, th, .lateral .marca, .secao, .abas { font-family: var(--fonte-titulo); }
h1 { font-size: 1.5rem; margin: 0 0 .25rem; color: var(--aw-preto); }
h2 { font-size: 1.12rem; margin: 2rem 0 .75rem; color: var(--aw-preto); }
h2 small, h3 small { color: var(--suave); font-weight: 400; font-size: .85rem; margin-left: .35rem; }
h3 { font-size: 1rem; margin: 0; }
small, .suave { color: var(--suave); }
.sem-margem { margin-top: 0; }
.nota { margin: -.4rem 0 .7rem; font-size: .92rem; }

/* ---------- estrutura: menu lateral + conteúdo ---------- */
.estrutura { display: grid; grid-template-columns: 256px minmax(0, 1fr); min-height: 100vh; }
.lateral { background: var(--primaria); color: #fff; display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; border-top: 4px solid var(--accent); z-index: 10; }
.lateral-topo { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: 1.1rem 1.1rem .8rem; }
.lateral .marca { color: #fff; text-decoration: none; font-weight: 600; display: flex; align-items: center; gap: .65rem; line-height: 1.2; }
.lateral .marca small { display: block; color: var(--lateral-suave); font-weight: 400; font-size: .76rem; margin-top: .2rem; }
.logo { flex: none; display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: var(--raio-campo); background: var(--accent); color: var(--primaria); font-weight: 800; }
#menu { flex: 1; overflow-y: auto; padding: .2rem .7rem 1rem; display: flex; flex-direction: column; gap: .1rem; }
#menu .secao { text-transform: uppercase; letter-spacing: .08em; font-size: .7rem; color: var(--lateral-secao); margin: 1.1rem .7rem .3rem; font-weight: 600; }
#menu a { color: var(--lateral-texto); text-decoration: none; padding: .5rem .75rem; border-radius: var(--raio-campo); display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
#menu a:hover { background: rgba(255, 255, 255, .08); color: #fff; }
#menu a.ativo { background: rgba(0, 222, 219, .16); color: #fff; box-shadow: inset 3px 0 0 var(--accent); font-weight: 600; }
.contador { background: rgba(255, 255, 255, .18); color: #fff; border-radius: var(--raio-pilula); font-size: .75rem; padding: .05rem .5rem; font-weight: 700; min-width: 1.6rem; text-align: center; }
.contador.destaque { background: var(--accent); color: var(--primaria-2); }
#sessao { border-top: 1px solid rgba(255, 255, 255, .12); padding: .9rem 1.1rem; display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
#sessao .quem { display: flex; flex-direction: column; min-width: 0; font-size: .88rem; }
#sessao .quem small { color: var(--lateral-suave); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#sessao button { background: transparent; border-color: rgba(255, 255, 255, .35); color: #fff; flex: none; }
.abrir-menu { display: none; }
body.sem-sessao .estrutura { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
/* Menu recolhível (tela larga): faixa estreita só com o logo e o botão de abrir; a escolha fica no navegador. */
.recolher-menu { flex: none; background: transparent; color: #fff; border: 1px solid rgba(255, 255, 255, .35); border-radius: var(--raio-mensagem); padding: .1rem .5rem; font-size: 1.05rem; line-height: 1.2; cursor: pointer; }
.recolher-menu:hover { background: rgba(255, 255, 255, .1); }
body.sem-sessao .recolher-menu { display: none; }
@media (min-width: 901px) {
  body.menu-recolhido .estrutura { grid-template-columns: 58px minmax(0, 1fr); }
  body.menu-recolhido .lateral-topo { flex-direction: column; padding: 1rem .4rem; gap: .8rem; }
  body.menu-recolhido .lateral .marca > span:not(.logo) { display: none; }
  body.menu-recolhido #menu, body.menu-recolhido #sessao { display: none; }
}
body.sem-sessao .lateral { position: static; height: auto; }
body.sem-sessao #menu, body.sem-sessao #sessao, body.sem-sessao .abrir-menu { display: none; }
body.sem-sessao main { padding: 0; max-width: 100%; }

main { width: 100%; max-width: 1240px; margin: 0 auto; padding: 1.6rem 2rem 3rem; }
.cabecalho { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.2rem; }
.cabecalho p { margin: .15rem 0 0; display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.trilha { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; font-size: .88rem; margin-bottom: .6rem; color: var(--suave); }
.trilha a { color: var(--suave); text-decoration: none; }
.trilha a:hover { color: var(--primaria); text-decoration: underline; }
.trilha .sep { color: var(--aw-prata); }
.cartao { background: var(--cartao); border: 1px solid var(--borda); border-radius: var(--raio); box-shadow: var(--sombra); padding: 1.1rem 1.25rem; }
.cartao h3 { margin-bottom: .5rem; }
.cartao.tabela { padding: 0; overflow-x: auto; }
.linha { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }
.linha.fim { justify-content: flex-end; margin-top: 1rem; }

/* ---------- botões e selos ---------- */
button, .botao {
  font: inherit; cursor: pointer; border-radius: var(--raio-botao); padding: .5rem .95rem; border: 1px solid var(--borda);
  background: #fff; color: var(--texto); text-decoration: none; display: inline-flex; align-items: center; gap: .4rem; white-space: nowrap;
}
button:hover, .botao:hover { border-color: var(--aw-prata); background: #fafcfc; }
button.primario, .botao.primario { background: var(--primaria); color: #fff; border-color: var(--primaria); }
button.primario:hover, .botao.primario:hover { background: var(--primaria-2); border-color: var(--primaria-2); }
button.ok { background: var(--ok); color: #fff; border-color: var(--ok); }
button.perigo { background: #fff; color: var(--erro); border-color: var(--erro-borda); }
button:disabled { opacity: .55; cursor: not-allowed; }
button.pequeno, .botao.pequeno { padding: .28rem .65rem; font-size: .88rem; }
button.link { border: 0; background: none; padding: 0; color: var(--primaria); text-decoration: underline; font-size: .88rem; }
button:focus-visible, .botao:focus-visible, a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.selo { display: inline-block; padding: .14rem .6rem; border-radius: var(--raio-pilula); font-size: .8rem; font-weight: 600; white-space: nowrap; }
.selo.ok { background: var(--ok-fundo); color: var(--ok); }
.selo.erro { background: var(--erro-fundo); color: var(--erro); }
.selo.atencao { background: var(--revisao-fundo); color: var(--revisao); }
.selo.info { background: var(--info-fundo); color: var(--info); }
.selo.neutro { background: var(--neutro-fundo); color: var(--suave); }
.selo.marca { background: var(--realce); color: var(--primaria); box-shadow: inset 0 0 0 1px var(--realce-borda); }
.chip { display: inline-block; background: var(--realce); color: var(--primaria); border-radius: var(--raio-chip); padding: 0 .4rem; font-size: .82rem; font-weight: 600; cursor: help; }
.dist { display: flex; flex-wrap: wrap; gap: .3rem; }
/* Colaboradores por etapa (tabela de Fornecedores): uma coluna estreita por situação. */
th.col-etapa, td.col-etapa { text-align: center; padding-left: .25rem; padding-right: .25rem; }
@media (min-width: 701px) {
  table.tem-etapas th.col-etapa, table.tem-etapas td.col-etapa { min-width: 5rem; width: 5rem; }
  table.tem-etapas thead tr:first-child th:first-child, table.tem-etapas tbody td:first-child { min-width: 12rem; }
}
th.col-etapa { line-height: 1.25; letter-spacing: 0; font-size: .7rem; }
td.col-etapa .selo { min-width: 2rem; text-align: center; }
/* Fases (cadastro e credenciamento) acima dos status, separadas por uma linha; totais no rodapé. */
table.tem-etapas thead th[rowspan] { vertical-align: bottom; }
table.tem-etapas th.fase { text-align: center; background: var(--realce); color: var(--primaria); font-size: .72rem; padding-top: .45rem; padding-bottom: .45rem; border-bottom: 2px solid var(--primaria); }
table.tem-etapas .inicio-fase { border-left: 1px solid var(--borda); }
table.tem-etapas tfoot td { background: var(--tabela-cab); }
table.tem-etapas tr.total-etapas td { border-top: 2px solid var(--borda); }
table.tem-etapas tr.total-fases td { text-align: center; font-size: .82rem; color: var(--suave); padding-top: .4rem; padding-bottom: .6rem; }
table.tem-etapas tr.total-fases td b { color: var(--texto); font-size: .95rem; }

/* ---------- início: linha do processo ---------- */
.processo-cab { display: flex; align-items: baseline; gap: .7rem; flex-wrap: wrap; margin-bottom: .6rem; }
/* 10 etapas em duas linhas de 5: até o lançamento no GPA, e do GRU à retirada da credencial. */
.processo { list-style: none; margin: 0 0 1.8rem; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .6rem; }
.processo li { position: relative; }
.processo li:not(:last-child):not(:nth-child(5n))::after { content: ""; position: absolute; right: -.6rem; top: 50%; width: .6rem; border-top: 2px solid var(--aw-prata); }
.processo a { display: flex; flex-direction: column; gap: .15rem; height: 100%; text-decoration: none; color: var(--texto); background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: .7rem .75rem .75rem; box-shadow: var(--sombra); }
.processo a:hover { border-color: var(--realce-borda); box-shadow: var(--sombra-hover); }
.topo-etapa { display: flex; justify-content: space-between; align-items: center; gap: .3rem; margin-bottom: .25rem; }
.num-etapa { width: 22px; height: 22px; border-radius: 50%; background: var(--neutro-fundo); color: var(--suave); display: grid; place-items: center; font-size: .75rem; font-weight: 700; flex: none; }
.resp { font-size: .66rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; padding: .05rem .4rem; border-radius: var(--raio-etiqueta); }
.resp.fornecedor { background: var(--revisao-fundo); color: var(--revisao); }
.resp.aw { background: var(--realce); color: var(--primaria); }
.resp.gru { background: var(--info-fundo); color: var(--info); }
.resp.concluido { background: var(--ok-fundo); color: var(--ok); }
.processo .n { font-family: var(--fonte-titulo); font-size: 1.7rem; line-height: 1.1; }
.titulo-etapa { font-weight: 600; font-size: .9rem; line-height: 1.2; }
.processo small { font-size: .78rem; }
.processo li.zero .n { color: var(--aw-prata); }
.processo li.sua a { border-color: var(--primaria); }
.processo li.sua .num-etapa { background: var(--primaria); color: #fff; }
.processo li.trabalho a { background: var(--realce); box-shadow: 0 0 0 2px var(--realce-borda); }
.processo li.trabalho .n { color: var(--primaria); }
.processo li.fim .n { color: var(--ok); }

/* ---------- início: conteúdo + atividades ---------- */
.home { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 1.4rem; align-items: start; }
.feed { position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; padding: 1rem 0 .6rem; }
.feed h2 { margin: 0 1.1rem .15rem; }
.feed > p { margin: 0 1.1rem .4rem; font-size: .85rem; }
.feed .vazio { margin: .6rem 1.1rem; }
.feed .dia { position: sticky; top: -1rem; background: #fff; font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; color: var(--suave); font-weight: 700; padding: .7rem 1.1rem .3rem; }
.feed ol { list-style: none; margin: 0; padding: 0 1.1rem; }
.feed li { display: grid; grid-template-columns: 10px minmax(0, 1fr); gap: .65rem; padding: .4rem 0; font-size: .92rem; position: relative; }
.feed li:not(:last-child)::before { content: ""; position: absolute; left: 4px; top: 1.2rem; bottom: -.5rem; border-left: 2px solid var(--trilho); }
.feed time { color: var(--suave); font-size: .8rem; font-variant-numeric: tabular-nums; }
.feed .coment { display: block; color: var(--suave); font-size: .85rem; }
.ponto { width: 10px; height: 10px; border-radius: 50%; margin-top: .4rem; background: var(--aw-prata); position: relative; z-index: 1; }
.ponto.ok { background: var(--aw-verde); }
.ponto.erro { background: var(--aw-red); }
.ponto.atencao { background: var(--aw-amarelo); }
.ponto.info { background: var(--aw-blue); }
.ponto.marca { background: var(--accent); }
.passo-num { flex: none; width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; font-family: var(--fonte-titulo); font-weight: 700; }
.alerta-obra { background: var(--revisao-fundo); border: 1px solid var(--aw-amarelo); color: var(--revisao); border-radius: var(--raio); padding: .8rem 1rem; margin-bottom: 1rem; }
.explica { background: var(--realce); border-left: 4px solid var(--primaria); color: var(--primaria-2); border-radius: 0 var(--raio) var(--raio) 0; padding: .75rem 1rem; margin-bottom: 1rem; }

/* ---------- lista de colaboradores ---------- */
.lista { display: flex; flex-direction: column; gap: .5rem; }
.colab { display: grid; grid-template-columns: minmax(180px, 1.3fr) minmax(140px, .8fr) minmax(200px, 1.4fr) auto; gap: 1rem; align-items: center; text-decoration: none; color: var(--texto); background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: .8rem 1rem; box-shadow: var(--sombra); }
.colab:hover { border-color: var(--realce-borda); box-shadow: var(--sombra-hover); }
.colab.sua-vez { border-left: 4px solid var(--primaria); }
.colab-id, .colab-prog, .colab-acao { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.colab-acao { align-items: flex-start; }
.colab-acao small { color: var(--texto); }
.seta { color: var(--aw-prata); font-size: 1.5rem; line-height: 1; }
.barra { height: 6px; background: var(--trilho); border-radius: var(--raio-pilula); overflow: hidden; }
.barra i { display: block; height: 100%; background: var(--aw-verde); }
.abas { display: flex; gap: .25rem; border-bottom: 1px solid var(--borda); margin-bottom: .9rem; overflow-x: auto; }
.abas button { border: 0; border-radius: 0; background: none; padding: .6rem .9rem; color: var(--suave); border-bottom: 3px solid transparent; margin-bottom: -1px; font-weight: 600; }
.abas button span { background: var(--neutro-fundo); border-radius: var(--raio-pilula); padding: 0 .45rem; font-size: .78rem; margin-left: .2rem; }
.abas button.ativa { color: var(--primaria); border-bottom-color: var(--primaria); }
.abas button.ativa span { background: var(--primaria); color: #fff; }
.filtros { display: flex; gap: .6rem; flex-wrap: wrap; margin-bottom: .8rem; }
.filtros input { min-width: 280px; }
.vazio { text-align: center; padding: 2rem 1rem; color: var(--suave); background: #fff; border: 1px dashed var(--aw-prata); border-radius: var(--raio); }
.vazio p { margin: 0 0 .8rem; }
.vazio p:last-child { margin: 0; }
td .vazio { border: 0; }

/* ---------- ficha do colaborador ---------- */
.etapas { list-style: none; margin: 0 0 1.4rem; padding: 0; display: flex; background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); box-shadow: var(--sombra); overflow: hidden; }
.etapas li { flex: 1; display: flex; align-items: center; gap: .5rem; padding: .7rem .9rem; color: var(--suave); font-size: .92rem; position: relative; }
.etapas li + li::before { content: ""; position: absolute; left: 0; top: 25%; height: 50%; border-left: 1px solid var(--borda); }
.etapas .bolinha { flex: none; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-size: .78rem; font-weight: 700; background: var(--neutro-fundo); }
.etapas li.feita { color: var(--ok); }
.etapas li.feita .bolinha { background: var(--ok-fundo); }
.etapas li.atual { color: var(--primaria); font-weight: 700; background: var(--realce); }
.etapas li.atual .bolinha { background: var(--primaria); color: #fff; }
.etapas li.atual.erro { color: var(--erro); background: var(--erro-fundo); }
.etapas li.atual.erro .bolinha { background: var(--erro); }
.duas-colunas { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 1.4rem; align-items: start; }
.apoio { display: flex; flex-direction: column; gap: 1rem; position: sticky; top: 1rem; }
.proxima { background: #fff; border: 1px solid var(--borda); border-left: 4px solid var(--aw-prata); border-radius: var(--raio); padding: .85rem 1rem; display: flex; flex-direction: column; gap: .2rem; box-shadow: var(--sombra); }
.proxima small { text-transform: uppercase; letter-spacing: .06em; font-size: .72rem; font-weight: 700; }
.proxima.sua-vez { border-left-color: var(--accent); background: var(--realce); }
.proxima.sua-vez b { color: var(--primaria-2); }
.pend { border-radius: var(--raio); padding: .8rem 1rem; border: 1px solid; }
.pend h3 { font-size: .92rem; margin-bottom: .3rem; }
.pend ul { margin: 0; padding-left: 1.1rem; font-size: .92rem; }
.pend li + li { margin-top: .3rem; }
.pend p { margin: 0; }
.pend.voce { background: var(--revisao-fundo); border-color: var(--aw-amarelo); color: var(--revisao); }
.pend.aw { background: var(--info-fundo); border-color: var(--info-borda); color: var(--info); }
.pend.erro { background: var(--erro-fundo); border-color: var(--erro-borda); color: var(--erro); margin-bottom: 1.2rem; }
.pend a { color: inherit; font-weight: 700; }
.ficha dl { display: grid; grid-template-columns: auto 1fr; gap: .35rem .8rem; margin: 0 0 .9rem; font-size: .93rem; }
.ficha dt { color: var(--suave); }
.ficha dd { margin: 0; overflow-wrap: anywhere; }

/* ---------- documentos ---------- */
.grupo-doc { margin-bottom: 1.2rem; }
.grupo-doc > header { display: flex; justify-content: space-between; align-items: center; margin: 0 0 .5rem; padding: 0 .1rem; }
.grupo-doc > header h3 { font-size: .8rem; text-transform: uppercase; letter-spacing: .07em; color: var(--suave); }
.contagem { font-size: .8rem; font-weight: 700; color: var(--suave); background: var(--neutro-fundo); border-radius: var(--raio-pilula); padding: 0 .5rem; }
.contagem.completo { background: var(--ok-fundo); color: var(--ok); }
.docs { display: flex; flex-direction: column; gap: .5rem; }
.doc { background: #fff; border: 1px solid var(--borda); border-left: 4px solid var(--aw-prata); border-radius: var(--raio); transition: box-shadow .3s; }
.doc.aprovado { border-left-color: var(--aw-verde); }
.doc.recusado { border-left-color: var(--aw-red); }
.doc.revisao { border-left-color: var(--aw-amarelo); }
.doc.destacado { box-shadow: var(--sombra-destaque); }
.doc.em-analise { border-left-color: var(--aw-blue); }
.doc.em-analise .icone { border: 0; color: var(--info); }
/* O título guarda uma largura mínima: com muitos botões (corrigir a leitura, aprovar, recusar, enviar) eles quebram de linha. */
.doc-linha { display: grid; grid-template-columns: auto minmax(11rem, 1fr) auto; gap: .8rem; align-items: center; padding: .75rem 1rem; }
.icone { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-weight: 800; font-size: .85rem; border: 2px dashed var(--aw-prata); color: transparent; }
.doc.aprovado .icone { background: var(--aw-verde); border: 0; color: #fff; }
.doc.recusado .icone { background: var(--aw-red); border: 0; color: #fff; }
.doc.revisao .icone { background: var(--aw-amarelo); border: 0; color: var(--tinta-amarelo); }
.doc-titulo { display: flex; flex-direction: column; min-width: 0; }
.doc-titulo small { font-size: .85rem; }
.doc .acoes { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.doc .corpo:empty { display: none; }
.doc .corpo { padding: 0 1rem .8rem calc(1rem + 26px + .8rem); }
.doc-rodape { display: flex; gap: 1rem; align-items: baseline; flex-wrap: wrap; margin-top: .4rem; }
.msgs { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: .3rem; }
.msgs + .msgs { margin-top: .3rem; }
.msgs li { padding: .4rem .6rem; border-radius: var(--raio-mensagem); font-size: .9rem; }
.msgs li.recusa { background: var(--erro-fundo); color: var(--erro); }
.msgs li.revisao { background: var(--revisao-fundo); color: var(--revisao); }
.msgs li.alerta { background: #eef1f1; color: var(--suave); }
.msgs li.ok { background: var(--ok-fundo); color: var(--ok); }
.msgs li.info { background: var(--revisao-fundo); color: var(--texto, inherit); border-left: 3px solid var(--revisao); }
details.dica summary { cursor: pointer; color: var(--suave); font-size: .88rem; }
details.dica p { margin: .3rem 0 0; font-size: .9rem; color: var(--suave); }
.analisando { display: flex; align-items: center; gap: .6rem; color: var(--info); background: var(--info-fundo); padding: .5rem .7rem; border-radius: var(--raio-mensagem); font-size: .9rem; }
.giro { width: 16px; height: 16px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: giro .8s linear infinite; }
@keyframes giro { to { transform: rotate(360deg); } }
.hist-item { margin-bottom: .8rem; }
.zona-perigo { margin-top: 2.5rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; border: 1px solid var(--erro-borda); border-radius: var(--raio); padding: .9rem 1.1rem; background: #fff; }
.zona-perigo h3 { color: var(--erro); font-size: .95rem; }
.zona-perigo p { margin: .2rem 0 0; font-size: .9rem; color: var(--suave); max-width: 640px; }
button.perigo-cheio { background: var(--erro); color: #fff; border-color: var(--erro); }
button.perigo-cheio:disabled { opacity: .4; }
.lista-exclusao { margin: .2rem 0 .3rem; font-size: .9rem; color: var(--suave); max-height: 9rem; overflow-y: auto; }
#faixa-ia:not(:empty) { margin-bottom: 1rem; }
details.ia-leu summary { cursor: pointer; color: var(--primaria); font-size: .88rem; font-weight: 600; }
details.ia-leu dl { display: grid; grid-template-columns: auto 1fr; gap: .2rem .8rem; margin: .4rem 0 .2rem; padding: .6rem .8rem; background: var(--realce); border-radius: var(--raio-mensagem); font-size: .88rem; }
details.ia-leu dt { color: var(--suave); }
details.ia-leu dd { margin: 0; overflow-wrap: anywhere; }
.doc-rodape details[open] { flex-basis: 100%; }

/* ---------- formulários ---------- */
.form-colab { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 1.4rem; align-items: start; }
.form-principal { display: flex; flex-direction: column; gap: 1rem; }
.secao-form h2 { margin: 0 0 .9rem; display: flex; align-items: center; gap: .55rem; font-size: 1.05rem; }
.secao-form h2 + p { margin-top: -.4rem; }
form.secao-form h2:not(:first-child) { margin-top: 1.6rem; }
.num { width: 26px; height: 26px; border-radius: 50%; background: var(--primaria); color: #fff; display: inline-grid; place-items: center; font-size: .85rem; flex: none; }
.campos { display: grid; gap: .9rem 1.2rem; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
form.campos { margin: 0; }
label { display: flex; flex-direction: column; gap: .3rem; font-size: .9rem; font-weight: 600; }
label small { font-weight: 400; }
input, select, textarea { font: inherit; padding: .5rem .6rem; border: 1px solid var(--aw-prata); border-radius: var(--raio-campo); background: #fff; color: var(--texto); }
input[readonly] { background: var(--campo-leitura); color: var(--suave); }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--primaria); }
.largo { grid-column: 1 / -1; }
.grupo-area { border: 1px solid var(--borda); border-radius: var(--raio-botao); padding: .6rem .9rem .8rem; margin: 0 0 .8rem; }
.grupo-area legend { font-family: var(--fonte-titulo); font-weight: 600; font-size: .88rem; padding: 0 .3rem; color: var(--primaria); }
.areas { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: .35rem .9rem; }
.check { flex-direction: row; align-items: flex-start; gap: .5rem; font-weight: 400; padding: .2rem 0; }
.check input { margin-top: .25rem; accent-color: var(--primaria); }
.check b { color: var(--primaria); margin-right: .2rem; }
.previa { position: sticky; top: 1rem; }
.previa h3 { display: flex; justify-content: space-between; align-items: center; }
#previa-total { background: var(--primaria); color: #fff; border-radius: var(--raio-pilula); padding: 0 .55rem; font-size: .85rem; }
.previa ol { margin: .6rem 0 0; padding-left: 1.3rem; display: flex; flex-direction: column; gap: .3rem; font-size: .92rem; }
.previa li small { display: block; }
.previa li.extra { color: var(--primaria-2); font-weight: 600; }
.previa li.extra small { color: var(--primaria); font-weight: 400; }
.previa li.da-aw { color: var(--suave); }
.cnpj-info { font-weight: 400; font-size: .85rem; display: flex; flex-direction: column; gap: .1rem; }
.cnpj-info:empty { display: none; }
.cnpj-ok { color: var(--ok); }
.cnpj-alerta { color: var(--erro); }
.erro-form { color: var(--erro); background: var(--erro-fundo); padding: .6rem .8rem; border-radius: var(--raio-campo); }

/* ---------- ajuda ---------- */
.como { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .7rem; }
.como li { display: flex; gap: .9rem; background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: .9rem 1.1rem; box-shadow: var(--sombra); }
.como .passo-num { background: var(--primaria); color: #fff; }
.como p { margin: .2rem 0 0; color: var(--suave); }
.legenda { display: flex; flex-direction: column; gap: .5rem; }
.dicas li + li { margin-top: .3rem; }

/* ---------- tabelas ---------- */
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: .65rem .9rem; border-bottom: 1px solid var(--borda); vertical-align: middle; }
tbody tr:last-child td { border-bottom: 0; }
th { font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; color: var(--suave); font-weight: 600; background: var(--tabela-cab); }
tr.clicavel { cursor: pointer; }
tr.clicavel:hover td { background: var(--linha-hover); }
.acoes-linha { display: flex; gap: .4rem; justify-content: flex-end; }
.papeis li + li { margin-top: .3rem; }

/* ---------- lançamento no GPA ---------- */
ol.gpa { margin: 0; padding: 0; list-style: none; counter-reset: gpa; }
ol.gpa li { counter-increment: gpa; border-bottom: 1px solid var(--borda); }
ol.gpa li:last-child { border-bottom: 0; }
ol.gpa .copiar { width: 100%; border: 0; border-radius: 0; background: none; text-align: left; padding: .6rem 1rem .6rem 2.6rem; position: relative; flex-direction: column; align-items: flex-start; gap: .1rem; white-space: normal; }
ol.gpa .copiar::before { content: counter(gpa); position: absolute; left: .9rem; top: .75rem; color: var(--suave); font-size: .8rem; }
ol.gpa .copiar:hover { background: var(--linha-hover); }
ol.gpa .copiar b { font-size: 1rem; }
ol.gpa .copiar.copiado { background: var(--ok-fundo); }
ol.gpa .copiar.copiado::after { content: "copiado ✓"; position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); color: var(--ok); font-size: .8rem; font-weight: 600; }
ol.anexos { margin: 0; padding-left: 1.4rem; display: flex; flex-direction: column; gap: .25rem; font-size: .93rem; }

/* ---------- modal, aviso, entrar ---------- */
.modal { position: fixed; inset: 0; background: var(--scrim); display: grid; place-items: center; padding: 1rem; z-index: 20; }
.modal .caixa { background: #fff; border-radius: var(--raio-painel); padding: 1.3rem; width: min(540px, 100%); max-height: 90vh; overflow: auto; box-shadow: var(--sombra-modal); }
.aviso { position: fixed; bottom: 1.2rem; left: 50%; transform: translateX(-50%); background: var(--texto); color: #fff; padding: .7rem 1.1rem; border-radius: var(--raio-botao); z-index: 30; max-width: 90vw; }

/* tela de login */
.tela-login { min-height: calc(100vh - 60px); display: grid; place-items: center; padding: 2rem 1rem;
  background: linear-gradient(145deg, #e8f7f7 0%, #f2f5f5 50%, #e0f5f5 100%); }
.login-card { background: #fff; border-radius: var(--raio-login); box-shadow: var(--sombra-login); padding: 2.8rem 2.4rem; width: min(420px, 100%); display: flex; flex-direction: column; align-items: center; text-align: center; gap: .5rem; }
.login-logo { width: 64px; height: 64px; border-radius: var(--raio-login); background: var(--primaria); display: grid; place-items: center; margin-bottom: .5rem; box-shadow: var(--sombra-logo); }
.login-logo span { color: var(--accent); font-size: 2rem; font-weight: 900; line-height: 1; }
.login-marca { font-family: var(--fonte-titulo); font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; color: var(--suave); }
.login-titulo { font-family: var(--fonte-titulo); font-size: 1.6rem; font-weight: 700; color: var(--aw-preto); margin: .3rem 0 0; }
.login-desc { color: var(--suave); font-size: .95rem; line-height: 1.55; margin: .4rem 0 1rem; max-width: 320px; }
.login-btn { width: 100%; justify-content: center; padding: .75rem 1rem; font-size: 1rem; border-radius: var(--raio); margin-top: .3rem; }
.login-rodape { font-size: .78rem; color: var(--aw-prata); margin: .5rem 0 0; }

.entrar { max-width: 460px; margin: 3rem auto; }
.entrar .usuario { width: 100%; justify-content: space-between; margin-bottom: .5rem; text-align: left; white-space: normal; }
.carregando { color: var(--suave); }

/* ---------- responsivo ---------- */
@media (max-width: 1100px) {
  .home, .duas-colunas, .form-colab { grid-template-columns: minmax(0, 1fr); }
  .apoio, .previa, .feed { position: static; }
  .feed { max-height: none; }
  .feed .dia { position: static; }
  .apoio { order: -1; }
  .colab { grid-template-columns: minmax(0, 1fr) auto; }
  .colab-prog { display: none; }
  .colab-acao { grid-column: 1; }
  .seta { grid-row: 1 / span 2; grid-column: 2; }
}
@media (max-width: 900px) {
  .estrutura { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
  .lateral { height: auto; }
  .abrir-menu { display: inline-flex; background: transparent; color: #fff; border-color: rgba(255, 255, 255, .4); }
  .recolher-menu { display: none; }
  #menu, #sessao { display: none; }
  body.menu-aberto #menu, body.menu-aberto #sessao { display: flex; }
  #menu { max-height: 65vh; }
  main { padding: 1.1rem 1rem 2.5rem; }
  .etapas { overflow-x: auto; }
  .etapas li { flex: none; }
}
@media (max-width: 700px) {
  .processo { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .processo li::after { display: none; }
  .doc-linha { grid-template-columns: auto minmax(0, 1fr); }
  .doc .acoes { grid-column: 1 / -1; justify-content: flex-start; }
  .doc .corpo { padding-left: 1rem; }
  .filtros input { min-width: 0; width: 100%; }
  table.responsiva thead { display: none; }
  table.responsiva td { display: block; border: 0; padding: .2rem .9rem; }
  table.responsiva tr { display: block; border-bottom: 1px solid var(--borda); padding: .6rem 0; }
  /* Sem cabeçalho no celular: cada número leva o nome da etapa; o zero some. */
  table.responsiva td.col-etapa { display: inline-block; width: auto; padding: .2rem 0 .2rem .9rem; }
  table.responsiva td.col-etapa::before { content: attr(data-rotulo) " "; color: var(--suave); font-size: .8rem; }
  table.responsiva td.col-etapa.zero { display: none; }
  table.responsiva .inicio-fase { border-left: 0; }
  table.responsiva tr.total-fases td:first-child { display: none; }
  table.responsiva tr.total-fases td { display: inline-block; text-align: left; padding-left: .9rem; }
  .acoes-linha { justify-content: flex-start; }
}

/* ---------- relatórios self-service ---------- */
.modelos-rel { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .8rem; margin-bottom: 1.6rem; }
.modelo-rel { display: flex; flex-direction: column; gap: .35rem; align-items: flex-start; text-decoration: none; color: var(--texto); background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: .85rem 1rem; box-shadow: var(--sombra); }
.modelo-rel:hover { border-color: var(--primaria); }
.modelo-rel b { color: var(--primaria); line-height: 1.25; }

.rel-grade { display: grid; grid-template-columns: 380px minmax(0, 1fr); gap: 1rem; align-items: start; }
.rel-montagem { position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; padding: 0; }
.rel-montagem section { padding: 1rem 1.1rem; border-bottom: 1px solid var(--borda); display: flex; flex-direction: column; gap: .6rem; }
.rel-montagem section:last-child { border-bottom: 0; }
.rel-montagem h3 { margin: 0; display: flex; align-items: center; gap: .5rem; font-size: 1rem; }
.rel-montagem .num { width: 22px; height: 22px; border-radius: 50%; background: var(--primaria); color: #fff; display: grid; place-items: center; font-size: .75rem; font-weight: 700; flex: none; }
.rel-montagem .linha > label { flex: 1; min-width: 120px; }
.tipos-rel { display: grid; grid-template-columns: 1fr 1fr; gap: .45rem; }
.tipos-rel label { position: relative; font-weight: 400; gap: .1rem; border: 1px solid var(--borda); border-radius: var(--raio-botao); padding: .5rem .65rem; cursor: pointer; }
.tipos-rel label.ativo { border-color: var(--primaria); background: var(--realce); box-shadow: inset 0 0 0 1px var(--primaria); }
.tipos-rel input { position: absolute; opacity: 0; pointer-events: none; }
.tipos-rel b { color: var(--primaria); }
.tipos-rel small { font-size: .76rem; line-height: 1.25; }
.tipos-rel label:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.escolhidos-rel { list-style: none; margin: 0; padding: 0; counter-reset: col; border: 1px solid var(--borda); border-radius: var(--raio-botao); }
.escolhidos-rel li { counter-increment: col; display: flex; justify-content: space-between; align-items: center; gap: .4rem; padding: .25rem .3rem .25rem .6rem; font-size: .88rem; border-bottom: 1px solid var(--borda); }
.escolhidos-rel li:last-child { border-bottom: 0; }
.escolhidos-rel li > span:first-child::before { content: counter(col) ". "; color: var(--suave); font-variant-numeric: tabular-nums; }
.acoes-campo { display: flex; gap: .15rem; flex: none; }
.icone-btn { padding: .1rem .4rem; font-size: .8rem; line-height: 1.2; }
.icone-btn:disabled { opacity: .35; cursor: default; }
.pessoal { background: var(--revisao-fundo); color: var(--revisao); border-radius: var(--raio-etiqueta); padding: 0 .3rem; font-size: .7rem; font-weight: 600; }
details.grupo-campos { border: 1px solid var(--borda); border-radius: var(--raio-botao); }
details.grupo-campos summary { cursor: pointer; padding: .45rem .65rem; font-weight: 600; font-size: .9rem; }
details.grupo-campos[open] summary { border-bottom: 1px solid var(--borda); }
details.grupo-campos .check { padding: .2rem .65rem; font-size: .88rem; }
details.grupo-campos .check:last-child { padding-bottom: .5rem; }
.filtros-montagem { display: flex; flex-direction: column; gap: .7rem; }
.filtro-multi { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .3rem; }
.filtro-multi legend { font-size: .9rem; font-weight: 600; margin-bottom: .3rem; padding: 0; }
.chip-check { flex-direction: row; align-items: center; gap: .3rem; font-weight: 400; font-size: .82rem; border: 1px solid var(--borda); border-radius: var(--raio-pilula); padding: .15rem .6rem; cursor: pointer; }
.chip-check:has(input:checked) { background: var(--realce); border-color: var(--primaria); color: var(--primaria); font-weight: 600; }
.chip-check input { accent-color: var(--primaria); margin: 0; }
.aviso-lgpd { background: var(--revisao-fundo); border-radius: var(--raio-campo); padding: .5rem .6rem; color: var(--revisao); }
.nota { font-size: .85rem; margin: 0; }

.rel-lado { display: flex; flex-direction: column; gap: .8rem; min-width: 0; }
.rel-barra { display: flex; justify-content: space-between; align-items: center; gap: .6rem; flex-wrap: wrap; }
.rel-lado .explica { margin: 0; }
.previa-rel { transition: opacity .2s; min-width: 0; }
.previa-rel.atualizando { opacity: .55; }
.previa-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: .8rem; flex-wrap: wrap; margin-bottom: .6rem; }
.filtros-rel { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .7rem; }
.filtros-rel .chip { cursor: default; font-weight: 500; }
.tabela-rel { overflow: auto; max-height: 70vh; border: 1px solid var(--borda); border-radius: var(--raio-botao); }
.tabela-rel table { font-size: .85rem; }
.tabela-rel th { position: sticky; top: 0; z-index: 1; background: var(--primaria); color: #fff; white-space: nowrap; }
.tabela-rel td { padding: .4rem .7rem; }
.tabela-rel tbody tr:nth-child(even):not(.grupo-rel) td { background: var(--tabela-cab); }
.tabela-rel tr.grupo-rel td { background: var(--realce); color: var(--primaria); font-weight: 700; }

@media (max-width: 1100px) {
  .rel-grade { grid-template-columns: minmax(0, 1fr); }
  .rel-montagem { position: static; max-height: none; }
}
@media (max-width: 700px) {
  .tipos-rel { grid-template-columns: minmax(0, 1fr); }
}
/* Célula cresce até ~30 caracteres sem quebrar; texto mais longo quebra dentro desse limite. */
.tabela-rel .cel { display: block; width: max-content; max-width: 30ch; }

/* ---------- ajuda de login e situação do acesso ---------- */
.login-ajuda { width: 100%; text-align: left; margin-top: .9rem; border-top: 1px solid var(--borda); padding-top: .7rem; font-size: .88rem; }
.login-ajuda summary { cursor: pointer; color: var(--primaria); font-weight: 600; text-align: center; list-style-position: inside; }
.login-ajuda dl { margin: .7rem 0 0; }
.login-ajuda dt { font-weight: 700; color: var(--texto); margin-top: .6rem; }
.login-ajuda dd { margin: .15rem 0 0; color: var(--suave); line-height: 1.45; }
.acesso-usuario small { display: block; margin-top: .15rem; font-size: .78rem; }

/* ---------- reprocessar o que a IA não leu ---------- */
.reprocessar { margin-bottom: 1rem; border-left: 4px solid var(--accent); display: flex; flex-direction: column; gap: .6rem; }
.reprocessar.concluido { border-left-color: var(--aw-verde); }
.reprocessar h3 { display: flex; align-items: center; gap: .5rem; }
.reprocessar .barra { height: 8px; }
.reprocessar .barra i { background: var(--primaria); transition: width .4s; }
.reprocessar details ul { margin: .4rem 0 0; padding-left: 1.2rem; font-size: .9rem; }
.tabela-nao-lidos { border: 1px solid var(--borda); border-radius: var(--raio-botao); overflow: auto; max-height: 60vh; }
.tabela-nao-lidos table { font-size: .88rem; }
.tabela-nao-lidos td { vertical-align: top; }
.tabela-nao-lidos td:nth-child(3) { min-width: 18rem; }

/* ---------- recusados aguardando o fornecedor ---------- */
.filtro-recusa { margin-bottom: .8rem; }
.chip-filtro { border-radius: var(--raio-pilula); padding: .3rem .8rem; font-size: .88rem; }
.chip-filtro span { background: var(--neutro-fundo); border-radius: var(--raio-pilula); padding: 0 .45rem; font-size: .78rem; margin-left: .2rem; }
.chip-filtro.ativo { background: var(--realce); border-color: var(--primaria); color: var(--primaria); font-weight: 600; }
.col-vertical select { min-width: 9.5rem; }
small.atraso { color: var(--erro); font-weight: 600; }
.ultimo-email { margin: .6rem 0; }
.ultimo-email .selo { margin-left: .3rem; }
.por-motivo { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; font-size: .88rem; }
.chip-motivo { background: var(--neutro-fundo); border-radius: var(--raio-pilula); padding: .15rem .6rem; }

/* ---------- saúde da IA ---------- */
.dados-ia { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; margin: 0 0 1rem; font-size: .95rem; }
.dados-ia dt { font-weight: 600; color: var(--suave); }
.dados-ia dd { margin: 0; }
tr.total-linha td { font-weight: 600; background: var(--realce); }
@media (max-width: 700px) { .dados-ia { grid-template-columns: minmax(0, 1fr); } .dados-ia dd { margin-bottom: .4rem; } }
td.exemplos a { display: inline-block; min-width: 1.6rem; text-align: center; padding: .1rem .3rem; border: 1px solid var(--borda); border-radius: var(--raio-mensagem); margin: 0 .1rem; text-decoration: none; }

/* ---------- lançamento no GPA: checklist ---------- */
.item-gpa { display: flex; flex-direction: column; gap: .25rem; }
.andamento-gpa { font-size: .85rem; color: var(--suave); padding: 0 .4rem; }
.progresso-gpa { display: flex; flex-direction: column; gap: .35rem; margin-bottom: 1rem; font-size: .95rem; }
.progresso-gpa .barra { height: 8px; }
.progresso-gpa .barra i { background: var(--aw-verde); transition: width .3s; }
ol.gpa li { display: flex; align-items: stretch; }
ol.gpa li .marcar { display: flex; align-items: center; padding: 0 .2rem 0 .7rem; cursor: pointer; flex: none; }
ol.gpa li .marcar input { accent-color: var(--aw-verde); width: 1.05rem; height: 1.05rem; }
ol.gpa li .copiar { flex: 1; }
ol.gpa li.feito .copiar { background: var(--ok-fundo); }
.quem-gpa { display: block; font-size: .75rem; color: var(--ok); font-weight: 600; margin-top: .1rem; }
ul.anexos-gpa { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .2rem; font-size: .92rem; }
.confirmar-gpa { margin-top: 1rem; display: flex; flex-direction: column; gap: .6rem; border-left: 4px solid var(--primaria); }
.confirmar-gpa h3 { margin: 0; }
#sessao { flex-wrap: wrap; }
#sessao .versao { flex-basis: 100%; font-size: .7rem; color: var(--lateral-versao); margin-top: .2rem; }

/* ---------- auditoria das recusas ---------- */
.numeros-auditoria { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: .6rem; margin: .4rem 0 1rem; }
.numeros-auditoria > div { background: #f5f8f8; border: 1px solid var(--borda); border-radius: var(--raio-botao); padding: .6rem .7rem; display: flex; flex-direction: column; gap: .1rem; }
.numeros-auditoria b { font-size: 1.35rem; color: var(--primaria); }
.numeros-auditoria small { color: var(--suave); font-size: .8rem; line-height: 1.25; }
.numeros-auditoria .destaque { border-color: var(--aw-amarelo); background: var(--revisao-fundo); }
.caixa-auditoria { margin-top: .5rem; padding: .55rem .75rem; border-radius: var(--raio-botao); background: var(--info-fundo); font-size: .9rem; }
.caixa-auditoria.contestada { background: var(--revisao-fundo); }
.caixa-auditoria details { margin-top: .3rem; }

/* Retirada da credencial: dropdown + data na mesma linha */
.linha-selos { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.retirada-inline { display: inline-flex; align-items: center; gap: .35rem; flex-wrap: wrap; }
.retirada-inline select, .retirada-inline input { font: inherit; font-size: .85rem; padding: .2rem .4rem; border: 1px solid var(--borda); border-radius: var(--raio-mensagem); background: #fff; width: auto; }
.retirada-inline input[hidden] { display: none; }
.cartao.retirada { margin-top: 1rem; display: flex; flex-direction: column; gap: .4rem; }
.cartao.retirada > small:first-child { text-transform: uppercase; letter-spacing: .06em; font-size: .72rem; font-weight: 700; }
.colab.clicavel { cursor: pointer; }

/* ---------- fluxo humano: aprovar por cima, corrigir a leitura, endereço que vale, lançamento ---------- */
.modal .caixa.larga { width: min(760px, 100%); }
/* FO.00123 gerada pelo portal: ficha (valor e origem de cada campo) e escolha do lote */
.ficha-fo { max-height: 45vh; margin: .6rem 0 1rem; }
.ficha-fo td:first-child { white-space: nowrap; font-weight: 600; }
.lista-fo { display: grid; gap: .35rem; max-height: 50vh; overflow: auto; margin: .6rem 0; padding: .2rem; }
.cola-siscaer { margin-bottom: .9rem; }
.cola-siscaer .copiar:disabled { cursor: default; opacity: .6; }
.modal .caixa h3 { font-size: .95rem; margin: .8rem 0 .4rem; }
.modal .caixa .campos { margin: .6rem 0; }
.modal .caixa textarea { width: 100%; }
details.excecao { margin: .6rem 0; padding: .6rem .8rem; border: 1px solid var(--borda); border-radius: var(--raio-botao); background: var(--tabela-cab); }
details.excecao summary { cursor: pointer; font-weight: 600; }
.cartao.referencias { margin-bottom: 1rem; border-left: 4px solid var(--primaria); }
.cartao.referencias h3 { margin: 0 0 .5rem; font-size: .95rem; }
.cartao.referencias dl { display: grid; grid-template-columns: minmax(12rem, auto) 1fr; gap: .3rem .9rem; margin: 0 0 .4rem; font-size: .93rem; }
.cartao.referencias dt { color: var(--suave); }
.cartao.referencias dt small { display: block; font-size: .75rem; }
.cartao.referencias dd { margin: 0; overflow-wrap: anywhere; font-weight: 600; }
@media (max-width: 640px) { .cartao.referencias dl { grid-template-columns: 1fr; } .cartao.referencias dd { margin-bottom: .3rem; } }
.cartao.ressalvas-gpa { margin-bottom: 1rem; border-left: 4px solid var(--aw-amarelo); }
.cartao.ressalvas-gpa h3, .cartao.ressalvas-gpa > p { margin: .8rem 1rem .4rem; }
.confirmar-gpa .pend { margin: 0; }

/* ---------- visão executiva v3: empresa → colaboradores × documentos ---------- */
/* Tudo dentro de .exec3 para não colidir com o resto do portal (.selo, .chip-filtro...). */
/* A matriz usa a largura inteira da tela (as outras telas continuam com o limite de leitura de main). */
main#app:has(> .exec3) { max-width: none; }
.exec3 {
  --x-verde: var(--aw-verde); --x-amarelo: var(--aw-amarelo); --x-vermelho: var(--aw-red); --x-azul: var(--aw-blue); --x-prata: var(--aw-prata);
  --x-linha: #e8eeee; --w-nome: 270px;
  font-family: var(--fonte-texto);
}
.exec3 button { font: 600 13px var(--fonte-titulo); border: 1px solid var(--borda); background: #fff; color: var(--texto); border-radius: var(--raio-botao); padding: 6px 12px; cursor: pointer; }
.exec3 button:hover { border-color: var(--primaria); color: var(--primaria); }
.exec3 .x-painel { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio-painel); padding: 12px 14px; margin-bottom: 12px; display: grid; gap: 10px; }
.exec3 .x-fila { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: center; }
.exec3 .x-conteudo { display: contents; }
.exec3 .x-rotulo { font: 700 11px var(--fonte-titulo); text-transform: uppercase; letter-spacing: .06em; color: var(--suave); }
.exec3 .x-busca { flex: 0 1 300px; border: 1px solid var(--borda); border-radius: var(--raio-botao); padding: 6px 10px; font: inherit; }
.exec3 .chip { border-radius: var(--raio-pilula); padding: 4px 11px; font: 600 12.5px var(--fonte-titulo); display: inline-flex; gap: 6px; align-items: center; }
.exec3 .chip b { color: var(--suave); }
.exec3 .chip.ativo { background: var(--realce); border-color: var(--realce-borda); color: var(--primaria); }
.exec3 .chip.vertical.ativo { background: var(--primaria); border-color: var(--primaria); color: #fff; }
.exec3 .chip.vertical.ativo b { color: #cfeeee; }
/* Quadro de cima: a linha da Vertical fica sempre à vista; a busca e os filtros de situação recolhem. */
.exec3 .x-topo { row-gap: 8px; }
.exec3 .x-direita { margin-left: auto; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: flex-end; }
.exec3 .x-painel.recolhido { padding: 8px 14px; }
.exec3 .x-painel.recolhido .x-mais { display: none; }
.exec3 .x-mais { padding-top: 10px; border-top: 1px solid var(--x-linha); }
.exec3 .x-icone { font-size: 18px; line-height: 1; padding: 4px 12px; letter-spacing: 1px; }
.exec3 .x-icone small { font: 700 11px var(--fonte-titulo); color: var(--primaria); letter-spacing: 0; vertical-align: 2px; }
.exec3 .x-alternar-painel { color: var(--primaria); }
.exec3 .chip.lembrete { background: var(--realce); border-color: var(--realce-borda); color: var(--primaria); }
.exec3 .x-ponto { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex: none; }
.exec3 .x-ponto.vermelho { background: var(--x-vermelho); }
.exec3 .x-ponto.amarelo { background: var(--x-amarelo); }
.exec3 .x-ponto.cinza { background: #aeb8b8; }
.exec3 .x-ponto.azul-claro { background: #9cc0f0; }
.exec3 .x-ponto.tiffany { background: #00c2bf; }
.exec3 .x-ponto.azul { background: var(--x-azul); }
.exec3 .x-ponto.verde { background: var(--x-verde); }
/* Legenda: linha discreta embaixo da tabela. */
.exec3 .x-legenda { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 12.5px; color: var(--suave); align-items: center; margin: 8px 4px 0; }
.exec3 .x-legenda span { display: inline-flex; align-items: center; gap: 5px; }
.exec3 .x-menu { position: relative; }
.exec3 .x-pop { position: absolute; top: calc(100% + 6px); right: 0; z-index: 20; background: #fff; border: 1px solid var(--borda); border-radius: var(--raio-painel); box-shadow: var(--sombra-pop); padding: 8px; width: 360px; display: grid; gap: 2px; }
.exec3 .x-pop[hidden] { display: none; }
.exec3 .x-pop-titulo { font-size: 12px; color: var(--suave); padding: 2px 8px 6px; }
.exec3 .x-pop-titulo b { color: var(--texto); }
.exec3 .x-pop-acoes { display: flex; gap: 8px; padding: 8px 8px 2px; margin-top: 4px; border-top: 1px solid var(--x-linha); }
.exec3 #x-lista-grupos { display: grid; gap: 2px; }
.exec3 .item-grupo { display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: var(--raio-botao); cursor: pointer; font: 600 13px var(--fonte-titulo); user-select: none; }
.exec3 .item-grupo:hover { background: var(--realce); }
.exec3 .item-grupo .caixa { width: 18px; height: 18px; border-radius: var(--raio-etiqueta); border: 2px solid #9fb9b9; display: grid; place-items: center; font-size: 12px; color: #fff; flex: none; }
.exec3 .item-grupo.ativo .caixa { background: var(--primaria); border-color: var(--primaria); }
.exec3 .item-grupo .n { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: #e3e9e9; color: var(--suave); font-size: 11px; font-weight: 800; flex: none; }
.exec3 .item-grupo.ativo .n { background: var(--primaria); color: #fff; }
.exec3 .item-grupo small { margin-left: auto; color: var(--suave); font-weight: 400; white-space: nowrap; }

/* ícones de situação */
.exec3 .ic { width: 24px; height: 24px; border-radius: 50%; display: inline-grid; place-items: center; font: 800 12.5px var(--fonte-titulo); line-height: 1; flex: none; font-style: normal; }
.exec3 .ic.a { background: #dcf3e5; color: var(--ok); }
.exec3 .ic.c { background: var(--x-amarelo); color: var(--tinta-amarelo); letter-spacing: -.5px; }
.exec3 .ic.r { background: var(--x-vermelho); color: #fff; }
.exec3 .ic.p { border: 2px dashed var(--x-prata); }
.exec3 .ic.n { color: #c3cbcb; font-weight: 600; }
.exec3 .ic.s { background: var(--info-fundo); color: var(--info); box-shadow: inset 0 0 0 2px var(--x-azul); font-size: 11px; }

/* matriz: rola na horizontal e na vertical, com cabeçalho e as duas primeiras colunas fixos */
.exec3 .x-quadro { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio-painel); overflow: auto; max-height: max(360px, calc(100vh - 230px)); box-shadow: var(--sombra); position: relative; }
.exec3 table { border-collapse: separate; border-spacing: 0; table-layout: fixed; font-size: 14px; }
.exec3 th, .exec3 td { padding: 0; text-transform: none; letter-spacing: normal; border-bottom: 0; vertical-align: middle; }
.exec3 th { font-size: 12px; color: var(--texto); background: #fff; }
.exec3 thead th { position: sticky; background: #fff; z-index: 3; font-family: var(--fonte-titulo); }
.exec3 thead tr.g th { top: 0; height: 46px; }
.exec3 thead tr.d th { top: 46px; border-bottom: 2px solid var(--primaria); vertical-align: bottom; }
.exec3 th.grupo { text-align: left; padding: 0 6px; border-left: 3px solid #fff; overflow: hidden; }
.exec3 th.grupo .alternar { display: flex; align-items: center; gap: 5px; border: 0; background: transparent; padding: 0; font: 700 12.5px var(--fonte-titulo); color: var(--primaria); max-width: 100%; text-align: left; line-height: 1.15; }
.exec3 th.grupo .alternar:hover { text-decoration: underline; }
.exec3 th.grupo .n { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--primaria); color: #fff; font-size: 11px; flex: none; }
.exec3 th.grupo .sinal { display: inline-grid; place-items: center; width: 16px; height: 16px; border-radius: var(--raio-etiqueta); border: 1px solid #9fb9b9; background: #fff; font-size: 12px; line-height: 1; flex: none; }
/* O nome do agrupador quebra em duas linhas em vez de ser cortado (min-width: 0 deixa o item encolher no flex). */
.exec3 th.grupo .nome-grupo { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-size: 12px; min-width: 0; white-space: normal; }
.exec3 th.grupo.recolhido { vertical-align: top; padding: 8px 6px; border-bottom: 2px solid var(--primaria); }
.exec3 th.grupo.recolhido .alternar { flex-direction: column; align-items: flex-start; gap: 4px; width: 100%; }
.exec3 th.grupo.recolhido .topo { display: flex; gap: 5px; }
.exec3 th.grupo.recolhido .nome-grupo { -webkit-line-clamp: 3; font-size: 11.5px; }
.exec3 th.grupo.recolhido small { color: var(--suave); font: italic 400 10.5px var(--fonte-titulo); }
/* Cabeçalho de documento: o nome em até 3 linhas, todos alinhados pelo topo. */
.exec3 thead tr.d th.x-doc { vertical-align: top; padding: 8px 8px 10px; }
.exec3 .x-rotulo-doc { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font: 600 12px/1.25 var(--fonte-titulo); color: #1f2a2b; }
.exec3 th.x-doc.novo .x-rotulo-doc { color: var(--info); }
.exec3 th.x-doc { padding: 6px 6px 8px; font-size: 11.5px; font-weight: 600; color: #1f2a2b; text-align: center; line-height: 1.2; }
.exec3 th.x-doc.novo { color: var(--info); background: repeating-linear-gradient(135deg, #fff, #fff 6px, #f1f6fd 6px, #f1f6fd 12px) !important; }
.exec3 thead .tom0 { background-color: #fff; } .exec3 thead .tom1 { background-color: #f1f6f6; }
.exec3 .inicio-grupo { border-left: 2px solid #c5d8d8 !important; }
.exec3 .fixa1 { position: sticky; left: 0; z-index: 2; }
.exec3 .fixa2 { position: sticky; left: var(--w-nome); z-index: 2; border-right: 2px solid var(--primaria); }
.exec3 thead .fixa1, .exec3 thead .fixa2 { z-index: 6; background: #fff; }
.exec3 .x-quadro.rolou .fixa2 { box-shadow: 6px 0 8px -6px rgba(0, 60, 62, .35); }
.exec3 thead tr.d th.fixa1, .exec3 thead tr.d th.fixa2 { text-align: left; padding: 0 12px 8px; font-size: 12px; color: var(--suave); }
.exec3 .canto { display: flex; gap: 6px; align-items: center; padding: 0 10px; }
.exec3 .canto button { padding: 3px 8px; font-size: 12px; }
.exec3 .canto span { font: 700 11px var(--fonte-titulo); text-transform: uppercase; letter-spacing: .06em; color: var(--suave); }
.exec3 tbody td { height: 40px; border-bottom: 1px solid var(--x-linha); text-align: center; background: #fff; background-clip: padding-box; }
.exec3 tbody td.celula { cursor: pointer; }
.exec3 tr.total td { background: #e2eeee !important; border-bottom: 2px solid var(--primaria); height: 48px; }
.exec3 tr.total .nome { color: var(--primaria); }
.exec3 tr.empresa td { background: #eef4f4; border-top: 1px solid #c9dada; height: 46px; }
.exec3 tr.empresa td.fixa1::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--primaria); }
.exec3 .nome { text-align: left; padding: 0 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.exec3 tr.x-colab .nome { padding-left: 42px; }
.exec3 .nome a { color: #2b3435; text-decoration: none; }
.exec3 .nome a:hover { color: var(--primaria); text-decoration: underline; }
.exec3 tr.empresa .nome, .exec3 tr.total .nome { font: 700 13.5px var(--fonte-titulo); }
.exec3 .nome small { display: block; color: var(--suave); font: 400 11.5px var(--fonte-titulo); margin-top: 1px; }
.exec3 tr.empresa .nome small { margin-left: 32px; }
.exec3 .abrir { width: 22px; height: 22px; border-radius: var(--raio-mensagem); border: 1px solid #9fb9b9; background: #fff; color: var(--primaria); font: 800 14px/1 var(--fonte-titulo); padding: 0; margin-right: 10px; vertical-align: middle; }
.exec3 .abrir:hover { background: var(--realce); }
.exec3 .etapa { text-align: left; padding: 0 12px; }
.exec3 .selo-x { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; border-radius: var(--raio-pilula); font: 700 11.5px var(--fonte-titulo); padding: 2px 9px; white-space: nowrap; vertical-align: middle; }
.exec3 .selo-x.forn { background: var(--neutro-fundo); color: var(--suave); }
.exec3 .selo-x.recusa { background: var(--erro-fundo); color: var(--erro); }
.exec3 .selo-x.aw { background: var(--revisao-fundo); color: var(--revisao); }
.exec3 .selo-x.pronto { background: var(--realce); color: var(--primaria); box-shadow: inset 0 0 0 1px var(--realce-borda); }
.exec3 .selo-x.gru { background: var(--info-fundo); color: var(--info); }
.exec3 .selo-x.cred { background: var(--ok-fundo); color: var(--ok); }
.exec3 .pct { display: block; font-size: 12px; color: var(--suave); white-space: nowrap; }
.exec3 .pct b { font-size: 15px; color: var(--texto); }
/* agregados (empresa e total): quantos ainda não estão ok, na cor do pior caso; tudo ok = ✓ discreto */
.exec3 .agg .n { display: inline-block; border-radius: var(--raio-pilula); padding: 3px 10px; font: 700 12.5px var(--fonte-titulo); }
.exec3 .agg .n.r { color: var(--erro); background: var(--erro-fundo); }
.exec3 .agg .n.c { color: var(--revisao); background: var(--revisao-fundo); }
.exec3 .agg .n.p { color: #4a5455; background: var(--neutro-fundo); }
.exec3 .agg .n.ok { color: #5fae84; font-size: 15px; padding: 0; }
.exec3 .agg .n.duas-linhas { white-space: nowrap; line-height: 1.15; border-radius: var(--raio); padding: 3px 9px; font-size: 12px; }
/* documentos da empresa: a situação fica só na linha da empresa; nas linhas dos colaboradores a coluna fica vazia, com
   um fundo leve contínuo que desce da linha da empresa (lê como "é da empresa") */
.exec3 tbody td.x-da-empresa { background: #f2f7f7; border-bottom-color: #f2f7f7; }
.exec3 tr.empresa:has(+ tr.x-colab) td.doc-empresa { border-bottom-color: #eef4f4; }
.exec3 .x-amostra-empresa { display: inline-block; width: 22px; height: 16px; border-radius: 3px; background: #f2f7f7; border: 1px solid #d5e3e3; }
/* resumo de grupo recolhido */
.exec3 .pilula { display: inline-flex; align-items: center; gap: 6px; border-radius: var(--raio-pilula); padding: 2px 10px 2px 3px; font: 700 12px var(--fonte-titulo); }
.exec3 .pilula .ic { width: 20px; height: 20px; font-size: 11px; }
.exec3 .pilula.a { color: #4f9c72; }
.exec3 .pilula.c { background: var(--revisao-fundo); color: var(--revisao); }
.exec3 .pilula.r { background: var(--erro-fundo); color: var(--erro); }
.exec3 .pilula.p { background: #eef1f1; color: var(--suave); }
.exec3 .pilula.n { color: #b9c2c2; }
.exec3 tbody tr:hover td { box-shadow: inset 0 9999px rgba(0, 222, 219, .07); }
.exec3 .coluna-ativa { box-shadow: inset 0 9999px rgba(0, 222, 219, .12) !important; }
.exec3 td.x-vazio { padding: 30px; color: var(--suave); }
.exec3 .x-nota { font-size: .82rem; margin: .6rem 0 0; }
.exec3 .x-tooltip { position: fixed; z-index: 50; pointer-events: none; background: #1a2021; color: #fff; font: 12.5px/1.4 var(--fonte-titulo); border-radius: var(--raio-botao); padding: 8px 11px; max-width: 340px; box-shadow: var(--sombra-tooltip); }
.exec3 .x-tooltip[hidden] { display: none; }
.exec3 .x-tooltip b { color: var(--accent); }
.exec3 .x-tooltip small { color: #b9c6c6; display: block; margin-top: 3px; }

/* mobilização prevista e vertical (página da empresa) */
.exec-mob { margin: 0 0 1.2rem; }
.exec-mob form label { min-width: 180px; }
.exec-mob form button { align-self: flex-end; }
@media (max-width: 700px) {
  .exec-mob form label { min-width: 0; flex: 1 1 100%; }
  .exec3 .x-busca { flex: 1 1 100%; }
}
@media print {
  @page { size: landscape; margin: 10mm; }
  .lateral, #aviso, .exec-sem-impressao { display: none !important; }
  .estrutura { display: block; }
  main { max-width: none; padding: 0; }
  .cartao { box-shadow: none; break-inside: avoid; }
  .barra i, .selo, .resp, .exec3 .ic, .exec3 .selo-x, .exec3 .agg .n, .exec3 .pilula, .exec3 tr.total td, .exec3 tr.empresa td, .exec3 td.x-da-empresa, .exec3 th { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  /* Papel não rola: a matriz sai inteira (com os grupos que estiverem abertos na tela). */
  .exec3 .x-quadro { overflow: visible; max-height: none; box-shadow: none; }
  .exec3 thead th, .exec3 .fixa1, .exec3 .fixa2 { position: static; }
}

/* Teste de regressão (Saúde da IA): piora em vermelho; o resto discreto. */
.alerta-regressao { background: var(--erro-fundo); border-left: 4px solid var(--erro); color: var(--erro); border-radius: 0 var(--raio) var(--raio) 0; padding: .75rem 1rem; margin-bottom: 1rem; }
.numeros-auditoria .ruim { border-color: var(--erro); background: var(--erro-fundo); }
.numeros-auditoria .ruim b { color: var(--erro); }
#regressao h3 { margin: 1.2rem 0 .3rem; }
#regressao details { margin: .6rem 0; }
#regressao summary { cursor: pointer; font-weight: 600; color: var(--primaria); }
#regressao .piorou { color: var(--erro); }

/* Calendário (#/calendario): uma cor por tipo de data marcada, no ponto da legenda, no dia e na lista. */
.ev-obra { --ev: var(--ev-obra); } .ev-treino { --ev: var(--ev-treino); } .ev-gpa { --ev: var(--ev-gpa); } .ev-reprovado { --ev: var(--ev-reprovado); }
.ev-aprovado { --ev: var(--ev-aprovado); } .ev-agendada { --ev: var(--ev-agendada); } .ev-retirada { --ev: var(--ev-retirada); } .ev-vence { --ev: var(--ev-vence); }
.cal-ponto { display: inline-block; width: .55rem; height: .55rem; border-radius: 50%; background: var(--ev, var(--suave)); margin-right: .35rem; flex: none; }
.cal-barra { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem 1rem; margin-bottom: .7rem; }
.cal-nav { display: flex; align-items: center; gap: .5rem; }
.cal-nav h2 { margin: 0; min-width: 11rem; text-align: center; font-size: 1.15rem; }
.cal-nav > button:not(.pequeno) { width: 2.2rem; height: 2.2rem; padding: 0; font-size: 1.2rem; line-height: 1; display: inline-flex; align-items: center; justify-content: center; }
.cal-opcoes { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.cal-opcoes select { max-width: 22rem; }
.cal-visao { margin: 0; border-bottom: 0; overflow: visible; }
.cal-tipos { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.cal-tipos .chip-filtro { display: inline-flex; align-items: center; }
.cal-mes { padding: .5rem; }
.cal-grade { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 1px; background: var(--borda); border: 1px solid var(--borda); border-radius: var(--raio-mensagem); overflow: hidden; }
.cal-cab { background: #f7f9f9; text-align: center; font-size: .75rem; font-weight: 600; color: var(--suave); padding: .35rem 0; font-family: var(--fonte-titulo); }
.cal-dia { all: unset; box-sizing: border-box; background: var(--cartao); min-height: 6.2rem; padding: .3rem .35rem; display: flex; flex-direction: column; gap: .15rem; cursor: pointer; overflow: hidden; }
.cal-dia:hover { background: #f7fbfb; }
.cal-dia:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.cal-dia.fora { background: #fafbfb; }
.cal-dia.fora .cal-num { color: var(--aw-prata); }
.cal-dia.sel { box-shadow: inset 0 0 0 2px var(--primaria); }
.cal-num { font-size: .82rem; font-weight: 600; color: var(--suave); align-self: flex-start; min-width: 1.5rem; text-align: center; border-radius: var(--raio-pilula); }
.cal-dia.hoje .cal-num { background: var(--primaria); color: #fff; }
.cal-linha { display: flex; align-items: center; font-size: .74rem; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--texto); }
.cal-linha b { margin-right: .25rem; }
.cal-linha.alerta, .cal-ev.alerta .cal-det { color: var(--erro); }
.cal-mais { font-size: .72rem; color: var(--suave); }
.cal-detalhe { margin-top: .8rem; }
.cal-detalhe h3, .cal-lista h3 { margin: 0 0 .4rem; font-size: 1rem; }
.cal-eventos { list-style: none; margin: 0; padding: 0; }
.cal-ev { display: grid; grid-template-columns: 3.2rem 11rem minmax(0, 1.3fr) minmax(0, 1fr); gap: .2rem .8rem; align-items: baseline; padding: .45rem 0; border-top: 1px solid var(--borda); font-size: .9rem; }
.cal-ev:first-child { border-top: 0; }
.cal-hora { color: var(--suave); font-variant-numeric: tabular-nums; }
.cal-rotulo { display: inline-flex; align-items: center; font-weight: 600; color: var(--ev); }
.cal-quem small { display: block; font-size: .78rem; }
.cal-det { color: var(--suave); }
.cal-lista-dia + .cal-lista-dia { margin-top: 1rem; padding-top: .8rem; border-top: 2px solid var(--borda); }
.cal-lista-dia.hoje h3 { color: var(--primaria); }
@media (max-width: 700px) {
  .cal-nav h2 { min-width: 0; font-size: 1rem; }
  .cal-dia { min-height: 3.4rem; padding: .2rem; }
  .cal-linha { font-size: 0; }
  .cal-linha b { display: none; }
  .cal-linha .cal-ponto { margin: 0; }
  .cal-dia { flex-direction: row; flex-wrap: wrap; align-content: flex-start; gap: .2rem; }
  .cal-num { flex-basis: 100%; }
  .cal-ev { grid-template-columns: 1fr; gap: .1rem; }
  .cal-hora:empty { display: none; }
}
