/* =========================================================
   Portal SynConsult — Design System
   Paleta e tipografia conforme Manual de Identidade Visual
   ========================================================= */

@font-face {
  font-family: 'Neo Sans Pro';
  src: url('../fonts/NeoSansPro-Regular.woff2') format('woff2'),
       url('../fonts/NeoSansPro-Regular.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('../fonts/NeoSansPro-Medium.woff2') format('woff2'),
       url('../fonts/NeoSansPro-Medium.woff') format('woff');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('../fonts/NeoSansPro-Bold.woff2') format('woff2'),
       url('../fonts/NeoSansPro-Bold.woff') format('woff');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Neo Sans Pro';
  src: url('../fonts/NeoSansPro-Black.woff2') format('woff2'),
       url('../fonts/NeoSansPro-Black.woff') format('woff');
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}
/* Se os arquivos de fonte acima não existirem, o navegador usa a pilha de
   fallback abaixo automaticamente — nenhuma ação é necessária para o site
   funcionar. Para ativar a Neo Sans Pro de verdade, copie os arquivos
   .woff2/.woff licenciados para assets/fonts/ com esses nomes. */

:root {
  --verde: #0A2924;
  --verde-rgb: 10, 41, 36;
  --amarelo: #FFAD00;
  --amarelo-rgb: 255, 173, 0;
  /* ---------- O ouro quando NÃO é fundo (26/08/2026) ----------
     #FFAD00 é a cor da marca e funciona como FUNDO (texto escuro por cima).
     Como TEXTO sobre branco ele rende contraste 1,9 — ilegível. Por isso o
     botão de ação contornado usa um ouro escurecido: 5,8 sobre branco, acima
     do mínimo AA. A borda pode ser a cor cheia, que não precisa de contraste
     de leitura. O modo escuro troca as duas logo abaixo. */
  --amarelo-txt:   #8A5D00;
  --amarelo-linha: rgba(255,173,0,.60);
  --amarelo-fraco: rgba(255,173,0,.12);
  --branco: #F7F7F7;
  --preto: #262626;
  --gradiente: linear-gradient(135deg, #FFAD00 0%, #0A2924 100%);
  --gradiente-suave: linear-gradient(135deg, rgba(255,173,0,0.15) 0%, rgba(10,41,36,0.05) 100%);

  --verde-hover: #0f3b33;
  --verde-claro: #143f38;
  --borda: #e3e1dc;
  --texto-muted: #6b6f6e;
  --sombra: 0 4px 20px rgba(10,41,36,0.08);
  --sombra-lg: 0 12px 40px rgba(10,41,36,0.14);
  --raio: 12px;

  /* ---------- Superfícies (05/08/2026) ----------
     Separam "cor da marca" de "cor de superfície": são estas que o modo
     escuro troca, mantendo o restante do arquivo intacto.
     --texto e --seasalt já eram usadas em duas regras sem nunca terem sido
     declaradas; a correção entra aqui junto. */
  --fundo:        #F7F7F7;
  --superficie:   #ffffff;
  --superficie-2: #fafafa;
  --texto:        #262626;
  --seasalt:      #f4f4f2;
  --linha-sutil:  rgba(10,41,36,.03);
  --overlay:      rgba(247,247,247,.7);

  --font-display: 'Neo Sans Pro', 'Poppins', 'Century Gothic', 'Segoe UI', sans-serif;
  --font-body: 'Neo Sans Pro', 'Inter', 'Segoe UI', Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body {
  margin: 0; padding: 0;
  background: var(--fundo);
  color: var(--texto);
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, .display {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--verde);
  margin: 0 0 .4em;
}
a { color: inherit; }
button { font-family: inherit; }

.eyebrow {
  text-transform: uppercase;
  letter-spacing: .14em;
  font-size: 11px;
  font-weight: 700;
  color: var(--texto-muted);
}

/* ---------- Textura de marca (diagonal "S") ---------- */
.brand-texture {
  position: relative;
  overflow: hidden;
  background: var(--verde);
}
.brand-texture::before,
.brand-texture::after {
  content: "";
  position: absolute;
  width: 220%;
  height: 90px;
  background: var(--gradiente);
  transform: rotate(-24deg);
  border-radius: 60px;
  opacity: 0.9;
}
.brand-texture::before { top: -30px; left: -60%; }
.brand-texture::after { bottom: -50px; left: -20%; opacity: .55; }
/* Correção de legibilidade: como ::before/::after usam position:absolute, o navegador os
   pinta por cima do conteúdo normal do card (h2/p), mesmo vindo antes no HTML — por isso a
   faixa diagonal dourada "lavava" o texto de destaque. Empurrando o conteúdo para sua própria
   camada de empilhamento (position:relative + z-index) ele volta a ficar acima da textura,
   com uma sombra sutil para manter contraste também nos trechos em que o texto cruza a faixa. */
.brand-texture > * { position: relative; z-index: 1; }
.brand-texture h2, .brand-texture h3, .brand-texture p { text-shadow: 0 1px 4px rgba(0,0,0,.5); }

/* ---------- Botões ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 12px 22px;
  border-radius: 999px;
  border: none;
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
  white-space: nowrap;
}
/* AÇÃO PRINCIPAL — dourado sólido. É o botão que a tela existe para receber
   (Salvar, Concluir, Criar); há um por contexto, e é o único cheio. */
.btn-primary { background: var(--amarelo); color: var(--preto); }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(255,173,0,.35); }

/* AÇÃO / FUNÇÃO — dourado contornado. Editar, Assinar, Baixar, Exportar,
   + Nova ocorrência, Relatório: fazem alguma coisa, mas não são A ação da
   tela. Contornadas, elas se destacam do texto sem disputar com a principal.

   `.btn-dark` entra aqui pelo mesmo critério e não por economia de código:
   os seis lugares em que ela é usada são todos exportação (PDF, Exportar PDF,
   Gerar PDF) ou avanço de tour — função, nunca a ação principal da tela. */
.btn-outline,
.btn-dark {
  background: transparent;
  color: var(--amarelo-txt);
  border: 1.5px solid var(--amarelo-linha);
}
.btn-outline:hover,
.btn-dark:hover {
  background: var(--amarelo-fraco);
  border-color: var(--amarelo);
  color: var(--amarelo-txt);
}
/* NEUTRO — Cancelar, Voltar, Limpar filtros, Excluir e os ícones de linha.
   São saída ou controle de lista, não ação: dourá-los faria a pessoa clicar
   em "Cancelar" achando que é o botão que resolve. A COR continua neutra por
   isso, e a conta é literal: nas telas do portal, `.btn-ghost` é "Cancelar" 48
   vezes, "Limpar filtros" 21 e "Excluir" 21.

   O que mudou em 05/09/2026 foi a MOLDURA. Ele era texto solto, sem borda
   nenhuma, e ao lado de um `.btn-outline` nem parecia botão — o mesmo defeito
   que o `neutro` do painel tinha, e que ali se resolveu dourando. Aqui não dá
   para dourar, então se resolve contornando: agora ele tem forma de botão, e
   de quebra fica da mesma ALTURA do `.btn-outline`, que já tinha 1,5px de
   borda e ficava três pixels mais alto na mesma fila.

   Os ícones de linha ficam de fora: seis molduras por linha de tabela viram
   grade dentro da grade. Eles ganham a borda só no hover, que é quando a
   pessoa precisa saber onde o clique acerta. */
.btn-ghost { background: transparent; color: var(--texto-muted); border: 1.5px solid var(--borda); }
.btn-ghost:hover { color: var(--preto); border-color: var(--texto-muted); }
.acoes-crono .btn-ghost { border-color: transparent; }
.acoes-crono .btn-ghost:hover { border-color: var(--borda); }
.btn-danger { background: #7a2020; color: #fff; }
.btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.btn:focus-visible { outline: 2px solid var(--amarelo); outline-offset: 2px; }
.btn-sm { padding: 7px 14px; font-size: 12.5px; }
.btn-icon { width: 36px; height: 36px; padding: 0; border-radius: 8px; }

/* Coluna "Ações" do Cronograma (Rodada 30): botões compactos só-ícone, sempre
   numa única linha (sem quebrar). O rótulo de cada ação aparece no tooltip
   (atributo title). O seletor .acoes-crono .btn tem especificidade maior que
   .btn-sm, então vence a folga de padding independentemente da ordem no arquivo.
   Botões com contador (📎/💬) expandem além dos 30px via min-width + width auto. */
.acoes-crono { display: flex; gap: 4px; flex-wrap: nowrap; align-items: center; }
.acoes-crono .btn { min-width: 30px; height: 30px; padding: 0 7px; font-size: 15px; line-height: 1; border-radius: 8px; flex: 0 0 auto; }
.acoes-crono .btn .crono-cont { font-size: 11px; font-weight: 700; margin-left: 3px; vertical-align: middle; }

/* Rodada 74: menu "⋯ Mais" das ações do Cronograma. A lista usa position:fixed
   (posicionada via JS) para não ser cortada pelo overflow da tabela. */
.acoes-menu { position: relative; display: inline-flex; }
.acoes-menu-lista {
  position: fixed; z-index: 1200; min-width: 200px; padding: 6px;
  background: #fff; border: 1px solid var(--borda); border-radius: 10px;
  box-shadow: var(--sombra-lg); display: flex; flex-direction: column; gap: 2px;
}
.acoes-menu-lista[hidden] { display: none; }
.acoes-menu-item {
  display: block; width: 100%; text-align: left; background: transparent; border: none;
  padding: 8px 10px; border-radius: 7px; font-size: 13.5px; color: var(--eerie, #262626);
  cursor: pointer; line-height: 1.3;
}
.acoes-menu-item:hover { background: rgba(10,41,36,.07); color: var(--verde); }
.acoes-menu-item.perigo { color: #b23b3b; }
.acoes-menu-item.perigo:hover { background: rgba(178,59,59,.09); color: #b23b3b; }

/* Rodada 75: Busca Global no topo (assets/js/busca-global.js). O painel de resultados usa
   position:absolute ancorado no wrapper; z-index alto para ficar sobre o conteúdo. */
.bg-wrap { position: relative; display: inline-flex; align-items: center; }
.bg-wrap .bg-ic {
  position: absolute; left: 10px; font-size: 13px; color: var(--texto-muted);
  pointer-events: none; line-height: 1;
}
#bg-input {
  width: 260px; max-width: 42vw; height: 36px; padding: 0 30px 0 30px;
  border: 1.5px solid var(--borda); border-radius: 10px; background: var(--superficie);
  font-size: 13.5px; color: var(--texto); outline: none;
}
#bg-input:focus { border-color: var(--verde); box-shadow: 0 0 0 3px rgba(10,41,36,.08); }
#bg-input::placeholder { color: var(--texto-muted); }
.bg-wrap .bg-atalho {
  position: absolute; right: 8px; font-size: 11px; font-weight: 700; color: var(--texto-muted);
  border: 1px solid var(--borda); border-radius: 5px; padding: 1px 6px; background: #fafafa;
  pointer-events: none; line-height: 1.4;
}
#bg-input:focus ~ .bg-atalho { display: none; }
.bg-painel {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 1300;
  width: 380px; max-width: 88vw; max-height: 60vh; overflow-y: auto;
  background: #fff; border: 1px solid var(--borda); border-radius: 12px;
  box-shadow: var(--sombra-lg); padding: 6px;
}
.bg-painel[hidden] { display: none; }
.bg-grupo-tit {
  font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
  color: var(--texto-muted); padding: 8px 10px 4px;
}
.bg-item { padding: 7px 10px; border-radius: 8px; cursor: pointer; }
.bg-item.ativo { background: rgba(10,41,36,.08); }
.bg-item-label { font-size: 13.5px; color: var(--eerie, #262626); line-height: 1.25; }
.bg-item.ativo .bg-item-label { color: var(--verde); }
.bg-item-sub { font-size: 11.5px; color: var(--texto-muted); margin-top: 1px; }
.bg-vazio { padding: 14px 12px; font-size: 13px; color: var(--texto-muted); text-align: center; }
@media (max-width: 640px) {
  #bg-input { width: 150px; }
  .bg-wrap .bg-atalho { display: none; }
}

/* Rodada 76: Tour de onboarding (assets/js/onboarding.js). Botão "?" no topo + overlay
   com "spotlight" (o anel usa um box-shadow gigante para escurecer o resto da tela). */
.btn-ajuda-tour {
  width: 32px; height: 32px; border-radius: 50%; border: 1.5px solid var(--borda);
  background: #fff; color: var(--texto-muted); font-size: 15px; font-weight: 800;
  cursor: pointer; line-height: 1; display: inline-flex; align-items: center; justify-content: center;
}
.btn-ajuda-tour:hover { color: var(--verde); border-color: var(--verde); }
#onb-overlay { position: fixed; inset: 0; z-index: 4000; }
.onb-catch { position: fixed; inset: 0; z-index: 4000; background: transparent; }
.onb-ring {
  position: fixed; z-index: 4001; border-radius: 10px; pointer-events: none;
  box-shadow: 0 0 0 9999px rgba(10, 41, 36, .58); transition: all .18s ease;
}
.onb-card {
  position: fixed; z-index: 4002; width: 320px; max-width: 90vw;
  background: #fff; border-radius: 14px; box-shadow: var(--sombra-lg); padding: 18px 18px 14px;
}
.onb-card.onb-card-centro { top: 50%; left: 50%; transform: translate(-50%, -50%); }
.onb-prog { font-size: 11px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--texto-muted); margin-bottom: 4px; }
.onb-card h4 { margin: 0 0 6px; color: var(--verde); font-size: 16px; }
.onb-card p { margin: 0 0 16px; color: var(--eerie, #262626); font-size: 13.5px; line-height: 1.45; }
.onb-acoes { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.onb-acoes .onb-nav { display: flex; gap: 8px; }

/* ===== Rodada 77 (acessibilidade — Onda 4, parte 1) ===== */
/* Skip link: fica escondido acima do topo e aparece ao receber foco pelo teclado (Tab). */
.skip-link {
  position: fixed; top: -60px; left: 12px; z-index: 5000;
  background: var(--verde); color: var(--branco); padding: 10px 16px; border-radius: 0 0 10px 10px;
  font-size: 13.5px; font-weight: 700; text-decoration: none; transition: top .15s ease;
}
.skip-link:focus { top: 0; outline: 3px solid #FAAC30; outline-offset: 2px; }

/* Foco visível por teclado em todos os elementos interativos (só no :focus-visible, para não
   aparecer no clique de mouse). Anel verde com respiro; nos itens do menu (fundo escuro) usa
   um anel claro para contraste. */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, [tabindex]:focus-visible, .nav-link:focus-visible {
  outline: 2.5px solid var(--verde); outline-offset: 2px; border-radius: 6px;
}
.sidebar .nav-link:focus-visible, .sidebar .nav-grupo-btn:focus-visible, .btn-dark:focus-visible, .brand-texture button:focus-visible {
  outline-color: #FAAC30;
}
#view-root:focus { outline: none; } /* alvo do skip link não precisa de anel visível */

/* Respeita "reduzir movimento" do sistema operacional. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important; animation-iteration-count: 1 !important;
    transition-duration: .001ms !important; scroll-behavior: auto !important;
  }
}

/* Alvos de toque mais confortáveis no celular (mín. ~40px de altura). */
@media (max-width: 640px) {
  .btn { min-height: 40px; }
  .acoes-crono .btn { min-width: 36px; height: 36px; }
  .nav-link { padding-top: 12px; padding-bottom: 12px; }
  .nav-grupo-btn { padding-top: 13px; padding-bottom: 13px; }
  .btn-ajuda-tour { width: 36px; height: 36px; }
}

/* Rodada 79: seletor de troca de projeto no cabeçalho da Área do Cliente. */
.cli-proj-switch {
  height: 34px; max-width: 260px; padding: 0 30px 0 12px; border: 1.5px solid var(--borda);
  border-radius: 9px; background: #fff; color: var(--verde); font-size: 13px; font-weight: 600;
  cursor: pointer;
}
.cli-proj-switch:focus { border-color: var(--verde); outline: none; }
@media (max-width: 640px) { .cli-proj-switch { max-width: 150px; font-size: 12px; } }

/* ---------- Inputs ---------- */
label { font-size: 13px; font-weight: 700; color: var(--verde); display: block; margin-bottom: 6px; }
.field { margin-bottom: 16px; }
input, select, textarea {
  width: 100%;
  padding: 11px 14px;
  border-radius: 8px;
  border: 1.5px solid var(--borda);
  background: var(--superficie);
  font-family: var(--font-body);
  font-size: 14px;
  /* era var(--preto): no modo escuro dava texto preto sobre a superfície verde */
  color: var(--texto);
  transition: border-color .12s ease;
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--amarelo);
  box-shadow: 0 0 0 3px rgba(255,173,0,.18);
}
textarea { resize: vertical; min-height: 90px; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.field-row-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; }
.hint { font-size: 12px; color: var(--texto-muted); margin-top: 4px; font-weight: 400; }

/* Barra de filtros compacta (ex.: aba Atividades) — mesma estrutura de .card,
   mas com fonte e campos menores para ocupar menos espaço vertical. */
.filtros-barra { padding: 12px 16px; }
.filtros-barra .field { margin-bottom: 0; }
.filtros-barra label { font-size: 11px; margin-bottom: 3px; }
.filtros-barra input, .filtros-barra select { padding: 6px 10px; font-size: 12.5px; border-radius: 6px; }
.filtros-barra .btn-sm { padding: 6px 12px; font-size: 12px; }

/* Variante em linha única (ex.: aba Atividades) — usa flexbox de verdade
   (o .field-row padrão é um CSS grid de 2 colunas, que quebraria em várias
   linhas com muitos campos) e permite que cada campo encolha abaixo da
   largura do seu conteúdo (min-width:0), evitando que um <select> com opção
   longa force a quebra de linha. Em telas muito estreitas, rola horizontal
   em vez de quebrar linha. */
.filtros-linha-unica { display: flex; flex-wrap: nowrap; align-items: flex-end; gap: 6px; overflow-x: auto; padding-bottom: 2px; }
.filtros-linha-unica .field { min-width: 0; }
.filtros-linha-unica .field input, .filtros-linha-unica .field select { min-width: 0; }

/* Barra de filtros com muitos campos (ex.: Não Conformidades, 7 campos + "Limpar filtros"):
   grade de 4 colunas garante exatamente 2 linhas em telas normais, em vez de depender de
   flex-wrap (que quebrava em 3+ linhas dependendo da largura disponível). */
.filtros-duas-linhas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px 10px; align-items: end; }
.filtros-duas-linhas .field { min-width: 0; margin-bottom: 0; }
.filtros-duas-linhas .field input, .filtros-duas-linhas .field select { width: 100%; min-width: 0; }
.filtros-duas-linhas .btn-sm { width: 100%; }
@media (max-width: 900px) { .filtros-duas-linhas { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .filtros-duas-linhas { grid-template-columns: 1fr; } }

.error-msg { background: #fdeaea; color: #7a2020; border: 1px solid #f3c8c8; padding: 10px 14px; border-radius: 8px; font-size: 13px; margin-bottom: 14px; }
.ok-msg { background: #e9f5ee; color: #1c5c3f; border: 1px solid #bfe3cf; padding: 10px 14px; border-radius: 8px; font-size: 13px; margin-bottom: 14px; }

/* ---------- Cards ---------- */
.card {
  background: var(--superficie);
  border-radius: var(--raio);
  border: 1px solid var(--borda);
  box-shadow: var(--sombra);
  padding: 24px;
}
.card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; gap: 12px; flex-wrap: wrap; }

/* ---------- Badges ---------- */
.badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 11px; border-radius: 999px; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.badge-verde { background: rgba(10,41,36,.09); color: var(--verde); }
.badge-amarelo { background: rgba(255,173,0,.18); color: #8a5a00; }
.badge-vermelho { background: #fdeaea; color: #7a2020; }
.badge-cinza { background: #eee; color: #555; }
.badge-azul { background: rgba(37,99,235,.12); color: #1d4ed8; }

/* ---------- Cronograma de Implantação (Rodada 18) — árvore de tarefas ---------- */
.crono-toggle { cursor: pointer; display: inline-block; width: 16px; text-align: center; color: var(--texto-muted); user-select: none; font-size: 11px; }
.crono-toggle:hover { color: var(--verde); }
.crono-bar-wrap { display: flex; align-items: center; gap: 8px; min-width: 110px; }
.crono-bar { flex: 1; height: 8px; border-radius: 4px; background: #eee; overflow: hidden; }
.crono-bar-fill { height: 100%; background: var(--verde); border-radius: 4px; }
.crono-bar-pct { font-size: 12px; font-weight: 700; color: var(--texto-muted); min-width: 32px; text-align: right; }

/* ---------- Tabela ---------- */
table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
th { text-align: left; font-family: var(--font-display); color: var(--verde); font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; padding: 10px 12px; border-bottom: 2px solid var(--verde); }
td { padding: 12px; border-bottom: 1px solid var(--borda); vertical-align: middle; }
/* As verticais das colunas (08/09/2026) — mesma espessura e mesmo token da
   horizontal da linha de dados. `> * + *` porque há grade com `td` no
   `thead`; `+` para o traço só aparecer ENTRE colunas, e não colado nas
   bordas do cartão. Aqui as células já têm 12px dos dois lados, então não
   precisam de recuo extra. */
thead tr > * + *, tbody tr > * + *, tfoot tr > * + * { border-left: 1px solid var(--borda); }
tbody tr:hover { background: var(--linha-sutil); }
.table-wrap { overflow-x: auto; }
.table-empty { text-align: center; padding: 48px 20px; color: var(--texto-muted); }

/* Grid de Não Conformidades: fonte compacta e cada célula em uma única linha
   (sem quebra); quando a soma das colunas passa da largura, o .table-wrap rola
   na horizontal em vez de quebrar o texto em várias linhas. */
.nc-grid { font-size: 12px; }
.nc-grid th, .nc-grid td { padding: 7px 9px; white-space: nowrap; }
.nc-grid .badge { font-size: 10.5px; padding: 3px 8px; }
.nc-grid .acoes-crono .btn { min-width: 28px; height: 28px; font-size: 14px; }

/* Grid do Cronograma (sub-visão Lista) — mesmo princípio do .nc-grid: fonte compacta e cada
   tarefa em UMA ÚNICA LINHA. Quando a soma das colunas passa da largura do card, o .table-wrap
   rola na horizontal em vez de quebrar o texto em várias linhas. O título é o único campo que
   pode ser longo demais: ele é cortado com reticências e o texto completo fica no `title`. */
.crono-grid { font-size: 12px; }
.crono-grid th, .crono-grid td { padding: 7px 9px; white-space: nowrap; }
.crono-grid .badge { font-size: 10.5px; padding: 3px 8px; }
.crono-grid .acoes-crono .btn { min-width: 28px; height: 28px; font-size: 14px; }
.crono-grid .crono-bar-wrap { min-width: 96px; }
.crono-grid .crono-bar-pct { font-size: 11px; min-width: 28px; }
.crono-tarefa-cel { display: flex; align-items: center; gap: 4px; min-width: 0; }
.crono-titulo, .crono-grid .crono-elipse {
  display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom;
}
.crono-titulo { max-width: 330px; }
.crono-grid .crono-elipse { max-width: 112px; }
@media (max-width: 1360px) { .crono-titulo { max-width: 220px; } }

/* Grid "Detalhe das despesas" (aba Despesas do módulo Projetos, Rodada 38) — mesmo
   princípio do .nc-grid: fonte compacta e cada registro em uma única linha, sem quebra;
   .table-wrap rola na horizontal quando a soma das colunas passa da largura do card. */
.desp-itens-grid { font-size: 11.5px; }
.desp-itens-grid th, .desp-itens-grid td { padding: 5px 7px; white-space: nowrap; }
.desp-itens-grid input, .desp-itens-grid select { font-size: 11.5px; padding: 3px 5px; }
.desp-itens-grid .acoes-crono .btn { min-width: 26px; height: 26px; font-size: 13px; }

/* ---------- Ordenação de colunas (clique na label do cabeçalho) ---------- */
th[data-sort-key] { cursor: pointer; user-select: none; white-space: nowrap; }
th[data-sort-key]:hover { color: var(--amarelo-dark, var(--amarelo)); }
th.th-sortable::after { content: "\21C5"; display: inline-block; margin-left: 5px; font-size: 10px; opacity: .35; }
th.th-sortable.th-sort-asc::after { content: "\2191"; opacity: 1; color: var(--amarelo); }
th.th-sortable.th-sort-desc::after { content: "\2193"; opacity: 1; color: var(--amarelo); }

/* ---------- Linha em destaque (registros do próprio usuário do Cliente) ---------- */
tbody tr.linha-minha { background: rgba(255,173,0,.10); }
tbody tr.linha-minha:hover { background: rgba(255,173,0,.18); }
tbody tr.linha-minha td:first-child { box-shadow: inset 3px 0 0 var(--amarelo); }

/* ---------- Rodada 137: legenda de status do projeto ---------- */
.status-legenda { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.status-legenda-item { display: inline-flex; align-items: center; gap: 6px; }

/* ---------- Rodada 136: Ciência Presumida (NC encerrada sem a assinatura do Cliente) ----------
   Cor própria (roxo), fora da paleta verde/dourado do portal, justamente para a linha
   saltar aos olhos no meio das assinadas (verde) e das aguardando (amarelo). */
tbody tr.linha-presumida,
tbody tr.linha-presumida.linha-minha { background: rgba(109, 40, 217, .07); }
tbody tr.linha-presumida:hover,
tbody tr.linha-presumida.linha-minha:hover { background: rgba(109, 40, 217, .15); }
tbody tr.linha-presumida td:first-child { box-shadow: inset 3px 0 0 #6d28d9; }
.badge-presumida { background: rgba(109,40,217,.12); color: #5b21b6; border: 1px solid rgba(109,40,217,.45); }
.nc-presumida-selo {
  border: 1.5px dashed #6d28d9; border-radius: 8px; background: rgba(109,40,217,.06);
  color: #5b21b6; padding: 10px 14px; margin: 4px 0;
}
.nc-presumida-selo strong { display: block; text-transform: uppercase; letter-spacing: .06em; font-size: 12.5px; }
.nc-presumida-selo .prazo { display: block; margin-top: 4px; font-size: 12px; color: #4c1d95; }

/* ---------- Login ---------- */
.login-page { min-height: 100vh; display: grid; grid-template-columns: 1.1fr 1fr; }
@media (max-width: 900px) { .login-page { grid-template-columns: 1fr; } .login-hero { display: none; } }
.login-hero {
  position: relative;
  background: linear-gradient(180deg, rgba(4,16,13,.12) 0%, rgba(4,16,13,.18) 45%, rgba(2,10,8,.82) 100%), url("data:image/jpeg;base64,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") center/cover no-repeat, var(--verde);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 56px;
  overflow: hidden;
}
.login-hero .hero-bottom { position: relative; z-index: 2; color: rgba(247,247,247,.9); max-width: 420px; text-shadow: 0 2px 14px rgba(0,0,0,.5); }
.login-hero .hero-bottom h2 { color: #fff; font-size: 28px; }
.login-form-side { position: relative; display: flex; align-items: center; justify-content: center; padding: 32px; }
.login-box { width: 100%; max-width: 380px; }
.login-symbol { width: 68px; height: auto; display: block; margin: 0 auto 26px; }
.login-box h1 { font-size: 24px; text-align: center; }
.login-box .sub { text-align: center; }
.login-box .sub { color: var(--texto-muted); margin-bottom: 28px; font-size: 14px; }

/* ---------- Shell do portal ---------- */
.shell { display: grid; grid-template-columns: 256px 1fr; min-height: 100vh; }
.sidebar {
  background: var(--verde);
  color: var(--branco);
  padding: 26px 18px;
  display: flex; flex-direction: column;
  position: relative;
  overflow: hidden;
}
.btn-menu-mobile { display: none; background: none; border: none; padding: 4px 8px; margin: 0; font-size: 21px; line-height: 1; color: var(--verde); cursor: pointer; }
.menu-overlay { display: none; position: fixed; inset: 0; background: rgba(10,41,36,.45); z-index: 49; }
.menu-overlay.aberta { display: block; }
.topbar-titulo { display: flex; align-items: center; gap: 10px; min-width: 0; }
@media (max-width: 860px) {
  .shell { grid-template-columns: 1fr; }
  .sidebar {
    display: flex; position: fixed; inset: 0 auto 0 0; z-index: 50; width: 256px;
    transform: translateX(-100%); transition: transform .2s ease;
    /* 12/09/2026 — o menu do celular não chegava ao fim.
       No desktop a barra cresce com o grid do .shell e o `overflow: hidden` da
       regra base só serve para recortar a textura de marca. No celular ela vira
       `position: fixed` com a ALTURA DA TELA — e aí o mesmo `hidden` deixa de
       recortar enfeite e passa a cortar MENU: com o grupo Administração aberto
       são 1.058px de conteúdo em 667px de tela (iPhone SE), 391px fora do
       alcance, e o dedo não rola porque `hidden` não rola. Os últimos itens —
       Configurações, Backup, Ajuda e o próprio "Sair do portal" — ficavam
       inalcançáveis, e o Backup é justamente onde o Diretor gera o pacote.
       `hidden auto` mantém o recorte horizontal da textura e devolve a rolagem
       vertical. O padding de baixo respeita a faixa do indicador do iPhone. */
    overflow: hidden auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding-bottom: calc(26px + env(safe-area-inset-bottom));
  }
  .sidebar.aberta { transform: translateX(0); }
  .btn-menu-mobile { display: inline-flex; align-items: center; justify-content: center; }
  .topbar { padding: 14px 16px; }
  .content { padding: 16px; }

  /* Rodada 116 — a segunda metade do mesmo problema, e a que valia para TODAS
     as telas (com tabela ou sem).
     A barra do topo é um flex que não quebra: busca + sino + envelope +
     "Alterar senha" + "?" + "Sair" somavam 465px numa tela de 360px. Como nada
     quebrava nem encolhia, a barra empurrava a largura da página — e o celular
     passava a exibir uma tela de 497px encolhida, que é onde o arrastar deixa
     de funcionar. Deixar quebrar em duas linhas custa altura; não deixar custa
     a página inteira. */
  .topbar { flex-wrap: wrap; row-gap: 10px; }
  .topbar-titulo { flex: 1 1 auto; }
  #topbar-actions { flex-wrap: wrap; justify-content: flex-end; gap: 10px; row-gap: 8px; min-width: 0; }
  /* A busca é o item elástico: encolhe primeiro, em vez de empurrar os botões. */
  #topbar-actions .bg-wrap { flex: 1 1 140px; min-width: 0; }
  #topbar-actions #bg-input { width: 100%; max-width: none; }
}
.sidebar .side-top { position: relative; z-index: 2; }
.sidebar .logo-wrap { padding: 0 4px 26px; }
.sidebar .logo-wrap img { width: 100%; height: auto; display: block; }
.sidebar nav { position: relative; z-index: 2; display: flex; flex-direction: column; gap: 4px; margin-top: 8px; flex: 1; }
.sidebar .nav-section-label { font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: rgba(247,247,247,.5); font-weight: 700; margin: 18px 12px 8px; }
.nav-link {
  display: flex; align-items: center; gap: 11px;
  padding: 11px 14px; border-radius: 9px;
  color: rgba(247,247,247,.82);
  text-decoration: none;
  font-size: 14px; font-weight: 600;
  cursor: pointer;
  transition: background .12s ease, color .12s ease;
}
.nav-link:hover { background: rgba(247,247,247,.08); color: #fff; }
.nav-link.active { background: var(--amarelo); color: var(--preto); }
.nav-link .ic { width: 18px; text-align: center; flex-shrink: 0; }

/* ---------- Menu lateral em grupos recolhíveis (drill down) ---------- */
/* Cada grupo é um <button> (cabeçalho, com aria-expanded) + a lista de itens, que fica
   com o atributo `hidden` quando o grupo está recolhido. Sanfona: abrir um fecha o outro. */
.nav-grupo { display: flex; flex-direction: column; }
.nav-grupo-btn {
  display: flex; align-items: center; gap: 11px; width: 100%;
  padding: 11px 14px; margin: 6px 0 0; border: none; border-radius: 9px;
  background: transparent; color: rgba(247,247,247,.82);
  font-family: inherit; font-size: 12px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em;
  text-align: left; cursor: pointer;
  transition: background .12s ease, color .12s ease;
}
.nav-grupo-btn:hover { background: rgba(247,247,247,.08); color: #fff; }
.nav-grupo-btn .ic { width: 18px; text-align: center; flex-shrink: 0; font-size: 14px; }
.nav-grupo-nome { flex: 1; min-width: 0; }
/* Seta ▸ que gira para ▾ quando o grupo abre (desenhada em CSS, sem depender de fonte). */
.nav-grupo-seta {
  width: 0; height: 0; flex-shrink: 0;
  border-left: 5px solid currentColor;
  border-top: 4px solid transparent; border-bottom: 4px solid transparent;
  transition: transform .18s ease;
}
.nav-grupo.aberto > .nav-grupo-btn { color: #fff; background: rgba(247,247,247,.06); }
.nav-grupo.aberto > .nav-grupo-btn .nav-grupo-seta { transform: rotate(90deg); }
/* Grupo recolhido que contém a tela atual: um ponto amarelo avisa onde você está. */
.nav-grupo.tem-ativo:not(.aberto) > .nav-grupo-btn .nav-grupo-nome::after {
  content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: var(--amarelo); margin-left: 8px; vertical-align: middle;
}
.nav-grupo-itens {
  display: flex; flex-direction: column; gap: 4px;
  margin: 4px 0 2px 12px; padding-left: 10px;
  border-left: 1px solid rgba(247,247,247,.16);
  animation: navGrupoAbre .18s ease;
}
.nav-grupo-itens[hidden] { display: none; }
.nav-grupo-itens .nav-link { padding: 9px 12px; font-size: 13.5px; }
@keyframes navGrupoAbre { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .nav-grupo-itens { animation: none; }
  .nav-grupo-seta { transition: none; }
}
.sidebar .side-bottom { position: relative; z-index: 2; border-top: 1px solid rgba(247,247,247,.14); padding-top: 14px; margin-top: 10px; }
.user-chip { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 9px; }
.user-chip .avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--amarelo); color: var(--preto); display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 13px; flex-shrink: 0; }
.user-chip .meta { min-width: 0; }
.user-chip .name { font-size: 13px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-chip .role { font-size: 11px; color: rgba(247,247,247,.55); }
.logout-link { display: flex; align-items: center; gap: 8px; margin-top: 10px; font-size: 13px; color: rgba(247,247,247,.6); cursor: pointer; padding: 6px 8px; }
.logout-link:hover { color: #fff; }

/* Rodada 116 — por que o `min-width: 0` aqui não é detalhe.
   `.main` é item de um CSS Grid (`.shell`) e item de grid nasce com
   `min-width: auto`: ele se RECUSA a ficar menor que o conteúdo. Bastava uma
   tabela larga (Cronograma, Projetos, Não Conformidades, qualquer uma) para
   `.main` esticar até 900px numa tela de 360px — e aí a `.table-wrap`, que
   existe justamente para rolar de lado, não tinha o que rolar: ela crescia
   junto. Quem transbordava era a PÁGINA INTEIRA, e no celular isso vira a tela
   que não se deixa arrastar para operar. Com min-width 0, `.main` cede, e a
   rolagem lateral volta para dentro da tabela, onde foi projetada. */
.main { display: flex; flex-direction: column; min-height: 100vh; min-width: 0; }
.topbar { display: flex; align-items: center; justify-content: space-between; padding: 18px 32px; border-bottom: 1px solid var(--borda); background: #fff; position: sticky; top: 0; z-index: 10; }
.topbar h1 { font-size: 19px; margin: 0; }
.topbar .path { font-size: 12.5px; color: var(--texto-muted); }
.content { padding: 28px 32px 60px; flex: 1; }

/* ---------- Sino de notificações (Rodada 21, RF04 do Cronograma) ---------- */
.notif-wrap { position: relative; }
.notif-bell { position: relative; padding: 8px 12px; font-size: 18px; line-height: 1; }
.notif-badge {
  position: absolute; top: -2px; right: 0;
  min-width: 17px; height: 17px; padding: 0 4px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #7a2020; color: #fff;
  font-size: 10.5px; font-weight: 700; border-radius: 999px;
  border: 2px solid #fff;
}
.notif-dropdown {
  position: absolute; top: calc(100% + 8px); right: 0;
  width: 340px; max-height: 420px; overflow-y: auto;
  background: #fff; border: 1px solid var(--borda); border-radius: var(--raio);
  box-shadow: var(--sombra-lg); z-index: 20;
}
.notif-header {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 12px 14px; border-bottom: 1px solid var(--borda);
  font-weight: 700; font-size: 13px; color: var(--verde); position: sticky; top: 0; background: #fff;
}
.notif-empty { padding: 20px 14px; font-size: 12.5px; color: var(--texto-muted); text-align: center; }
.notif-lista { display: flex; flex-direction: column; }
.notif-item { padding: 10px 14px; border-bottom: 1px solid var(--borda); cursor: pointer; transition: background .12s ease; }
.notif-item:last-child { border-bottom: none; }
.notif-item:hover { background: rgba(10,41,36,.05); }
.notif-item.notif-nao-lida { background: rgba(255,173,0,.1); }
.notif-item.notif-nao-lida:hover { background: rgba(255,173,0,.18); }
.notif-msg { font-size: 12.5px; color: var(--preto); line-height: 1.4; }
.notif-data { font-size: 11px; color: var(--texto-muted); margin-top: 3px; }

/* ---------- Hero de seção (dentro do conteúdo) ---------- */
.section-hero {
  border-radius: var(--raio);
  padding: 30px 32px;
  color: #fff;
  margin-bottom: 24px;
  position: relative; overflow: hidden;
}
.section-hero h2 { color: #fff; font-size: 22px; }
.section-hero p { color: rgba(247,247,247,.85); margin: 0; max-width: 560px; font-size: 14px; }

/* ---------- Stat tiles ---------- */
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px,1fr)); gap: 16px; margin-bottom: 24px; }
.stat-tile { background: #fff; border: 1px solid var(--borda); border-radius: var(--raio); padding: 18px 20px; }
.stat-tile .num { font-family: var(--font-display); font-size: 28px; font-weight: 800; color: var(--verde); }
.stat-tile .lbl { font-size: 12.5px; color: var(--texto-muted); font-weight: 600; }

/* ---------- Modal ---------- */
.modal-backdrop { position: fixed; inset: 0; background: rgba(10,41,36,.45); display: flex; align-items: flex-start; justify-content: center; padding: 40px 16px; overflow-y: auto; z-index: 100; }
.modal { background: var(--superficie); border-radius: var(--raio); width: 100%; max-width: 640px; padding: 28px; box-shadow: var(--sombra-lg); }
.modal.modal-lg { max-width: 900px; }
.modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.modal-close { cursor: pointer; background: none; border: none; font-size: 20px; color: var(--texto-muted); }

/* ---------- Tools grid (menu de ferramentas) ---------- */
.tools-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px,1fr)); gap: 18px; }
.tool-card {
  background: #fff; border: 1px solid var(--borda); border-radius: var(--raio);
  padding: 22px; text-decoration: none; color: var(--preto);
  display: flex; flex-direction: column; gap: 10px;
  cursor: pointer; transition: box-shadow .12s ease, transform .12s ease;
}
.tool-card:hover { box-shadow: var(--sombra-lg); transform: translateY(-2px); }
.tool-card .tool-ic { width: 46px; height: 46px; border-radius: 10px; background: var(--gradiente); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 20px; }
.tool-card h3 { font-size: 15.5px; margin: 0; }
.tool-card p { font-size: 12.5px; color: var(--texto-muted); margin: 0; }
.tool-card.disabled { opacity: .5; cursor: not-allowed; }

.hidden { display: none !important; }
.text-muted { color: var(--texto-muted); }
.flex { display: flex; }
.flex-between { display: flex; align-items: center; justify-content: space-between; }
.gap-8 { gap: 8px; } .gap-12 { gap: 12px; }
.mt-0 { margin-top: 0; } .mb-0 { margin-bottom: 0; }
.small { font-size: 12.5px; }
.spinner { width: 18px; height: 18px; border-radius: 50%; border: 2.5px solid rgba(255,255,255,.4); border-top-color: #fff; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.loading-overlay { position: fixed; inset: 0; background: var(--overlay); display: flex; align-items: center; justify-content: center; z-index: 200; }

/* ---------- Tabs (módulo Projetos) ---------- */
.tabs { display: flex; flex-wrap: wrap; gap: 6px; border-bottom: 1px solid var(--borda); }
.tab { padding: 9px 16px; border-radius: 8px 8px 0 0; font-size: 13.5px; font-weight: 600; color: var(--texto-muted); cursor: pointer; user-select: none; }
.tab:hover { color: var(--verde); background: rgba(10,41,36,.05); }
.tab.active { color: var(--verde); background: rgba(255,173,0,.18); }

/* ================= Agenda (Rodada 34) ================= */
.ag-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 14px 0; }
.ag-nav { display: flex; align-items: center; gap: 8px; }
.ag-seta { font-size: 18px; line-height: 1; padding: 4px 10px; }
.ag-title { font-weight: 700; color: var(--verde); font-size: 16px; margin-left: 6px; text-transform: capitalize; }
.ag-toolbar-dir { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ag-membro-sel { padding: 7px 10px; border: 1px solid var(--borda); border-radius: 8px; font-size: 13px; background: #fff; max-width: 220px; }
.ag-views { display: inline-flex; border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; }
.ag-view-btn { padding: 7px 12px; font-size: 13px; font-weight: 600; color: var(--texto-muted); background: #fff; border: none; cursor: pointer; }
.ag-view-btn + .ag-view-btn { border-left: 1px solid var(--borda); }
.ag-view-btn.active { background: var(--verde); color: #fff; }

/* Mês */
.ag-grid-mes { display: grid; grid-template-columns: repeat(7, 1fr); }
.ag-dow-row { background: var(--verde); border-radius: 8px 8px 0 0; }
.ag-dow { padding: 8px 6px; text-align: center; font-size: 12px; font-weight: 700; color: #fff; }
.ag-cells { border: 1px solid var(--borda); border-top: none; border-radius: 0 0 8px 8px; overflow: hidden; }
.ag-cell { min-height: 104px; border-right: 1px solid var(--borda); border-bottom: 1px solid var(--borda); padding: 4px 5px; cursor: pointer; background: #fff; display: flex; flex-direction: column; gap: 3px; }
.ag-cell:nth-child(7n) { border-right: none; }
.ag-cell:hover { background: rgba(10,41,36,.03); }
.ag-cell.outro { background: #fafafa; color: var(--texto-muted); }
.ag-cell.outro .ag-daynum { opacity: .5; }
.ag-cell.hoje .ag-daynum { background: var(--amarelo); color: var(--verde); border-radius: 50%; width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; }
.ag-daynum { font-size: 12.5px; font-weight: 600; align-self: flex-start; }
.ag-chips { display: flex; flex-direction: column; gap: 2px; overflow: hidden; }
.ag-chip { display: flex; align-items: center; gap: 4px; font-size: 11.5px; padding: 1px 3px; border-radius: 4px; cursor: pointer; white-space: nowrap; overflow: hidden; }
.ag-chip:hover { background: rgba(10,41,36,.06); }
.ag-chip-txt { overflow: hidden; text-overflow: ellipsis; }
.ag-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; display: inline-block; }
.ag-more { font-size: 11px; color: var(--texto-muted); font-weight: 600; cursor: pointer; padding: 0 3px; }
.ag-more:hover { color: var(--verde); }

/* Semana / Dia */
.ag-week { border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; }
.ag-hourgutter { width: 56px; flex: 0 0 56px; }
.ag-week-head { display: flex; background: var(--verde); }
.ag-wd-head { flex: 1 1 0; text-align: center; padding: 6px 2px; color: #fff; cursor: pointer; border-left: 1px solid rgba(255,255,255,.12); }
.ag-wd-head.hoje { background: rgba(255,173,0,.30); }
.ag-wd-dow { font-size: 11px; font-weight: 700; text-transform: uppercase; }
.ag-wd-num { font-size: 15px; font-weight: 700; }
.ag-allday { display: flex; border-bottom: 1px solid var(--borda); background: #fafafa; min-height: 26px; }
.ag-allday-lbl { font-size: 10px; color: var(--texto-muted); display: flex; align-items: center; justify-content: flex-end; padding-right: 6px; }
.ag-allday-col { flex: 1 1 0; border-left: 1px solid var(--borda); padding: 2px; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ag-allday-ev { font-size: 11px; color: #fff; border-radius: 4px; padding: 1px 5px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ag-week-body { display: flex; max-height: 620px; overflow-y: auto; }
.ag-hours { display: flex; flex-direction: column; }
.ag-hourlabel { height: 46px; font-size: 11px; color: var(--texto-muted); text-align: right; padding-right: 6px; transform: translateY(-6px); }
.ag-daycols { display: flex; flex: 1 1 0; }
.ag-daycol { position: relative; flex: 1 1 0; border-left: 1px solid var(--borda); min-width: 0; }
.ag-hourrow { height: 46px; border-bottom: 1px solid #eee; cursor: pointer; }
.ag-hourrow:hover { background: rgba(10,41,36,.03); }
.ag-ev-abs { position: absolute; border-radius: 5px; color: #fff; padding: 2px 5px; font-size: 11px; overflow: hidden; cursor: pointer; box-shadow: 0 1px 2px rgba(0,0,0,.15); }
.ag-ev-hora { font-size: 10px; opacity: .9; }
.ag-ev-tit { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Lista */
.ag-lista { display: flex; flex-direction: column; gap: 14px; }
.ag-lista-dia { border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; }
.ag-lista-data { background: rgba(10,41,36,.05); padding: 8px 12px; font-weight: 700; font-size: 13px; color: var(--verde); text-transform: capitalize; }
.ag-lista-item { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-top: 1px solid var(--borda); cursor: pointer; font-size: 13.5px; }
.ag-lista-item:hover { background: rgba(10,41,36,.03); }
.ag-li-quando { flex: 0 0 110px; color: var(--texto-muted); font-size: 12.5px; }
.ag-li-tit { font-weight: 600; }
.ag-li-local, .ag-li-parts { color: var(--texto-muted); font-size: 12px; }
.ag-empty { text-align: center; color: var(--texto-muted); padding: 40px 16px; border: 1px dashed var(--borda); border-radius: 8px; }

/* Detalhe / formulário */
.ag-det { display: flex; flex-direction: column; gap: 10px; }
.det-linha { display: grid; grid-template-columns: 120px 1fr; gap: 10px; font-size: 13.5px; }
.det-linha > span { color: var(--texto-muted); font-weight: 600; }
.ag-check { display: flex; align-items: center; gap: 8px; font-weight: 500; }
.ag-cores { display: flex; gap: 8px; }
.ag-cor { width: 26px; height: 26px; border-radius: 50%; cursor: pointer; border: 2px solid transparent; }
.ag-cor.sel { border-color: var(--verde); box-shadow: 0 0 0 2px #fff inset; }
.ag-part-list { display: flex; flex-direction: column; gap: 5px; max-height: 180px; overflow-y: auto; border: 1px solid var(--borda); border-radius: 8px; padding: 8px 10px; }

/* Formulário de agendamento: data e hora lado a lado, no padrão do Google Agenda.
   A coluna da hora fica oculta (mantendo o alinhamento) quando "Dia inteiro" está
   marcado; em telas estreitas ela sai do fluxo para não deixar espaço vazio. */
.ag-dt-row { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.ag-dt-row .field { margin-bottom: 14px; }
.ag-diaint-linha { margin-bottom: 10px; }
.ag-hora-campo.ag-oculto { visibility: hidden; }

/* Cronograma: cor da Importância (com legenda no topo da lista) e selos de dependência. */
.badge-imp-alta { background: #fdeaea; color: #7a2020; border: 1px solid #e6b3b3; }
.badge-imp-media { background: #fff4dc; color: #7a5200; border: 1px solid #f0d09a; }
.badge-imp-baixa { background: #eef1f0; color: #4a5654; border: 1px solid #d5dbd9; }
.crono-legenda { display: flex; flex-wrap: wrap; gap: 8px 22px; align-items: center;
  font-size: 12px; color: var(--texto-muted); margin: 2px 0 12px; }
.crono-legenda .crono-leg-grupo { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.crono-legenda strong { color: var(--texto); font-weight: 600; }
.crono-dep-ico { cursor: help; font-size: 13px; }

/* Rodada 98 — linha da tarefa em atraso (data prevista vencida e tarefa não concluída).
   Vale na grade do Cronograma do portal e na da Área do Cliente. A cor nunca vai sozinha:
   a linha também traz o selo "Atrasada" e a data prevista em vermelho. Declarada DEPOIS de
   .linha-minha para vencer o realce amarelo de "tarefa minha" na Área do Cliente. */
tbody tr.crono-linha-atrasada,
tbody tr.crono-linha-atrasada.linha-minha { background: rgba(198, 59, 46, .08); }
tbody tr.crono-linha-atrasada:hover,
tbody tr.crono-linha-atrasada.linha-minha:hover { background: rgba(198, 59, 46, .15); }
tbody tr.crono-linha-atrasada td:first-child { box-shadow: inset 3px 0 0 #c63b2e; }
.crono-data-atraso { color: #a32b20; font-weight: 700; }
/* Rodada 103/107 — data de conclusão informada ao finalizar a tarefa, ao lado das datas
   previstas na grade do Cronograma. Verde para se ler como "realizado", nunca sozinho:
   sempre acompanhado do ✔ e do title. */
.crono-data-conclusao { color: #1d6b3f; font-weight: 700; white-space: nowrap; cursor: help; }
[data-tema="escuro"] .crono-data-conclusao { color: #7ed3a1; }
/* Rodada 108 — faixa da guia "Cronograma SynConsult": deixa claro, o tempo todo, que aquilo ali
   é da equipe e não chega ao Cliente. Verde da marca, não amarelo, para não se confundir com
   um aviso de erro/pendência. */
.crono-selo-interno {
  background: rgba(10, 41, 36, .07); border: 1px solid rgba(10, 41, 36, .28);
  border-left: 4px solid #0A2924; border-radius: 8px;
  padding: 10px 14px; margin: 0 0 16px; font-size: .88rem; line-height: 1.5;
}
[data-tema="escuro"] .crono-selo-interno {
  background: rgba(255, 255, 255, .06); border-color: rgba(255, 255, 255, .18); border-left-color: #FFAD00;
}

/* Rodada 110 — barra de filtros por responsável na Lista do Cronograma, e o que ela produz
   na grade. A tarefa-pai que só está na tela para localizar a subtarefa filtrada sai apagada;
   a opacidade nunca vai sozinha: a linha tem title explicando, e o contador acima diz quantas
   tarefas são de contexto. */
.crono-filtros { padding: 12px 14px; margin-bottom: 14px; }
.crono-filtros-linha { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.crono-filtro-campo { flex: 1 1 260px; min-width: 220px; }
.crono-filtro-campo > label {
  display: block; font-size: .78rem; font-weight: 600; color: var(--muted); margin-bottom: 4px;
}
.crono-grid tr.crono-linha-contexto > td { opacity: .52; }
.crono-grid tr.crono-linha-contexto:hover > td { opacity: 1; }
.crono-filtro-aviso {
  background: rgba(10, 41, 36, .06); border: 1px solid rgba(10, 41, 36, .22);
  border-left: 4px solid #0A2924; border-radius: 8px;
  padding: 9px 13px; margin: 0 0 12px; font-size: .85rem; line-height: 1.45;
}
[data-tema="escuro"] .crono-filtro-aviso {
  background: rgba(255, 255, 255, .06); border-color: rgba(255, 255, 255, .18); border-left-color: #FFAD00;
}

/* Aviso de agrupamento encerrado no formulário de nova subtarefa (Rodada 107). */
.dg-aviso-encerrado {
  background: rgba(255, 173, 0, .14); border: 1px solid rgba(255, 173, 0, .55);
  border-radius: 8px; padding: 10px 12px; margin: 0 0 16px; font-size: .88rem; line-height: 1.45;
}
[data-tema="escuro"] .dg-aviso-encerrado { background: rgba(255, 173, 0, .12); }
/* Selo próprio (preenchido) para não se confundir com o badge de importância "Alta", que é
   vermelho-claro e fica na mesma linha. */
.badge-atraso { background: #c63b2e; color: #fff; border: 1px solid #a32b20; }

/* Rodada 92 — flag de envio de e-mail da tarefa (grade do Cronograma e legenda).
   A cor nunca vai sozinha: toda bolinha tem title, e a legenda traz o nome de cada estado. */
.crono-flag { font-size: 14px; line-height: 1; cursor: help; }
.crono-flag-pendente { color: #d9a300; }
.crono-flag-enviado { color: #1c8f5f; }
.crono-flag-nenhum { color: #c4c4c4; }

/* Legenda dos modelos de Gantt — status sempre com ícone + nome (nunca só a cor). */
.gantt-legenda { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center;
  font-size: 11.5px; color: var(--texto-muted); margin: 0 0 10px; }
.gantt-legenda i { display: inline-block; width: 11px; height: 11px; border-radius: 3px;
  margin-right: 5px; vertical-align: -1px; }
@media (max-width: 640px) {
  .ag-dt-row { grid-template-columns: 1fr; gap: 0; }
  .ag-hora-campo.ag-oculto { display: none; }
}
.ag-part-item { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 500; }

/* Botão "Adicionar à agenda" reaproveitado nas rotinas */
.btn-agenda-vinc { background: transparent; border: 1px solid var(--borda); }
.btn-agenda-vinc:hover { border-color: var(--verde); color: var(--verde); }

@media (max-width: 720px) {
  .ag-cell { min-height: 78px; }
  .ag-title { font-size: 14px; }
  .det-linha { grid-template-columns: 96px 1fr; }
}

/* ---------- Combo de múltipla seleção (Rodada 48) ---------- */
.ms { position: relative; }
.ms-control { min-height: 40px; border: 1px solid var(--borda); border-radius: 8px; padding: 5px 30px 5px 8px; display: flex; align-items: center; flex-wrap: wrap; gap: 4px; cursor: pointer; background: var(--superficie); }
.ms-control:focus { outline: 2px solid rgba(10,41,36,.15); }
.ms-disabled .ms-control { background: #f2f2f2; cursor: default; }
.ms-arrow { position: absolute; right: 10px; top: 12px; color: var(--texto-muted); pointer-events: none; font-size: 12px; }
.ms-chips { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; flex: 1; min-width: 0; }
.ms-placeholder { color: var(--texto-muted); font-size: 13.5px; }
.ms-count { font-size: 11px; color: #0A2924; background: #eef2f1; border-radius: 10px; padding: 1px 8px; font-weight: 700; }
.ms-chip { display: inline-flex; align-items: center; gap: 5px; background: var(--verde); color: #fff; border-radius: 12px; padding: 2px 9px; font-size: 12px; }
.ms-chip-x { background: none; border: none; color: rgba(255,255,255,.85); cursor: pointer; font-size: 15px; line-height: 1; padding: 0; }
.ms-chip-x:hover { color: #fff; }
.ms-panel { position: absolute; z-index: 400; top: calc(100% + 4px); left: 0; right: 0; background: var(--superficie); border: 1px solid var(--borda); border-radius: 8px; box-shadow: var(--sombra-lg); padding: 8px; max-height: 300px; overflow: auto; }
.ms-search { width: 100%; margin-bottom: 6px; }
.ms-list { display: flex; flex-direction: column; }
.ms-opt { display: flex; align-items: center; gap: 8px; padding: 5px 4px; border-radius: 6px; cursor: pointer; font-size: 13.5px; }
.ms-opt:hover { background: var(--seasalt); }
.ms-opt input { width: auto; }
/* Blindagem do combo (auditoria 05/08/2026): regras de formulário do tipo
   ".filtros-duas-linhas .field input { width:100% }" têm especificidade 0-2-1 e venciam a
   linha acima (0-1-1), esticando cada caixa de seleção do painel para a largura do campo —
   as opções eram empurradas para fora da área visível. Os seletores abaixo (0-3-1 / 0-4-1)
   protegem o componente dentro de qualquer contêiner, atual ou futuro. */
.ms .ms-panel .ms-opt input,
.ms .ms-arvore .ms-opt input { width: auto; min-width: 0; flex: 0 0 auto; padding: 0; }
.ms .ms-panel .ms-search { width: 100%; min-width: 0; box-sizing: border-box; }
.ms-vazio { padding: 6px 4px; margin: 0; }
.ms-extra { border-top: 1px solid var(--borda); margin-top: 6px; padding-top: 8px; }
/* Marcar / desmarcar em massa: age sobre o que a busca deixou à vista, e por
   isso fica colado nela, acima da lista. */
.ms-massa { display: flex; gap: 4px; margin: 0 0 6px; }
.ms-massa button { flex: 1; background: none; border: 1px solid var(--borda); border-radius: 6px;
  color: var(--texto-muted); font-size: 11.5px; padding: 5px 6px; cursor: pointer;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ms-massa button:hover:not(:disabled) { border-color: var(--amarelo); color: var(--texto); }
.ms-massa button:disabled { opacity: .45; cursor: default; }
/* Modo do filtro (15/09/2026) — "Mostrar só as marcadas / Excluir as marcadas",
   o mesmo par em todo combo de filtro do portal. */
.ms-modo { display: flex; gap: 4px; margin: 0 0 6px; }
.ms-modo button { flex: 1; background: none; border: 1px solid var(--borda); border-radius: 6px;
  color: var(--texto-muted); font-size: 11.5px; padding: 5px 6px; cursor: pointer; line-height: 1.2; }
.ms-modo button.on { background: var(--verde); border-color: var(--verde); color: #fff; font-weight: 600; }
.ms-modo button[data-modo="excluir"].on { background: #b4462f; border-color: #b4462f; }
.ms.ms-excluindo .ms-count { background: #f6e3de; color: #8a2f1c; }
/* Chave opcional no topo do painel (ex.: "Incluir safras concluídas"). */
.ms-alternar[hidden] { display: none; }   /* 17/09/2026: `hidden` vence o flex */
.ms-alternar { display: flex; align-items: center; gap: 7px; margin: 0 0 6px; padding: 5px 7px;
  border: 1px dashed var(--borda); border-radius: 6px; font-size: 12.5px; cursor: pointer; }
.ms .ms-panel .ms-alternar input { width: auto; min-width: 0; margin: 0; flex: 0 0 auto; }

/* Variante em árvore (drill down) do combo de múltipla seleção — usada nas dependências
   do Cronograma. Abre fechada no nível mais sintético; cada ramo expande sob demanda. */
.ms-arvore-acoes { display: flex; gap: 4px; margin: 0 0 4px; }
.ms-arvore-acoes .btn { padding: 2px 8px; font-size: 11.5px; min-height: 0; }
.ms-arvore { max-height: 260px; overflow: auto; }
.ms-arv-linha { display: flex; align-items: center; gap: 2px; }
.ms-arv-toggle {
  background: none; border: none; cursor: pointer; color: var(--verde);
  font-size: 11px; line-height: 1; width: 16px; flex-shrink: 0; padding: 4px 0;
}
.ms-arv-toggle:hover { color: var(--amarelo); }
.ms-arv-espaco { display: inline-block; width: 16px; flex-shrink: 0; }
/* .ms-opt é um <label>, que herda o negrito dos rótulos de formulário. Na árvore isso
   apagaria a diferença entre nível sintético e analítico: a folha volta ao peso normal e
   só quem tem subtarefas fica em negrito. */
.ms-arvore .ms-opt > span { font-weight: 400; }
.ms-arvore .ms-opt > span.ms-arv-pai { font-weight: 800; }

/* ---------- Guarda de alterações não salvas (Rodada 48) ---------- */
.dg-overlay { position: fixed; inset: 0; background: rgba(10,41,36,.5); display: flex; align-items: center; justify-content: center; z-index: 500; padding: 16px; }
.dg-box { background: #fff; border-radius: 12px; box-shadow: var(--sombra-lg); max-width: 440px; width: 100%; padding: 22px 24px; }
.dg-box h4 { margin: 0 0 6px; color: var(--verde); }
.dg-box p { margin: 0 0 18px; color: var(--eerie, #262626); font-size: 14px; }
.dg-acoes { display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; }

/* Total da linha de despesa: campo calculado, bloqueado para edição (Rodada 98) */
.desp-itens-grid .di-total-campo {
  font-weight: 700; text-align: right; background: #F4F2EC; color: #262626;
  border: 1px solid #DED9CC; border-radius: 6px; padding: 6px 8px; cursor: default;
}

/* ---------- Ajuda / Manual (tela #/ajuda) ---------- */
.ajuda-toolbar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 10px; }
.ajuda-busca { flex: 1 1 280px; min-width: 200px; }
.ajuda-busca input { width: 100%; }
.ajuda-lista-secoes { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.ajuda-item { border: 1px solid var(--borda); border-radius: 10px; background: #fff; overflow: hidden; }
.ajuda-item[open] { border-color: rgba(10,41,36,.28); box-shadow: var(--sombra); }
.ajuda-item > summary {
  list-style: none; cursor: pointer; padding: 13px 16px; display: flex; align-items: flex-start;
  gap: 12px; font-size: 14px; color: var(--preto); background: #fbfaf8;
}
.ajuda-item > summary::-webkit-details-marker { display: none; }
.ajuda-item > summary:hover { background: #f3f1ec; }
.ajuda-item > summary:focus-visible { outline: 2px solid var(--verde); outline-offset: -2px; }
.ajuda-item[open] > summary { background: #fff; border-bottom: 1px solid var(--borda); }
.ajuda-ic { font-size: 17px; line-height: 1.3; flex: 0 0 auto; }
.ajuda-tit { display: flex; flex-direction: column; gap: 2px; }
.ajuda-tit strong { color: var(--verde); font-size: 14.5px; }
.ajuda-resumo { font-size: 12.5px; color: var(--texto-muted); }
.ajuda-corpo { padding: 6px 18px 18px 46px; font-size: 13.5px; line-height: 1.65; }
.ajuda-corpo p { margin: 10px 0; }
.ajuda-corpo strong { color: var(--verde); }
.ajuda-lista { margin: 10px 0; padding-left: 20px; }
.ajuda-lista li { margin: 5px 0; }
.ajuda-dica {
  margin: 12px 0 4px; padding: 11px 14px; border-radius: 8px;
  background: rgba(255,173,0,.12); border-left: 3px solid var(--amarelo); font-size: 13px;
}
.ajuda-dica strong { color: #8a5a00; }
.ajuda-vazio { margin-top: 16px; }
.ajuda-rodape { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--borda); font-size: 12.5px; color: var(--texto-muted); }
@media (max-width: 640px) {
  .ajuda-corpo { padding-left: 18px; }
  .ajuda-toolbar .btn { flex: 1 1 auto; }
}

/* ===== Convite para instalar o app (Área do Cliente) ===== */
.convite-app {
  position: relative;
  background: linear-gradient(180deg, rgba(255,173,0,.10), rgba(255,173,0,.04));
  border: 1px solid rgba(255,173,0,.45);
  border-radius: 12px;
  padding: 14px 40px 14px 15px;
  margin-bottom: 18px;
}
.convite-topo { display: flex; gap: 12px; align-items: flex-start; }
.convite-ico { font-size: 24px; line-height: 1; flex: 0 0 auto; }
.convite-topo b { font-size: 15px; }
.convite-topo p { margin: 3px 0 0; font-size: 13.5px; line-height: 1.5; color: var(--texto-muted); }
.convite-acoes { display: flex; gap: 10px; align-items: center; margin-top: 12px; flex-wrap: wrap; }
.convite-btn {
  display: inline-block;
  background: #0A2924;
  color: #F7F7F7;
  text-decoration: none;
  border-radius: 10px;
  padding: 9px 16px;
  font-size: 14px;
  font-weight: 600;
}
.convite-btn:hover { background: #143f38; }
.convite-link {
  border: 0;
  background: none;
  color: #0A2924;
  font: inherit;
  font-size: 13.5px;
  text-decoration: underline;
  cursor: pointer;
  padding: 6px 2px;
}
.convite-x {
  position: absolute;
  top: 6px; right: 8px;
  border: 0; background: none;
  font-size: 20px; line-height: 1;
  color: var(--texto-muted);
  cursor: pointer;
  padding: 4px 8px;
}
.convite-passos { margin-top: 12px; font-size: 13.5px; line-height: 1.6; }
.convite-passos ol { margin: 6px 0 0; padding-left: 20px; }
.convite-passos li { margin-bottom: 4px; }
.convite-passos p { margin: 8px 0 0; color: var(--texto-muted); font-size: 13px; }
@media (max-width: 640px) {
  .convite-app { padding-right: 36px; }
  .convite-btn { flex: 1; text-align: center; }
}

/* =====================================================================
   MODO ESCURO (05/08/2026)
   Só sobrescreve as variáveis de superfície e os poucos pontos onde a cor
   da marca é usada como FUNDO (9 seletores) — nos 28 lugares em que o verde
   é cor de TEXTO, a própria redefinição de --verde já resolve.
   O tema claro segue exatamente como estava.
   ===================================================================== */
[data-tema="escuro"] {
  --fundo:        #071F1B;
  --superficie:   #0C2E28;
  --superficie-2: #103A32;
  --texto:        #EDECE6;
  --texto-muted:  rgba(237,236,230,.62);
  --borda:        rgba(237,236,230,.15);
  --seasalt:      rgba(237,236,230,.07);
  --linha-sutil:  rgba(237,236,230,.04);
  --overlay:      rgba(7,31,27,.78);
  --branco:       #EDECE6;
  /* --preto NÃO é invertido: ele significa "texto escuro sobre a cor da marca"
     (botão amarelo, etiquetas). Inverter deixava o texto do botão ilegível. */
  --sombra:       0 4px 20px rgba(0,0,0,.38);
  --sombra-lg:    0 12px 40px rgba(0,0,0,.55);
  /* verde como TEXTO precisa clarear para permanecer legível */
  --verde:        #9FD3B8;
  --verde-hover:  #B7E2CA;
  --verde-claro:  #143f38;
  /* No escuro o ouro cheio já rende 7,8 sobre a superfície: não precisa
     escurecer, precisa do contrário. */
  --amarelo-txt:   #FFAD00;
  --amarelo-linha: rgba(255,173,0,.55);
  --amarelo-fraco: rgba(255,173,0,.14);
  color-scheme: dark;
}

/* Os nove lugares em que --verde era o FUNDO */
[data-tema="escuro"] .sidebar        { background: #0A2924; border-right: 1px solid var(--borda); }
[data-tema="escuro"] .brand-texture  { background: #0A2924; }
/* `.btn-dark` deixou de ser verde sólido e virou ação contornada em dourado
   (ver bloco de botões acima); o override de fundo do modo escuro sairia por
   cima e devolveria o verde. */
[data-tema="escuro"] .skip-link      { background: #0A2924; color: #EDECE6; }
[data-tema="escuro"] .crono-bar-fill { background: #6FB894; }
[data-tema="escuro"] .ag-view-btn.active,
[data-tema="escuro"] .ag-dow-row,
[data-tema="escuro"] .ag-week-head   { background: #103A32; color: #EDECE6; }
[data-tema="escuro"] .ms-chip        { background: var(--amarelo); color: #0A2924; }
[data-tema="escuro"] .ms-chip-x      { color: rgba(10,41,36,.8); }
[data-tema="escuro"] .ms-chip-x:hover{ color: #0A2924; }

/* Superfícies secundárias */
[data-tema="escuro"] .filtros-barra,
[data-tema="escuro"] .ms-panel,
[data-tema="escuro"] .modal          { background: var(--superficie); }
[data-tema="escuro"] .ms-count       { background: var(--superficie-2); color: var(--texto); }
[data-tema="escuro"] thead th        { color: var(--texto-muted); border-bottom-color: var(--borda); }
[data-tema="escuro"] tbody td        { border-bottom-color: var(--borda); }
[data-tema="escuro"] .topbar         { border-bottom-color: var(--borda); }
[data-tema="escuro"] .spinner        { border-color: rgba(237,236,230,.25); border-top-color: var(--amarelo); }

/* Mensagens e etiquetas: mesma semântica de cor, com contraste invertido */
[data-tema="escuro"] .error-msg      { background: rgba(198,59,46,.16); color: #F3B8A8; border-color: rgba(198,59,46,.42); }
[data-tema="escuro"] .ok-msg         { background: rgba(111,184,148,.14); color: #A8DCC0; border-color: rgba(111,184,148,.38); }
[data-tema="escuro"] .badge-verde    { background: rgba(159,211,184,.16); color: #A8DCC0; }
[data-tema="escuro"] .badge-amarelo  { background: rgba(255,173,0,.20); color: #F6C56A; }
[data-tema="escuro"] .badge-vermelho { background: rgba(198,59,46,.18); color: #F3B8A8; }
[data-tema="escuro"] .badge-cinza    { background: rgba(237,236,230,.10); color: var(--texto-muted); }
[data-tema="escuro"] .badge-azul     { background: rgba(96,150,255,.16); color: #9DBBFF; }
[data-tema="escuro"] .badge-imp-alta { background: rgba(198,59,46,.16); color: #F3B8A8; border-color: rgba(198,59,46,.4); }
[data-tema="escuro"] .badge-imp-media{ background: rgba(255,173,0,.16); color: #F6C56A; border-color: rgba(255,173,0,.35); }
[data-tema="escuro"] .badge-imp-baixa{ background: rgba(237,236,230,.08); color: var(--texto-muted); border-color: var(--borda); }

/* --preto como texto sobre superfície: nesses casos vale o texto do tema */
[data-tema="escuro"] .btn-ghost:hover,
[data-tema="escuro"] .nav-grupo-btn,
[data-tema="escuro"] .path             { color: var(--texto); }

/* Botão de alternância de tema */
.btn-tema {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  height: 34px; flex: 0 0 auto; padding: 0 14px;
  border: 1px solid var(--borda); border-radius: 999px;
  background: var(--superficie); color: var(--texto-muted);
  font-size: 13px; font-weight: 600; line-height: 1; cursor: pointer;
  white-space: nowrap;
}
.btn-tema .btn-tema-txt { font-size: 12.5px; }
@media (max-width: 620px) { .btn-tema .btn-tema-txt { display: none; } .btn-tema { padding: 0; width: 34px; } }
.btn-tema:hover { color: var(--texto); border-color: var(--texto-muted); }
.sidebar .btn-tema { color: rgba(247,247,247,.7); border-color: rgba(247,247,247,.22); width: 100%; height: auto;
  border-radius: 9px; padding: 9px; gap: 8px; font-size: 13px; margin-top: 10px; }
.sidebar .btn-tema:hover { color: #fff; border-color: rgba(247,247,247,.45); }

/* Campos e caixas que ainda fixavam cor escura de texto herdada do tema claro */
[data-tema="escuro"] input,
[data-tema="escuro"] select,
[data-tema="escuro"] textarea,
[data-tema="escuro"] .ms-control,
[data-tema="escuro"] .ms-search { color: var(--texto); background: var(--superficie); }
[data-tema="escuro"] input::placeholder,
[data-tema="escuro"] textarea::placeholder { color: var(--texto-muted); }
[data-tema="escuro"] option { background: var(--superficie); color: var(--texto); }

/* ---------- Acessos ao Painel GSafra ---------- */
.acesso-card { margin-bottom: 12px; padding: 16px 18px; }
.acesso-card.total { background: var(--superficie-2); }
.acesso-topo { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; flex-wrap: wrap; }
.acesso-acoes { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }
.btn-sm { padding: 6px 12px; font-size: 12.5px; }
.mods { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 14px;
        border-top: 1px solid var(--borda); padding-top: 12px; }
.mod-grupo { display: flex; flex-direction: column; gap: 6px; }
.mod-lbl { font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase;
           color: var(--texto-muted); font-weight: 700; }
/* O bloco do App SynConsult fecha a lista e se anuncia. Ele não é só mais um
   grupo: as telas dele não existem no menu do Portal, e quem concede precisa
   saber disso ANTES de marcar — senão a pessoa recebe o acesso e procura a
   tela num lugar onde ela nunca vai aparecer. */
.mod-grupo.mod-app { border-left: 2px solid var(--amarelo); padding-left: 12px; }
.mod-app .mod-lbl { color: var(--amarelo); display: flex; align-items: center; gap: 5px; }
.mod-app .mod-lbl svg { width: 13px; height: 13px; flex: none; }
.mod-nota { font-size: 10.5px; line-height: 1.35; color: var(--texto-muted);
            max-width: 24ch; margin: -2px 0 2px; }
.mod-chk { display: flex; align-items: center; gap: 7px; font-size: 13px; cursor: pointer; }
.mod-chk input { width: auto; margin: 0; accent-color: var(--amarelo); }
/* Módulo em avaliação: só o Master Diretor o vê nesta lista. */
.mod-chk.restrito em { font-style: normal; font-size: 10px; letter-spacing: .06em;
  text-transform: uppercase; color: var(--amarelo); border: 1px solid currentColor;
  border-radius: 5px; padding: 1px 5px; margin-left: 5px; }
h3.sec { margin: 22px 0 10px; font-size: 15px; }
h3.sec:first-child { margin-top: 4px; }
@media (max-width: 640px) { .mods { gap: 14px; } .acesso-acoes { width: 100%; } }


/* ---------- Acesso ao Painel Gerencial (área do cliente e portal) ----------
   Faixa em destaque, com a marca em âmbar. É o caminho para o GSafra e
   precisa ser encontrado sem procurar. */
.cli-painel-cta {
  display: flex; align-items: center; gap: 14px;
  background: linear-gradient(100deg, #0A2924 0%, #12463C 100%);
  border: 1px solid rgba(255,173,0,.35); border-left: 5px solid #FFAD00;
  border-radius: 12px; padding: 15px 18px; margin-bottom: 16px;
  color: #F7F7F7; text-decoration: none; transition: transform .12s ease, box-shadow .12s ease;
}
.cli-painel-cta:hover {
  transform: translateY(-1px); box-shadow: 0 8px 22px rgba(10,41,36,.24);
  border-color: #FFAD00;
}
.cli-painel-ico { font-size: 26px; line-height: 1; flex: 0 0 auto; }
.cli-painel-txt { flex: 1 1 auto; min-width: 0; }
.cli-painel-txt b { display: block; font-size: 16px; font-weight: 700; color: #fff; letter-spacing: -.01em; }
.cli-painel-txt small { display: block; font-size: 12.5px; color: rgba(247,247,247,.78); margin-top: 3px; line-height: 1.4; }
.cli-painel-seta { flex: 0 0 auto; font-size: 24px; color: #FFAD00; line-height: 1; }
@media (max-width: 640px) {
  .cli-painel-cta { padding: 13px 14px; gap: 11px; }
  .cli-painel-txt b { font-size: 15px; }
  .cli-painel-txt small { font-size: 11.5px; }
}
/* ---------------------------------------------------------------------
   Quadro de custo de produção: valor que abre a composição.
   Em repouso é APENAS o número — sem caixa, sem borda, sem sublinhado.
   O aviso de que abre algo só aparece sob o ponteiro: cursor muda e o
   valor se destaca. Antes disso, a coluna se lê como coluna de números.
   --------------------------------------------------------------------- */
.cst-abre {
  appearance: none; -webkit-appearance: none;
  background: none; border: 0; padding: 0; margin: 0; cursor: default;
  font: inherit; color: inherit; letter-spacing: inherit;
  font-variant-numeric: inherit; text-align: inherit;
  transition: color .12s ease;
}
.cst-abre:hover, .cst-abre:focus-visible {
  cursor: pointer;
  color: var(--amarelo, #FFAD00);
  text-decoration: underline; text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
.cst-abre:focus-visible { outline: 2px solid var(--amarelo, #FFAD00); outline-offset: 2px; }

/* Concessão de acesso ao GSafra: a diferença entre "vê no menu" e "lê o dado". */
.aviso-familias{
  background:#FFF8E8;border:1px solid #F0DCA8;border-left:3px solid #FFAD00;
  border-radius:0 8px 8px 0;padding:11px 14px;margin:0 0 18px;font-size:13.5px;line-height:1.5;
}
.aviso-familias b{color:#0A2924}
[data-tema="escuro"] .aviso-familias{background:#2A2415;border-color:#4A3F1E;color:#E8E4D8}
[data-tema="escuro"] .aviso-familias b{color:#FFC94D}

/* Atalho para o Dashboard de Fechamento no menu do Painel Gerencial.
   Destacado porque leva para fora do painel — quem clica precisa saber. */
.nav .item.atalho-fechamento{
  background:linear-gradient(90deg, rgba(255,173,0,.16), rgba(255,173,0,.05));
  border:1px solid rgba(255,173,0,.42);
  border-radius:9px; margin:0 0 12px; font-weight:600;
}
.nav .item.atalho-fechamento:hover{ background:rgba(255,173,0,.24); }
.nav .item.atalho-fechamento .ic{ filter:none; }

/* ===== Rodada 157 — código do relatório de despesas (SIGLA-0001) =====
   Selo ao lado do título do modal e dentro da grade. Fundo Harvest Gold claro com o
   verde da marca: precisa saltar sem competir com o título, porque é por este código
   que o cliente vai se referir ao documento no telefone. */
.desp-codigo {
  display: inline-block;
  margin-left: 10px;
  padding: 2px 9px;
  border-radius: 999px;
  background: #FFF6E0;
  border: 1px solid #FFAD00;
  color: #0A2924;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .4px;
  vertical-align: middle;
  white-space: nowrap;
}
.desp-codigo-vago {
  background: #f2f2f2;
  border-color: #d5d5d5;
  color: #6e6e6e;
  font-weight: 500;
}
.desp-codigo-grade {
  font-size: 12.5px;
  margin-left: 0;
  padding: 1px 7px;
}

/* ===== Rodada 160 — grade de Clientes em UMA linha e sem rolagem horizontal =====
   Pedido do Prado: nada de quebra de linha e nada de barra de rolagem lateral. As outras
   grades compactas (.nc-grid, .crono-grid) resolvem a quebra com nowrap e deixam o
   .table-wrap ROLAR; aqui a rolagem também está proibida, então a tabela passa a ter
   largura fixa (table-layout: fixed) e o que não cabe termina em reticências, com o texto
   inteiro no title da célula.

   A régua das colunas que saem é a largura do CARD (container query) — o menu lateral
   aberto ou fechado muda o espaço da grade sem mudar a largura da janela. Ordem de saída,
   das menos usadas para as mais: e-mail geral, telefone, unidade, nome fantasia. Tudo
   continua no botão 👁️ Ver. */
.cli-grid-wrap { container-type: inline-size; overflow-x: hidden; }
.cli-grid { table-layout: fixed; width: 100%; font-size: 12.5px; }
.cli-grid th, .cli-grid td {
  padding: 8px 9px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cli-grid .badge { font-size: 10.5px; padding: 3px 8px; }
.cli-grid .acoes-crono .btn { min-width: 28px; height: 28px; font-size: 14px; padding: 0 6px; }
.cli-grid .c-cod    { width: 90px; }
.cli-grid .c-razao  { width: 23%; }
.cli-grid .c-tel    { width: 122px; }
.cli-grid .c-status { width: 96px; }
.cli-grid .c-acoes  { width: 118px; overflow: visible; }
/* O selo da unidade encolhe com a coluna; o "+1" ao lado nunca some. */
.cli-grid .cli-un {
  display: inline-block; max-width: calc(100% - 34px); overflow: hidden;
  text-overflow: ellipsis; vertical-align: middle;
}
.cli-grid .cli-un-mais { margin-left: 4px; vertical-align: middle; }

@container (max-width: 1240px) { .cli-grid .c-email { display: none; } }
@container (max-width: 1060px) { .cli-grid .c-tel { display: none; } }
@container (max-width: 940px)  { .cli-grid .c-un { display: none; } }
@container (max-width: 780px)  { .cli-grid .c-fant { display: none; } }
