:root{
  /* TEMA CLARO */
  --bg:#f4f6fb; --sf:#ffffff; --s2:#eef1f7; --bd:#d6dce8; --ac:#2f6fed;
  --tx:#1f2733; --tx2:#6b7686; --ok:#1f9d57; --wa:#c77700; --er:#d23b4e;
  --bl:#4d7cfe; --gr:#9aa6bd; --rea:#84cc16; --base:#aab4c8; --fat:#e0a800;
  --row:24px; --fbH:0px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:Segoe UI,Aptos,system-ui,sans-serif;
  background:var(--bg);color:var(--tx);font-size:13px}
body{display:flex;flex-direction:column;overflow:hidden}
button{font-family:inherit;cursor:pointer}
small{color:var(--tx2)}

/* TOPBAR + TABS */
.topbar{display:flex;align-items:center;gap:8px;padding:6px 10px;flex:none;
  background:var(--sf);border-bottom:1px solid var(--bd);z-index:30;
  box-shadow:0 1px 3px rgba(20,30,60,.06)}
.brand{display:flex;align-items:center;gap:8px;min-width:150px;flex:none}
.brand strong{font-size:14px}
.brand>div{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap}
#projNome{display:none}   /* nome do projeto saiu do topo (agora vive no cabeçalho da grade); fica só o "salvo ✓" */
.brand{min-width:0}
.tabs>.tb-base{display:inline-block;width:auto;flex:none;margin:0 2px 0 4px;padding:6px 10px;border-radius:6px;background:var(--s2);border:none;font-size:12px;font-weight:700;color:var(--wa);white-space:nowrap;cursor:pointer}
.tabs>.tb-base:hover{background:var(--bd)}
.tabs>.tb-base.tb-ico{font-size:15px;padding:5px 9px;line-height:1}   /* só ícone (rótulo no tooltip) */
.topbar-scope{display:flex;gap:6px;align-items:center;flex:none;margin:0 4px}
.topbar-scope select{background:var(--s2);border:1px solid var(--bd);color:var(--tx);border-radius:6px;padding:6px 10px;max-width:180px;font:inherit;font-size:12.5px;font-weight:600}
.topbar-scope select:focus{border-color:var(--ac);outline:none}
/* 🔎 BUSCA POR DIGITACAO do seletor de projetos (projBuscaUI.js). O <select> continua no DOM como fonte da
   verdade (e por isso e escondido sem display:none, p/ seguir focavel/legivel a leitor de tela). */
#projSel.pb-oculto{position:absolute;width:1px;height:1px;min-width:0;padding:0;border:0;opacity:0;
  pointer-events:none;clip-path:inset(50%)}
.pb{position:relative;flex:none}
.pb-trig{display:flex;align-items:center;gap:6px;max-width:210px;background:var(--s2);border:1px solid var(--bd);
  color:var(--tx);border-radius:6px;padding:6px 8px 6px 10px;font:inherit;font-size:12.5px;font-weight:600;
  cursor:pointer;white-space:nowrap}
.pb-trig:hover{border-color:var(--ac)}
.pb-trig:disabled{opacity:.5;cursor:default}
.pb.open .pb-trig{border-color:var(--ac);box-shadow:0 0 0 2px rgba(47,111,237,.15)}
.pb-trig-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pb-lupa{opacity:.55;font-size:11px}
.pb-pop{position:absolute;top:calc(100% + 4px);left:0;z-index:60;width:440px;max-width:86vw;background:var(--sf);
  border:1px solid var(--bd);border-radius:10px;box-shadow:0 10px 28px rgba(20,30,60,.18);padding:8px;
  display:flex;flex-direction:column;gap:6px}
/* o display:flex acima venceria o [hidden] da UA stylesheet: sem esta regra a caixa fecha no DOM e NÃO na
   TELA — abria e nunca sumia (mesma pegadinha já registrada no .tl-mrow e no .rec-pop label). */
.pb-pop[hidden]{display:none}
.pb-in{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--bd);border-radius:8px;
  font:inherit;font-size:13px;background:var(--bg);color:var(--tx)}
.pb-in:focus{outline:none;border-color:var(--ac)}
.pb-crit{display:flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:11px;line-height:1.5;min-height:17px}
.pb-crit-t{font-weight:700;color:var(--ac)}
.pb-dim{color:var(--tx2)}
.pb-chip{border:1px solid var(--bd);border-radius:999px;padding:1px 7px;background:var(--s2);color:var(--tx2)}
.pb-chip b{color:var(--tx)}
.pb-lista{max-height:min(56vh,420px);overflow-y:auto;overflow-x:hidden}
.pb-gh{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--tx2);
  padding:8px 8px 3px}
.pb-row{display:flex;flex-direction:column;gap:1px;padding:5px 8px;border-radius:6px;cursor:pointer;font-size:12.5px}
.pb-row:hover,.pb-row.pb-on{background:var(--s2)}
.pb-row.pb-sel .pb-lbl{font-weight:700;color:var(--ac)}
.pb-fixo .pb-lbl{font-weight:600}
.pb-pf .pb-lbl{color:var(--tx2)}
.pb-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pb-whys{display:flex;flex-wrap:wrap;gap:4px 8px}
.pb-why{font-size:11px;color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.pb-lbl mark,.pb-why mark{background:#fde68a;color:inherit;border-radius:2px;padding:0 1px}
.pb-vazio{padding:10px;color:var(--tx2);font-size:12px}
.scope-btn{background:var(--s2);border:1px solid var(--bd);color:var(--tx);border-radius:6px;padding:6px 10px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.scope-btn:hover{border-color:var(--ac);color:var(--ac)}
.autosave{font-size:11px;color:var(--ok)}
.bkp-farol{display:inline-block;margin-left:8px;font:inherit;font-size:10.5px;font-weight:600;line-height:1;
  padding:3px 7px;border-radius:999px;border:1px solid var(--bd);background:var(--s2);color:var(--tx2);
  cursor:pointer;white-space:nowrap;vertical-align:middle}
.bkp-farol:hover{border-color:var(--ac)}
.bkp-farol.ok{color:#11784a;border-color:#9fd9bd;background:#eafaf2}
.bkp-farol.warn{color:#9a6700;border-color:#e6cf8e;background:#fff7e6}
.bkp-farol.off{color:#9b2c3a;border-color:#e6a8b1;background:#fdecee}
/* farol dentro do 🛠 Admin: vira linha do menu (o ícone sozinho não se explica fora do topo) */
.navdrop-menu .bkp-farol{display:block;width:100%;box-sizing:border-box;margin:0 0 4px;padding:6px 10px;
  text-align:left;font-size:12px;border-radius:8px;line-height:1.5}
/* tabelaKit — PADRÃO de tabela: busca + filtros (2 níveis) + agrupamento (2 níveis) + ordenação */
.tk-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 12px;padding:7px 9px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;font-size:12.5px}
.tk-bar .tk-busca{padding:5px 10px;border:1px solid var(--bd);border-radius:8px;font-size:12.5px;min-width:160px;background:var(--sf);color:var(--tx)}
.tk-bar .tk-busca:focus{outline:none;border-color:var(--ac)}
.tk-bar .tk-cell{display:inline-flex;align-items:center;gap:5px;color:var(--tx2);background:var(--sf);border:1px solid var(--bd);border-radius:8px;padding:3px 9px;white-space:nowrap}
.tk-bar select{font-size:12px;padding:3px 5px;border:1px solid var(--bd);border-radius:6px;background:var(--sf);color:var(--tx);max-width:170px;cursor:pointer}
.tk-bar .tk-limpar{font-size:11px;padding:4px 10px;margin-left:auto}
.tk-th{position:relative;transition:color .12s}
.tk-th:hover{color:var(--ac)}
.tk-th.tk-on{color:var(--ac)}
.fat-fixed .tk-th span{display:none}   /* Faturamentos (detalhe apertado): esconde o ↕ inativo — só mostra ▲/▼ ao ordenar */
.fat-fixed .tk-th{padding:4px 3px;white-space:nowrap}
tr.tk-grp td{background:var(--s2);font-weight:700;font-size:12px}
tr.tk-grp.tk-grp-1 td{padding-left:10px;border-left:3px solid var(--ac)}
tr.tk-grp.tk-grp-2 td{background:var(--bg);font-weight:600;padding-left:26px;border-left:3px solid var(--bd)}
tr[data-tkr]>td:first-child{border-left:3px solid var(--s2)}
tr[data-tkr="1"]>td:first-child{padding-left:26px}
tr[data-tkr="2"]>td:first-child{padding-left:42px}
.r-asg-txt{width:118px;padding:2px 5px;border:1px solid var(--bd);border-radius:5px;font-size:12px;background:var(--sf);color:var(--tx)}
/* Form de recursos — distribuição em grade uniforme */
#view-recursos .row{gap:10px 14px}
#view-recursos .row .fld{flex:1 1 185px}
#view-recursos .row .fld input,#view-recursos .row .fld select{width:100%;box-sizing:border-box}
/* Dados Mestres › Recursos: form (Criar/Modificar) ao lado da lista, caixas em grade alinhada */
#view-recursos-mestre .dm-main{flex:1 1 380px;min-width:300px}
#view-recursos-mestre .dm-side{flex:1.5 1 480px;min-width:340px}
#view-recursos-mestre .dm-main .row{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 14px;align-items:end;margin-bottom:0}
#view-recursos-mestre .dm-main .row .fld{min-width:0}
#view-recursos-mestre .dm-main .row .fld input,#view-recursos-mestre .dm-main .row .fld select{width:100%;box-sizing:border-box;max-width:none!important}
#view-recursos-mestre .dm-main .row .fld[style*="100%"]{grid-column:1/-1}
#view-recursos-mestre .dm-main .row .rm-acts{grid-column:1/-1;display:flex;gap:8px;margin-top:4px}
#view-recursos-mestre .card{max-width:none}   /* tabela de 11 colunas ocupa a largura toda (não corta a coluna Ações) */
#view-recursos-mestre table.pj-tab th:last-child,#view-recursos-mestre table.pj-tab td.pj-acts{position:sticky;right:0;background:var(--sf);box-shadow:-6px 0 6px -6px rgba(20,30,60,.18)}   /* Ações sempre visível mesmo com rolagem horizontal */
/* Visões de RECURSOS compactas (pedido 22/07/2026, tela 5.7.Q2 "pode ficar bem mais compacto" — vale p/ Recursos do Projeto,
   Dados Mestres › Recursos e o consolidado legado): 1 linha por recurso (nowrap; a rolagem horizontal já existe), paddings
   e controles inline reduzidos. Só CSS — zero mudança de comportamento. */
#view-recursos table.pj-tab th,#view-recursos table.pj-tab td,
#view-recursos-mestre table.pj-tab th,#view-recursos-mestre table.pj-tab td,
#view-recursos-portfolio table.pj-tab th,#view-recursos-portfolio table.pj-tab td{padding:2px 6px;white-space:nowrap}
#view-recursos table.pj-tab select,#view-recursos-mestre table.pj-tab select{font-size:11.5px;padding:1px 4px;border:1px solid var(--bd);border-radius:5px;background:var(--sf);color:var(--tx);max-width:150px}
#view-recursos table.pj-tab .r-asg-txt{padding:1px 4px}
#view-recursos .rec-fundd>summary{padding:2px 8px;font-size:11.5px;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#view-recursos .pj-acts .btn,#view-recursos-mestre .pj-acts .btn{padding:2px 6px;font-size:11px;margin-left:2px}
#view-recursos table.pj-tab .rec-tag,#view-recursos-mestre table.pj-tab .rec-tag{padding:0 6px;font-size:10.5px}
.tabs{display:flex;flex-wrap:wrap;gap:3px 2px;flex:1;align-items:center;overflow:visible}
.tab{background:transparent;border:none;color:var(--tx2);padding:6px 7px;
  border-radius:7px 7px 0 0;font-size:12px;font-weight:600;white-space:nowrap}
.tab:hover{color:var(--tx);background:var(--s2)}
.tab.active{color:#fff;background:var(--ac)}
.tab-sep{width:1px;height:20px;background:var(--bd);margin:0 6px;align-self:center;flex:none}
.tab-export{align-self:center;background:var(--s2);border:1px solid var(--bd);color:var(--tx);border-radius:7px;padding:6px 8px;font-size:12px;font-weight:600;cursor:pointer}
.tab-export:hover{border-color:var(--ac)}
/* Menus "pasta" (Dados Mestres, Customizing, Arquivo) */
.navdrop{position:relative}
.navdrop-btn{background:transparent;border:none;color:var(--tx2);padding:6px 7px;border-radius:7px 7px 0 0;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
/* selos da suíte P³ no menu: mesma tipografia, cor por letra (I teal · W azul · A roxo · S vermelho · M âmbar).
   P³ᴹ (Dados Mestres) é etiqueta de ORIGEM (plataforma), não módulo de oferta — por isso fica no cinza-âmbar e não ganha ícone.
   24/08/2026 (14): o ᴿ MUDOU DE DONO — era do Radar Executivo, que virou P³ᴱ (de **E**xecutivo), e passou ao
   RIDAC, que entrou na família como 11ª letra. Por isso `.p3r-selo` é ROXO agora (a cor do RIDAC) e o grafite
   do Radar mudou de classe p/ `.p3e-selo`: a classe segue a LETRA, nunca o nome do módulo. */
.p3m-selo,.p3i-selo,.p3w-selo,.p3a-selo,.p3s-selo,
.p3p-selo,.p3c-selo,.p3f-selo,.p3e-selo,.p3r-selo,.p3b-selo,.p3k-selo{font-size:8.5px;font-weight:700;letter-spacing:.02em;vertical-align:super;line-height:1}
.p3m-selo{color:#b45309}
.p3i-selo{color:#0F766E}
.p3w-selo{color:#1B5FA8}
.p3a-selo{color:#6D4AA6}
.p3s-selo{color:#B91C1C}
.p3p-selo{color:#be185d}
.p3c-selo{color:#0E7490}
.p3f-selo{color:#15803d}
.p3e-selo{color:#475569}   /* P³ᴱ Radar Executivo — grafite */
.p3r-selo{color:#9333ea}   /* P³ᴿ RIDAC — roxo */
.p3b-selo{color:#7c5e10}
.p3k-selo{color:#111827}   /* P³ᴷ Arquitetura — grafite quase-preto; dev-only, fica FORA da rota de transporte (26/08/2026) */
.navdrop-btn:hover,.navdrop.open .navdrop-btn{color:var(--tx);background:var(--s2)}
.navdrop-menu{display:none;position:absolute;z-index:60;top:100%;left:0;min-width:185px;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 8px 24px rgba(20,30,60,.16);padding:5px;flex-direction:column;gap:1px}
.navdrop.open .navdrop-menu{display:flex}
.navdrop-hover:hover .navdrop-menu{display:flex;margin-top:0}   /* Cronograma: submenu abre no HOVER, sem gap (não fecha ao mover o mouse) */
/* display de autor vence o [hidden] da UA: sem isto o 🏗 Painel estrutural (dev, nasce hidden) aparece p/ todo mundo */
.navdrop-menu .tab[hidden],.fmenu-item[hidden]{display:none}
.navdrop-menu .tab,.fmenu-item{display:block;width:100%;text-align:left;border-radius:5px;background:transparent;border:none;color:var(--tx);padding:7px 12px;font-size:13px;font-weight:500;cursor:pointer}
.navdrop-menu .tab:hover,.fmenu-item:hover{background:var(--s2)}
.navdrop-menu .tab.active{background:var(--ac);color:#fff}
#ndCrono>.navdrop-btn.active{background:var(--ac);color:#fff;box-shadow:none}   /* Cronograma ATIVO destacado (navdrop que navega no clique) */
.fmenu-sep{height:1px;background:var(--bd);margin:4px 2px}
.fmenu-label{padding:6px 12px 2px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--wa)}
.fmenu-dom{padding:8px 12px 3px;font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--ac);display:flex;align-items:center;gap:5px}   /* cabeçalho de DOMÍNIO de capacidade (Projeto · Vínculos · Definições) — base da segregação de funções */
.fmenu-dom:first-child{padding-top:4px}
.perm-off{opacity:.45;pointer-events:none}   /* ação fora do papel atual (segregação de funções) — só aparência; enforcement real é server-side */
.fmenu-beta{color:var(--wa)}
/* Item do menu 📁 Arquivo em 2 linhas: rótulo + o que a ação faz (o title só aparece no hover, e quem não sabe o que a linha faz não passa o mouse) */
.fmenu-item>b{display:block;font-weight:600;font-size:13px;line-height:1.25}
.fmenu-item>i{display:block;font-style:normal;font-weight:400;font-size:11px;line-height:1.3;color:var(--tx2);margin-top:1px}
.fmenu-item:has(>i){padding:6px 12px 7px}
.fmenu-beta>i{color:var(--tx2)}
.fmenu-tag{margin-left:6px;font-size:9px;font-weight:600;letter-spacing:0;text-transform:none;opacity:.8}
.navdrop.fmenu>.navdrop-menu{min-width:300px}
/* Menus com verbos CRUD por domínio (Dados Mestres / Projetos): rótulo do domínio + linha de verbos compacta */
.navdrop-menu.mm-crud{min-width:320px}
.navdrop-menu.menu-crono{min-width:345px}   /* Cronograma ▾: 4 verbos (Criar·Visualizar·Editar·Excluir) numa linha só */
/* Estratégia ▾ + Canvas do Portfólio ▾ — 24/08/2026 ("cada um deve virar uma caixa... viram menu embaixo de
   cada caixa e na vertical" + "assim", mockup de pills lado a lado): as 3 telas de Estratégia e o Canvas do
   Portfólio deixaram de ser AGRUPADAS num "Estratégia ▾"/"Canvas ▾" — cada uma virou seu PRÓPRIO `.navdrop.pill`
   (mesmo padrão do `.app-btn` da Linha 1: caixa arredondada, ícone+rótulo), com o menu de 4 verbos abrindo NA
   VERTICAL logo abaixo da pill. Escopado a `.pill`/`.pill-btn`/`.pill-menu` — NUNCA no
   `.navdrop-btn`/`.navdrop-menu`/`.fmenu-verbs` base, usados por dezenas de outros menus em linha única
   (Waterfall/Ágil/Dados Mestres seguem como estavam). 24/08/2026 (2): "quando mudar de icone a tela ja deve
   cair em exibir sem mostrar o menu; se o usuario quiser, ele entra no menu" — a pill virou o MESMO padrão do
   Cronograma ▾ (`.navdrop-hover`): CLIQUE navega direto p/ Visualizar (`data-tab`+`data-mdmode="exibir"` no
   `.pill-btn`, ligado em `main.js`), o menu de 4 verbos só abre no HOVER. `display:flex;margin-top:0` são
   REDECLARADOS aqui (não herdados do `.navdrop-hover:hover .navdrop-menu` genérico) porque o `.pill-menu` tem
   sua PRÓPRIA regra de fechado (`display:none`, 4 classes) com especificidade MAIOR que a do hover genérico
   (3 classes) — sem a redeclaração com especificidade ainda maior (6 classes), o `display:none` do fechado
   vencia sempre e o hover nunca revelava o menu (achado ao vivo por CDP `forcePseudoState`, não pelo DOM).
   `margin-top:0` fecha o gap entre botão e menu — sem ele, mover o mouse na diagonal perde o hover e fecha. */
.navdrop.pill{margin:0 1px;--pc:#B91C1C}   /* --pc = cor do app dono da pill (P³ˢ Estratégia = vermelho, mesma do .p3s-selo); outros apps sobrescrevem via style="--pc:…" inline (mesmo padrão do --hc da Linha 1) */
/* 24/08/2026 (6), "faca a mesma coisa para os outros menus": as cores viraram `color-mix(in srgb,var(--pc) X%,…)`
   em vez de rgba(185,28,28,…) fixo — antes só funcionava em vermelho (Estratégia); agora qualquer `--pc` funciona,
   o mesmo mecanismo já usado pelo `--hc` da Linha 1/2 (`app-btn`/`.nav-sel`). */
.navdrop.pill>.navdrop-btn.pill-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;
  border:1px solid color-mix(in srgb,var(--pc) 35%,transparent);border-radius:8px;background:color-mix(in srgb,var(--pc) 6%,var(--sf));
  font-size:11.5px;font-weight:600;color:var(--pc);white-space:nowrap}
.navdrop.pill>.navdrop-btn.pill-btn:hover{border-color:var(--pc);background:color-mix(in srgb,var(--pc) 10%,var(--sf))}
.navdrop.pill.open>.navdrop-btn.pill-btn{border-color:var(--pc);background:var(--sf);box-shadow:none}
.navdrop.pill>.navdrop-menu.pill-menu{display:none;flex-direction:column;gap:10px;min-width:180px;padding:10px 8px;
  margin-top:4px}
.navdrop.pill.open>.navdrop-menu.pill-menu{display:flex}
.navdrop.pill.navdrop-hover:hover>.navdrop-menu.pill-menu{display:flex;margin-top:0}
/* 24/08/2026 (4), "quero assim" (mockup): botões GRANDES, bem espaçados, formato pílula (não a linha
   compacta genérica do `.navdrop-menu .tab`) — escopado a `.pill-menu`, o `.active` (Criar/Visualizar/…
   em vigor) já vem de graça do `.tab.active` global (azul sólido), só o tamanho/forma do botão mudam aqui. */
.navdrop.pill .pill-menu .tab{width:100%;text-align:center;padding:13px 14px;border-radius:24px;
  font-size:14px;font-weight:700;border:1px solid var(--bd);background:var(--sf);color:var(--tx2)}
.navdrop.pill .pill-menu .tab:hover{border-color:var(--pc);background:var(--s2);color:var(--tx)}
.navdrop.pill .pill-menu .tab.active{background:var(--ac);color:#fff;border-color:transparent}   /* vence o `.pill-menu .tab` acima (mais classes = mais específico que só `.tab.active`) */
/* 24/08/2026 (6) — PILL SOLO: telas SEM verbo (Criar/Visualizar/Editar/Excluir), ex. Ideias/Ágil/Report —
   viram uma pill AVULSA (sem `.navdrop-menu`, sem hover — não há o que revelar). Reusa a MESMA linguagem
   visual do `.pill-btn`, com `--pc` inline por app (mesmo mecanismo do `--hc` da Linha 1). `.active` já
   vem de graça do `switchTab` (toggle em TODO `.tab`); aqui só o essa tela ganha cor CHEIA do app, no
   lugar do azul genérico — 3 classes p/ vencer o `.tab.active` global (2 classes). */
/* 24/08/2026 (10), "suba as duas ultimas linhas para cima, tem espaco": `width:auto` NÃO é decorativo — a
   pill 🏁 Encerrar projeto carrega também a classe `.fmenu-item` (o hook que liga `data-act` ao `onAction`
   no main.js), e o `.fmenu-item` base declara `width:100%`. Como `.tab.pill-solo` (2 classes, vence) nunca
   declarava `width`, NÃO havia conflito: os 100% passavam limpos e a pill ESTICAVA até a borda, empurrando
   🏁 Encerrar e `Demo ▾` p/ 2 linhas extras numa barra que tinha folga de sobra. Vale p/ toda pill solo que
   precise do hook `.fmenu-item`. */
.tab.pill-solo{width:auto;display:inline-flex;align-items:center;gap:5px;padding:5px 10px;margin:0 1px;
  border:1px solid color-mix(in srgb,var(--pc) 35%,transparent);border-radius:8px;
  background:color-mix(in srgb,var(--pc) 6%,var(--sf));font-size:11.5px;font-weight:600;
  color:var(--pc);white-space:nowrap}
.tab.pill-solo:hover{border-color:var(--pc);background:color-mix(in srgb,var(--pc) 10%,var(--sf));color:var(--pc)}
.tab.pill-solo.active{background:var(--pc);border-color:var(--pc);color:#fff}
/* ☠ O CSS `.menu-portf-pills` foi REMOVIDO em 24/08/2026 (11) ("abra as caixas na segunda linha da mesma
   maneira"): ele existia só p/ caber ~20 botões-verbo dentro do dropdown gigante `Portfólios ▾`, que deixou
   de existir — as 6 seções viraram pills da Linha 2 e usam o `.pill-menu` comum. */
.navdrop-menu.menu-biblioteca{min-width:330px}   /* Biblioteca ▾ — 2 blocos de 4 verbos + Ferramenta de Carga */
/* 💵 Financeiro = FLUXO numerado, não lista de telas: 3 rótulos de seção p/ 3 itens (1:1) era estrutura sem função e
   escondia a ORDEM de uso. Agora o passo (1·2·3) e uma linha de "o que se faz aqui" ficam VISÍVEIS (o title só aparece no hover). */
.navdrop-menu.menu-pnl{min-width:345px}
.fmenu-flow{padding:5px 12px 7px;font-size:10.5px;font-weight:600;color:var(--tx2);border-bottom:1px solid var(--bd);margin-bottom:4px}
.navdrop-menu .tab.pnl-step{display:flex;align-items:flex-start;gap:9px;white-space:normal;padding:8px 10px}   /* white-space:normal reverte o nowrap do `.tab` base */
.pnl-step .ps-n{flex:0 0 18px;height:18px;margin-top:1px;border-radius:50%;background:var(--s2);color:var(--tx2);font-size:11px;font-weight:800;line-height:18px;text-align:center}
.pnl-step .ps-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.pnl-step .ps-t{font-size:13px;font-weight:600}
.pnl-step .ps-d{font-size:10.5px;font-weight:400;line-height:1.35;color:var(--tx2)}
.navdrop-menu .tab.pnl-step:hover .ps-n{background:var(--bd);color:var(--tx)}
.navdrop-menu .tab.pnl-step.active .ps-n{background:rgba(255,255,255,.28);color:#fff}
.navdrop-menu .tab.pnl-step.active .ps-d{color:rgba(255,255,255,.88)}
/* Tracking = 2 colunas LADO A LADO (Portfólio | Projetos), assuntos relacionados na MESMA linha */
.navdrop-menu.menu-tracking{min-width:250px}
.navdrop-menu.menu-tracking.tk-grid{grid-template-columns:200px 250px;gap:0 12px;min-width:0;width:max-content;max-width:96vw;align-items:start;padding:8px 10px;box-sizing:border-box}
.navdrop.open>.navdrop-menu.menu-tracking.tk-grid{display:grid}   /* grid SÓ quando aberto (senão o display:grid venceria o display:none e o menu ficaria sempre visível) */
.menu-tracking.tk-grid .tk-col{display:flex;flex-direction:column;min-width:0}
.menu-tracking.tk-grid .tk-col-pj{border-left:1px solid var(--bd);padding-left:12px;margin-left:-1px}   /* divisória vertical entre os 2 domínios */
.menu-tracking.tk-grid .tk-col .tab{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-tracking.tk-grid .fmenu-na{color:var(--tx2);font-size:12px;padding:5px 10px;opacity:.5}
@media(max-width:900px){.navdrop-menu.menu-tracking.tk-grid{grid-template-columns:1fr;width:auto;min-width:250px}.menu-tracking.tk-grid .tk-col-pj{border-left:none;padding-left:0;margin-left:0}}
.navdrop-menu .fmenu-verbs{display:flex;gap:4px;flex-wrap:nowrap;padding:1px 10px 6px}   /* verbos SEMPRE numa linha só (o menu tem min-width p/ caber) */
.navdrop-menu .fmenu-verbs .tab,.navdrop-menu .fmenu-verbs .fmenu-item{display:inline-block;width:auto;flex:1 1 0;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;padding:4px 5px;font-size:11.5px;font-weight:500;border:1px solid var(--bd);border-radius:6px;color:var(--tx2)}
.navdrop-menu .fmenu-verbs .tab:hover,.navdrop-menu .fmenu-verbs .fmenu-item:hover{background:var(--s2);border-color:var(--ac);color:var(--tx)}
.navdrop-menu .fmenu-verbs .tab.active{background:var(--ac);color:#fff;border-color:transparent}
/* Ferramentas (Cronograma ▾) = 4 LADRILHOS de ícone grande, lado a lado. Seletores com 2 classes p/ vencer
   `.navdrop-menu .tab` (display:block/text-align:left) sem !important; `.active` leva 3 p/ vencer o dele. */
.fmenu-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:3px 8px 8px}
.navdrop-menu .fmenu-tiles .tab{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:5px;width:auto;min-width:0;min-height:70px;text-align:center;padding:9px 4px 8px;border:1px solid var(--bd);border-radius:9px;background:var(--s2);color:var(--tx2);white-space:normal;transition:transform .1s,box-shadow .1s,background .1s,border-color .1s}   /* white-space:normal reverte o nowrap do `.tab` base — sem isso o rótulo vaza p/ fora do ladrilho */
.navdrop-menu .fmenu-tiles .tab .ft-ico{font-size:25px;line-height:1;filter:saturate(1.05)}
.navdrop-menu .fmenu-tiles .tab .ft-lbl{font-size:10px;font-weight:600;line-height:1.2;letter-spacing:-.01em;white-space:normal;overflow-wrap:break-word;max-width:100%}
.navdrop-menu .fmenu-tiles .tab:hover{background:var(--sf);border-color:var(--ac);color:var(--tx);transform:translateY(-1px);box-shadow:0 4px 10px rgba(20,30,60,.12)}
.navdrop-menu .fmenu-tiles .tab:hover .ft-ico{transform:scale(1.08)}
.navdrop-menu .fmenu-tiles .tab .ft-ico{transition:transform .1s}
.navdrop-menu .fmenu-tiles .tab.active{background:var(--ac);color:#fff;border-color:transparent;box-shadow:0 3px 9px rgba(20,30,60,.18)}
/* 📁 Menu — matriz assuntos × contextos (visão geral de funcionalidades; mesmo assunto na MESMA linha) */
/* Painel de TELA CHEIA abaixo da topbar: sem rolagem (overflow:hidden), preenchendo horizontal e vertical.
   `100vh` NÃO enxerga o zoom do <body> (escalaUI) → dividir por --ui-zoom, senão sobra faixa no rodapé.
   24/08/2026 ("suba para a primeira linha a esquerda"): ✓ autoSave · 📁 Menu ▾ · 📁 Projeto+seletor SUBIRAM
   da topbar/nav clássica p/ dentro de .app-row-line (Linha 1, à esquerda, antes dos 5 ícones utilitários) —
   a âncora do painel de tela cheia migrou de .topbar p/ .app-row-line (mesma técnica; agora ele cobre a
   .topbar também enquanto aberto, o que é aceitável p/ um mega-menu). #ndMenu não precisa mais do CSS
   `order` p/ ficar em 1º — já é o 2º filho literal de .app-row-line (depois só do ✓), na ordem certa. */
.topbar{position:relative}                     /* segue como âncora de outros filhos posicionados, se houver */
.app-row-line{position:relative}               /* NOVA âncora do painel de tela cheia do 📁 Menu */
#ndMenu{position:static}
/* 🛠 Admin AO LADO do 🚚 (26/08/2026, "O Admin deve ficar ao lado do transporte"): saiu da Linha 2 (#tabs,
   onde o order:-2 o punha em 1º) p/ o #appRowUtilsRight da Linha 1 — a posição agora é física, sem `order`.
   Fora do #tabs a pintura âmbar da Linha 2 (#tabs>[data-app]…) não o alcança → identidade P³ᴹ própria via
   o --hc inline do index; e o menu ancora pela DIREITA (na borda da tela, o left:0 padrão estouraria a viewport). */
#ndAdmin>.navdrop-btn{background:color-mix(in srgb,var(--hc,#b45309) 12%,var(--sf));
  border:1px solid color-mix(in srgb,var(--hc,#b45309) 28%,var(--bd));
  color:color-mix(in srgb,var(--hc,#b45309) 58%,var(--tx));border-radius:7px}
#ndAdmin>.navdrop-btn:hover,#ndAdmin.open>.navdrop-btn{
  background:color-mix(in srgb,var(--hc,#b45309) 22%,var(--sf));border-color:var(--hc,#b45309);color:var(--tx)}
#ndAdmin .navdrop-menu{left:auto;right:0}
.navdrop.open>.navdrop-menu.menu-geral{
  display:grid;position:absolute;top:100%;left:0;right:0;width:auto;margin:0;box-sizing:border-box;
  height:calc((100vh / var(--ui-zoom, 1)) - 100%);max-width:none;max-height:none;overflow:hidden;
  border-radius:0 0 12px 12px;padding:6px 14px 4px;
  grid-template-columns:max-content repeat(5,minmax(0,1fr));
  grid-template-rows:auto repeat(19,minmax(0,1fr)) auto;   /* cabeçalho + 19 assuntos (+💵 Financeiro e ⚙ Sistema, 26/08/2026) + rodapé — o nº TEM de casar com os .mg-ass (guardado por test/menu-geral.test.mjs) */
  gap:0;align-items:stretch}
.menu-geral .mg-colhead{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:4px 10px 6px;white-space:nowrap}
.menu-geral .mg-dm{color:#2563eb}.menu-geral .mg-pf{color:#b45309}.menu-geral .mg-pj{color:#0d9488}.menu-geral .mg-tk{color:#15803d}.menu-geral .mg-fe{color:#7c3aed}
.menu-geral .mg-ass{font-size:12px;font-weight:600;color:var(--tx);padding:4px 14px 4px 4px;white-space:nowrap;border-top:1px solid var(--bd);display:flex;align-items:center}
.menu-geral .mg-cell{border-top:1px solid var(--bd);padding:4px 10px 4px 8px;display:flex;align-items:center;align-content:center;flex-wrap:wrap;gap:3px 4px;min-width:0;overflow:hidden}
.menu-geral .mg-cell .mg-btn{display:inline-block;width:auto;flex:0 0 auto;text-align:center;padding:3px 8px;font-size:11px;font-weight:500;border:1px solid var(--bd);border-radius:6px;color:var(--tx2);background:transparent;cursor:pointer;white-space:nowrap;transition:background .1s}
.menu-geral .mg-cell .mg-btn.mg-ico{width:26px;padding:2px 0;font-size:12.5px;line-height:1.4}   /* verbo iconizado (main.iconizarMenuGeral): quadradinho fixo — os 4 verbos cabem numa linha */
.menu-geral .mg-cell .mg-btn:hover{background:var(--s2);border-color:var(--ac);color:var(--tx)}
.menu-geral .mg-cell .mg-btn.active,.menu-geral .mg-cell .mg-rn.on{background:var(--ac);color:#fff;border-color:transparent}
.menu-geral .mg-rn{min-width:24px;text-align:center;font-weight:700}
.menu-geral .mg-empty{color:var(--tx2);opacity:.35;justify-content:center}
.menu-geral .mg-sub{flex:0 0 auto;font-size:9.5px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.03em;margin-left:6px}
.menu-geral .mg-sub:first-child{margin-left:0}
.menu-geral .mg-note{grid-column:1/-1;border-top:1px solid var(--bd);margin-top:2px;padding:6px 4px 2px;font-size:11px;color:var(--tx2);font-style:italic}
/* ── PADRÃO DE REPORT (reportKit) ── cabeçalho em 3 blocos + corpo em 2 quadrantes (tabela | gráficos) */
/* O report ocupa a tela toda (o .card padrão trava em 1000px) e é seu PRÓPRIO contexto responsivo:
   `container-type:inline-size` faz as quebras medirem a largura DO REPORT — não a da janela. É o que vale
   aqui, porque o app tem zoom global (escalaUI) e um split lateral redimensionável: com @media, a mesma
   janela dava layout largo num painel estreito. */
.card.rk{max-width:none;width:100%;box-sizing:border-box;container-type:inline-size;container-name:rk}
.rk .rk-head{display:grid;grid-template-columns:minmax(300px,1.15fr) minmax(240px,.75fr) minmax(340px,1.1fr);gap:10px;align-items:start;margin:6px 0 12px;padding:10px;background:var(--s2);border:1px solid var(--bd);border-radius:10px}
.rk .rk-blk{min-width:0;display:flex;flex-direction:column;gap:6px}
.rk .rk-blk+.rk-blk{border-left:1px solid var(--bd);padding-left:10px}
.rk .rk-blk-t{font-size:10.5px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.4px}
.rk .rk-blk .tk-bar{margin:0;padding:0;border:none;background:transparent;display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.rk .rk-blk .tk-cell{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;min-width:0}   /* nunca cortar os selects (o bloco ③ colava por cima) */
.rk .rk-blk select{max-width:100%}
.rk .rk-blk .tk-busca{min-width:150px;max-width:100%}
.rk .rk-ctrls{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:11.5px;color:var(--tx2)}
.rk .rk-ctrls select{background:var(--sf);border:1px solid var(--bd);color:var(--tx);border-radius:6px;padding:3px 6px;font:inherit;font-size:11.5px;max-width:100%}
.rk .rk-kpis{display:flex;flex-wrap:wrap;gap:6px}
.rk .rk-kpi{display:flex;flex-direction:column;align-items:flex-start;gap:0;padding:4px 9px;min-width:74px;border:1px solid var(--bd);border-left:3px solid var(--kc);border-radius:7px;background:var(--sf);cursor:pointer;text-align:left}
.rk .rk-kpi:not([data-rk-kpi]){cursor:default}
.rk .rk-kpi b{font-size:15px;font-weight:700;color:var(--kc);line-height:1.15}
.rk .rk-kpi span{font-size:10px;color:var(--tx2);white-space:nowrap}
.rk .rk-kpi:hover{border-color:var(--kc)}
.rk .rk-kpi.on{background:var(--kc);border-color:transparent}
.rk .rk-kpi.on b,.rk .rk-kpi.on span{color:#fff}
.rk .rk-gos{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}
.rk .rk-go,.rk .rk-clear{padding:3px 9px;font-size:11px;font-weight:500;border:1px solid var(--bd);border-radius:6px;background:var(--sf);color:var(--tx2);cursor:pointer;white-space:nowrap}
.rk .rk-go:hover,.rk .rk-clear:hover{background:var(--s2);border-color:var(--ac);color:var(--tx)}
.rk .rk-clear.on{color:#d23b4e;border-color:#d23b4e}
.rk .rk-body{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:12px;align-items:start}
.rk .rk-quad{min-width:0}
.rk .rk-tbl{max-height:64vh;overflow:auto;border:1px solid var(--bd);border-radius:10px}
.rk .rk-tbl table{width:100%;border-collapse:collapse;font-size:12.5px}
.rk .rk-tbl thead th{position:sticky;top:0;z-index:2;background:var(--sf);border-bottom:1px solid var(--bd);padding:7px 9px;text-align:left;font-size:11px;color:var(--tx2)}
.rk .rk-tbl tbody td{border-bottom:1px solid var(--bd);padding:6px 9px}
.rk .rk-tbl tbody tr:hover td{background:var(--s2)}
.rk .rk-tbl td.num,.rk .rk-tbl th.num{text-align:right;font-variant-numeric:tabular-nums}
.rk .rk-acts{width:34px;text-align:center}
.rk .rk-lupa{border:none;background:transparent;cursor:pointer;font-size:13px;opacity:.55;padding:1px 3px;border-radius:5px}
.rk .rk-lupa:hover{opacity:1;background:var(--s2)}
.rk .rk-dot{display:inline-block;width:8px;height:8px;border-radius:50%;vertical-align:middle;margin-right:3px}
.rk .rk-foco{color:#7c3aed}
/* ── 📅 Atividades da Semana ── navegação de semana + destaque de linha (⭐ fecha na semana · 🔴 atrasada) */
.rk .rk-sem{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--bd);border-radius:7px;background:var(--sf);padding:1px 3px}
.rk .rk-sem-lbl{font-size:11px;color:var(--tx);padding:0 4px;white-space:nowrap}
.rk .rk-sem-lbl i{color:var(--tx2);font-size:10px}
.rk .rk-sb{border:none;background:transparent;color:var(--tx2);font:inherit;font-size:11px;padding:2px 6px;border-radius:5px;cursor:pointer}
.rk .rk-sb:hover{background:var(--s2);color:var(--tx)}
.rk .rk-sb-hoje.on{color:var(--ac);font-weight:600}
.rk .rk-mail{border-color:#2563eb;color:#2563eb;font-weight:600}
.rk .rk-mail:hover{background:#2563eb;border-color:#2563eb;color:#fff}
/* ⚙ Colunas + 💾 Visão do report da semana (popover próprio; z acima da barra de filtros sticky) */
.rk .rk-cols{position:relative}
.rk .rk-cols>summary{list-style:none;cursor:pointer;font-size:11px;padding:3px 8px;border:1px solid var(--bd);border-radius:6px;background:var(--sf);color:var(--tx2);white-space:nowrap}
.rk .rk-cols>summary::-webkit-details-marker{display:none}
.rk .rk-cols>summary:hover{background:var(--s2);color:var(--tx)}
.rk .rk-cols[open]{z-index:40}
.rk .rk-cols[open]>summary{border-color:var(--ac);color:var(--ac)}
.rk .rk-cols-pop{position:absolute;z-index:40;top:100%;right:0;margin-top:4px;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 6px 18px rgba(15,23,42,.16);padding:6px;display:grid;grid-template-columns:repeat(2,minmax(132px,1fr));gap:1px 10px;max-height:52vh;overflow:auto}
.rk .rk-colck{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--tx);padding:2px 4px;border-radius:5px;cursor:pointer;white-space:nowrap}
.rk .rk-colck:hover{background:var(--s2)}
.rk .rk-colck.fixa{color:var(--tx2);cursor:default}
.rk .rk-colrow{display:flex;align-items:center;gap:4px;justify-content:space-between}
.rk .rk-colmv{display:inline-flex;gap:1px;flex:none}
.rk .rk-colmv button{border:1px solid var(--bd);background:var(--sf);color:var(--tx2);font-size:10px;line-height:1;padding:2px 4px;border-radius:4px;cursor:pointer}
.rk .rk-colmv button:hover:not(:disabled){background:var(--ac);border-color:var(--ac);color:#fff}
.rk .rk-colmv button:disabled{opacity:.25;cursor:default}
/* arrastar o cabeçalho move a coluna: origem esmaecida, alvo com fio na borda de entrada */
.rk .rk-tbl thead th.rk-col-drag{opacity:.4}
.rk .rk-tbl thead th.rk-col-alvo{box-shadow:inset 2px 0 0 var(--ac)}
/* 📍 data de status DO REPORT (simulação; `on` = diferente da do projeto) */
.rk .rk-sdlbl.on{color:#c77700;font-weight:700}
.rk .rk-sd{font:inherit;font-size:11px;padding:2px 5px;border:1px solid var(--bd);border-radius:6px;background:var(--sf);color:var(--tx)}
.rk .rk-sd.on{border-color:#c77700;color:#c77700;font-weight:700}
.rk .rk-star{color:#c77700}
.rk .rk-late{font-size:10px}
.rk .rk-tbl tbody tr.rk-sem-fecha td{background:rgba(199,119,0,.09)}
.rk .rk-tbl tbody tr.rk-sem-fecha:hover td{background:rgba(199,119,0,.17)}
.rk .rk-tbl tbody tr.rk-sem-fecha td:first-child{box-shadow:inset 3px 0 0 #c77700}
.rk .rk-tbl tbody tr.rk-sem-atras td{background:rgba(210,59,78,.07)}
.rk .rk-tbl tbody tr.rk-sem-atras:hover td{background:rgba(210,59,78,.14)}
.rk .rk-tbl tbody tr.rk-sem-atras td:first-child{box-shadow:inset 3px 0 0 #d23b4e}
.rk .rk-graf{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;align-content:start;max-height:64vh;overflow:auto}
.rk .rk-gcard{border:1px solid var(--bd);border-radius:10px;padding:8px 10px 10px;background:var(--sf);min-width:0}
.rk .rk-gtit{font-size:11px;font-weight:600;color:var(--tx2);margin-bottom:6px}
.rk .rk-gbox{position:relative;height:var(--rk-gh,150px)}
.rk .rk-gvazio{height:60px;display:flex;align-items:center;justify-content:center;color:var(--tx2);font-size:11px;font-style:italic}
/* ── clique no gráfico FILTRA a tabela ── a série ativa fica marcada dos dois lados (regra dos filtros bidirecionais) */
.rk .rk-gtit{display:flex;align-items:center;justify-content:space-between;gap:6px}
.rk .rk-gmao{opacity:.5;font-size:9.5px;white-space:nowrap;color:var(--tx2)}
.rk .rk-gcard.on{border-color:var(--ac);box-shadow:0 0 0 1px var(--ac) inset}
.rk .rk-gx{border:1px solid var(--ac);background:var(--sf);color:var(--ac);border-radius:20px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk .rk-gx:hover{background:var(--ac);color:#fff}
.rk .rk-chips{display:flex;flex-wrap:wrap;gap:5px}
.rk .rk-chips:empty{display:none}
.rk .rk-chip{border:1px solid var(--ac);background:var(--sf);color:var(--tx);border-radius:20px;padding:2px 9px;font-size:11px;cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk .rk-chip:hover{background:var(--ac);color:#fff}
.rk .rk-chip:hover b{color:#fff}
/* ── 👁 Ver como: 2ª visualização (📋 Tabela | 🃏 Cartões) ── */
.rk .rk-vis{display:inline-flex;border:1px solid var(--bd);border-radius:7px;overflow:hidden;background:var(--sf)}
.rk .rk-vb{border:none;background:transparent;color:var(--tx2);font:inherit;font-size:11px;padding:3px 9px;cursor:pointer;white-space:nowrap}
.rk .rk-vb+.rk-vb{border-left:1px solid var(--bd)}
.rk .rk-vb:hover{background:var(--s2);color:var(--tx)}
.rk .rk-vb.on{background:var(--ac);color:#fff}
.rk .rk-cds{max-height:64vh;overflow:auto;display:flex;flex-direction:column;gap:8px}
.rk .rk-ord{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tx2);position:sticky;top:0;z-index:2;background:var(--bg);padding:2px 0}
.rk .rk-ordd{border:1px solid var(--bd);background:var(--sf);color:var(--tx2);border-radius:6px;padding:2px 8px;cursor:pointer;font-size:11px}
.rk .rk-ordd:disabled{opacity:.4;cursor:default}
.rk .rk-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:9px;align-content:start}
.rk .rk-card{position:relative;border:1px solid var(--bd);border-left:4px solid var(--kc,var(--bd));border-radius:10px;background:var(--sf);padding:9px 34px 9px 10px;display:flex;flex-direction:column;gap:6px;min-width:0}
.rk .rk-card:hover{border-color:var(--ac)}
.rk .rk-card-t{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:5px;min-width:0;overflow-wrap:anywhere}
.rk .rk-card-sub{font-size:10.5px;color:var(--tx2);margin-top:-4px;overflow-wrap:anywhere}
.rk .rk-card dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:5px 8px;margin:0}
.rk .rk-card dt{font-size:9.5px;color:var(--tx2);text-transform:uppercase;letter-spacing:.03em}
.rk .rk-card dd{margin:0;font-size:12px;min-width:0;overflow-wrap:anywhere}
.rk .rk-card dd.num{font-variant-numeric:tabular-nums}
.rk .rk-card-acts{position:absolute;top:6px;right:5px;display:flex;gap:1px}
.rk .rk-cgrp{grid-column:1/-1;font-size:11.5px;font-weight:700;color:var(--tx2);background:var(--s2);border:1px solid var(--bd);border-radius:7px;padding:4px 9px}
.rk .rk-cgrp-2{font-weight:600;background:transparent;border-style:dashed;margin-left:10px}
/* ── RESPONSIVO por container query (mede o REPORT, não a janela) ── 3 blocos → 2 → 1; 2 quadrantes → 1 */
@container rk (max-width:1400px){.rk .rk-body{grid-template-columns:minmax(0,1.35fr) minmax(270px,1fr)}}
@container rk (max-width:1150px){
  .rk .rk-head{grid-template-columns:1fr 1fr}
  .rk .rk-blk-q{grid-column:1/-1;border-left:none;padding-left:0;border-top:1px solid var(--bd);padding-top:8px}
  .rk .rk-body{grid-template-columns:1fr}
  .rk .rk-tbl,.rk .rk-cds{max-height:56vh}
  .rk .rk-graf{max-height:none;overflow:visible;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
  .rk .rk-p2{display:none}
}
@container rk (max-width:760px){
  .rk .rk-head{grid-template-columns:1fr}
  .rk .rk-gmao{display:none}
  .rk .rk-blk+.rk-blk{border-left:none;padding-left:0;border-top:1px solid var(--bd);padding-top:8px}
  .rk .rk-kpi{flex:1 1 calc(50% - 6px);min-width:0}
  .rk .rk-kpi span{white-space:normal}
  .rk .rk-tbl,.rk .rk-cds{max-height:none}
  .rk .rk-tbl table{font-size:12px}
  .rk .rk-tbl tbody td,.rk .rk-tbl thead th{padding:5px 6px}
    .rk{--rk-gh:132px}
  .rk .rk-p3{display:none}
}
/* Sem suporte a container query (navegador antigo): cai no comportamento histórico de 1 coluna */
@supports not (container-type:inline-size){@media (max-width:1200px){.rk .rk-head{grid-template-columns:1fr}.rk .rk-blk+.rk-blk{border-left:none;padding-left:0;border-top:1px solid var(--bd);padding-top:8px}.rk .rk-body{grid-template-columns:1fr}}}
.rs-map{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:8px 12px;margin:10px 0;font-size:12px}
.rs-map-off{color:var(--tx2)}
.rs-map-com{background:#f0fdf4;border-color:#86efac}   /* gravação pelo Excel ligada: modo seguro, acento verde */
.rs-map-rec{background:#fffbeb;border-color:#fcd34d}   /* recomendação: ligar o modo seguro (ainda desligado) */
.rs-map-lbl b{color:var(--tx)}
.rs-map-acts{display:flex;gap:6px}
.rs-map-btn{font-size:12px;padding:4px 9px}
.rs-ok{color:var(--ok,#1f9d57);font-weight:700}
.rs-warn{color:var(--wa,#d98324);font-weight:700}
.rs-opts{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.rs-opt{display:flex;flex-direction:column;gap:2px;text-align:left;background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:10px 12px;cursor:pointer;font:inherit;color:var(--tx)}
.rs-opt:hover{border-color:var(--ac);background:var(--sf)}
.rs-opt b{font-size:14px}
.rs-opt span{font-size:12px;color:var(--tx2)}
.rs-diff{max-height:60vh;overflow:auto;margin:8px 0}
.rs-cat{border-top:1px solid var(--bd);padding:8px 0}
.rs-cat h3{margin:0 0 6px;font-size:14px}
.rs-row{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;margin:3px 0}
.rs-lbl{font-size:11px;font-weight:700;color:var(--tx2);min-width:150px}
.rs-chip{display:inline-block;font-size:11px;font-weight:600;padding:1px 7px;border-radius:10px;border:1px solid var(--bd)}
.rs-app{background:rgba(77,124,254,.12);color:#3a5ccc}
.rs-file{background:rgba(31,157,87,.14);color:#1f7a48}
.rs-mud{font-size:12px;padding:2px 0 2px 8px;border-left:2px solid var(--wa);margin:2px 0}
/* ⇄ Sincronizar nos dois sentidos (ridacReconciliar) — vence o .esc-card(440px) por especificidade */
.esc-card.rrec-card{width:min(940px,96vw);max-width:96vw;max-height:93vh;display:flex;flex-direction:column}
.rrec-body{flex:1;min-height:0;max-height:none}
.rrec-bar{display:flex;gap:14px;flex-wrap:wrap;align-items:center;background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:6px 10px;font-size:12px}
.rrec-bg{display:flex;gap:5px;align-items:center}
.rrec-bg>b{color:var(--tx2);font-size:11px;text-transform:uppercase;letter-spacing:.3px;margin-right:2px}
.rrec-mb{font-size:12px;padding:3px 9px}
.rrec-mb.on{border-color:var(--ac);color:var(--ac);font-weight:700}
.rrec-mb[disabled]{opacity:.5;cursor:default}
.rrec-grp{margin:4px 0 8px}
.rrec-gt{font-size:12px}
.rrec-gh{font-size:11px;color:var(--tx2)}
.rrec-it{display:flex;gap:8px;align-items:center;font-size:12px;padding:2px 4px;border-radius:5px}
.rrec-it:hover{background:var(--s2)}
.rrec-it input[type=checkbox]{flex:0 0 auto}
.rrec-desc{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx2)}
.rrec-dif{border-left:2px solid var(--wa);padding-left:8px}
.rrec-rad{display:flex;gap:8px;flex:0 0 auto}
.rrec-r{display:inline-flex;gap:3px;align-items:center;font-size:11px;cursor:pointer;white-space:nowrap}
.rrec-sum{font-size:12px;color:var(--tx2);border-top:1px solid var(--bd);padding:8px 2px;margin-top:4px}
.rrec-sum b{color:var(--tx)}
.rr-num{background:none;border:none;color:var(--ac);font:inherit;font-weight:600;cursor:pointer;padding:2px 6px;border-radius:4px}
.rr-num:hover:not([disabled]){background:var(--s2);text-decoration:underline}
.rr-num[disabled]{color:var(--tx2);cursor:default;font-weight:400}
.rr-num.rr-er{color:var(--er)}
.rr-catname{background:none;border:none;color:inherit;font:inherit;cursor:pointer;padding:0;text-align:left}
/* Relatórios RIDAC — navegação FIXA no topo ao rolar (sticky) */
.rr-nav{position:sticky;top:0;z-index:30;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;background:var(--bg);padding:9px 12px;border-bottom:1px solid var(--bd);box-shadow:0 2px 8px rgba(20,30,60,.08)}
.rr-nav b{font-size:14px}
.rr-nav a{color:var(--ac);text-decoration:none;font-size:13px;font-weight:600;white-space:nowrap;padding:2px 6px;border-radius:5px}
.rr-nav a:hover{background:var(--s2);text-decoration:none}
.rr-nav a.rr-er{color:var(--er)}
/* Relatórios RIDAC — listas "o que está pegando" (atraso/críticos) */
.rr-listhead{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.rr-listhead h2{margin:0;flex:1}
.rr-toggle{display:inline-flex;border:1px solid var(--bd);border-radius:7px;overflow:hidden;flex:none}
.rr-toggle button{background:var(--sf);border:none;color:var(--tx2);padding:5px 11px;font:inherit;font-size:12px;font-weight:600}
.rr-toggle button:hover{background:var(--s2)}
.rr-toggle button.on{background:var(--ac);color:#fff}
.rr-list{display:flex;flex-direction:column;gap:6px}
.rr-todos-bar{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px;align-items:center}
.rr-todos-bar .rrt-in{flex:1;min-width:200px;padding:7px 11px;border:1px solid var(--bd);border-radius:8px;font:inherit;font-size:13px;color:var(--tx);background:#fff}
.rr-todos-bar .rrt-in:focus{outline:none;border-color:var(--ac)}
.rr-todos-bar .rrt-sel{padding:7px 9px;border:1px solid var(--bd);border-radius:8px;font:inherit;font-size:12.5px;background:#fff;color:var(--tx);cursor:pointer}
.rr-todos-bar .rrt-multi{position:relative}
.rr-todos-bar .rrt-multi>summary{list-style:none;cursor:pointer;padding:7px 10px;border:1px solid var(--bd);border-radius:8px;background:#fff;font-size:12.5px;color:var(--tx);white-space:nowrap;user-select:none}
.rr-todos-bar .rrt-multi>summary::-webkit-details-marker{display:none}
.rr-todos-bar .rrt-multi[open]>summary{border-color:var(--ac);color:var(--ac)}
.rr-todos-bar .rrt-menu{position:absolute;z-index:60;top:100%;left:0;margin-top:4px;min-width:190px;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 12px 30px rgba(20,30,60,.2);padding:6px;display:flex;flex-direction:column;gap:1px}
.rr-todos-bar .rrt-menu label{display:flex;align-items:center;gap:7px;padding:4px 7px;font-size:12.5px;border-radius:5px;cursor:pointer;white-space:nowrap}
.rr-todos-bar .rrt-menu label:hover{background:var(--s2)}
.rr-todos-bar .rrt-relbtn{padding:7px 11px;border:1px solid var(--bd);border-radius:8px;background:#fff;font:inherit;font-size:12.5px;color:var(--tx);cursor:pointer;white-space:nowrap}
.rr-todos-bar .rrt-relbtn.on{background:var(--ac);border-color:var(--ac);color:#fff}
.rr-listhead .rrt-relbtn{padding:6px 10px;border:1px solid var(--bd);border-radius:8px;background:#fff;font:inherit;font-size:12px;color:var(--tx);cursor:pointer;white-space:nowrap}
.rrt-email{padding:6px 12px;border:1px solid #1f9d57;border-radius:8px;background:#1f9d57;color:#fff;font:inherit;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.rrt-email:hover{background:#178048}
.rr-item-wrap .rr-sel{flex:none;width:16px;height:16px;cursor:pointer;margin-left:2px}
.rr-grp-head{padding:9px 8px 4px;font-size:13px;color:var(--tx);border-top:1px solid var(--bd);margin-top:6px}
.rr-grp-head:first-child{border-top:none;margin-top:0}
.rr-grp-head .rr-grp-ct{display:inline-block;background:var(--s2);border-radius:10px;padding:1px 8px;font-size:11px;font-weight:600;color:var(--tx2);margin-left:5px}
.rr-item{display:grid;grid-template-columns:auto auto 1fr auto auto auto auto;align-items:center;gap:10px;
  width:100%;text-align:left;background:var(--sf);border:1px solid var(--bd);border-left:3px solid var(--bd);
  border-radius:8px;padding:8px 12px;font:inherit;color:var(--tx);
  transition:border-color .1s,box-shadow .1s,transform .1s}
.rr-item:hover{border-color:var(--ac);box-shadow:0 2px 10px rgba(47,111,237,.15);transform:translateY(-1px)}
.rr-let{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;
  color:#fff;font-weight:800;font-size:12px;flex:none}
.rr-let-riscos{background:var(--er)} .rr-let-issues{background:var(--wa)} .rr-let-decisoes{background:var(--ac)}
.rr-let-acoes{background:var(--ok)} .rr-let-changes{background:#7c4dff}
.rr-item.cat-riscos{border-left-color:var(--er)} .rr-item.cat-issues{border-left-color:var(--wa)}
.rr-item.cat-decisoes{border-left-color:var(--ac)} .rr-item.cat-acoes{border-left-color:var(--ok)}
.rr-item.cat-changes{border-left-color:#7c4dff}
.rr-id{font-weight:700;font-size:12px;color:var(--tx2);font-variant-numeric:tabular-nums}
.rr-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.rr-resp{font-size:12px;color:var(--tx2);white-space:nowrap}
.rr-dt{font-size:11.5px;font-weight:700;white-space:nowrap;padding:3px 9px;border-radius:20px;background:#fbe3e7;color:var(--er)}
.rr-grp-tag{font-size:11px;color:var(--tx2);background:var(--s2);border:1px solid var(--bd);border-radius:6px;padding:1px 7px;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none}
.rr-gut{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.rrt-grp-ctrl{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap}
.rrt-sort{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--tx2)}
.rrt-grp-chip{display:inline-flex;align-items:center;gap:5px;background:var(--ac);color:#fff;border-radius:14px;padding:2px 9px;font-size:12px;font-weight:600}
.rrt-grp-chip b{font-size:10px;opacity:.8;font-weight:800}
.rrt-grp-x{cursor:pointer;opacity:.8;font-size:11px}
.rrt-grp-x:hover{opacity:1}
.rr-grp-head.rr-grp-l1{background:var(--bg)}
.rr-grp-head.rr-grp-l2{font-size:12px}
/* Variante CARTÕES (grid) */
.rr-list.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.rr-list.cards .rr-grp-head{grid-column:1/-1;border-top:none;margin-top:8px}
.rr-list.cards .rr-item{grid-template-columns:auto 1fr auto;
  grid-template-areas:"let id dt" "desc desc desc" "grp grp gut" "resp resp resp";row-gap:6px;align-items:center}
.rr-list.cards .rr-gut{grid-area:gut;justify-self:end}
.rr-list.cards .rr-let{grid-area:let} .rr-list.cards .rr-id{grid-area:id}
.rr-list.cards .rr-dt{grid-area:dt;justify-self:end}
.rr-list.cards .rr-desc{grid-area:desc;white-space:normal}
.rr-list.cards .rr-grp-tag{grid-area:grp;justify-self:start;max-width:100%}
.rr-list.cards .rr-resp{grid-area:resp}
.rr-catname:hover{text-decoration:underline}
/* Item wrapper com lupa */
.rr-item-wrap{display:flex;align-items:center;gap:4px}
.rr-item-wrap .rr-item{flex:1;min-width:0}
.rr-upd-btn{border:none;background:none;cursor:pointer;font-size:15px;padding:4px 6px;border-radius:6px;color:var(--tx2);opacity:.4;transition:opacity .15s,background .15s;flex:none;line-height:1}
.rr-upd-btn:hover{opacity:1;background:var(--s2)}
.rr-list.cards .rr-item-wrap{position:relative}
.rr-list.cards .rr-item-wrap .rr-item{width:100%}
.rr-list.cards .rr-upd-btn{position:absolute;top:4px;right:4px;font-size:13px;padding:2px 4px}
/* Popup de atualização rápida */
.rr-upd-pop{position:fixed;z-index:600;width:280px;background:var(--sf);border:1px solid var(--bd);border-radius:10px;box-shadow:0 8px 28px rgba(20,30,60,.2);overflow:hidden}
.rr-upd-pop[hidden]{display:none!important}
.rr-upd-head{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--s2);border-bottom:1px solid var(--bd)}
.rr-upd-nm{flex:1;font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rr-upd-close{border:none;background:none;cursor:pointer;font-size:13px;color:var(--tx2);padding:2px 5px;border-radius:4px;line-height:1}
.rr-upd-close:hover{background:var(--bd)}
.rr-upd-meta{padding:6px 10px;font-size:12px;color:var(--tx2);border-bottom:1px solid var(--bd)}
.rr-upd-acts{display:flex;gap:5px;padding:8px 10px}
.rr-upd-acts button{flex:1;padding:5px 4px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:11.5px;cursor:pointer;background:var(--sf);color:var(--tx)}
.rr-upd-acts button:hover{background:var(--s2)}
.rr-upd-acts button.ok{background:var(--ok);color:#fff;border-color:var(--ok)}
.rr-upd-acts button.ok:hover{opacity:.85}
/* Card modal de edição RIDAC (rrc-*) */
.esc-card.rrc-card{width:min(820px,96vw);max-height:90vh;display:flex;flex-direction:column}   /* mais largo; vence o .esc-card(440px) por especificidade */
.rrc-body{overflow-y:auto;overflow-x:hidden;padding:14px 18px;display:flex;flex-direction:column;gap:10px;flex:1}
.rrc-row{display:flex;flex-direction:column;gap:3px;min-width:0}
.rrc-row label{font-size:11px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.04em}
.rrc-full{grid-column:1/-1}
.rrc-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.rrc-cols.rrc-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.rrc-cols.rrc-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.rrc-in{border:1px solid var(--bd);border-radius:6px;padding:6px 8px;font:inherit;font-size:13px;color:var(--tx);background:var(--bg);width:100%;min-width:0;box-sizing:border-box}
.rrc-chk-lab{display:flex !important;flex-direction:row !important;align-items:center;gap:7px;text-transform:none !important;font-weight:600 !important;font-size:13px !important;color:var(--tx) !important;cursor:pointer}
.rrc-chk-lab input{width:auto;margin:0}
.rrc-chk-hint{font-weight:400;color:var(--tx2);font-size:12px}
.rrc-updt{margin-left:8px;text-transform:none;font-weight:600;font-size:11px;border:1px solid var(--bd);background:#fff;color:var(--ac);border-radius:5px;padding:2px 7px;cursor:pointer}
.rrc-updt:hover{border-color:var(--ac);background:var(--s2)}
.rrc-in:focus{outline:none;border-color:var(--ac)}
.rrc-sel{border:1px solid var(--bd);border-radius:6px;padding:5px 8px;font:inherit;font-size:13px;color:var(--tx);background:var(--bg);width:100%}
.rrc-sel:focus{outline:none;border-color:var(--ac)}
.rrc-ta{border:1px solid var(--bd);border-radius:6px;padding:6px 8px;font:inherit;font-size:13px;color:var(--tx);background:var(--bg);resize:vertical;width:100%;box-sizing:border-box;min-height:52px}
.rrc-ta:focus{outline:none;border-color:var(--ac)}
.rrc-ta.rrc-nota-xl{min-height:180px}   /* Nota triplicada (era ~52px) */
.rrc-fmt{display:inline-flex;gap:1px;border:1px solid var(--bd);border-radius:6px;padding:1px;margin-left:6px;vertical-align:middle}
.rrc-fmt .rrcf{border:none;background:transparent;color:var(--tx2);border-radius:4px;padding:1px 7px;cursor:pointer;font-size:12px;line-height:1.2;text-transform:none}
.rrc-fmt .rrcf:hover{background:var(--s2);color:var(--tx)}
/* Menu — refinamento visual */
.tabs{gap:2px}
.tab,.navdrop-btn{border-radius:8px;padding:7px 11px;transition:background .12s,color .12s,box-shadow .12s}
.tab:hover,.navdrop-btn:hover,.navdrop.open>.navdrop-btn{background:var(--s2);color:var(--tx)}
.tab.active{background:var(--ac);color:#fff;box-shadow:0 2px 8px rgba(47,111,237,.3)}
.navdrop.open>.navdrop-btn{box-shadow:inset 0 -2px 0 var(--ac)}
.navdrop-menu{border-radius:10px;box-shadow:0 14px 34px rgba(20,30,60,.18);padding:6px;margin-top:4px}
.navdrop-menu .tab,.fmenu-item{border-radius:7px;padding:8px 12px;transition:background .1s}
.navdrop-menu .tab.active{background:var(--ac);color:#fff;box-shadow:none}
.tab-sep{opacity:.6}
.topbar{box-shadow:0 1px 0 var(--bd),0 3px 10px rgba(20,30,60,.06)}
.topbar-right{display:flex;align-items:center;gap:8px}
.topbar-right .ghost{background:var(--s2);border:1px solid var(--bd);color:var(--tx);
  border-radius:6px;padding:6px 10px}

/* VIEWS */
main{flex:1;min-height:0;overflow:hidden}
.view{display:none;height:100%;overflow:auto;padding:0}
.view.active{display:flex;flex-direction:column}
#view-recursos,#view-calendario,#view-biblioteca,#view-raci,#view-ajuda,
#view-portfolio,#view-backlog,#view-canvas,#view-faturamentos,
#view-riscos,#view-issues,#view-decisoes,#view-acoes,#view-changes{padding:20px;display:none}
#view-recursos.active,#view-calendario.active,#view-biblioteca.active,
#view-raci.active,#view-ajuda.active,#view-portfolio.active,#view-backlog.active,#view-canvas.active,#view-faturamentos.active,
#view-riscos.active,#view-issues.active,#view-decisoes.active,#view-acoes.active,#view-changes.active{display:block}

/* TOOLBAR + FILTROS */
.toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:8px 12px;
  background:var(--sf);border-bottom:1px solid var(--bd)}
.toolbar button{background:var(--s2);border:1px solid var(--bd);color:var(--tx);
  border-radius:6px;padding:6px 11px;font-size:12px;font-weight:600}
.toolbar button:hover{border-color:var(--ac)}
.toolbar button.primary{background:var(--ac);border-color:var(--ac);color:#fff}
.toolbar button.on{background:var(--wa);border-color:var(--wa);color:#fff}
.toolbar .sep{width:1px;height:22px;background:var(--bd);margin:0 4px}
.f-sd{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--ac);
  background:#eaf1ff;border:1px solid #c4d6fb;border-radius:7px;padding:3px 8px}
.f-sd input{border:1px solid var(--bd);border-radius:5px;padding:3px 5px;font-size:12px;background:#fff;color:var(--tx);font-weight:600}
.toolbar .zbtn{padding:5px 8px;font-size:13px;line-height:1;font-weight:700}
.zbtn.on{background:#ffedd5;color:#9a3412;box-shadow:inset 0 0 0 1.5px #f59e0b}   /* ⚡▢ filtro de atualização ATIVO */
.toolbar .zbtn.s-senna{padding:2px 7px}   /* "S do Senna" — badge do capacete; padding enxuto p/ o SVG encaixar */
.toolbar .zbtn.s-senna svg{display:block}
/* 🔬 Enc.Filtro — o emoji do microscópio é quase todo cinza-claro e some no fundo da barra; sobe a fonte p/ ele aparecer */
.toolbar #tb_fitf{font-size:17px;line-height:1;padding-top:1px;padding-bottom:1px}
.barra-cron .toolbar #tb_fitf{font-size:15px}
.gc-chip.foco-chip .fc-ico{font-size:15px;line-height:1;vertical-align:-2px}
/* 🔗 Corrente Crítica em VERMELHO — fonte SÍMBOLO (monocromática, mesma técnica do cadeado .lk); emoji colorido ignoraria o color */
.toolbar #tb_corrente{font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif;color:#dc2626;font-size:15px;line-height:1}
.toolbar #tb_corrente.on{color:#fff}
/* Zoom compacto (bloco Visualização): cada zoom vira UM pill "− ícone valor +" (era botão−, rótulo, botão+ com o ícone repetido nos dois botões + separadores) */
.toolbar .zstep{display:inline-flex;align-items:center;line-height:1;background:var(--sf);border:1px solid var(--bd);border-radius:7px;overflow:hidden}
.toolbar .zstep .zs-b{border:0;border-radius:0;background:transparent;color:var(--tx2);padding:3px 6px;font-size:13px;font-weight:700;cursor:pointer}
.toolbar .zstep .zs-b:hover{background:var(--s2);color:var(--tx)}
.toolbar .zstep .zs-v{padding:3px 5px;min-width:50px;text-align:center;font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;border-left:1px solid var(--bd);border-right:1px solid var(--bd)}
.toolbar .zstep .zs-v:hover{background:var(--s2)}
.toolbar .zstep .zs-v::before{margin-right:3px;font-weight:400}   /* ícone via ::before — o rótulo é reescrito por textContent (syncZoomLbl/vzApply) e apagaria um filho de verdade */
.toolbar .zstep .z-tempo::before{content:"🔍"}
.toolbar .zstep .z-tela::before{content:"⛶"}
.toolbar .zstep .z-fonte::before{content:"🔍A"}
.barra-cron .toolbar .zstep .zs-b{padding:2px 5px;font-size:12px}
.barra-cron .toolbar .zstep .zs-v{padding:2px 4px;min-width:46px;font-size:11px}
/* Controláres de Visão (Salvar/Carregar) */
.visao-ctrl{display:inline-flex;gap:4px;align-items:center}
.visao-ctrl select{background:var(--sf);border:1px solid var(--bd);color:var(--tx);border-radius:5px;padding:4px 6px;font-size:11.5px;max-width:140px;cursor:pointer}
.visao-ctrl .btn-sm{padding:4px 7px;font-size:11px;background:var(--s2);border:1px solid var(--bd);color:var(--tx);border-radius:5px;cursor:pointer}
.visao-ctrl .btn-sm:hover{border-color:var(--ac)}
.visao-save{display:inline-flex;gap:4px;align-items:center}
.visao-save input{background:#fff;border:1px solid var(--bd);color:var(--tx);border-radius:5px;padding:4px 8px;font-size:11.5px;max-width:150px}
.visao-save .btn-sm{padding:4px 7px;font-size:11px;background:var(--s2);border:1px solid var(--bd);color:var(--tx);border-radius:5px;cursor:pointer}
.visao-save .btn-sm:hover{border-color:var(--ac)}
.toolbar .btn-sm{padding:5px 8px;font-size:11px;background:var(--s2);border:1px solid var(--bd);color:var(--tx);border-radius:5px;cursor:pointer}
.toolbar .btn-sm:hover{border-color:var(--ac)}
.filtros-bar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:6px 12px;
  background:var(--sf);border-bottom:1px solid var(--bd);min-height:38px;flex:none;
  position:sticky;top:0;z-index:20;box-shadow:0 2px 6px rgba(20,30,60,.08)}
.chip{background:#e7eefc;border:1px solid #c4d6fb;border-radius:14px;
  padding:3px 10px;font-size:11px;display:inline-flex;gap:6px;align-items:center}
.chip b{color:var(--ac)}
.chip .x{cursor:pointer;color:var(--tx2)}
.filtros-bar select,.filtros-bar input{background:var(--sf);border:1px solid var(--bd);
  color:var(--tx);border-radius:6px;padding:5px 8px;font-size:12px}

/* SPLIT GRADE + GANTT */
.crono-split{display:flex;flex:1;min-height:0;overflow:hidden}
.grade-wrap{width:52%;min-width:320px;display:flex;flex-direction:column;overflow:hidden}
.gantt-wrap{flex:1;min-width:160px;display:flex;flex-direction:column;overflow:hidden}
.split-bar{flex:none;width:6px;cursor:col-resize;background:var(--bd);
  position:relative;transition:background .12s}
.split-bar::before{content:"";position:absolute;left:1px;top:50%;transform:translateY(-50%);
  width:4px;height:36px;border-radius:3px;background:var(--tx2);opacity:.35}
.split-bar:hover,.split-bar.drag{background:var(--ac)}
.split-bar:hover::before,.split-bar.drag::before{opacity:.8;background:#fff}
.grade-head{display:none;flex:none;height:var(--marcosH,0);background:var(--s2);border-bottom:1px solid var(--bd)}
.gantt-marcos{display:none;height:var(--marcosH,0);flex:none;overflow-x:hidden;overflow-y:auto;background:var(--s2);border-bottom:1px solid var(--bd)}   /* y:auto = banda com teto rola por dentro (marcos demais não engolem a grade) */
.gantt-marcos .mkg{cursor:pointer}
.gantt-marcos .mkg:hover .mk{opacity:.6}
.gantt-marcos .mkg:hover .mk-lbl{fill:var(--ac)}
.gantt-marcos .mk{cursor:pointer}
.gantt-marcos .mk:hover{opacity:.65}
.gantt-marcos .mk-lbl{font-size:10.5px;font-weight:600;fill:#334155}
.gantt-marcos .mk-ic{font-size:12px;font-family:"Segoe UI Emoji","Segoe UI Symbol",sans-serif;cursor:pointer}
.mkt{font-size:11px;padding:2px 8px;border:1px solid var(--bd);border-radius:11px;background:#fff;color:var(--tx2);opacity:.5}
.mkt.on{opacity:1;border-color:currentColor;color:var(--mkc)}
.gantt-head{height:var(--gheadH,32px);background:var(--s2);border-bottom:1px solid var(--bd);
  flex:none;overflow:hidden}   /* --gheadH cresce com a faixa 📆 Semanas — o `.gtable th` lê a MESMA variável (senão a grade desalinha das barras) */
/* RAIAS (R2) — swimlanes por dimensão */
.raias-wrap{overflow:auto;padding:8px;height:calc(100% - 40px)}
.raias-swim{margin-bottom:10px;border:1px solid var(--bd);border-radius:8px;overflow:hidden;background:#fff}
.raias-sh{position:sticky;top:0;z-index:2;background:var(--s2);padding:6px 10px;font-weight:600;font-size:13px;border-bottom:1px solid var(--bd)}
.raias-ct{display:inline-block;margin-left:6px;background:var(--bd);color:var(--tx2);border-radius:10px;padding:0 7px;font-size:11px;font-weight:600}
.raias-row{display:flex;align-items:center;gap:8px;padding:5px 10px;border-bottom:1px solid #edf0f6;cursor:pointer;font-size:12px}
.raias-row:last-child{border-bottom:none}
.raias-row:hover{background:#f5f8ff}
.raias-dot{width:9px;height:9px;border-radius:50%;flex:none}
.raias-nm{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.raias-dt{color:var(--tx2);white-space:nowrap}
.raias-dim{font-size:12px;padding:3px 10px;border:1px solid var(--bd);border-radius:13px;background:#fff;color:var(--tx2);cursor:pointer}
.raias-dim.on{background:var(--ac);color:#fff;border-color:var(--ac)}
/* KANBAN (R3) — colunas por status, DnD muta status */
.kb-wrap{flex:1;display:flex;gap:10px;padding:10px;overflow-x:auto;overflow-y:hidden;min-height:0}
.kb-col{flex:1;min-width:160px;position:relative;display:flex;flex-direction:column;min-height:0;max-height:100%;background:var(--s2);border:1px solid var(--bd);border-radius:8px}
.kb-h{padding:7px 10px;font-weight:600;font-size:13px;background:#fff;border-bottom:3px solid var(--bd);border-radius:8px 8px 0 0;display:flex;justify-content:space-between;align-items:center;gap:6px}
.kb-htitle{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-hide{border:0;background:none;cursor:pointer;color:var(--tx2);font-size:12px;padding:0 3px;border-radius:4px;flex:none;line-height:1}
.kb-hide:hover{background:var(--s2);color:var(--er)}
.kb-rs{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;z-index:3}
.kb-rs:hover{background:linear-gradient(90deg,transparent,rgba(64,110,255,.25))}
.kb-colmin{flex:0 0 36px;display:flex;align-items:flex-start;justify-content:center;background:var(--s2);border:1px solid var(--bd);border-radius:8px;cursor:pointer;padding-top:10px}
.kb-colmin:hover{border-color:var(--ac);background:#eef3fd}
.kb-hmin{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:700;font-size:12px;white-space:nowrap}
.kb-ct{display:inline-block;margin-left:6px;background:var(--bd);color:var(--tx2);border-radius:10px;padding:0 7px;font-size:11px}
.kb-list{flex:1;min-height:0;overflow:auto;padding:8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--kbcw,235px),1fr));gap:7px;align-content:start}
.kb-list.over{background:#eef3fd}
.kb-card{background:#fff;border:1px solid var(--bd);border-radius:7px;padding:5px 8px;cursor:grab;font-size:12px;box-shadow:0 1px 2px rgba(20,30,60,.05)}
.kb-card.drag{opacity:.45}
.kb-card:hover{border-color:var(--ac)}
.kb-top{display:flex;align-items:center;gap:6px}
.kb-dot{width:8px;height:8px;border-radius:50%;flex:none}
.kb-path{font-size:12px;color:#4a4a4a;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}
.kb-id{font-size:10.5px;color:var(--ac);font-weight:700;flex:none;background:var(--s2);border-radius:4px;padding:0 5px;white-space:nowrap}
.kb-main{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-entreg{font-weight:700;color:var(--tx)}
.kb-sep{display:inline-block;width:1px;height:18px;background:var(--bd);margin:0 2px;flex:none}
.kb-nm{font-weight:600;color:var(--tx);font-size:12.5px;line-height:1.25}
.kb-resp{margin-left:auto;font-size:10px;color:var(--tx2);white-space:nowrap;padding-left:6px;flex:none}
.kb-datas{display:flex;flex-direction:column;gap:1px;margin-top:5px;font-size:10.5px;color:var(--tx2)}
.kb-datas i{display:inline-block;width:30px;font-style:normal;font-weight:700}
.kb-dt{color:var(--tx2);margin-top:3px;font-size:11px}
.kb-bar{display:flex;flex-direction:column;gap:7px;padding:7px 10px;border-bottom:1px solid var(--bd);background:var(--sf)}
.kb-bar .filtros-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;overflow:visible}
.kb-row1{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.kb-ctls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.kb-sort{font-size:12px;color:var(--tx2);display:flex;align-items:center;gap:4px;white-space:nowrap}
.kb-sort select{font-size:12px;padding:3px 6px;border:1px solid var(--bd);border-radius:6px;background:#fff;color:var(--tx)}
.kb-head2{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.kb-head2 .kb-path{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-bloq{font-size:9px;font-weight:700;padding:1px 6px;border-radius:10px;white-space:nowrap;flex:none}
.kb-bloq.lib{background:#e6f7ec;color:#1f7a44}
.kb-bloq.bl{background:#fdeaea;color:#c0392b}
.kb-bloq.ok{background:#eef3ff;color:#3457b2}
.kb-ic{border:0;background:none;cursor:pointer;font-size:13px;padding:0 2px;line-height:1;flex:none}
.kb-ic:hover{filter:brightness(.8)}
.kb-pcts{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;margin:0 0 6px}
.kb-pct{font-size:10px;padding:3px 0;border:1px solid var(--bd);border-radius:5px;background:var(--sf);cursor:pointer;font-weight:600;color:var(--tx)}
.kb-pct:hover{border-color:var(--ac)}
.kb-pct.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.kb-real{display:flex;align-items:center;gap:4px;margin-top:4px;font-size:10.5px;color:var(--tx2);flex-wrap:wrap}
.kb-real i{font-style:normal;font-weight:700}
.kb-real .datebr{padding:0 2px}
.kb-real .datebr-txt{width:48px;font-size:10.5px}
.kb-rsep{color:var(--tx2)}
.kb-grp{grid-column:1/-1;font-size:11px;font-weight:700;color:var(--tx);background:var(--s2);border-radius:5px;padding:3px 8px;margin:6px 0 4px;display:flex;justify-content:space-between;align-items:center;gap:6px;cursor:pointer;user-select:none}
.kb-grp:hover{filter:brightness(.96)}
.kb-grp-l{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-grp-cv{font-size:9px;color:var(--tx2);width:9px;flex:none}
.kb-grp-0{border-left:3px solid var(--ac)}
.kb-grp-1{margin-left:10px;font-size:10.5px;background:var(--sf);border-left:3px solid #9aa6bd}
.kb-grp-2{margin-left:20px;font-size:10px;background:transparent;border-left:2px solid var(--bd)}
.kb-grp-ct{font-weight:600;color:var(--tx2);font-size:10px}
.kb-h1{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.kb-h1 .kb-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}
.kb-h1r{display:flex;align-items:center;gap:4px;flex:none}
.kb-h2{display:flex;align-items:baseline;gap:5px;margin-bottom:3px;flex-wrap:wrap;line-height:1.2}
.kb-h2 .kb-nm{color:var(--tx)}
.kb-h2 .kb-resp{font-weight:400;color:var(--tx2);font-size:11px}
.kb-blk{font-size:10px;font-weight:700;background:#fdeaea;color:#c0392b;border-radius:10px;padding:1px 6px;white-space:nowrap}
.kb-pctrow{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.kb-pl{font-size:11px;color:var(--tx2);white-space:nowrap}
.kb-pctrow .kb-pcts{flex:1;display:grid;grid-template-columns:repeat(5,1fr);gap:3px;margin:0}
.kb-dates{display:grid;grid-template-columns:26px minmax(0,.8fr) minmax(0,.8fr) minmax(0,.55fr) minmax(0,1.5fr);gap:2px 4px;font-size:10.5px;align-items:center;color:var(--tx);margin-top:0;background:var(--sf);border:1px solid var(--bd);border-radius:6px;padding:4px 6px;overflow:hidden}
.kb-dates .kb-dh{font-size:9px;font-weight:700;color:var(--tx2);text-align:center}
.kb-dates .kb-drl{font-weight:600;color:var(--tx2)}
.kb-dates>span:not(.kb-dh):not(.kb-drl):not(.kb-rcell){text-align:center}
.kb-rcell .datebr{padding:0;border-color:var(--bd);background:#fffdf5;width:100%;justify-content:flex-start;gap:0}
.kb-rcell .datebr-txt{flex:1;min-width:0;width:auto;font-size:10px;padding:1px 1px}
.kb-rcell .datebr-cal{font-size:11px;padding:0 1px;flex:none}
.kb-dates .kb-late{color:#d23b4e;font-weight:700}
.kb-rcell.kb-late .datebr-txt{color:#d23b4e;font-weight:700}
.kb-var{font-weight:700;font-size:10px;text-align:center;white-space:nowrap}
.kb-var.pos{color:#d23b4e}
.kb-var.neg{color:#1f9d57}
.kb-var.zero{color:var(--tx2);font-weight:600}
.kb-realmin{display:flex;align-items:center;gap:6px;margin-top:2px;font-size:10.5px;background:var(--sf);border:1px solid var(--bd);border-radius:6px;padding:4px 7px}
.kb-realmin .kb-rml{font-weight:700;color:var(--tx2);flex:none}
.kb-realmin .kb-rcell{flex:1;min-width:0}
.kb-realmin .datebr{width:100%;justify-content:flex-start;border-color:var(--bd);background:#fffdf5;padding:0;gap:0}
.kb-realmin .datebr-txt{flex:1;min-width:0;width:auto;font-size:10px;padding:1px 1px}
.kb-realmin .datebr-cal{font-size:11px;padding:0 1px;flex:none}
.kb-realmin .kb-rcell.kb-late .datebr-txt{color:#d23b4e;font-weight:700}
.ed-dgrid{display:grid;grid-template-columns:54px 68px 114px 48px 96px 30px;gap:4px 8px;align-items:center;background:var(--sf);border:1px solid var(--bd);border-radius:8px;padding:6px 10px;font-size:12px;width:max-content;max-width:100%}   /* col. Programado 96→114px: cabe o rótulo + o 📌 Cravar data na MESMA linha (senão o botão quebra p/ baixo e engorda o cabeçalho) */
.ed-confp{border:1px solid #b6e3c7;background:#e7f6ec;color:#1f7a44;border-radius:6px;padding:1px 5px;font-size:12px;font-weight:800;cursor:pointer;line-height:1.4}
.ed-confp:hover{background:#1f9d57;color:#fff;border-color:#1f9d57}
.ed-confp2{padding:1px 4px;font-size:11px}
.ed-dgrid .kb-dh{font-size:10px;font-weight:700;color:var(--tx2);text-align:center}
.ed-dgrid .kb-drl{font-weight:600;color:var(--tx2)}
.ed-dgrid>span:not(.kb-dh):not(.kb-drl){text-align:center}
.ed-dgrid .kb-late{color:#d23b4e;font-weight:700}
.ed-dgrid .kb-var{font-size:11px}
.ed-dgrid .datebr{width:100%;justify-content:flex-start;gap:0}
.ed-dgrid .datebr-txt{flex:1;min-width:0;width:auto;font-size:11px;padding:3px 2px}
.ed-datahint{margin-top:6px;font-size:11.5px;line-height:1.35;padding:5px 8px;border-radius:6px;background:#fff7e6;border:1px solid #ffe0a3;color:#8a5a00}
.ed-datahint.blk{background:#fdeef0;border-color:#f3c2c8;color:#9c2530}
.ed-datahint.ok{background:#edf9f0;border-color:#bfe6c8;color:#1f7a43}
.ed-dgrid .datebr.sim{background:#fff7e6;border-color:#f0c36d}   /* término simulado ao vivo enquanto digita a duração (commit ao sair do campo) */
.ed-lock{font-size:11px;padding:1px 8px;border-radius:11px;border:1px solid var(--bd);cursor:pointer;font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif;vertical-align:middle;margin-left:6px}
.ed-lock:not(.on){background:#edf9f0;border-color:#bfe6c8;color:#1f7a43}
.ed-lock.on{background:#fff3e0;border-color:#f0c36d;color:#8a5a00}
.ed-lock:hover{border-color:var(--ac)}
/* 📌 Cravar data — pino das datas PROGRAMADAS (no cabeçalho da coluna Programado, ao lado do ✓ do Real) */
.ed-crav{font-size:13px;line-height:1;padding:2px 6px;margin-left:6px;border-radius:9px;border:1px solid var(--bd);background:var(--sf);cursor:pointer;vertical-align:middle;font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif;filter:grayscale(1);opacity:.8}
/* 📌 CRAVADO — pino VERMELHO e maior (a fonte símbolo acima é o que faz o `color` valer no emoji) */
.ed-crav.on{background:#fdeaea;border-color:#e8a0a0;color:#dc2626;font-size:15px;font-weight:700;filter:none;opacity:1}
.ed-crav:hover{border-color:var(--ac);opacity:1}
.crav-pin{font-size:10px;margin-right:3px;vertical-align:middle}
/* 📌 clicável NA GRADE (18/08/2026): soltar o pino sem abrir a lupa. Alvo pequeno → padding p/ o clique pegar. */
.crav-pin[data-pin]{cursor:pointer;padding:0 2px;border-radius:4px}
.crav-pin[data-pin]:hover{background:#fdecd8;outline:1px solid #f4c98a}
/* Linha SEM pino: o marcador so aparece com o mouse NA LINHA — num cronograma de centenas de linhas, um pino
   apagado em cada uma vira ruido. O pino CHEIO (linha cravada) segue sempre visivel. */
.crav-pin.crav-off,.crav-pin.crav-nenhuma{color:#e2e8f0;filter:grayscale(1);opacity:0;transition:opacity .12s}
tr:hover .crav-pin.crav-off,tr:hover .crav-pin.crav-nenhuma{opacity:1}
.crav-pin.crav-off:hover,.crav-pin.crav-nenhuma:hover{color:#b45309;filter:none;opacity:1}
/* 📌 do SUMÁRIO = gesto em cascata; o ícone reflete as FOLHAS do ramo (todas · parte · nenhuma) */
.crav-pin.crav-parte{filter:grayscale(.55);opacity:.8}
.crav-pin.crav-parte::after{content:'◐';font-size:8px;color:#b45309;vertical-align:super;margin-left:1px}
.crav-pin.crav-sub:hover{filter:none;opacity:1}
.crav-pin.crav-conf{color:#b45309;font-weight:700}
.ed-bloq{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.ed-bloq-i{font-size:12px;background:#fdeef0;border:1px solid #f3c6cd;color:#b3243a;border-radius:10px;padding:2px 9px}
.ed-bloq-i.r{background:#fff6e6;border-color:#f3dca6;color:#9a6b00}
.ed-pcts{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:4px}
.ed-pcts .kb-pct{font-size:11px;padding:3px 0}
.kb-chk{display:flex;align-items:center;gap:4px}
.kb-viscips{display:inline-flex;gap:3px}
.kb-viscip{font-size:11px;line-height:1.4;border:1px solid var(--bd);background:var(--sf);border-radius:6px;padding:3px 8px;cursor:pointer;color:var(--tx2);white-space:nowrap}
.kb-viscip:hover{border-color:var(--ac)}
.kb-viscip.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.kb-simp{padding:6px 8px}
.kb-sl1{display:flex;align-items:center;gap:5px;min-width:0}
.kb-snm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--tx);font-size:12.5px;line-height:1.25}
.kb-sl2{display:flex;align-items:center;gap:6px;margin-top:5px}
.kb-sl2 .kb-prog{height:6px}
.kb-sl2 .kb-chipr{padding:1px 6px;flex:none}
.kb-sdt{font-size:10.5px;color:var(--tx2);white-space:nowrap;flex:none}
.kb-sdt.kb-late{color:#d23b4e;font-weight:700}
.kb-simp .kb-bloq{font-size:10px;padding:1px 5px}
.kb-compact .kb-card{padding:5px 7px}
.kb-compact .kb-dates,.kb-compact .kb-pcts{display:none}
.kb-compact .kb-h1,.kb-compact .kb-h2{margin-bottom:2px}
.kb-compact .kb-pctrow{margin-bottom:0}
.kb-card.kb-st-late{background:#fdf3f4;border-left:4px solid #d23b4e}
.kb-card.kb-st-risk{background:#fdf8ee;border-left:4px solid #c77700}
.kb-card.kb-st-ok{background:#f1faf4;border-left:4px solid #1f9d57}
.kb-card.kb-st-done{background:#eef6f0;border-left:4px solid #1f9d57}
.kb-card.kb-st-future{background:#fff;border-left:4px solid #9aa6bd}
.kb-progline{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.kb-chipp,.kb-chipr{font-size:10px;padding:2px 7px;border-radius:10px;background:var(--s2);color:var(--tx2);white-space:nowrap}
.kb-chipr{background:#eef3ff;color:var(--ac)}
.kb-pctman{width:46px;font-size:10px;padding:3px 4px;border:1px solid var(--bd);border-radius:5px;text-align:center;color:var(--tx);flex:none}
.kb-recsep{color:var(--tx2)}
.kb-rec{font-weight:400;color:var(--tx2);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-prog{position:relative;height:5px;background:var(--s2);border-radius:3px;flex:1;margin:0}
.kb-prog-f{position:absolute;left:0;top:0;bottom:0;border-radius:3px;min-width:2px}
.kb-prog-pl{position:absolute;top:-2px;bottom:-2px;width:2px;background:#4d7cfe;border-radius:1px}
.kb-compact .kb-prog{height:7px;margin-bottom:0}
.kb-compact .kb-progline{margin-bottom:3px}
.kb-estchips{display:inline-flex;gap:3px;flex-wrap:wrap;align-items:center}
.kb-estchip{font-size:11px;border:1px solid var(--bd);background:var(--sf);border-radius:12px;padding:3px 9px;cursor:pointer;color:var(--tx2);white-space:nowrap}
.kb-estchip:hover{border-color:var(--ac)}
.kb-estchip.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.kb-zoom{display:inline-flex;gap:3px;margin-left:6px}
.kb-zoom button{border:1px solid var(--bd);background:var(--sf);border-radius:6px;padding:3px 7px;cursor:pointer;font-size:11px}
.kb-zoom button:hover{border-color:var(--ac)}
.grade-body,.gantt-body{flex:1;overflow:auto}
/* help rápido de navegação no rodapé da grade (pedido 31/07/2026) — 1 linha discreta; clique abre o modal ⌨ (F2) */
.grade-navhelp{flex:none;font-size:10.5px;color:var(--tx2);background:var(--s2);border-top:1px solid var(--bd);padding:3px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;-webkit-user-select:none;user-select:none}
.grade-navhelp:hover{color:var(--tx)}
.grade-navhelp kbd{background:var(--sf,#fff);border:1px solid var(--bd);border-radius:4px;padding:0 4px;font:600 10px/1.5 ui-monospace,Consolas,monospace}
.grade-navhelp .gnh-dim{opacity:.65}
.grade-navhelp .gnh-f2{color:#d23b4e;font-weight:700;animation:gnhPulse 7s ease-in-out infinite}
.grade-navhelp .gnh-f2.gnh-off{animation:none}   /* clicou → para de piscar (persistido em crono_navhelp_f2) */
.grade-navhelp .gnh-f2 kbd{color:#d23b4e;border-color:#d23b4e}
@keyframes gnhPulse{0%,100%{opacity:1}50%{opacity:.25}}
.gantt-body{overflow:auto;position:relative}

/* GRADE (tabela WBS) */
.gtable{min-width:100%;border-collapse:separate;border-spacing:0;font-size:12px;table-layout:auto;white-space:nowrap}   /* separate+spacing:0 = thead sticky confiável, sem gap/overlap */
.gtable td.col-nome,.gtable th.col-nome{max-width:340px}
/* Término real: verde se no prazo/adiantado, vermelho se atrasado */
.gtable .fim-ok{color:#15803d;font-weight:600}
.gtable .fim-late{color:#d23b4e;font-weight:600}
.pisca{display:inline-block;width:8px;height:8px;border-radius:50%;background:#15803d;margin-right:5px;vertical-align:middle;animation:pisca 1s ease-in-out infinite}
@keyframes pisca{0%,100%{opacity:1}50%{opacity:.12}}
.niv-dot{height:22px;border-radius:11px;border:1px solid var(--bd);background:#fff;color:var(--tx2);font-size:11px;cursor:pointer;padding:0 9px;line-height:20px;text-align:center;margin-right:3px}
.niv-dot:hover{border-color:var(--ac);color:var(--ac)}
.niv-dot.on{background:var(--ac);color:#fff;border-color:var(--ac);font-weight:700}
.niv-dot.niv-cursor{background:#1d4ed8;color:#fff;border-color:#1d4ed8;font-weight:700;box-shadow:0 0 0 2px rgba(29,78,216,.3)}
/* Filtro por NÍVEL (flag ▤): as bolinhas viram multi-seleção — marcada = nível VISÍVEL (teal, cor dos chips de
   filtro), desmarcada = linhas ocultas (tracejada/apagada). Cor diferente do azul da expansão de propósito. */
.niv-dot.niv-flag{padding:0 6px;font-size:12px;color:#0f766e;border-color:rgba(13,148,136,.45);margin-right:5px}
/* Acionado = ÂMBAR (cor de "modo/filtro ativo" da casa, a mesma do chip fchip-extra) — destaca o flag das
   próprias bolinhas, que ficam teal quando marcadas: o botão do modo nunca se confunde com os níveis. */
.niv-dot.niv-flag.on{background:#d97706;border-color:#b45309;color:#fff;font-weight:700;box-shadow:0 0 0 2px rgba(217,119,6,.25)}
.niv-dot.niv-flag.on:hover{background:#b45309;border-color:#b45309;color:#fff}
.niv-dot.niv-mult{border-style:dashed;opacity:.6}
.niv-dot.niv-mult.on{background:rgba(13,148,136,.12);border-style:solid;border-color:#0d9488;color:#0f766e;font-weight:700;opacity:1}
.niv-dot.niv-mult:hover{border-color:#0d9488;color:#0f766e;opacity:1}
/* Caixa Estrutura (WBS) — recuar/promover/mover/dividir, à direita do Niv.WBS */
.gc-wbsbox{display:inline-flex;align-items:center;gap:3px;border:1px solid #cbe3cf;background:#f3fbf5;border-radius:9px;padding:2px 7px}
.gc-wbsbox .gc-lbl{color:#1f9d57;font-weight:600;font-size:11px;margin-right:2px}
.gc-wbsbox .gc-bd{width:1px;height:16px;background:#cbe3cf;margin:0 2px}
.wbs-cmd{font-size:13px;padding:0 7px;color:#1f9d57;border-color:#cbe3cf}
.wbs-cmd:hover{background:#1f9d57;color:#fff;border-color:#1f9d57}
/* Escopo do vínculo: T = somente Tarefas (folhas) · P = somente Pais (sumários); sem índice = pais e tarefas */
.wbs-cmd .lk-sc{font-size:8px;font-weight:800;margin-left:1px;vertical-align:super;line-height:0}
/* ⚡ Upd (tb_sel_atu) — raio VERMELHO: emoji colorido ignora `color`, então força a fonte SÍMBOLO monocromática (mesma técnica do #tb_corrente e do cadeado .lk). No estado ligado (.on, fundo escuro) o raio acompanha o texto. */
#tb_sel_atu .atu-raio{font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif;color:#d23b4e;font-weight:700}
#tb_sel_atu.on .atu-raio{color:inherit}
/* Quebrar vínculo = CAIXA PRÓPRIA vermelha, 100% separada da 🧱 (o gesto errado custa caro: vincular e desvincular
   na mesma caixa faziam errar o botão) */
.gc-unbox{display:inline-flex;align-items:center;gap:3px;border:1px solid #f0c2c9;background:#fef4f5;border-radius:9px;padding:2px 7px}
.gc-unbox .gc-unlbl{color:#d23b4e;font-weight:600;font-size:11px;margin-right:2px}
.wbs-cmd.wbs-unlink{color:#d23b4e;border-color:#f0c2c9}
.wbs-cmd.wbs-unlink:hover{background:#d23b4e;color:#fff;border-color:#d23b4e}
/* Dica ▢ "clique 2×" — nasce ao lado da caixa (onde o mouse está) e some sozinha. Fica no <html> (o body tem zoom do escalaUI) */
.mk-dica{position:fixed;z-index:9999;pointer-events:none;background:#1f2937;color:#fff;font-size:12px;font-weight:600;padding:6px 10px;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.28);white-space:nowrap;opacity:0;transform:translateX(-6px);transition:opacity .18s ease,transform .18s ease}
.mk-dica.on{opacity:1;transform:translateX(0)}
/* Aviso "▢ nada marcado" das ações do 🗓 Programação — AO LADO da coluna ▢ (o toast do rodapé passava despercebido).
   pointer-events:none p/ não bloquear justamente a caixa que o usuário precisa clicar */
.mk-aviso{position:fixed;z-index:9999;pointer-events:none;max-width:300px;background:#7f1d1d;color:#fff;font-size:12px;line-height:1.45;padding:9px 12px;border-radius:9px;box-shadow:0 8px 22px rgba(0,0,0,.32);opacity:0;transform:translateX(-8px);transition:opacity .18s ease,transform .18s ease}
.mk-aviso.on{opacity:1;transform:translateX(0)}
.mk-aviso b{display:block;font-size:13px;margin-bottom:3px}
.mk-aviso::before{content:'';position:absolute;left:-5px;top:15px;width:11px;height:11px;background:#7f1d1d;transform:rotate(45deg)}
.col-mk.mk-pisca{animation:mkPisca 1.1s ease 3}
@keyframes mkPisca{0%,100%{background:transparent}50%{background:#fecdd3}}
/* Bolinha única de progresso — preenche conforme o % (conic), anel = atraso vs plano */
.pqone{width:17px;height:17px;border-radius:50%;padding:0;cursor:pointer;margin-right:6px;vertical-align:middle;
  border:2px solid var(--ring,#cbd5e6);
  background:conic-gradient(var(--fc,#1f9d57) calc(var(--p,0)*1%), #e6ebf3 0);transition:transform .1s}
.pqone:hover{transform:scale(1.18)}
/* Coluna de seleção em lote */
.col-mk{text-align:center;width:60px;min-width:60px;white-space:nowrap;padding-left:2px;padding-right:2px}
.col-mk input{cursor:pointer;margin:0;vertical-align:middle}
.col-mk .lk{vertical-align:middle;margin-right:1px}
.col-mk .rowq{gap:0;margin-left:2px;vertical-align:middle}
.col-mk .rowq button{font-size:11px;padding:0 1px;line-height:1}
.col-mk .rowq .qa-sub{font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif;font-size:13px;font-weight:700}
.col-mk .mk-acoes{font-family:"Segoe UI Emoji","Segoe UI Symbol","Apple Color Emoji",sans-serif;font-size:13px;line-height:1;padding:0 1px;margin-left:3px;border:none;background:transparent;cursor:pointer;vertical-align:middle}
.col-mk .mk-acoes:hover{filter:brightness(1.12)}
.gtable.no-rowq .rowq [data-act="addsib"],.gtable.no-rowq .rowq [data-act="addsub"]{display:none}
.predlink{cursor:help;border-bottom:1px dotted #9aa6bd}
/* Biblioteca de versões */
.vz-card{border:1px solid var(--bd);border-radius:10px;padding:10px 12px;margin:8px 0;background:var(--sf)}
.vz-ctop{font-size:13px;margin-bottom:4px}
.vz-notas{font-size:12.5px;line-height:1.5}
.vz-as{margin:8px 0 2px;font-size:12px;color:var(--ac)}
.vz-it{margin:1px 0 1px 6px;color:var(--tx)}
.gtable .lupa{background:none;border:none;cursor:pointer;font-size:12px;padding:0 1px;vertical-align:middle}
.gtable .lupa:hover{filter:brightness(1.15)}
/* lupa-ok: fonte SÍMBOLO (monocromática, mesma técnica do cadeado .lk) p/ a cor azul escuro valer — sinaliza "já atualizei nesta sessão" */
.gtable .lupa.lupa-ok{font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif;color:#1e3a8a}
.gtable tr.mkd td{background:#e9ebef}
/* Congelar seleção + ID + Nome ao rolar horizontal */
.gtable .col-mk{position:sticky;left:0;z-index:2;background:#fff}
.gtable .col-id{position:sticky;left:60px;z-index:2;width:60px;min-width:60px;text-align:right;color:var(--tx2);background:#fff;white-space:nowrap}
.col-id .cid-n{font-variant-numeric:tabular-nums}
.col-id .cid-del{background:transparent;border:none;color:var(--tx2);font-size:12px;line-height:1;padding:0 1px 0 4px;cursor:pointer;vertical-align:middle}
.col-id .cid-del:hover{color:#d23b4e}
.gtable .col-nome{position:sticky;left:60px;z-index:2;background:#fff}
.gtable.has-id .col-nome{left:120px}
.gtable thead .col-mk,.gtable thead .col-id,.gtable thead .col-nome{z-index:4;background:var(--s2)}
.gtable thead th.col-nome{vertical-align:bottom}
.col-ver{display:block;font-size:10px;font-weight:700;color:var(--ac);line-height:1.15;margin-bottom:1px;letter-spacing:.02em}
.col-ver .col-ver-sd{color:#d23b4e;font-size:13px;font-weight:800;letter-spacing:0}   /* Status Date no cabeçalho — vermelho de status, MAIOR que o resto da linha (24/08/2026: é a data que o GP confere o tempo todo) */
/* Curva S — seletor de modo (segmented control: pílula única, ativo em azul) */
.sp-modes{float:right;display:inline-flex;font-weight:400;font-size:12px}
.sp-mode{border:1px solid var(--bd);background:#fff;color:var(--tx2);font:inherit;font-size:11.5px;font-weight:600;padding:4px 11px;cursor:pointer;margin-left:-1px;position:relative}
.sp-mode:first-child{border-radius:7px 0 0 7px;margin-left:0}
.sp-mode:last-child{border-radius:0 7px 7px 0}
.sp-mode:hover{border-color:var(--ac);color:var(--ac);z-index:1}
.sp-mode.on{background:var(--ac);border-color:var(--ac);color:#fff;z-index:1}
.sp-mode.sp-cam.on{background:#fff;border-color:var(--mkc);color:var(--mkc);box-shadow:inset 0 0 0 1px var(--mkc)}   /* camadas ◆ dos Marcos: ligado = cor só no texto/borda (peso IGUAL ao resto da legenda — sem fill sólido "grosso") */
.sp-topbar{display:flex;justify-content:flex-start;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 0;position:sticky;top:0;z-index:21;background:var(--bg)}   /* wrap: com ⛶/◫/🎬 a linha única estourava e o overflow:hidden da view cortava os botões */
.sp-topbar>.filtros-bar{position:static;background:none;border:0;box-shadow:none;padding:0;min-height:0;flex:1 1 auto;min-width:0;flex-wrap:wrap;overflow:visible}
.sp-topbar>.sp-visao,.sp-topbar>.sp-zoom{flex:0 0 auto}
/* Status: filtros TRAVADOS no cabeçalho — a view não rola; o scroll é do #sp-body (scroller interno, não depende de sticky) */
#view-status-projeto.active{overflow:hidden}
#view-status-projeto #sp-body{flex:1 1 auto;min-height:0;overflow:auto}
#view-status-projeto .card{max-width:none}   /* Status ocupa toda a largura (cards sem o teto global de 1000px) */
#view-tabelas .card,#view-tabelas-lado .card{max-width:none}   /* Tabelas (e lado a lado) ocupam toda a largura da tela, independente do tamanho */
#view-ridacrel .card{max-width:none}   /* Relatórios RIDAC ocupam toda a largura da tela */
#view-pbs .card,#view-pbs-carga .card,#view-wbs .card,#view-wbs-biblioteca .card{max-width:none}   /* PBS e WBS: as 4 telas ocupam toda a largura */
#view-projetos .card{max-width:none}   /* Projetos: lista com muitas colunas (atributos) ocupa a tela toda */
/* Premissas (réplica Assumptions padrão) */
:is(#view-premissas,#view-premissas-template) .pm-grp td{background:var(--s2);font-weight:600;border-top:2px solid var(--ac)}
:is(#view-premissas,#view-premissas-template) .pm-id{font-family:ui-monospace,monospace;color:var(--ac);white-space:nowrap;font-weight:600}
:is(#view-premissas,#view-premissas-template) .pm-doubt{font-size:11px;color:var(--wa);margin-top:3px}
:is(#view-premissas,#view-premissas-template) .pm-imp{padding:1px 8px;border-radius:10px;color:#fff;font-size:11px;font-weight:600}
/* Premissas — gestão inteligente (ciclo de vida, farol, vínculos) */
:is(#view-premissas,#view-premissas-template) .pm-far{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle}
:is(#view-premissas,#view-premissas-template) .pm-tab td{vertical-align:top}
:is(#view-premissas,#view-premissas-template) .pm-row.pm-foco>td{background:#fff7d6;transition:background .4s}
:is(#view-premissas,#view-premissas-template) .pm-kpis{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:6px 0 2px}
:is(#view-premissas,#view-premissas-template) .pm-kpi{font-size:12px;color:var(--tx2)}
:is(#view-premissas,#view-premissas-template) .pm-fchip{border:1px solid var(--bd);background:#fff;border-radius:14px;padding:2px 10px;font-size:11.5px;font-weight:600;cursor:pointer;color:var(--c,#64748b)}
:is(#view-premissas,#view-premissas-template) .pm-fchip.on{background:var(--c);color:#fff;border-color:var(--c)}
:is(#view-premissas,#view-premissas-template) .pm-toggle{font-size:11.5px;padding:3px 7px;white-space:nowrap}
:is(#view-premissas,#view-premissas-template) .pm-toggle.on{background:var(--ac);color:#fff;border-color:var(--ac)}
:is(#view-premissas,#view-premissas-template) .pm-det>td{background:var(--s2);border-top:0}
:is(#view-premissas,#view-premissas-template) .pm-det-grid{display:flex;gap:18px;flex-wrap:wrap;padding:8px 4px}
:is(#view-premissas,#view-premissas-template) .pm-det-blk{flex:1;min-width:240px}
:is(#view-premissas,#view-premissas-template) .pm-det-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--tx2);margin-bottom:5px}
:is(#view-premissas,#view-premissas-template) .pm-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
:is(#view-premissas,#view-premissas-template) .pm-chip{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--bd);border-radius:13px;padding:2px 8px;font-size:11.5px}
:is(#view-premissas,#view-premissas-template) .pm-chip-niv{font-size:9px;font-weight:700;text-transform:uppercase;color:var(--tx2);background:var(--s2);border-radius:6px;padding:0 5px}
:is(#view-premissas,#view-premissas-template) .pm-chip-rid{border-color:var(--c);color:var(--c);font-weight:600}
:is(#view-premissas,#view-premissas-template) .pm-rid-let{cursor:pointer}
:is(#view-premissas,#view-premissas-template) .pm-chip-x{cursor:pointer;color:var(--er);font-weight:700;opacity:.7}
:is(#view-premissas,#view-premissas-template) .pm-chip-x:hover{opacity:1}
:is(#view-premissas,#view-premissas-template) .pm-criar-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
:is(#view-premissas,#view-premissas-template) .pm-criar{width:24px;height:24px;padding:0;font-weight:700;color:var(--c);border-color:var(--c)}
:is(#view-premissas,#view-premissas-template) .pm-criar:hover{background:var(--c);color:#fff}
:is(#view-premissas,#view-premissas-template) .pm-hint{font-size:12px;color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:7px;padding:5px 8px;margin-bottom:6px}
.pm-cpick{position:absolute;z-index:700;width:430px;max-width:92vw;max-height:340px;overflow:auto;background:var(--bg);border:1px solid var(--bd);border-radius:10px;box-shadow:0 12px 36px rgba(20,30,60,.24)}
.pm-cpick-s{position:sticky;top:0;width:100%;box-sizing:border-box;border:0;border-bottom:1px solid var(--bd);padding:8px 10px;font:inherit;background:var(--sf)}
.pm-cpick-opt{padding:6px 10px;cursor:pointer;border-bottom:1px solid var(--s2);font-size:12.5px}
.pm-cpick-opt:hover{background:var(--s2)}
.prem-lupa{border:1px solid var(--bd);background:#fff;border-radius:6px;cursor:pointer;padding:1px 6px}
.rid-prem-lk{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.rid-unprem{cursor:pointer;color:var(--er);font-weight:700;opacity:.7}
.rid-unprem:hover{opacity:1}
/* RACI — modelo (padrão) */
#view-raci-modelo .rc-tab{border-collapse:collapse;font-size:12px}
#view-raci-modelo .rc-tab th,#view-raci-modelo .rc-tab td{border:1px solid var(--bd);padding:4px 6px;vertical-align:top}
#view-raci-modelo .rc-ph{background:var(--ac);color:#fff;text-align:center;min-width:160px;position:sticky;top:0;z-index:3}
#view-raci-modelo .rc-cor{background:var(--s2);position:sticky;left:0;top:0;z-index:4;min-width:150px;text-align:left}
#view-raci-modelo .rc-sub{position:sticky;left:0;background:var(--sf);font-weight:600;z-index:1;min-width:150px}
#view-raci-modelo .rc-grp td{background:var(--s2);font-weight:700;color:var(--ac);border-top:2px solid var(--ac);position:sticky;left:0}
#view-raci-modelo .rc-off{background:#fafbfd}
#view-raci-modelo .rc-d{font-size:11px;color:var(--tx);margin-bottom:3px;line-height:1.25}
#view-raci-modelo .rc-line{display:flex;align-items:center;gap:5px;margin-top:2px}
#view-raci-modelo .rc-who{font-size:10px;color:var(--tx2);width:26px;font-weight:600}
#view-raci-modelo .rc-pick{display:inline-flex;gap:2px}
#view-raci-modelo .rc-l{width:16px;height:16px;line-height:16px;text-align:center;border-radius:3px;background:var(--s2);color:#aab2c0;font-size:10px;cursor:pointer;font-weight:700;-webkit-user-select:none;user-select:none}
#view-raci-modelo .rc-l.on{background:var(--ac);color:#fff}
#view-raci-modelo .rc-l:hover{outline:1px solid var(--ac)}
/* Não quebrar rótulos da WBS (ex.: "Testes Unitários (78)") — overflow rola na horizontal via .tbl-wrap/flex */
#view-tabelas table.list td,#view-tabelas table.list th,#view-tabelas-lado table.list td,#view-tabelas-lado table.list th{white-space:nowrap}
/* ⛶ Tela otimizada — largura reduzida p/ leitura (toggle ao lado dos filtros, persistido) */
#spOtimBtn.on{background:var(--ac);color:#fff;border-color:var(--ac)}
#view-status-projeto.sp-otim .card{max-width:1000px}
/* ◫ Marcos + Curva S lado a lado (ao mesmo tempo na tela) */
.st-row2{display:flex;gap:0 4px;align-items:stretch}
.st-row2>.st-quad{flex:1 1 0;min-width:0}
.st-row2 .card{height:100%}
/* Tipografia da tela Status em largura total: títulos/números maiores e tabelas mais legíveis */
#view-status-projeto .card h2{font-size:17px}
#view-status-projeto table.list{font-size:13px}
#view-status-projeto table.list th{font-size:12px}
#view-status-projeto .kc-h{font-size:12.5px;height:32px}
#view-status-projeto .kc-cell .kv{font-size:22px}
#view-status-projeto .fg-rod,#view-status-projeto .hier-ctrl .muted{font-size:11.5px}
#view-status-projeto .scrv{font-size:13px}
#view-status-projeto .ms-svg text{font-family:inherit}
.sp-saved{font:inherit;padding:4px 8px;border:1px solid var(--bd);border-radius:6px;background:#fff;max-width:240px}
.sp-quadmenu{position:relative}
.sp-quadmenu>summary{list-style:none;cursor:pointer}
.sp-quadmenu>summary::-webkit-details-marker{display:none}
.sp-quadmenu-list{position:absolute;right:0;top:100%;margin-top:4px;z-index:30;background:#fff;border:1px solid var(--bd);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.12);padding:8px;min-width:210px;max-height:320px;overflow:auto}
.sp-quadmenu-list label{display:flex;align-items:center;gap:6px;padding:3px 4px;font-size:12px;white-space:nowrap;cursor:pointer;color:var(--tx)}
.sp-quadmenu-list label:hover{background:var(--s2)}
.sp-visao{position:relative}
.sp-visao>summary{list-style:none;cursor:pointer}
.sp-visao>summary::-webkit-details-marker{display:none}
.sp-visao-menu{position:absolute;right:0;top:100%;margin-top:4px;z-index:30;background:#fff;border:1px solid var(--bd);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.12);padding:10px;min-width:248px;max-height:78vh;overflow:auto}
.sp-visao-menu .sp-vsec{font-size:11px;font-weight:700;color:var(--ac);text-transform:uppercase;letter-spacing:.03em;margin:10px 2px 5px;border-bottom:1px solid var(--bd);padding-bottom:3px}
.sp-visao-menu .sp-vsec:first-child{margin-top:0}
.sp-visao-menu .sp-quadmenu-list{position:static;box-shadow:none;border:0;padding:0;margin:0;min-width:0}
.sp-visao-menu .sp-vrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sp-visao-menu .sp-vrow .btn{flex:1 1 auto}
.sp-visao-menu .sp-saved{max-width:none;flex:1 1 auto}
/* Layout em 2 colunas: esquerda = parametrizar/disposição · direita = gravar/visualizar/salvar/abrir */
.sp-visao-menu.cols2{display:flex;gap:18px;align-items:flex-start;min-width:580px;max-width:92vw}
.sp-visao-menu.cols2 .sp-col{min-width:0}
.sp-visao-menu.cols2 .sp-col-left{flex:0 0 250px}
.sp-visao-menu.cols2 .sp-col-right{flex:1 1 auto;display:flex;flex-direction:column}
.sp-visao-menu.cols2 .sp-col .sp-vsec:first-child{margin-top:0}
.sp-visao-menu.cols2 .sp-col-left .sp-quadmenu-list{max-height:62vh;overflow:auto}
.sp-quadrow{display:flex;align-items:center;gap:6px}
.sp-quadrow label{flex:1;display:flex;align-items:center;gap:6px;margin:0;cursor:pointer;white-space:nowrap}
.sp-quadmv{display:inline-flex;gap:2px;flex:none}
.sp-mvq{background:var(--sf);border:1px solid var(--bd);border-radius:5px;font-size:10px;line-height:1;padding:2px 5px;cursor:pointer;color:var(--tx2)}
.sp-mvq:hover:not([disabled]){border-color:var(--ac);color:var(--ac)}
.sp-mvq[disabled]{opacity:.3;cursor:default}
.sp-zoom{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--tx2)}
.st-mv{padding:1px 7px;font-size:11px;line-height:1.4;border:1px solid var(--bd);background:var(--s2);border-radius:5px;cursor:pointer;color:var(--tx2)}
.st-mv:hover{border-color:var(--ac);color:var(--ac)}
.ridac-edit{border:1px solid transparent;background:transparent;font:inherit;padding:1px 3px;border-radius:4px;color:inherit;max-width:140px}
.ridac-edit:hover{border-color:var(--bd)}
.ridac-edit:focus{border-color:var(--ac);outline:none;background:#fff}
.st-quad{position:relative;margin-bottom:14px}
.st-quad>.card{margin-bottom:0}
.st-quad>.card>h2{padding-right:54px}   /* abre espaço no canto p/ a setinha ▲▼ (não colide com botões do cabeçalho) */
.st-quad-ctrl{position:absolute;top:8px;right:10px;display:flex;flex-direction:row;gap:4px;z-index:6}
.st-flag{font-weight:600;font-size:11px;color:var(--ac);display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.st-flag input{cursor:pointer;accent-color:var(--ac)}
.st-slide{font-weight:600;font-size:11px;color:var(--tx2);display:inline-flex;align-items:center;gap:3px}
.st-slide input{width:42px;font:inherit;padding:1px 4px;border:1px solid var(--bd);border-radius:5px;text-align:center}
.ms-svg{width:100%;height:auto;display:block;margin-top:4px}
.gtable tr:hover td.col-mk,.gtable tr:hover td.col-id,.gtable tr:hover td.col-nome{background:#f5f8ff}
.gtable tr.lvl1 td.col-mk,.gtable tr.lvl1 td.col-id,.gtable tr.lvl1 td.col-nome{background:#e8eefc}
.gtable tr.lvl2 td.col-mk,.gtable tr.lvl2 td.col-id,.gtable tr.lvl2 td.col-nome{background:#eef3fd}
.gtable tr.mkd td.col-mk,.gtable tr.mkd td.col-id,.gtable tr.mkd td.col-nome{background:#e9ebef}
.gtable tr.sel td.col-mk,.gtable tr.sel td.col-id,.gtable tr.sel td.col-nome{background:#dbe7ff}
.gtable th{background:var(--s2);text-align:left;padding:0 6px;height:var(--gheadH,32px);
  font-size:11px;color:var(--tx2);border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:3;
  font-family:"Segoe UI",Aptos,"Segoe UI Emoji","Segoe UI Symbol",system-ui,sans-serif}   /* fallback de emoji p/ o 🚦 do cabeçalho Farol (senão vira ▦▦) */
.gtable td{display:table-cell;height:var(--row);padding:0 6px;border-bottom:1px solid #edf0f6;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* display EXPLÍCITO: classe de outra tela num td (ex.: .ed-col do editor virando flex) tira a célula do layout de tabela e INFLA a linha acima do --row — Gantt desalinha e o ↕ "morre" (bug real 25/07/2026) */
.gtable tr:hover td{background:#f5f8ff}
.gtable tr.sel td{background:#dbe7ff}
.gtable tr.lvl1 td{background:#e8eefc;font-weight:700;color:#274a9e}
.gtable tr.lvl2 td{background:#eef3fd;font-weight:600;color:#34508c}
.gtable tr.lvl3 td{font-weight:600}
/* Negrito ate as ATIVIDADES: quem tem filhos (Projeto/Fase/Frente/Grupo/Entregavel) fica em negrito em QUALQUER nivel; folha (atividade) nunca. O criterio e ser sumario, nao a profundidade — lvl* so vai ate 3 e pintava atividade rasa de negrito e Grupo/Entregavel fundo de normal. */
.gtable tr.sum td{font-weight:700}
.gtable tr:not(.sum) td{font-weight:400}
.gtable tbody tr.rag-vermelho:not(.sel):not(.mkd) td{background:#fbe0e4}
.gtable tbody tr.rag-amarelo:not(.sel):not(.mkd) td{background:#fbeed2}
.gtable tbody tr.rag-verde:not(.sel):not(.mkd) td{background:#e7f4ec}
.gtable tbody tr.rag-concluido:not(.sel):not(.mkd) td{background:#eaeef4}
.gtable tbody tr.rag-futuro:not(.sel):not(.mkd) td{background:#f6f7f9}
.gtable .nm{cursor:pointer}
/* Arrastar linha p/ reordenar */
.gtable tbody tr.dragging{opacity:.45}
.gtable tbody tr.drop-before td{box-shadow:inset 0 2px 0 0 var(--ac)}
.gtable tbody tr.drop-after td{box-shadow:inset 0 -2px 0 0 var(--ac)}
.gtable .lk{background:none;border:none;cursor:pointer;font-size:11px;padding:0 1px;opacity:.85;vertical-align:middle}
.gtable .lk:hover{opacity:1}
.gtable .lk.bypai{opacity:.35;cursor:default}
.gtable .lk.lk-auto{color:#1d4ed8}   /* ⚓ pin do nivelamento — azul: o recálculo preserva, mas as ações do 🗓 re-movem */
.gtable .lk.lk-herd{opacity:.45}      /* ❄ herda o congelamento do projeto (sem trava própria) — as ações MOVEM */
.gtable .lk.lk-base{color:#b45309;opacity:1}   /* 🔐 baseline travada — âmbar: o COMPROMISSO está protegido (destravar exige digitar "Confirma") */
/* Help do cadeado no HOVER (o `title` mostrava só o estado atual e não ensinava o ciclo — GP esquecia).
   No <html> e pointer-events:none: o escalaUI aplica zoom no body e não pode roubar o clique do cadeado. */
.lk-help{position:fixed;z-index:10000;pointer-events:none;background:#1f2937;color:#e5e7eb;font-size:11.5px;line-height:1.45;padding:9px 12px;border-radius:9px;box-shadow:0 8px 26px rgba(0,0,0,.34);max-width:390px;opacity:0;transform:translateX(-6px);transition:opacity .16s ease,transform .16s ease}
.lk-help.on{opacity:1;transform:translateX(0)}
.lk-help .lkh-tit{font-weight:700;color:#fff;margin-bottom:6px}
/* Rodape fino do card (18/08/2026): os outros eixos (📌 · 🔐 · ⛓) numa linha so — o card responde PELA LINHA,
   nao ensina a taxonomia inteira (era o que o deixava com 7 linhas). */
.lk-help .lkh-rod{margin-top:8px;padding-top:7px;border-top:1px solid rgba(255,255,255,.16);font-size:11px;display:block}
.lk-help .lkh-l{display:flex;gap:7px;align-items:baseline;padding:2px 4px;border-radius:5px}
.lk-help .lkh-l b{flex:0 0 auto;font-size:12px}
.lk-help .lkh-l i{font-style:normal;font-weight:600;color:#fff}
.lk-help .lkh-l.dim{opacity:.62}
.lk-help .lkh-l.on{background:#374151;outline:1px solid #9ca3af}
.lk-help .lkh-l.on i{color:#fde68a}
.lk-help .lkh-cic{margin-top:7px;padding-top:6px;border-top:1px solid #4b5563;color:#cbd5e1}
.lk-help .lkh-cic b{color:#fff}
.gtable th.rcol{position:sticky}   /* sticky (NÃO relative): relative sobrescrevia o sticky do th geral e o cabeçalho das colunas de dados rolava junto; sticky também ancora o .col-grip absoluto */
.gtable th.rcol[draggable]{cursor:grab}
.col-grip{position:absolute;right:0;top:0;width:6px;height:100%;cursor:col-resize}
.col-grip:hover{background:var(--ac)}
/* Alinhamento das colunas: valores centralizados; Nome à esquerda; # à direita */
.gtable th,.gtable td{text-align:center}
.gtable th.col-nome,.gtable td.col-nome{text-align:left}
.gtable th.col-id,.gtable td.col-id{text-align:right}
.gtable .edd{cursor:pointer}
.gtable .edd:hover{background:#eef4ff;text-decoration:underline dotted}
.gtable .edb{cursor:not-allowed;color:var(--tx2)}
.gtable .edb:hover{background:#fdeef0;text-decoration:underline dotted #c77}
/* affordance uniforme: TODA célula editável convida no hover (mesma família do .edd/.ed-col) */
.gtable td.ed{cursor:text} .gtable td.ed:hover{background:#eef4ff}
.gtable td.ed-flagc{cursor:pointer} .gtable td.ed-flagc:hover{background:#eef4ff}
.gtable td.ed-pac:hover{background:#eef4ff}
/* cursor de CÉLULA (Tab atravessa a linha inteira; somente-leitura/popover recebem o foco no próprio td) */
.gtable td.cel-foco{outline:2px solid var(--ac);outline-offset:-2px;background:#eef4ff}
.gtable td.cel-foco:focus{outline:2px solid var(--ac);outline-offset:-2px}
.niv-dot.niv-pa{font-size:8.5px;font-weight:800;letter-spacing:-.3px}   /* PA = seleção especial "pais de atividades" */
.gtable .tw{display:inline-block}
.caret{display:inline-block;width:14px;color:var(--tx2);cursor:pointer;user-select:none}
/* chevron de abrir/fechar tarefas: gira 90° ao abrir (transição suave), cor de destaque + hover */
.gtable .caret{width:16px;text-align:center;font-size:11px;line-height:1;color:var(--ac);vertical-align:middle;transition:transform .15s ease;transform-origin:50% 50%;font-family:"Segoe UI Symbol",system-ui,sans-serif}
.gtable .caret.open{transform:rotate(90deg)}
.gtable .caret.leaf{cursor:default}
.gtable .caret:not(.leaf):hover{filter:brightness(.65)}
.cell-edit{width:100%;background:#fff;border:1px solid var(--ac);color:var(--tx);
  border-radius:4px;padding:2px 4px;font-size:12px}
.dur-est{color:var(--ac);font-weight:800;margin-right:1px;cursor:help}
/* ---- Timeline (apresentação, estilo MS Project) ---- */
.tl-card{max-width:1180px}
.tl-head{margin-bottom:8px}
.tl-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.tl-count{font-size:12px;color:var(--tx2)}
.tl-canvas{border:1px solid var(--bd);border-radius:10px;background:#fff;padding:10px 12px;overflow-x:auto}
.tl-titulo{font-weight:700;font-size:14px;color:var(--tx);margin:0 0 6px}
.tl-canvas .tl-mes{font-size:10px;fill:#94a3b8}
.tl-canvas .tl-lbl{font-size:11px;fill:#1f2937}
.tl-canvas .tl-hoje{font-size:10px;fill:#d23b4e;font-weight:700}
.tl-vazio{border:1px dashed var(--bd);border-radius:10px;padding:26px;text-align:center;color:var(--tx2);font-size:13px;background:var(--s2)}
.tl-mcard{max-width:680px;width:92vw;max-height:86vh;overflow:auto}
.tl-quick{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:4px 0 8px}
.tl-mlist{border:1px solid var(--bd);border-radius:8px;max-height:52vh;overflow:auto;padding:4px 0}
.tl-mrow{display:flex;align-items:center;gap:7px;font-size:13px;padding:3px 10px;cursor:pointer}
.tl-mrow:hover{background:var(--s2)}
.tl-mrow span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-mrow small{flex:none}
/* drill-down do ➕ Gerenciar: linha recolhida some por [hidden] — o display:flex acima venceria a UA stylesheet */
.tl-mrow[hidden]{display:none}
/* mesmo chevron da grade (.caret): fonte SÍMBOLO — Aptos não tem ▸ e o glifo virava um pontinho — + gira 90° ao abrir */
.tl-mrow .tl-chev{flex:none;width:16px;padding:0;border:0;background:transparent;color:var(--ac);font-size:12px;line-height:1;text-align:center;cursor:pointer;transition:transform .15s ease;transform-origin:50% 50%;font-family:"Segoe UI Symbol",system-ui,sans-serif}
.tl-mrow .tl-chev.open{transform:rotate(90deg)}
.tl-mrow button.tl-chev:hover{filter:brightness(.65)}
.tl-mcnt{flex:none;font-size:10px;font-weight:800;color:var(--ac);background:#eaf1ff;border-radius:8px;padding:0 5px}
.tl-mcount{font-size:11px;color:var(--tx2);font-weight:700;margin-left:auto}
.tl-mbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 6px}
.tl-mbusca{flex:1;min-width:130px;font-size:12px;padding:3px 8px;border:1px solid var(--bd);border-radius:8px;background:var(--sf);color:var(--tx)}
.tl-mnivs{display:inline-flex;align-items:center;gap:3px}
.tl-mniv-lbl{font-size:11px;color:var(--tx2);font-weight:700;margin-right:2px}
.tl-nivbtn{border:1px solid var(--bd);background:var(--sf);color:var(--tx);border-radius:9px;padding:2px 7px;font-size:11px;font-weight:600;cursor:pointer;font-family:"Segoe UI Symbol",system-ui,sans-serif}
.tl-nivbtn:hover{background:#eaf1ff;border-color:var(--ac);color:var(--ac)}
.tl-nivbtn.on{background:var(--ac);border-color:var(--ac);color:#fff}
.tl-mvazio{font-size:12px;color:var(--tx2);padding:12px;text-align:center}
.qa{display:inline-flex;gap:3px}
.qa-inline{vertical-align:middle;margin:0 1px;align-items:center}
.qa-inline .pqone{margin-right:2px}
.gtable .pq-slot{display:inline-block;width:21px;margin:0;text-align:center;vertical-align:middle}
/* fallback de fonte p/ glifos (Aptos não tem ⚑ 🏁 ＋ ✕ 💾): senão viram quadradinho */
.gtable .lupa,.gtable .qa button,.farol-flag,.dl-flag,.kb-flag,.cols-grava,.cols-cancel{font-family:"Segoe UI Emoji","Segoe UI Symbol","Apple Color Emoji",system-ui,sans-serif}
/* cadeado: fonte SÍMBOLO (monocromática) p/ a cor valer — 🔓 solto = verde, 🔒 travado = laranja */
.gtable .lk{font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif}
.gtable .lk:not(.on){color:var(--ok)}
.gtable .lk.on{color:#c77700}
.qa button{background:transparent;border:none;color:var(--tx2);font-size:13px;padding:0 2px}
.qa button:hover{color:var(--ac)}
.star{color:var(--fat)}

/* GANTT */
.gantt-svg{display:block}
.bar-plan{fill:var(--bl)}
.bar-crit{fill:#e11d48}
.bar-critg{stroke:#7c3aed;stroke-width:1.8px;paint-order:stroke}   /* 🧩 crítico LOCAL da fase/grupo: contorno roxo (compõe com o preenchimento normal/crítico) */
.ms-star{fill:#334155;font-size:calc(11px * var(--g-fz,1));font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif}   /* marco (milestone): estrela compacta, alinhada à linha das barras; --g-fz = zoom das fontes do Gantt (🔍A) */
.ms-star.ms-base{fill:#94a3b8}   /* estrela BASELINE — cinza (cor da legenda) */
.ms-star.ms-plan{fill:var(--bl)}   /* estrela PROGRAMADA — azul (cor da legenda) */
.ms-star.ms-real{fill:var(--rea)}   /* estrela REALIZADA (data real) — verde (cor da legenda) */
.g-leg .sw-star{display:inline-block;color:#334155;font-weight:700;font-size:11px;line-height:1;vertical-align:middle}
.g-leg .sw-star-base{color:#94a3b8}   /* estrela baseline na legenda */
.g-leg .sw-star-plan{color:var(--bl)}   /* estrela programada na legenda */
.g-leg .sw-star-real{color:var(--rea)}   /* estrela realizada na legenda */

/* Project Model Canvas */
.pmcanvas{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;align-items:stretch;min-height:calc(100vh - 210px)}
@media(max-width:1100px){.pmcanvas{grid-template-columns:repeat(2,1fr);min-height:0}}
.pmc-grupo{display:flex;flex-direction:column;gap:8px;min-height:0}
.pmc-gh{font-size:11px;font-weight:700;color:#fff;background:var(--ac);text-transform:uppercase;letter-spacing:.04em;padding:6px 8px;border-radius:6px;text-align:center}
.pmc-bloco{flex:1;background:var(--sf);border:1px solid var(--bd);border-radius:8px;padding:8px;display:flex;flex-direction:column;min-height:88px}
.pmc-h{font-size:11px;font-weight:700;color:var(--ac);margin-bottom:5px;text-transform:uppercase;letter-spacing:.02em}
.pmc-ta{flex:1;border:none;resize:none;min-height:46px;font:inherit;font-size:12px;color:var(--tx);background:transparent;outline:none;line-height:1.4;width:100%}
.pmc-ta::placeholder{color:var(--tx2);font-size:11px;font-style:italic}
.pmc-bloco:focus-within{border-color:var(--ac);box-shadow:0 0 0 2px rgba(47,111,237,.12)}
/* Canvas (Projeto E Portfólio) ocupam a tela inteira (o .card global trava em 1000px) — layout PMC idêntico nos dois */
#view-canvas .card,#view-canvas-portfolio .card{max-width:none;flex:1;display:flex;flex-direction:column;margin-bottom:0}
#view-canvas .pmcanvas,#view-canvas-portfolio .pmcanvas{flex:1;min-height:0}
/* Grid PMC irregular estica p/ a tela: as 6 linhas em 1fr preenchem sem deixar vãos vazios sob os blocos curtos */
#view-canvas .cg-grid,#view-canvas-portfolio .cg-grid{flex:1;min-height:0;grid-template-rows:repeat(6,minmax(0,1fr))}
/* ✅ selo de conclusão — carimbado no fim das linhas 100% (toggle na toolbar, default ON) */
.g-done circle{fill:#4caf50}
.g-done path{fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bar-base{fill:#7b8aa3;opacity:1}   /* V1: baseline com mais destaque (antes var(--base) op .6 — quase invisível) */
.bar-real{fill:var(--rea)}
.bar-real2{fill:var(--rea)}   /* Visão 2: verde preenche o programado (mesma cor da legenda Realizado) */
.bar-base2{fill:#7b8aa3;opacity:1}   /* Visões 2/5/6: baseline cheia ao fundo, cinza com destaque */
.b2pai{fill:#475569;opacity:1}        /* Visão 2: baseline dos PAIS — cinza mais escuro */
.bplanpai{fill:#1e3a8a}               /* Visão 2: programado dos PAIS — azul mais escuro */
.breal2pai{fill:#15803d}              /* Visão 2: realizado dos PAIS — verde mais escuro */
/* Visão 3 — paleta colorblind-safe (Okabe-Ito): azul #0072B2 + verde-azulado #009E73, distinguíveis no daltonismo vermelho-verde; cinza neutro de referência */
.v3.bar-base2{fill:#9aa3ad;opacity:.95}
.v3.bar-plan{fill:#0072b2}
.v3.bar-real2{fill:#009e73}
.v3.b2pai{fill:#566270;opacity:1}     /* pais: cinza + escuro */
.v3.bplanpai{fill:#004c80}            /* pais: azul + escuro */
.v3.breal2pai{fill:#006b4f}           /* pais: verde + escuro */
/* Visão 4 — tons claros (pastéis) */
.v4.bar-base2{fill:#7b8aa3;opacity:1}   /* folhas: baseline com destaque (antes #cbd5e1 — quase invisível) */
.v4.bar-plan{fill:#6aaef8}
.v4.bar-real2{fill:#5fd98a}
.v4.b2pai{fill:#94a3b8;opacity:1}     /* pais: um pouco + saturados que as folhas, mas ainda claros */
.v4.bplanpai{fill:#60a5fa}
.v4.breal2pai{fill:#4ade80}
/* Visão 7 — cores da V1 (suaves) no layout empilhado da V6: baseline cinza claro em cima, programado azul + realizado verde embaixo */
.v7.bar-base2{fill:#9aa6bd;opacity:1}   /* baseline da V7 (padrão) firme — antes var(--base) op .6 ficava fraca */
.v7.b2pai{fill:#64748b;opacity:.9}    /* pais: baseline cinza da V1 (psum-base) */
.v7.bplanpai{fill:#1d4ed8}            /* pais: azul da V1 (psum) */
.v7.breal2pai{fill:#65a30d}           /* pais: verde da V1 (psum-prog) */
/* Visão 5 — marcador de ATRASO (início/fim) vermelho */
.bar-atraso{fill:#dc2626}
.bar-atraso-band{fill:#ffcebf;opacity:1}   /* atraso: salmão SÓLIDO e uniforme (= o tom de #ff3b00 a 25% sobre branco), desenhado POR CIMA → mesma cor em qualquer atividade, sem depender do que está atrás */
/* 💤 Sleep — a PAUSA entre o trabalho feito e o restante (após o ⏩ Status Date). O vão fica VAZIO de propósito;
   o fio pontilhado + o 💤 dizem "é a mesma tarefa, parada aqui" (duas barras soltas pareceriam duas tarefas). */
.bar-sleep-link{stroke:#94a3b8;stroke-width:1;stroke-dasharray:2 3}
.bar-sleep-z{font-size:9px;opacity:.75;pointer-events:none}
.bar-adiant-band{fill:#38bdf8;opacity:.25}   /* V8: faixa de adiantamento azul clarinho 25% */
.g-leg .sw-atraso{background:#dc2626;height:3px}   /* V6/V7: representa a LINHA fina vermelha na junção */
.g-leg .sw-atraso-band{background:#ffcebf;opacity:1}   /* V1..V5 e V8: mesma cor salmão sólida da faixa de atraso */
.g-leg .sw-adiant-band{background:#38bdf8;opacity:.45}   /* V8: swatch do adiantamento azul clarinho */
.bar-prog{fill:#0f2f6b}
.bar-sum{fill:var(--gr)}
.bar-psum{fill:#1d4ed8}
.bar-psum-prog{fill:#65a30d}
.bar-psum-base{fill:#64748b;opacity:.9}
/* Legenda de cores do Gantt (faltava CSS → swatches ficavam invisíveis) */
.g-leg{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:11px;color:var(--tx2);flex-basis:100%;justify-content:flex-start;margin-top:2px}
/* Escala do eixo (Mel D S M B T Sm A) — ocupa o VÃO livre da legenda: margin-left:auto encosta à direita.
   DESTACADA como grupo de CONTROLE (pedido 16/07/2026): a legenda ao lado é só leitura (quadradinhos de cor),
   isto aqui se clica — então ganha caixa própria, borda e rótulo na cor de acento, p/ não se perder no meio. */
/* Divisão de VIRADA DE ANO no eixo do Gantt — "as divisões nas mudanças de um ano para outro são importantes"
   (16/07/2026). Atravessa as 2 faixas e é a única linha escura do cabeçalho: é o marco que orienta a leitura. */
.g-vira{stroke:#94a3b8;stroke-width:1.6}
/* 📆 Faixa de SEMANAS DO PROJETO (3ª linha do eixo) — contagem a partir do início; negativas antes dele */
.g-semband{fill:#eef2f9}
.g-semdiv{stroke:#dbe2ee;stroke-width:1}
.g-semdiv1{stroke:#1d4ed8;stroke-width:1.6}                 /* virada p/ a semana 1 = início do projeto */
.g-semlbl{fill:#5b6a80;font-weight:600;pointer-events:none}
.g-semlbl.neg{fill:#a2adbe;font-weight:400}                  /* antes do início: cinza, peso normal */
.g-semlbl.um{fill:#1d4ed8;font-weight:700}
/* .leg-ctrl = caixa de CONTROLE da barra (o que se clica), em oposição aos itens de legenda (que só se leem).
   A Escala e o ▦ Grade compartilham (pedido 16/07/2026: "destaque a grade igual a escala"). */
.leg-ctrl,.leg-esc{display:inline-flex;align-items:center;gap:3px;flex:0 0 auto;
  background:linear-gradient(#fff,#f6f9fc);border:1px solid #cfd8e3;border-radius:10px;padding:2px 5px;
  box-shadow:0 1px 2px rgba(15,23,42,.06)}
.leg-ctrl{margin-left:auto}   /* o 1º controle (▦ Grade) empurra o BLOCO todo p/ a direita... */
.leg-esc{margin-left:6px;padding-left:8px}   /* ...e a Escala cola nele: os dois formam um bloco só de controles */
.leg-gradeb{display:inline-flex;align-items:center;gap:5px;padding:0 8px}
.leg-gradeb .sw{margin:0}
.leg-esc-l{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--ac,#0d9488);font-weight:800;margin-right:3px}
.leg-escb{border:1px solid var(--bd);background:#fff;color:var(--tx2);font:inherit;font-size:10.5px;font-weight:700;min-width:20px;height:19px;padding:0 5px;border-radius:5px;cursor:pointer;line-height:1}
.leg-escb.mel{min-width:30px}
.leg-escb:hover{border-color:var(--ac);color:var(--ac)}
.leg-escb.on{background:var(--ac);border-color:var(--ac);color:#fff;box-shadow:0 0 0 2px rgba(13,148,136,.18)}
.leg-wrap{display:flex;align-items:center;gap:12px;flex:none;flex-wrap:wrap}   /* legenda (esq.) + ◆ camadas dos Marcos (dir.) na mesma linha; sem espaço → os ◆ QUEBRAM p/ baixo (nunca estouram a tela) */
.leg-wrap>.g-leg{flex:1 1 auto;flex-basis:auto;min-width:0}   /* legenda cresce/empacota; libera espaço p/ os marcos à direita */
.leg-marcos{flex:none;margin-left:auto;align-self:center;border-left:1px solid var(--bd);padding-left:10px}
/* #toolbarMarcos vive na LEGENDA (leg-wrap), mas carrega .toolbar — anula as heranças de toolbar (padding/borda/
   fundo do bloco, botão gordo 6px 11px e o fill LARANJA do .toolbar button.on) e equaliza os ◆ à escala da legenda. */
.toolbar.leg-marcos{padding:0 0 0 10px;border-bottom:0;background:none;gap:3px}
.toolbar.leg-marcos .mkt{padding:1px 7px;font-size:10.5px;line-height:1.5;font-weight:600}
.toolbar.leg-marcos button.on{background:#fff;border-color:currentColor;color:var(--mkc)}
.g-leg>span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.g-leg .leg-grp{font-weight:700;color:var(--tx)}
.g-leg .leg-sep{width:1px;height:13px;background:var(--bd);margin:0 1px}
.g-leg .sw{display:inline-block;width:14px;height:8px;border-radius:2px}
.g-leg .leg-it{cursor:pointer;border-radius:4px;padding:1px 3px}
.g-leg .leg-it:hover{background:rgba(20,30,60,.07)}
.g-leg .leg-it.cam-off{opacity:.4;text-decoration:line-through}
.g-leg .sw-base{background:#7b8aa3;opacity:1}
.g-leg .sw-plan{background:var(--bl)}
.g-leg .sw-prog{background:#0f2f6b}
.g-leg .sw-real{background:var(--rea)}
.g-leg .sw-psum{background:#1d4ed8}
.g-leg .sw-psum-prog{background:#65a30d}
.g-leg .sw-psum-base{background:#64748b;opacity:.9}
.g-leg .sw-status{width:0;height:13px;border-left:2px dashed #1d4ed8;border-radius:0}
.g-leg .sw-hoje{width:0;height:13px;border-left:2px dotted #b9c2ce;border-radius:0}
.g-leg .sw-fat{color:#d4a017;font-weight:700}
.g-leg .sw-done{background:#16a34a}
.g-leg .sw-late{background:#d23b4e}
.g-leg .sw-mc{background:linear-gradient(90deg,#1f9d57,#c77700,#d23b4e);opacity:.55}
.g-leg .sw-comp{background:linear-gradient(90deg,#16a34a,#0d9488);opacity:.6}
.g-leg .sw-chic{background:linear-gradient(90deg,#fca5a5,#dc2626);opacity:.75}
.g-leg .leg-mc{cursor:default}
.g-leg .leg-mc:hover{background:transparent}
/* Visão 2 — swatches (espelham as barras) */
.g-leg .sw-base2{background:#7b8aa3;opacity:1}
.g-leg .sw-real2{background:var(--rea)}
.g-leg .sw-base2.swpai{background:#475569;opacity:1}
.g-leg .sw-plan.swpai{background:#1e3a8a}
.g-leg .sw-real2.swpai{background:#15803d}
/* Visão 3 — swatches colorblind-safe (Okabe-Ito) */
.g-leg .sw-base2.v3{background:#9aa3ad;opacity:.95}
.g-leg .sw-plan.v3{background:#0072b2}
.g-leg .sw-real2.v3{background:#009e73}
.g-leg .sw-base2.swpai.v3{background:#566270;opacity:1}
.g-leg .sw-plan.swpai.v3{background:#004c80}
.g-leg .sw-real2.swpai.v3{background:#006b4f}
/* Visão 4 — swatches tons claros */
.g-leg .sw-base2.v4{background:#7b8aa3;opacity:1}
.g-leg .sw-plan.v4{background:#6aaef8}
.g-leg .sw-real2.v4{background:#5fd98a}
.g-leg .sw-base2.swpai.v4{background:#94a3b8;opacity:1}
.g-leg .sw-plan.swpai.v4{background:#60a5fa}
.g-leg .sw-real2.swpai.v4{background:#4ade80}
/* Visão 7 — swatches cores da V1 (suaves) */
.g-leg .sw-base2.v7{background:#9aa6bd;opacity:1}
.g-leg .sw-base2.swpai.v7{background:#64748b;opacity:.9}
.g-leg .sw-plan.swpai.v7{background:#1d4ed8}
.g-leg .sw-real2.swpai.v7{background:#65a30d}
.grid-line{stroke:#e4e9f2;stroke-width:1}
.today-line{stroke:#1d4ed8;stroke-width:1.5;stroke-dasharray:3 3}
.gline-hoje{stroke:#b9c2ce;stroke-width:1.5;stroke-dasharray:1.5 3.5;stroke-linecap:round}
.g-wknd{fill:#eef1f6}
.g-hol{fill:#e3eefb}
.gline-inicio{stroke:#1f9d57;stroke-width:1.5;stroke-dasharray:4 3}
.gline-alvo{stroke:#7c4dff;stroke-width:1.5;stroke-dasharray:4 3}
.g-link{fill:none;stroke:#9aa6bb;stroke-width:1.2;opacity:.7}                 /* seta de dependência (predecessora→sucessora) — clara */
.g-link-h{fill:#8e9bb0;opacity:.88}                                          /* ponta da seta */
.g-links:hover .g-link{opacity:.92}
.g-links.g-anim .g-link{stroke-dasharray:1;stroke-dashoffset:1;animation:g-draw .9s ease forwards}   /* aparece DESENHANDO gradualmente */
@keyframes g-draw{to{stroke-dashoffset:0}}
.g-linkheads.g-anim path{opacity:0;animation:g-head .35s ease .55s forwards}
@keyframes g-head{from{opacity:0}to{opacity:.88}}
.g-link-crit{stroke:#ef8a94;stroke-width:1.7;opacity:.8}                      /* vínculo no caminho crítico (CPM) — vermelho CLARO (pedido 05/07: discreto, sem gritar) */
.g-link-h-crit{fill:#ef8a94;opacity:.9}                                       /* ponta do vínculo crítico */
.g-links:hover .g-link-crit{opacity:1}                                        /* hover realça p/ rastrear o caminho */
.g-links.g-anim.g-anim-lento .g-link{animation-duration:.95s}                 /* ✨ cascata LENTA (1 clique) — linha por linha */
.g-links.g-anim.g-anim-rapido .g-link{animation-duration:.4s}                /* ✨ cascata RÁPIDA (2 cliques) */
.grid-cal{stroke:#cbd5e8;stroke-width:1}        /* grade do calendário (mês) — toggle "Grade" na legenda */
.grid-cal-min{stroke:#eaeef6;stroke-width:1}    /* grade do calendário (semana) — mais clara */
.g-row{fill:transparent}                        /* base: linha sem destaque (sem fill → SVG usaria preto) */
.g-row-mk{fill:#646e84;opacity:.16}             /* linha marcada ▢ — faixa TRANSLÚCIDA (não cobre a coluna destacada) */
.g-colsel{fill:#2f6fed;opacity:.12}             /* coluna destacada (clique no eixo) — translúcida, desenhada POR CIMA */
.g-colsel-x{fill:#2f6fed;opacity:.18}           /* reforço na INTERSEÇÃO coluna ∩ linha marcada → célula nítida */
#ganttHead .gantt-svg{cursor:pointer}           /* dica visual de que o eixo de datas é clicável */
.g-leg .sw-grade{width:0;height:13px;border-left:2px solid #b9c4d8;border-radius:0}
.drag-move{cursor:grab} .drag-move:active{cursor:grabbing} .drag-grip{cursor:ew-resize}
.dl-flag{color:var(--er);margin-left:4px;cursor:help}
.sol-flag{margin-left:5px;cursor:help;font-size:10px;font-weight:700;background:#fdf1db;color:#9a6a12;border:1px solid #ecd9ae;border-radius:9px;padding:0 7px;white-space:nowrap}   /* 📅 solicitação de nova entrega (card da Visão do Usuário) — destaque p/ o GP decidir */
.sol-flag.sol-rec{background:#fde3e6;color:#c0273a;border-color:#f3bcc4}   /* 🚫 recusa da tarefa */
/* Proposta de RECURSO pendente (%/obs/encerramento, card da Visão do Usuário) — retida até o GP aceitar/recusar
   (t.proposta). 🟡 atualização parcial · 🟢 finalização (100%/encerramento). ✓/✕ inline decidem na hora. */
.prop-flag{margin-left:5px;cursor:help;font-size:10px;font-weight:700;background:#fdf1db;color:#9a6a12;border:1px solid #ecd9ae;border-radius:9px;padding:0 7px;white-space:nowrap}
.prop-flag.prop-fin{background:#e3f7ea;color:#137a3d;border-color:#b9e6cb}
.prop-ok,.prop-no{background:none;border:none;cursor:pointer;font-size:12px;padding:0 2px;vertical-align:middle;font-family:"Segoe UI Symbol","Segoe UI Emoji",sans-serif}
.prop-ok{color:var(--ok)} .prop-no{color:var(--er)}
.prop-ok:hover,.prop-no:hover{filter:brightness(1.2)}
.aud-warn{color:var(--wa);font-weight:700;cursor:help}
.aud-ok{color:var(--gr);opacity:.55}
.estrut-tag{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px;background:var(--s2);color:var(--tx2);white-space:nowrap}
.estrut-1{background:#e7eefc;color:#2f6fed} .estrut-2{background:#f3dde5;color:#a01441} .estrut-3{background:#e4f3e9;color:#1f9d57}
.estrut-4{background:#fbf0d9;color:#c77700} .estrut-5{background:#eee9f7;color:#7c4dff}
.gtable td.ed-col{cursor:text} .gtable td.ed-col:hover{background:var(--s2)}   /* célula editável da GRADE — escopada p/ não colidir com as colunas .ed-col do editor (e vice-versa) */
.ed-pred{cursor:text} .ed-pred:hover{background:var(--s2)}
.ed-rec{cursor:pointer} .ed-rec:hover{background:var(--s2)}
.rec-pop{position:fixed;z-index:300;display:flex;flex-direction:column;gap:1px;max-height:200px;overflow:auto;background:#fff;border:1px solid var(--ac);border-radius:7px;box-shadow:0 8px 24px rgba(20,30,60,.18);padding:5px;min-width:150px}
.rec-pop label{display:flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap;cursor:pointer;padding:2px 5px;border-radius:5px}
.rec-pop label:hover{background:var(--s2)}
/* display:flex vence o [hidden] da UA: sem esta regra o 🔍 do popover ESCONDIA no DOM e não na TELA — quem
   digitava um nome que não existe via a lista inteira, como se a pessoa estivesse lá (bug real, achado no pixel) */
.rec-pop label[hidden]{display:none}
.rec-pop-h{font-size:11px;font-weight:700;color:var(--tx2);padding:2px 5px 4px;border-bottom:1px solid var(--bd);margin-bottom:2px;position:sticky;top:0;background:#fff}
.rec-pop-top{position:sticky;top:0;z-index:2;background:#fff;padding-bottom:5px;margin-bottom:2px;border-bottom:1px solid var(--bd)}
.rec-pop-top .rec-pop-h{border:0;margin:0;padding:2px 5px 5px;position:static}
.rec-pop-top .rec-q{width:100%;box-sizing:border-box;font-size:12px;padding:4px 8px;border:1px solid var(--bd);border-radius:6px;outline:none;background:var(--sf,#fff);color:var(--tx,#1f2733)}
.rec-pop-top .rec-q:focus{border-color:var(--ac)}
/* ➕ Criar recurso que não está no time (aparece só quando o nome digitado não casa com ninguém) */
.rec-pop-top .rec-add{display:block;width:100%;margin-top:5px;padding:5px 8px;border:1px dashed var(--ac,#0d9488);border-radius:6px;background:rgba(13,148,136,.08);color:var(--ac,#0d9488);font:inherit;font-size:11.5px;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rec-pop-top .rec-add:hover{background:rgba(13,148,136,.18)}
.rec-pop-top .rec-add[hidden]{display:none}
/* Mesmo gesto no editor (lista de Recursos, layouts clássico e MSP) */
.edm-reccriar{margin-left:6px;padding:2px 7px;border:1px dashed var(--ac,#0d9488);border-radius:6px;background:rgba(13,148,136,.08);color:var(--ac,#0d9488);font:inherit;font-size:11px;cursor:pointer}
.edm-reccriar:hover{background:rgba(13,148,136,.18)}
.edm-reccriar[hidden]{display:none}
.rec-none1{font-size:11.5px;color:#64748b;padding:4px 2px}
.rec-none1[hidden]{display:none}
/* ↕ pequeno: o CONTEÚDO encolhe junto — `height` em <td> é MÍNIMO, e sem isto o piso real da linha ficava
   ~21–26px (pills/botões) e o ↕− "não funcionava" (o clamp segurava alto). As fórmulas min() são NO-OP em 24px
   (valores atuais) e só apertam quando --row cai. */
.gtable td{line-height:min(20px,calc(var(--row) - 4px))}   /* −4 e não −2: o line-box real = line-height + ~4 (borda 1px + folga do vertical-align:middle dos botões) — com −2 o pitch ficava nominal+2 e o clamp DEVOLVIA o ↕ p/ 24 (medido por CDP 25/07/2026: pitch 14→16, 22→24, 24→24) */
.gtable .pqone{width:min(17px,calc(var(--row) - 5px));height:min(17px,calc(var(--row) - 5px))}
.gtable .lupa{font-size:min(12px,calc(var(--row) - 8px))}
.gtable .lk{font-size:min(11px,calc(var(--row) - 9px))}
.gtable .mkbox{width:min(13px,calc(var(--row) - 8px));height:min(13px,calc(var(--row) - 8px))}
.gtable .tag{padding-top:min(2px,calc((var(--row) - 16px)/2));padding-bottom:min(2px,calc((var(--row) - 16px)/2));line-height:min(12px,calc(var(--row) - 6px))}
/* Linha INATIVA: riscada e esmaecida (fora de qualquer cálculo) */
tr.row-inativa{opacity:.5}
tr.row-inativa .nm{text-decoration:line-through}
/* Linha RECORTADA (✂ à espera de colagem): ainda está aqui — nada foi movido até o Ctrl+V */
tr.row-cut td{opacity:.62;background:rgba(13,148,136,.07)}
tr.row-cut .nm::after{content:' ✂';opacity:.85}
/* Coluna de FLAG personalizada: clique alterna direto na grade */
td.ed-flagc{cursor:pointer;text-align:center;user-select:none}
td.ed-flagc:hover{background:var(--s2,#eef1f7)}
td.ed-flagc .flag-on,.flag-on{color:#1f9d57;font-weight:700}
td.ed-flagc .flag-off{color:#94a3b8}
/* Campo personalizado EM USO no seletor ⚙ Colunas */
.cols-emuso .cols-catlbl{font-weight:600}
.cols-uso{font-size:9.5px;color:#0f766e;background:rgba(13,148,136,.12);border-radius:8px;padding:0 6px;margin-left:6px;white-space:nowrap;font-weight:600}
.rec-pop-f{position:sticky;bottom:0;display:flex;gap:6px;justify-content:flex-end;padding:6px 4px 2px;margin-top:4px;border-top:1px solid var(--bd);background:#fff}
.rec-pop-f button{font-size:12px;padding:4px 12px;border-radius:6px;border:1px solid var(--bd);cursor:pointer;background:var(--s2)}
.rec-pop-f .rp-save{background:var(--ac);color:#fff;border-color:var(--ac);font-weight:600}
.rec-pop-f .rp-save:hover{filter:brightness(1.08)}
.rec-pop-f .rp-cancel:hover{background:var(--bd)}
/* Coluna Pacote de trabalho (F2) */
.ed-pac{cursor:pointer}
.ed-pac:hover{background:var(--s2)}
.pac-pop{min-width:230px}
.pac-busca{width:100%;box-sizing:border-box;font-size:12px;padding:4px 7px;margin:0 0 4px;border:1px solid var(--bd);border-radius:6px}
.pac-lista{max-height:260px;overflow-y:auto}
.pac-hd{font-size:11px;font-weight:700;color:var(--tx2);padding:2px 5px 5px;border-bottom:1px solid var(--bd);margin-bottom:3px}
.pac-selo{font-size:10px;color:var(--ac);font-weight:600;background:var(--s2);border-radius:4px;padding:0 5px;margin-left:4px}
.pac-acts{display:flex;gap:6px;justify-content:flex-end;padding:6px 4px 2px;margin-top:4px;border-top:1px solid var(--bd)}
.pac-acts button{font-size:12px;padding:4px 12px;border-radius:6px;border:1px solid var(--bd);cursor:pointer;background:var(--s2)}
.pac-acts .pac-ok{background:var(--ac);color:#fff;border-color:var(--ac);font-weight:600}
.pac-acts .pac-ok:hover{filter:brightness(1.08)}
.pbs-badge{font-size:11px;margin-right:2px;opacity:.85}
.wp-off{font-size:11px;margin-right:2px;color:#b45309}
.rec-list{display:flex;flex-direction:column;gap:1px;max-height:210px;overflow:auto;border:1px solid var(--bd);border-radius:6px;padding:4px 8px;background:#fff}
.rec-chk{display:flex;align-items:center;justify-content:flex-start;gap:8px;font-size:12.5px;cursor:pointer;white-space:nowrap;padding:2px 6px;border-radius:5px;width:100%}
.rec-chk span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:left}
.rec-chk input{flex:none;margin:0}
.rec-chk:hover{background:var(--s2)}
.rec-chk[hidden]{display:none}   /* display:flex vence o [hidden] da UA — sem isto o 🔍 não esconde nada aqui */
.rec-grp{flex:0 0 auto;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ac);padding:5px 6px 2px;border-bottom:1px solid var(--bd);margin-top:3px;position:sticky;top:0;background:#fff;z-index:1}
.ed-recside{align-self:stretch}
.rec-tag{display:inline-block;font-size:11px;background:var(--s2);color:var(--tx);border:1px solid var(--bd);border-radius:10px;padding:1px 8px;margin:1px 2px 1px 0;white-space:nowrap}
.rec-grp-row td{background:var(--s2);font-weight:700;color:var(--ac);font-size:12px;padding:5px 10px}
.rec-dup td{background:#fff6e6}
.rec-dupb{font-size:11px;font-weight:700;color:#9a6b00;background:#fff0cc;border-radius:8px;padding:0 6px}
/* recurso NÃO localizado no cadastro-mestre (ou ⚠ pendente lá) — marca nas telas, sem bloquear nada */
.rec-semcad{color:#b45309;border-bottom:1px dotted #d97706;cursor:help}
tr.rm-pend>td{background:#fffbeb}
.rm-pendtag{font-size:11px;font-weight:700;color:#9a6b00;background:#fff0cc;border:1px solid #fcd34d;border-radius:8px;padding:0 6px;white-space:nowrap}
.rm-conf{color:#15803d;font-weight:700}
.ed-midrow{display:flex;gap:10px}
.ed-body .ed-midrow{align-items:stretch}
.ed-midleft{flex:1 1 500px;display:flex;flex-direction:column;min-width:0}
.ed-recside{flex:1 1 480px;min-width:0;display:flex;flex-direction:column}
.ed-recside .rec-list{flex:1;max-height:none;min-height:0;overflow:auto}
/* Recursos por Empresa/Papel = COLUNAS JORNAL (CSS columns): os grupos fluem de cima p/ baixo e preenchem
   os vãos que o flex row-wrap deixava (coluna curta ao lado de coluna alta). break-inside mantém cada grupo inteiro. */
.rec-list.rec-cols{display:block;column-width:150px;column-gap:16px;flex-flow:unset}
.rec-list.rec-cols .rec-col{display:block;break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;margin:0 0 8px}
.rec-col{min-width:128px;display:flex;flex-direction:column;gap:1px}
.rec-list.rec-cols .rec-grp{position:static;margin:0 0 2px;padding:2px 4px 3px;border-bottom:1px solid var(--bd)}
.proj-crono{margin-top:14px;border-top:1px solid var(--bd);padding-top:10px}
.proj-crono h4{margin:0 0 8px;font-size:13px;color:var(--tx)}
.pc-track{position:relative;height:26px;background:var(--s2);border-radius:6px;margin:20px 0 4px}
.pc-band{position:absolute;top:0;bottom:0;background:rgba(31,157,87,.14)}
.pc-mark{position:absolute;top:-15px;transform:translateX(-50%);font-size:10px;font-weight:700;text-align:center;white-space:nowrap}
.pc-mark .pc-lab{display:block}
.pc-mark .pc-pin{display:block;width:2px;height:26px;margin:1px auto 0}
.pc-mark.green{color:#1f9d57}.pc-mark.green .pc-pin{background:#1f9d57}
.pc-mark.gray{color:var(--tx2)}.pc-mark.gray .pc-pin{background:var(--tx2)}
.pc-mark.orange{color:#c77700}.pc-mark.orange .pc-pin{background:#c77700}
.pc-mark.red{color:#d23b4e}.pc-mark.red .pc-pin{background:#d23b4e}
.pc-alvo{position:absolute;top:-5px;bottom:-5px;transform:translateX(-50%);font-size:15px;line-height:36px}
.pc-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--tx2)}
.cc-row{display:flex;align-items:center;gap:8px;margin:5px 0}
.cc-badge{font-size:10px;font-weight:700;border-radius:8px;padding:1px 7px;white-space:nowrap;flex:none}
.cc-badge.crash{background:#fdeef0;color:#b3243a}.cc-badge.fast{background:#fff6e6;color:#9a6b00}
.cc-nm{flex:0 0 150px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cc-track{flex:1;display:flex;align-items:center;height:16px}
.cc-bar{height:16px;border-radius:3px}
.cc-bar.crash{background:#9aa6bd}.cc-bar.fast{background:#c77700}
.cc-cut{height:16px;background:repeating-linear-gradient(45deg,#f3c6cd,#f3c6cd 4px,#fff 4px,#fff 8px);border:1px solid #d23b4e;border-radius:0 3px 3px 0;font-size:9px;color:#b3243a;text-align:center;line-height:16px;min-width:26px}
.cc-ov{height:16px;background:rgba(199,119,0,.25);border:1px dashed #c77700;font-size:9px;color:#9a6b00;text-align:center;line-height:14px;min-width:26px}
.rec-agr select{font-size:13px;padding:2px 6px;border:1px solid var(--bd);border-radius:6px;background:#fff}
.rec-mode{font:inherit;font-size:11px;margin-left:6px;border:1px solid var(--bd);border-radius:5px;padding:1px 4px;color:var(--tx)}
/* Campo de data customizado dd/mm[/aa] + calendário (independente do locale do SO) */
.datebr{display:inline-flex;align-items:center;gap:1px;border:1px solid var(--bd);border-radius:6px;background:#fff;padding:0 2px;vertical-align:middle}
.datebr:focus-within{border-color:var(--ac);box-shadow:0 0 0 2px rgba(47,111,237,.12)}
.datebr-txt{border:0;width:62px;padding:3px 4px;font:inherit;background:transparent;color:var(--tx)}
.datebr-txt:focus{outline:none}
.datebr-cal{border:0;background:transparent;cursor:pointer;font-size:12px;line-height:1;padding:2px}
.datebr-native{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;border:0;padding:0;margin:0;z-index:0}
.datebr-ro{background:#f4f6fa}   /* caixinha igual, mas BLOQUEADA (ex.: "Hoje" no dropdown 📅 Datas) */
.datebr-ro .datebr-txt{color:var(--tx2);cursor:default}
.datebr-ro .datebr-cal{cursor:default;opacity:.45}
/* Barra única do Cronograma: busca+filtros e visualização (zoom/nav/Crítico/Tela/marcos) numa só linha que quebra */
.barra-acoes{display:flex;flex-wrap:nowrap;align-items:center;gap:4px 8px;background:var(--sf);border-bottom:1px solid var(--bd);padding:5px 8px;overflow-x:auto}
/* Barra de ações UNIFICADA no painel (bloco "acoes"): sem barra própria — vira um bloco como os demais */
#barraBot .bloco[data-bloco="acoes"]{border-color:#cdd7ea;background:#f7f9fd}
#barraBot .bloco[data-bloco="acoes"] .barra-acoes{border-bottom:0;background:transparent;padding:0;gap:3px 6px}
/* Grupos de ação na toolbar: Criação · Programação · Atualização · Exibição */
.tb-grp{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:3px 5px;padding:4px 8px 4px 9px;border:1px solid var(--bd);border-radius:9px;background:#fff;flex-shrink:0}
.tb-sel{font:inherit;font-size:11.5px;padding:2px 6px;border:1px solid var(--bd);border-radius:7px;background:#fff;color:var(--tx);cursor:pointer}
.tb-sel:hover{border-color:var(--ac)}
.tb-help{flex-shrink:0;width:18px;height:18px;border-radius:50%;border:1px solid var(--bd);background:#fff;color:var(--ac);font-size:11px;font-weight:700;cursor:pointer;padding:0;line-height:1}
.tb-help:hover{border-color:var(--ac);background:var(--s2)}
/* Ajuda VISUAL do Reprogramar (modal com mini-Gantts antes→depois) */
.rhelp-ov{position:fixed;inset:0;background:rgba(20,30,60,.4);z-index:400;display:flex;align-items:center;justify-content:center;padding:20px}
.rhelp-card{background:var(--sf);border-radius:12px;box-shadow:0 18px 55px rgba(0,0,0,.35);width:min(560px,96vw);max-height:90vh;display:flex;flex-direction:column;overflow:hidden}
/* 💤 Sleep — modal de parametrização */
.sleep-modal-ov{position:fixed;inset:0;background:rgba(20,30,60,.35);z-index:400;display:flex;align-items:center;justify-content:center;padding:20px}
.sleep-modal-body{background:var(--sf);border-radius:12px;box-shadow:0 18px 55px rgba(0,0,0,.25);width:min(420px,95vw);padding:20px;max-height:85vh;overflow:auto}
.sleep-modal-body h3{margin:0 0 12px;font-size:14.5px;font-weight:600;color:var(--tx)}
.sleep-modal-body p{margin:0 0 10px;font-size:13px;color:var(--tx2);line-height:1.45}
.sleep-modal-body p:last-of-type{margin-bottom:16px}
.sleep-modal-btns{display:flex;gap:8px;justify-content:flex-end}
.sleep-btn-yes,.sleep-btn-no{padding:7px 16px;border-radius:6px;font-size:12.5px;font-weight:600;border:none;cursor:pointer;transition:all .15s}
.sleep-btn-yes{background:#10b981;color:#fff}.sleep-btn-yes:hover{background:#059669;box-shadow:0 2px 8px rgba(16,185,129,.3)}
.sleep-btn-no{background:var(--s2);color:var(--tx);border:1px solid var(--bd)}.sleep-btn-no:hover{background:var(--bd);border-color:var(--bd)}
.rhelp-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:var(--s2);border-bottom:1px solid var(--bd);font-size:14px}
.rhelp-x{background:none;border:none;font-size:16px;cursor:pointer;color:var(--tx2);padding:0 4px}
.rhelp-x:hover{color:var(--er)}
.rhelp-body{padding:12px 16px;overflow:auto}
.rh-note{font-size:12px;color:#8a5a00;margin:0 0 12px;background:#fff7e6;border:1px solid #ffe0a3;border-radius:6px;padding:5px 8px}
.rh-mode{margin:0 0 14px;padding-bottom:12px;border-bottom:1px dashed var(--bd)}
.rh-mode:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
.rh-mode h4{margin:0 0 3px;font-size:13px}
.rh-mode>p{margin:0 0 8px;font-size:12px;color:var(--tx2);line-height:1.4}
.rh-pair{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rh-mini{flex:1;min-width:210px;background:#fafbfd;border:1px solid var(--bd);border-radius:7px;padding:6px 8px;position:relative}
.rh-cap{font-size:10px;color:var(--tx2);margin-bottom:3px;text-transform:uppercase;letter-spacing:.02em}
.rh-arw{font-size:18px;color:var(--ac);flex:none}
.rh-row{display:flex;align-items:center;gap:6px;margin:2px 0}
.rh-rl{font-size:10.5px;color:var(--tx2);width:42px;flex:none;text-align:right;white-space:nowrap}
.rh-trk{position:relative;height:13px;flex:1;min-width:190px}
.rh-bar{position:absolute;top:1px;height:11px;border-radius:3px}
.rh-b{background:#9db8e8}.rh-g{background:#3fae6b}.rh-o{background:#e6a93a}.rh-r{background:#e0566a}
.rh-stat{padding-bottom:16px}
.rh-hoje{position:absolute;top:6px;bottom:22px;width:0;border-left:2px dashed #d23b4e;z-index:1}
.rh-caphoje{color:#d23b4e;margin-left:156px;font-size:10px;text-transform:none;letter-spacing:0;margin-top:3px;margin-bottom:0}
.rh-leg{font-size:11px;color:var(--tx2);margin:8px 0 0}
.rh-sw{display:inline-block;width:12px;height:9px;border-radius:2px;vertical-align:middle;margin-right:2px}
.tb-gerir{flex-shrink:0;font:inherit;font-size:11.5px;font-weight:600;padding:5px 11px;border:1px solid #c9b8e8;border-radius:9px;background:#f6f1fc;color:#6b3fa0;cursor:pointer}
.tb-gerir:hover{border-color:#7c3aed}
.tb-gl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--tx2);margin-right:3px;white-space:nowrap;align-self:center}
.tb-gl-row{align-self:center;margin-right:6px;color:var(--ac)}
.tb-criar{border-color:#bfe0cf;background:#f6fbf8}.tb-criar .tb-gl{color:#1f7a43}
/* 🗓 Prog. = caixa DESTACADA das vizinhas (pedido 19/07/2026): respiro extra dos dois lados + divisores
   finos. `margin` (não `gap`, que é da .barra-acoes e vale p/ todos) e borda 2px p/ a caixa se ler como
   um bloco à parte, sem mudar a altura da linha. */
.tb-prog{border-color:#c7d3f5;background:#f7f9ff;border-width:2px;margin:0 14px;position:relative}.tb-prog .tb-gl{color:#2f5fd0}
.tb-prog::before,.tb-prog::after{content:"";position:absolute;top:4px;bottom:4px;width:1px;background:var(--bd)}
.tb-prog::before{left:-8px}.tb-prog::after{right:-8px}
.tb-atu{border-color:#f0d9b5;background:#fffdf6}.tb-atu .tb-gl{color:#9a6a12}
/* Botões de cada macro-grupo herdam a COR do grupo (retângulos uniformes; o ? redondo e o dropdown ficam de fora) */
.barra-acoes .tb-grp button:not(.tb-help){border-width:1px;border-style:solid;border-radius:6px;font-weight:600;transition:background .12s,border-color .12s,color .12s}
.barra-acoes .tb-grp button.tb-ic{padding:3px 6px;font-size:14px;line-height:1;min-width:28px;text-align:center}   /* botões só-ícone (texto vai p/ o tooltip) */
.barra-acoes .tb-grp button:not(.tb-help):disabled{opacity:.45;cursor:default}
.tb-criar button:not(.tb-help){background:#ecf7f1;border-color:#a9d4bb;color:#1f7a43}
.tb-criar button:not(.tb-help):hover:not(:disabled){background:#1f7a43;border-color:#1f7a43;color:#fff}
.tb-prog button:not(.tb-help){background:#ebf0fc;border-color:#b3c4ef;color:#2f5fd0}
.tb-prog button:not(.tb-help):hover:not(:disabled){background:#2f5fd0;border-color:#2f5fd0;color:#fff}
.tb-atu button:not(.tb-help){background:#fbf2dd;border-color:#e7c894;color:#9a6a12}
.tb-atu button:not(.tb-help):hover:not(:disabled){background:#9a6a12;border-color:#9a6a12;color:#fff}
/* dropdown Reprogramar + ajuda ? acompanham o azul de Programação */
.tb-prog .tb-sel{border-color:#b3c4ef;color:#2f5fd0}
.tb-prog .tb-sel:hover{border-color:#2f5fd0}
.tb-prog .tb-help{border-color:#b3c4ef;color:#2f5fd0}
.tb-prog .tb-help:hover{background:#2f5fd0;border-color:#2f5fd0;color:#fff}
/* Blocos coloridos da barra de baixo (Filtros · Visualização · Colunas) */
.barra-cron .bloco{border:1px solid var(--bd);border-radius:9px;padding:3px 8px}
.barra-cron .bloco[data-bloco="filtros"]{border-color:#d7c4ee;background:#faf7ff;flex-basis:100%}   /* Filtros na SUA própria linha (não mistura com os demais blocos) */
.barra-cron .bloco[data-bloco="pct"]{border-color:#f0d9b5;background:#fffdf6;margin-left:auto}       /* % Conclusão — no espaço vazio entre Níveis e Visualização (a auto-margem divide o vão com viz, centralizando) */
.barra-cron .bloco[data-bloco="pct"] .tb-gl-row{color:#9a6a12}
.barra-cron .bloco[data-bloco="pct"] .pct-grp{display:inline-flex;gap:3px;align-items:center}
.barra-cron .bloco[data-bloco="viz"]{border-color:#bfe3e8;background:#f4fcfd;margin-left:auto}      /* Visualização encostada à direita (3ª linha) */
.barra-cron .bloco[data-bloco="cols"]{border-color:#e8d6bf;background:#fffaf3}
.barra-cron .bloco[data-bloco="vista"]{border-color:#bfe3e8;background:#f4fcfd}   /* dd/mm · 🎨 · Colunas — bloco próprio, sobe p/ a linha de cima */
.barra-cron .bloco[data-bloco="ferr"]{border-color:#cdd2e6;background:#f7f8fd}   /* Crítico · Corrente · Tela · Enc.Filtro */
.barra-cron .bloco[data-bloco="edit"]{border-color:#cbe3cf;background:#f3fbf5}   /* Estrutura (🔗 ⇤⇥↑↓✂) + Desfazer/Refazer */
.barra-cron .bloco[data-bloco="marcos"]{border-color:#e6d9c0;background:#fdfbf4}   /* ◆ camadas de marcos */
.barra-cron .bloco[data-bloco="xfer"]{border-color:#cdd7ea;background:#f7f9fd}   /* 📋·📥·⬇ área de transferência — entre Filtros e Colunas */
.barra-cron .bloco[data-bloco="datas"]{border-color:#d7c4ee;background:#faf7ff}   /* 📅 Datas — caixinha própria, à esquerda das ações */
.barra-cron .bloco[data-bloco="vis"]{border-color:#e3c9e8;background:#fdf7fe}   /* 💾 Visão do Gantt — select + salvar num bloco só, na linha das ações */
.barra-cron .bloco[data-bloco="vis"] .visao-save input{max-width:104px}
.barra-cron .bloco[data-bloco="vis"] .visao-ctrl select{max-width:110px}
.tb-gl-row{color:#7c3aed}
/* Legenda na própria linha, abaixo da toolbar (flex:0 0 auto p/ NÃO esticar a altura e comer a grade) */
.g-leg.g-leg-row{flex:0 0 auto;margin-top:0;padding:3px 10px;border-top:1px solid var(--bd);background:var(--sf)}
.barra-cron{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px 16px;background:var(--sf);border-bottom:1px solid var(--bd);padding:5px 8px;position:sticky;top:0;z-index:20}
.barra-cron .bloco{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.barra-cron .bloco>.filtros-bar,.barra-cron .bloco>.toolbar,.barra-cron .bloco>.grade-cols{display:contents}
.bloco-grip{cursor:grab;color:var(--tx2);font-size:13px;padding:0 3px;user-select:none;font-family:"Segoe UI Symbol",system-ui,sans-serif}
.bloco-grip:active{cursor:grabbing}
.barra-cron .bloco.drop-target{outline:2px dashed var(--ac);outline-offset:3px;border-radius:6px}
.painel-lock{position:absolute;top:4px;right:8px;z-index:30;background:var(--s2);border:1px solid var(--bd);border-radius:6px;padding:2px 7px;font-size:12px;line-height:1;cursor:pointer}   /* 🔒 trava o painel inteiro (canto sup. direito, sobre o espaço vazio da linha de Filtros) */
.painel-lock:hover{border-color:var(--ac)}
.painel-lock.on{background:var(--wa);border-color:var(--wa)}
#barraBot.painel-locked .bloco-grip{opacity:.25;pointer-events:none;cursor:default}   /* travado: grips inertes */
/* Barra inferior em LINHAS explícitas (initBlocos): empilha linhas; mover blocos por ▲▼ ou arrastando o ⠿ */
#barraBot.barra-linhas{flex-direction:column;align-items:stretch;flex-wrap:nowrap}
#barraBot.barra-linhas .barra-linha{display:flex;flex-wrap:wrap;align-items:center;gap:3px 10px;width:100%;min-height:24px}
#barraBot.barra-linhas .barra-linha.drop-target{outline:2px dashed var(--ac);outline-offset:2px;border-radius:8px;background:rgba(2,132,199,.05)}
#barraBot.barra-linhas .barra-linha-nova{display:none;justify-content:center;border:1px dashed var(--bd);border-radius:8px;color:var(--tx2);font-size:11px;opacity:.6;padding:1px 0}   /* escondida em repouso (sem espaço em branco) */
#barraBot.barra-linhas.arrastando .barra-linha-nova{display:flex}   /* aparece só durante o arraste de um bloco */
#barraBot.barra-linhas .barra-linha-nova:hover{opacity:1;border-color:var(--ac)}
#barraBot.barra-linhas .barra-linha-nova .bln-nova-lbl{padding:1px 10px}
#barraBot.barra-linhas .bloco[data-bloco="filtros"]{flex-basis:auto}   /* dentro de linha explícita: não força largura total */
#barraBot.barra-linhas .bloco[data-bloco="pct"],#barraBot.barra-linhas .bloco[data-bloco="viz"]{margin-left:0}   /* linhas previsíveis (sem empurrar à direita) */
.bloco-ln{display:inline-flex;flex-direction:column;justify-content:center;margin:0 1px;vertical-align:middle}
.bloco-ln button{border:0;background:none;cursor:pointer;font-size:9px;line-height:.9;color:var(--tx2);padding:0 2px}
.bloco-ln button:hover{color:var(--ac)}
#barraBot.painel-locked .bloco-ln,#barraBot.painel-locked .barra-linha-nova{display:none}   /* travado: esconde controles de linha */
/* compactação radical da barra do Cronograma */
.barra-cron{gap:3px 7px;padding:3px 6px}
.barra-cron .bloco{gap:2px 3px}
.barra-cron .f-busca{max-width:150px;flex:1 1 110px;padding:3px 7px;font-size:11.5px}
.barra-cron .fdrop-btn{min-width:0;padding:3px 6px;font-size:11.5px;gap:3px}
.barra-cron .fcar{margin:0}
.barra-cron .toolbar button,.barra-cron .gc-chip,.barra-cron .niv-dot,.barra-cron .mkt,.barra-cron .zbtn,.barra-cron .btn{padding:2px 6px;font-size:11.5px}
.barra-cron #fmtData,.barra-cron #ragToggle{font-size:14px;padding:1px 6px;line-height:1.1}   /* ícones 📅 · 🎨 um pouco maiores */
.barra-cron .sep,.barra-cron .toolbar .sep{margin:0 1px}
.barra-acoes{gap:3px 5px;padding:3px 6px}
.barra-acoes button{padding:3px 7px;font-size:11.5px}
.barra-cron .tb-prog{margin:0 9px}   /* compacta: gap da barra cai p/ 5px — 14px de respiro roubaria espaço demais */
.barra-cron .tb-prog::before{left:-5px}.barra-cron .tb-prog::after{right:-5px}
.qadd{display:none;align-items:center;gap:3px}   /* adição rápida oculta (use o "+" da linha ou digite na grade); reverter = inline-flex */
.qadd .qa-nome{width:150px;padding:3px 6px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:11.5px}
.qadd .qa-dur{width:44px;padding:3px 4px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:11.5px}
.qadd .qa-sel{max-width:120px;padding:2px 4px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:11px;color:var(--tx)}
.qadd #qa_add{padding:3px 9px}
.barra-cron .niv-dot{padding:2px 0;min-width:19px;text-align:center}
.barra-cron .mkt{padding:2px 4px;min-width:0}
/* Dropdown "📅 Datas" (3 datas + ver no Gantt) */
.datas-drop .dt-menu{min-width:260px;padding:8px}
.datas-drop.open .dt-menu{display:flex;flex-direction:column;gap:6px}
.datas-drop .dt-eq{margin-top:2px;border-top:1px solid var(--bd);padding-top:6px}
.datas-drop .dt-eq .btn{width:100%}
.tab-ajuda,.tab-ico{font-size:15px;line-height:1;padding:4px 8px}
.ev-cmp{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
#evDiff table{margin-bottom:12px}
.ctx-menu{position:fixed;z-index:300;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 10px 30px rgba(20,30,60,.25);padding:4px;display:flex;flex-direction:column;min-width:210px}
.ctx-menu button{background:none;border:none;text-align:left;padding:7px 12px;border-radius:6px;font:inherit;font-size:12.5px;color:var(--tx);cursor:pointer}
.ctx-menu button:hover:not(:disabled){background:var(--s2)}
.ctx-menu button:disabled{opacity:.4;cursor:default}
/* Prévia do hover: o que o item vai copiar/recortar/colar (filha do menu, que já é position:fixed) */
.ctx-prev{position:absolute;left:calc(100% + 8px);z-index:301;background:var(--sf,#fff);border:1px solid var(--bd,#cbd5e1);border-radius:8px;box-shadow:0 10px 30px rgba(20,30,60,.25);padding:8px 11px;min-width:200px;max-width:330px;max-height:300px;overflow-x:hidden;overflow-y:auto;font-size:11.5px;line-height:1.55;color:var(--tx,#1e293b);pointer-events:none}
.ctx-prev.esq{left:auto;right:calc(100% + 8px)}
.ctx-prev b{display:block;margin-bottom:4px;font-size:11.5px}
.ctx-prevn{color:#64748b;margin-bottom:4px}   /* a frase do "o que não vem junto" QUEBRA (é texto corrido) */
/* Já cada linha da lista é 1 atividade e NUNCA quebra: corta pela largura real com … — nome longo quebrando em
   2 linhas empurrava o "+N linha(s)" p/ fora do cartão, e o cartão é pointer-events:none (não dá p/ rolar) */
.ctx-prevl div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;color:#475569}
.ctx-prevm{color:#94a3b8;font-style:italic;padding-top:2px}
/* ⇅ Reordenar visões do Gantt (dropdown) */
.vord-drop{position:relative;display:inline-block}
.vord-menu{display:none;position:absolute;z-index:40;top:calc(100% + 4px);left:0;min-width:240px;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 8px 24px rgba(20,30,60,.16);padding:6px}
.vord-drop.open .vord-menu{display:block}
.vord-row{display:flex;align-items:center;gap:8px;padding:3px 4px;border-bottom:1px solid var(--s2)}
.vord-row .vord-pos{color:var(--tx2);font-variant-numeric:tabular-nums;width:18px}
.vord-row .vord-nm{flex:1;font-size:12px}
.vord-row .vord-mv button{border:1px solid var(--bd);background:var(--sf);border-radius:5px;cursor:pointer;width:22px;height:20px;font-size:10px;padding:0}
.vord-row .vord-mv button:disabled{opacity:.35;cursor:default}
.vord-foot{display:flex;align-items:center;gap:6px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap}
.vord-foot .muted{margin-right:auto;font-size:11px}
.cols-drop{position:relative;display:inline-block}
.cols-menu{display:none;position:absolute;z-index:40;top:calc(100% + 4px);left:0;min-width:440px;max-height:92vh;overflow:auto;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 8px 24px rgba(20,30,60,.16);padding:6px}
.cols-drop.open .cols-menu{display:block}
/* modo tela cheia: 2 painéis — CATÁLOGO (por assunto) à esquerda · SELECIONADAS (ordem da grade) à direita */
.cols-menu.cols-full{position:fixed;inset:2vh 2vw;top:2vh;left:2vw;right:2vw;bottom:2vh;width:auto;max-width:none;min-width:0;max-height:none;z-index:1000;display:flex!important;flex-direction:column;padding:10px 14px}
.cols-menu.cols-full .cols-split{flex:1;min-height:0;display:grid;grid-template-columns:1.35fr 1fr;gap:16px}
.cols-menu.cols-full .cols-cat,.cols-menu.cols-full .cols-sel{min-height:0;display:flex;flex-direction:column;border:1px solid var(--bd);border-radius:8px;background:var(--s2,#f8fafc);padding:8px}
.cols-pane-h{font-size:12px;font-weight:800;color:#334155;margin-bottom:6px;display:flex;align-items:center;gap:8px;flex:none}
.cols-menu.cols-full .cols-cat-list{flex:1;min-height:0;overflow:auto;column-width:360px;column-gap:18px;align-content:start}
.cols-menu.cols-full .cols-cat-list .cols-sec{break-inside:avoid;-webkit-column-break-inside:avoid;display:inline-block;width:100%;margin-bottom:8px;vertical-align:top}
.cols-menu.cols-full .cols-sel-list{flex:1;min-height:0;overflow:auto}
.cols-catrow{padding:1px 2px}
.cols-catrow label{display:flex;align-items:center;gap:7px;cursor:pointer;font-size:12px;white-space:nowrap;margin:0}
.cols-catrow .cols-vis{flex:none;margin:0;cursor:pointer}
.cols-selrow{background:#fff;border:1px solid var(--bd);border-radius:6px;margin-bottom:3px;padding:2px 4px}
.cols-selname{flex:1;min-width:0;font-size:12px;color:var(--tx,#0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cols-rm{border:1px solid var(--bd);background:#fff;border-radius:5px;cursor:pointer;font-size:11px;line-height:1;padding:2px 6px;color:#d23b4e;margin-left:2px}
.cols-rm:hover{border-color:#d23b4e;background:#fef2f2}
.cols-sec-h{font-size:10.5px;font-weight:800;color:var(--ac,#0d9488);text-transform:uppercase;letter-spacing:.03em;padding:3px 2px;border-bottom:1px solid var(--bd);margin-bottom:3px}
.cols-full-back{position:fixed;inset:0;z-index:999;background:rgba(15,23,42,.28)}
.cols-row{display:flex;align-items:center;gap:6px;padding:0 2px}
.cols-menu .cols-row .cols-std,.cols-menu .cols-row .cols-rename{padding:1px 7px;font-size:11.5px}
.cols-menu .cols-row .cols-mvq{padding:1px 6px;font-size:11px;line-height:1.1}
.cols-row label{flex:1;display:flex;align-items:center;gap:6px;margin:0;cursor:pointer;white-space:nowrap;font-size:12.5px}
.cols-row .cols-vis{flex:none;margin:0;cursor:pointer}
.cols-row .cols-std{flex:1;min-width:0;font-size:12px;padding:3px 7px;border:1px solid var(--bd);border-radius:5px;background:var(--s2,#eef2f7);color:var(--tx2,#64748b);cursor:not-allowed}   /* nome PADRÃO travado (referência) */
.cols-row .cols-rename{flex:1;min-width:0;font-size:12px;padding:3px 7px;border:1px solid var(--bd);border-radius:5px;background:#fff;color:var(--tx,#0f172a)}
.cols-head{font-size:10px;font-weight:700;color:var(--tx2,#64748b);text-transform:uppercase;letter-spacing:.02em;border-bottom:1px solid var(--bd);padding-bottom:3px;margin-bottom:3px;position:sticky;top:-6px;background:var(--sf);z-index:1}
.cols-head .ch-ck{flex:none;width:16px}
.cols-head .ch-l{flex:1;min-width:0}
.cols-row .cols-rename:focus{outline:none;border-color:var(--ac,#0d9488)}
.cols-row .cols-rename::placeholder{color:#94a3b8}
.cols-grip{flex:none;width:14px;text-align:center;color:var(--tx2,#94a3b8);cursor:grab;font-size:13px;line-height:1;user-select:none}
.cols-grip-off{cursor:default;visibility:hidden}
.cols-drag.cols-dragging{opacity:.45}
.cols-drag{cursor:grab}
.cols-drag:active{cursor:grabbing}
.cols-drag:hover{background:var(--s2,#eef2f7);border-radius:5px}
.cols-drag:hover .cols-grip{color:var(--ac,#0d9488)}
.cols-drop-alvo{box-shadow:inset 0 2px 0 var(--ac,#0d9488)}
.cols-head .ch-ck .cols-all{margin:0;cursor:pointer}
.cols-allbtns{display:inline-flex;gap:4px;margin-left:8px;vertical-align:middle}
.cols-allbtns button{border:1px solid var(--bd);background:#fff;border-radius:5px;cursor:pointer;font-size:10px;line-height:1;padding:2px 6px;color:var(--tx2);font-weight:600;text-transform:none;letter-spacing:0}
.cols-allbtns button:hover{border-color:var(--ac);color:var(--ac)}
.cols-drop-alvo{box-shadow:inset 0 2px 0 var(--ac,#0d9488)}
.cols-mv{display:inline-flex;gap:2px;flex:none;min-width:46px;justify-content:flex-end}
.cols-mvq{background:var(--sf);border:1px solid var(--bd);border-radius:5px;font-size:10px;line-height:1;padding:2px 5px;cursor:pointer;color:var(--tx2)}
.cols-mvq:hover:not([disabled]){border-color:var(--ac);color:var(--ac)}
.cols-mvq[disabled]{opacity:.3;cursor:default}
.datas-drop .dt-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px}
.datas-drop .dt-lbl{font-size:12px;color:var(--tx)}
.datas-drop .dt-req{color:var(--er);font-weight:700}
.datas-drop .dt-gv{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--tx2);white-space:nowrap}
.datas-drop .dt-row input[type=date]{font:inherit;padding:3px 6px;border:1px solid var(--bd);border-radius:6px;background:#fff;color:var(--tx)}
.dl-chips{display:inline-flex;align-items:center;gap:4px}
.dl-chip{display:inline-flex;align-items:center;gap:5px}
.dl-chip .dl-n{font-size:10px;font-weight:700;color:var(--tx2);background:var(--s2);border-radius:50%;width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.dl-chip .dl-sw{width:10px;height:10px;border-radius:2px;display:inline-block;flex:0 0 auto}
.dl-chip.on{border-color:var(--ac);background:#eef2ff;color:var(--tx);font-weight:600}
.dl-chip.on .dl-n{background:var(--ac);color:#fff}
.dl-chips-box{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--bd);border-radius:999px;padding:3px 10px;background:var(--sf);margin-left:16px;box-shadow:0 1px 3px rgba(20,30,60,.10)}
.dl-chips-box::before{content:"";align-self:stretch;width:1px;background:var(--bd);margin:-3px 7px -3px -4px}   /* divisória → caixa totalmente separada do 📅 Datas/🔢 */
.dl-chips-line{flex-basis:100%;width:100%;display:flex;align-items:center;gap:7px;border:1px dashed var(--bd);border-radius:8px;padding:3px 9px;background:var(--sf)}   /* os 2 chips de data numa LINHA PRÓPRIA do toolbar */
.dl-line-lbl{font-size:11px;font-weight:600;color:var(--tx2)}
.dl-line-mv{display:inline-flex;flex-direction:column;line-height:.8;gap:1px}
.dl-mv{border:1px solid var(--bd);background:var(--s2);border-radius:4px;cursor:pointer;font-size:8px;line-height:1;color:var(--tx2);padding:1px 5px}
.dl-mv:hover{border-color:var(--ac);color:var(--ac)}
.dl-chips-box .dl-chip{padding:2px 6px}
.dl-box{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid #bcd0ee;border-radius:9px;background:#eef4fb}   /* caixa própria dos 3: 1 Base · 2 Prog/Real · Limpar (azul, destaca do fundo lilás do bloco Filtros) */
.dl-box .dl-limpar{margin-left:2px}
.g-datelbl{font-family:inherit;pointer-events:none;paint-order:stroke;stroke:rgba(255,255,255,.88);stroke-width:2.5px;stroke-linejoin:round}   /* halo branco: seta sem corredor p/ contornar passa POR TRÁS e o número segue legível */
.g-durlbl{pointer-events:auto}   /* ⏱ duração: fica FORA da barra (à direita do rótulo de fim) → pode receber o mouse p/ o tooltip sem roubar o arraste */
.dl-chip-dur{font-size:12px;line-height:1}   /* 3º chip da caixa 📅 Datas: ⏱ (rótulo próprio, não é par início/fim como os 2 primeiros) */
.fat-mark{fill:var(--fat)}
.g-row:hover{fill:#f5f8ff;opacity:.5}

/* FORMS / CARDS */
.card{background:var(--sf);border:1px solid var(--bd);border-radius:10px;padding:16px;
  margin-bottom:16px;max-width:1000px;box-shadow:0 1px 3px rgba(20,30,60,.05)}
/* ID do quadro (cinza bem claro, canto inferior) — numerado por tela */
.view.active{counter-reset:quadro}
.view.active .card{counter-increment:quadro;position:relative}
.view.active .card::after{content:"Q" counter(quadro);position:absolute;bottom:5px;right:9px;font-size:9px;font-weight:600;color:#cbd5e6;letter-spacing:.03em;pointer-events:none}
.card h2{margin:0 0 12px;font-size:15px}
.card h3{margin:14px 0 8px;font-size:13px;color:var(--tx2)}
#view-upload{padding:20px}
.hbar{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--s2);min-width:80px}
.hbar span{display:block;height:100%}
.list.hier td{padding:5px 8px;font-size:12.5px;vertical-align:middle}
.caret{cursor:pointer;display:inline-block;width:16px;color:var(--ac);user-select:none}
.caret-sp{display:inline-block;width:16px}
.list.raci td{padding:4px 6px}
.raci-in{width:90px;border:1px solid var(--bd);border-radius:4px;padding:4px 6px;font-size:12px;background:#fff;color:var(--tx)}
.raci-in:focus{outline:none;border-color:var(--ac)}
.raci-sel{min-width:110px;border:1px solid var(--bd);border-radius:4px;padding:4px 6px;font-size:12px;background:#fff;color:var(--tx)}
.raci-sel:focus{outline:none;border-color:var(--ac)}
.list.reg td{padding:4px 6px}
.reg-in{width:100%;min-width:90px;border:1px solid var(--bd);border-radius:4px;padding:5px 7px;font-size:12px;background:#fff;color:var(--tx)}
.reg-in:focus{outline:none;border-color:var(--ac)}
/* RIDAC + Backlog */
.ridac-kpi{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 12px}
.ridac-kpi .rk{background:var(--s2);border:1px solid var(--bd);border-radius:14px;padding:4px 12px;font-size:12px;color:var(--tx2)}
.ridac-kpi .rk b{color:var(--tx);font-size:14px;margin-right:3px}
.ridac-kpi .rk.ok b{color:var(--ok)} .ridac-kpi .rk.wa b{color:var(--wa)} .ridac-kpi .rk.er b{color:var(--er)}
.ridac-wrap{overflow-x:auto}
.list.ridac .reg-in{min-width:0}
/* Descrição/Ação: a ALTURA é definida pelo JS (`encaixarLinha` iguala as caixas da MESMA linha); aqui só o piso,
   o teto do modo auto e a barra de rolagem FINA — a barra padrão do Windows desenha ▲▼ e cada caixa ficava
   com um "aspecto" diferente da vizinha, justamente o que se quer alinhar. */
.list.ridac textarea.reg-in{resize:none;overflow-y:auto;scrollbar-width:thin;line-height:1.25;white-space:pre-wrap;display:block;field-sizing:content;min-height:20px;max-height:160px;vertical-align:top}
.list.ridac .reg-in.gut{min-width:46px;width:46px}
/* Matchcode (Group/Estratégia): célula clicável que mostra o valor quebrando até 2 linhas + popover de busca (lupa) com categorias indentadas */
.list.ridac .rid-mc{display:flex;align-items:flex-start;gap:4px;cursor:pointer;border:1px solid transparent;border-radius:4px;padding:1px 6px;min-height:20px}
.list.ridac .rid-mc:hover{border-color:var(--bd);background:#fff}
.list.ridac .rid-mc-val{flex:1;white-space:normal;word-break:break-word;line-height:1.25;max-height:160px;overflow-y:auto;font-size:12px}
.list.ridac .rid-mc-car{flex:none;font-size:10px;opacity:.55;margin-top:1px}
.rid-combo-pop{position:fixed;z-index:500;width:272px;max-height:340px;display:flex;flex-direction:column;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 12px 32px rgba(20,30,60,.22);overflow:hidden}
.rid-combo-pop[hidden]{display:none!important}
.rid-combo-search{margin:6px;padding:6px 8px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:12px;color:var(--tx)}
.rid-combo-search:focus{outline:none;border-color:var(--ac)}
.rid-combo-list{overflow-y:auto;padding:2px 4px 6px}
.rid-combo-cat{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ac);padding:7px 6px 2px}
.rid-combo-opt{padding:4px 8px 4px 18px;font-size:12px;border-radius:5px;cursor:pointer;white-space:normal;word-break:break-word;color:var(--tx)}
.rid-combo-opt:hover{background:var(--s2)}
.rid-combo-clear{padding-left:8px;color:var(--tx2);font-style:italic}
/* os tabs desativados saem por [hidden] — o display:flex acima os manteria na tela */
.rid-combo-tabs[hidden]{display:none}
.rid-combo-tabs{display:flex;gap:4px;margin-bottom:6px}
.rid-combo-tab{flex:1;border:1px solid var(--bd);background:var(--s2);border-radius:6px;padding:4px 8px;font:inherit;font-size:11.5px;cursor:pointer;color:var(--tx)}
.rid-combo-tab.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.rid-combo-pop.mc-crono{width:452px}
.rid-combo-crono{display:flex;align-items:flex-start;gap:8px;padding:6px 8px 6px 10px}
.rid-combo-crono .rcc-txt{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.rid-combo-crono .rcc-txt b{font-size:12.5px;color:var(--tx);line-height:1.25}
.rid-combo-crono small{color:var(--tx2);font-size:11px;line-height:1.2}
.rcc-niv{flex:none;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#fff;background:#94a3b8;border-radius:4px;padding:2px 5px;margin-top:1px;min-width:56px;text-align:center}
.rcc-niv.rcc-n2{background:#2f6fed}.rcc-niv.rcc-n3{background:#7c3aed}.rcc-niv.rcc-n4{background:#c77700}.rcc-niv.rcc-n5{background:#1f9d57}.rcc-niv.rcc-n9{background:#64748b}
.rid-combo-list mark{background:#fde68a;color:inherit;border-radius:2px;padding:0 1px}
.list.ridac .rid-mc-crono .rid-mc-val .muted{font-style:italic}
.rid-grupo-lk{display:flex;align-items:center;gap:6px}
.rid-unlink{cursor:pointer;color:#b03b3b;font-size:11px;opacity:.55;flex:none}
.rid-unlink:hover{opacity:1}
.list.ridac td,.list.ridac th{padding:1px 5px;vertical-align:top}   /* linhas COMPACTAS: altura mínima, alinhadas ao topo (texto multilinha não corta) */
.list.ridac .ridac-id{white-space:nowrap;text-align:left;font-weight:600;font-variant-numeric:tabular-nums;overflow:visible}
.list.ridac thead th{position:sticky;top:0;z-index:5;background:var(--sf);box-shadow:0 2px 4px rgba(20,30,60,.07)}   /* cabeçalho fixo: rola só as linhas */
#view-ridac>.card{max-width:none}
.list.ridac{width:100%}
.list.ridac.ridac-fit{table-layout:fixed;max-width:none}   /* width vem INLINE (soma do colgroup) → fixed é honrado e a tabela fica no tamanho compacto; em tela estreita/4K com escala a .ridac-tablewrap ROLA (não esmaga: max-width:100% empilhava as ações em 4–5 linhas — bug 11/07/2026) */
.list.ridac.ridac-fit>tbody>tr>td,.list.ridac.ridac-fit>thead>tr>th{overflow:hidden}
.rkpi-jump{cursor:pointer;transition:box-shadow .1s,border-color .1s,transform .1s}
.rkpi-jump:hover{border-color:var(--ac);box-shadow:0 3px 12px rgba(47,111,237,.2);transform:translateY(-1px)}
.rkpi-jump:active{transform:translateY(0)}
.rel-jump{cursor:pointer}
.rel-jump:hover td{background:#eef4ff}
/* Gate de escopo (seleção obrigatória no início) */
.esc-ov{position:fixed;inset:0;z-index:300;background:rgba(20,30,60,.55);display:flex;align-items:center;justify-content:center}
.esc-card{background:var(--sf);border:1px solid var(--bd);border-radius:14px;box-shadow:0 24px 70px rgba(20,30,60,.4);width:440px;max-width:94vw;padding:22px}
.esc-h{font-size:18px;font-weight:800;margin-bottom:4px}
.esc-sub{color:var(--tx2);font-size:13px;margin:0 0 16px}
.esc-selall{display:inline-flex;align-items:center;gap:7px;font-size:13px;cursor:pointer;padding:4px 8px;border:1px solid var(--bd);border-radius:6px;margin-bottom:8px;color:var(--tx)}
.esc-selall:hover{border-color:var(--ac)}
.esc-fld{display:block;font-size:12px;font-weight:600;color:var(--tx2);margin-bottom:12px}
.esc-fld select{display:block;width:100%;margin-top:4px;padding:8px 10px;border:1px solid var(--bd);border-radius:8px;font:inherit;font-size:14px;background:var(--bg);color:var(--tx)}
.esc-acts{display:flex;justify-content:space-between;align-items:center;margin-top:6px}
.esc-sec{background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:8px 12px;font-size:13px;cursor:pointer;color:var(--tx)}
.esc-go{background:var(--ac);border:1px solid var(--ac);color:#fff;border-radius:8px;padding:9px 18px;font-size:14px;font-weight:700;cursor:pointer}
.esc-go:hover{filter:brightness(1.05)}
.esc-card-lg{width:520px;max-width:94vw}
.esc-list{max-height:48vh;overflow:auto;margin:4px 0 14px;border:1px solid var(--bd);border-radius:8px;padding:6px}
.esc-grp{margin-bottom:6px}
.esc-port{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px;padding:6px;background:var(--s2);border-radius:6px;cursor:pointer}
.esc-port>span:first-of-type{flex:1}
.esc-ct{font-size:11px;color:var(--tx2);font-weight:600}
.esc-proj{display:flex;align-items:center;gap:8px;font-size:13px;padding:5px 6px 5px 22px;cursor:pointer;border-radius:5px}
.esc-proj:hover,.esc-port:hover{background:var(--s2)}
.esc-selct{font-size:12px;color:var(--tx2)}
/* uiKit — camada de consistência (cabeçalho padrão + "você está aqui" + estado-vazio) */
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.card-head h2{margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:2px}
.ch-crumb{font-size:11.5px;font-weight:600;color:var(--tx2);letter-spacing:.02em}
.ch-cont{font-weight:600;color:var(--tx2);font-size:13px}
.ch-desc{margin:2px 0 10px}
.badge-modo{font-size:10px;font-weight:700;color:#fff;background:var(--ac);border-radius:4px;padding:1px 6px;margin-left:6px;white-space:nowrap}
.badge-verbo{font-size:10.5px}
.estado-vazio{text-align:center;color:var(--tx2);padding:14px 10px;font-size:12.5px}
.ev-dica{color:var(--tx2);opacity:.8;font-size:12px;margin-left:4px}
.pf-row{transition:background .1s}
.pf-row:hover{background:var(--s2)}
.pf-row:hover td:first-child{color:var(--ac)}
/* Layout lado a lado (editor à esquerda · lista à direita) p/ telas de Dados Mestres */
.dm-split{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.dm-split>.dm-main{flex:1 1 340px;min-width:300px}
.dm-split>.dm-side{flex:1.4 1 420px;min-width:320px}
.dm-split .card{max-width:none}
/* destaque do que está sendo modificado: campo em edição (azul) + linha (focus-within) + flash ao salvar (amarelo→some) */
.dm-split input:focus,.dm-split textarea:focus,.dm-split select:focus,.cal-ren:focus,#m_ed:focus,#t_ed:focus{outline:none;border-color:var(--ac)!important;background:#eef4ff!important;box-shadow:0 0 0 3px rgba(47,111,237,.18)}
.dm-split tr:focus-within>td{background:#f3f8ff}
@keyframes dmFlash{0%{background:#fde68a}100%{background:transparent}}
.dm-flash{animation:dmFlash 1.4s ease-out}
tr.dm-flash>td{animation:dmFlash 1.4s ease-out}

/* Aba Projetos (lista-first) */
.pj-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.pj-head h2{margin:0}
.pj-acts{white-space:nowrap}
.pj-acts .btn{padding:4px 9px;margin-left:3px}
.pj-arq{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px}
.row-menu{display:inline-block;position:relative;margin-left:3px}
.row-menu>summary{list-style:none;cursor:pointer}
.row-menu>summary::-webkit-details-marker{display:none}
.row-menu-pop{position:absolute;right:0;top:100%;z-index:60;background:#fff;border:1px solid var(--bd);border-radius:8px;box-shadow:0 8px 24px rgba(20,30,60,.18);padding:4px;display:flex;flex-direction:column;min-width:170px;margin-top:3px}
.row-menu-pop button{text-align:left;background:none;border:none;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:12.5px;white-space:nowrap;color:var(--tx)}
.row-menu-pop button:hover{background:var(--s2)}
.row-menu-pop button.danger{color:var(--er)}
/* Templates */
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-top:10px}
.tpl-card{background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px}
.tpl-card h3{margin:2px 0;font-size:15px}
.tpl-card p{margin:0;font-size:12.5px;min-height:32px}
.tpl-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.tpl-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px}
.tpl-badge.cl{background:#efe6ee;color:#A01441}
.tpl-badge.me{background:var(--s2);color:var(--tx)}
.tpl-tag{font-size:11px;background:var(--s2);color:var(--tx);padding:2px 7px;border-radius:20px}
.tpl-meta{font-size:11.5px;color:var(--tx2,#777);margin:2px 0 6px}
.tpl-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.tpl-acts .btn{padding:5px 10px;font-size:12.5px}
.tpl-tree{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;line-height:1.7;max-height:55vh;overflow:auto;white-space:nowrap}
/* Otimizado */
.otz-kpis{display:flex;gap:10px;margin:8px 0}
.otz-kpis>div{flex:1;background:var(--s2);border-radius:8px;padding:8px 10px;text-align:center}
.otz-kpis>div span{display:block;font-size:11px;color:var(--tx2,#777)}
.otz-kpis>div b{font-size:18px}
.otz-kpis>div small{display:block;font-size:11px;color:var(--tx2,#777)}
.otz-steps{max-height:210px;overflow:auto;margin-top:4px}
.otz-bar{display:inline-block;height:8px;background:var(--ac);border-radius:4px;min-width:2px;vertical-align:middle}
.otz-sim{background:#fff7e6;border:1px solid #f0c674;color:#7a5b00;border-radius:8px;padding:7px 10px;font-size:12.5px;margin:6px 0}
.otz-now{outline:2px solid var(--ac);outline-offset:-2px}
.otz-leg{font-size:11.5px;margin:4px 0}
.otz-det{margin:6px 0;font-size:12px}
.otz-det>summary{cursor:pointer;color:var(--tx2,#777);font-size:11.5px;user-select:none}
.otz-det>summary:hover{color:var(--tx,#333)}
.otz-risco{margin:8px 0;font-size:12.5px;background:#f2f7ff;border:1px solid #c7d7f2;border-radius:8px;padding:7px 10px}
.otz-hsem{display:inline-flex;align-items:flex-end;gap:1px;height:14px;margin-left:6px;vertical-align:middle}
.otz-hsem i{width:5px;background:#9fb6dd;border-radius:1px 1px 0 0;display:inline-block}
.otz-hsem i.md{background:#e2b93b}
.otz-hsem i.hi{background:#d23b4e}
.otz-passos{background:var(--s2,#f6f7f9);border:1px solid var(--bd,#e3e6ec);border-radius:8px;padding:8px 12px;margin:8px 0;font-size:12.5px;line-height:1.5}
.otz-passos .otz-pt{font-weight:700;font-size:12px;margin-bottom:2px}
.otz-passos ol{margin:4px 0 2px;padding-left:20px}
.otz-passos li{margin:3px 0}
/* 🚀 tela cheia (18/07): modificador vence o width:440px do .esc-card por especificidade (mesmo padrão do .rrc-card) */
.esc-card.otz-full{width:98vw;max-width:98vw;height:97vh;display:flex;flex-direction:column;padding:12px 16px;overflow:hidden}
.otz-full .otz-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}   /* cabeçalho FIXO + colunas preenchem o resto e rolam sozinhas → usa toda a altura */
.otz-full .otz-acao-hdr{flex:0 0 auto}
.otz-full .otz-cols{display:grid;grid-template-columns:minmax(420px,6fr) minmax(380px,5fr);grid-template-rows:minmax(0,1fr);gap:0 18px;flex:1;min-height:0}   /* tabelas à ESQUERDA (padrão de reports) · leitura à direita */
.otz-full .otz-cols>div{min-width:0;overflow-y:auto;padding-right:6px}
.otz-full .otz-wrap{max-width:1100px;margin:0 auto;width:100%;flex:1;min-height:0;overflow-y:auto}
.otz-full .otz-mc{flex:1;min-height:0;overflow-y:auto}
.otz-full .exec-card{max-width:none}
.otz-full .otz-kpis>div b{font-size:20px}
.otz-full .otz-steps{max-height:40vh}
.otz-full .otz-foot{flex:0 0 auto;margin-top:8px}
@media (max-width:1100px){.otz-full .otz-body{overflow-y:auto}.otz-full .otz-cols{display:block;flex:0 0 auto}.otz-full .otz-cols>div{overflow:visible}}
/* Histograma de recursos */
.rc-scroll{overflow:auto;max-height:65vh;border:1px solid var(--bd);border-radius:8px}
.rc-tab{border-collapse:collapse;font-size:12px}
.rc-tab th,.rc-tab td{border:1px solid var(--bd);padding:2px 4px;text-align:center;white-space:nowrap}
.rc-tab th{position:sticky;top:0;background:var(--sf);z-index:2}
.rc-rname{position:sticky;left:0;background:var(--sf);text-align:left!important;min-width:180px;z-index:1}
.rc-w{font-weight:400;color:var(--tx2,#777);min-width:34px}
.rc-c{min-width:28px;font-weight:600}
.rc-badge{font-size:10.5px;color:#fff;background:#e25555;border-radius:10px;padding:1px 6px;font-weight:700}
/* ESCOPADA à própria tela de propósito: `.rc-leg` é redefinida mais abaixo pelo RIDAC (`display:flex`, linha
   da .ridac-toolrow) e, vindo depois na cascata, vencia aqui — os 3 quadradinhos da legenda viravam blocos e
   quebravam a frase em 3 linhas com os swatches órfãos. Mesma família da colisão `.ed-col` de 25/07/2026:
   classe de UI nunca "solta", sempre escopada ao contêiner da tela. Achado no PIXEL — o DOM passava. */
#view-recursoscarga .rc-leg{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:middle;margin:0 2px}
.rc-leg{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:middle;margin:0 2px}
.rc-tog{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--tx2);white-space:nowrap;cursor:pointer}
.ef-lk{font-size:11px;margin-right:3px;opacity:.75}
.ef-fora{font-size:11px;margin-right:3px;color:#b45309}
/* Timeline de Marcos — overlay alinhado à mesma escala da Curva S */
.ms-host{position:relative;clear:both}   /* limpa o float dos controles (.sp-modes) do h2 → SVG começa ABAIXO, sem sobrepor os rótulos do topo (Início/Status/Fim) */
.ms-area{position:relative;height:150px;width:100%}
.ms-axis{position:absolute;top:92px;border-top:2px solid #cbd5e6}
.ms-ref{position:absolute;top:14px;bottom:14px;border-left:1px dashed;width:0}
.ms-ref .ms-rlab{position:absolute;top:-13px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:700;white-space:nowrap}
.ms-ref .ms-rico{position:absolute;top:1px;left:50%;transform:translateX(-50%);font-size:13px}
.ms-ref .ms-rdt{position:absolute;bottom:-13px;left:50%;transform:translateX(-50%);font-size:8px;white-space:nowrap}
.ms-fase{position:absolute;top:0;width:0}
.ms-fase .ms-dot{position:absolute;top:86px;left:-6px;width:12px;height:12px;border-radius:50%}
.ms-fase .ms-fl{position:absolute;left:50%;transform:translateX(-50%);font-size:11px;font-weight:600;color:#333;white-space:nowrap}
.ms-fase .ms-fd{position:absolute;left:50%;transform:translateX(-50%);font-size:9px;color:#888;white-space:nowrap}
.ms-leader{position:absolute;left:0;width:0;border-left:1px solid;opacity:.2}   /* haste fininha do marco até o eixo (cascata do overlay) */
.ms-flag{position:absolute;line-height:0}   /* bandeirinha de marco realizado (overlay) */
.ms-tick{position:absolute;width:0;height:5px;border-left:1px solid #cbd5e6}   /* tick da escala de tempo (overlay) */
.ms-tlbl{position:absolute;transform:translateX(-50%);font-size:9px;color:#94a3b8;white-space:nowrap}   /* rótulo da escala (overlay) */
/* Concluí em data — fileira no card da ⚡ Atualização rápida (formato Sdd) */
.atu-datas{display:flex;flex-wrap:wrap;gap:3px;margin-top:8px;align-items:center}
.atu-datas .atu-dlab{font-size:10px;color:var(--tx2,#777);width:100%;margin-bottom:2px}
.atu-datas button{font-size:10.5px;padding:3px 6px;border:1px solid var(--bd);border-radius:6px;background:var(--sf);cursor:pointer}
.atu-datas button:hover{background:var(--s2)}
.atu-datas button.we{color:#a01441}
.atu-plan{font-size:12px;margin:8px 0 2px}
.atu-resp{font-size:12px;color:var(--tx2)}
.atu-faixa{margin-top:10px;text-align:left}
.atu-flab{display:block;font-size:11px;font-weight:600;color:var(--tx2);margin-bottom:3px}
.atu-dias{display:grid;grid-template-columns:auto repeat(7,1fr);gap:3px;align-items:center}
.atu-dias button{font-size:10.5px;padding:5px 2px;border:1px solid var(--bd);border-radius:6px;background:var(--sf);cursor:pointer;text-align:center}
.atu-mes{font-size:10px;font-weight:700;color:var(--tx2);text-align:right;padding-right:5px;white-space:nowrap}
.atu-dias button:hover{background:var(--s2);border-color:var(--ac)}
.atu-dias button.we{color:#a01441}
.atu-dias button.hoje{border-color:var(--ac);font-weight:700}
.atu-dias button.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.atu-foot{margin-top:12px;display:flex;gap:8px}
.atu-salvar{flex:1;padding:8px;border:1px solid var(--ac);background:var(--ac);color:#fff;border-radius:8px;cursor:pointer;font-size:12px;font-weight:600}
.atu-salvar:hover{filter:brightness(.95)}
.atu-pular{flex:1;padding:8px;border:1px dashed var(--bd);background:transparent;border-radius:8px;cursor:pointer;color:var(--tx2);font-size:12px}
.atu-pular:hover{border-color:var(--ac);color:var(--ac)}
.atu-voltar{margin-left:auto;background:rgba(255,255,255,.22);border:0;color:#fff;border-radius:6px;padding:2px 8px;cursor:pointer;font-size:11px}
/* Rodapé do editor de tarefa */
.ed-foot{display:flex;justify-content:flex-end;gap:8px;padding:8px 16px;border-top:1px solid var(--bd);position:sticky;bottom:0;background:var(--sf)}
.pj-cur{font-size:10px;font-weight:700;color:#fff;background:var(--ac);border-radius:4px;padding:1px 6px;margin-left:6px}
.pj-form{max-width:760px;margin-top:16px}
.pj-form .pjf-grp{border:1px solid;border-radius:10px;padding:10px 12px 4px;margin-bottom:10px}   /* frames clarinhos por assunto */
.pj-form .pjf-leg{font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;margin-bottom:7px;opacity:.78}
.pjf-ident{background:#eef4ff;border-color:#dbe6fb}     /* Identidade — azul claro */
.pjf-resp{background:#eefaf1;border-color:#d6efdd}      /* Responsáveis — verde claro */
.pjf-arq{background:#fff7e9;border-color:#f2e6c8}       /* Arquivos e caminhos — âmbar claro */
.pjf-obs{background:#f4f6f9;border-color:#e5e9ef}       /* Observações — cinza claro */
.pjf-bases{background:#f7eefe;border-color:#e8dbf8}     /* Bases do projeto — lilás claro */
/* Blocos do form alinhados em QUADRANTES (grade): os largos ocupam a linha toda; os curtos pareiam */
.pj-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:start}
.pj-form>h2,.pj-form .pjf-ident,.pj-form .pjf-arq,.pj-form .pjf-obs,.pj-form>.row{grid-column:1/-1}
.pj-form .pjf-grp{margin-bottom:0}
/* Padrão REUTILIZÁVEL de blocos por tela: quadrantes clarinhos, alinhados e responsivos */
.tela-blocos{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;align-items:start}
.bloco{border:1px solid var(--bd);border-radius:10px;padding:10px 12px}
.bloco-leg{font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;margin-bottom:7px;opacity:.78}
.bloco-az{background:#eef4ff;border-color:#dbe6fb}   /* azul clarinho */
.bloco-vd{background:#eefaf1;border-color:#d6efdd}   /* verde clarinho */
.bloco-am{background:#fff7e9;border-color:#f2e6c8}   /* âmbar clarinho */
.bloco-cz{background:#f4f6f9;border-color:#e5e9ef}   /* cinza clarinho */
.bloco-lx{background:#f7eefe;border-color:#e8dbf8}   /* lilás clarinho */
/* Painel "Vinculados" (quem-com-quem) no topo das telas de vínculo */
.vinc-panel{border:1px solid var(--bd);background:var(--sf,#fff);border-radius:10px;padding:8px 12px;margin-bottom:10px;font-size:12.5px}
.vinc-h{font-weight:700;font-size:12px;margin-bottom:6px;color:var(--ac)}
.vinc-list{display:grid;gap:4px 10px;align-items:center}   /* colunas ALINHADAS: nome | → | empresa | função */
.vinc-grid3{grid-template-columns:max-content max-content 1fr}
.vinc-grid4{grid-template-columns:max-content max-content max-content 1fr}
.vinc-l{display:contents}   /* os filhos viram células da grade do .vinc-list → alinham entre as linhas */
.vinc-nome{font-weight:700}
.vinc-emp,.vinc-fun,.vinc-recs{display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-width:0}
.vc-na{font-size:11.5px;opacity:.55}
.vinc-ar{color:var(--tx2,#94a3b8)}
.vinc-chip{background:var(--s2,#eef2f7);border:1px solid var(--bd,#dbe2ea);border-radius:10px;padding:1px 8px;font-size:11.5px}
.vinc-tag{background:#eef4ff;border:1px solid #dbe6fb;border-radius:8px;padding:0 6px;font-size:10.5px;color:#1d4ed8}
/* Código do objeto do projeto (RACI/Premissas/Calendário) = "<código do projeto> - <Tipo>" */
.obj-cod{display:inline-block;background:var(--s2,#eef2f7);border:1px solid var(--bd,#dbe2ea);border-radius:8px;padding:2px 9px;font-size:12px;font-weight:600;color:var(--ac);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.pjv-l{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-bottom:1px solid var(--bd);font-size:13px}
.pjv-l span{color:var(--tx2)}
.list.ridac th.srt{cursor:pointer;user-select:none;white-space:nowrap}
.list.ridac th.srt:hover{color:var(--ac)}
.ridac-tbtools{display:flex;justify-content:flex-end;margin-bottom:8px}
.ridac-cols{position:relative;display:inline-block}
.ridac-cols>summary{list-style:none;cursor:pointer;background:var(--s2);border:1px solid var(--bd);border-radius:7px;padding:5px 10px;font-size:12px;font-weight:600;color:var(--tx)}
.ridac-cols>summary::-webkit-details-marker{display:none}
.ridac-cols[open]>summary{border-color:var(--ac)}
.ridac-cols.on>summary{border-color:var(--ac);color:var(--ac);font-weight:700}
/* Papel(éis) na tabela de recursos do projeto: summary em UMA linha com reticências (rótulo longo não estica a linha) */
.rec-fundd>summary{display:inline-block;vertical-align:middle;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:3px 9px}
.ridac-cols-menu{position:absolute;right:0;top:110%;z-index:20;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 12px 30px rgba(20,30,60,.2);padding:8px;min-width:160px;display:flex;flex-direction:column;gap:4px}
.ridac-cols-menu label{display:flex;align-items:center;gap:7px;font-size:12px;cursor:pointer;white-space:nowrap}
.ridac-cols-menu .rcol-item{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ridac-cols-menu .rcol-mv{display:inline-flex;gap:1px}
.ridac-cols-menu .rcol-mv button{border:1px solid var(--bd);background:#fff;border-radius:4px;cursor:pointer;font-size:9px;line-height:1;padding:2px 4px;color:var(--tx2)}
.ridac-cols-menu .rcol-mv button:hover{border-color:var(--ac);color:var(--ac)}
/* RIDAC — papéis (chips) + ações + legenda + cor de status da data */
.raci-b{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;font-size:10px;font-weight:800;color:#fff;flex:none}
.raci-r{background:#2f6fed} .raci-a{background:#7a3ff2} .raci-p{background:#1f9d57} .raci-c{background:#c77700} .raci-i{background:#6b7686}
.rc-cell{vertical-align:top}
.rc-papeis{display:flex;align-items:flex-start;gap:5px;cursor:pointer;padding:1px 5px;border:1px solid transparent;border-radius:7px;min-height:20px}
.rc-papeis:hover{border-color:var(--bd);background:var(--s2)}
.rc-papeis-v{display:flex;flex-wrap:wrap;align-items:center;gap:2px 5px;flex:1;line-height:1.25;font-size:12px;color:#1f2937;font-weight:500}
.rc-resp2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;line-height:1.3;max-width:100%;word-break:break-word}   /* Responsável: no máx 2 linhas; se passar, o JS troca p/ iniciais */
.rc-papeis-v .rc-resp2{flex:1;min-width:0}
.rc-papeis-ed{flex:none;opacity:.45;font-size:13px;margin-top:1px}
.rc-papeis:hover .rc-papeis-ed{opacity:1}
.rc-vazio{color:var(--tx2)}
/* popup Recursos × RACI */
.raci-pop-ov{position:fixed;inset:0;background:rgba(15,20,30,.34);display:flex;align-items:center;justify-content:center;z-index:9000}
.raci-pop{background:var(--sf);border:1px solid var(--bd);border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.28);width:min(520px,94vw);max-height:88vh;overflow:auto;padding:14px 16px}
.raci-pop-hd{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.raci-pop-hd b{font-size:14px;flex:1}
.rp-x{background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;font-size:14px;color:var(--tx2);padding:2px 7px}
.rp-x:hover{background:var(--s2);border-color:var(--bd);color:var(--er)}
.raci-pop-sub{font-size:12px;color:var(--tx2);margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--bd);line-height:1.4}
.raci-pop-body{display:flex;flex-direction:column;gap:7px;margin-bottom:9px}
.rp-row{display:flex;align-items:center;gap:7px}
.rp-papel{flex:none;width:150px;border:1px solid var(--bd);border-radius:7px;background:#fff;font:inherit;font-size:12px;font-weight:600;padding:5px 6px;cursor:pointer;color:var(--tx)}
.rp-papel:hover{border-color:var(--ac)}
.rp-nome{flex:1;border:1px solid var(--bd);border-radius:7px;background:#fff;font:inherit;font-size:13px;padding:5px 8px;color:var(--tx)}
.rp-nome:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 2px rgba(47,111,237,.15)}
.rp-del{flex:none;background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;font-size:12px;color:var(--tx2);padding:3px 7px}
.rp-del:hover{background:#fde7e7;border-color:var(--er);color:var(--er)}
.rp-add{background:var(--s2);border:1px dashed var(--bd);border-radius:8px;cursor:pointer;font:inherit;font-size:12px;font-weight:600;color:var(--ac);padding:6px 10px;width:100%}
.rp-add:hover{border-color:var(--ac);background:#eef3fe}
.raci-pop-ft{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:11px;border-top:1px solid var(--bd)}
.rp-leg{font-size:10.5px;color:var(--tx2);line-height:1.35}
.rp-leg b{color:var(--tx)}
.rp-canc{background:var(--s2);border:1px solid var(--bd);border-radius:8px;cursor:pointer;font:inherit;font-size:12px;padding:6px 13px;color:var(--tx)}
.rp-canc:hover{border-color:var(--tx2)}
.rp-ok{background:var(--ac);border:1px solid var(--ac);border-radius:8px;cursor:pointer;font:inherit;font-size:12px;font-weight:700;padding:6px 15px;color:#fff}
.rp-ok:hover{filter:brightness(1.07)}
/* ⚙ Parâmetros — mensagens de email */
.em-cfg .em-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:6px}
.em-cfg .em-col{display:flex;flex-direction:column;gap:5px;background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:12px}
.em-cfg .em-h{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;margin-bottom:6px;color:#fff}
.em-cfg .em-h-ridac{background:linear-gradient(90deg,#c0392b,#e07a35)}
.em-cfg .em-h-crono{background:linear-gradient(90deg,#2f6fed,#1f9d57)}
.em-cfg .em-h .em-ico{font-size:20px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))}
.em-cfg .em-h b{font-size:14px;display:block;line-height:1.1}
.em-cfg .em-h small{font-size:10.5px;opacity:.9}
.em-cfg label{font-size:11.5px;font-weight:600;color:var(--tx2);margin-top:4px}
.em-cfg .em-ta,.em-cfg .em-in{width:100%;border:1px solid var(--bd);border-radius:8px;padding:7px 9px;font:inherit;font-size:12.5px;color:var(--tx);background:#fff;resize:vertical;box-sizing:border-box}
.em-cfg .em-ta:focus,.em-cfg .em-in:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 2px rgba(47,111,237,.15)}
.em-cfg .em-prev-h{font-size:11px;font-weight:700;color:var(--ac);margin-top:8px}
.em-cfg .em-prev{margin:2px 0 0;background:#fbfcfe;border:1px dashed var(--bd);border-radius:8px;padding:9px 11px;font-family:ui-monospace,Consolas,monospace;font-size:11px;line-height:1.5;color:var(--tx);white-space:pre-wrap;word-break:break-word;max-height:230px;overflow:auto}
.em-cfg .em-disc-row{margin-top:14px;display:flex;flex-direction:column;gap:5px;max-width:520px}
.em-cfg .em-cap-grid{display:grid;grid-template-columns:2fr 1.4fr .9fr .9fr;gap:12px;margin-top:6px}
.em-cfg .em-cap-grid .fld{display:flex;flex-direction:column;gap:4px}
.em-cfg .em-auth{margin-top:12px;background:#fff7e6;border:1px solid #e0b766;border-radius:9px;padding:10px 13px;font-size:12px;color:#7a5300;line-height:1.5}
@media(max-width:760px){.em-cfg .em-grid,.em-cfg .em-cap-grid{grid-template-columns:1fr}}
/* Relatório RIDAC — respostas captadas & rascunhos */
.rr-nav a.rr-ok{color:#1f9d57;font-weight:700}
.rr-item-wrap.rr-item-resp .rr-item{box-shadow:inset 3px 0 0 #1f9d57}
.rr-respbadge{margin-left:8px;background:#dff3e6;color:#14502c;border:1px solid #57c98a;border-radius:10px;padding:1px 7px;font-size:11px;font-weight:700;white-space:nowrap}
.rr-acts{display:inline-flex;gap:2px;flex:none;margin-left:2px}
.rr-act{background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;font-size:13px;padding:3px 7px;color:var(--tx2);line-height:1}
.rr-act:hover{background:var(--s2);border-color:var(--bd);color:var(--tx)}
.rr-act.rr-a-del:hover{color:var(--er);border-color:var(--er)}
.rr-act.rr-a-nota.on{background:#c8f0d8;border-color:#57c98a;color:#14502c}
.rr-act.rr-a-rel.on{background:#fff2cf;border-color:#e0b766}
.rr-acaoinline{font-weight:400;color:var(--tx2)}
.rresp-item{border:1px solid var(--bd);border-radius:10px;padding:10px 12px;margin:10px 0;background:var(--bg)}
.rresp-hd{font-size:13px;margin-bottom:8px;display:flex;align-items:center;gap:7px}
.rresp-msg{border-left:3px solid var(--bd);background:#fff;border-radius:0 8px 8px 0;padding:8px 11px;margin:7px 0}
.rresp-msg.is-int{border-left-color:#2f6fed}
.rresp-msg.is-cli{border-left-color:#d23b4e}
.rresp-from{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;margin-bottom:5px}
.rresp-tag{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:8px;background:var(--s2)}
.rresp-msg.is-cli .rresp-tag{background:#fde7e7;color:#9a1b2e}
.rresp-msg.is-int .rresp-tag{background:#e6efff;color:#1c4db3}
.rresp-st{margin-left:auto;font-size:10.5px;font-weight:700;color:var(--tx2)}
.rresp-txt{font-size:12px;line-height:1.5;color:var(--tx);white-space:pre-wrap;word-break:break-word}
.rresp-draft{margin-top:8px;background:#f3f8ff;border:1px solid #bcd4ff;border-radius:8px;padding:8px 10px}
.rresp-draft-h{font-size:11.5px;font-weight:700;color:#1c4db3;margin-bottom:5px}
.rresp-draft-tx{font-size:12px;line-height:1.5;white-space:pre-wrap;color:var(--tx)}
.rresp-acts{margin-top:8px}
.rresp-auth{background:#1f9d57;border:1px solid #1f9d57;color:#fff;border-radius:8px;cursor:pointer;font:inherit;font-size:12px;font-weight:700;padding:6px 13px}
.rresp-auth:hover{filter:brightness(1.07)}
.rresp-sent{color:#1f9d57;font-weight:700;font-size:12px}
.rresp-nodraft{font-size:11.5px;margin-top:6px}
.rresp-empty{padding:14px;line-height:1.6;font-size:13px}
/* Aba 📨 Respostas */
.resp-page{max-width:920px;margin:0 auto;padding:20px 24px 60px}
.resp-head h1{margin:0 0 6px;font-size:23px;color:var(--tx)}
.resp-head p{margin:0 0 14px;color:var(--tx2);line-height:1.55}
.resp-kpis{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.resp-kpi{flex:1;min-width:120px;background:var(--sf);border:1px solid var(--bd);border-radius:10px;padding:12px 14px}
.resp-kpi .rk-n{font-size:24px;font-weight:800;color:var(--tx);line-height:1}
.resp-kpi .rk-l{font-size:11.5px;color:var(--tx2);margin-top:4px}
.resp-kpi.rk-wa{border-color:#e0b766;background:#fff7e6}
.resp-kpi.rk-ok{border-color:#57c98a;background:#eafaf0}
.resp-card{background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:12px 14px;margin-bottom:12px}
.resp-card.is-prio{border-color:#e0b766;box-shadow:0 0 0 2px rgba(224,183,102,.25)}
.resp-card-h{display:flex;align-items:center;gap:8px;font-size:13.5px;padding-bottom:8px;border-bottom:1px solid var(--bd);margin-bottom:6px}
.resp-card-h .resp-tt{color:var(--tx2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.resp-let{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:6px;font-size:12px;font-weight:800;color:#fff;background:#6b7686;flex:none}
.resp-let-riscos{background:#d23b4e}.resp-let-issues{background:#c77700}.resp-let-decisoes{background:#2f6fed}.resp-let-acoes{background:#1f9d57}.resp-let-changes{background:#7a3ff2}.resp-let-crono{background:#334}
.resp-go{margin-left:auto;background:transparent;border:1px solid var(--bd);border-radius:6px;cursor:pointer;font-size:13px;color:var(--tx2);padding:2px 9px}
.resp-go:hover{border-color:var(--ac);color:var(--ac)}
.resp-prio-badge{background:#fff2cf;color:#7a5300;border:1px solid #e0b766;border-radius:9px;padding:1px 7px;font-size:10.5px;font-weight:800}
.resp-empty{background:var(--sf);border:1px dashed var(--bd);border-radius:12px;padding:22px;line-height:1.7;font-size:13.5px;color:var(--tx)}
.resp-bar{display:flex;gap:8px;align-items:center;margin-bottom:16px}
.resp-busca{flex:1;border:1px solid var(--bd);border-radius:9px;background:#fff;font:inherit;font-size:13px;padding:8px 11px;color:var(--tx)}
.resp-busca:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 2px rgba(47,111,237,.15)}
.resp-refresh{flex:none;background:var(--s2);border:1px solid var(--bd);border-radius:9px;cursor:pointer;font:inherit;font-size:12.5px;font-weight:600;padding:8px 12px;color:var(--tx)}
.resp-refresh:hover{border-color:var(--ac);color:var(--ac)}
.resp-colar{background:#eafaf0;border-color:#57c98a;color:#14502c}
.resp-colar:hover{border-color:#1f9d57;color:#14502c}
/* modal Colar resposta */
#colarResp .cr-form{display:flex;flex-direction:column;gap:5px;margin:8px 0}
#colarResp label{font-size:11.5px;font-weight:600;color:var(--tx2);margin-top:5px}
#colarResp .em-in,#colarResp .em-ta{width:100%;border:1px solid var(--bd);border-radius:8px;padding:7px 9px;font:inherit;font-size:13px;color:var(--tx);background:#fff;box-sizing:border-box;resize:vertical}
#colarResp .em-in:focus,#colarResp .em-ta:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 2px rgba(47,111,237,.15)}
#colarResp .cr-row{display:grid;grid-template-columns:1fr 1fr 132px;gap:8px}
#colarResp .cr-chk{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:500;color:var(--tx);margin-top:9px;cursor:pointer}
/* modal Email formatado (pré-visualização HTML) */
#emailFmt .ef-prev{border:1px solid var(--bd);border-radius:8px;padding:16px;margin:8px 0 4px;max-height:52vh;overflow:auto;background:#fff}
#emailFmt .ef-msg{font-size:12px;font-weight:600}
#emailFmt .ef-copy{background:#1f9d57;border-color:#1f9d57}
.rc-acoes{white-space:nowrap}
.rc-acoes button{background:transparent;border:1px solid transparent;border-radius:5px;cursor:pointer;font-size:12px;padding:2px 4px;color:var(--tx2)}
.rc-acoes button:hover{background:var(--s2);border-color:var(--bd);color:var(--tx)}
.rc-acoes .rc-del:hover{color:var(--er);border-color:var(--er)}
.rc-acoes .rc-nota-on{background:#c8f0d8;border-color:#57c98a;box-shadow:inset 0 0 0 1px #57c98a}   /* 📝 verde quando o item TEM anotação */
.rc-acoes .rc-nota-on:hover{background:#b2e9c6;border-color:#2f9e5e}
.rc-acoes .rc-emsel.on{background:var(--ac);border-color:var(--ac);color:#fff}   /* ✉ marcado p/ email */
.rc-acoes .rc-mover-on{color:#7c3aed;border-color:#d9c7f7;background:#f5efff}   /* ⇄ item que JÁ foi movido p/ outra base */
/* ➡/⬅ vínculo do movimento entre bases RIDAC — colado no ID, clicável, visível nos DOIS lados */
.rid-mv-selo{display:inline-block;margin-left:4px;font-size:11px;line-height:1;cursor:pointer;border-radius:4px;padding:1px 2px}
.rid-mv-out{color:#7c3aed}
.rid-mv-in{color:#1f9d57}
.rid-mv-selo:hover{background:var(--s2);box-shadow:inset 0 0 0 1px var(--bd)}
.rid-mv-fixo{cursor:default}
.rid-mv-fixo:hover{background:none;box-shadow:none}   /* marca de outro projeto / tabela só-leitura: informa, não navega */
.rid-email-btn{background:#1f9d57 !important;border-color:#1f9d57 !important;color:#fff !important}
.rid-email-grp{display:inline-flex;gap:4px;align-items:center}
.rid-email-btn[disabled]{opacity:.5;cursor:not-allowed;filter:grayscale(.35)}
.list.ridac .reg-in[data-f="desc"],.list.ridac .reg-in[data-f="acao"]{min-width:0}
/* datas BR (dd/mm + botão calendário) — coluna AJUSTA ao conteúdo, liberando espaço p/ Descrição/Ação */
.list.ridac .td-date{width:1%;white-space:nowrap}
.datebr{position:relative;display:inline-flex;align-items:center;gap:1px}
.list.ridac .datebr{flex-shrink:0}   /* não comprime o widget de data → 📅 e campo não somem/cortam em colunas estreitas (dd/mm) */
.list.ridac .datebr .dbr-txt{width:auto;min-width:40px;padding:5px 3px}
.datebr .dbr-btn{flex:none;border:none;background:none;cursor:pointer;padding:0 1px;font-size:13px;line-height:1}
.datebr .dbr-btn:hover{filter:brightness(.85)}
.datebr .dbr-cal{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;padding:0;margin:0;pointer-events:none}
.rid-fmt{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--tx2)}
.rid-fmt select{font-size:11px;padding:2px 4px}
/* editor de anotação inline (estilo Matriz — substitui o prompt) */
.nota-row td{padding:0;background:#f6f8fd;border-bottom:1px solid var(--bd)}
.nota-edit{padding:8px 10px}
.nota-bar{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--tx2);margin-bottom:5px}
.nota-bar b{font-size:12px;color:var(--tx)}
.nota-bar .nota-date,.nota-bar .nota-close{border:1px solid var(--bd);background:#fff;border-radius:6px;padding:2px 8px;cursor:pointer;font-size:11px}
.nota-bar .nota-date:hover,.nota-bar .nota-close:hover{border-color:var(--ac);color:var(--ac)}
.nota-bar .nota-gravar{border:1px solid #1f9d57;background:#1f9d57;color:#fff;border-radius:6px;padding:3px 11px;cursor:pointer;font-size:11.5px;font-weight:600}
.nota-bar .nota-gravar:hover{background:#178048;border-color:#178048}
.nota-bar .nota-fmt{display:inline-flex;gap:1px;border:1px solid var(--bd);border-radius:6px;padding:1px}
.nota-bar .nf{border:none;background:transparent;color:var(--tx2);border-radius:4px;padding:2px 7px;cursor:pointer;font-size:12px;line-height:1}
.nota-bar .nf:hover{background:var(--s2);color:var(--tx)}
.nota-ta{width:100%;min-height:54px;border:1px solid var(--ac);border-radius:6px;padding:6px 8px;font-family:inherit;font-size:12px;line-height:1.4;resize:vertical;white-space:pre-wrap;color:var(--tx);background:#fff}
.nota-hist{margin-top:8px;border:1px solid var(--bd);border-radius:7px;background:#fbfcfe;padding:6px 8px;max-height:170px;overflow-y:auto}
.nota-hist-h{font-size:10.5px;font-weight:700;color:var(--tx2);margin-bottom:5px;display:flex;align-items:center;gap:6px}
.nota-hist-h .nh-ct{background:var(--s2);color:var(--tx2);border-radius:999px;padding:0 7px;font-size:10px}
.nh-row{display:flex;gap:8px;font-size:11px;line-height:1.35;padding:2px 0;border-top:1px dashed var(--bd)}
.nh-row:first-of-type{border-top:0}
.nh-d{flex:0 0 auto;color:#8a93a3;font-variant-numeric:tabular-nums;white-space:nowrap}
.nh-t{flex:1 1 auto;color:var(--tx);word-break:break-word}
.nh-vazio{font-size:11px;color:#9aa3b2;font-style:italic}
/* ações: 7 botões sempre em 1 linha, coluna no tamanho exato */
.list.ridac .rc-acoes{white-space:normal;line-height:1}
.list.ridac .rc-acoes button{padding:1px 3px;font-size:12px;line-height:1.05}
.rc-data{border-left:3px solid transparent}
.rc-d-futuro{border-left-color:#1f9d57} .rc-d-hoje{border-left-color:#c77700} .rc-d-atrasado{border-left-color:#d23b4e} .rc-d-sem{border-left-color:#cbd5e6} .rc-d-feito{border-left-color:#1f9d57}
.rc-leg{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px;font-size:11px;color:var(--tx2)}
/* legend + ⚙ Colunas na mesma linha (otimiza o espaço) */
.ridac-toolrow{display:flex;align-items:center;gap:14px;margin:4px 0 10px;flex-wrap:wrap}
.ridac-toolrow .rc-leg{flex:1;margin:0;min-width:280px}
.ridac-toolrow .ridac-cols{flex:none}
.ridac-filtros{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.ridac-filtros .rid-fbusca{flex:1;min-width:220px;padding:6px 10px;border:1px solid var(--bd);border-radius:7px;font:inherit;font-size:13px}
.ridac-filtros .rid-fbusca:focus{outline:none;border-color:var(--ac)}
.ridac-filtros select{padding:6px 8px;border:1px solid var(--bd);border-radius:7px;font:inherit;font-size:12.5px;background:var(--bg);cursor:pointer}
.rc-lg{display:inline-flex;align-items:center;gap:4px}
.rc-sep{width:1px;height:14px;background:var(--bd)}
.sl-b{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--bd)}
.sl-futuro{background:#e7f7ee} .sl-hoje{background:#fdf4e3} .sl-atrasado{background:#fdecee} .sl-sem{background:#eef1f6} .sl-feito{background:#1f9d57;color:#fff;font-size:9px;text-align:center;line-height:12px;border-color:#1f9d57}
/* KPIs do cabeçalho em cards */
.ridac-kpis{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 14px}
.rkpi{flex:1;min-width:96px;background:var(--s2);border:1px solid var(--bd);border-radius:9px;padding:8px 12px}
.rkpi .rkv{font-size:22px;font-weight:800;line-height:1.1;color:var(--tx)}
.rkpi .rkl{font-size:10.5px;color:var(--tx2);text-transform:uppercase;letter-spacing:.03em;margin-top:2px}
.rkpi.ok .rkv{color:var(--ok)} .rkpi.wa .rkv{color:var(--wa)} .rkpi.er .rkv{color:var(--er)}
.rkpi.rkpi-bar{min-width:150px;display:flex;flex-direction:column;justify-content:center}
.rkbar{height:8px;background:#e3e8f1;border-radius:5px;overflow:hidden;margin:4px 0}
.rkbar span{display:block;height:100%;background:var(--ok);border-radius:5px}
.rkpi-bar .rkv2{font-size:13px;font-weight:700;color:var(--ok)}
/* Tabela em largura total — gráficos foram p/ cards abaixo (R: layout RIDAC) */
.ridac-tablewrap{min-width:0;overflow-x:auto}
.ridac-charts{display:flex;gap:14px;margin-top:14px;flex-wrap:wrap}
.ridac-charts .card{flex:0 1 340px;min-width:260px;margin:0}
.ridac-charts canvas{max-height:220px}
.ridac-undo{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:9999;background:#243049;color:#fff;border-radius:10px;padding:10px 16px;display:none;align-items:center;gap:14px;box-shadow:0 8px 24px rgba(0,0,0,.25);font-size:13px}
.ridac-undo .ru-btn{background:#3457d5;color:#fff;border:none;border-radius:6px;padding:5px 12px;cursor:pointer;font-weight:600}
.ridac-undo .ru-btn:hover{background:#2746c0}
.ridac-id{font-weight:700;color:var(--ac);white-space:nowrap}
.rid-grupo-lk{cursor:pointer;color:var(--ac);font-weight:600;border-radius:5px;padding:1px 4px}
.rid-grupo-lk:hover{background:#eef3ff;text-decoration:underline}
.ridac-nav{display:inline-flex;gap:3px;align-items:center}
.ridac-nav .rn{width:25px;height:25px;border:1px solid var(--bd);background:var(--sf);border-radius:6px;font-size:12px;font-weight:700;color:var(--tx2);cursor:pointer;padding:0}
.ridac-nav .rn:hover{border-color:var(--ac);color:var(--tx)}
.ridac-nav .rn.on{background:var(--ac);border-color:var(--ac);color:#fff}
/* Letra + palavra: a inicial é a marca (R·I·D·A·C), o resto do nome diz o que é.
   `width:auto` sobrepõe o quadradinho de 25px do `.rn` — quem fica quadrado é só 🔄/👥. */
.ridac-nav .rn-cat{width:auto;padding:0 8px;font-size:11.5px;font-weight:600;white-space:nowrap}
.ridac-nav .rn-cat b{font-size:13.5px;font-weight:800}
.ridac-nav .rn-sync{margin-left:5px;font-size:13px;font-family:"Segoe UI Emoji","Segoe UI Symbol",sans-serif;color:var(--ac)}
.ridac-nav .rn-sync:hover{background:var(--ac);border-color:var(--ac);color:#fff}
/* Ação colorida por status (verde=fechado · vermelho=atraso · cinza=aberto/cancelado) */
.list.ridac .reg-ta.acao-conc{color:#1f9d57;font-weight:600}
.list.ridac .reg-ta.acao-atras{color:#d23b4e;font-weight:600}
.list.ridac .reg-ta.acao-fut{color:#6b7686}
.list.ridac .reg-ta.acao-canc{color:#98a3b5;text-decoration:line-through}
/* linhas zebradas (degradê) */
.list.ridac>tbody>tr.rid-zebra>td{background:#f7f9fc}
/* item Cancelado (flag de seleção) */
.list.ridac>tbody>tr.rid-canc{opacity:.62}
.list.ridac>tbody>tr.rid-canc .reg-in{text-decoration:line-through;color:#8a94a6}
.list.ridac .rc-canc,.list.ridac th.rc-canc-h{text-align:center}
.list.ridac .rc-canc input{cursor:pointer;margin:0}
.list.ridac .rc-rel,.list.ridac th.rc-rel-h{text-align:center}
.list.ridac th.rc-rel-h{font-size:9px;font-weight:700;color:var(--ac)}
.list.ridac .rc-rel input{cursor:pointer;margin:0;accent-color:var(--ac)}
.tag.canc{background:#e2e6ec;color:#6b7686}
/* Agrupar por Group */
.ridac-filtros .rid-agr{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--tx2);cursor:pointer;white-space:nowrap}
.list.ridac>tbody>tr.rid-grp{cursor:pointer}
.list.ridac>tbody>tr.rid-grp>td{padding:6px 8px;background:var(--s2);border-top:2px solid var(--bd);font-size:12.5px}
.list.ridac>tbody>tr.rid-grp:hover>td{background:#eef2f8}
.rid-grp-tw{display:inline-block;width:14px;color:var(--ac);font-weight:700}
.rid-grp-ct{background:var(--ac);color:#fff;border-radius:9px;padding:0 7px;font-size:11px;font-weight:700;margin-left:4px}
.list.ridac>tbody>tr.rid-sub>td:first-child{padding-left:24px;border-left:3px solid var(--bd)}
#telaRef{position:fixed;left:12px;bottom:8px;z-index:70;font-size:11px;font-weight:600;color:#b8c0cc;pointer-events:none;user-select:none}
/* Selo de código por quadrante (mapaCodigos.js) — canto inferior direito, bem discreto */
.qhost{position:relative}
.qcode{position:absolute;right:3px;bottom:2px;z-index:60;font-size:9px;line-height:1;font-weight:600;letter-spacing:.02em;color:#c2c8d2;background:rgba(255,255,255,.5);padding:1px 4px;border-radius:4px;pointer-events:none;user-select:none;opacity:.5;max-width:62%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.qhost:hover>.qcode{opacity:.95;color:#7a8290}
/* Painel Baselines & Snapshots (modal) */
.bs-ov{position:fixed;inset:0;z-index:200;background:rgba(20,30,60,.35);display:flex;align-items:center;justify-content:center}
.bs-card{background:var(--sf);border:1px solid var(--bd);border-radius:14px;box-shadow:0 24px 70px rgba(20,30,60,.35);width:960px;max-width:94vw;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}
.bs-head{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--ac);color:#fff}
.bs-head b{flex:1;font-size:14px}
.bs-head .bs-x{background:rgba(255,255,255,.2);border:none;color:#fff;border-radius:6px;width:26px;height:26px;cursor:pointer}
.bs-body{padding:14px 16px;overflow:auto}
.bs-sec{margin-bottom:16px}
.bs-sh{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:700;margin-bottom:8px;color:var(--tx)}
.bs-add{background:var(--s2);border:1px solid var(--bd);border-radius:7px;padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer;color:var(--tx)}
.bs-add:hover{border-color:var(--ac)}
.bs-add.on{background:var(--ac);border-color:var(--ac);color:#fff}   /* modo diferente do padrão ligado (ex.: ⇕ Encaixe) — mesma linguagem dos chips .ridac-cols.on */
.bs-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--bd);border-radius:8px;margin-bottom:5px;background:var(--bg)}
.bs-nm{flex:1;font-size:13px;font-weight:600}
.bs-tag{font-size:10px;font-weight:700;color:var(--ok);background:#e7f7ee;border-radius:4px;padding:1px 5px}
.bs-dt{font-size:11px;color:var(--tx2)}
.bs-row button{background:var(--s2);border:1px solid var(--bd);border-radius:6px;padding:3px 9px;font-size:12px;cursor:pointer;color:var(--tx)}
.bs-row button:hover{border-color:var(--ac)}
.bs-row .bs-del{color:var(--er);padding:3px 7px}
.bs-empty{font-size:12px;color:var(--tx2);padding:6px 2px}
.bs-cmp{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px;font-size:12px}
.bs-cmp select{padding:4px 6px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:12px;background:var(--bg)}
.bs-cmp>button{background:var(--ac);border:1px solid var(--ac);color:#fff;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer}
.bs-diff{flex-basis:100%;margin-top:6px}
.bs-difftab{width:100%;border-collapse:collapse;font-size:12px}
.bs-difftab th,.bs-difftab td{text-align:left;padding:3px 6px;border-bottom:1px solid var(--bd)}
.bs-difftab td.late{color:var(--er);font-weight:700} .bs-difftab td.ahead{color:var(--ok);font-weight:700}
.bs-difftab .late{color:var(--er);font-weight:700} .bs-difftab .ahead{color:var(--ok);font-weight:700}
.bs-cmptools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 8px}
.bs-cmptools button{background:var(--bg);border:1px solid var(--bd);border-radius:6px;padding:3px 9px;font-size:11px;font-weight:600;cursor:pointer}
.bs-cmptools button:hover{border-color:var(--ac);color:var(--ac)}
.bs-tree td.bs-item{white-space:normal;line-height:1.5}
.bs-tree .bs-r-fase td{background:rgba(37,99,235,.07);font-weight:700}
.bs-tree .bs-r-frente td{background:rgba(13,148,136,.05)}
.bs-tree .bs-r-frente td.bs-item{padding-left:14px}
.bs-tree .bs-r-grupo td{background:rgba(124,58,237,.05)}
.bs-tree .bs-r-grupo td.bs-item{padding-left:26px}
.bs-tree .bs-r-ativ td.bs-item{padding-left:42px}
.bs-tree .bs-r-ativ:hover td{background:rgba(0,0,0,.03)}
.bs-exp{background:none;border:none;cursor:pointer;font-size:11px;width:16px;padding:0;color:var(--ac)}
.bs-exp-sp{display:inline-block;width:16px}
.bs-lvl{display:inline-block;font-size:8.5px;text-transform:uppercase;letter-spacing:.04em;padding:1px 4px;border-radius:4px;margin-right:3px;color:#fff;vertical-align:middle}
.bs-lvl-fase{background:#2563eb} .bs-lvl-frente{background:#0d9488} .bs-lvl-grupo{background:#7c3aed}
.bs-lvl-ativ{background:none;color:#8a94a6;font-size:11px;padding:0}
.bs-cnt{font-size:10px;color:#8a94a6;font-weight:400}
.bs-arw{opacity:.5;margin:0 3px} .bs-dt2{font-size:11px} .bs-z{opacity:.35}
.bk-in{width:100%;border:1px solid var(--bd);border-radius:4px;padding:5px 7px;font-size:12px;background:#fff;color:var(--tx)}
.bk-in:focus{outline:none;border-color:var(--ac)}
.bk-area{min-width:80px;max-width:120px}
tr.bk-feito{opacity:.6} tr.bk-descartado{opacity:.45;text-decoration:line-through}
tr.bk-fazendo td:first-child{box-shadow:inset 3px 0 0 var(--wa)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--s2);border:1px solid var(--bd);border-radius:14px;padding:3px 6px 3px 10px;font-size:12px}
.chip button{border:none;background:var(--bd);color:var(--tx);border-radius:50%;width:16px;height:16px;line-height:14px;cursor:pointer;padding:0;font-size:12px}
.chip button:hover{background:#d23b4e;color:#fff}
.cal-split{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.cal-left{flex:1 1 360px;min-width:330px}
.cal-right{flex:1 1 540px;min-width:330px}
.cal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.cal-mes{background:var(--bg);border:1px solid var(--bd);border-radius:8px;padding:8px}
.cal-mes-h{font-size:12px;font-weight:600;text-align:center;margin-bottom:4px}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);font-size:9px;color:var(--tx2);text-align:center}
.cal-dias{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-top:2px}
.cd{font-size:10px;text-align:center;padding:2px 0;border-radius:3px;color:var(--tx)}
.cd.vazio{visibility:hidden}
.cd.folga{background:var(--s2);color:var(--tx2)}
.cd.feriado{background:#fde2e6;color:#d23b4e}
.cd.sd{outline:2px solid var(--ac);font-weight:700}
.cd.ini{outline:2px solid #1f9d57;font-weight:700}
.cal-leg{margin-top:12px;font-size:10px;color:var(--tx2);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cal-leg .cd{padding:0 5px}
.list tr.cal-row:hover>td{background:#eef3ff}
.list tr.cal-row.sel>td{background:#dbe7ff}
/* Status do projeto — pílula do ciclo de vida (leitura; clique abre Projetos › Editar) */
.proj-status{margin-left:8px;border:1px solid var(--bd);background:var(--sf);border-radius:999px;padding:2px 10px;font-size:11px;font-weight:700;cursor:pointer;line-height:1.7;vertical-align:middle}
#barraBot .proj-status{margin-left:0;line-height:1.5;padding:2px 9px}   /* na barra de ferramentas (18/08/2026): 1º ícone da 1ª linha, densidade da barra */
.proj-status.st-nao-iniciado{color:#475569;border-color:#cbd5e1;background:#f1f5f9}
.proj-status.st-andamento{color:#15803d;border-color:#bbf7d0;background:#f0fdf4}
.proj-status.st-espera{color:#9a6700;border-color:#e6cf8e;background:#fff7e6}
.proj-status.st-encerrado{color:#fff;background:#334155;border-color:#334155}
.proj-status.st-cancelado{color:#fff;background:var(--er);border-color:var(--er)}
body.proj-locked .view.active>.card:first-child::before,body.proj-locked #view-cronograma.active::before{content:"🔒 Somente leitura — o Status deste projeto trava as edições. Para reabrir: 📁 Projeto › Editar › Status.";display:block;background:#fdeef0;color:#9a1b2e;border:1px solid var(--er);border-radius:8px;padding:7px 12px;margin:0 0 12px;font-size:12.5px;font-weight:600}
.ls-farol{font-size:14px;line-height:1;cursor:default;user-select:none}
.ls-farol.on{color:#1f9d57}
.ls-farol.off{color:#d23b4e}
.kpi-eq th:nth-child(2),.kpi-eq th:nth-child(3),.kpi-eq td:nth-child(2),.kpi-eq td:nth-child(3){text-align:right;font-variant-numeric:tabular-nums;width:130px}
.kpi-eq td:nth-child(2),.kpi-eq td:nth-child(3){font-weight:600}
.kpi-eq td:first-child{color:var(--tx2)}
.hier-ctrl{display:flex;gap:10px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.hier-ctrl .hf-sep{width:1px;height:16px;background:var(--bd)}
.hf-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;border:1px solid var(--bd);background:var(--sf);border-radius:12px;padding:2px 9px;cursor:pointer;color:var(--tx2);white-space:nowrap;user-select:none}
.hf-chip::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}
.hf-chip b{font-weight:600}
.hf-chip.on{border-color:var(--c);color:var(--tx)}
.hf-chip:not(.on){opacity:.45;text-decoration:line-through}
.hf-chip:hover{border-color:var(--c)}
.hier-fases{margin-bottom:4px}
.hf-fase::before{border-radius:2px;transform:rotate(45deg);width:7px;height:7px}
.hf-chip .hf-nome{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scrv-leg{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:10px}
.scrv{display:inline-flex;align-items:center;gap:6px;font-size:11px;cursor:pointer;color:var(--tx);user-select:none;padding:2px 4px;border-radius:4px}
.scrv:hover{background:var(--s2)}
.scrv i{width:16px;height:3px;border-radius:2px;display:inline-block}
.scrv.off{opacity:.4;text-decoration:line-through}
.kpi-cards-eq{display:flex;gap:6px}
.kpi-cards-eq>*{flex:1 1 0;min-width:0}
.kpi-cards-eq.kpi-2lin{display:grid;grid-template-columns:repeat(6,1fr)}
.kpi-cards-eq.kpi-12{display:grid;grid-template-columns:repeat(12,1fr)}
.kpi-cards-eq.kpi-9{display:grid;grid-template-columns:repeat(9,1fr)}
.kpi-cards-eq.kpi-10{display:grid;grid-template-columns:repeat(10,1fr)}
/* Effort Plan — matriz recurso × mês */
.ef-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}
.ef-wrap{overflow:auto;max-height:72vh;border:1px solid var(--bd);border-radius:8px}
.ef-tab{border-collapse:separate;border-spacing:0;font-size:12px;white-space:nowrap}
.ef-tab th,.ef-tab td{border-right:1px solid var(--bd);border-bottom:1px solid var(--bd);padding:3px 6px;text-align:center}
.ef-tab thead th{background:var(--s2);position:sticky;top:0;z-index:2;font-weight:600;color:var(--tx2)}
.ef-tab .ef-nome{position:sticky;left:0;background:#fff;text-align:left;min-width:200px;z-index:1;white-space:nowrap}
.ef-tab thead th.ef-nome{z-index:3}
.ef-tab .ef-nome small{display:block;color:var(--tx2);font-size:10px}
.ef-in{width:56px;border:1px solid transparent;background:transparent;text-align:center;font:inherit;padding:2px;border-radius:4px;color:var(--tx)}
.ef-in:hover{border-color:var(--bd)}
.ef-in:focus{border-color:var(--ac);outline:none;background:#fff}
.ef-tab .ef-tot{font-weight:700;background:#f5f8ff}
.ef-trow td{font-weight:700;background:var(--s2);position:sticky;bottom:0;z-index:1}
.ef-trow .ef-nome{z-index:2}
.ef-nm{border:1px solid transparent;background:transparent;font:inherit;font-weight:700;color:var(--tx);width:calc(100% - 24px);padding:2px 3px;border-radius:4px}
.ef-nm:hover{border-color:var(--bd)}
.ef-nm:focus{border-color:var(--ac);outline:none;background:#fff}
.ef-del{border:none;background:transparent;cursor:pointer;opacity:.45;font-size:12px;padding:0 2px}
.ef-del:hover{opacity:1}
.ef-range{font-size:12px;color:var(--tx2);display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.ef-range input[type=month]{font:inherit;padding:2px 4px;border:1px solid var(--bd);border-radius:6px}
.kpi-card{background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:9px 5px}
.p4-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.p4{background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:12px}
.p4 h3{margin:0 0 8px;font-size:13px;color:var(--tx)}
/* Status report (aba Status — Curva S + 4P's) */
.st-hd{display:flex;gap:0;flex-wrap:wrap}
.st-hd>div{flex:1;min-width:130px;border-left:3px solid var(--ac);padding:3px 12px;margin:2px 0}
.st-hd small{display:block;font-size:10px;color:var(--tx2);text-transform:uppercase;letter-spacing:.03em}
.st-hd b{font-size:14px;color:var(--tx)}
.st-row{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start}
.st-row .st-tabcard,.st-row .st-chartcard{flex:1 1 420px;min-width:330px}
.st-tab th{text-align:center;font-size:11px;background:var(--s2)}
.st-tab td{text-align:center;padding:6px 8px}
.st-tab td:first-child,.st-tab th:first-child{text-align:left}
.st-tab tr.st-proj td{background:var(--s2)}
.st-leg{margin-top:10px;font-size:11px;color:var(--tx2);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.st-leg span{display:inline-flex;align-items:center;gap:4px}
.st-leg .st-sw{display:inline-block;width:12px;height:12px;border-radius:3px}
.pf-leg{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--tx2);margin:0 0 8px}
.pf-leg i.pf-sw{display:inline-block;width:14px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}
.pf-leg i.pf-sw-hoje{width:2px;height:12px;background:#1d4ed8;border-radius:0}
.kc-h{font-size:10.5px;color:var(--tx2);margin-bottom:8px;font-weight:600;line-height:1.25;height:26px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.kc-row{display:flex;flex-direction:column;gap:6px}
.kc-cell{text-align:center}
.kc-cell .kv{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.kc-cell .kl{font-size:9px;color:var(--tx2);margin-top:1px;text-transform:uppercase;letter-spacing:.04em}
.kc-cell+.kc-cell{border-top:1px solid var(--bd);padding-top:6px}
.filtros-bar{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.f-busca{flex:1;min-width:140px;max-width:260px;padding:6px 9px;border:1px solid var(--bd);border-radius:6px;background:#fff;color:var(--tx);font-size:12.5px}
.f-busca:focus{outline:none;border-color:var(--ac)}
.fdrop{position:relative}
.fdrop-btn{background:#fff;border:1px solid var(--bd);border-radius:6px;padding:6px 10px;cursor:pointer;white-space:nowrap;font-size:12.5px;color:var(--tx);display:inline-flex;align-items:center;justify-content:space-between;gap:8px;min-width:104px}
.fdrop-btn:hover{border-color:var(--ac)}
.fdrop.open{z-index:120}
.fdrop.open .fdrop-btn{border-color:var(--ac);box-shadow:0 0 0 2px rgba(64,110,255,.12)}
.fcar{color:var(--tx2);font-size:10px}
.fdrop-menu{display:none;position:absolute;z-index:200;top:calc(100% + 4px);left:0;min-width:190px;max-height:280px;overflow:auto;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 8px 24px rgba(20,30,60,.14);padding:4px}
.fdrop.open .fdrop-menu{display:block}
.fdrop-opt{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:5px;cursor:pointer;font-size:13px;white-space:nowrap}
.fdrop-opt:hover{background:var(--s2)}
.fdrop-opt.sel{background:#eef3ff;color:var(--ac);font-weight:600}
.fchk{width:14px;display:inline-block;text-align:center;color:var(--ac)}
.fdrop-head{font-size:10px;color:var(--tx2);padding:4px 10px 6px;border-bottom:1px solid var(--bd);margin-bottom:4px}
.fdrop-clear{color:var(--ac);cursor:pointer;text-decoration:underline}
.upload-sections{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}
.upload-section{min-width:0}
.upload-section.us-dl{flex:0 1 360px}
.upload-section.us-up{flex:1 1 560px}
@media(max-width:900px){.upload-sections{flex-direction:column}.upload-section.us-dl,.upload-section.us-up{flex:1 1 auto;width:100%}}
.upload-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;max-width:1000px}
.us-dl .upload-grid{max-width:none}
.upload-grid .card{margin:0;display:flex;flex-direction:column}
.upload-grid .card h3{margin:0 0 8px;font-size:14px;color:var(--tx)}
.upload-grid .card p{flex:1;font-size:12.5px;line-height:1.5;margin:0 0 12px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:10px}
.fld{display:flex;flex-direction:column;gap:4px}
.fld label{font-size:11px;color:var(--tx2)}
.e-ms{display:inline-flex;align-items:center;gap:5px;font-size:15px;color:var(--tx);cursor:pointer;border:1px solid var(--bd);border-radius:6px;padding:6px 10px;background:#fff;white-space:nowrap}
.e-ms input{width:auto;margin:0}
.fld input,.fld select,.fld textarea{background:#fff;border:1px solid var(--bd);
  color:var(--tx);border-radius:6px;padding:7px 9px;font-size:13px;min-width:160px}
.btn{background:var(--ac);border:1px solid var(--ac);color:#fff;border-radius:6px;
  padding:8px 14px;font-weight:600;font-size:13px}
.btn.sec{background:var(--s2);color:var(--tx);border-color:var(--bd)}
.btn.danger{background:var(--er);border-color:var(--er);color:#fff}
table.list{width:100%;border-collapse:collapse;font-size:12px}
table.list th,table.list td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--bd)}
table.list th{color:var(--tx2);font-size:11px}
table.list.xtab th,table.list.xtab td{white-space:nowrap;text-align:center}   /* Cruzada: 4 indic. por célula numa linha só (sem quebra) */
table.list.xtab th:first-child,table.list.xtab td:first-child{text-align:left}
/* (visão "lado a lado" das Tabelas: o CSS .tab-sxs é injetado inline em tabelasUI.js p/ não depender de cache do style.css) */
.fg-tab td{vertical-align:top;border-left:1px solid var(--bd)}
.fg-tab td:first-child{border-left:0}
.fg-tab .fg-fr{font-weight:700}
.fg-tab .fg-li{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:1px 0}
.fg-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none;align-self:center}
.fg-fl{flex:none;font-size:11px;align-self:center;line-height:1}
.fg-tab th .fg-dot,.fg-tab th .fg-fl{margin-right:5px;vertical-align:middle}
.fg-lock{flex:none;font-size:10.5px;line-height:1;align-self:center}
.fg-rod .fg-dot{vertical-align:middle;margin:0 2px}
.sp-nav{position:fixed;right:8px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:7px;align-items:flex-end;z-index:60;background:rgba(255,255,255,.88);border:1px solid var(--bd);border-radius:12px;padding:8px 6px;backdrop-filter:blur(2px);max-height:82vh;overflow:auto}
.sp-nav-it{display:flex;align-items:center;gap:7px;cursor:pointer;user-select:none}
.sp-nav-dot{width:10px;height:10px;border-radius:50%;background:var(--bd);transition:background .15s,transform .15s;flex:none}
.sp-nav-it:hover .sp-nav-dot{background:var(--tx2);transform:scale(1.25)}
.sp-nav-it.on .sp-nav-dot{background:var(--ac)}
.sp-nav-lbl{display:none;font-size:11.5px;color:var(--tx2);white-space:nowrap;max-width:230px;overflow:hidden;text-overflow:ellipsis}
.sp-nav:hover .sp-nav-lbl{display:block}
.sp-nav-it:hover .sp-nav-lbl{color:var(--tx)}
.sp-nav-it.on .sp-nav-lbl{color:var(--ac);font-weight:700}
.sp-nav-ico{font-size:13px;line-height:1;color:var(--tx2);width:10px;text-align:center;flex:none}
.sp-nav-topo:hover .sp-nav-ico{color:var(--tx)}
/* seguir-foco: pulso amarelo na linha de destino (grade) p/ o olho achar onde caiu */
@keyframes focoFlash{0%,55%{background:#ffe9a8}100%{background:transparent}}
#gradeBody tr.foco-flash td{animation:focoFlash 2.2s ease-out 1}
.cp-jump{cursor:pointer}
.cp-jump:hover{color:var(--ac);text-decoration:underline}
.hi-jump{cursor:pointer}
.hi-jump:hover{color:var(--ac);text-decoration:underline}
/* 🎬 Modo apresentação — esconde controles p/ projetar ao cliente (Esc sai) */
#view-status-projeto.sp-apresenta .sp-topbar{display:none}
#view-status-projeto.sp-apresenta .st-quad-ctrl,#view-status-projeto.sp-apresenta .fg-ctrl,#view-status-projeto.sp-apresenta .hier-ctrl,
#view-status-projeto.sp-apresenta .fg-bar,#view-status-projeto.sp-apresenta .rel-flts,#view-status-projeto.sp-apresenta .sp-modes,
#view-status-projeto.sp-apresenta input[type="checkbox"],#view-status-projeto.sp-apresenta .rel-lupa,#view-status-projeto.sp-apresenta .crv-racional{display:none!important}
.sp-apre-sair{display:none}
#view-status-projeto.sp-apresenta .sp-apre-sair{display:block;position:fixed;top:10px;right:14px;z-index:80;background:var(--sf);border:1px solid var(--bd);border-radius:18px;padding:6px 14px;cursor:pointer;font-size:12px;color:var(--tx2);box-shadow:0 2px 8px rgba(0,0,0,.14)}
#view-status-projeto.sp-apresenta .sp-apre-sair:hover{color:var(--tx);border-color:var(--ac)}
/* 📜 Resumo executivo */
.rx-frase{font-size:15px;line-height:1.55;margin:2px 0 10px;max-width:none}
.rx-prazo{font-size:13.5px;line-height:1.5;background:#fff6ee;border:1px solid #f0d9c0;border-radius:8px;padding:8px 12px}
.rx-prazo.ok{background:#eef9f1;border-color:#bfe3cc}
.rx-prazo.neutro{background:var(--s2);border-color:var(--bd);color:var(--tx2)}
.fg-li .fg-nm{flex:1;min-width:0;overflow-wrap:anywhere}
.fg-li .fg-num{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.fg-tab td.fg-v{background:#e9f6ef}
.fg-tab td.fg-a{background:#fdf3e3}
.fg-tab td.fg-r{background:#fdeaec}
.fg-ctrl{display:flex;gap:8px;align-items:center;flex-wrap:nowrap;margin-bottom:8px;font-size:12px}
.fg-chips{display:flex;gap:6px;align-items:center;flex:1 1 0;min-width:0}
.fg-chips .hf-chip{flex:0 1 auto;min-width:36px}
.fg-chips .hf-nome{max-width:none}
.fg-ctrl label{display:inline-flex;gap:4px;align-items:center;color:var(--tx2);white-space:nowrap}
.fg-ctrl select{font-size:12px;padding:2px 4px;border:1px solid var(--bd);border-radius:6px;background:var(--sf)}
.fg-wrap{position:relative;padding-right:26px}
.fg-bar{position:absolute;top:0;right:0;bottom:0;width:20px;border:1px solid var(--bd);border-radius:8px;background:var(--sf);z-index:5;overflow:hidden}
.fg-bar .fg-bar-h{text-align:center;cursor:pointer;font-size:12px;padding:2px 0;color:var(--tx2)}
.fg-bar .fg-bar-list{display:none;padding:6px 10px;max-height:340px;overflow:auto}
.fg-bar:hover{width:250px;bottom:auto;min-height:40px;box-shadow:0 4px 14px rgba(0,0,0,.12)}
.fg-bar:hover .fg-bar-list{display:block}
.fg-bar-t{font-weight:700;font-size:11px;margin-bottom:4px}
.fg-bar-it{display:block;font-size:11.5px;padding:1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fg-rod{margin:6px 0 0;font-size:11px}
.fg-mc{position:relative;display:inline-block}
.fg-mc summary{list-style:none;cursor:pointer}
.fg-mc summary::-webkit-details-marker{display:none}
.fg-mc-list{position:absolute;top:calc(100% + 4px);left:0;z-index:30;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.14);padding:8px 12px;max-height:300px;overflow:auto;min-width:260px}
.pr-grp td{background:var(--s2);font-weight:700;border-top:2px solid var(--bd)}
.pr-grp.pr-sub td{background:var(--sf);font-weight:600;border-top:1px solid var(--bd)}
.pr-th{cursor:pointer;user-select:none;white-space:nowrap}
.pr-th:hover{color:var(--ac);text-decoration:underline}
.pr-dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}
.hf-clear{color:#d23b4e}
.hf-clear::before{display:none}
.tbl-cnum th:not(:first-child),.tbl-cnum td:not(:first-child){text-align:center;font-variant-numeric:tabular-nums}
.rel-tab td{padding:12px 8px}
.rel-let{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;color:#fff;font-weight:700;font-size:12px}
.rel-flts{display:inline-flex;gap:5px;margin-left:10px;vertical-align:middle}
.rel-flt{cursor:pointer;user-select:none}
.rel-flt:hover{outline:2px solid var(--bd)}
.rel-flt.off{opacity:.3;filter:grayscale(.5)}
.rel-lupa{background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;font-size:13px;padding:2px 5px;color:var(--tx2)}
.rel-lupa:hover{background:var(--s2);border-color:var(--bd);color:var(--tx)}
.week-toggle{display:flex;gap:6px}
.week-toggle button{background:var(--s2);border:1px solid var(--bd);color:var(--tx2);
  border-radius:6px;width:42px;height:34px;font-weight:600}
.week-toggle button.on{background:var(--ac);border-color:var(--ac);color:#fff}

/* EDITOR DOCK */
.editor-dock{display:none}
.editor-dock.open{display:flex;position:fixed;inset:0;z-index:250;background:rgba(20,30,60,.45);align-items:center;justify-content:center;padding:2vh 1vw}
.ed-card{background:var(--sf);border-radius:12px;box-shadow:0 18px 55px rgba(0,0,0,.35);width:98vw;height:96vh;max-height:96vh;display:flex;flex-direction:column;overflow:hidden}
.ed-head{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-bottom:1px solid var(--bd);background:var(--s2)}
.ed-head b{font-size:15px}
.ed-num{font-size:12px;font-weight:600;color:var(--tx2);background:var(--s2);border:1px solid var(--bd);border-radius:6px;padding:1px 7px;margin-left:6px;vertical-align:middle}
.ed-x{background:none;border:none;font-size:18px;cursor:pointer;color:var(--tx2);line-height:1;padding:0 4px}
.ed-x:hover{color:var(--er)}
.ed-body{padding:8px 16px;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.ed-body .row{margin-bottom:6px;align-items:flex-start}
.ed-body .fld{gap:2px}
.ed-notas{width:100%;box-sizing:border-box;resize:vertical;flex:1 1 0;min-height:80px;font:inherit;line-height:1.35;white-space:pre-wrap}
/* Editor: fonte um pouco maior (só dentro do dock de atividade) */
.ed-body{font-size:13.5px}
.ed-body label{font-size:12px}
.ed-body input,.ed-body select,.ed-body textarea{font-size:14px}
/* Editor: cabeçalho compacto (tudo no topo) + 3 colunas temáticas que CABEM em 1 tela (sem rolagem) */
.ed-hdrow{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:flex-end;margin:1px 0 2px}
.ed-hdrow .fld{min-width:0;gap:1px}
.ed-hdrow .fld input,.ed-hdrow .fld select{width:100%;min-width:0;box-sizing:border-box}
.ed-body>.ed-flags{margin:1px 0}
.ed-cols3{flex:1;min-height:0;display:grid;grid-template-columns:0.95fr 1.42fr 1fr;gap:8px;margin-top:1px}
.ed-cols3>.ed-col{display:flex;flex-direction:column;gap:6px;min-width:0}   /* ESCOPADO ao editor: .ed-col solto também é a CÉLULA editável da grade (arvore.js) — sem o escopo o td virava flex e a linha inflava (Gantt desalinhado + ↕ travado, 25/07/2026) */
.ed-cols3>.ed-col{min-height:0;overflow-y:auto;overflow-x:hidden}   /* rolagem só aparece se REALMENTE estourar; o alvo é caber sem ela */
.col-plan>*{flex-shrink:0}
.sec-datas{overflow-x:auto}
.sec-datas .ed-dgrid{width:100%;font-size:12px}
.sec-datas .ed-dgrid .datebr-txt{font-size:12px}
.sec-datas .ed-pctreg{margin:3px 0 0}
/* blocos MAIS DESTACADOS um do outro (pedido do usuário): borda + sombra + faixa lateral grossa */
.ed-sec{border:1px solid var(--bd);border-left:4px solid var(--sec-c,var(--ac));border-radius:9px;padding:5px 9px 6px;background:var(--sec-bg,var(--sf));min-width:0;box-shadow:0 1px 3px rgba(15,23,42,.08)}
.ed-sec-h{margin:0 0 4px}
.sec-ridac-inline{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.sec-bloq .rid-from-task{display:inline-flex;gap:3px}
.sec-bloq .rid-from-task .btn{padding:1px 8px;font-size:11.5px;font-weight:700;min-width:0}
/* Anotações: 2 abas (livre × log datado) */
.col-upd .sec-notas{flex:1;display:flex;flex-direction:column;min-height:0}
.ed-tabs{gap:4px}
.nt-tab{cursor:pointer;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:7px 7px 0 0;border:1px solid transparent;color:var(--tx2)}
.nt-tab.on{color:var(--sec-c,var(--ac));background:#fff;border-color:var(--bd);border-bottom-color:#fff}
.nt-tab:not(.on):hover{background:var(--s2)}
.nt-badge{font-size:10px;font-weight:700;background:var(--sec-c,var(--ac));color:#fff;border-radius:8px;padding:0 5px}
/* a aba inativa do bloco de notas some por [hidden]: sem estas 2 regras as DUAS abas ficam na tela ao mesmo tempo */
.ed-notas-tools[hidden],#e_notas_datado[hidden]{display:none}
.ed-notas-tools{display:inline-flex;align-items:center;gap:6px;margin-left:auto}
.ed-notas-tools .rec-mode{font-size:11.5px;padding:2px 6px}
#e_notas_datado{flex:1;display:flex;flex-direction:column;min-height:0;gap:5px}
.nt-add{display:flex;gap:5px}
.nt-add input{flex:1;min-width:0;box-sizing:border-box;padding:4px 8px;border:1px solid var(--bd);border-radius:6px;font-size:12.5px}
.ed-notas-view{flex:1;min-height:70px;overflow:auto;border:1px solid var(--bd);border-radius:6px;padding:6px 8px;background:#fff;font-size:12.5px;line-height:1.35}
.nv-ent{display:grid;grid-template-columns:18px 74px 1fr;gap:2px 6px;align-items:baseline;padding:3px 2px;border-bottom:1px solid #f1f5f9}
.nv-ic{text-align:center}
.nv-dt{color:var(--tx2);font-size:11px;white-space:nowrap}
.nv-tx{min-width:0;word-break:break-word}
.nv-cont{color:var(--tx2);font-size:11.5px;white-space:pre-wrap}
.nv-grp{margin-bottom:8px}
.nv-grp-h{position:sticky;top:-6px;background:#fff;font-size:11px;font-weight:700;color:var(--ac);padding:4px 2px 3px;border-bottom:1px solid var(--bd);margin-bottom:2px}
.nv-grp-n{font-weight:600;color:var(--tx2);background:var(--s2);border-radius:8px;padding:0 6px;font-size:10.5px;margin-left:4px}
.nv-vazio{color:var(--tx2);font-size:12px;padding:10px 4px;text-align:center}
/* mini-toggle nos cabeçalhos de seção (só atribuídos · 1/linha · agrupar) */
.ed-mini{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--bd);border-radius:6px;padding:2px 7px;background:#fff;font-size:11px;font-weight:600;color:var(--tx2);cursor:pointer;white-space:nowrap}
.ed-mini input{width:auto;margin:0;cursor:pointer}
.ed-mini:has(input:checked){background:#ecfeff;border-color:var(--ac);color:#0e7490}
/* Recursos "só atribuídos": esconde não marcados e grupos que ficaram vazios */
.rec-so-sel .rec-chk:not(:has(input:checked)){display:none}
.rec-so-sel.rec-cols .rec-col:not(:has(input:checked)){display:none}
/* Campos personalizados/numéricos: densos por padrão (cabem sem rolar); toggle ▤ 1/linha empilha */
.sec-custom .cc-grid,.sec-num .cc-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:5px 7px}
.cc-1col .cc-grid{grid-template-columns:1fr !important}
.sec-num{--sec-c:#0e7490;--sec-bg:#effcff}
.sec-msp-calc .ed-calc{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:5px}
/* Seção PBS/Pacote e banner de atividade travada (F2) */
.ed-wp-banner{margin:0 0 8px;font-size:11.5px;line-height:1.4;padding:6px 9px;border-radius:7px;background:#eef2ff;border:1px solid #c7d2fe;color:#3730a3}
.ed-wp-banner.off{background:#fff7ed;border-color:#fed7aa;color:#9a3412}
.ed-sec.sec-pbs{margin-bottom:8px}
.chip.chip-lock{background:#eef2ff;border-color:#c7d2fe;color:#3730a3;opacity:.9}
.ed-sec-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11.5px;font-weight:700;letter-spacing:.01em;color:var(--sec-c,var(--ac));margin:0 0 6px}
.ed-sec-h .muted,.ed-sec-h small{font-weight:400}
.ed-sec .row{margin-bottom:0}
.ed-sec .fld>label{color:var(--tx2)}
.sec-datas{--sec-c:#2f6fed;--sec-bg:#f4f8ff}
.sec-restr{--sec-c:#c77700;--sec-bg:#fff8ef}
.sec-preds{--sec-c:#7c3aed;--sec-bg:#f8f5ff}
.sec-bloq{--sec-c:#d23b4e;--sec-bg:#fef5f6}
.sec-rec{--sec-c:#0f9d8f;--sec-bg:#f0fbf9}
.sec-notas{--sec-c:#64748b;--sec-bg:#f6f8fc}
.sec-ridac{--sec-c:#e8833a;--sec-bg:#fff7f0}
.sec-anexos{--sec-c:#0891b2;--sec-bg:#f1fbff}
.sec-rec #e_rec{min-height:150px;max-height:24vh;overflow:auto;border:0;padding:0;background:transparent}
.sec-rec #e_rec.rec-cols{max-height:none;overflow:visible}   /* colunas jornal balanceiam compacto (column-fill:balance); se a lista for enorme, quem rola é a coluna ② */
.sec-datas .ed-dgrid{width:100%}
@media (max-width:1100px){.ed-cols3{grid-template-columns:1fr 1fr;flex:0 0 auto}.ed-cols3>.ed-col{overflow-y:visible}.ed-body{overflow-y:auto}}
@media (max-width:700px){.ed-cols3{grid-template-columns:1fr}}

/* KPIs (relatórios) */
.kpis{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.kpi{background:var(--sf);border:1px solid var(--bd);border-radius:9px;padding:12px 14px;
  min-width:120px;box-shadow:0 1px 3px rgba(20,30,60,.05)}
.kpi .v{font-size:22px;font-weight:700}
.kpi .l{font-size:11px;color:var(--tx2)}

/* AJUDA */
.manual{max-width:840px;line-height:1.6}
.manual h1{font-size:20px}.manual h2{font-size:16px;margin-top:24px;border-bottom:1px solid var(--bd);padding-bottom:6px}
.manual code{background:var(--s2);padding:1px 5px;border-radius:4px}
.manual kbd{background:var(--s2);border:1px solid var(--bd);border-radius:4px;padding:1px 6px;font-size:11px}
.manual .aj-intro{color:var(--tx2);font-size:13px;margin:4px 0 16px}
.manual .aj-busca{display:flex;align-items:center;gap:8px;border:1px solid var(--bd);border-radius:8px;padding:8px 12px;margin:0 0 12px;background:var(--bg)}
.manual .aj-busca input{flex:1;border:none;background:transparent;font:inherit;font-size:13px;color:var(--tx);outline:none}
.manual .aj-no.aj-hit>summary{background:#fff6d6}
.manual .aj-no{border:1px solid var(--bd);border-radius:8px;margin:6px 0;background:var(--bg);overflow:hidden}
.manual .aj-no>summary{cursor:pointer;padding:10px 12px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px;user-select:none;list-style:none}
.manual .aj-no>summary::-webkit-details-marker{display:none}
.manual .aj-no>summary::before{content:'▸';color:var(--ac);font-size:12px;transition:transform .15s}
.manual .aj-no[open]>summary::before{transform:rotate(90deg)}
.manual .aj-no>summary:hover{background:var(--s2)}
.manual .aj-corpo{padding:2px 14px 12px 30px;font-size:13px;color:var(--tx)}
.manual .aj-corpo>ul,.manual .aj-corpo>ol{margin:4px 0;padding-left:20px}
.manual .aj-no .aj-no{background:var(--sf)}
.manual .aj-no .aj-no>summary{font-size:13px;font-weight:600}
/* 💬 pergunta livre — o painel de respostas fica ACIMA da árvore: a resposta primeiro, o mapa depois */
.manual .aj-busca input::placeholder{color:var(--tx2);opacity:.8}
.manual .aj-resp{border:1px solid var(--bd);border-left:3px solid var(--ac);border-radius:8px;
  background:var(--sf);padding:10px 12px;margin:0 0 12px}
.manual .aj-resp[hidden]{display:none}
.manual .aj-resp-h{font-size:13px;font-weight:700}
.manual .aj-resp-ent{font-size:11.5px;color:var(--tx2);margin:3px 0 8px}
.manual .aj-resp-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.manual .aj-resp-l li{border:1px solid var(--bd);border-radius:7px;background:var(--bg);
  padding:8px 10px;cursor:pointer}
.manual .aj-resp-l li:hover{border-color:var(--ac)}
.manual .aj-resp-l li:focus{outline:2px solid var(--ac);outline-offset:1px}
.manual .aj-resp-c{font-size:11px;color:var(--tx2)}
.manual .aj-resp-ti{font-size:13px;font-weight:700;margin:1px 0 3px}
.manual .aj-resp-tr{font-size:12.5px;line-height:1.5;color:var(--tx)}
.manual .aj-resp mark{background:#fff3c4;color:inherit;padding:0 2px;border-radius:3px}
.manual .aj-resp-sug{font-size:12px;margin-top:7px}
.manual .aj-sug{background:var(--s2);border:1px solid var(--bd);color:var(--tx);border-radius:12px;
  padding:2px 9px;font-size:11.5px;cursor:pointer;margin:2px 2px 0 0}
.manual .aj-sug:hover{border-color:var(--ac);color:var(--ac)}
.manual .aj-no.aj-foco>summary{background:#e7eefc;box-shadow:inset 3px 0 0 var(--ac)}

/* TOAST */
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);
  background:#fff;border:1px solid var(--ac);border-radius:8px;padding:10px 18px;
  font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:50;
  box-shadow:0 4px 16px rgba(20,30,60,.15)}
.toast.show{opacity:1}
.toast.err{border-color:var(--er)}
.muted{color:var(--tx2)}
.tag{padding:2px 7px;border-radius:10px;font-size:10px;font-weight:700}
.tag.atras{background:#fbe3e7;color:var(--er)}
.tag.and{background:#fbf0d9;color:var(--wa)}
.tag.conc{background:#d9f3e4;color:var(--ok)}
.tag.fut{background:#eef1f7;color:var(--tx2)}

/* BARRA DE COLUNAS DA GRADE */
.grade-cols{display:flex;gap:5px;flex-wrap:wrap;align-items:center;padding:5px 12px;
  background:var(--bg);border-bottom:1px solid var(--bd)}
.grade-cols .gc-lbl{font-size:11px;color:var(--tx2);margin-right:2px}
.gc-chip{background:var(--s2);border:1px solid var(--bd);color:var(--tx2);
  border-radius:13px;padding:3px 9px;font-size:11px;font-weight:600}
.gc-chip:hover{border-color:var(--ac)}
.gc-chip.on{background:#e7eefc;border-color:#c4d6fb;color:var(--ac)}
.gc-chip[draggable]{cursor:grab}

/* ⚡ Atualização rápida — FAB + painel flutuante */
#fabAtu,#fabRidac{position:fixed;right:22px;bottom:22px;z-index:80;width:54px;height:54px;border-radius:50%;
  border:none;background:var(--ac);color:#fff;font-size:24px;cursor:pointer;
  box-shadow:0 6px 18px rgba(47,111,237,.45);transition:transform .12s}
#fabRidac{background:#d23b4e;box-shadow:0 6px 18px rgba(210,59,78,.45)}
#fabAtu:hover,#fabRidac:hover{transform:scale(1.08)}
#atuPanel,#ridacPanel{position:fixed;z-index:90;width:380px;max-width:94vw;background:var(--sf);
  border:1px solid var(--bd);border-radius:14px;box-shadow:0 24px 70px rgba(20,30,60,.35);overflow:hidden}
.atu-head{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--ac);color:#fff;cursor:move;user-select:none}
.atu-head b{flex:1;font-size:13px}
.atu-head .atu-prog{font-size:11px;opacity:.9}
.atu-head button{background:rgba(255,255,255,.2);border:none;color:#fff;border-radius:6px;width:24px;height:24px;cursor:pointer;font-size:12px}
.atu-body{padding:14px;max-height:72vh;overflow:auto}
.atu-weeks{display:flex;gap:4px;margin-bottom:12px;overflow-x:auto;padding-bottom:2px}
.atu-wk{flex:1 0 auto;min-width:38px;display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 4px;border:1px solid var(--bd);background:var(--bg);border-radius:7px;cursor:pointer;font:inherit;color:var(--tx)}
.atu-wk b{font-size:11px;font-weight:700;line-height:1.2}
.atu-wk span{font-size:10px;color:var(--tx2);font-weight:600}
.atu-wk.on{background:var(--ac);border-color:var(--ac);color:#fff}
.atu-wk.on span{color:#fff;opacity:.9}
.atu-wk:hover{border-color:var(--ac)}
.atu-stats{display:flex;gap:4px;margin-bottom:8px}
.atu-stat{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;padding:7px 4px;border:1px solid var(--bd);background:var(--bg);border-radius:8px;cursor:pointer;font:inherit;font-size:11px;font-weight:600;color:var(--tx2);white-space:nowrap}
.atu-stat b{font-size:11px}
.atu-stat.on{color:#fff}
.atu-stat.on.st-atrasada{background:#d23b4e;border-color:#d23b4e}
.atu-stat.on.st-andamento{background:#c77700;border-color:#c77700}
.atu-stat.on.st-futura{background:#7a8aa6;border-color:#7a8aa6}
.atu-stat:hover{border-color:var(--ac)}
.atu-empty{text-align:center;color:var(--tx2);padding:28px 10px;font-size:15px}
.atu-card{border:1px solid var(--bd);border-radius:12px;padding:14px;background:var(--bg);text-align:center}
.atu-urg{font-size:12px;font-weight:700;margin-bottom:4px}
.atu-path{font-size:11px;color:var(--tx2);margin-bottom:3px;line-height:1.3}
.atu-nm{font-size:16px;font-weight:700;margin-bottom:2px}
.atu-entreg{color:var(--tx)}
.atu-sep{color:var(--tx2);font-weight:400}
.atu-ativ{color:var(--ac)}
.atu-meta{font-size:11px;color:var(--tx2);margin-bottom:12px}
.mc-fil{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
.mc-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;border:1px solid var(--bd);border-radius:14px;padding:3px 10px;cursor:pointer;background:#fff;user-select:none}
.mc-chip.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.mc-chip input{margin:0}
.mc-nesc{margin-left:auto;font-size:11px}
.wz-ov{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:400}
.wz-card{background:var(--bg);border-radius:12px;width:min(560px,94vw);max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(20,30,60,.3)}
.wz-h{display:flex;justify-content:space-between;align-items:center;font-weight:700;padding:14px 16px;border-bottom:1px solid var(--bd)}
.wz-x{border:0;background:none;cursor:pointer;font-size:16px;color:var(--tx2)}
.wz-steps{display:flex;flex-wrap:wrap;gap:6px;padding:10px 16px;border-bottom:1px solid var(--bd);font-size:11px}
.wz-step{color:var(--tx2);padding:2px 8px;border-radius:12px;background:var(--s2)}
.wz-step.on{background:var(--ac);color:#fff}
.wz-step.done{color:var(--ac)}
.wz-body{padding:16px;overflow:auto;display:flex;flex-direction:column;gap:12px}
.wz-fld{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}
.wz-fld input,.wz-fld select{font:inherit;font-weight:400;padding:7px 9px;border:1px solid var(--bd);border-radius:7px;background:#fff;color:var(--tx)}
.wz-chk{display:flex;align-items:center;gap:8px;font-size:13px;background:var(--sf);padding:8px 10px;border-radius:8px;border:1px solid var(--bd)}
.wz-foot{display:flex;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--bd)}
.wz-rev ul{margin:6px 0;padding-left:18px;font-size:13px}
.wz-total{font-size:14px}
.wz-chks{display:flex;flex-direction:column;gap:6px;max-height:42vh;overflow-y:auto;padding:2px}   /* lista de papéis (colunas) do wizard RACI */
.wz-pad{display:flex;flex-direction:column;gap:8px;max-height:42vh;overflow-y:auto;padding:2px}     /* código R/A/C/I padrão por papel */
.help-q{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--bd);background:#fff;color:var(--ac);font-size:11px;font-weight:700;cursor:pointer;line-height:1;vertical-align:middle;margin-left:6px;padding:0;flex:none}
.help-q:hover{background:var(--ac);color:#fff;border-color:var(--ac)}
.help-pop{position:absolute;z-index:500;width:300px;max-width:92vw;background:var(--bg);border:1px solid var(--bd);border-radius:10px;box-shadow:0 12px 36px rgba(20,30,60,.22);font-size:12.5px;overflow:hidden}
.help-pop-h{font-weight:700;padding:9px 12px;background:var(--sf);border-bottom:1px solid var(--bd)}
.help-pop-b{padding:10px 12px;color:var(--tx);line-height:1.5}
.help-pop-b p{margin:0}
.help-pop-f{padding:8px 12px;border-top:1px solid var(--bd);text-align:right}
.help-pop-go{border:0;background:none;color:var(--ac);cursor:pointer;font-weight:600;font-size:12px}
/* "?" de ajuda por campo (tooltip CSS, hover/foco) */
.fhelp{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--bd);background:#fff;color:var(--ac);font-size:10px;font-weight:700;font-style:normal;cursor:help;line-height:1;vertical-align:middle;margin-left:4px;flex:none;user-select:none}
.fhelp:hover,.fhelp:focus{background:var(--ac);color:#fff;border-color:var(--ac);outline:none}
.fhelp .fhelp-tip{display:none;position:absolute;left:0;top:150%;z-index:600;width:260px;max-width:72vw;background:#1f2937;color:#fff;font-size:11.5px;font-weight:400;line-height:1.45;text-align:left;text-transform:none;letter-spacing:normal;padding:8px 10px;border-radius:8px;box-shadow:0 8px 24px rgba(20,30,60,.28);white-space:normal;pointer-events:none}
.fhelp .fhelp-tip::before{content:"";position:absolute;left:5px;bottom:100%;border:6px solid transparent;border-bottom-color:#1f2937}
.fhelp:hover .fhelp-tip,.fhelp:focus .fhelp-tip{display:block}
.pj-form .row .fld:last-child .fhelp .fhelp-tip{left:auto;right:0}
.pj-form .row .fld:last-child .fhelp .fhelp-tip::before{left:auto;right:5px}
.cols-foot{display:flex;align-items:center;gap:6px;justify-content:flex-end;padding:5px 6px 3px;margin-top:3px;border-top:1px solid var(--bd);position:sticky;bottom:0;background:var(--sf)}
.cols-menu .cols-busca{margin-bottom:4px!important;padding:4px 8px!important}
.cols-foot-hint{margin-right:auto;font-size:10px;color:var(--tx2)}
.cols-foot .btn{padding:3px 10px;font-size:12px}
.atu-dot{width:64px;height:64px;border-radius:50%;margin:0 auto 4px;border:3px solid var(--ring,#cbd5e6);
  background:conic-gradient(var(--fc,#1f9d57) calc(var(--p,0)*1%),#e6ebf3 0);
  display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--tx);font-size:14px;cursor:pointer}
.atu-pcts{display:flex;gap:4px;justify-content:center;margin:10px 0 0}
.atu-pcts button{flex:1;padding:6px 0;border:1px solid var(--bd);background:var(--sf);border-radius:6px;font-size:12px;font-weight:600;cursor:pointer}
.atu-pcts button.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.atu-acts{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}
.atu-acts button{padding:9px;border:1px solid var(--bd);background:var(--sf);border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}
.atu-acts button.ok{background:var(--ok);color:#fff;border-color:var(--ok)}
.atu-acts button.span2{grid-column:1 / -1}
.atu-acts button:hover{filter:brightness(.97);border-color:var(--ac)}
.atu-lbl{font-size:11px;color:var(--tx2);margin:12px 2px 6px}
.atu-list{display:flex;flex-direction:column;gap:4px}
.atu-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--bd);border-radius:8px;background:var(--sf);cursor:pointer;text-align:left;width:100%;font:inherit}
.atu-row:hover{border-color:var(--ac);background:var(--s2)}
.atu-rnm{flex:1;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atu-rdt{font-size:11px;color:var(--tx2)}
.atu-rdot{width:14px;height:14px;border-radius:50%;border:2px solid var(--ring,#cbd5e6);
  background:conic-gradient(var(--fc,#1f9d57) calc(var(--p,0)*1%),#e6ebf3 0);flex:none}
.gc-chip.dragging{opacity:.4}

/* FAROL (RAG) + FINISH VARIANCE */
.farol{display:inline-block;width:11px;height:11px;border-radius:50%;vertical-align:middle}
.farol.f-verde{background:var(--ok)}
.farol.f-amarelo{background:var(--wa)}
.farol.f-vermelho{background:var(--er)}
.farol.f-cinza{background:var(--gr)}
.farol.f-futuro{background:#cdd5e2}
.farol-flag{font-size:11px;vertical-align:middle;line-height:1}
.bandeira-ok{height:1em;width:auto;vertical-align:-.13em;flex:none}
.farol-click{cursor:pointer;display:inline-flex;padding:2px;border-radius:50%}
.farol-click:hover{transform:scale(1.25);background:#eef2f9}
.fv.late{color:var(--er);font-weight:700}
.fv.ahead{color:var(--ok)}
.fv.zero{color:var(--tx2)}
.mc-chart{position:relative;height:300px;margin:12px 0 4px}
.crv-racional{margin-top:10px;font-size:12.5px}
.crv-racional>summary{cursor:pointer;color:var(--ac);font-weight:600;padding:4px 0}
.crv-racional .list{margin:6px 0}
.crv-racional code{font-size:11.5px}
.folga{font-weight:600;font-variant-numeric:tabular-nums}
.folga-ok{color:var(--ok)}
.folga-crit{color:var(--ac);font-weight:700}
.folga-neg{color:#fff;background:var(--er);padding:1px 5px;border-radius:4px;font-weight:700}

/* ── Demo (Monte Carlo / Compressão): leitura executiva, slider 🎯, animação, impacto, foco ── */
.exec-card{background:#fff7fa;border:1px solid #e7c3d1;border-left:4px solid #A01441;border-radius:8px;padding:10px 14px;margin:0 0 14px;max-width:780px;font-size:13px;line-height:1.55}
.exec-card .exec-t{font-weight:700;color:#A01441;margin-bottom:4px;font-size:12px}
.exec-card ul{margin:0;padding-left:18px}
.exec-card li{margin:3px 0}
.h2-foto{float:right;font-size:12px;padding:4px 10px;margin-top:-3px}
.mc-slider{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--s2);border:1px solid var(--bd);border-radius:9px;padding:8px 12px;margin:0 0 12px;max-width:780px}
.mc-slider .mc-sl-t{font-size:12px;color:var(--tx2);font-weight:600}
.mc-slider input[type=range]{flex:1;min-width:160px;accent-color:#A01441}
.mc-slprob{font-size:18px;font-weight:700;min-width:46px;text-align:right;font-variant-numeric:tabular-nums}
.mc-slider .btn.mini{padding:4px 10px;font-size:12px}
.mc-animbox{display:flex;align-items:center;gap:12px;background:var(--s2);border:1px solid var(--bd);border-radius:9px;padding:10px 14px;margin:8px 0;font-weight:600;font-variant-numeric:tabular-nums}
.mc-anim-dado{font-size:22px;animation:mc-roll 0.9s ease-in-out infinite}
@keyframes mc-roll{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(12deg) translateY(-2px)}}
.imp-box{background:#f4f9f6;border:1px solid #bfe0cd;border-left:4px solid #1f9d57;border-radius:8px;padding:10px 14px;margin:0 0 12px;max-width:780px;font-size:13px}
.imp-box .imp-t{font-weight:700;color:#15673c;font-size:12px;margin-bottom:4px}
.imp-box .imp-row{margin:3px 0}
.foco-chip{display:inline-flex;align-items:center;gap:6px;background:#fff6e6;border:1px solid #e3c98f;border-radius:14px;padding:4px 12px;margin:0 0 10px;font-size:12px}
.foco-chip button{border:none;background:none;cursor:pointer;font-size:12px;color:var(--tx2);padding:0 2px}
.tr-foco td{background:#fff6e6}
.cc-row-foco{background:#fff6e6;border-radius:5px}
.histlimpar{border:none;background:none;cursor:pointer;font-size:13px;opacity:.55}
.histlimpar:hover{opacity:1}
/* Selo de confiança das estimativas (calibração) — entra na foto p/ PPT */
.mc-selo{display:flex;align-items:flex-start;gap:9px;margin:10px 0 6px;padding:9px 13px;border-radius:9px;border:1px solid var(--bd);font-size:12px;line-height:1.4;max-width:820px}
.mc-selo .mc-selo-ic{font-size:17px;line-height:1.2;flex:0 0 auto}
.mc-selo b{font-size:12.5px}
.mc-selo .mc-selo-sub{color:var(--tx2)}
.mc-selo.ok{background:#eaf7ef;border-color:#bfe6cd}
.mc-selo.ok b{color:#1f9d57}
.mc-selo.med{background:#fff6e6;border-color:#f0d9a8}
.mc-selo.med b{color:#c77700}
.mc-selo.low{background:#fdeef0;border-color:#f3c6cd}
.mc-selo.low b{color:#d23b4e}
.mc-selo.man{background:#eef3fc;border-color:#c6d8f2}
.mc-selo.man b{color:#2b66c9}
.mc-banda-in{display:inline-flex;align-items:center;gap:2px;font-size:12px;color:var(--tx2)}
.mc-banda-in input{width:52px;padding:3px 5px;font-size:12px}
.mc-banda-ro{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--tx2);background:var(--s2);border:1px solid var(--bd);border-radius:12px;padding:2px 10px}
.mc-banda-ro b{color:var(--tx)}
/* Visão fases × datas simuladas (Monte Carlo) */
.mc-topbar{position:sticky;top:0;z-index:6;background:var(--sf);padding:6px 0 8px;margin-bottom:10px;border-bottom:1px solid var(--bd)}
.mc-topbar .mc-fil{margin:0 0 6px}
.fx-sel{float:right;display:inline-flex;gap:4px;font-weight:400}
.fx-niv{border:1px solid var(--bd);background:#fff;border-radius:12px;padding:2px 10px;font-size:11px;cursor:pointer}
.fx-niv.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.fx-star{position:absolute;top:-2px;transform:translateX(-50%);font-size:13px;line-height:16px;color:#4A4A4A}
.fx-track-marco{background:none}
.fx-nm-sub{color:var(--tx2)}
.fx-nm-marco{color:#4A4A4A;font-size:11px}
.fx-row{display:flex;align-items:center;gap:8px;margin:4px 0}
.fx-row.fx-head{margin:0 0 16px;height:24px}
.fx-nm{flex:0 0 170px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fx-dt{flex:0 0 96px;font-size:10px;color:var(--tx2);text-align:right;font-variant-numeric:tabular-nums}
.fx-track{flex:1;position:relative;height:14px;background:var(--s2);border-radius:4px}
.fx-track-head{background:none;height:24px;overflow:visible}
.fx-bar{position:absolute;top:2px;bottom:2px;border-radius:3px}
.fx-bar.done{background:#84cc16}
.fx-bar.doing{background:var(--bl)}
.fx-bar.todo{background:#aab4c8}
.fx-mark{position:absolute;top:-2px;bottom:-2px;width:0;border-left:2px dashed}
.fx-mark.sd{border-color:#d23b4e}
.fx-mark.p50{border-color:#6b7686}
.fx-mark.p80{border-color:#c77700}
.fx-mark.alvo{border-color:#A01441}
.fx-lab{position:absolute;top:-2px;transform:translateX(-50%);font-size:9px;font-weight:700;white-space:nowrap}
.fx-lab.sd{color:#d23b4e}
.fx-lab.p50{color:#6b7686}
.fx-lab.p80{color:#c77700}
.fx-lab.alvo{color:#A01441}
.fx-bar.done,.fx-bar.doing,.fx-bar.todo{top:2px;bottom:auto;height:4px}
.fx-sim{position:absolute;bottom:2px;height:4px;background:rgba(160,20,65,.4);border-radius:3px}
.fx-simp50{position:absolute;bottom:0;height:8px;width:2px;background:#A01441;transform:translateX(-1px)}

/* 🏁 Chance de concluir no prazo por bloco da WBS (Fase > Frente > Grupo) — tela Monte Carlo */
.mcf-box{margin:16px 0 4px}
.mcf-box>h3{margin:0 0 6px;font-size:13px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mcf-ctl{margin-left:auto;display:flex;align-items:center;gap:6px;font-weight:400;font-size:11px;color:var(--tx2)}
.mcf-rad{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--bd);border-radius:11px;cursor:pointer;background:var(--sf)}
.mcf-rad.on{border-color:var(--ac);background:var(--ac);color:#fff}
.mcf-rad input{margin:0}
.mcf-tudo{border:1px solid var(--bd);background:var(--sf);border-radius:11px;padding:2px 8px;cursor:pointer;font-size:11px;color:inherit}
.mcf-leitura{margin:0 0 8px;padding:8px 12px;border-left:3px solid var(--ac);background:var(--s2);border-radius:0 5px 5px 0;font-size:12px;line-height:1.5}
.mcf-tab{table-layout:auto}
.mcf-tab th{font-size:11px;color:var(--tx2);font-weight:600;white-space:nowrap}
.mcf-tab td{padding:5px 8px;vertical-align:middle}
.mcf-c{text-align:right;white-space:nowrap}
.mcf-nm{white-space:nowrap;max-width:420px;overflow:hidden;text-overflow:ellipsis}
.mcf-niv{font-size:9px;text-transform:uppercase;letter-spacing:.4px;color:var(--tx2);border:1px solid var(--bd);border-radius:3px;padding:0 3px;margin-right:4px}
.mcf-seta{width:16px;border:0;background:none;cursor:pointer;color:var(--tx2);font-size:11px;padding:0;margin-right:2px}
.mcf-vazia{display:inline-block;cursor:default}
.mcf-n2 td{font-weight:600;background:var(--s2)}
.mcf-n3 .mcf-nm{padding-left:20px}
.mcf-n4 .mcf-nm{padding-left:40px;color:var(--tx2)}
.mcf-n4 td{font-size:11px}
.mcf-feito td{opacity:.6}
.mcf-ok{color:#1f9d57;font-weight:600}
.mcf-sem{font-size:11px;padding-left:28px!important;font-style:italic}
.mcf-til{color:#c77700;font-weight:700;margin-left:3px;cursor:help}
.mcf-manda{width:150px}
.mcf-int{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end;width:100%;cursor:help}
.mcf-int i{display:block;flex:none;height:9px;border-radius:2px;min-width:2px}
.mcf-int em{font-style:normal;font-variant-numeric:tabular-nums;min-width:34px;text-align:right;font-size:11px}
.mcf-nota{font-size:11px;line-height:1.5;margin:6px 0 0;max-width:900px}
.fx-leg{display:inline-block;width:9px;height:9px;border-radius:2px;vertical-align:middle}
.fx-leg.done{background:#84cc16}
.fx-leg.doing{background:var(--bl)}
.fx-leg.todo{background:#aab4c8}
.fx-leg.simleg{background:rgba(160,20,65,.4)}

.gc-chip.foco-chip{background:#fdecd8;border-color:#f4c98a;color:#9a5b00;font-weight:700}
.gc-chip.foco-chip:hover{background:#fbdfbd}

/* Vista dedicada da Corrente Crítica no Gantt */
.bar-cc-chain{fill:#f97316}
.bar-cc-base{fill:#9aa6bd}
.bar-cc-dim{fill:#dfe3ea}
.bar-cc-sum{fill:#aab4c8}
.bar-cc-real{fill:#16a34a}
.bar-cc-buf{fill:#f1d9ad;stroke:#c8922e;stroke-width:1;stroke-dasharray:3 2}
.bar-cc-fb{fill:#f4e3c4;stroke:#c8922e;stroke-width:.7}
.cc-dlt{font-size:10px;font-weight:700;fill:#64748b;dominant-baseline:middle}
.cc-dlt.late{fill:#d23b4e}
.cc-dlt.early{fill:#16a34a}
.cc-buf-lbl{font-size:calc(10px * var(--g-fz,1));font-weight:700;fill:#9a5b00;dominant-baseline:middle}
.cc-buf-lbl.gain{fill:#16a34a}
.cc-base-line{stroke:#9aa6bd;stroke-width:1.5;stroke-dasharray:4 3}
.cc-entrega-line{stroke:#16a34a;stroke-width:1.6;stroke-dasharray:4 3}

/* 🎲 Vista de RISCO no Gantt (ganttBarrasMc) — faixa P10–P90 + ◆ P50 no rodape da linha, e os fios do P50/P80
   do projeto no fundo. Cor = o P50 contra o compromisso da linha: verde cabe · ambar so no otimista · vermelho
   nem no otimista. Translucida de proposito: a faixa informa, as barras do plano continuam mandando na leitura. */
.bar-mc-band{opacity:.5}
.bar-mc-band.mc-ok{fill:#1f9d57}
.bar-mc-band.mc-atencao{fill:#c77700}
.bar-mc-band.mc-tarde{fill:#d23b4e}
.bar-mc-band.mc-neutro{fill:#64748b}
.bar-mc-p50{stroke:#fff;stroke-width:.8}
.bar-mc-p50.mc-ok{fill:#15803d}
.bar-mc-p50.mc-atencao{fill:#b45309}
.bar-mc-p50.mc-tarde{fill:#b91c1c}
.bar-mc-p50.mc-neutro{fill:#475569}
.gline-mc50{stroke:#c77700;stroke-width:1.4;stroke-dasharray:5 3}
.gline-mc80{stroke:#d23b4e;stroke-width:1.4;stroke-dasharray:2 3}

/* 🗜 Vista de COMPRESSAO (ganttBarrasComp) — o e-se: onde a atividade cairia se o plano fosse gravado.
   Verde = antecipa o termino (o que o GP procura) · teal = encolheu sem antecipar (a folga a jusante absorveu)
   · azul = so se deslocou pelo fast-track. Translucida: a faixa informa, as barras do plano continuam mandando. */
.bar-comp-band{opacity:.55}
.bar-comp-band.comp-antecipa{fill:#16a34a}
.bar-comp-band.comp-encolhe{fill:#0d9488}
.bar-comp-band.comp-move{fill:#1d4ed8}
.bar-comp-band.comp-neutro{fill:#64748b}
.bar-comp-ic{font-size:calc(9px * var(--g-fz,1));dominant-baseline:alphabetic}
.bar-comp-ic.comp-antecipa{fill:#15803d}
.bar-comp-ic.comp-encolhe{fill:#0f766e}
.bar-comp-ic.comp-move{fill:#1d4ed8}
.gline-comp0{stroke:#94a3b8;stroke-width:1.4;stroke-dasharray:4 3}
.gline-compf{stroke:#16a34a;stroke-width:1.6;stroke-dasharray:5 3}
.tb-comp.stale,.tb-chic.stale{box-shadow:0 0 0 2px rgba(217,119,6,.35)}

/* ⚡ Vista do EFEITO CHICOTE (ganttBarrasChicote) — a cauda do atraso partida em RECEBIDO x ACRESCENTADO.
   O tracejado claro e o que veio da predecessora; o solido e o que a atividade acrescentou (o que se cobra). */
.bar-chic-her{fill:#fca5a5;opacity:.5;stroke:#dc2626;stroke-width:.8;stroke-dasharray:3 2}
.bar-chic-own{fill:#dc2626;opacity:.85}
.bar-chic-ic{font-size:calc(9px * var(--g-fz,1));fill:#b91c1c;dominant-baseline:alphabetic}
.gline-chic0{stroke:#9aa6bd;stroke-width:1.4;stroke-dasharray:4 3}
.gline-chicf{stroke:#dc2626;stroke-width:1.6;stroke-dasharray:2 3}
.tb-risco.stale{box-shadow:0 0 0 2px rgba(217,119,6,.35)}
.tb-risco .tb-risco-w{font-size:9px;margin-left:1px;vertical-align:super}

/* 🔬 Bloco das VISTAS DE ANALISE da barra do Gantt (bloco `anal`, 18/09/2026: "separe os 4 em um grupo de
   icones" -> "separe da outra caixa") — 🔗 Corrente · 🎲 Risco · 🗜 Compressao · ⚡ Chicote. Caixa PROPRIA,
   como a de Filtros e a de %: tinta clara + rotulo na cor, para o grupo dizer POR QUE esta junto (as 4 sao
   exclusivas entre si). Os botoes mantem o visual de sempre — a caixa emoldura, nao repinta. */
.barra-cron .bloco[data-bloco="anal"]{border-color:#cddaf0;background:#f2f6fc}
.barra-cron .bloco[data-bloco="anal"] .tb-gl-row{color:#3b5a86}
.cc-late{color:#d23b4e;font-weight:700}
.cc-early{color:#16a34a;font-weight:700}

/* Corrente Crítica (CCPM) — layout lado a lado + impacto visual */
.cc-main{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.cc-left{flex:1 1 360px;min-width:0}
.cc-right{flex:1.25 1 460px;min-width:0}   /* o Gantt do e-se mora aqui: sem a fatia maior o track ficaria mais estreito que o rotulo */
.cc-bar{display:flex;height:34px;border-radius:7px;overflow:hidden;border:1px solid var(--bd);font-size:11px;font-weight:700;color:#fff}
.cc-seg{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden}
.cc-chain{background:#4d7cfe}
.cc-buf{position:relative;background:#e7c9a0;color:#7a5a1f}
.cc-buf-used{position:absolute;left:0;top:0;bottom:0;opacity:.85}
.cc-buf span{position:relative;z-index:1;width:100%;text-align:center}
.cc-cmp{display:flex;flex-direction:column;gap:5px}
.cc-cmp-row{display:flex;align-items:center;gap:8px}
.cc-cmp-lbl{width:62px;font-size:11px;font-weight:700;color:var(--tx2);flex:0 0 auto}
.cc-cmp-track{flex:1;display:flex;height:26px;border-radius:6px;overflow:hidden;background:var(--s2);border:1px solid var(--bd)}
.cc-base2{background:#9aa6bd}
.cc-doneseg{background:#16a34a}
.cc-gain{margin-top:8px;padding:7px 12px;border-radius:7px;font-weight:700;font-size:13px}
.cc-gain.pos{background:#e7f6ec;color:#1f7a45;border:1px solid #bfe6cd}
.cc-gain.neg{background:#fdecd8;color:#9a5b00;border:1px solid #f4c98a}
.cc-dates{display:flex;justify-content:space-between;gap:6px;font-size:11.5px;color:var(--tx);margin-top:5px}
.cc-dates small{color:var(--tx2);font-size:10px;display:block}
.cc-gauge{position:relative;height:24px;border-radius:6px;background:var(--s2);overflow:hidden;border:1px solid var(--bd);margin-top:4px}
.cc-gauge-fill{position:absolute;left:0;top:0;bottom:0;transition:width .2s}
.cc-gauge-lbl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--tx)}

/* O .card global trava em 1000px e o Gantt do e-se mora na metade direita: sem liberar, a tela usa metade
   do monitor e o track fica mais estreito que o rotulo (armadilha ja paga em reportKit/okr/canvasPortfolio). */
#view-correntecritica .card{max-width:none}

/* 📅 Gantt do e-se CCPM (correnteCriticaGantt.js) — 1 linha por tarefa da corrente, em trilha de %.
   Escopado em #view-correntecritica: as classes .ccg-* so existem nesta tela. */
#view-correntecritica .ccg-wrap{margin:6px 0 4px;font-size:12px}
#view-correntecritica .ccg-row{display:grid;grid-template-columns:minmax(78px,132px) 1fr 62px;gap:7px;align-items:center;padding:1px 0}
#view-correntecritica .ccg-alt{background:#fbfbfd}
#view-correntecritica .ccg-head{height:16px}
#view-correntecritica .ccg-lbl{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#view-correntecritica .ccg-n{color:var(--tx2);font-size:10px}
#view-correntecritica .ccg-lk{margin-left:3px;font-size:9px}
#view-correntecritica .ccg-track{position:relative;height:20px;background:var(--s2);border-radius:3px;overflow:hidden}
#view-correntecritica .ccg-head .ccg-track{background:transparent;height:15px;overflow:visible}
#view-correntecritica .ccg-b{position:absolute;border-radius:2px;font-size:9px;line-height:11px;color:#fff;text-align:center;overflow:hidden;white-space:nowrap}
#view-correntecritica .ccg-plano{top:2px;height:5px;background:#9aa6bd}
#view-correntecritica .ccg-ccpm{top:8px;height:11px;background:#f97316}
#view-correntecritica .ccg-done{top:8px;height:11px;background:#16a34a}
#view-correntecritica .ccg-fb{top:8px;height:11px;background:repeating-linear-gradient(45deg,#e7c9a0 0 4px,#f7ecd9 4px 8px);border:.7px solid #c8922e;box-sizing:border-box}
#view-correntecritica .ccg-buf{top:6px;height:12px;background:#f1d9ad;border:1px dashed #c8922e;box-sizing:border-box;color:#7a5a1f;font-weight:700}
#view-correntecritica .ccg-bufuso{top:8px;height:8px;opacity:.85;border-radius:2px}
#view-correntecritica .ccg-ganho{top:7px;height:9px;background:#16a34a;opacity:.85;font-weight:700}
#view-correntecritica .ccg-perda{top:7px;height:9px;background:#d23b4e;opacity:.9;font-weight:700}
#view-correntecritica .ccg-mk{position:absolute;top:5px;width:10px;height:10px;margin-left:-5px;transform:rotate(45deg);border-radius:1px}
#view-correntecritica .ccg-mk-b{background:#94a3b8}
#view-correntecritica .ccg-mk-g{background:#16a34a}
#view-correntecritica .ccg-mk-r{background:#d23b4e}
#view-correntecritica .ccg-grid{position:absolute;top:0;bottom:0;width:0;border-left:1px solid var(--bd);opacity:.35}
#view-correntecritica .ccg-vl{position:absolute;top:0;bottom:0;width:0;z-index:2}
#view-correntecritica .ccg-vl-sd{border-left:1.5px dashed #2563eb}
#view-correntecritica .ccg-vl-base{border-left:1.5px dashed #9aa6bd}
#view-correntecritica .ccg-vl-ccpm{border-left:1.5px dashed #16a34a}
#view-correntecritica .ccg-tick{position:absolute;top:1px;font-size:9.5px;color:var(--tx2);transform:translateX(2px)}
#view-correntecritica .ccg-val{font-size:10.5px;text-align:right;color:var(--tx);font-variant-numeric:tabular-nums}
#view-correntecritica .ccg-val b{display:block;color:#1f7a45;font-size:9.5px;font-weight:700}
#view-correntecritica .ccg-val b.cc-late{color:#d23b4e}
#view-correntecritica .ccg-val b.cc-early{color:#16a34a}
#view-correntecritica .ccg-buf-row,#view-correntecritica .ccg-fim{border-top:1px solid var(--bd);margin-top:2px;padding-top:2px}
#view-correntecritica .ccg-buf-row .ccg-lbl,#view-correntecritica .ccg-fim .ccg-lbl{font-weight:700}
#view-correntecritica .ccg-buf-row .ccg-val b{color:#9a5b00}
#view-correntecritica .ccg-fim .ccg-val b{color:var(--tx2);font-weight:600}
#view-correntecritica .ccg-leg{display:flex;flex-wrap:wrap;gap:9px;font-size:10.5px;color:var(--tx2);margin:4px 0 2px}
#view-correntecritica .ccg-sw{display:inline-block;width:13px;height:7px;border-radius:2px;margin-right:4px;vertical-align:middle;position:static;top:auto}
/* os 3 fios verticais viram tarja cheia na legenda (no desenho sao border-left de um elemento sem largura) */
#view-correntecritica .ccg-lgv .ccg-sw{border:0;height:3px}
#view-correntecritica .ccg-lgv .ccg-vl-sd{background:#2563eb}
#view-correntecritica .ccg-lgv .ccg-vl-base{background:#9aa6bd}
#view-correntecritica .ccg-lgv .ccg-vl-ccpm{background:#16a34a}
/* slider do corte de folga: e o gesto do e-se — arrastar redesenha o Gantt ao vivo */
#view-correntecritica .cc-slider{vertical-align:middle;width:120px;margin:0 6px;accent-color:#f97316;cursor:ew-resize}

/* P&L por Fase + Consolidado (tela Faturamentos) */
/* 1 COLUNA: a tabela de marcos tem 17 colunas (ganhou as 4 de caixa) e NAO cabe em meia largura — lado a lado
   truncava tudo ("Aceite d", "50.00"). Entradas em cima, Saidas embaixo: mesma tela, cada uma legivel. */
.fat-grid{display:grid;grid-template-columns:1fr;gap:14px;align-items:start}
.fat-grid>div{min-width:0;display:flex;flex-direction:column;gap:16px}
.fat-grid .card{margin:0}
@media(max-width:1200px){.fat-grid{grid-template-columns:1fr}}
.fat-intro h2{font-size:16px;margin:0 0 8px}
.fat-consist{padding:10px 14px;border-radius:8px;font-weight:600;font-size:13px}
.fat-consist.ok{background:#e7f6ec;color:#1f7a45;border:1px solid #bfe6cd}
.fat-consist.warn{background:#fdecd8;color:#9a5b00;border:1px solid #f4c98a}
.fat-consist.na{background:var(--s2);color:var(--tx2);border:1px solid var(--bd)}
.fat-consist .cons-divs{margin:6px 0 0;padding-left:18px;font-weight:500}
.fat-consist .cons-divs li{margin:2px 0}
.cur-ctl{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap;font-size:12px}
.cur-seg{display:inline-flex;border:1px solid var(--bd);border-radius:7px;overflow:hidden}
.cur-seg button{border:0;background:var(--sf);padding:4px 11px;cursor:pointer;font-weight:700;color:var(--tx2)}
.cur-seg button.on{background:var(--ac);color:#fff}
.cur-rate{display:inline-flex;align-items:center;gap:4px;color:var(--tx2)}
.cur-rate input{width:78px;padding:3px 6px;border:1px solid var(--bd);border-radius:6px;text-align:right}
#cur_refresh{border:1px solid var(--bd);background:var(--sf);border-radius:6px;padding:3px 9px;cursor:pointer}
.cur-ts{font-size:11px}
.fat-sort{cursor:pointer;user-select:none}
.fat-sort:hover{color:var(--ac)}
.fat-fixed thead th{white-space:normal;overflow-wrap:anywhere;vertical-align:bottom;line-height:1.15}
.fat-fixed td{overflow:hidden}
.fat-cons{margin-bottom:16px}
.fat-fixed{table-layout:fixed;width:100%;font-size:11.5px}
.fat-fixed th,.fat-fixed td{padding-left:5px;padding-right:5px}
.fat-fixed .reg-in{width:100%;box-sizing:border-box;min-width:0;font-size:11.5px;padding:3px 4px}
.fat-fixed .money-in{text-align:left}
/* Congelar as 4 primeiras colunas (Milestone·Fase·Linha·Término) na rolagem horizontal — left = COLW acumulado */
.fat-fixed td:nth-child(-n+4),.fat-fixed th:nth-child(-n+4){position:sticky;z-index:2;background:var(--sf)}
.fat-fixed td:nth-child(1),.fat-fixed th:nth-child(1){left:0}
.fat-fixed td:nth-child(2),.fat-fixed th:nth-child(2){left:92px}
.fat-fixed td:nth-child(3),.fat-fixed th:nth-child(3){left:162px}
.fat-fixed td:nth-child(4),.fat-fixed th:nth-child(4){left:312px}
.pnl-tbl tfoot .pnl-total th:nth-child(-n+4){background:var(--s2)}
.pnl-tbl td,.pnl-tbl th{vertical-align:middle}
.pnl-tbl th:nth-child(n+2):nth-child(-n+7),.pnl-tbl td:nth-child(n+2):nth-child(-n+7){text-align:right}
.pnl-tbl th:first-child,.pnl-tbl td:first-child{text-align:left}
.pnl-tbl .money-in{text-align:right}
.pnl-calc{font-variant-numeric:tabular-nums;font-weight:600;color:var(--tx)}
.pnl-calc.neg{color:#d23b4e}
.pnl-tbl tfoot .pnl-total th{border-top:2px solid var(--bd);background:var(--s2);font-weight:700;font-variant-numeric:tabular-nums}
.pnl-tbl tfoot .pnl-total th.neg{color:#d23b4e}
/* Consolidado alinhado ao detalhe: col1 Marcos (centro) · col2 Fase (esq) · demais à direita */
.cons-tbl td,.cons-tbl th{text-align:right}
.cons-tbl td:nth-child(1),.cons-tbl th:nth-child(1){text-align:center}
.cons-tbl td:nth-child(2),.cons-tbl th:nth-child(2){text-align:left}

/* ===== Densidade do topo (pedido explícito: "quero td em 1 linha") ===================================== */
/* Topbar: menus + RIDAC + ícones num só nível — paddings/fonte compactados p/ caber em ~1900px sem quebrar. */
.tabs{flex-wrap:nowrap;min-width:0}
/* … mas a Linha 2 do P³ᵂ passou de 7 p/ 16 itens em 24/08/2026 (8) (`Projetos ▾` virou 9 pills + 🏁 Encerrar):
   soma ~1400px de botões, mais que a largura útil da topbar em qualquer tela ≤ 1600px. Com `nowrap` e sem
   overflow os últimos botões saíam da caixa e ficavam INVISÍVEIS — e `overflow-x:auto` aqui não serve
   (viraria contexto de recorte e CLIPARIA os `.navdrop-menu`, que são absolutos; por isso `.tabs` nasceu
   `overflow:visible`). Então só o #tabs volta a poder QUEBRAR: enquanto couber segue em 1 linha (o pedido
   original "quero td em 1 linha" continua valendo na prática), e só quando não cabe ele desce a 2ª fila em
   vez de esconder botão. `flex:none` nos itens impede que encolham antes de quebrar. */
#tabs{flex-wrap:wrap}
#tabs>[data-app]{flex:none}
/* TOPO ESTÁVEL entre apps (26/08/2026, "deve ser o topo de TODAS as telas para dar fluência no app"): a
   Linha 2 mostra as categorias do app em destaque e só o P³ᵂ quebra em DUAS linhas — o conteúdo descia
   ~20px ao navegar p/ o Waterfall e subia na volta. A altura da pill é DECLARADA (medir não serve: o
   escalaUI aplica zoom no body e getBoundingClientRect devolve px JÁ escalados) e a Linha 2 RESERVA a 2ª
   linha sempre que há categoria visível. Na 🏠 entrada (Linha 2 vazia via limparApp) a reserva NÃO vale —
   viraria faixa cinza justo na tela cujo requisito é caber. Este bloco tinha se perdido do style.css
   (mesmo lote do hw-apps/macro-fluxo) e foi restaurado em 26/08/2026 pelo contrato do home-entrada.test. */
.tabs{--tab-lh:27.5px}
.tabs:has(> [data-app]:not(.app-off)){min-height:calc(var(--tab-lh) * 2 + 4px)}
.tab,.navdrop-btn{padding:5px 7px;font-size:11.5px}
.topbar{gap:5px;padding:5px 8px}
.topbar-scope{margin:0 2px;gap:4px}
.topbar-scope select{padding:4px 7px;font-size:12px;max-width:170px}
.pb-trig{padding:4px 7px;font-size:12px;max-width:190px}
.tabs>.tb-base{padding:5px 8px;margin:0 1px 0 2px}
.tab-sep{margin:0 1px}
/* Legenda do Gantt: legenda + ◆ camadas SEMPRE numa linha só (compacta; clipa o excesso em telas estreitas
   em vez de quebrar — pedido explícito depois do flex-wrap ter jogado os ◆ pra 2ª linha). */
.leg-wrap{flex-wrap:nowrap}
.leg-wrap>.g-leg{flex-wrap:nowrap;overflow:hidden;font-size:10.5px;gap:7px}
.toolbar.leg-marcos{flex-wrap:nowrap}
/* Barra do cronograma em 3 LINHAS (pedido explícito) — otimização de espaço p/ os blocos conviverem na mesma linha: */
/* selects compactos (Reprogramar/Capacidade ocupavam ~700px juntos — agora ~170px cada, texto com reticências) */
.barra-cron .tb-sel{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.barra-cron .bloco{padding:2px 6px}
/* imãs do layout antigo que quebravam a linha compartilhada: Filtros perdia a linha própria; pct/viz soltam o margin-auto */
.barra-cron .bloco[data-bloco="filtros"]{flex-basis:auto;flex:0 1 auto;min-width:0}   /* 0 = a caixa abraça o conteúdo (sem sobra vazia à direita — pedido 05/07); ainda encolhe em tela estreita */
.barra-cron .bloco[data-bloco="pct"]{margin-left:0}
.barra-cron .bloco[data-bloco="viz"]{margin-left:0}
/* 🗓 Prog. = 1 ícone → JANELA com todas as opções (overlay fixo no body — dropdown ancorado clipava nos
   blocos roláveis da barra). Ação em massa (⚙▢) mora no bloco %. */
.tbm-ov{position:fixed;inset:0;z-index:940;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;padding:20px}
.tbm-card{background:var(--sf);border:1px solid var(--bd);border-radius:14px;box-shadow:0 24px 70px rgba(20,30,60,.4);width:820px;max-width:96vw;max-height:88vh;overflow:auto;padding:16px 18px}
.tbm-tit{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800}
.tbm-x{margin-left:auto;border:none;background:none;cursor:pointer;font-size:14px;color:var(--tx2)}
.tbm-help{border:1px solid var(--bd);background:#fff;border-radius:50%;width:20px;height:20px;line-height:1;cursor:pointer;font-size:11px;font-weight:700;color:var(--ac)}
.tbm-nota{font-size:11px;color:var(--tx2);margin:4px 0 12px}
.tbm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.tbm-sec{border:1px solid var(--bd);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:3px}
.tbm-h{font-size:10.5px;font-weight:800;color:var(--tx2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.tbm-it{position:relative;display:flex;flex-direction:column;gap:1px;text-align:left;background:none;border:none;border-radius:8px;padding:6px 8px;cursor:pointer;color:var(--tx);font:inherit}
.tbm-it:hover{background:var(--s2)}
.tbm-ithelp{position:absolute;top:6px;right:8px;width:18px;height:18px;line-height:16px;text-align:center;border:1px solid var(--bd);border-radius:50%;background:#fff;color:var(--ac);font-size:10.5px;font-weight:700;cursor:help}
.tbm-ithelp:hover{border-color:var(--ac);background:var(--s2)}
/* PROGRAMAÇÃO ATIVA DO PROJETO — ① marcar o tipo (⭘/⏺ no card) · ② automático (switch na barra do rodapé).
   O ⭘ é alvo PRÓPRIO (stopPropagation): marcar não dispara a ação; clicar no resto do card roda como sempre. */
/* O ⭘/⏺ como GLIFO sai minúsculo (a fonte desenha bem menor que o corpo do texto — mesma armadilha do emoji
   monocromático já paga no cadeado .lk). Por isso o rádio é DESENHADO em CSS: aro + miolo obedecem ao px. */
.tbm-pick{position:absolute;top:3px;left:2px;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;font-size:0;color:transparent;cursor:pointer;user-select:none}
.tbm-pick::before{content:'';width:19px;height:19px;border:2.5px solid #94a3b8;border-radius:50%;background:#fff;box-sizing:border-box;transition:border-color .12s}
.tbm-pick:hover{background:#e8eefc}
.tbm-pick:hover::before{border-color:var(--ac)}
.tbm-pick.on::before{border-color:#16a34a;box-shadow:inset 0 0 0 4px #16a34a}
.tbm-pick.on:hover::before{border-color:#15803d;box-shadow:inset 0 0 0 4px #15803d}
.tbm-it.sel{background:#f0fdf4;box-shadow:inset 3px 0 0 #22c55e}
.tbm-it.sel:hover{background:#dcfce7}
.tbm-it:has(.tbm-pick:hover){background:none}   /* mouse no ⭘ = alvo é o ⭘, não o card */
.tbm-it:has(.tbm-pick){padding-left:36px;padding-right:26px}   /* abre a coluna do rádio à esquerda; à direita só o "?" */
.tbm-it.sel:has(.tbm-pick){padding-left:34px}                  /* a faixa verde do selecionado ocupa 2px da borda */
/* ① Cards-base (Por predecessoras × Data de status) — o card INTEIRO é o rádio: aro desenhado no ::before */
.tbm-bases{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.tbm-base{border:1px solid var(--bd);border-radius:10px;padding:10px 30px 10px 40px}
.tbm-base::before{content:'';position:absolute;left:11px;top:12px;width:19px;height:19px;border:2.5px solid #94a3b8;border-radius:50%;background:#fff;box-sizing:border-box;transition:border-color .12s}
.tbm-base:hover{border-color:var(--ac)}
.tbm-base:hover::before{border-color:var(--ac)}
.tbm-base.sel{border-color:#22c55e}
.tbm-base.sel::before{border-color:#16a34a;box-shadow:inset 0 0 0 4px #16a34a}
.tbm-niv{display:flex;margin:8px 0 0}
/* Rodapé 🔍 Diagnósticos — links só-leitura (navegam, não movem datas) */
.tbm-diag{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:8px;border-top:1px dashed var(--bd);font-size:11px;color:var(--tx2)}
.tbm-diag i{font-style:normal;opacity:.8}
.tbm-diaglnk{border:1px solid var(--bd);background:#fff;border-radius:999px;padding:3px 10px;cursor:pointer;font:inherit;font-size:11px;font-weight:600;color:var(--tx)}
.tbm-diaglnk:hover{border-color:var(--ac);color:var(--ac);background:var(--s2)}
/* selo do botão 🗓 Prog. — mostra a programação ATIVA do projeto sem abrir a janela (⚡ = automático ligado) */
.tb-progsel{margin-left:5px;padding:1px 6px;border-radius:999px;border:1px solid var(--bd);background:#fff;font-size:9.5px;font-weight:800;letter-spacing:.02em;color:var(--tx2);vertical-align:1px}
.tb-progsel.auto{background:#dcfce7;border-color:#22c55e;color:#166534}
/* ▶ Rodar agora — só existe no DOM com o ⚡ automático DESLIGADO (no automático já roda sozinha).
   Verde de AÇÃO p/ separar do azul do grupo; a regra genérica `.tb-prog button` vem antes no arquivo,
   então estas ganham na cascata sem !important. */
.tb-prog button.tb-progrun{margin-left:3px;padding:0 6px;background:#dcfce7;border-color:#22c55e;color:#166534;font-size:10px;line-height:1}
/* ⛓ Cascata forçada — irmã do ▶: ligada, a atualização de uma atividade reprograma o cone a jusante MESMO
   travado. Âmbar de "modo ativo" (mesma família do ▤ ligado): é uma regra que vence trava, tem de saltar. */
.tb-ic.tb-progcasc{color:#94a3b8}
.tb-ic.tb-progcasc.on{background:#d97706;border-color:#b45309;color:#fff;font-weight:700;box-shadow:0 0 0 2px rgba(217,119,6,.25)}
.tb-prog button.tb-progrun:hover:not(:disabled){background:#16a34a;border-color:#16a34a;color:#fff}
/* rótulos ①/② — deixam explícita a sequência: primeiro o tipo, depois o automático */
.tbm-passo{margin:12px 0 5px;font-size:11px;font-weight:800;color:var(--tx2);letter-spacing:.02em}
/* ② barra: o automático do tipo escolhido */
.tbm-prog{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 4px;padding:8px 10px;border:1px solid var(--bd);border-left:3px solid #22c55e;border-radius:8px;background:#f0fdf4;font-size:11.5px}
.tbm-prog.vazio{border-left-color:var(--bd);background:var(--s2);color:var(--tx2)}
.tbm-progtit{flex:1;min-width:220px}
/* ▶ Rodar agora da barra ② — dispara a programação ativa sem depender do card (17/08/2026). Verde do
   mesmo par do .tb-progrun da toolbar: o gesto é o MESMO em dois lugares, tem de parecer o mesmo. */
.tbm-progrun{flex:0 0 auto;padding:5px 12px;border:1px solid #22c55e;border-radius:999px;background:#dcfce7;color:#166534;font-size:11px;font-weight:700;cursor:pointer}
.tbm-progrun:hover{background:#16a34a;border-color:#16a34a;color:#fff}

.tbm-progav{width:100%;font-size:10.5px;color:#92400e}
/* 📅 data-limite do "Nivelar até" na barra ② — à vista porque o ⚡ automático a usa sem perguntar (e data
   absoluta envelhece: vencida = âmbar + "não roda", ausente = tracejado pedindo definição). */
.tbm-progate{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;font-size:11px;font-weight:700;color:#1d4ed8;cursor:pointer}
.tbm-progate:hover{border-color:#1d4ed8;background:#dbeafe}
.tbm-progate.falta{border-style:dashed;border-color:var(--bd);background:#fff;color:var(--tx2);font-weight:600}
.tbm-progate.venceu{border-color:#f59e0b;background:#fffbeb;color:#92400e}
.tbm-progate.venceu i{font-style:normal;font-weight:600;opacity:.85}
.tbm-progsw{position:relative;display:flex;align-items:center;gap:7px;padding:5px 10px 5px 8px;border:1px solid var(--bd);border-radius:999px;font-size:11px;font-weight:700;color:var(--tx2);background:#fff;cursor:pointer}
.tbm-progsw::before{content:'';flex:0 0 28px;height:16px;border-radius:999px;background:var(--bd);transition:background .15s}
.tbm-progsw::after{content:'';position:absolute;left:10px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:transform .15s}
.tbm-progsw:hover{border-color:var(--ac);color:var(--ac)}
.tbm-progsw.on{background:#dcfce7;border-color:#22c55e;color:#166534}
.tbm-progsw.on::before{background:#22c55e}
.tbm-progsw.on::after{transform:translateX(12px)}
.tbm-demoband{display:flex;align-items:center;gap:8px;margin:16px 0 8px}
.tbm-demoband::before,.tbm-demoband::after{content:'';flex:1;border-top:1px dashed var(--bd)}
.tbm-demolbl{font-size:10px;font-weight:800;letter-spacing:.08em;color:#92400e;background:#fef3c7;border:1px solid #fcd34d;border-radius:999px;padding:2px 10px}
.tbm-demotxt{font-size:10.5px;color:var(--tx2)}
.tbm-demo .tbm-sec{border-style:dashed;background:#fffdf4}
.rh-foco{background:#f0f7ff;border-radius:10px;padding:8px;box-shadow:0 0 0 2px var(--ac)}
.tbm-it b{font-size:12.5px}
.tbm-it span{font-size:10.5px;color:var(--tx2);line-height:1.35}
/* Filtros compactos: hierarquia F·F·G agrupada num bloquinho (pedido explícito) */
.f-hier{display:inline-flex;gap:2px;align-items:center;border:1px solid var(--bd);border-radius:8px;padding:1px 3px;background:#fff}
.f-hier .fdrop-btn{padding:3px 7px}
/* Wizard do 🗓 Prog. (abas: guia por problema × todas as opções) */
.tbm-tabs{display:inline-flex;gap:3px;margin-left:10px}
.tbm-tab{border:1px solid var(--bd);background:#fff;color:var(--tx2);border-radius:8px;padding:3px 10px;cursor:pointer;font-size:11.5px;font-weight:600}
.tbm-tab.on{background:var(--ac);border-color:var(--ac);color:#fff}
.tbm-probs{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:8px}
.tbm-prob{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--bd);background:#fff;border-radius:10px;padding:10px 12px;cursor:pointer;font:inherit;font-size:12.5px;font-weight:600;color:var(--tx)}
.tbm-prob:hover{border-color:var(--ac);background:var(--s2)}
.tbm-pic{font-size:16px;flex:0 0 auto}
.tbm-back{border:none;background:none;color:var(--ac);cursor:pointer;font:inherit;font-size:12px;padding:0;margin-bottom:8px}
.tbm-probtit{font-size:13.5px;font-weight:800;margin-bottom:10px}
.tbm-sols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.tbm-sol{border:1px solid var(--bd);border-radius:10px;padding:10px 12px}
.tbm-sol-reco{border-color:#1f9d57;box-shadow:0 0 0 1px #1f9d57}
.tbm-badge{font-style:normal;font-size:10px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.04em}
.tbm-sol-reco .tbm-badge{color:#1f7a44}
.tbm-oque{font-size:10px;color:#8a93a3;margin-top:2px}
/* Tracking: com a topbar em 1 LINHA o botão fica perto da borda direita — ancorado à esquerda o menu
   estourava p/ FORA da tela ("não consigo ver as opções"). Ancora pela DIREITA: sempre 100% visível. */
.navdrop-menu.menu-tracking{left:auto;right:0}

/* ---- PBS e WBS: Ferramenta de Carga + construtor de pacotes ---- */
.carga-cards{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px}
.carga-card{flex:1 1 300px;border:1px solid var(--bd);border-radius:12px;padding:18px;background:var(--sf);display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.carga-card .cc-emoji{font-size:26px}
.carga-card h3{margin:0;font-size:15px}
.carga-card p{margin:0;font-size:12.5px}
.carga-card .btn{margin-top:6px}
.carga-erros{margin-top:12px;border:1px solid #f0b4bd;background:#fdf2f4;border-radius:10px;padding:12px 14px;font-size:13px;color:#8a1f2f}
.carga-erros ul{margin:6px 0 0;padding-left:18px}
.carga-avisos{margin-top:10px;border:1px solid #cfe0ff;background:#f3f8ff;border-radius:10px;padding:8px 12px;font-size:12.5px;color:#1e429f}
.carga-diff{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px;font-weight:600}
.carga-diff .cd-novo{color:#15803d}.carga-diff .cd-rem{color:#b91c1c}.carga-diff .cd-alt{color:#a16207}
.wbs-split{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:16px;margin-top:12px}
@media(max-width:1100px){.wbs-split{grid-template-columns:1fr}}
.wbs-left{border:1px solid var(--bd);border-radius:10px;padding:10px;background:var(--sf);align-self:start}
.wbs-lh,.wbs-left .wbs-lh{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--tx2);margin-bottom:6px}
.wbs-ent{display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:7px;font-size:12.5px;cursor:pointer}
.wbs-ent:hover{background:var(--s2)}
.wbs-ent.on{background:#eef6ff}
.wbs-ent code{color:var(--tx2)}
.wbs-ent span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wbs-ent .wbs-pri{margin-left:auto;font-size:11px;color:var(--tx2);white-space:nowrap}
.wbs-ent .wbs-ok{margin-left:4px}
.wbs-right{display:flex;flex-direction:column;gap:12px;min-width:0}
.wbs-pack{border:1px solid var(--bd);border-radius:10px;padding:10px;background:var(--sf)}
.wbs-pack-h{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:6px;flex-wrap:wrap}
.wbs-pack-h .wbs-pri{color:var(--tx2);font-size:11px}
.wbs-pack-h .btn{margin-left:auto}
.wbs-pack-h .wbs-pacsel{margin-left:auto;font-size:12px;max-width:230px}
.wbs-pack-h .wbs-pacsel ~ .btn,.wbs-pack-h .btn ~ .btn{margin-left:0}
.wbs-ativ{width:100%;border-collapse:collapse}
.wbs-ativ td{padding:3px 4px;border-bottom:1px solid var(--bd)}
.wbs-ativ input{width:100%;box-sizing:border-box}
/* PBS outline: arrastar/mover/inline */
.pb-tab td{vertical-align:middle}
.pb-nomewrap{display:inline-flex;align-items:center;gap:6px;width:100%}
.pb-nomewrap .pb-nome{flex:1;min-width:120px;box-sizing:border-box}
.pb-tab .pb-pri,.pb-tab .pb-desc{width:100%;box-sizing:border-box}
.pb-drag{cursor:grab;color:var(--tx2);-webkit-user-select:none;user-select:none;font-size:14px;line-height:1}
.pb-drag:active{cursor:grabbing}
.pb-mini{padding:1px 6px;font-size:12px;line-height:1.4;min-width:0}
tr.pb-dragging{opacity:.45}
tr.pb-over>td{box-shadow:inset 0 -2px 0 var(--ac)}

/* ---- 💵 Financeiro (pacote 4): tela Resultado (P&L) — curva de caixa, ponte e strip de EVA ---- */
.pnl-card{margin-top:14px}
.pnl-card h2{margin:0 0 8px}
.pnl-curva{display:block;overflow:visible}
.pnl-leg{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.pnl-lg{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--bd);border-radius:999px;background:var(--sf);cursor:pointer;font-size:11.5px;color:#64748b;opacity:.55}
.pnl-lg.on{opacity:1;color:var(--tx,#0f172a);border-color:#94a3b8}
.pnl-lg i{width:10px;height:10px;border-radius:2px;display:inline-block}
.pnl-evs{display:flex;flex-wrap:wrap;gap:8px}
.pnl-ev{flex:1 1 96px;min-width:96px;border:1px solid var(--bd);border-radius:8px;padding:7px 10px;background:var(--s2)}
.pnl-ev b{display:block;font-size:15px;line-height:1.25}
.pnl-ev span{display:block;font-size:10.5px;color:#64748b;margin-top:1px}
.pnl-ev b.neg{color:#d23b4e}
/* janela de tempo (③) + chip indicador cruzado (①) */
.pnl-fbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px}
.pnl-fbar select{max-width:132px}
.pnl-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.pnl-chip{border:1px solid #94a3b8;background:var(--s2);border-radius:999px;padding:2px 9px;font-size:11.5px;cursor:pointer;white-space:nowrap}
.pnl-chip:hover{border-color:#d23b4e;color:#d23b4e}
.pnl-ver{margin-bottom:4px}
/* opção de filtro que zerou sob as demais restrições: atenuada, mas CLICÁVEL */
.tk-zero{color:#94a3b8}
/* rótulo da linha de grupo quando há subtotais (o resto da linha vira células de soma) */
.tk-grp-lbl{font-weight:600}

/* ---- 💵 Financeiro (pacote 5): tela Orçamento — barra de revisão, card da linha e prévia ---- */
.pnl-orcbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px}
.pnl-orcbar select{max-width:190px}
.pnl-orcbar .btn{padding:3px 9px;font-size:11.5px}
.pnl-in{width:100%;min-width:0}
.pnl-in.num{text-align:right}
.pnl-card-modal{width:min(520px,96vw)}
.pnl-cf{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.pnl-cf>span{flex:0 0 108px;font-size:12px;color:var(--tx2)}
.pnl-cf input,.pnl-cf select{flex:1 1 auto;min-width:0}
.pnl-cvals{display:flex;flex-direction:column}
.pnl-cinfo{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--bd)}
.pnl-cinfo>div{flex:1 1 110px;background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:6px 9px}
.pnl-cinfo b{display:block;font-size:14px}
.pnl-cinfo span{display:block;font-size:10.5px;color:#64748b}
.pnl-prev{margin:0 0 10px;padding-left:18px;font-size:12.5px;line-height:1.6}

/* ---- 💵 Financeiro (pacote 6): tela Entradas e Saídas ---- */
.fat-links{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.fat-links .btn{padding:3px 10px;font-size:11.5px}
.sai-base{border:1px solid var(--bd);border-radius:9px;padding:8px 11px;background:var(--s2)}
.sai-base>summary{cursor:pointer;font-size:12.5px;line-height:1.5}
.sai-base table{margin-top:8px}
.pnl-legado>summary{cursor:pointer;font-size:12.5px;line-height:1.5;color:var(--tx2)}
.pnl-legado[open]>summary{margin-bottom:6px}
.pnl-legado table{opacity:.85}
/* larguras mínimas das células editáveis do Orçamento (o valor não pode sair truncado: 45.00 ≠ 45.000) */
.pnl-in{min-width:86px}
.pnl-in.num{min-width:92px;text-align:right}
/* O .card padrão trava em 1000px (mesma armadilha que obrigou o .card.rk{max-width:none} do reportKit).
   A 10.1 passou a ter 17 colunas nas Entradas: sem isto a tabela nasce espremida em qualquer monitor. */

/* ===== 🏠 Tela de entrada (24/08/2026) — os 10 apps da Suíte P³ conectados em sequência lógica ==============
   Promove a leitura de vendas da Cadeia de Valor (Suíte P³) a home nativa do 103. Cada card usa --hc (cor do
   app, injetada inline pelo homeUI.js) só como ACENTO — mesma diretriz "cor de banda = acento, nunca
   preenchimento" da Cadeia de Valor (paleta CLEAN). */
.tab-home{font-size:16px}
#view-home.active{align-items:center}
.home-wrap{max-width:1120px;margin:0 auto;padding:22px 18px 40px;width:100%}
.home-head{text-align:center;margin-bottom:18px}
.home-head h1{margin:0 0 4px;font-size:19px}
.home-head p{margin:0 auto;max-width:760px;font-size:12.5px;color:var(--tx2);line-height:1.5}
.home-row{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:0 auto}
.home-seta{text-align:center;color:var(--tx2);font-size:15px;opacity:.6;margin:2px 0}
.home-lbl{text-align:center;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tx2);margin:14px 0 8px}
.home-card{display:flex;align-items:flex-start;gap:10px;text-align:left;width:290px;padding:12px;
  background:var(--sf);border:1px solid var(--bd);border-radius:12px;cursor:pointer;
  box-shadow:0 1px 2px rgba(20,30,60,.05);transition:box-shadow .12s,transform .12s}
.home-card:hover{box-shadow:0 6px 16px rgba(20,30,60,.14);transform:translateY(-1px);border-color:var(--hc)}
.home-ico{flex:none;width:40px;height:40px;border-radius:10px;background:var(--hc);
  display:flex;align-items:center;justify-content:center}
.home-letra{color:#fff;font-weight:800;font-size:11px;letter-spacing:.02em}
/* 24/08/2026 (7), "quero mais dessa forma" — mesmo padrão do .su-badge da Cadeia de Valor: "P³" em cima ·
   a letra do módulo (hl-2) embaixo e MAIOR, mais visível. `:has()` liga o empilhamento SÓ quando existe
   `.hl-2` (as home cards, badge "P³ˢ") — o `.home-letra` das telas central de app (`.apphome-ico`, um
   emoji avulso tipo 🧭) não tem `.hl-2` e segue exatamente como estava, sem precisar de 2ª classe no pai. */
.home-letra:has(.hl-2){display:flex;flex-direction:column;align-items:center;line-height:1}
.hl-1{font-size:12px}
.hl-2{font-size:20px;margin-top:1px}
/* Título de tela central de app (ex. "P³ˢ Estratégia") — MESMO badge empilhado, um pouco maior p/ casar
   com o H1 (19px); troca o `<sup class="p3X-selo">` inline antigo (8.5px, ilegível) só AQUI — o `.p3X-selo`
   compartilhado segue intocado nos usos inline de menu/rótulo, onde compacto é o certo. */
.h1-badge{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  line-height:1;vertical-align:middle;margin-right:5px}
.h1-badge .hl-1{font-size:13px}
.h1-badge .hl-2{font-size:24px;margin-top:1px}
.h1-ico{font-size:21px;line-height:1}
.home-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.home-tit{font-weight:700;font-size:13px;color:var(--tx)}
.home-desc{font-size:11.5px;color:var(--tx2);line-height:1.4}
/* Leitura de vendas (24/08/2026): pitch = 1 frase de impacto na cor do app (acento, nunca preenchimento) */
.home-pitch{font-size:11px;font-weight:700;color:var(--hc);line-height:1.35}
.home-kpis{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:0 0 8px}
.home-kpis button,.home-kpis span{font-size:10.5px;font-weight:600;padding:3px 10px;border-radius:999px;
  border:1px solid var(--bd);background:var(--sf);color:var(--tx2);cursor:pointer}
.home-kpis span{cursor:default}
.home-kpis b{color:var(--tx);font-size:11.5px}
.home-kpis button:hover{border-color:var(--ac);color:var(--ac)}
.home-cta{text-align:center;margin-top:18px}
.home-entrega .home-card,.home-fundacao .home-card{width:320px}
.home-apoio .home-card{width:250px}
.home-fundacao{margin-top:14px}
.home-fundacao .home-card{width:100%;max-width:1080px}
@media (max-width:640px){ .home-card,.home-entrega .home-card,.home-apoio .home-card,.home-fundacao .home-card{width:100%} }

/* ===== 🏠 Home em 3 leituras (24/08/2026) — seletor + 📋 Funcionalidades + 🌊 Fluxo vivo ====================
   Mesma suíte, 3 formas de ler: cards (vendas), lista (o que cada caixa entrega) e fluxo conectado com setas
   animadas e balões graduais. Segue a diretriz da Cadeia de Valor: a cor do app é ACENTO (--hc), nunca
   preenchimento; nada de barra em gradiente nem texto branco sobre cor forte. */
.home-wrap.hw-larga{max-width:1380px}
/* 🗂 Apps — cards LARGOS p/ caber em 1 tela (26/08/2026, *"aumente a largura de cada icone, assim vai caber
   em 1 unica tela"*): o miolo vai a 1800px e cada linha DIVIDE a largura entre os seus cards (`flex:1 1 0`);
   as larguras fixas de 3367-3370 viram `min-width` (é o que ainda quebra linha em monitor estreito). Com os
   5 cards de apoio numa linha só (antes o 5º caía numa 2ª linha), a leitura volta a caber na tela. A classe
   já era aplicada pelo homeUI.js desde a PPMK900119 — este bloco é o CSS que faltava. */
.home-wrap.hw-apps{max-width:1800px}
.hw-apps .home-card{flex:1 1 0;width:auto;min-width:290px}
.hw-apps .home-entrega .home-card{min-width:320px}
.hw-apps .home-apoio .home-card{min-width:230px}
.hw-apps .home-fundacao .home-card{min-width:0;max-width:none}
.home-seg{display:inline-flex;gap:2px;margin:8px 0 10px;padding:2px;background:var(--s2);border:1px solid var(--bd);border-radius:999px}
.home-seg button{border:0;background:transparent;color:var(--tx2);font-size:11.5px;font-weight:600;
  padding:5px 13px;border-radius:999px;cursor:pointer}
.home-seg button:hover{color:var(--tx)}
.home-seg button.active{background:var(--sf);color:var(--tx);box-shadow:0 1px 2px rgba(20,30,60,.12)}

/* ---- Leituras que TÊM DE CABER na tela (24/08/2026) — 🌊 Fluxo vivo e 🔳 APP Macro --------------------------
   Pedido do usuário: *"Fluxo vivo, mas precisa caber em toda a tela"* e, no APP Macro, *"cabendo tudo na
   tela"*. É requisito, não estética: o wrapper ocupa a altura do <section> (que já é flex-column) e TODO
   respiro entre as faixas vira `vh` — em monitor baixo o desenho comprime, em vez de empurrar a última faixa
   para fora. No 🌊, quem rola é o corpo (e só quando os balões abrem, que aí o conteúdo cresce de propósito):
   a rolagem NÃO pode ficar no `.hv-mapa`, que é o offsetParent das setas — o SVG mede `offsetWidth/Height`
   dele e as setas sairiam esmagadas contra a área visível. */
.home-wrap.hw-fit,.home-wrap.hw-macro{flex:1;min-height:0;display:flex;flex-direction:column;
  padding:12px 16px 10px;overflow:hidden}
.home-wrap.hw-fit{max-width:1560px}
.home-wrap.hw-fit.hw-telas{max-width:none}   /* 🧭 26/08/2026 "use toda a tela": as linhas por app usam a largura inteira */
.home-wrap.hw-fit.hw-lista{max-width:none}   /* 📋 26/08/2026 "faça encaixar em 1 única tela": as caixas usam a largura inteira, menos scale p/ caber na altura */
.home-wrap.hw-macro{max-width:1320px}
.hw-fit .home-head,.hw-macro .home-head{margin-bottom:clamp(4px,1.2vh,12px)}
.hw-fit #homeCorpo{flex:1;min-height:0;overflow:auto}
.hw-macro #homeCorpo{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
/* 🌊 comprimido em DOIS estágios. 1º os respiros viram `vh` (o desenho encolhe antes de estourar); 2º, se
   ainda não couber, o homeFluxoUI aplica um `scale` no mapa (`--hvk`) medido contra a altura real disponível
   — é o que garante o "caber em toda a tela" em qualquer monitor, sem depender de eu acertar clamp por clamp.
   O scale só vale com os balões FECHADOS: abrir balão é pedir mais conteúdo, e aí o corpo rola de propósito. */
.hw-fit .hv-ctrl{margin:0 0 clamp(4px,1vh,12px)}
.hw-fit .hv-main{gap:clamp(8px,2.2vh,30px)}
.hw-fit .hv-sup{padding-top:clamp(2px,1.8vh,26px);gap:clamp(5px,1.2vh,14px)}
.hw-fit .hv-fund{margin-top:clamp(8px,2vh,32px)}
.hw-fit .hv-etapa,.hw-fit .hv-lanes{gap:clamp(2px,.5vh,5px)}
.hw-fit .hv-h{padding:clamp(4px,.8vh,9px) 10px}
.hw-fit .hv-badge{width:clamp(30px,4.2vh,38px);height:clamp(30px,4.2vh,38px)}
.hw-fit .hv-cap{padding:2px 12px}
/* O scale mora num wrapper de altura CRAVADA (JS) porque `transform` não muda a caixa de layout: sem isso
   sobraria, embaixo, exatamente o tanto que o mapa encolheu — rolagem fantasma numa leitura que não rola. */
.hv-fitwrap{width:100%}
.hw-fit .hv-mapa{transform:scale(var(--hvk,1));transform-origin:top center}

/* ---- 🔳 APP Macro ----
   A marca P³ˣ (mesmo `badgeP3` da Linha 1, ver navAppsUI) ampliada + o nome do app. Sem pitch, sem descrição:
   a leitura existe justamente para a suíte caber de um olhar só. */
.macro-grid{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;
  gap:clamp(2px,.9vh,10px);width:100%}
.macro-row{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(6px,1vw,14px)}
.macro-seta{text-align:center;color:var(--tx2);font-size:13px;opacity:.55;line-height:1}
.macro-lbl{text-align:center;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--tx2);margin:clamp(2px,.7vh,7px) 0 0}
.macro-card{display:flex;flex-direction:column;align-items:center;gap:clamp(4px,.9vh,10px);
  width:clamp(104px,11.5vw,152px);padding:clamp(8px,1.3vh,15px) 8px;background:var(--sf);
  border:1px solid var(--bd);border-radius:14px;cursor:pointer;box-shadow:0 1px 2px rgba(20,30,60,.05);
  transition:box-shadow .12s,transform .12s,border-color .12s}
.macro-card:hover{box-shadow:0 8px 20px rgba(20,30,60,.16);transform:translateY(-2px);border-color:var(--hc)}
.macro-ico{display:flex;align-items:center;justify-content:center;border-radius:16px;background:var(--hc);
  color:#fff;width:clamp(52px,7.4vh,80px);height:clamp(52px,7.4vh,80px)}
.macro-ico .app-badge{margin-right:0}
.macro-ico .ab-p{font-size:clamp(26px,4.1vh,44px)}
.macro-ico .ab-1,.macro-ico .ab-2{font-size:clamp(11px,1.7vh,18px)}
.macro-tit{font-size:clamp(11px,1.5vh,14px);font-weight:700;color:var(--tx);text-align:center;line-height:1.25}
/* A CADEIA na HORIZONTAL (26/08/2026, "mude para um fluxo logico na horizontal") — o homeMacroUI novo emite
   .macro-fluxo/.macro-etapa/.macro-cards/.macro-arrow e este bloco tinha se perdido do style.css (mesma
   história do hw-apps): sem ele as etapas empilhavam na vertical e estouravam a tela ("ajuste isso").
   A ETAPA é a unidade de largura (flex:1); a ④ que bifurca (cascata ‖ ágil) vale 2 e ganha moldura
   tracejada p/ a bifurcação SE LER como bifurcação. ⚠ NUNCA dar flex:1 à .macro-fluxo (o vão morto iria
   p/ DENTRO dos cards — travado por teste negativo em home-entrada.test.mjs). */
.macro-fluxo{display:flex;align-items:stretch;justify-content:center;gap:clamp(4px,.6vw,10px);width:100%}
.macro-etapa{display:flex;flex-direction:column;gap:clamp(3px,.6vh,8px);flex:1 1 0;min-width:0}
.macro-etapa-dupla{flex:2 1 0}
.macro-fase{text-align:center;font-size:clamp(9px,1.2vh,11px);font-weight:700;color:var(--tx2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.macro-cards{flex:1;display:flex;justify-content:center;align-items:stretch;gap:clamp(6px,.8vw,12px);
  padding:clamp(3px,.7vh,8px)}
.macro-etapa-dupla>.macro-cards{border:1px dashed var(--bd);border-radius:14px}
.macro-arrow{align-self:center;color:var(--tx2);font-size:clamp(12px,1.8vh,18px);opacity:.55;flex:0 0 auto}
.macro-fluxo .macro-card{width:auto;flex:1 1 0;min-width:0;justify-content:center}
@media (max-width:640px){ .macro-card{width:calc(50% - 10px)} }

/* ---- 📋 Funcionalidades ----
   ENCAIXE em 1 tela (26/08/2026, "faça encaixar em 1 única tela" → "ocupe todo o espaco... crie o ENCAIXAR
   NA TELA e zoom in, out... letras muito pequenas"): `.hl-topo` (busca + as MESMAS lupinhas do 🧭 Fluxo ·
   telas, reusando `.htf-ctrl/.htf-cbtn/.htf-pct` — genéricas, sem duplicar CSS) fica FORA do scale, e
   `#hlFit>#hlWrap` escala por `transform:scale(var(--hlk))` medido em `homeListaUI.encaixar` contra a
   altura real de `#homeCorpo` — a largura pré-compensada (`100/k%`, JS) evita vão lateral ao encolher;
   `.hl-fitwrap{overflow:hidden}` recorta esse excesso de largura de LAYOUT. */
.hl-topo{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 8px}
.hl-topo .hl-busca{flex:1;min-width:0;margin:0}
.hl-topo .htf-ctrl{margin:0;flex:0 0 auto}
.hl-busca{display:flex;align-items:center;gap:10px;justify-content:center;margin:0 0 6px}
.hl-busca input{width:min(460px,70vw);font-size:12px;padding:6px 10px;border:1px solid var(--bd);border-radius:8px;background:var(--sf);color:var(--tx)}
.hl-cont{font-size:11px;color:var(--tx2)}
.hl-fitwrap{width:100%;overflow:hidden}
.hl-wrap{transform:scale(var(--hlk,1));transform-origin:top left}
.hl-row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:flex-start}
.hl-cx{width:330px;background:var(--sf);border:1px solid var(--bd);border-top:3px solid var(--hc);
  border-radius:12px;padding:10px;box-shadow:0 1px 2px rgba(20,30,60,.05)}
/* Caixa com muita tela (o P³ᵂ tem 27) vira 2 colunas — senão ela estica a linha inteira e a caixa vizinha
   fica com um vão vazio do tamanho da diferença. */
.hl-cx.hl-largo{width:560px}
.hl-largo .hl-fs{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px}
.hl-cx.hl-vazia,.home-lbl.hl-off,.hl-f.hl-off{display:none}
.hl-h{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:transparent;border:0;padding:0 0 8px;cursor:pointer}
.hl-badge,.hv-badge{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:9px;background:var(--hc);color:#fff;font-weight:800;line-height:1}
.hl-badge .hl-1,.hv-badge .hl-1{font-size:9px}
.hl-badge .hl-2,.hv-badge .hl-2{font-size:16px;margin-top:1px}
.hl-ht,.hv-ht{display:flex;flex-direction:column;gap:1px;min-width:0}
.hl-nome,.hv-nome{font-weight:700;font-size:12.5px;color:var(--tx)}
.hl-n,.hv-n{font-size:10.5px;color:var(--tx2)}
.hl-pitch{font-size:10.5px;font-weight:600;color:var(--hc);line-height:1.35;margin:-3px 0 7px}
.hl-fs{display:flex;flex-direction:column;gap:2px;border-top:1px dashed var(--bd);padding-top:7px}
.hl-f{display:flex;align-items:center;gap:6px;text-align:left;background:transparent;border:0;border-radius:6px;
  padding:3px 5px;font-size:11.5px;color:var(--tx);cursor:pointer}
.hl-f:hover{background:var(--s2);color:var(--hc)}
.hl-fi{flex:none;width:15px;text-align:center}
@media (max-width:640px){ .hl-cx{width:100%} }

/* ---- 🌊 Fluxo vivo ----
   ⚠ Prefixo `hv-` (home vivo) e NÃO `hf-`: `.hf-*` já é da hierarquia de fases (style.css:2423+), onde
   `.hf-chip:not(.on)` RISCA o texto — reusar o prefixo nascia com todos os chips do balão tachados. */
.hv-ctrl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;margin:0 0 12px}
.hv-btn{font-size:13px;font-weight:600;padding:5px 12px;border-radius:999px;border:1px solid var(--bd);
  background:var(--sf);color:var(--tx);cursor:pointer}
.hv-btn:hover{border-color:var(--ac);color:var(--ac)}
.hv-btn-p{border-color:var(--ac);color:var(--ac)}
.hv-btn-p.hv-run{background:var(--ac);color:#fff}
.hv-dica{font-size:12px;color:var(--tx2)}
.hv-mapa{position:relative;display:grid;grid-template-columns:minmax(0,2.4fr) minmax(0,1fr);gap:4px 40px;align-items:start}
.hv-svg{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:0}
.hv-main{display:flex;flex-direction:column;gap:34px;min-width:0}
.hv-sup{display:flex;flex-direction:column;gap:14px;min-width:0;padding-top:26px}
.hv-fund{grid-column:1/-1;margin-top:38px}
.hv-etapa,.hv-lanes{display:flex;flex-direction:column;gap:5px}
/* Pipeline: as etapas de 1 caixa ficam mais estreitas e centradas — assim o fork Carteira → duas cadências
   e a junção de volta ao Radar APARECEM como curvas, em vez de virarem traços de 1cm entre barras coladas. */
.hv-etapa{width:min(100%,680px);align-self:center}
.hv-fase{font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tx2)}
.hv-lanes-g{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.hv-cap{align-self:center;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:3px 12px;border-radius:999px}
.hv-cap-d{color:#7c3aed;background:rgba(124,58,237,.08)}
.hv-cap-v{color:#15803d;background:rgba(21,128,61,.08)}
.hv-cx{position:relative;z-index:1;background:var(--sf);border:1px solid var(--bd);border-left:3px solid var(--hc);
  border-radius:12px;box-shadow:0 1px 2px rgba(20,30,60,.05);transition:box-shadow .15s,border-color .15s}
.hv-cx.hv-on{box-shadow:0 4px 14px rgba(20,30,60,.13);border-color:var(--hc)}
.hv-h{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:transparent;border:0;
  padding:9px 10px;cursor:pointer}
/* Tipografia do 🌊 um degrau acima da leitura 📋 Lista (pedido do usuário 24/08/2026, *"aumente o tamanho
   das letras"*): o mapa é lido de longe/projetado, então nome, contagem e marca crescem SÓ aqui — o `hl-*`
   da Lista continua no tamanho de cartão. */
.hv-nome{font-size:15px}
.hv-n{font-size:12.5px}
.hv-badge .hl-1{font-size:10.5px}
.hv-badge .hl-2{font-size:18px}
.hv-sm .hv-badge{width:31px;height:31px;border-radius:9px}
.hv-sm .hv-badge .hl-2{font-size:15px}
.hv-sm .hv-nome{font-size:13.5px}
.hv-bal{position:relative;margin:0 10px 10px;padding:8px 9px;background:var(--s2);
  border:1px dashed var(--hc);border-radius:10px;animation:hv-pop .26s ease-out}
.hv-bal::before{content:'';position:absolute;top:-6px;left:20px;width:10px;height:10px;background:var(--s2);
  border-left:1px dashed var(--hc);border-top:1px dashed var(--hc);transform:rotate(45deg)}
.hv-pitch{font-size:12.5px;font-weight:600;color:var(--hc);line-height:1.35;margin:0 0 4px}
.hv-bal-t{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--hc);margin-bottom:5px}

/* ---- 🎬 Tour (24/08/2026) — trilho vertical dos 74 subprocessos, prefixo `htr-` (livre; grep antes de criar) ---- */
.htr-trilho{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
.htr-sec{background:var(--sf);border:1px solid var(--bd);border-left:3px solid var(--hc);border-radius:12px;
  padding:10px 12px;box-shadow:0 1px 2px rgba(20,30,60,.05)}
.htr-app{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.htr-at{display:flex;flex-direction:column;gap:1px;min-width:0}
.htr-anm{font-weight:700;font-size:12.5px;color:var(--tx)}
.htr-an{font-weight:400;font-size:10.5px;color:var(--tx2)}
.htr-avd{font-size:10.5px;font-weight:600;color:var(--hc);line-height:1.3}
.htr-list{display:flex;flex-direction:column;border-left:2px solid var(--bd);margin-left:16px;padding-left:12px;gap:1px}
.htr-h{display:flex;align-items:center;gap:7px;width:100%;text-align:left;background:transparent;border:0;
  border-radius:7px;padding:3px 6px;font-size:11.5px;color:var(--tx);cursor:pointer;position:relative}
.htr-h::before{content:'';position:absolute;left:-17px;top:50%;width:7px;height:7px;border-radius:50%;
  transform:translateY(-50%);background:var(--bd);transition:background .2s}
.htr-it.htr-on .htr-h::before{background:var(--hc)}
.htr-h:hover{background:var(--s2);color:var(--hc)}
.htr-num{flex:none;min-width:22px;font-size:9.5px;font-weight:700;color:var(--tx2);text-align:right}
.htr-it.htr-on .htr-num{color:var(--hc)}
.htr-ico{flex:none;width:16px;text-align:center}
.htr-tit{font-weight:600;min-width:0}
/* só o passo ativo fala: o balão dos outros sai por [hidden] e o display:flex abaixo venceria a UA stylesheet */
.htr-bal[hidden]{display:none}
.htr-bal{margin:1px 6px 6px 51px;padding:5px 9px;font-size:10.5px;color:var(--tx2);line-height:1.4;
  background:var(--s2);border:1px dashed var(--hc);border-radius:0 9px 9px 9px;animation:hv-pop .26s ease-out;
  display:flex;align-items:center;gap:9px}
.htr-tx{min-width:0}
/* 🙂 mascote — cada balão é um QUADRINHO: o mascote (SVG com partes classificadas) só fala no passo ativo
   (.htr-it.htr-fala, posto pelo ▶ Rodar tour) — boca em steps(2), piscada, e as 2 mãos gesticulando.
   transform-box:fill-box p/ o origin ser o centro de CADA parte (sem ele, gira em torno do 0,0 do SVG). */
.htr-msc{flex:none;width:40px;height:45px}
.htr-msc .msc-boca,.htr-msc .msc-olhos,.htr-msc .msc-maoE,.htr-msc .msc-maoD{transform-box:fill-box;transform-origin:center}
.htr-it.htr-fala .htr-bal{border-style:solid;box-shadow:0 3px 10px rgba(20,30,60,.13)}
.htr-it.htr-fala .msc-boca{animation:htr-fala .34s steps(2,end) infinite}
.htr-it.htr-fala .msc-olhos{animation:htr-pisca 3.1s linear infinite}
.htr-it.htr-fala .msc-maoD{animation:htr-mao .95s ease-in-out infinite}
.htr-it.htr-fala .msc-maoE{animation:htr-mao 1.15s ease-in-out infinite reverse}
/* ---- 🧭 Fluxo das telas (htf-) — 26/08/2026 (prints do usuário): 1 LINHA por app — badge+nome à esquerda,
   caixinhas 1..N na horizontal e SETA TRACEJADA na cor do app entre vizinhas (.htf-seta inline; o SVG de
   setas medidas morreu). ENCAIXE em 1 tela: scale(--htfk) com largura pré-compensada pelo JS
   (homeFluxoTelasUI.encaixar); o .htf-fitwrap recorta o overflow de layout da largura 100/k%. */
.htf-fitwrap{width:100%;overflow:hidden}
.htf-wrap{position:relative;display:flex;flex-direction:column;gap:clamp(5px,1.1vh,14px);
  transform:scale(var(--htfk,1));transform-origin:top left}
.htf-sec{display:flex;align-items:center;gap:10px;border-left:3px solid var(--hc);
  padding:clamp(2px,.5vh,5px) 0 clamp(2px,.5vh,5px) 10px}
.htf-app{flex:0 0 172px;display:flex;align-items:center;gap:7px}
.htf-app .hv-badge{width:26px;height:26px;border-radius:7px}
.htf-app .hv-badge .hl-2{font-size:12px}
.htf-anm{font-weight:700;font-size:12px;color:var(--tx);line-height:1.15}
.htf-an{font-weight:400;font-size:10px;color:var(--tx2);white-space:nowrap}
.htf-chips{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.htf-chip{display:inline-flex;align-items:center;gap:5px;font-size:10.8px;padding:4px 10px;border-radius:999px;
  border:1px solid var(--bd);background:var(--sf);color:var(--tx);cursor:pointer;box-shadow:0 1px 2px rgba(20,30,60,.06)}
.htf-chip:hover{border-color:var(--hc);color:var(--hc)}
.htf-n{font-size:9px;font-weight:700;color:var(--hc);min-width:13px;text-align:right}
.htf-seta{flex:0 0 24px;height:2px;position:relative;align-self:center;opacity:.6;
  background-image:repeating-linear-gradient(90deg,var(--hc) 0 5px,transparent 5px 10px);
  animation:htf-dash 1.15s linear infinite}
.htf-seta::after{content:'';position:absolute;right:-2px;top:-3px;width:0;height:0;
  border-left:7px solid var(--hc);border-top:4px solid transparent;border-bottom:4px solid transparent}
@keyframes htf-dash{to{background-position:10px 0}}
@media (prefers-reduced-motion:reduce){ .htf-seta{animation:none;opacity:.5} }
/* Lupinhas do 🧭 (26/08/2026, "crie um botas de encaixar tela..... e zoom in, zoon out...lupinhas"):
   ⛶ Encaixar (auto, aceso por padrão) + 🔍−/🔍＋ manuais — o manual desliga o ⛶ (regra 🔍 × ⤢ da casa). */
.htf-ctrl{display:flex;justify-content:flex-end;align-items:center;gap:4px;margin:0 0 4px}
.htf-cbtn{border:1px solid var(--bd);background:var(--sf);color:var(--tx2);font-size:10.5px;font-weight:600;
  padding:3px 9px;border-radius:999px;cursor:pointer}
.htf-cbtn:hover{border-color:var(--ac);color:var(--ac)}
.htf-cbtn.on{background:var(--ac);border-color:var(--ac);color:#fff}
.htf-pct{font-size:10px;font-weight:700;color:var(--tx2);min-width:36px;text-align:center}
/* Fases PMBOK dentro da banda (26/08/2026, "divida esse especificamente em niveis logicos... Inicio,
   Planejamento, Execucao, monitoramento e controle e encerramento"): 1 sub-linha por grupo de processo,
   rótulo na cor do app com fio separando da fila de chips. */
.htf-fases{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.htf-fase{display:flex;align-items:flex-start;gap:8px}
.htf-flbl{flex:0 0 122px;text-align:right;font-size:9.5px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--hc);opacity:.85;line-height:1.2;padding:5px 8px 0 0;
  border-right:2px solid color-mix(in srgb, var(--hc) 35%, transparent)}

@keyframes htr-fala{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1.7)}}
@keyframes htr-pisca{0%,91%,100%{transform:scaleY(1)}95%{transform:scaleY(.12)}}
@keyframes htr-mao{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(12deg) translateY(-1.5px)}}
@media (prefers-reduced-motion:reduce){ .htr-bal,.htr-it.htr-fala .msc-boca,.htr-it.htr-fala .msc-olhos,
  .htr-it.htr-fala .msc-maoD,.htr-it.htr-fala .msc-maoE{animation:none} }
.hv-chips{display:flex;flex-wrap:wrap;gap:4px}
.hv-chip{font-size:12px;padding:4px 9px;border-radius:999px;border:1px solid var(--bd);background:var(--sf);
  color:var(--tx);cursor:pointer;opacity:0;animation:hv-chip .3s ease-out forwards;animation-delay:var(--d,0ms)}
.hv-chip:hover{border-color:var(--hc);color:var(--hc)}
.hv-mais{border-style:dashed;color:var(--tx2)}
.hv-tr{fill:none;stroke-width:2.4;opacity:.16}
.hv-arw{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:7 9;animation:hv-flow 1.05s linear infinite}
.hv-ap{stroke-dasharray:4 7;opacity:.55;stroke-width:1.8}
.hv-tr.hv-ap{opacity:.1}
.hv-pt{opacity:.85}
@keyframes hv-flow{to{stroke-dashoffset:-32}}
@keyframes hv-pop{from{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}
@keyframes hv-chip{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){ .hv-arw{animation:none} .hv-tr{opacity:.5} .hv-bal,.hv-chip{animation:none;opacity:1} }
@media (max-width:900px){
  .hv-mapa{grid-template-columns:1fr}
  .hv-sup{padding-top:0}
  .hv-lanes-g{grid-template-columns:1fr}
  .hv-etapa{width:100%}
  .hv-svg{display:none}
}

/* ===== Topbar em 2 NÍVEIS (24/08/2026) — linha 1 = os 10 apps da Suíte P³, linha 2 = as categorias
   (os .navdrop de sempre) do app em destaque. Reaproveita 100% do .navdrop/.navdrop-menu existente —
   a linha 2 só ganha um filtro de visibilidade (.app-off); nada é reparentado, nada muda por dentro
   dos dropdowns. A linha 1 é IRMÃ do .topbar (fora de #tabs) de propósito: não compete com o CSS
   `order` já cravado em #ndMenu/#ndAdmin (style.css:172-173), que segue valendo dentro da linha 2. */
.app-row-line{display:flex;align-items:center;gap:8px;padding:5px 10px;
  background:var(--sf);border-bottom:1px solid var(--bd)}
/* Os 5 ícones utilitários (🏠 · 📁 Arquivo ▾ · 🔄 · ☁ · 🧭) SOBEM p/ a linha 1 (24/08/2026, "suba os 5
   ícones") — não são categoria de nenhum app, então vivem à esquerda, fora do #appRow (que segue só com
   os 10 botões, sobrescrito por JS a cada renderAppRow()). Separador fino à direita marca a fronteira. */
.app-row-utils{display:flex;align-items:center;gap:2px;flex:none;
  border-right:1px solid var(--bd);padding-right:8px;margin-right:2px}
/* 🚚 Transportes · ❓ Ajuda · 🗺️ Arquitetura SOBEM p/ a linha 1 também (24/08/2026, "devem subir para cima
   e para a direita") — mesmo padrão dos 5 ícones da esquerda, espelhado: separador na borda ESQUERDA
   (depois do #appRow), sem o border-right/margin-right do cluster da esquerda. */
.app-row-utils-right{border-right:none;padding-right:0;margin-right:0;
  border-left:1px solid var(--bd);padding-left:8px;margin-left:2px}
.app-row{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:4px;flex:1;min-width:0;scrollbar-width:thin}
/* Cada app na SUA cor (24/08/2026, "cada caixa fica de uma cor clarinha... ao selecionar fica mais forte"):
   pastilha clarinha no repouso — a identidade da letra P³ fica visível o tempo todo, não só no selecionado —
   e a cor CHEIA no ativo. Tudo derivado do MESMO `--hc` (a cor do app, vinda do navApps.js) via color-mix
   contra a superfície/texto correntes: muda a paleta do app, as pastilhas acompanham. Mudança só VISUAL. */
/* pill de app `dev:true` nasce hidden e só é revelada pelo ping do servidor local — sem isto ela aparece no QAS/PRD */
.app-btn[hidden]{display:none}
.app-btn{display:inline-flex;align-items:center;gap:5px;flex:none;padding:5px 9px;position:relative;
  border-radius:7px;border:1px solid color-mix(in srgb,var(--hc) 30%,var(--bd));
  background:color-mix(in srgb,var(--hc) 12%,var(--sf));color:color-mix(in srgb,var(--hc) 55%,var(--tx));
  font-size:11.5px;font-weight:700;cursor:grab;white-space:nowrap}
.app-btn:hover{border-color:var(--hc);color:var(--tx);background:color-mix(in srgb,var(--hc) 22%,var(--sf))}
.app-btn.active{background:var(--hc);color:#fff;border-color:var(--hc);
  box-shadow:0 1px 4px color-mix(in srgb,var(--hc) 45%,transparent)}
.app-ico{width:18px;height:18px;border-radius:5px;background:var(--hc);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:11px;flex:none}
.app-btn.active .app-ico{background:rgba(255,255,255,.28)}
/* Badge P³ˣ da Linha 1 — histórico curto: 24/08/2026 (7) pediu badge EMPILHADO ("P³" em cima, letra embaixo)
   em vez de texto corrido; (12) tirou o `.app-ico` e o badge virou A identidade da pill; (13) corrigiu a
   HIERARQUIA — *"o P ficou pequenininho.... Ele remete a projeto e probabilidade.... Precisa de destaque"* +
   o print de referência (`Aᵖₙ`, o arranjo da combinatória). O empilhamento antigo punha "P³" numa linha de 8px
   e a letra do módulo em 15px: quem mandava na marca era o MÓDULO, e o P — a raiz do nome (Projeto ·
   Probabilidade), a parte comum a TODA a família — saía menor que o rótulo do app (11.5px). Agora é notação
   matemática e o P manda: P em 19px/800 e, colada à direita dele, uma coluna com o expoente 3 no TOPO e a
   letra do módulo na BASE (`align-items:stretch` no badge dá à coluna a altura do P; `space-between` joga uma
   marca p/ cada extremo — é o que faz o desenho ler como índice, e não como duas linhas soltas). Cabe porque o
   ícone saiu em (12) e devolveu ~23px por pill. */
.app-badge{display:inline-flex;align-items:stretch;line-height:1;vertical-align:middle;margin-right:5px}
.ab-p{font-size:19px;font-weight:800;line-height:1;letter-spacing:-.02em}
.ab-x{display:inline-flex;flex-direction:column;justify-content:space-between;align-items:flex-start;
  line-height:1;margin-left:1px;padding:1px 0}
.ab-1{font-size:9.5px;font-weight:700;line-height:1}   /* expoente 3 — '3' comum, NÃO o ³ (glifo sobrescrito sumiria) */
.ab-2{font-size:9.5px;font-weight:700;line-height:1}   /* letra do módulo — maiúscula normal, mesmo motivo */
/* O `.app-lbl` (badge + nome do app) nunca teve regra própria — era inline puro, e o alinhamento do badge
   dependia do `vertical-align:middle` contra a linha de texto. Com o P em 19px contra um rótulo de 11.5px essa
   conta fica sensível à fonte; `inline-flex`+`align-items:center` centra os dois um no outro, sem depender de
   baseline/x-height. */
.app-lbl{display:inline-flex;align-items:center}
/* Linha 2 — só a(s) categoria(s) do app em destaque aparece(m); classe alternada por JS (mostrarApp).
   Seletor GENÉRICO [data-app] (não só .navdrop) — o RIDAC (span.ridac-nav) também entra na linha 2. */
[data-app].app-off{display:none}
/* Linha 2 na COR do app em destaque (24/08/2026, "pinte os ícones da segunda linha da mesma cor da seleção
   de cima, mas mais claro; o selecionado, escuro"): `--hc` é publicado por navAppsUI.mostrarApp e as duas
   intensidades saem dele por color-mix — trocar a cor do app na navApps.js repinta as duas linhas de uma vez. */
#tabs>[data-app]:not(.app-off)>.navdrop-btn,#tabs>.ridac-nav:not(.app-off) .rn{
  background:color-mix(in srgb,var(--hc,var(--ac)) 12%,var(--sf));
  border:1px solid color-mix(in srgb,var(--hc,var(--ac)) 28%,var(--bd));
  color:color-mix(in srgb,var(--hc,var(--ac)) 58%,var(--tx))}
#tabs>[data-app]:not(.app-off)>.navdrop-btn{border-radius:7px}
#tabs>[data-app]:not(.app-off)>.navdrop-btn:hover,#tabs>[data-app].open>.navdrop-btn,
#tabs>.ridac-nav:not(.app-off) .rn:hover{
  background:color-mix(in srgb,var(--hc,var(--ac)) 22%,var(--sf));border-color:var(--hc,var(--ac));color:var(--tx)}
/* SELECIONADO = cor cheia: a categoria que contém a tela aberta (nav-sel) e a letra RIDAC ativa (.on) */
#tabs>[data-app].nav-sel>.navdrop-btn,#tabs>.ridac-nav:not(.app-off) .rn.on{
  background:var(--hc,var(--ac));border-color:var(--hc,var(--ac));color:#fff;
  box-shadow:0 1px 4px color-mix(in srgb,var(--hc,var(--ac)) 45%,transparent)}
.ridac-nav{position:relative}
/* ===== Arrastar p/ reordenar + 📌 travar à direita — linha 1 (app-row) e linha 2 (.navdrop/.ridac-nav),
   24/08/2026 ("permita movimentar ícones... crie a função travar menu à direita, vale para a 2ª linha
   também"). Mecânica em navDragKit.js; a ordem/trava é view-state por MÁQUINA (localStorage), fora do
   documento/undo — mesma classe do zoom/paleta. Arrastar só muda `style.order` (CSS), nunca move o DOM
   (a numeração de telas do #telaRef conta a ordem do DOM — ver comentário de #ndMenu/#ndAdmin acima). */
.app-btn.nav-arrastando,[data-app].nav-arrastando{opacity:.35}
.nav-pino{position:absolute;top:-7px;right:-7px;width:16px;height:16px;border-radius:50%;
  background:var(--sf);border:1px solid var(--bd);font-size:9px;line-height:1;display:none;
  align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.15)}
.app-btn:hover .nav-pino,.navdrop:hover>.nav-pino,.ridac-nav:hover>.nav-pino,
.app-btn.nav-locked .nav-pino,.navdrop.nav-locked>.nav-pino,.ridac-nav.nav-locked>.nav-pino{display:flex}
.app-btn.nav-locked{border-color:#c2410c}
.navdrop.nav-locked>.navdrop-btn,.ridac-nav.nav-locked{outline:1.5px dashed #c2410c;outline-offset:2px;border-radius:7px}

/* Tela central de UM app (2º nível, ex. Estratégia) — reusa .home-* acima; só ajusta espaçamento entre
   seções (menu × pasta de report) e o tamanho do ícone de tema (emoji, não o selo P³ da tela de entrada). */
.apphome .home-lbl{margin-top:20px}
.apphome .home-lbl:first-of-type{margin-top:14px}
.apphome-ico .home-letra{font-size:19px}
.apphome .home-head h1{display:flex;align-items:center;gap:6px;justify-content:center}

/* ---- 📐 Framework (cascata) — visão ADICIONAL da home do app (26/08/2026, appHomeCascataUI) --------------
   As mesmas telas do catálogo por grupo de processo `pg`, EMPILHADAS — 1 fase embaixo da outra, sem
   indentação (pedido do usuário 26/08/2026: "coloque 1 embaixo do outro… não precisa estar em cascata";
   revoga a versão em DEGRAUS/`--i` desta mesma rodada). Uma linha tracejada reta liga o número de uma fase
   ao da seguinte — mantém a leitura de FLUXO sem a diagonal. Cabe em 1 tela: o wrap escala (--ahck, busca
   binária no JS) com largura pré-compensada 100/k% (transform muda os 2 eixos; sem compensar sobraria vão
   lateral) e o .ahc-fitwrap recorta o overflow de layout; a altura é cravada pelo JS (transform não muda a
   caixa de layout — sem cravar, rolagem fantasma). Prefixo `ahc-` livre (grep antes de criar — lição hv-/hf-). */
.home-wrap.apphome-casc{max-width:none;flex:1;min-height:0;display:flex;flex-direction:column;
  overflow:hidden;padding-bottom:8px}
.apphome-casc .home-head{margin-bottom:clamp(2px,.8vh,8px)}
/* Seletor de visão ISOLADO numa caixa própria (26/08/2026, "deixe isolado em uma caixa especifica" — o
   padrão das caixas de zoom da barra do Cronograma): ancorado no canto sup. direito da tela do app. */
.apphome{position:relative}
.ahc-segbox{position:absolute;top:8px;right:12px;z-index:5;display:flex;align-items:center;gap:7px;
  padding:3px 5px 3px 11px;background:var(--sf);border:1px solid var(--bd);border-radius:12px;
  box-shadow:0 1px 3px rgba(20,30,60,.08)}
.ahc-seglbl{font-size:10px;font-weight:700;color:var(--tx2);letter-spacing:.03em;white-space:nowrap}
.ahc-segbox .home-seg{margin:0;background:var(--s2)}
.ahc-corpo{flex:1;min-height:0;overflow:auto;padding:6px 2px 2px}
.ahc-fitwrap{width:100%;overflow:hidden}
.ahc-wrap{transform:scale(var(--ahck,1));transform-origin:top left;display:flex;flex-direction:column;
  gap:16px;padding:2px 4px 4px 6px}
.ahc-fase{position:relative;background:var(--sf);
  border:1px solid var(--bd);border-left:3px solid var(--hc);border-radius:12px;
  padding:8px 12px 10px;box-shadow:0 1px 2px rgba(20,30,60,.05)}
/* Linha reta tracejada no vão entre fases, centrada no número (.ahc-fn) — 1 embaixo da outra, sem diagonal;
   a ponta de seta aponta pra baixo, para dentro da fase seguinte. */
.ahc-fase+.ahc-fase::before{content:'';position:absolute;left:22px;top:-16px;width:0;height:16px;
  border-left:2px dashed color-mix(in srgb,var(--hc) 45%,transparent)}
.ahc-fase+.ahc-fase::after{content:'';position:absolute;left:17px;top:-8px;width:0;height:0;
  border:5px solid transparent;border-top:7px solid color-mix(in srgb,var(--hc) 55%,transparent)}
.ahc-fh{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.ahc-fn{flex:none;width:22px;height:22px;border-radius:50%;background:var(--hc);color:#fff;font-size:11.5px;
  font-weight:800;display:flex;align-items:center;justify-content:center}
.ahc-ft{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--tx)}
.ahc-fc{font-size:10px;color:var(--tx2)}
.ahc-fb{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:flex-start}
.ahc-g{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;padding:4px 7px;
  border:1px dashed var(--bd);border-radius:10px}
.ahc-gl{font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--tx2);
  white-space:nowrap}
.ahc-chip{display:inline-flex;align-items:center;gap:5px;font-size:10.8px;padding:4px 10px;border-radius:999px;
  border:1px solid var(--bd);background:var(--sf);color:var(--tx);cursor:pointer}
.ahc-chip:hover{border-color:var(--hc);color:var(--hc)}
.ahc-n{font-size:9px;font-weight:700;color:var(--hc);min-width:13px;text-align:right}
.fat-grid>div>.card{max-width:none}

/* ===== 🎯 Diagnóstico — veredito, cascata e alavancas (13/09/2026, "torne o diagnostico mais obvio") ===== */
/* A tela abria com 6 KPIs de mesmo peso: a conclusão era trabalho do leitor. Agora o veredito é o 1º bloco,
   colorido pelo TOM (ok/wa/er) do que manda no prazo, e a cascata mostra o caminho CPM → piso → com recursos. */
.dg{--dgc:var(--ac);border-left:4px solid var(--dgc);max-width:none}   /* o veredito usa a tela toda: o teto de 1000px do .card espremia as alavancas */
.dg.tom-ok{--dgc:var(--ok)}
.dg.tom-wa{--dgc:var(--wa)}
.dg.tom-er{--dgc:var(--er)}
.dg-top{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start}
.dg-ico{font-size:30px;line-height:1.1}
.dg-txt{flex:1;min-width:260px}
.dg-t{font-size:17px;font-weight:700;color:var(--dgc);margin-bottom:3px}
.dg-f{font-size:13px;line-height:1.55;max-width:860px}
.dg-fim{min-width:158px;text-align:right}
.dg-fim .v{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}
.dg-fim .l{font-size:11px;color:var(--tx2);margin-bottom:7px}
.dg-cta{padding:6px 12px;font-size:12px}
.dg-casc{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:14px 0 0;padding:11px 0;
  border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
.dg-step{min-width:132px}
.dg-step .dv{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums}
.dg-step .dl{font-size:11.5px;font-weight:600}
.dg-step .dn{font-size:10.5px;color:var(--tx2)}
.dg-sep{display:flex;flex-direction:column;align-items:center;min-width:118px;padding:0 8px}
.dg-sep .dgd{font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums}
.dg-sep .dgl{font-size:10px;color:var(--tx2);text-align:center}
.dg-sep::after{content:'──▶';display:block;color:var(--gr);font-size:11px;letter-spacing:-1px;margin-top:1px}
.dg-sep.ruim .dgd{color:var(--er)}
.dg-sep.bom .dgd{color:var(--ok)}
.dg-sep.nulo .dgd{color:var(--tx2)}
.dg-alav{display:grid;grid-template-columns:repeat(auto-fit,minmax(216px,1fr));gap:10px;margin-top:12px}
.dg-al{background:var(--bg);border:1px solid var(--bd);border-radius:9px;padding:9px 11px}
.dg-al.on{border-color:var(--dgc);box-shadow:inset 0 0 0 1px var(--dgc)}
.dg-al.tom-ok .dg-alt{color:var(--ok)}
.dg-al.tom-wa .dg-alt{color:var(--wa)}
.dg-al.tom-er .dg-alt{color:var(--er)}
.dg-alt{font-size:12.5px;font-weight:700;margin-bottom:2px}
.dg-all{font-size:11.5px;line-height:1.45;color:var(--tx2)}
.dg-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.dg-chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  border:1px solid var(--bd);background:var(--sf);color:var(--tx);border-radius:999px;padding:3px 9px;font-size:10.8px;cursor:pointer}
.dg-chip:hover{border-color:var(--ac);color:var(--ac)}
.dg-ir{margin-top:8px;padding:5px 10px;font-size:11.5px}
.dg-lupa{border:none;background:transparent;cursor:pointer;font-size:13px;opacity:.55;padding:1px 3px;border-radius:5px}
.dg-lupa:hover{opacity:1;background:var(--s2)}
.dg-det{margin:0 0 14px}
.dg-det>summary{cursor:pointer;user-select:none;font-size:11.5px;color:var(--tx2)}
.dg-det>summary:hover{color:var(--ac)}
.dg-det p{margin:6px 0 0}
.mcf-sub{font-weight:400;font-size:9px;color:var(--tx2);letter-spacing:0}

/* ▦ FAIXAS do Gantt (faixasGantt.js) — aqui mora só o TEXTO. As caixinhas usam as MESMAS classes de barra do
   Gantt normal (.bar-base2 / .bar-plan / .bar-real2 + o sufixo da 👁 Visão em vigor), então trocar de visão com
   o ▦ ligado repinta tudo sem uma linha de cor neste bloco — é o que sustenta a promessa "muda o LAYOUT, não a
   PALETA" do botão. Fontes escalam pelo --g-fz (o 🔍A do Gantt), como a ★ dos marcos. */
.g-rm-it{cursor:pointer}
.g-rm-in{fill:#fff;font-weight:600;pointer-events:none;paint-order:stroke;stroke:rgba(0,0,0,.22);stroke-width:2px;stroke-linejoin:round}   /* nome DENTRO da caixinha: halo escuro p/ sobreviver às barras claras da V4/V8 */
.g-rm-lbl{fill:#334155;font-weight:600;pointer-events:none;paint-order:stroke;stroke:rgba(255,255,255,.88);stroke-width:2.5px;stroke-linejoin:round}   /* nome AO LADO: mesmo halo do .g-datelbl — o que passar por trás segue legível */
.g-rm-mk path{fill:var(--bl)}
.g-rm-mk .g-rm-lbl{font-size:calc(9px * var(--g-fz,1))}
.g-rm-sem{fill:#94a3b8;font-size:calc(9px * var(--g-fz,1));font-style:italic}
.g-rm-mais{fill:#b45309;font-size:calc(9px * var(--g-fz,1));font-weight:600;cursor:help}   /* o corte é DITO na tela: quantos ficaram de fora e a partir de quando */
/* A linha da grade vira um BLOCO alto (nº de faixas × lane): o nome encosta no TOPO, alinhado com a 1ª
   caixinha do lado direito — centrado na vertical ele flutuaria longe do que descreve. */
.gt-faixas tbody td{vertical-align:top;padding-top:3px}
