/* ============================================================
   OBRASYNC — SHELL DA APLICAÇÃO (Sprint 6)
   Identidade visual herdada da Versão 02 (style-v3.css):
   verde CORPAL #57592E, superfícies claras, IBM Plex.
   Arquivo independente de propósito — o shell não importa
   style-v3.css para não acoplar a aplicação definitiva ao
   mockup (que será aposentado módulo a módulo).
   ============================================================ */

/* ============================================================
   COR · DESIGN SYSTEM — tokens oficiais (dark-first + light).
   Os nomes antigos do Sync (--verde/--paper/--ink/--card/--line…)
   permanecem como ALIASES apontando pros tokens COR, então todo
   componente existente reskinna sem tocar em JS.
   ============================================================ */
:root{
  --olive-deep:#32331A; --olive-moss:#57592D; --espresso:#2B1D10; --terracotta:#7D5026; --sage:#B0AE9D;
  --acc-olive:#4C86E0; --acc-olive-soft:#2E6BD6; --acc-clay:#CE8347; --acc-clay-soft:#B87333; --acc-sage:#C4C2AF;
  --acc-navy:#6E7CBA;   /* Previsto (gráficos): indigo-navy visível no tema escuro */
  --ok:#9FBE5A; --warn:#E0A34C; --danger:#D66A4E; --info:#87A7A0;
  --radius-xl:22px; --radius-lg:16px; --radius-md:12px; --radius-sm:9px;
  --sidebar-w:250px; --sidebar-w-collapsed:76px; --copilot-w:340px; --header-h:66px;
  --ff-display:"Fraunces",Georgia,serif;
  --ff-ui:"Archivo","Segoe UI",sans-serif;
  --ff-narrow:"Archivo Narrow","Archivo",sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --shadow-md:0 10px 30px -12px rgba(0,0,0,.6);
  --shadow-lg:0 30px 70px -25px rgba(0,0,0,.75);
  /* aliases de fonte (Sync → COR) */
  --f-ui:var(--ff-ui); --f-cond:var(--ff-narrow); --f-mono:var(--ff-ui);
  --altura-cabecalho:var(--header-h);
}
:root[data-theme="dark"]{
  --canvas:#100F0A; --canvas-2:#13120B;
  --surface-1:#17160E; --surface-2:#1D1B12; --surface-3:#252318;
  --panel:rgba(29,27,18,.72); --panel-solid:#1B1911; --glass:rgba(38,36,25,.55);
  --border:rgba(176,174,157,.10); --border-2:rgba(176,174,157,.16); --border-3:rgba(176,174,157,.24);
  --text-1:#F3F1E6; --text-2:#BAB6A4; --text-3:#84806F; --text-4:#5B5849;
  --track:rgba(176,174,157,.09); --scrim:rgba(8,8,4,.6); --grid-line:rgba(176,174,157,.07); --cro-inativo:rgba(176,174,157,.12);
  /* aliases Sync → dark */
  --paper:var(--canvas); --card:var(--surface-2);
  --ink:var(--text-1); --ink-2:var(--text-2); --ink-3:var(--text-3);
  --line:var(--border); --line-2:var(--border-2);
  --verde:var(--acc-olive); --verde-hover:var(--acc-olive-soft);
  --verde-tint:rgba(166,184,94,.14); --verde-linha:rgba(166,184,94,.30);
  --erro:var(--danger); --erro-bg:rgba(214,106,78,.14);
  --sombra:var(--shadow-md);
}
:root[data-theme="light"]{
  --canvas:#EFEDE4; --canvas-2:#F4F2EA;
  --surface-1:#FBFAF4; --surface-2:#FFFFFF; --surface-3:#F6F4EB;
  --panel:rgba(255,255,255,.82); --panel-solid:#FFFFFF; --glass:rgba(255,255,255,.7);
  --border:rgba(50,51,26,.10); --border-2:rgba(50,51,26,.16); --border-3:rgba(50,51,26,.26);
  --text-1:#26271A; --text-2:#5B5B49; --text-3:#8A8975; --text-4:#A8A793;
  --track:rgba(50,51,26,.08); --scrim:rgba(40,40,30,.35); --grid-line:rgba(50,51,26,.08); --cro-inativo:rgba(50,51,26,.14);
  --acc-olive:#0048A8; --acc-clay:#A85F2C; --ok:#6E8B2E; --warn:#B27A24; --danger:#C0492C; --info:#4F726B;
  --acc-navy:#2E3860;   /* Previsto (gráficos): navy escuro no tema claro (igual ao print) */
  --shadow-md:0 12px 32px -16px rgba(50,45,20,.28); --shadow-lg:0 30px 60px -28px rgba(50,45,20,.32);
  --paper:var(--canvas); --card:var(--surface-2);
  --ink:var(--text-1); --ink-2:var(--text-2); --ink-3:var(--text-3);
  --line:var(--border); --line-2:var(--border-2);
  --verde:var(--acc-olive); --verde-hover:#5a6a2a;
  --verde-tint:#EEEFE4; --verde-linha:#C9CBB0;
  --erro:var(--danger); --erro-bg:#FDF3F4; --sombra:var(--shadow-md);
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{ font-family:var(--f-ui); color:var(--ink); background:var(--canvas); -webkit-font-smoothing:antialiased; position:relative; }
/* mesh atmosférico do DS COR (fica atrás de tudo) */
body::before{ content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(900px 600px at 82% -8%, rgba(206,131,71,.10), transparent 60%),
    radial-gradient(1100px 700px at -6% 108%, rgba(166,184,94,.09), transparent 55%),
    radial-gradient(700px 500px at 50% 50%, rgba(176,174,157,.03), transparent 70%); }
:root[data-theme="light"] body::before{
  background:
    radial-gradient(900px 600px at 85% -10%, rgba(168,95,44,.10), transparent 60%),
    radial-gradient(1100px 700px at -8% 110%, rgba(110,125,52,.10), transparent 55%); }
.oculto{ display:none !important; }
button{ font-family:inherit; cursor:pointer; }
input{ font-family:inherit; }
a{ color:var(--verde); }

.btn-primario{
  background:var(--verde); color:#fff; border:none; border-radius:6px;
  font-weight:600; font-size:14px; padding:11px 18px;
  transition:background .15s;
}
.btn-primario:hover{ background:var(--verde-hover); }
.btn-primario:disabled{ background:var(--ink-3); cursor:default; }
.btn-largo{ width:100%; }
.btn-fantasma{
  background:transparent; border:1px solid var(--line-2); border-radius:6px;
  color:var(--ink-2); font-size:13px; padding:8px 14px;
  transition:border-color .15s, color .15s;
}
.btn-fantasma:hover{ border-color:var(--verde); color:var(--verde); }
/* ícone (SVG lucide, que vem 24px) + texto centrados e alinhados no
   mesmo eixo dentro dos botões de ação */
.btn-primario, .btn-fantasma{ display:inline-flex; align-items:center; justify-content:center; gap:6px; }
.btn-primario > svg, .btn-fantasma > svg{ width:16px; height:16px; flex:none; }

/* ============================================================
   TELAS DE AUTENTICAÇÃO
   ============================================================ */
.tela-auth{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  background:transparent;
  padding:32px 16px;
}
.auth-card{
  width:min(420px, 100%);
  background:var(--card);
  border:1px solid var(--line);
  border-top:3px solid var(--verde);
  border-radius:10px;
  box-shadow:var(--sombra);
  padding:34px 36px 22px;
}

/* Marca do PRODUTO (Sync) — topo de toda tela pública.
   Logo OFICIAL (assets/logo-sync.png) — nunca ícone desenhado à mão. */
.auth-marca{ text-align:center; margin-bottom:26px; }
.auth-logo-sync{ height:46px; display:block; margin:0 auto; }
/* marca do login: ícone laranja + "Sync" em TEXTO — a cor segue o tema
   (claro/branco no tema escuro, escuro no tema claro) via var(--ink). */
.auth-logo-lock{ display:inline-flex; align-items:center; gap:13px; }
.auth-logo-icone{ height:56px; width:56px; display:block; flex-shrink:0; }
.auth-logo-texto{ font-family:"Poppins", var(--ff-ui, sans-serif); font-weight:600; font-size:40px; line-height:1; letter-spacing:-.005em; color:var(--ink); }
.auth-subtitulo{
  margin:9px 0 0; font-size:13.5px; font-weight:500;
  color:var(--ink-2); letter-spacing:.01em;
}

/* Empresa usuária (Corpal) — rodapé de toda tela pública.
   A logo identifica a empresa; o texto diz apenas "Uso interno". */
.auth-cliente{
  margin-top:24px; padding-top:15px; border-top:1px solid var(--line);
  display:flex; align-items:center; justify-content:center; gap:10px;
}
.auth-cliente img{ height:19px; opacity:.75; }
/* logo da Corpal no rodapé do login: troca conforme o tema
   (versão clara no tema escuro, versão normal no tema claro) */
.corpal-escuro, .corpal-claro{ display:none; }
:root[data-theme="dark"] .corpal-escuro{ display:inline-block; }
:root[data-theme="light"] .corpal-claro{ display:inline-block; }
.auth-cliente span{ font-size:12px; color:var(--ink-3); letter-spacing:.02em; padding-top:1px; }

.auth-titulo{ font-size:19px; font-weight:700; margin:0 0 6px; color:var(--ink); letter-spacing:-.01em; }
.auth-descricao{ font-size:13.5px; color:var(--ink-2); margin:0 0 20px; line-height:1.55; }

.auth-links{
  margin:18px 0 0; font-size:13px; text-align:center;
  display:flex; justify-content:center; gap:10px; align-items:center;
}
.auth-links a{ color:var(--verde); text-decoration:none; padding:4px 2px; }
.auth-links a:hover{ text-decoration:underline; }
.auth-links-sep{ color:var(--ink-3); }

.campo{ margin-bottom:16px; }
.campo label{
  display:block; font-size:12px; font-weight:600; color:var(--ink-2);
  margin-bottom:6px; letter-spacing:.02em;
}
.campo input{
  width:100%; border:1px solid var(--line-2); border-radius:6px;
  background:var(--canvas-2); padding:10px 12px; font-size:14px; color:var(--ink);
  outline:none; transition:border-color .15s, box-shadow .15s;
}
.campo input:focus{ border-color:var(--verde); box-shadow:0 0 0 3px var(--verde-tint); }

.aviso{ margin-top:14px; padding:11px 13px; border-radius:6px; font-size:13px; line-height:1.5; }
.aviso-erro{ background:var(--erro-bg); color:var(--erro); border:1px solid #F3D2D5; }
.aviso-ok{ background:var(--verde-tint); color:var(--verde); border:1px solid var(--verde-linha); }

/* Acessibilidade: anel de foco visível para navegação por teclado */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible{
  outline:2px solid var(--verde); outline-offset:2px;
}

@media (max-width: 440px){
  .auth-card{ padding:26px 20px 18px; }
}

/* ============================================================
   SHELL — cabeçalho + sidebar + área principal
   ============================================================ */
/* DS COR: sidebar full-height à esquerda + coluna principal (header + conteúdo) */
.app-shell{ min-height:100vh; display:flex; }
.shell-main{ flex:1; min-width:0; display:flex; flex-direction:column; }

.shell-cabecalho{
  height:var(--altura-cabecalho); flex:none;
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; padding:0 18px;
  background:var(--card); border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:40;
}
.shell-marca{ display:flex; align-items:center; gap:14px; }
.shell-logo{ height:30px; }
.shell-logo-sync{
  height:24px; border-left:1px solid var(--line-2); padding-left:14px;
  image-rendering:auto;
}
.shell-usuario{ display:flex; align-items:center; gap:12px; }
.shell-avatar{
  width:34px; height:34px; border-radius:50%; flex:none;
  background:var(--verde); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:14px;
}
.shell-usuario-info{ display:flex; flex-direction:column; line-height:1.25; }
.shell-usuario-nome{ font-size:13.5px; font-weight:600; }
.shell-usuario-org{ font-size:11.5px; color:var(--ink-2); }

/* ============ HEADER (topbar) — DS COR ============ */
.header-cor{ height:var(--header-h); flex-shrink:0; display:flex; align-items:center; gap:16px; padding:0 22px; border-bottom:1px solid var(--border); background:var(--panel); backdrop-filter:blur(20px) saturate(1.3); -webkit-backdrop-filter:blur(20px) saturate(1.3); position:sticky; top:0; z-index:40; }
.icon-btn{ width:36px; height:36px; border-radius:10px; display:grid; place-items:center; color:var(--text-2); border:1px solid transparent; background:none; cursor:pointer; transition:background .18s var(--ease),color .18s,border-color .18s; position:relative; flex-shrink:0; }
.icon-btn svg{ width:18px; height:18px; stroke-width:1.9; }
.icon-btn:hover{ background:var(--track); color:var(--text-1); border-color:var(--border); }
.icon-btn .dot{ position:absolute; top:8px; right:9px; width:7px; height:7px; border-radius:50%; background:var(--acc-clay); box-shadow:0 0 0 2px var(--panel-solid); }
/* sino de notificações = dropdown nativo (<details>) com contagem */
.sino-dd{ position:relative; flex:none; }
.sino-dd > summary{ list-style:none; }
.sino-dd > summary::-webkit-details-marker{ display:none; }
.icon-badge{ position:absolute; top:1px; right:1px; min-width:15px; height:15px; padding:0 3px; border-radius:8px;
  background:var(--danger); color:#fff; font:700 9.5px/15px var(--ff-ui); text-align:center; box-shadow:0 0 0 2px var(--panel-solid); }
.sino-menu{ position:absolute; right:0; top:calc(100% + 8px); width:322px; max-height:70vh; overflow-y:auto;
  background:var(--surface-2); border:1px solid var(--border-2); border-radius:14px; padding:12px;
  box-shadow:var(--shadow-lg); z-index:80; color:var(--text-1); }
.sino-menu .sino-card-cab{ border-bottom-color:var(--border); }
.sino-menu .sino-lista li{ border-bottom-color:var(--border); }
.hdr-proj{ display:flex; align-items:center; gap:11px; padding:6px 12px 6px 8px; border-radius:12px; border:1px solid var(--border); background:var(--surface-2); transition:.18s; cursor:pointer; }
.hdr-proj:hover{ border-color:var(--border-3); background:var(--surface-3); }
.proj-badge{ width:34px; height:34px; border-radius:9px; background:linear-gradient(135deg,var(--olive-moss),var(--terracotta)); display:grid; place-items:center; font-family:var(--ff-display); font-weight:600; color:#f3f1e6; font-size:15px; flex-shrink:0; }
.proj-meta{ display:flex; flex-direction:column; line-height:1.25; min-width:0; }
.proj-meta b{ font-size:13px; font-weight:600; white-space:nowrap; }
.proj-meta span{ font-size:10.5px; color:var(--text-3); white-space:nowrap; }
.hdr-proj>svg{ width:15px; height:15px; color:var(--text-3); flex:none; }
/* seletor de obra = dropdown nativo (<details>) */
.obra-dd{ position:relative; flex:none; }
.obra-dd > summary{ list-style:none; }
.obra-dd > summary::-webkit-details-marker{ display:none; }
.obra-menu{ position:absolute; left:0; top:calc(100% + 8px); min-width:280px; max-height:60vh; overflow-y:auto;
  background:var(--surface-2); border:1px solid var(--border-2); border-radius:14px; padding:6px;
  box-shadow:var(--shadow-lg); z-index:80; display:flex; flex-direction:column; gap:2px; }
.obra-menu button{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; background:none; border:none;
  color:var(--text-1); font:500 13px var(--ff-ui); padding:8px 10px; border-radius:9px; cursor:pointer; }
.obra-menu button:hover{ background:var(--track); }
.obra-menu button.sel{ background:linear-gradient(90deg,rgba(166,184,94,.16),rgba(166,184,94,.04)); }
.obra-menu .om-badge{ width:28px; height:28px; border-radius:8px; flex:none; display:grid; place-items:center;
  font-family:var(--ff-display); font-weight:600; font-size:12px; color:#f3f1e6;
  background:linear-gradient(135deg,var(--olive-moss),var(--terracotta)); }
.obra-menu small{ display:block; color:var(--text-3); font-size:10.5px; font-weight:400; }
.breadcrumb{ display:flex; align-items:center; gap:7px; font-size:12.5px; color:var(--text-3); }
.breadcrumb b{ color:var(--text-1); font-weight:600; }
.breadcrumb svg{ width:13px; height:13px; }
.search-cor{ display:flex; align-items:center; gap:9px; background:var(--surface-2); border:1px solid var(--border); border-radius:11px; padding:0 12px; height:38px; min-width:210px; max-width:340px; flex:1; transition:.2s; }
.search-cor:focus-within{ border-color:var(--acc-olive); box-shadow:0 0 0 3px rgba(166,184,94,.12); }
.search-cor svg{ width:16px; height:16px; color:var(--text-3); }
.search-cor input{ background:none; border:none; outline:none; color:var(--text-1); font-size:13px; width:100%; font-family:inherit; }
.search-cor input::placeholder{ color:var(--text-4); }
.search-cor kbd{ font-family:var(--ff-narrow); font-size:10px; color:var(--text-3); border:1px solid var(--border-2); border-radius:5px; padding:1px 5px; }
.hdr-right{ display:flex; align-items:center; gap:4px; margin-left:auto; }
.hdr-chip{ display:flex; align-items:center; gap:7px; padding:6px 11px; border-radius:10px; border:1px solid var(--border); background:var(--surface-2); font-size:12px; font-weight:500; color:var(--text-2); white-space:nowrap; }
.hdr-chip svg{ width:15px; height:15px; }
.hdr-chip.weather svg{ color:var(--info); }
.hdr-divider{ width:1px; height:26px; background:var(--border-2); margin:0 4px; }
.avatar-cor{ display:flex; align-items:center; gap:10px; padding:4px 6px 4px 4px; border-radius:12px; transition:.18s; cursor:pointer; background:none; border:none; }
.avatar-cor:hover{ background:var(--track); }
.avatar-img{ width:36px; height:36px; border-radius:10px; background:linear-gradient(135deg,var(--olive-moss),var(--terracotta)); display:grid; place-items:center; font-weight:700; font-size:13px; color:#f3f1e6; flex:none; }
.avatar-meta{ display:flex; flex-direction:column; line-height:1.2; text-align:left; }
.avatar-meta b{ font-size:12.5px; font-weight:600; color:var(--text-1); }
.avatar-meta span{ font-size:10.5px; color:var(--text-3); }
/* menu do avatar (dropdown nativo via <details>) */
.avatar-dropdown{ position:relative; flex:none; }
.avatar-dropdown > summary{ list-style:none; cursor:pointer; }
.avatar-dropdown > summary::-webkit-details-marker{ display:none; }
.avatar-menu{ position:absolute; right:0; top:calc(100% + 8px); min-width:190px;
  background:var(--surface-2); border:1px solid var(--border-2); border-radius:12px;
  padding:6px; box-shadow:var(--shadow-lg); z-index:80; display:flex; flex-direction:column; gap:2px; }
.avatar-menu button{ text-align:left; background:none; border:none; width:100%;
  color:var(--text-2); font:500 13px var(--ff-ui); padding:9px 12px; border-radius:8px; cursor:pointer; }
.avatar-menu button:hover{ background:var(--track); color:var(--text-1); }
.avatar-menu .sep{ height:1px; background:var(--border); margin:4px 2px; }
/* degradação do header por largura (evita clipar o avatar): some a
   trilha antes, depois o texto do avatar, depois os chips. */
@media (max-width:1500px){ .breadcrumb{ display:none; } }
@media (max-width:1280px){ .avatar-meta{ display:none; } }
@media (max-width:1140px){ .hdr-chip{ display:none; } }

.shell-corpo{ flex:1; display:flex; min-height:0; }

.shell-sidebar{
  width:var(--sidebar-w); flex:none;
  background:linear-gradient(180deg,var(--surface-1),var(--canvas-2));
  border-right:1px solid var(--border);
  display:flex; flex-direction:column;
  position:sticky; top:0; align-self:flex-start;
  height:100vh;
  transition:width .3s var(--ease);
}
/* marca COR no topo da sidebar */
.sidebar-brand{ display:flex; align-items:center; gap:12px; height:var(--header-h); padding:0 20px; border-bottom:1px solid var(--border); flex-shrink:0; }
.sidebar-brand .bmark{ width:30px; height:20px; flex:none; color:var(--acc-sage); }
.sidebar-brand .btxt{ display:flex; flex-direction:column; line-height:1; overflow:hidden; white-space:nowrap; }
.sidebar-brand .btxt b{ font-family:var(--ff-display); font-weight:600; font-size:18px; letter-spacing:.3em; color:var(--text-1); }
.sidebar-brand .btxt span{ font-family:var(--ff-narrow); font-size:8px; letter-spacing:.3em; color:var(--text-3); text-transform:uppercase; margin-top:4px; }
.shell-sidebar.colapsada .sidebar-brand{ padding:0; justify-content:center; }
.shell-sidebar.colapsada .sidebar-brand .btxt{ opacity:0; width:0; }
/* botão de recolher: agora logo abaixo da marca COR (pedido do usuário) */
.shell-toggle-linha{ display:flex; justify-content:flex-end; padding:8px 12px 2px; }
.shell-sidebar.colapsada .shell-toggle-linha{ justify-content:center; padding:8px 0 2px; }
.shell-nav{ padding:10px 12px 14px; display:flex; flex-direction:column; gap:1px; flex:1; overflow-y:auto; overflow-x:hidden; }
/* rótulo de grupo (GESTÃO / OPERAÇÃO / SISTEMA) */
.nav-secao{ font-family:var(--ff-narrow); text-transform:uppercase; letter-spacing:.16em; font-size:9.5px; color:var(--text-4); padding:15px 12px 6px; font-weight:600; white-space:nowrap; }
.shell-sidebar.colapsada .nav-secao{ opacity:0; height:8px; padding:4px 0; }
.nav-item{
  display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  border:none; background:transparent; border-radius:var(--radius-sm);
  padding:9px 12px; font-size:13.5px; font-weight:500; color:var(--text-2);
  position:relative; cursor:pointer; margin:1px 0; white-space:nowrap;
  transition:background .18s var(--ease), color .18s var(--ease);
}
.nav-item:hover{ background:var(--track); color:var(--text-1); }
.nav-item.ativo{ background:linear-gradient(90deg,rgba(166,184,94,.16),rgba(166,184,94,.04)); color:var(--text-1); font-weight:600; }
.nav-item.ativo::before{ content:""; position:absolute; left:-12px; top:50%; transform:translateY(-50%); width:3px; height:20px; background:var(--acc-olive); border-radius:0 3px 3px 0; }
.nav-item.ativo .nav-icone{ color:var(--acc-olive); }
.nav-icone{ width:18px; height:18px; flex:none; display:flex; align-items:center; justify-content:center; color:var(--text-3); font-size:15px; }
.nav-icone svg{ width:18px; height:18px; stroke-width:1.9; display:block; }
.nav-rotulo{ white-space:nowrap; overflow:hidden; flex:1; }
/* badge de contagem (ex.: Custos 3, Restrições 12) */
.nav-badge{ margin-left:auto; background:var(--danger); color:#fff; font-size:10px; font-weight:700; padding:1px 7px; border-radius:20px; line-height:1.6; }
.nav-badge.soft{ background:var(--track); color:var(--text-2); }
.shell-sidebar.colapsada .nav-badge{ display:none; }

/* Sprint 12: submenu (seções de Controle/Planejamento) — subitens do
   menu lateral em estilo tópico (recuados sob o módulo). */
.nav-grupo{ display:flex; flex-direction:column; gap:2px; }
.nav-caret{ margin-left:auto; font-size:15px; line-height:1; color:var(--ink-3);
  transition:transform .15s, background .12s; padding:2px 5px; border-radius:5px; cursor:pointer; }
.nav-caret:hover{ background:var(--line); color:var(--ink); }
.nav-grupo.aberto .nav-caret{ transform:rotate(180deg); }
.nav-sublista{ display:none; flex-direction:column; gap:1px; margin:1px 0 4px; }
.nav-grupo.aberto .nav-sublista{ display:flex; }
.nav-sub{
  border:none; background:transparent; cursor:pointer; width:100%; text-align:left;
  padding:6px 10px 6px 44px; font-size:12.5px; color:var(--text-3); border-radius:var(--radius-sm);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; position:relative;
}
.nav-sub::before{ content:""; position:absolute; left:26px; top:50%; width:5px; height:5px;
  margin-top:-2.5px; border-radius:50%; background:var(--border-3); }
.nav-sub:hover{ background:var(--track); color:var(--text-1); }
.nav-sub.ativo{ color:var(--acc-olive); font-weight:600; }
.nav-sub.ativo::before{ background:var(--acc-olive); }
/* card Saúde da Obra (rodapé da sidebar) */
.saude-card{ margin:10px 12px 4px; background:var(--surface-3); border:1px solid var(--border); border-radius:var(--radius-md); padding:13px; display:flex; flex-direction:column; gap:8px; }
.shell-sidebar.colapsada .saude-card{ display:none; }
.saude-top{ display:flex; align-items:center; gap:8px; font-size:12px; font-weight:600; color:var(--text-1); }
.saude-top svg{ width:15px; height:15px; color:var(--acc-clay); flex:none; }
.saude-bar{ height:5px; border-radius:6px; background:var(--track); overflow:hidden; }
.saude-bar i{ display:block; height:100%; background:linear-gradient(90deg,var(--acc-olive),var(--acc-clay)); border-radius:6px; }
.saude-card small{ color:var(--text-3); font-size:11px; }
/* Navegação em ÁRVORE (Mega, Planejamento e Controle) — níveis
   intermediários que agrupam/expandem + folhas roteáveis. */
.nav-no{ display:flex; flex-direction:column; gap:1px; }
.nav-ramo{ display:flex; align-items:center; gap:8px; width:100%; text-align:left;
  border:none; background:transparent; cursor:pointer; border-radius:6px;
  padding:6px 10px; font-size:12.5px; font-weight:600; color:var(--ink-2); }
.nav-ramo:hover{ background:var(--paper); color:var(--ink); }
.nav-ramo .nav-caret{ margin-left:auto; font-size:13px; padding:1px 4px; }
.nav-no > .nav-filhos{ display:none; flex-direction:column; gap:1px; }
.nav-no.aberto > .nav-filhos{ display:flex; }
.nav-no.aberto > .nav-ramo .nav-caret{ transform:rotate(180deg); }
/* recuo por nível (ramos e folhas) */
.nav-ramo.nav-nivel-1{ padding-left:22px; }
.nav-ramo.nav-nivel-2{ padding-left:36px; }
.nav-ramo.nav-nivel-3{ padding-left:50px; }
.nav-folha.nav-nivel-2{ padding-left:44px; }
.nav-folha.nav-nivel-2::before{ left:30px; }
.nav-folha.nav-nivel-3{ padding-left:58px; }
.nav-folha.nav-nivel-3::before{ left:44px; }
.nav-folha.nav-nivel-4{ padding-left:72px; }
.nav-folha.nav-nivel-4::before{ left:58px; }
/* recolhida: só ícones dos módulos (subitens escondidos) */
.shell-sidebar.colapsada .nav-sublista, .shell-sidebar.colapsada .nav-caret{ display:none; }

.shell-sidebar-rodape{ padding:10px; border-top:1px solid var(--line); display:flex; justify-content:flex-end; align-items:center; gap:6px; }
.shell-sobre{
  margin-right:auto; display:flex; align-items:center; gap:6px;
  background:none; border:none; cursor:pointer;
  font:500 12px var(--f-ui); color:var(--ink-3); padding:6px 4px;
}
.shell-sobre:hover{ color:var(--verde); }
.shell-sidebar.colapsada .sobre-rotulo{ display:none; }
.sobre-lista{ margin:14px 0 4px; display:grid; grid-template-columns:auto 1fr; gap:8px 16px; font-size:13px; }
.sobre-lista dt{ color:var(--ink-2); font-weight:600; white-space:nowrap; }
.sobre-lista dd{ margin:0; color:var(--ink); }
.sobre-lista dd code{ font:500 12px var(--f-mono); background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:1px 6px; }
.sobre-banco-alerta{ margin-top:12px; }
.shell-toggle{
  border:1px solid var(--border-2); background:var(--surface-3); border-radius:7px;
  width:28px; height:28px; font-size:14px; color:var(--text-2); line-height:1;
}
.shell-toggle:hover{ border-color:var(--acc-olive); color:var(--acc-olive); }

/* sidebar recolhida (mesmo padrão da Versão 02: tooltip via data-tip) */
.shell-sidebar.colapsada{ width:62px; }
.shell-sidebar.colapsada .nav-rotulo{ display:none; }
.shell-sidebar.colapsada .nav-item{ justify-content:center; padding:10px 6px; }
.shell-sidebar.colapsada .nav-item::after{
  content:attr(data-tip);
  position:absolute; left:calc(100% + 8px); top:50%; transform:translateY(-50%);
  background:var(--surface-3); color:var(--text-1); border:1px solid var(--border-2); font-size:11.5px; padding:5px 9px; border-radius:6px;
  white-space:nowrap; opacity:0; pointer-events:none; transition:opacity .12s; z-index:60; box-shadow:var(--shadow-md);
}
.shell-sidebar.colapsada .nav-item:hover::after{ opacity:1; }
.shell-sidebar.colapsada .shell-sidebar-rodape{ justify-content:center; }

.shell-conteudo{ flex:1; padding:24px 28px 44px; min-width:0; }

/* ============================================================
   PÁGINA DE MÓDULO (placeholder "Em desenvolvimento")
   ============================================================ */
.pagina-kicker{
  display:block; font-family:var(--f-mono); font-size:11px; letter-spacing:.1em;
  color:var(--verde); margin-bottom:3px; text-transform:uppercase;
}
.pagina-titulo{ font-size:22px; font-weight:700; margin:0 0 18px; letter-spacing:-.01em; }

.em-desenvolvimento{
  background:var(--card); border:1px dashed var(--line-2); border-radius:10px;
  padding:44px 32px; text-align:center; max-width:560px;
}
.em-desenvolvimento .ed-icone{ font-size:34px; display:block; margin-bottom:12px; }
.em-desenvolvimento h2{ font-size:16px; font-weight:600; margin:0 0 6px; }
.em-desenvolvimento p{ font-size:13.5px; color:var(--ink-2); margin:0; line-height:1.55; }

/* ============================================================
   PÁGINAS REAIS (Sprint 7) — tabela, badges, modal, formulário
   ============================================================ */
.pagina-nota{ font-size:12.5px; color:var(--ink-3); line-height:1.55; max-width:640px; }
.pagina-acoes-linha{
  display:flex; align-items:center; justify-content:space-between;
  gap:14px; flex-wrap:wrap; margin-bottom:14px;
}
/* padronização (9.1C): mesma função = mesmo estilo — todos os botões
   e campos das linhas de ação têm a MESMA altura em toda a plataforma */
.pagina-acoes-linha .btn-primario,
.pagina-acoes-linha .btn-fantasma,
.pagina-acoes-linha .btn-suave-acao{ padding:9px 16px; font-size:13px; }
.campo-inline select, .campo-inline input{ padding:8px 10px; }
.filtro-check{ display:flex; align-items:center; gap:7px; font-size:13px; color:var(--ink-2); cursor:pointer; }

.tabela-envelope{
  background:var(--card); border:1px solid var(--line); border-radius:10px;
  overflow-x:auto; box-shadow:var(--sombra);
}
.tabela{ width:100%; border-collapse:collapse; font-size:13.5px; }
.tabela th{
  text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.05em;
  color:var(--ink-3); font-weight:600; padding:11px 14px;
  border-bottom:1px solid var(--line);
}
.tabela td{ padding:11px 14px; border-bottom:1px solid var(--line); vertical-align:top; }
.tabela tbody tr:last-child td{ border-bottom:none; }
.tabela tbody tr:hover{ background:var(--paper); }
.tabela .obs{ color:var(--ink-3); font-size:12px; }
.linha-inativa td{ color:var(--ink-3); }
.celula-acoes{ white-space:nowrap; text-align:right; }
/* Placa · cabeçalho da tabela de classificação: cor padrão (olive) + fixo ao rolar */
.placa-tabela thead th{ background:var(--verde-tint); color:var(--verde); position:sticky; top:0; z-index:2; }

.btn-mini{
  background:transparent; border:1px solid var(--line-2); border-radius:5px;
  color:var(--ink-2); font-size:12px; padding:4px 10px; margin-left:6px;
  transition:border-color .15s, color .15s;
}
.btn-mini:hover{ border-color:var(--verde); color:var(--verde); }
.btn-mini-perigo:hover{ border-color:var(--erro); color:var(--erro); }
.btn-perigo{ background:#B4483C; }
.btn-perigo:hover{ background:#9A3A30; }

.badge{
  display:inline-block; font-size:11px; font-weight:600; letter-spacing:.02em;
  padding:2px 9px; border-radius:20px; border:1px solid transparent;
}
.badge-ativa{ background:var(--verde-tint); color:var(--verde); border-color:var(--verde-linha); }
.badge-inativa{ background:var(--erro-bg); color:var(--erro); border-color:#F3D2D5; }
.badge-status-planejamento{ background:#DCE6F2; color:#002060; }
.badge-status-execucao{ background:#C6EFCE; color:#006100; }
.badge-status-concluida{ background:#E4E3DA; color:var(--ink-2); }

/* modal */
.modal-fundo{
  position:fixed; inset:0; background:rgba(38,38,31,.45); z-index:80;
  display:flex; align-items:center; justify-content:center; padding:20px;
}
.modal-caixa{
  background:var(--card); border-radius:10px; box-shadow:var(--sombra);
  border-top:3px solid var(--verde);
  width:min(560px, 100%); max-height:90vh; overflow-y:auto; padding:26px 28px;
}
.modal-caixa h2{ font-size:18px; margin:0 0 14px; }
.modal-larga{ width:min(880px, 100%); }
/* cabeçalho do modal com botão X (fechar) no canto */
.rz-modal-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.modal-x{ flex-shrink:0; width:32px; height:32px; margin:-4px -4px 0 0; border:none; background:transparent; color:var(--text-3); font-size:16px; line-height:1; cursor:pointer; border-radius:8px; }
.modal-x:hover{ background:var(--surface-3); color:var(--text-1); }
/* itens do menu lateral de Configurações (painel COR) */
.cfg-item{ padding:9px 12px; border-radius:9px; font-size:13px; font-weight:500; cursor:pointer; margin:2px 0; color:var(--text-2); }
.cfg-item:hover{ background:var(--track); color:var(--text-1); }
.cfg-item.ativa{ background:var(--track); color:var(--text-1); }
.cfg-perfil{ display:flex; flex-direction:column; }
.cfg-perfil > div{ display:flex; justify-content:space-between; align-items:center; gap:12px; padding:11px 0; border-bottom:1px solid var(--border); font-size:13px; }
.cfg-perfil span{ color:var(--text-3); }
.cfg-perfil b{ color:var(--text-1); text-align:right; }
/* painel lateral direito (detalhe da restrição) */
.modal-fundo-drawer{ justify-content:flex-end; align-items:stretch; padding:0; background:rgba(10,10,8,.5); }
.modal-drawer{ width:min(472px,100%); max-width:100%; height:100vh; max-height:100vh; border-radius:0; border-top:none; border-left:3px solid var(--verde); padding:0; overflow:hidden; display:flex; flex-direction:column; box-shadow:-18px 0 50px rgba(0,0,0,.4); animation:rz-drawer-in .22s cubic-bezier(.4,0,.2,1); }
@keyframes rz-drawer-in{ from{ transform:translateX(34px); opacity:.35; } to{ transform:translateX(0); opacity:1; } }
.modal-drawer .rz-det-head{ display:block; padding:20px 22px 14px; border-bottom:1px solid var(--line); border-left:3px solid transparent; flex-shrink:0; }
.modal-drawer .rz-det-head.rz-st-venc{ border-left-color:var(--danger); }
.modal-drawer .rz-det-head.rz-st-hoje{ border-left-color:var(--acc-clay,#CE8347); }
.modal-drawer .rz-det-head.rz-st-prazo{ border-left-color:var(--info,#4F726B); }
.modal-drawer .rz-det-head.rz-st-ok{ border-left-color:var(--ok); }
.rz-det-head-top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.rz-drawer-x{ border:none; background:transparent; color:var(--text-3); font-size:16px; cursor:pointer; width:30px; height:30px; border-radius:8px; }
.rz-drawer-x:hover{ background:var(--surface-3); color:var(--text-1); }
.modal-drawer .rz-det-head h2{ font-size:19px; margin:0; line-height:1.32; }
.modal-drawer .rz-det-grid{ display:block; flex:1; min-height:0; overflow-y:auto; padding:16px 22px; margin-top:0; }
.modal-drawer .rz-det-hist{ border-left:none; padding-left:0; margin-top:18px; border-top:1px solid var(--line); padding-top:14px; }
.modal-drawer .rz-det-acoes{ display:flex; flex-wrap:wrap; gap:8px; padding:13px 22px; border-top:1px solid var(--line); margin:0; background:var(--surface-1); flex-shrink:0; }
@media (max-width:520px){ .modal-drawer{ width:100%; border-left:none; } }
/* Matriz de permissões (Administração → Usuários, Sprint 10.1) */
.tabela-matriz td, .tabela-matriz th{ padding:7px 9px; }
.tabela-matriz input[type="checkbox"]{ width:auto; cursor:pointer; }
.celula-excecao{ background:#FFF4E5; position:relative; }
.marca-excecao{ color:#B4671E; font-size:9px; position:absolute; top:3px; right:5px; }
.badge-excecoes{ background:#FFF4E5; color:#B4671E; border:1px solid #EBD3B3; }
.modal-sub{ font-size:13.5px; color:var(--ink-2); line-height:1.55; margin:0 0 16px; }
.modal-acoes{ display:flex; justify-content:flex-end; gap:10px; margin-top:18px; }

/* MODO COMPACTO — cards do cronograma (fontes/espaços menores; não afeta os outros módulos) */
.modal-compacto{ padding:18px 20px; }
.modal-compacto h2{ font-size:15px; margin:0 0 11px; }
.modal-compacto .modal-sub{ font-size:11.5px; line-height:1.5; margin:0 0 11px; }
.modal-compacto .campo{ margin-bottom:9px; }
.modal-compacto .campo label{ font-size:11px; margin-bottom:4px; }
.modal-compacto .campo input, .modal-compacto .campo select, .modal-compacto .campo textarea{ padding:7px 9px; font-size:12.5px; }
.modal-compacto .modal-acoes{ margin-top:12px; }
.modal-compacto .modal-acoes button{ padding:7px 14px; font-size:12.5px; }
/* compacto: cabeçalho dos painéis de Funcionalidades (o .cro-func-topo h2=20px sobrepunha) + itens do menu ☰ */
.modal-compacto .cro-func-topo h2{ font-size:15px; }
.modal-compacto .cro-func-item{ min-height:40px; font-size:13.5px; gap:13px; }
.modal-compacto .cro-func-ico{ width:20px; }
.modal-compacto .cro-func-ico svg{ width:20px; height:20px; }
.modal-compacto .cro-func-txt small{ font-size:11px; }
.modal-compacto .cro-func-seta{ font-size:16px; }
.modal-compacto .cro-func-grupo{ font-size:12px; margin:10px 0 2px; }

.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0 16px; }
.form-grid .campo-cheio{ grid-column:1 / -1; }
.campo select, .campo textarea{
  width:100%; border:1px solid var(--line-2); border-radius:6px;
  background:var(--canvas-2); padding:10px 12px; font-size:14px; color:var(--ink);
  outline:none; font-family:inherit; transition:border-color .15s, box-shadow .15s;
}
.campo select:focus, .campo textarea:focus{ border-color:var(--verde); box-shadow:0 0 0 3px var(--verde-tint); }

/* checkboxes dentro de .campo: nunca esticar a 100% (correção 9.1A) */
.campo input[type="checkbox"]{ width:auto; flex:none; }
.campo label.filtro-check{ display:flex; align-items:center; margin-bottom:4px; font-weight:500; }

/* página Organização */
.cartao-dados{
  background:var(--card); border:1px solid var(--line); border-radius:10px;
  box-shadow:var(--sombra); padding:6px 20px; margin-bottom:16px; max-width:560px;
}
.kv{ display:flex; gap:14px; padding:11px 0; border-bottom:1px solid var(--line); }
.kv:last-child{ border-bottom:none; }
.kv-rotulo{ width:110px; flex:none; font-size:12px; font-weight:600; color:var(--ink-3); padding-top:1px; }
.kv-valor{ font-size:14px; }

/* Métricas: cards iguais, compactos, ocupando a largura da tela como
   os gráficos abaixo (grade de colunas iguais, nº centralizado). */
.metricas{ display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-bottom:16px; }
.metrica{
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius-sm);
  padding:14px 15px;
  display:flex; flex-direction:column; gap:4px;
  text-align:left; align-items:flex-start;
}
.metrica .kpi-ico{ width:34px; height:34px; border-radius:10px; background:var(--track); display:grid; place-items:center; color:var(--acc-olive); margin-bottom:8px; }
.metrica .kpi-ico svg{ width:17px; height:17px; }
.metrica strong{ font-size:26px; font-weight:600; color:var(--text-1); font-family:var(--ff-display); line-height:1; }
.metrica span{ font-family:var(--ff-narrow); text-transform:uppercase; letter-spacing:.1em; font-size:10.5px; color:var(--text-3); line-height:1.2; }
@media (max-width:640px){ .metricas{ grid-template-columns:repeat(2, 1fr); } }

/* topo do dashboard: saudação à esquerda, sino à direita (título da
   página removido). Clicar no sino abre um card na PRÓPRIA página. */
.dash-topo{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:10px; }

/* Cabeçalho executivo do Dashboard (padrão da referência COR) */
.dash-header{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap; margin-bottom:22px; }
.dh-eyebrow{ display:block; font-family:var(--ff-narrow); text-transform:uppercase; letter-spacing:.22em; font-size:10.5px; font-weight:600; color:var(--text-4); }
.dh-title{ font-family:var(--ff-display); font-weight:600; font-size:30px; line-height:1.05; color:var(--text-1); margin:5px 0 7px; }
.dh-sub{ font-size:12.5px; color:var(--text-3); margin:0; }
.dh-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.seg{ display:flex; background:var(--surface-2); border:1px solid var(--border); border-radius:11px; padding:3px; }
.seg-btn{ border:none; background:none; cursor:pointer; font:600 12.5px var(--ff-ui); color:var(--text-3); padding:7px 14px; border-radius:8px; transition:background .15s var(--ease),color .15s; }
.seg-btn:hover{ color:var(--text-1); }
.seg-btn.ativo{ background:var(--surface-3); color:var(--text-1); box-shadow:0 1px 3px rgba(0,0,0,.25); }
.dh-btn{ display:inline-flex; align-items:center; gap:7px; border:1px solid var(--border-2); background:var(--surface-2); color:var(--text-1); font:600 12.5px var(--ff-ui); padding:8px 14px; border-radius:10px; cursor:pointer; transition:.15s; }
.dh-btn:hover{ border-color:var(--border-3); background:var(--surface-3); }
.dh-btn svg{ width:15px; height:15px; }
.dh-btn.primary{ background:linear-gradient(135deg,var(--acc-olive-soft),var(--acc-olive)); color:#fff; border-color:transparent; }
.dh-btn.primary:hover{ filter:brightness(1.06); }

/* ============================================================
   COMPONENTES COR — telas portadas do HTML de referência
   (cards, grid, pill, tabela, stat cards, section-head, botões…)
   ============================================================ */
.eyebrow{ font-family:var(--ff-narrow); text-transform:uppercase; letter-spacing:.18em; font-size:10.5px; font-weight:600; color:var(--text-3); }
.page-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:22px; flex-wrap:wrap; }
.page-title{ font-family:var(--ff-display); font-weight:600; font-size:29px; letter-spacing:-.01em; line-height:1.05; color:var(--text-1); }
.page-sub{ color:var(--text-3); font-size:13px; margin-top:5px; }
.page-actions{ display:flex; gap:9px; align-items:center; flex-wrap:wrap; }
.btn{ display:inline-flex; align-items:center; gap:8px; padding:9px 15px; border-radius:11px; font-size:13px; font-weight:600; border:1px solid var(--border-2); background:var(--surface-2); color:var(--text-1); cursor:pointer; transition:.18s var(--ease); }
.btn svg{ width:15px; height:15px; }
.btn:hover{ border-color:var(--border-3); background:var(--surface-3); transform:translateY(-1px); }
.btn.primary{ background:linear-gradient(135deg,var(--acc-olive-soft),var(--acc-olive)); color:#fff; border-color:transparent; }
.btn.primary:hover{ box-shadow:0 8px 22px -8px rgba(166,184,94,.6); }
.btn.ghost{ background:transparent; }
.section-head{ display:flex; align-items:center; gap:12px; margin:26px 2px 15px; }
.section-head h2{ font-family:var(--ff-display); font-weight:600; font-size:17px; letter-spacing:-.005em; color:var(--text-1); margin:0; }
.section-head .line{ flex:1; height:1px; background:linear-gradient(90deg,var(--border-2),transparent); }
.section-head .tag{ font-size:11px; color:var(--text-3); font-weight:600; font-family:var(--ff-narrow); letter-spacing:.06em; }
.grid{ display:grid; gap:16px; }
.card{ background:var(--panel); border:1px solid var(--border); border-radius:var(--radius-lg); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); position:relative; overflow:hidden; transition:transform .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease); }
.card:hover{ border-color:var(--border-2); }
.card-pad{ padding:18px; }
.card-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.card-head h3{ font-size:14.5px; font-weight:700; display:flex; align-items:center; gap:9px; color:var(--text-1); margin:0; }
.card-head h3 svg{ width:16px; height:16px; color:var(--text-3); }
.card-head .sub{ font-size:11.5px; color:var(--text-3); margin-top:2px; font-weight:500; }
.mini-btn{ width:29px; height:29px; border-radius:8px; display:grid; place-items:center; color:var(--text-3); background:none; border:none; cursor:pointer; transition:.15s; }
.mini-btn:hover{ background:var(--track); color:var(--text-1); }
.mini-btn svg{ width:15px; height:15px; }
.kpi-top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.card .kpi-ico{ width:36px; height:36px; border-radius:10px; display:grid; place-items:center; background:var(--track); border:1px solid var(--border); }
.card .kpi-ico svg{ width:18px; height:18px; color:var(--acc-olive); }
.kpi-label{ font-size:12px; color:var(--text-3); font-weight:600; margin-bottom:4px; display:flex; align-items:center; gap:6px; }
.kpi-val{ font-family:var(--ff-display); font-weight:600; font-size:30px; line-height:1; letter-spacing:-.01em; font-variant-numeric:tabular-nums; color:var(--text-1); display:flex; align-items:baseline; gap:6px; }
.kpi-val small{ font-size:14px; color:var(--text-3); font-family:var(--ff-ui); font-weight:600; }
.kpi-meta{ font-size:11px; color:var(--text-3); }
.kpi-meta b{ color:var(--text-2); }
.crit{ width:7px; height:7px; border-radius:50%; display:inline-block; }
.crit.hi{ background:var(--danger); box-shadow:0 0 0 3px rgba(214,106,78,.18); }
.crit.md{ background:var(--warn); }
.crit.lo{ background:var(--ok); }
.tbl-wrap{ overflow-x:auto; border-radius:var(--radius-md); border:1px solid var(--border); }
.tbl-wrap table{ width:100%; border-collapse:collapse; font-size:12.5px; min-width:560px; }
.tbl-wrap thead th{ text-align:left; font-family:var(--ff-narrow); text-transform:uppercase; letter-spacing:.08em; font-size:10.5px; color:var(--text-3); font-weight:700; padding:12px 14px; background:var(--surface-2); border-bottom:1px solid var(--border-2); white-space:nowrap; }
.tbl-wrap tbody td{ padding:11px 14px; border-bottom:1px solid var(--border); white-space:nowrap; color:var(--text-1); }
.tbl-wrap tbody tr{ transition:background .15s; }
.tbl-wrap tbody tr:hover{ background:var(--track); }
.tbl-wrap tbody tr:last-child td{ border-bottom:none; }
.tbl-wrap td.num, .tbl-wrap th.num{ text-align:right; font-variant-numeric:tabular-nums; }
.pill{ display:inline-flex; align-items:center; gap:6px; font-size:10.5px; font-weight:700; padding:3px 9px; border-radius:20px; }
.pill i{ width:6px; height:6px; border-radius:50%; }
.pill.ok{ background:rgba(159,190,90,.13); color:var(--ok); } .pill.ok i{ background:var(--ok); }
.pill.warn{ background:rgba(224,163,76,.13); color:var(--warn); } .pill.warn i{ background:var(--warn); }
.pill.danger{ background:rgba(214,106,78,.13); color:var(--danger); } .pill.danger i{ background:var(--danger); }
.pill.info{ background:rgba(135,167,160,.14); color:var(--info); } .pill.info i{ background:var(--info); }
.pill.neutral{ background:var(--track); color:var(--text-2); } .pill.neutral i{ background:var(--text-3); }
.mini-bar{ height:6px; border-radius:6px; background:var(--track); overflow:hidden; width:90px; display:inline-block; vertical-align:middle; }
.mini-bar i{ display:block; height:100%; border-radius:6px; }
.meet-head{ display:flex; gap:14px; align-items:center; padding-bottom:14px; border-bottom:1px solid var(--border); margin-bottom:14px; }
.meet-date{ width:52px; height:52px; border-radius:12px; background:linear-gradient(135deg,var(--olive-moss),var(--espresso)); display:grid; place-items:center; text-align:center; color:#f3f1e6; flex-shrink:0; }
.meet-date b{ font-size:20px; font-weight:700; line-height:1; font-family:var(--ff-display); }
.meet-date span{ font-size:9.5px; text-transform:uppercase; letter-spacing:.1em; opacity:.85; }
.safety-num{ font-family:var(--ff-display); font-weight:600; font-size:66px; line-height:1; background:linear-gradient(135deg,var(--acc-olive),var(--acc-clay)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; font-variant-numeric:tabular-nums; }
.safety-lbl{ font-size:12px; color:var(--text-3); font-weight:600; margin-top:6px; letter-spacing:.02em; }

/* dropzone do arrastão (importação em lote) */
.imp-dropzone{ display:flex; flex-direction:column; align-items:center; gap:5px; text-align:center;
  border:2px dashed var(--border-3); border-radius:var(--radius-md); background:var(--track);
  padding:22px 16px; margin:14px 0 18px; cursor:pointer; transition:border-color .15s, background .15s; }
.imp-dropzone:hover, .imp-dropzone.ativo{ border-color:var(--acc-olive); background:rgba(166,184,94,.07); }
.imp-dropzone strong{ font-size:14px; color:var(--text-1); }
.imp-dropzone span{ font-size:12px; color:var(--text-3); max-width:520px; }
.dash-topo .dash-saudacao{ margin:0; }
.sino-box{ position:relative; }
.sino-pendencia{
  position:relative; flex:none; width:38px; height:38px; border-radius:9px;
  background:var(--card); border:1px solid var(--line); color:var(--ink-2);
  display:inline-flex; align-items:center; justify-content:center; cursor:pointer;
  transition:border-color .15s, color .15s, background .15s;
}
.sino-pendencia:hover{ border-color:var(--verde-linha); color:var(--verde); }
.sino-pendencia.tem{ color:#C87F0A; border-color:#E4C58A; background:#FDF6EA; }
.sino-badge{
  position:absolute; top:-6px; right:-6px; min-width:18px; height:18px; padding:0 4px;
  border-radius:9px; background:#C87F0A; color:#fff;
  font:700 11px/18px var(--f-mono); text-align:center; box-shadow:0 0 0 2px var(--card);
}
.sino-card{
  position:absolute; top:46px; right:0; z-index:40; width:300px; max-width:86vw;
  background:var(--card); border:1px solid var(--line); border-radius:10px;
  box-shadow:0 8px 26px rgba(38,38,31,.16); padding:12px 14px;
}
.sino-card-cab{ display:flex; align-items:center; justify-content:space-between; gap:10px;
  border-bottom:1px solid var(--line); padding-bottom:8px; margin-bottom:8px; font-size:13.5px; }
.sino-card-cont{ font:700 12px/1 var(--f-mono); background:#FDF6EA; color:#C87F0A;
  border:1px solid #E4C58A; border-radius:20px; padding:3px 8px; }
.sino-lista{ list-style:none; margin:0; padding:0; max-height:260px; overflow:auto;
  display:flex; flex-direction:column; }
.sino-lista li{ display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:7px 0; border-bottom:1px solid var(--linha-fraca, #EEEDE6); }
.sino-lista li:last-child{ border-bottom:0; }
.sino-lista strong{ display:block; font-size:13px; }
.sino-lista small{ display:block; font-size:11.5px; color:var(--ink-3); }
.sino-data{ font:12px var(--f-mono); color:var(--ink-3); flex:none; }
.sino-vazio{ margin:2px 0; font-size:12.5px; color:var(--ink-3); }
.sino-gerir{
  margin-top:10px; width:100%; padding:7px; border-radius:7px; cursor:pointer;
  background:var(--verde); color:#fff; border:0; font-size:12.5px; font-weight:600;
}
.sino-gerir:hover{ filter:brightness(1.06); }

/* ============================================================
   DASHBOARD — saudação + card de pendências
   ============================================================ */
.dash-saudacao{ font-size:15px; color:var(--ink-2); margin:0 0 16px; }
.dash-card{
  background:var(--card); border:1px solid var(--line); border-radius:10px;
  box-shadow:var(--sombra); padding:16px 20px; max-width:560px; margin-bottom:14px;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
}
.dash-card h3{ margin:0 0 3px; font-size:14px; }
.dash-card p{ margin:0; font-size:13px; color:var(--ink-2); }
.dash-card p strong{ font-size:18px; color:var(--verde); }
.dash-card-pendencia{ border-left:4px solid #C87F0A; }
.dash-logo-obra{ height:34px; object-fit:contain; }

/* Dashboard — portado do mockup aprovado (Versão 02, fonte oficial) */
.dash-colunas{ display:grid; grid-template-columns:1.5fr 1fr; gap:18px; align-items:start; }
@media (max-width:1100px){ .dash-colunas{ grid-template-columns:1fr; } }
.grafico-card{
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius-md);
  padding:18px 20px; margin-bottom:18px;
}
.grafico-card h3{
  margin:0 0 4px; font-size:15px; font-weight:600; letter-spacing:0;
  text-transform:none; color:var(--text-1); font-family:var(--ff-display);
  display:flex; align-items:center; gap:8px;
}
.grafico-card h3 .gc-ico{ width:16px; height:16px; flex:none; color:var(--acc-olive); }
/* Planejamento: PPC + Aderência lado a lado (mesma largura), Curva S e
   Motivos em largura total — gráficos com espaço, sem espremer. */
.plan-grid{ display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:start; }
@media (max-width:1100px){ .plan-grid{ grid-template-columns:1fr; } }
/* card "emoldurado" (Progresso Semanal): cabeçalho com título + menu (⋮)
   e divisória, igual à referência aprovada. */
.gc-head{ display:flex; align-items:center; justify-content:space-between; gap:12px;
  border-bottom:1px solid var(--line); padding-bottom:10px; margin-bottom:14px; }
.gc-head h3{ margin:0; font-size:16px; }
.gc-menu{ color:var(--ink-3); font-size:18px; line-height:1; letter-spacing:1px; user-select:none; }

/* KPIs do PPC (4 indicadores no topo, padrão .metrica da Visão Geral) */
.kpi-row{ display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-bottom:16px; }
@media (max-width:820px){ .kpi-row{ grid-template-columns:repeat(2, 1fr); } }

/* Avanço Físico (estreito) + Progresso Semanal (largo) lado a lado */
.plan-grid-af{ display:grid; grid-template-columns:minmax(230px, 1fr) 2.6fr; gap:18px; align-items:stretch; }
@media (max-width:1100px){ .plan-grid-af{ grid-template-columns:1fr; } }
.af-card{ display:flex; flex-direction:column; }
.af-topo{ display:flex; align-items:center; gap:16px; margin:6px 0 18px; }
.af-donut{ flex:none; line-height:0; }
.af-medicao{ margin:0; font-size:12.5px; color:var(--ink-3); line-height:1.45; }
.af-medicao strong{ display:block; color:var(--ink-2); font-size:14.5px; }
.af-card .fonte-badge{ margin-top:auto; }   /* gruda no rodapé (card esticado) */
.af-barras{ display:flex; flex-direction:column; gap:9px; }
.af-linha{ display:grid; grid-template-columns:64px 1fr auto; align-items:center; gap:9px; }
.af-rot{ font-size:12.5px; color:var(--ink-2); }
.af-track{ background:#EFEEE8; border-radius:5px; height:9px; overflow:hidden; }
.af-fill{ height:100%; border-radius:5px; transition:width .3s; }
.af-val{ font-family:var(--f-mono); font-size:12.5px; font-weight:700; color:var(--ink); min-width:52px; text-align:right; }
.grafico-card .grafico-sub{ margin:0 0 14px; font-size:12px; color:var(--ink-3); }
/* ==== MAPA DE CHUVAS — infográfico (réplica da referência) ==== */
.mc-toolbar{ display:flex; gap:16px; align-items:center; flex-wrap:wrap; margin-bottom:14px; }
.mc-dica{ color:var(--ink-3); font-size:12.5px; }
/* painel = card padrão do dashboard (.grafico-card); sem fundo/chuva/título grande */
.mc-panel{ max-width:1080px; }
.mc-periodo-inline{ color:var(--ink-3); font-size:12px; }
/* corpo: roda + lateral */
.mc-body{ display:grid; grid-template-columns:1fr 248px; gap:20px; align-items:start; position:relative; z-index:1; }
@media (max-width:900px){ .mc-body{ grid-template-columns:1fr; } }
.mc-roda-wrap{ display:flex; justify-content:center; align-items:flex-start; }
.mc-lateral{ display:flex; flex-direction:column; gap:16px; }
.mc-card{ background:var(--card); border:1px solid var(--line); border-radius:8px; padding:14px 16px; }
.mc-card h4{ margin:0 0 12px; font-size:13px; font-weight:800; letter-spacing:1.1px; color:#16233F; }
.mc-leg-item{ display:flex; align-items:flex-start; gap:11px; margin:10px 0; }
.mc-leg-dot{ width:17px; height:17px; border-radius:50%; flex:none; margin-top:2px; }
.mc-leg-tx strong{ display:block; font-size:13px; color:#1F2A3D; font-weight:700; }
.mc-leg-tx small{ display:block; color:#7A8494; font-size:11.5px; line-height:1.35; }
/* legenda vira PINCEL quando edita (clicar na bolinha ativa a cor) */
.mc-pincel{ display:flex; align-items:flex-start; gap:11px; width:100%; margin:5px 0;
  text-align:left; border:1px solid transparent; background:none; border-radius:8px;
  padding:5px 7px; cursor:pointer; font:inherit; color:inherit; transition:background .12s; }
.mc-pincel:hover{ background:#F1F5FA; }
.mc-pincel.ativo{ border-color:#2E6FC0; background:#EAF2FB; }
body.pincel-ativo .mc-seg{ cursor:crosshair !important; }
.mc-lote-turnos{ display:flex; gap:18px; flex-wrap:wrap; }
.mc-res-item{ display:flex; align-items:center; gap:11px; margin:10px 0; }
.mc-res-ic{ width:32px; height:32px; border-radius:9px; flex:none; display:flex; align-items:center; justify-content:center; }
.mc-res-tx strong{ display:block; font-size:13px; font-weight:700; color:#1F2A3D; line-height:1.2; }
.mc-res-tx span{ color:#6B7684; font-size:11.5px; }

/* ── Mapa de Chuva: abas (Lançamento roda ↔ Análise mm) ── */
.mc-abas{ display:flex; gap:4px; background:var(--verde-tint); border-radius:8px; padding:3px; margin-bottom:14px; width:max-content; }
.mc-aba{ border:none; background:transparent; border-radius:6px; padding:7px 16px; font-size:13px; font-weight:600; font-family:inherit; color:var(--ink-2); cursor:pointer; }
.mc-aba.ativa{ background:#fff; color:var(--verde); box-shadow:0 1px 3px rgba(38,38,31,.12); }

/* ── Dashboard de chuva medida (Open-Meteo) — .cm-* ── */
.cm-card{ max-width:1080px; margin-bottom:16px; }
.cm-card .gc-head{ flex-wrap:wrap; gap:8px 14px; }
.cm-legenda{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; }
.cm-leg{ display:inline-flex; align-items:center; gap:5px; font-size:11px; color:var(--ink-2); }
.cm-leg i{ width:22px; height:12px; border-radius:3px; border:1px solid rgba(0,0,0,.08); display:inline-block; }
/* grade diária tipo planilha */
.cm-grade-wrap{ overflow-x:auto; }
.cm-grade{ border-collapse:separate; border-spacing:0; font-size:11px; width:max-content; }
.cm-grade th{ position:sticky; left:0; z-index:2; background:#fff; text-align:left; white-space:nowrap;
  padding:5px 14px 5px 2px; font-weight:700; color:#1F2A3D; border-bottom:1px solid #EAEDF1; }
.cm-grade td{ min-width:30px; text-align:center; padding:5px 4px; border-bottom:1px solid #EAEDF1;
  border-right:1px solid #F1F3F6; font-variant-numeric:tabular-nums; }
.cm-r-dia td{ font-weight:700; color:#16233F; }
.cm-r-dow td{ color:#8A93A3; font-size:10px; }
.cm-r-dow td.cm-fds{ color:#D62828; font-weight:700; }
.cm-mm{ font-weight:700; }
.cm-nd{ background:#F7F8FA; color:#C2C8D0; }
.cm-imp{ font-size:14px; font-weight:800; line-height:1; }
/* três cartões (donut · linha · gauge) */
.cm-tres{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; max-width:1080px; }
.cm-tres .cm-card{ margin-bottom:0; }
@media (max-width:900px){ .cm-tres{ grid-template-columns:1fr; } }
/* donut de distribuição */
.cm-donut{ display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
.cm-donut-num{ font-weight:800; font-size:26px; fill:#16233F; }
.cm-donut-sub{ font-size:11px; fill:#8A93A3; }
.cm-donut-leg{ flex:1; min-width:150px; display:flex; flex-direction:column; gap:6px; }
.cm-dl{ display:grid; grid-template-columns:12px 1fr auto auto; align-items:center; gap:7px; font-size:11.5px; }
.cm-dl i{ width:11px; height:11px; border-radius:3px; }
.cm-dl span{ color:var(--ink-2); }
.cm-dl b{ font-family:var(--f-mono); font-size:11px; color:#1F2A3D; text-align:right; }
.cm-dl em{ font-style:normal; color:#8A93A3; font-size:10.5px; min-width:44px; text-align:right; }
/* linha de evolução acumulada */
.cm-linha svg{ display:block; }
.cm-ln-area{ fill:rgba(78,147,214,.12); stroke:none; }
.cm-ln-real{ stroke:#2E6FC0; stroke-width:2.2; }
.cm-ln-media{ stroke:#9AA6B4; stroke-width:1.8; }
.cm-ln-grid{ stroke:#EDF0F4; stroke-width:1; }
.cm-ln-tick{ fill:#9AA6B4; font-size:9px; }
.cm-linha-leg{ display:flex; gap:14px; justify-content:center; margin-top:4px; }
.cm-ll{ font-size:11px; color:var(--ink-2); display:inline-flex; align-items:center; gap:6px; }
.cm-ll::before{ content:""; width:16px; border-top:2.5px solid; }
.cm-ll-real::before{ border-color:#2E6FC0; }
.cm-ll-media::before{ border-top-style:dashed; border-color:#9AA6B4; }
/* gauge de produtividade */
.cm-gauge{ display:flex; flex-direction:column; align-items:center; gap:10px; }
.cm-gauge-num{ font-weight:800; font-size:30px; fill:var(--text-1); }
.cm-gauge-sub{ font-size:10px; fill:var(--text-3); }
.cm-gauge-cards{ display:flex; gap:8px; width:100%; }
.cm-gc{ flex:1; text-align:center; background:var(--surface-3); border:1px solid var(--border); border-radius:8px; padding:8px 4px; }
.cm-gc span{ display:block; font-size:10px; color:var(--text-3); margin-bottom:3px; }
.cm-gc b{ font-size:16px; }
/* wrapper do canvas Chart.js: preenche o card (antes só existia no
   oficial.css do iframe — no dashboard o gráfico ficava no tamanho
   padrão do Chart.js, deixando vazio à direita). */
.chartbox{ flex:1; min-height:0; min-width:0; position:relative; }
.chartbox canvas{ position:absolute; inset:0; }
.curva-svg{ width:100%; height:auto; display:block; }
.curva-svg text{ font-family:var(--f-mono); }
.donut-wrap{ display:flex; gap:22px; align-items:center; flex-wrap:wrap; }
.donut-leg{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:5px; flex:1; min-width:170px; }
.donut-leg li{ display:flex; align-items:center; gap:8px; font-size:12.5px; }
.donut-leg .dl-cor{ width:11px; height:11px; border-radius:3px; flex:none; }
.donut-leg .dl-qtd{ margin-left:auto; font-family:var(--f-mono); font-size:12px; color:var(--ink-2); }
.donut-svg path{ cursor:pointer; transition:opacity .12s; }
.donut-svg path:hover{ opacity:.8; }
.barra-linha{ display:grid; grid-template-columns:170px 1fr 52px; align-items:center; gap:10px; margin-bottom:9px; }
.barra-nome{ font-size:12.5px; font-family:var(--f-cond); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.barra-track{ background:#EFEEE8; border-radius:4px; height:15px; overflow:hidden; }
.barra-fill{ height:100%; border-radius:4px; background:var(--verde); transition:width .3s; }
.barra-fill.abaixo{ background:#C87F0A; }
.barra-valor{ font-family:var(--f-mono); font-size:12px; text-align:right; color:var(--ink-2); }
.barra-meta{ font-size:11px; color:var(--ink-3); margin-top:6px; }
.barra-linha:hover .barra-track{ outline:1.5px solid var(--verde-linha); }
.alertas{ display:flex; flex-direction:column; gap:10px; }
.alerta{
  display:flex; gap:12px; align-items:center;
  background:var(--card); border:1px solid var(--line); border-radius:8px;
  padding:11px 14px;
}
.alerta-icone{
  width:34px; height:34px; border-radius:50%; flex:none; color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:15px; font-weight:700;
}
.alerta.vermelho .alerta-icone{ background:#B4483C; }
.alerta.laranja  .alerta-icone{ background:#C87F0A; }
.alerta.azul     .alerta-icone{ background:#1F4E79; }
.alerta.verde    .alerta-icone{ background:var(--verde); }
.alerta-texto strong{ display:block; font-size:13.5px; }
.alerta-texto small{ font-size:12px; color:var(--ink-2); }
.card-cab{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.card-cab h3{ margin:0; }
.rel-secao{
  font-size:11.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-2); margin:18px 0 8px;
}

/* ============================================================
   EFETIVO — histograma de presença (cores exatas da planilha)
   ============================================================ */
:root{
  --c-p-bg:#c6efce;  --c-p-fg:#006100;
  --c-f-bg:#ffc7ce;  --c-f-fg:#9c0006;
  --c-at-bg:#ffeb9c; --c-at-fg:#9c5700;
  --c-fr-bg:#EDE6F7; --c-fr-fg:#5B3E8C;  /* FR = Feriado (9.2A) */
  --c-cp-bg:#dce6f2; --c-cp-fg:#002060;
  --c-d-bg:#d9d9d9;  --c-d-fg:#706556;
  --c-s-bg:#ffdcb4;  --c-s-fg:#783c00;
  --c-e-bg:#b4dcff;  --c-e-fg:#004682;
  --c-fc-bg:#ffeb9c; --c-fc-fg:#9c5700;
}
.c-P{ background:var(--c-p-bg)!important; color:var(--c-p-fg)!important; }
.c-F{ background:var(--c-f-bg)!important; color:var(--c-f-fg)!important; }
.c-AT{ background:var(--c-at-bg)!important; color:var(--c-at-fg)!important; }
.c-FR{ background:var(--c-fr-bg)!important; color:var(--c-fr-fg)!important; }
.c-CP{ background:var(--c-cp-bg)!important; color:var(--c-cp-fg)!important; }
.c-D{ background:var(--c-d-bg)!important; color:var(--c-d-fg)!important; }
.c-S{ background:var(--c-s-bg)!important; color:var(--c-s-fg)!important; }
.c-E{ background:var(--c-e-bg)!important; color:var(--c-e-fg)!important; }
.c-FC{ background:var(--c-fc-bg)!important; color:var(--c-fc-fg)!important; }

.filtros-efetivo{ display:flex; gap:14px; align-items:center; flex-wrap:wrap; }
/* feedback ao trocar obra/mês: a grade atual esmaece até os dados novos chegarem */
#ef-corpo.atualizando{ opacity:.45; pointer-events:none; transition:opacity .15s; }
.campo-inline{ display:flex; align-items:center; gap:7px; font-size:12px; font-weight:600; color:var(--ink-2); }
.campo-inline select, .campo-inline input{
  border:1px solid var(--line-2); border-radius:6px; padding:7px 9px;
  font-size:13px; background:var(--surface-2); color:var(--text-1); font-family:inherit;
}
/* controles nativos (input month/date, seletores, scrollbars) seguem o tema
   — resolve o texto/ícone ilegível do campo de mês no dark. */
:root[data-theme="dark"]{ color-scheme: dark; }
:root[data-theme="light"]{ color-scheme: light; }
.abas{ display:flex; gap:4px; background:var(--verde-tint); border-radius:8px; padding:3px; }
.aba{
  border:none; background:transparent; border-radius:6px; padding:7px 16px;
  font-size:13px; font-weight:600; color:var(--ink-2);
}
.aba.ativa{ background:#fff; color:var(--verde); box-shadow:0 1px 3px rgba(38,38,31,.12); }

.legenda-presenca{ display:flex; gap:12px; flex-wrap:wrap; margin-bottom:10px; }
.leg-item{ display:flex; align-items:center; gap:6px; font-size:11px; color:var(--ink-2); }
.leg-cor{
  display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:18px; border-radius:4px; font-size:10px; font-weight:700;
  border:1px solid rgba(38,38,31,.12);
}
/* Grade FIEL À PLANILHA (portada do modelo aprovado no mockup):
   cabeçalho 32331A, semanas EDEBE2 com separador A9A79A, números
   sobre branco com grade D5D3C8, faixa empresa 706556, zebra F7F6F2 */
.hist-scroll{
  overflow:auto; max-height:calc(100vh - 320px);
  border:1px solid #C8C6BC; border-radius:0 0 8px 8px; background:#fff;
}
/* Sprint 12 (B1): cabeçalho compacto do Efetivo — a grade é a
   protagonista; com a barra única a área útil cresce ~120px */
.ef-toolbar .filtros-efetivo{ align-items:center; }
.ef-linha1{ margin-bottom:8px; }
.ef-acoes-legenda{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ef-acoes-legenda .legenda-compacta{ margin-bottom:0; }
.ef-resumo{ font-size:11.5px; color:var(--ink-2); white-space:nowrap; }
.ef-resumo strong{ color:var(--ink); }
.ef-resumo small{ color:var(--ink-3); }
.legenda-compacta{ gap:4px; margin-bottom:8px; }
.legenda-compacta .leg-cor{ width:24px; height:18px; font-size:10px; }
.ef-toolbar ~ .hist-scroll{ max-height:calc(100vh - 250px); }

/* Sprint 12 (spec 08. FOTOS): painel de organização das fotos do
   Relatório Semanal — arrastar reordena; disciplina/legenda por foto */
.fotos-org{ display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:10px; }
.foto-card{
  position:relative; background:var(--card); border:1px solid var(--line);
  border-radius:8px; padding:6px; display:flex; flex-direction:column; gap:4px;
  cursor:grab; box-shadow:var(--sombra);
}
.foto-card:active{ cursor:grabbing; }
.foto-card img{ width:100%; height:90px; object-fit:cover; border-radius:5px; pointer-events:none; }
.foto-ordem{
  position:absolute; top:10px; left:10px; width:22px; height:22px;
  display:flex; align-items:center; justify-content:center;
  background:var(--verde); color:#fff; border-radius:50%;
  font:700 11px var(--f-mono);
}
.foto-card input{ font-size:11.5px; padding:4px 6px; }
.hist-tabela{ border-collapse:separate; border-spacing:0; font-family:var(--f-mono); font-size:10px; width:max-content; }
.hist-tabela th, .hist-tabela td{
  border-right:1px solid #C8C6BC; border-bottom:1px solid #C8C6BC;
  padding:0; text-align:center; background-clip:padding-box;
}
.hist-tabela td{ height:24px; }

.hcol-cod{ width:54px; min-width:54px; position:sticky; left:0; z-index:3; background:#fff; }
.hcol-nome{ width:184px; min-width:184px; position:sticky; left:54px; z-index:3; background:#fff; text-align:left !important; font-family:var(--f-cond); font-size:11.5px; }
.hcol-func{ width:110px; min-width:110px; position:sticky; left:238px; z-index:3; background:#fff; text-align:left !important; font-family:var(--f-cond); font-size:10.5px; border-right:2px solid #A8A69A !important; }
.hcol-nome span, .hcol-func span{ display:block; padding:0 8px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.hist-tabela thead th{ position:sticky; z-index:4; font-weight:600; }
.hist-tabela thead tr:nth-child(1) th{
  top:0; height:24px; background:#EDEBE2; color:#3F3F35;
  font-size:10.5px; font-weight:700;
  border-right:1px solid #A9A79A; border-bottom:1px solid #A9A79A;
}
.hist-tabela thead tr:nth-child(2) th{
  top:24px; height:22px; background:#fff; color:#26261F;
  font-size:10.5px; font-weight:700; border-right:1px solid #D5D3C8;
}
.hist-tabela thead tr:nth-child(3) th{
  top:46px; height:22px; background:#32331A; color:#fff;
  font-size:10px; font-weight:700; text-transform:lowercase;
  border-right:1px solid #C8C6BC;
}
.hist-tabela thead .hcol-cod, .hist-tabela thead .hcol-nome, .hist-tabela thead .hcol-func{
  z-index:6; background:#32331A !important; color:#fff !important;
  font-family:var(--f-cond); font-size:11px; font-weight:600; text-transform:none;
  text-align:center !important;
}
.th-semana{ letter-spacing:.02em; }
.th-dia{ width:24px; min-width:24px; cursor:default; }
.hist-tabela thead th.fs{ border-right-color:#A9A79A; }
.hist-tabela thead tr:nth-child(2) th.dom{ color:#B4483C; }
.hist-tabela thead tr:nth-child(3) th.dom{ color:#FFB4AB; }
.hist-tabela thead tr:nth-child(3) th.fer{ color:#D9C7F0; }

/* contadores: bloco sticky à direita, COMPACTO e RECOLHÍVEL.
   Aberto = 8 colunas de 26px (+% 34px) = 216px; recolhido = só o %
   (34px), liberando a largura para os dias. Clique no título alterna. */
/* toggle integrado ao cabeçalho: mesma cor da linha das semanas,
   só um chevrão discreto — nada de "painel separado" (9.1C) */
.th-cont-tit{
  position:sticky; right:0; z-index:5 !important;
  background:#EDEBE2 !important; font-size:13px !important; font-weight:700;
  color:#57592E; cursor:pointer; user-select:none;
  border-left:1px solid #A9A79A;
}
.th-cont-tit:hover{ background:#E3E0D2 !important; color:#26261F; }
.th-cont-vazio{
  position:sticky; right:0; z-index:5 !important;
  background:#fff !important; border-left:1px solid #A9A79A;
}
.th-cont-grupo{
  position:sticky; right:0; z-index:5 !important;
  padding:0 !important; background:#32331A !important; border-left:1px solid #A9A79A;
}
.cont-aberto .th-cont-tit, .cont-aberto .th-cont-vazio{ min-width:266px; max-width:266px; }
.cont-fechado .th-cont-tit, .cont-fechado .th-cont-vazio{ min-width:32px; max-width:32px; }

.th-cont-flex{ display:flex; }
.th-cont-flex > span{
  width:26px; flex:none; text-align:center; display:block;
  border-left:1px solid rgba(255,255,255,.14);
}
.th-cont-flex > span:last-child{ width:32px; }
.cont-fechado .th-cont-flex > span:not(:last-child){ display:none; }

.th-cont-grupo .th-contador{ line-height:22px; text-transform:none; font-size:10px; font-weight:700; color:#fff; }
.th-cont-grupo .th-contador:nth-child(odd){ background:#7D5026; }
.th-cont-grupo .th-contador:nth-child(even){ background:#7D4F27; }
.th-cont-grupo .th-contador:nth-child(9){ background:#22373D; }
.th-cont-grupo .th-contador:nth-child(10){ background:#53827B; }

.cel-cont-grupo{
  position:sticky; right:0; z-index:2;
  padding:0 !important; background:#F5F4F0 !important; border-left:2px solid #A8A69A;
}
.cel-cont-grupo .th-cont-flex > span{ border-left:1px solid #E0DED4; }
.cel-contador{
  font-weight:700; color:#706556; line-height:27px; font-size:10px;
  overflow:hidden; text-overflow:clip; white-space:nowrap;
}
.cel-cont-total{
  position:sticky; right:0; bottom:0; z-index:6;
  background:#22373D !important; border-left:2px solid #3A4F56;
}
.cont-aberto .cel-cont-total{ min-width:214px; }
.cont-fechado .cel-cont-total{ min-width:32px; }

/* dia atual: destaque discreto */
.hist-tabela thead th.th-num.hoje{
  background:#EAF3E4; color:#26461F; box-shadow:inset 0 -3px 0 var(--verde);
}
.hist-tabela thead th.th-letra.hoje{ box-shadow:inset 0 3px 0 var(--verde); }
.dia-cel.hj:not([class*=" c-"]){ background:#F4F9F0; }

/* linha EFETIVO DO DIA fixa no rodapé durante a rolagem vertical */
.linha-total td{ position:sticky; bottom:0; z-index:4; }
.linha-total .hcol-cod, .linha-total .hcol-nome, .linha-total .hcol-func{ z-index:7; }

/* modo pincel: legenda vira barra de ferramentas */
.pincel-chip{
  background:transparent; border:1px solid transparent; border-radius:6px;
  padding:3px 8px; font-size:11.5px; color:var(--ink-2); font-family:inherit;
}
.pincel-chip:hover{ border-color:var(--line-2); background:#fff; }
.pincel-chip.ativo{
  border-color:var(--verde); background:#fff; color:var(--ink);
  box-shadow:0 0 0 2px var(--verde-tint); font-weight:700;
}
.pincel-dica{
  font-size:11.5px; color:var(--verde); font-weight:600;
  background:var(--verde-tint); border-radius:20px; padding:3px 12px;
}
body.pincel-ativo .dia-cel.editavel{ cursor:crosshair; }

/* barra de resumo operacional — componente ÚNICO com separadores */
.barra-info{
  display:inline-flex; flex-wrap:wrap; margin-bottom:12px;
  background:var(--card); border:1px solid var(--line); border-radius:8px;
  box-shadow:var(--sombra); overflow:hidden;
}
.bi-item{
  display:flex; align-items:baseline; gap:6px;
  padding:8px 16px; font-size:12.5px; color:var(--ink-2);
  border-left:1px solid var(--line);
}
.bi-item:first-child{ border-left:none; }
.bi-item strong{ color:var(--ink); font-size:15px; font-weight:700; }

/* botão de perigo suave (Limpar mês) */
.btn-perigo-suave{ color:#B4483C; border-color:#E0C4BE; }
.btn-perigo-suave:hover{ border-color:#B4483C; color:#B4483C; background:#FBF1EF; }

/* botão de ação rápida (presença de hoje) */
.btn-suave-acao{
  background:var(--verde-tint); border:1px solid var(--verde-linha); border-radius:6px;
  color:var(--verde); font-size:13px; font-weight:700; padding:9px 14px;
  transition:background .15s;
}
.btn-suave-acao:hover{ background:#E3E5D2; }

/* Faixa da empresa fiel à planilha: fundo 706556 contínuo, SEM
   verticais internas, nome branco 700, altura das linhas (9.1C) */
.linha-empresa td{
  background:#706556; color:#fff; font-family:var(--f-cond); font-weight:700;
  font-size:11px; text-align:left; padding:0 10px; letter-spacing:.02em;
  border-right-color:transparent; height:24px; vertical-align:middle;
}
.linha-empresa .hcol-cod{ background:#706556 !important; text-align:center !important; padding:0; font-family:var(--f-mono); }
.linha-empresa .hcol-nome, .linha-empresa .hcol-func{ background:#706556 !important; }
.linha-empresa .hcol-func{ border-right-color:transparent !important; }

tr.linha-colab td{ background:#fff; }
tr.linha-colab.zebra td{ background:#F7F6F2; }
tbody .hcol-cod{ color:#1F4E79; font-weight:500; }
tbody .hcol-nome{ color:#22373D; font-weight:500; }
tbody .hcol-func{ color:#706556; }

/* faixa da empresa: nome BRANCO e mais forte (leitura da planilha) —
   sobrepõe as cores de coluna acima (9.1B) */
.hist-tabela tbody .linha-empresa .hcol-cod,
.hist-tabela tbody .linha-empresa .hcol-nome,
.hist-tabela tbody .linha-empresa .hcol-func{ color:#fff; font-weight:700; }
.linha-empresa .hcol-nome span{ font-weight:700; letter-spacing:.04em; }
/* 10.3: nome da empresa TOTALMENTE visível na rolagem — o texto pode
   transbordar sobre a área da faixa (mesmo fundo #706556) sem cortar */
.linha-empresa .hcol-nome{ overflow:visible; z-index:4; }
.linha-empresa .banda-nome{ white-space:nowrap; display:inline-block; }
/* cursor de clique simples no colapso */
.linha-empresa{ cursor:pointer; }
/* feriado sem lançamento: tinta lavanda (mesma família do FR) */
.dia-cel.ferdia{ background:var(--c-fr-bg); }
/* colaborador eventual (D5) */
.tag-eventual{
  display:inline-block; background:#EEF2F6; color:#4A5A66; border:1px solid #D5DEE5;
  border-radius:20px; padding:0 7px; font-size:10px; font-weight:600; vertical-align:1px;
}
/* padronização de fontes dos controles do módulo (10.3) */
.campo-inline{ display:inline-flex; align-items:center; gap:7px; font-size:13px; color:var(--ink-2); }
.campo-inline select, .campo-inline input{ font:inherit; color:var(--ink); }
.filtros-efetivo{ display:flex; gap:16px; align-items:center; flex-wrap:wrap; }

.dia-cel{ font-weight:600; cursor:default; color:#706556; min-width:24px; }
.dia-cel.dom{ background:#F5F2EE !important; }
.dia-cel.editavel{ cursor:pointer; }
.dia-cel.editavel:hover{ filter:brightness(.92); outline:2px solid var(--verde); outline-offset:-2px; }

.linha-total td{
  background:#22373D; color:#fff; font-weight:700; font-size:10.5px; height:24px;
  border-right-color:#3A4F56;
}
.linha-total .hcol-cod, .linha-total .hcol-nome, .linha-total .hcol-func{ background:#22373D !important; color:#fff; }
.linha-total .hcol-nome span{ letter-spacing:.04em; }

/* lançamento em lote */
.lote-colabs{
  max-height:200px; overflow-y:auto; border:1px solid var(--line);
  border-radius:6px; padding:8px 10px; margin-top:6px; background:var(--paper);
}
.lote-grupo{ font-size:11px; font-weight:700; color:#706556; margin:8px 0 3px; text-transform:uppercase; }
.lote-grupo:first-child{ margin-top:0; }
.lote-colab{ display:flex; margin:2px 0; font-size:12.5px; }

/* faixa de empresa na lista de colaboradores */
.linha-grupo-empresa td{
  background:#706556 !important; color:#fff; font-family:var(--f-cond);
  font-weight:600; font-size:12px; letter-spacing:.03em; padding:6px 12px;
}

/* ============================================================
   RELATÓRIOS — hub por categorias
   ============================================================ */
.rel-categoria{
  font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em;
  color:var(--ink-2); margin:20px 0 10px; padding-bottom:5px;
  border-bottom:2px solid var(--verde-linha);
}
.rel-cards{ display:flex; gap:12px; flex-wrap:wrap; }
.rel-card{
  background:var(--card); border:1px solid var(--line); border-radius:10px;
  box-shadow:var(--sombra); padding:16px 18px; width:230px;
  display:flex; flex-direction:column; gap:12px;
}
.rel-card h3{ margin:0; font-size:14.5px; font-weight:600; }
.rel-card .btn-primario{ align-self:flex-start; padding:8px 16px; }
.rel-card-dev{ border-style:dashed; background:var(--paper); box-shadow:none; }
.rel-card-dev h3{ color:var(--ink-3); }

.seletor-codigo{
  position:absolute; z-index:120; background:#fff; border:1px solid var(--line-2);
  border-radius:8px; box-shadow:var(--sombra); padding:6px; display:flex; gap:4px;
}
.sc-op{
  width:30px; height:26px; border:1px solid rgba(38,38,31,.15); border-radius:5px;
  font-weight:700; font-size:10.5px; background:#fff;
}
.sc-op:hover{ transform:scale(1.1); }
.sc-op.atual{ outline:2px solid var(--ink); }
.sc-limpar{ color:var(--ink-3); font-size:14px; }

/* ============================================================
   RELATÓRIO SEMANAL — assistente + documento
   ============================================================ */
.assistente{ max-width:720px; padding:20px 22px; }
.assistente-titulo{ font-size:15px; font-weight:700; margin:0 0 14px; }
.campo input[type="file"]{ padding:8px; background:var(--paper); }
.previa-barra{
  display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:14px;
  position:sticky; top:calc(var(--altura-cabecalho) + 8px); z-index:30;
  background:var(--paper); padding:8px 0;
}
/* Documento oficial: renderizado num iframe com relatorios/oficial.css
   (CSS VERBATIM do HTML aprovado). O shell NÃO estiliza o documento —
   aqui só o invólucro do iframe. */
.doc-iframe{
  width:100%; min-height:calc(100vh - 230px); border:1px solid var(--line);
  border-radius:10px; background:#dbe2ea; display:block;
}
/* ============================================================
   CALENDÁRIO DA OBRA (Planejamento · Sprint 10.3)
   Visão anual: círculo escuro = dia útil (referência aprovada)
   ============================================================ */
.cal-nav{ display:flex; align-items:center; gap:4px; }
.cal-ano-atual{ font-size:16px; font-weight:700; min-width:74px; }
/* Calendário da obra (0022: clicável — escuro/preenchido = trabalho,
   claro/apagado = sem trabalho; anel olive = ajuste manual). Tokens
   do tema → funciona em dark e light. */
.cal-legenda{ display:flex; gap:18px; align-items:center; flex-wrap:wrap; font-size:12.5px; color:var(--text-2); margin:2px 0 14px; }
.cal-dia-mini{ display:inline-block; width:14px; height:14px; border-radius:50%;
  background:var(--track); border:1px solid var(--border-2); vertical-align:-2px; margin-right:5px; }
.cal-dia-mini.util{ background:var(--text-1); border-color:var(--text-1); }
.cal-dia-mini.feriado{ background:rgba(214,106,78,.16); border-color:var(--danger); }
.cal-dia-mini.excecao{ background:var(--track); border-color:var(--acc-olive); box-shadow:0 0 0 1.5px var(--acc-olive); }
.cal-ano-grade{ display:grid; grid-template-columns:repeat(4, 1fr); gap:18px 22px; }
.cal-mes h3{ font-size:13.5px; font-weight:700; text-align:center; margin:0 0 8px; color:var(--text-1); }
.cal-semana, .cal-dias{ display:grid; grid-template-columns:repeat(7, 1fr); gap:3px; justify-items:center; }
.cal-semana span{ font-size:10px; color:var(--text-3); font-weight:600; }
.cal-dias{ margin-top:4px; }
.cal-dia{ width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:11px; color:var(--text-3); transition:transform .1s, box-shadow .1s; }
.cal-dia.util{ background:var(--text-1); color:var(--canvas); font-weight:600; }
.cal-dia.feriado{ background:rgba(214,106,78,.14); color:var(--danger); font-weight:700; box-shadow:inset 0 0 0 1.5px var(--danger); }
.cal-dia.excecao{ box-shadow:0 0 0 2px var(--acc-olive); }
.cal-dia.feriado.excecao{ box-shadow:inset 0 0 0 1.5px var(--danger), 0 0 0 2px var(--acc-olive); }
.cal-dia.clicavel{ cursor:pointer; }
.cal-dia.clicavel:hover{ transform:scale(1.15); box-shadow:0 0 0 2px var(--border-3); }
.cal-dia.excecao.clicavel:hover{ box-shadow:0 0 0 2px var(--acc-olive); }
.cal-lista-anos{ display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; }
.cal-ano-sel{ outline:2px solid var(--verde); font-weight:700; }
.cal-dias-semana{ display:grid; grid-template-columns:repeat(4, 1fr); gap:6px 14px; margin-bottom:8px; }
/* Central de Fontes de Dados (10.5) */
.grupos-importacao{ display:grid; grid-template-columns:repeat(auto-fill, minmax(340px, 1fr)); gap:14px; }
.grupo-imp{ padding:14px 16px; }
.grupo-imp-cab{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.grupo-imp-cab h3{ font-size:14.5px; margin:0; }
.grupo-imp-tipos{ display:flex; flex-wrap:wrap; gap:6px; }
.btn-mini-primario{ padding:5px 12px; font-size:12px; }
/* Dashboard Executivo (10.6): seções que contam a história */
.dash-secao{ margin:30px 0 14px; padding-left:12px; border-left:3px solid var(--acc-olive); }
.dash-secao h2{ font-family:var(--ff-display); font-weight:600; font-size:18px; margin:0; color:var(--text-1); }
.dash-secao p{ font-size:12.5px; color:var(--text-3); margin:3px 0 0; }
.fonte-badge{ font-size:11px; color:var(--ink-3); margin:8px 0 0; border-top:1px dashed var(--line); padding-top:6px; }
.alerta-meta{ display:block; margin-top:3px; color:var(--ink-3); }
.pri-alta{ color:#B4483C; text-transform:uppercase; } .pri-media{ color:#C87F0A; text-transform:uppercase; } .pri-baixa{ color:#1F4E79; text-transform:uppercase; }
@media (max-width: 1100px){ .cal-ano-grade{ grid-template-columns:repeat(3, 1fr); } }

/* Menu de contexto do Cronograma (clique-direito na barra) */
.cro-ctx-menu{
  position:fixed; z-index:9999; min-width:210px; padding:5px;
  background:var(--surface-2); border:1px solid var(--border-2);
  border-radius:var(--radius-md); box-shadow:var(--shadow-lg);
  font-family:var(--ff-ui); animation:cro-ctx-in .09s var(--ease);
}
@keyframes cro-ctx-in{ from{ opacity:0; transform:translateY(-4px) scale(.98); } to{ opacity:1; transform:none; } }
.cro-ctx-item{
  display:flex; align-items:center; gap:10px; width:100%;
  padding:8px 12px; border:none; background:none; cursor:pointer;
  font:500 13px var(--ff-ui); color:var(--text-1); text-align:left;
  border-radius:8px; transition:background .12s;
}
.cro-ctx-item:hover{ background:var(--surface-3); }
.cro-ctx-item.perigo{ color:var(--danger); }
.cro-ctx-item.perigo:hover{ background:color-mix(in srgb, var(--danger) 14%, transparent); }
.cro-ctx-item:disabled{ color:var(--text-4); cursor:default; }
.cro-ctx-item:disabled:hover{ background:none; }
.cro-ctx-ico{ width:18px; text-align:center; font-size:14px; opacity:.85; flex:none; }
.cro-ctx-sep{ height:1px; margin:5px 8px; background:var(--border); }
.cro-ctx-sub{ margin-left:auto; opacity:.6; font-size:12px; }

/* Barra de ações da seleção múltipla do Cronograma */
.cro-lote-bar{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:9px 14px; background:var(--surface-3); border:1px solid var(--border-2);
  border-radius:var(--radius-md); font-size:13px; color:var(--text-2);
}
.cro-lote-bar strong{ color:var(--text-1); }
.cro-lote-bar .btn-fantasma{ padding:6px 12px; font-size:12.5px; }

/* FAB "Funcionalidades" do Cronograma (padrão Prevision) */
.cro-fab{
  position:fixed; top:74px; right:26px; z-index:45;
  width:52px; height:52px; border-radius:50%; border:none; cursor:pointer;
  background:var(--acc-olive); color:#fff;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 26px -8px rgba(0,0,0,.45);
  transition:transform .14s ease, filter .14s ease, box-shadow .14s ease;
}
.cro-fab:hover{ transform:translateY(-1px); filter:brightness(1.06); box-shadow:0 15px 32px -8px rgba(0,0,0,.5); }
.cro-fab:active{ transform:translateY(0); }
.cro-fab svg{ width:24px; height:24px; }

/* drawer Funcionalidades */
/* medidas EXATAS do Prevision (Vuetify): item 48px · texto 16px · ícone 24px ·
   rótulo 14px · padding 16px — aplicadas com a fonte/tema do Sync. */
.cro-func-topo{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin:-2px 0 4px; }
.cro-func-topo h2{ margin:0; font-size:20px; }
.cro-func-lista{ display:flex; flex-direction:column; gap:1px; }
.cro-func-grupo{ font-size:14px; text-transform:none; letter-spacing:.1px; color:var(--text-3); font-weight:500; margin:14px 0 2px; padding:0 16px; }
.cro-func-item{
  display:flex; align-items:center; gap:16px; width:100%; text-align:left;
  background:none; border:none; cursor:pointer; min-height:48px; padding:0 16px; border-radius:10px;
  color:var(--text-1); font-size:16px; font-family:inherit; transition:background .12s ease;
}
.cro-func-item:hover{ background:var(--surface-3); }
.cro-func-ico{ display:flex; align-items:center; justify-content:center; width:24px; color:var(--text-2); flex-shrink:0; }
.cro-func-ico svg{ width:24px; height:24px; }
.cro-func-txt{ flex:1; min-width:0; display:flex; flex-direction:column; line-height:1.3; }
.cro-func-nome{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cro-func-txt small{ color:var(--text-3); font-size:12px; margin-top:1px; }
.cro-func-seta{ color:var(--text-3); font-size:20px; line-height:1; }
.cro-func-breve{ font-size:10px; color:var(--text-3); background:var(--surface-3); border:1px solid var(--border); padding:2px 8px; border-radius:20px; white-space:nowrap; }
.cro-func-item.breve{ opacity:.66; }
.cro-func-item.breve:hover{ opacity:1; }

/* Modo TELA CHEIA (padrão Prevision): o Gantt cobre o viewport inteiro.
   z-index 70 = acima do header (40) e da sidebar, abaixo do modal (80),
   pra o drawer de Funcionalidades ainda abrir por cima. */
.grafico-card.cro-cheia{ position:fixed; inset:0; z-index:70; margin:0 !important; background:var(--panel-solid); }
.grafico-card.cro-cheia .cro-frame{ height:100% !important; }
/* #7 — full-bleed: o card do Cronograma anula o padding lateral do .shell-conteudo
   (timeline 100% da largura, como no Prevision). Escopo próprio (não afeta os demais
   .grafico-card). Em tela cheia, .cro-cheia (margin:0 !important acima) anula isto. */
.grafico-card.cro-bleed{ margin-left:-28px; margin-right:-28px; margin-bottom:-44px; }
@media (max-width:760px){ .grafico-card.cro-bleed{ margin-left:-14px; margin-right:-14px; margin-bottom:-32px; } }
/* oculta SÓ a barra de rolagem HORIZONTAL da timeline — a rolagem (roda/trackpad)
   continua funcionando; a barra VERTICAL permanece visível. (pedido do usuário) */
#cro-scroll::-webkit-scrollbar{ height:0; width:10px; }
#cro-scroll::-webkit-scrollbar-thumb{ background:var(--border-2); border-radius:6px; }
.cro-cheia-tools{ position:absolute; top:12px; right:16px; z-index:5; display:flex; gap:9px; }
.cro-fab-float{
  width:40px; height:40px; border-radius:50%; border:none; cursor:pointer;
  display:grid; place-items:center; background:var(--verde); color:#fff;
  box-shadow:0 8px 20px -6px rgba(0,0,0,.42); transition:filter .14s ease;
}
.cro-fab-float.sair{ background:var(--surface-3); color:var(--text-1); border:1px solid var(--border-2); }
.cro-fab-float:hover{ filter:brightness(1.07); }

/* painel Atrasos e adiantamentos */
.cro-atr-chips{ display:flex; gap:9px; margin:2px 0 4px; }
.cro-atr-chip{ font-size:12.5px; color:var(--text-2); background:var(--surface-3); border:1px solid var(--border); border-radius:20px; padding:4px 12px; }
.cro-atr-chip b{ color:var(--text-1); font-weight:800; }
.cro-atr-chip.atras b{ color:var(--danger); }
.cro-atr-chip.adianta b{ color:var(--ok); }
.cro-atr-corpo{ max-height:66vh; overflow:auto; }
.cro-atr-secao{ margin-top:14px; }

/* Editor do Pacote — template de serviços (RFC-006 · E5.3a) */
.pked{ display:flex; flex-direction:column; height:100%; }
.pked-topo{ display:flex; align-items:center; gap:12px; padding:2px 2px 14px; border-bottom:1px solid var(--line,var(--border)); }
.pked-pac{ display:flex; align-items:center; gap:10px; flex:1; min-width:0; }
.pked-cor{ width:16px; height:16px; border-radius:4px; flex:none; border:1px solid var(--line,var(--border)); }
.pked-pac-nome{ font-weight:700; font-size:15px; color:var(--text-1,var(--ink)); }
.pked-pac-sub{ font-size:11.5px; color:var(--text-3,var(--ink-3)); margin-top:2px; }
.pked-banner:empty{ display:none; }
.pked-banner{ margin:10px 0 0; }
.pked-banner>div{ background:rgba(192,57,43,.12); color:var(--danger); border:1px solid rgba(192,57,43,.35); border-radius:8px; padding:8px 12px; font-size:12.5px; }
.pked-lista{ flex:1; min-height:0; overflow-y:auto; margin:12px 0; display:flex; flex-direction:column; gap:8px; padding-right:2px; }
.pked-card{ border:1px solid var(--line,var(--border)); border-radius:10px; background:var(--panel,#fff); transition:border-color .15s; }
.pked-card.ruim{ border-color:rgba(192,57,43,.6); }
.pked-cab{ display:flex; align-items:center; gap:10px; padding:10px 12px; cursor:pointer; }
.pked-ord{ width:24px; height:24px; border-radius:50%; background:var(--verde-tint,rgba(95,125,58,.14)); color:var(--verde,#5f7d3a); font-weight:700; font-size:12px; display:grid; place-items:center; flex:none; }
.pked-nome{ font-weight:600; font-size:13.5px; color:var(--text-1,var(--ink)); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pked-nome i{ color:var(--text-3,var(--ink-3)); font-weight:400; }
.pked-meta{ font-size:11.5px; color:var(--text-3,var(--ink-3)); white-space:nowrap; }
.pked-acoes{ display:flex; gap:3px; flex:none; }
.pked-mini{ width:26px; height:26px; border:1px solid var(--line,var(--border)); background:transparent; border-radius:7px; cursor:pointer; font-size:12px; color:var(--text-2,var(--ink)); display:grid; place-items:center; }
.pked-mini:hover:not(:disabled){ background:var(--track,rgba(0,0,0,.05)); }
.pked-mini:disabled{ opacity:.35; cursor:default; }
.pked-mini.perigo:hover{ color:var(--danger); border-color:var(--danger); }
.pked-erro{ padding:0 12px 8px 46px; font-size:11.5px; color:var(--danger); }
.pked-corpo{ padding:2px 12px 14px; border-top:1px dashed var(--line,var(--border)); }
.pked-lin{ display:flex; gap:10px; margin:12px 0; flex-wrap:wrap; }
.pked-lbl{ display:flex; flex-direction:column; gap:4px; font-size:11.5px; color:var(--text-2,var(--ink)); font-weight:600; min-width:90px; }
.pked-in{ padding:8px 10px; border:1px solid var(--line,var(--border)); border-radius:8px; background:var(--campo-bg,var(--panel)); font-size:13px; font-family:inherit; }
.pked-deps{ background:var(--track,rgba(0,0,0,.03)); border-radius:8px; padding:10px 12px; }
.pked-deps-tit{ font-size:11px; text-transform:uppercase; letter-spacing:.4px; color:var(--text-3,var(--ink-3)); margin-bottom:6px; }
.pked-dep{ display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:12.5px; color:var(--text-1,var(--ink)); padding:4px 0; }
.pked-vazio{ font-size:12px; color:var(--text-3,var(--ink-3)); }
.pked-adddep{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:8px; font-size:12.5px; color:var(--text-2,var(--ink)); }
.pked-num{ width:56px; padding:6px 8px; border:1px solid var(--line,var(--border)); border-radius:7px; background:var(--campo-bg,var(--panel)); font-size:12.5px; font-family:inherit; }
.pked-sel{ padding:6px 8px; border:1px solid var(--line,var(--border)); border-radius:7px; background:var(--campo-bg,var(--panel)); font-size:12.5px; font-family:inherit; }
.pked-add{ width:28px; height:28px; border:none; border-radius:7px; background:var(--verde,#5f7d3a); color:#fff; cursor:pointer; font-size:14px; flex:none; }
.pked-addserv{ border:1px dashed var(--line,var(--border)); background:transparent; border-radius:9px; padding:11px; cursor:pointer; color:var(--text-2,var(--ink)); font-size:13px; font-weight:600; font-family:inherit; }
.pked-addserv:hover{ border-color:var(--verde,#5f7d3a); color:var(--verde,#5f7d3a); }
.pked-rodape{ display:flex; justify-content:flex-end; gap:10px; padding-top:14px; border-top:1px solid var(--line,var(--border)); margin-top:8px; }
/* Lançar pacote num lote (E5.3b) — prévia read-only do que será materializado */
.lpl-previa-tit{ font-size:11px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3,var(--ink-3)); font-weight:700; margin:6px 0 6px; }
.lpl-previa{ border:1px solid var(--line,var(--border)); border-radius:10px; background:var(--track,rgba(0,0,0,.03)); padding:4px; max-height:40vh; overflow-y:auto; }
.lpl-vazio{ padding:18px 14px; text-align:center; font-size:12.5px; color:var(--text-3,var(--ink-3)); }
.lpl-cab{ font-size:11.5px; font-weight:700; color:var(--text-2,var(--ink)); padding:8px 10px 4px; }
.lpl-erro{ margin:2px 8px 6px; background:rgba(192,57,43,.12); color:var(--danger); border:1px solid rgba(192,57,43,.35); border-radius:8px; padding:7px 10px; font-size:12px; }
.lpl-link{ border:none; background:none; color:var(--verde,#5f7d3a); font-weight:700; cursor:pointer; font-size:inherit; font-family:inherit; padding:0; text-decoration:underline; }
.lpl-lista{ display:flex; flex-direction:column; gap:2px; padding:2px; }
.lpl-serv{ display:flex; align-items:flex-start; gap:9px; padding:8px 10px; border-radius:8px; background:var(--panel,#fff); }
.lpl-ord{ width:22px; height:22px; border-radius:50%; background:var(--verde-tint,rgba(95,125,58,.14)); color:var(--verde,#5f7d3a); font-weight:700; font-size:11px; display:grid; place-items:center; flex:none; margin-top:1px; }
.lpl-serv-txt{ min-width:0; flex:1; }
.lpl-serv-txt b{ display:block; font-size:13px; font-weight:600; color:var(--text-1,var(--ink)); }
.lpl-serv-txt small{ display:block; font-size:11.5px; color:var(--text-3,var(--ink-3)); margin-top:1px; }
.cro-atr-tit{ font-size:11px; text-transform:uppercase; letter-spacing:.6px; font-weight:700; margin:0 0 6px; }
.cro-atr-tit.atras{ color:var(--danger); }
.cro-atr-tit.adianta{ color:var(--ok); }
.cro-atr-vazio{ font-size:12.5px; color:var(--text-3); margin:2px 0 6px; }
.cro-atr-tab{ font-size:12.5px !important; width:100%; }
.cro-atr-tab th{ font-size:10px; text-transform:uppercase; letter-spacing:.4px; color:var(--text-3); font-weight:700; padding:4px 8px; }
.cro-atr-tab td{ padding:7px 8px; vertical-align:top; }
.cro-atr-nome{ font-weight:600; color:var(--text-1); line-height:1.2; max-width:230px; }
.cro-atr-nome small{ display:block; font-weight:400; color:var(--text-3); font-size:11px; margin-top:1px; }
.cro-atr-pct{ color:var(--text-2); white-space:nowrap; }
.cro-atr-dias{ text-align:right; font-weight:700; white-space:nowrap; }

/* drawer Lotes (accordion de grupos, padrão Prevision) */
.lt-topo{ display:flex; gap:10px; align-items:center; margin:16px 0 10px; }
.lt-busca{ flex:1; display:flex; align-items:center; gap:9px; border-bottom:1px solid var(--border); padding:0 2px; }
.lt-busca svg{ width:16px; height:16px; color:var(--text-3); flex-shrink:0; }
.lt-busca input{ flex:1; background:none; border:none; color:var(--text-1); padding:10px 0; font-size:13px; outline:none; }
.lt-addlote{ display:flex; gap:8px; margin-bottom:8px; }
.lt-addlote input{ flex:1; }
.lt-lista{ max-height:58vh; overflow:auto; display:flex; flex-direction:column; gap:1px; }
.lt-grupo-head{ position:relative; display:flex; align-items:center; gap:15px; padding:12px 14px; cursor:pointer; border-bottom:1px solid var(--border); }
.lt-grupo-head:hover{ background:var(--surface-3); }
.lt-caret{ width:17px; height:17px; color:var(--text-3); transition:transform .15s ease; flex-shrink:0; opacity:.7; }
.lt-grupo.aberto .lt-caret{ transform:rotate(180deg); }
.lt-grid{ width:19px; height:19px; color:var(--text-3); flex-shrink:0; opacity:.8; }
.lt-grupo-nome{ flex:1; min-width:0; font-size:12.5px; font-weight:600; color:var(--text-1); text-transform:uppercase; letter-spacing:.04em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lt-grupo-n{ font-size:11px; color:var(--text-3); background:var(--surface-3); border-radius:20px; padding:1px 9px; }
/* ações do grupo: FORA do fluxo (sobrepõem no hover) p/ não apertar o nome */
.lt-grp-acoes{ position:absolute; right:36px; top:0; bottom:0; display:flex; align-items:center; gap:3px; padding-left:10px; background:var(--surface-3); opacity:0; transition:opacity .12s ease; }
.lt-grupo-head:hover .lt-grp-acoes{ opacity:1; }
.lt-caret{ margin-left:2px; }
.lt-grupo-corpo{ padding:2px 0 8px; display:flex; flex-direction:column; }
.lt-lote{ position:relative; display:flex; align-items:center; gap:12px; padding:8px 14px 8px 30px; }
.lt-lote:hover{ background:var(--surface-3); }
.lt-lote-av{ width:30px; height:30px; border-radius:50%; background:var(--surface-3); border:1px solid var(--border); flex-shrink:0; }
.lt-lote-info{ flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; }
.lt-lote-nome{ font-size:12.5px; font-weight:600; color:var(--text-1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lt-lote-area{ font-size:11px; color:var(--text-3); }
.lt-lote-acoes{ position:absolute; right:14px; top:0; bottom:0; display:flex; align-items:center; gap:3px; padding-left:10px; background:var(--surface-3); opacity:0; transition:opacity .12s ease; }
.lt-lote:hover .lt-lote-acoes{ opacity:1; }
/* Fase 2: Reordenar lotes (arrastar) */
.rl-lista{ display:flex; flex-direction:column; gap:4px; margin:6px 0 4px; }
.rl-item{ display:flex; align-items:center; gap:12px; padding:10px; border:1px solid var(--border); border-radius:8px; background:var(--surface-3); cursor:grab; user-select:none; }
.rl-item.arrastando{ opacity:.4; }
.rl-drag{ color:var(--text-3); font-size:15px; line-height:1; cursor:grab; }
.rl-nome{ flex:1; font-size:12.5px; font-weight:600; color:var(--text-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lt-vazio{ font-size:12px; color:var(--text-3); padding:2px 0 2px 30px; margin:0; }

/* Fase 5: Excluir em massa (lista com checkbox) */
.rl-lista .ex-item{ display:flex; align-items:center; gap:10px; padding:9px 10px; border:1px solid var(--border); border-radius:8px; background:var(--surface-3); cursor:pointer; user-select:none; }
.ex-item input[type=checkbox]{ width:auto; margin:0; flex:0 0 auto; cursor:pointer; }
.ex-item .rl-nome{ cursor:pointer; }

/* Fase 4: Lotes simultâneos (preview / dry-run) */
.rp-lbl{ display:block; font-size:11.5px; font-weight:600; color:var(--text-2); margin:0 0 4px; }
.rp-sub{ font-weight:400; color:var(--text-3); font-size:10.5px; }
.rp-tag{ display:inline-block; font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--accent,#8a7); background:var(--surface-1); border:1px solid var(--line); border-radius:5px; padding:1px 5px; margin-left:4px; vertical-align:middle; }
.rp-kv{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; font-size:12px; color:var(--text-2); padding:2px 0; }
.rp-kv b{ color:var(--text-1); font-variant-numeric:tabular-nums; }
/* ── Módulo Medições (RFC-009) ── */
.med-wrap{ display:grid; grid-template-columns:264px 1fr; gap:14px; align-items:start; }
@media(max-width:820px){ .med-wrap{ grid-template-columns:1fr; } }
.med-hist{ background:var(--surface-2); border:1px solid var(--line); border-radius:12px; overflow:hidden; display:flex; flex-direction:column; max-height:calc(100vh - 210px); }
.med-hist-topo{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; border-bottom:1px solid var(--line); }
.med-hist-topo strong{ font-size:13px; color:var(--text-1); }
.med-criar{ flex:0 0 auto; display:inline-flex; align-items:center; gap:5px; padding:6px 11px; border-radius:8px; cursor:pointer; border:1px solid transparent; color:#fff; font-size:12px; font-weight:600; white-space:nowrap; background:var(--verde); transition:filter .13s ease; }
.med-criar:hover{ filter:brightness(1.07); }
.med-criar:active{ filter:brightness(.96); }
.med-criar-ico{ font-weight:800; font-size:13px; line-height:1; }
.med-lista{ overflow:auto; padding:8px; display:flex; flex-direction:column; gap:6px; }
.med-vazio{ font-size:12px; color:var(--text-3); text-align:center; padding:24px 12px; margin:0; }
.med-item{ display:flex; align-items:stretch; background:var(--surface); border:1px solid var(--line); border-radius:9px; overflow:hidden; }
.med-item:hover{ border-color:var(--line-2); }
.med-item.sel{ border-color:var(--accent,#8a7); box-shadow:0 0 0 1px var(--accent,#8a7) inset; }
.med-item-main{ flex:1; min-width:0; text-align:left; background:none; border:none; padding:9px 11px; cursor:pointer; display:flex; flex-direction:column; gap:3px; }
.med-item-menu{ flex:0 0 auto; width:30px; border:none; border-left:1px solid var(--line); background:none; color:var(--text-3); cursor:pointer; font-size:17px; line-height:1; }
.med-item-menu:hover{ background:var(--surface-3); color:var(--text-1); }
.med-menu{ position:fixed; z-index:1200; background:var(--surface); border:1px solid var(--line-2); border-radius:9px; box-shadow:0 10px 28px rgba(0,0,0,.35); padding:5px; display:flex; flex-direction:column; min-width:186px; }
.med-menu button{ text-align:left; background:none; border:none; padding:8px 11px; border-radius:6px; font-size:12.5px; color:var(--text-1); cursor:pointer; }
.med-menu button:hover{ background:var(--surface-3); }
.med-menu button.perigo{ color:var(--danger,#b4552f); }
.med-item-l1{ display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:13px; font-weight:600; color:var(--text-1); font-variant-numeric:tabular-nums; }
.med-item-l2{ font-size:11px; color:var(--text-3); }
.med-badge{ font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; padding:1px 7px; border-radius:999px; border:1px solid transparent; }
.med-badge.aberta{ color:var(--aviso,#a8781f); background:color-mix(in srgb,var(--aviso,#a8781f) 14%,transparent); }
.med-badge.salva{ color:var(--verde,#4b7a3f); background:color-mix(in srgb,var(--verde,#4b7a3f) 14%,transparent); }
.med-painel{ background:var(--surface-2); border:1px solid var(--line); border-radius:12px; overflow:hidden; display:flex; flex-direction:column; min-height:calc(100vh - 210px); max-height:calc(100vh - 210px); }
.med-topo{ display:flex; align-items:center; gap:10px; padding:14px 20px; border-bottom:1px solid var(--line); flex:0 0 auto; }
.med-topo h2{ font-size:15px; margin:0; color:var(--text-1); display:flex; align-items:center; gap:10px; }
.med-centro{ flex:1 1 auto; overflow:auto; display:flex; align-items:center; justify-content:center; padding:20px; }
.med-cal{ width:min(360px,100%); }
.med-cal-nav{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:10px; font-size:14px; color:var(--text-1); }
.med-cal-sem{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; font-size:10px; color:var(--text-3); text-align:center; margin-bottom:4px; }
.med-cal-grade{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.med-cal-vazio{ aspect-ratio:1; }
.med-cal-dia{ aspect-ratio:1; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--text-1); font-size:12.5px; cursor:pointer; font-variant-numeric:tabular-nums; }
.med-cal-dia:hover:not([disabled]){ border-color:var(--accent,#8a7); background:var(--surface-3); }
.med-cal-dia.hoje{ border-color:var(--accent,#8a7); font-weight:700; }
.med-cal-dia.medido{ opacity:.4; cursor:not-allowed; text-decoration:line-through; }
.med-grade-wrap{ flex:1 1 auto; overflow:auto; }
.med-grade{ width:100%; font-size:12.5px; }
.med-grade th, .med-grade td{ padding:6px 9px; }
.med-grade th{ position:sticky; top:0; background:var(--surface-2); z-index:1; white-space:nowrap; }
.med-grade .med-num{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.med-grade tr.med-lote td{ background:var(--surface-3); font-weight:700; color:var(--text-1); font-size:12.5px; text-transform:uppercase; letter-spacing:.3px; }
.med-grade tr.med-pac td{ font-weight:600; color:var(--text-2); font-size:12px; padding-left:22px; }
.med-grade tr.med-atv td{ color:var(--text-2); }
.med-grade td.med-atv-nome{ padding-left:34px; }
.med-inp{ width:58px; text-align:right; padding:4px 6px; font-size:12px; border:1px solid var(--line-2); border-radius:6px; background:var(--surface); color:var(--text-1); font-variant-numeric:tabular-nums; }
.med-av{ color:var(--text-3); font-size:11.5px; } .med-av.pos{ color:var(--verde,#4b7a3f); } .med-av.neg{ color:var(--danger,#b4552f); }
.med-rodape{ flex:0 0 auto; padding:9px 20px; border-top:1px solid var(--line); display:flex; align-items:center; gap:10px; }
/* barra: tabs Atuais/Futuras + busca */
.med-barra{ display:flex; align-items:center; gap:14px; padding:8px 20px; border-bottom:1px solid var(--line); flex:0 0 auto; }
.med-tabs{ display:flex; gap:2px; }
.med-tab{ background:none; border:none; border-bottom:2px solid transparent; padding:8px 12px; font-size:12.5px; color:var(--text-3); cursor:pointer; display:flex; align-items:center; gap:6px; }
.med-tab.on{ color:var(--text-1); border-bottom-color:var(--accent,#8a7); font-weight:600; }
.med-tab span{ font-size:10px; background:var(--surface-3); border-radius:999px; padding:1px 7px; color:var(--text-2); font-variant-numeric:tabular-nums; }
.med-busca{ margin-left:auto; width:min(280px,42%); padding:6px 10px; font-size:12.5px; border:1px solid var(--line-2); border-radius:8px; background:var(--surface); color:var(--text-1); }
.med-grade tr.med-lote{ cursor:pointer; }
.med-grade tr.med-lote:hover td{ filter:brightness(1.06); }
.med-lote-n{ font-size:10px; color:var(--text-3); font-weight:400; background:var(--surface-2); border-radius:999px; padding:1px 7px; margin-left:6px; }
.med-lote-cvr{ color:var(--text-3); text-align:center !important; }
.med-data{ width:116px; padding:3px 6px; }
.med-info{ width:100%; min-width:84px; text-align:left; padding:4px 8px; }
.med-porpag{ padding:3px 8px; font-size:12px; border:1px solid var(--line-2); border-radius:6px; background:var(--surface); color:var(--text-1); }
/* faixa de KPIs + Curva S ao vivo */
.med-kpis{ display:flex; align-items:center; gap:16px; padding:12px 20px; border-bottom:1px solid var(--line); flex:0 0 auto; flex-wrap:wrap; }
.med-kpis-nums{ display:flex; gap:9px; flex:1 1 auto; flex-wrap:wrap; }
.med-kpi{ display:flex; flex-direction:column; gap:2px; min-width:76px; padding:6px 11px; border:1px solid var(--line); border-radius:9px; background:var(--surface); }
.med-kpi-v{ font-size:15px; font-weight:700; color:var(--text-1); font-variant-numeric:tabular-nums; line-height:1.1; }
.med-kpi-r{ font-size:9.5px; color:var(--text-3); text-transform:uppercase; letter-spacing:.3px; }
.med-kpi.base .med-kpi-v{ color:var(--acc-clay,#b87333); }
.med-kpi.prev .med-kpi-v{ color:var(--acc-olive,#8a9a4e); }
.med-kpi.real .med-kpi-v{ color:var(--info,#4f726b); }
.med-kpi.ok .med-kpi-v{ color:var(--verde,#6e7d34); }
.med-kpi.warn .med-kpi-v{ color:var(--danger,#c0492c); }
.med-kpis-curva{ flex:0 0 auto; width:300px; max-width:44%; }
.med-curva-svg{ width:100%; height:82px; display:block; }
.med-curva-leg{ display:flex; gap:12px; font-size:10px; color:var(--text-3); margin-top:2px; }
.med-curva-leg span::before{ content:""; display:inline-block; width:10px; height:2px; margin-right:4px; vertical-align:middle; }
.med-curva-leg .l-base::before{ background:var(--acc-clay,#b87333); }
.med-curva-leg .l-prev::before{ background:var(--acc-olive,#8a9a4e); }
.med-curva-leg .l-real::before{ background:var(--info,#4f726b); border-radius:50%; width:6px; height:6px; }
/* toggle Grade | Infográficos */
.med-vista{ display:flex; gap:2px; background:var(--surface-3); border-radius:8px; padding:2px; flex:0 0 auto; }
.med-vista-b{ background:none; border:none; padding:6px 12px; border-radius:6px; font-size:12px; color:var(--text-3); cursor:pointer; white-space:nowrap; }
.med-vista-b.on{ background:var(--surface); color:var(--text-1); font-weight:600; box-shadow:0 1px 3px rgba(0,0,0,.15); }
/* view Infográficos */
.mi-scroll{ flex:1 1 auto; min-height:0; overflow:auto; padding:18px 20px; display:flex; flex-direction:column; gap:16px; }
.mi-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(148px,1fr)); gap:12px; }
.mi-kpi{ display:flex; flex-direction:column; gap:3px; padding:14px 16px; border:1px solid var(--line); border-radius:12px; background:var(--surface); }
.mi-kpi-r{ font-size:10.5px; color:var(--text-3); text-transform:uppercase; letter-spacing:.4px; }
.mi-kpi-v{ font-size:25px; font-weight:800; color:var(--text-1); font-variant-numeric:tabular-nums; line-height:1.05; }
.mi-kpi-s{ font-size:11px; color:var(--text-3); }
.mi-kpi.base .mi-kpi-v{ color:var(--acc-clay,#b87333); }
.mi-kpi.prev .mi-kpi-v{ color:var(--acc-olive,#8a9a4e); }
.mi-kpi.real .mi-kpi-v{ color:var(--info,#4f726b); }
.mi-kpi.ok .mi-kpi-v{ color:var(--verde,#6e7d34); }
.mi-kpi.warn .mi-kpi-v{ color:var(--danger,#c0492c); }
.mi-card{ border:1px solid var(--line); border-radius:12px; background:var(--surface); padding:16px 18px; }
.mi-card h3{ font-size:13px; margin:0 0 12px; color:var(--text-2); font-weight:600; }
.mi-curva{ width:100%; height:auto; max-height:250px; display:block; }
.mi-lotes{ display:flex; flex-direction:column; gap:13px; }
.mi-lote-top{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:5px; }
.mi-lote-nome{ font-size:12.5px; color:var(--text-1); font-weight:500; }
.mi-lote-pct{ font-size:13px; font-weight:700; font-variant-numeric:tabular-nums; }
.mi-lote-pct.ok{ color:var(--verde,#6e7d34); } .mi-lote-pct.warn{ color:var(--danger,#c0492c); }
.mi-bar{ position:relative; height:9px; border-radius:999px; background:var(--surface-3); }
.mi-bar > i{ display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,var(--acc-olive-soft,#8a9a4e),var(--acc-olive,#a6b85e)); }
.mi-bar > b{ position:absolute; top:-3px; bottom:-3px; width:2px; background:var(--acc-clay,#b87333); border-radius:1px; }

/* card LARGO de 2 colunas (config | prévia) com cabeçalho e rodapé fixos */
.modal-caixa.rp-card{ width:min(920px,96vw)!important; max-width:96vw!important; max-height:88vh!important; padding:0!important; overflow:hidden!important; display:flex; flex-direction:column; }
.rp-head{ flex:0 0 auto; display:flex; align-items:center; gap:10px; padding:18px 22px 14px; border-bottom:1px solid var(--line); }
.rp-corpo{ flex:1 1 auto; min-height:0; overflow:auto; display:grid; grid-template-columns:320px 1fr; }
.rp-cfg{ padding:22px; border-right:1px solid var(--line); }
.rp-prev{ padding:22px; min-width:0; }
.rp-foot{ flex:0 0 auto; display:flex; justify-content:flex-end; gap:10px; padding:14px 22px; border-top:1px solid var(--line); background:var(--surface-2); }
@media(max-width:720px){ .rp-corpo{ grid-template-columns:1fr; } .rp-cfg{ border-right:none; border-bottom:1px solid var(--line); } }

/* cadastros do drawer: Datas marco / Responsáveis / Recursos */
.cad-form{ display:flex; gap:8px; margin-bottom:8px; align-items:center; }
.cad-form input, .cad-form select{ min-width:0; }
.cad-form .btn-primario{ flex-shrink:0; padding:9px 15px; }
.cad-lista{ max-height:56vh; overflow:auto; display:flex; flex-direction:column; gap:3px; }
.cad-item{ display:flex; align-items:center; gap:12px; padding:10px 8px; min-height:44px; box-sizing:border-box; border-radius:8px; }
.cad-item:hover{ background:var(--surface-3); }
.cad-nome{ flex:1; font-size:15px; color:var(--text-1); display:flex; flex-direction:column; line-height:1.25; }
.cad-nome small{ color:var(--text-3); font-size:11px; margin-top:1px; }
.cad-avatar{ width:30px; height:30px; border-radius:50%; background:var(--acc-olive); color:#fff; display:grid; place-items:center; font-size:11px; font-weight:800; flex-shrink:0; }
.cad-flag{ width:12px; height:12px; border-radius:3px; flex-shrink:0; }
.cad-un{ font-size:11px; color:var(--text-2); background:var(--surface-3); border:1px solid var(--border); border-radius:20px; padding:2px 9px; white-space:nowrap; }
.cad-vazio{ font-size:12.5px; color:var(--text-3); padding:6px 2px; margin:0; }

/* ============================================================
   RESPONSIVO mínimo
   ============================================================ */
@media (max-width: 760px){
  .shell-usuario-info{ display:none; }
  .shell-sidebar{ width:62px; }
  .shell-sidebar .nav-rotulo{ display:none; }
  .shell-sidebar .nav-item{ justify-content:center; padding:10px 6px; }
  .shell-conteudo{ padding:18px 14px 32px; }
  .form-grid{ grid-template-columns:1fr; }
}

/* ============================================================
   RESTRIÇÕES — quadro Kanban (modulos/restricoes.js)
   ============================================================ */
/* cores de STATUS (vivas) — azul/vermelho/verde pedidos; âmbar/cinza no mesmo estilo */
:root{ --rz-red:#E5484D; --rz-amber:#EDA13A; --rz-blue:#4C8DFF; --rz-green:#33B87A; }
/* ---- shell do módulo: cresce com o conteúdo; a PÁGINA rola (scroll único na lateral) ---- */
.rz-app{ display:flex; flex-direction:column; gap:14px; padding-bottom:8px; }

/* ---- header compacto ---- */
.rz-header{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.rz-head-left{ min-width:0; }
.rz-crumb{ display:flex; align-items:center; gap:7px; font-size:11.5px; color:var(--text-3); }
.rz-crumb i{ width:13px; height:13px; }
.rz-crumb span{ opacity:.5; }
.rz-crumb b{ color:var(--text-2); font-weight:600; }
.rz-title{ font-family:var(--ff-display,inherit); font-size:26px; font-weight:700; letter-spacing:-.02em; margin:6px 0 2px; color:var(--text-1); }
.rz-sub{ font-size:13px; color:var(--text-3); margin:0; }
.rz-head-right{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.rz-icon-btn{ padding:0 10px; }
/* menu suspenso da engrenagem (gestão + Exportar + referência do IRR) */
.rz-config-wrap{ position:relative; }
.rz-config-menu{ position:absolute; top:calc(100% + 6px); right:0; z-index:60; min-width:236px; background:var(--surface-2); border:1px solid var(--line-2); border-radius:12px; padding:6px; box-shadow:0 18px 44px rgba(0,0,0,.45); display:flex; flex-direction:column; gap:2px; }
.rz-config-menu.oculto{ display:none; }
.rz-cfg-item{ display:flex; align-items:center; gap:10px; width:100%; padding:9px 11px; border:none; background:transparent; color:var(--text-2); font-size:13px; font-weight:500; text-align:left; cursor:pointer; border-radius:8px; }
.rz-cfg-item i{ width:16px; height:16px; color:var(--text-3); flex-shrink:0; }
.rz-cfg-item:hover{ background:var(--surface-3); color:var(--text-1); }
.rz-cfg-item:hover i{ color:var(--acc-olive); }
.rz-cfg-sep{ height:1px; background:var(--line); margin:5px 6px; }
.rz-cfg-ref{ display:flex; align-items:center; gap:9px; padding:8px 11px; font-size:13px; color:var(--text-2); }
.rz-cfg-ref i{ width:16px; height:16px; color:var(--acc-olive); flex-shrink:0; }
.rz-cfg-ref input[type=date]{ flex:1; min-width:0; height:30px; border:1px solid var(--line-2); border-radius:7px; background:var(--surface-1); color:var(--text-1); font-size:12.5px; padding:0 8px; }
.rz-seg{ display:inline-flex; background:var(--surface-1); border:1px solid var(--line-2); border-radius:9px; padding:3px; gap:2px; }
.rz-seg-btn{ border:none; background:transparent; color:var(--text-3); font:600 12.5px/1 var(--ff-ui,inherit); padding:8px 14px; border-radius:6px; cursor:pointer; transition:.15s; }
.rz-seg-btn.ativo{ background:var(--acc-olive); color:#17160E; }
.rz-seg-btn:disabled{ opacity:.45; cursor:not-allowed; }

/* ---- faixa de KPIs (6 cartões iguais) ---- */
.rz-kpis{ display:grid; grid-template-columns:repeat(6,1fr); gap:12px; }
.rz-kpi{ display:flex; align-items:center; gap:12px; background:var(--card); border:1px solid var(--line-2); border-radius:14px; padding:13px 15px; min-width:0; transition:border-color .15s; }
.rz-kpi:hover{ border-color:color-mix(in srgb, var(--kc) 55%, var(--line-2)); }
.rz-kpi-ico{ width:38px; height:38px; flex-shrink:0; display:grid; place-items:center; border-radius:11px; background:color-mix(in srgb, var(--kc) 15%, transparent); color:var(--kc); }
.rz-kpi-ico i{ width:19px; height:19px; }
.rz-kpi-main{ min-width:0; }
.rz-kpi-val{ font-size:23px; font-weight:750; letter-spacing:-.02em; color:var(--text-1); line-height:1.05; font-variant-numeric:tabular-nums; }
.rz-kpi-lbl{ font-size:12px; font-weight:600; color:var(--text-2); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rz-kpi-sub{ font-size:10.5px; color:var(--text-3); margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rz-kpi-delta{ display:block; font-size:10.5px; font-weight:600; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rz-kpi-delta.up{ color:var(--ok); }
.rz-kpi-delta.down{ color:var(--danger); }

/* ---- barra de ações ---- */
.rz-tools{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.rz-tools .btn{ height:36px; }
/* controle inline da data de referência do IRR (após "Importar do Prevision") */
.rz-ref-mini{ display:inline-flex; align-items:center; gap:6px; height:36px; padding:0 11px; border:1px solid var(--line-2); border-radius:9px; background:var(--surface-1); color:var(--text-2); font-size:12.5px; font-weight:600; white-space:nowrap; }
.rz-ref-mini i{ width:15px; height:15px; color:var(--acc-olive); }
.rz-ref-mini input[type=date]{ height:26px; border:none; background:transparent; color:var(--text-1); font-size:12.5px; padding:0; }
.rz-ref-mini:hover{ border-color:var(--border-3); }

/* ---- filtros: uma linha alinhada ---- */
.rz-filtros{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.rz-filtros select, .rz-filtros > input, .rz-busca{ height:38px; border:1px solid var(--line-2); border-radius:9px; background:var(--surface-1); color:var(--text-1); font-size:13px; }
.rz-filtros select, .rz-filtros > input{ padding:0 11px; }
.rz-filtros select:hover, .rz-filtros input:hover, .rz-busca:hover{ border-color:var(--border-3); }
.rz-busca{ display:flex; align-items:center; gap:7px; padding:0 11px; flex:1 1 260px; min-width:200px; max-width:360px; }
.rz-busca i{ width:15px; height:15px; color:var(--text-3); flex-shrink:0; }
.rz-busca input{ border:none; background:transparent; color:var(--text-1); font-size:13px; flex:1; min-width:0; height:100%; }
.rz-busca input:focus{ outline:none; }
.rz-f-resp{ max-width:150px; }
.rz-per-dt{ display:inline-flex; align-items:center; gap:6px; }
.rz-per-dt input[type=date]{ height:38px; padding:0 9px; border:1px solid var(--line-2); border-radius:9px; background:var(--surface-1); color:var(--text-1); font-size:13px; }
.rz-per-sep{ color:var(--text-3); }
.rz-limpar{ height:38px; padding:0 10px; border:none; background:transparent; color:var(--acc-olive); font-size:12.5px; font-weight:600; cursor:pointer; white-space:nowrap; }
.rz-limpar:hover{ text-decoration:underline; }

/* ---- quadro: colunas de largura igual, crescem com o conteúdo (sem scroll interno) ---- */
.rz-board{ display:flex; gap:14px; align-items:flex-start; overflow-x:auto; padding-bottom:6px; }
.rz-col{ flex:1 1 0; min-width:300px; display:flex; flex-direction:column; background:var(--surface-1); border:1px solid var(--line-2); border-radius:14px; transition:background .12s, border-color .12s, box-shadow .12s; }
/* borda + brilho por grupo da coluna (A Fazer neutro · Fazendo azul · Feito verde) */
.rz-col-iniciada{ border-color:color-mix(in srgb, var(--rz-blue) 45%, var(--line-2)); box-shadow:0 0 22px -13px color-mix(in srgb, var(--rz-blue) 75%, transparent); }
.rz-col-concluida{ border-color:color-mix(in srgb, var(--rz-green) 45%, var(--line-2)); box-shadow:0 0 22px -13px color-mix(in srgb, var(--rz-green) 70%, transparent); }
.rz-col.rz-drop{ border-color:var(--acc-olive); background:color-mix(in srgb, var(--acc-olive) 7%, var(--surface-1)); box-shadow:0 0 0 3px color-mix(in srgb, var(--acc-olive) 20%, transparent); }
.rz-col-head{ display:flex; align-items:center; gap:9px; padding:14px 14px 10px; flex-shrink:0; }
.rz-col-dot{ width:8px; height:8px; border-radius:50%; background:var(--text-3); flex-shrink:0; }
.rz-col-iniciada .rz-col-dot{ background:var(--rz-blue); box-shadow:0 0 8px color-mix(in srgb, var(--rz-blue) 60%, transparent); }
.rz-col-concluida .rz-col-dot{ background:var(--rz-green); box-shadow:0 0 8px color-mix(in srgb, var(--rz-green) 55%, transparent); }
/* rodapé de cada coluna: "+ Adicionar restrição" (ícone tingido pelo grupo) */
.rz-col-foot{ flex-shrink:0; margin:2px 12px 12px; display:flex; align-items:center; justify-content:center; gap:6px; padding:9px; border:1px dashed var(--line-2); border-radius:9px; background:transparent; color:var(--text-3); font-size:12.5px; font-weight:600; cursor:pointer; transition:.15s; }
.rz-col-foot i{ width:14px; height:14px; }
.rz-col-foot:hover{ color:var(--text-1); border-color:var(--border-3); background:var(--surface-3); }
.rz-col-iniciada .rz-col-foot i{ color:var(--info); }
.rz-col-concluida .rz-col-foot i{ color:var(--ok); }
.rz-col-nome{ font-weight:700; font-size:12.5px; color:var(--text-1); letter-spacing:.03em; text-transform:uppercase; }
.rz-col-grupo{ font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:var(--text-3); background:var(--track); padding:2px 6px; border-radius:20px; }
.rz-col-n{ font-size:11.5px; font-weight:700; color:var(--text-2); background:var(--surface-3); border-radius:20px; padding:2px 9px; min-width:24px; text-align:center; }
.rz-col-add, .rz-col-menu{ width:26px; height:26px; border:1px solid transparent; background:transparent; color:var(--text-3); border-radius:8px; cursor:pointer; font-size:15px; line-height:1; transition:.15s; }
.rz-col-add{ margin-left:auto; }
.rz-col-add:hover, .rz-col-menu:hover{ border-color:var(--line-2); color:var(--text-1); background:var(--surface-3); }
.rz-col-body{ display:flex; flex-direction:column; gap:10px; padding:2px 12px 14px; }
.rz-vazio{ text-align:center; color:var(--text-3); font-size:12px; padding:22px 10px; border:1px dashed var(--line-2); border-radius:10px; margin:0 2px; }

/* ---- cartão (layout da referência) ---- */
.rz-card{ position:relative; background:var(--card); border:1px solid var(--line-2); border-left:3px solid var(--line-2); border-radius:11px; padding:12px 13px 11px; cursor:grab; box-shadow:0 1px 2px rgba(0,0,0,.14); transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.rz-card:hover{ transform:translateY(-2px); box-shadow:0 12px 28px rgba(0,0,0,.3); }
/* borda inteira + brilho suave na cor do status */
.rz-card.rz-st-venc, .rz-card.rz-st-hoje{ border-color:color-mix(in srgb, var(--rz-red) 55%, var(--line-2)); border-left-color:var(--rz-red); box-shadow:0 1px 2px rgba(0,0,0,.14), 0 0 15px -8px color-mix(in srgb, var(--rz-red) 70%, transparent); }
.rz-card.rz-st-avencer{ border-color:color-mix(in srgb, var(--rz-amber) 52%, var(--line-2)); border-left-color:var(--rz-amber); box-shadow:0 1px 2px rgba(0,0,0,.14), 0 0 15px -8px color-mix(in srgb, var(--rz-amber) 62%, transparent); }
.rz-card.rz-st-prazo{ border-color:color-mix(in srgb, var(--rz-blue) 52%, var(--line-2)); border-left-color:var(--rz-blue); box-shadow:0 1px 2px rgba(0,0,0,.14), 0 0 15px -8px color-mix(in srgb, var(--rz-blue) 62%, transparent); }
.rz-card.rz-st-semprazo{ border-left-color:var(--text-3); }   /* sem data → neutro (não se disfarça de "No prazo") */
.rz-card.rz-st-ok{ border-color:color-mix(in srgb, var(--rz-green) 50%, var(--line-2)); border-left-color:var(--rz-green); box-shadow:0 1px 2px rgba(0,0,0,.14), 0 0 15px -8px color-mix(in srgb, var(--rz-green) 60%, transparent); }
.rz-card.rz-sel{ border-color:var(--acc-olive); box-shadow:0 0 0 2px color-mix(in srgb, var(--acc-olive) 40%, transparent); }
.rz-card.rz-arrast{ opacity:.5; transform:rotate(1.5deg) scale(1.02); box-shadow:0 18px 40px rgba(0,0,0,.4); cursor:grabbing; }
/* checkbox de seleção: só renderiza no modo seleção (após "Selecionar todos") */
.rz-chk{ width:15px; height:15px; margin-top:2px; accent-color:var(--acc-olive); flex-shrink:0; cursor:pointer; }
.rz-card-head{ display:flex; align-items:flex-start; gap:8px; }
.rz-card-titulo{ flex:1; min-width:0; font-size:13.5px; font-weight:650; color:var(--text-1); cursor:pointer; line-height:1.32; }
.rz-card-titulo:hover{ color:var(--acc-olive); }
.rz-badge{ display:flex; flex-direction:column; align-items:flex-end; line-height:1.12; flex-shrink:0; text-align:right; }
.rz-badge b{ font-size:12px; font-weight:750; }
.rz-badge i{ font-size:9.5px; font-style:normal; font-weight:600; opacity:.92; }
.rz-badge-venc, .rz-badge-hoje{ color:var(--rz-red); }
.rz-badge-avencer{ color:var(--rz-amber); }
.rz-badge-prazo{ color:var(--rz-blue); }
.rz-badge-semprazo{ color:var(--text-3); }
.rz-badge-ok{ color:var(--rz-green); }
.rz-card-menu{ border:none; background:transparent; color:var(--text-3); cursor:pointer; font-size:16px; line-height:1; padding:0 1px; border-radius:6px; margin:-2px -3px 0 0; }
.rz-card-menu:hover{ color:var(--text-1); }
.rz-tag{ font-size:10px; font-weight:700; padding:2px 8px; border-radius:6px; color:#fff; background:var(--tc,#8a8f98); letter-spacing:.02em; }
.rz-card-desc{ font-size:12px; color:var(--text-3); line-height:1.45; margin-top:5px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.rz-card-tags{ margin-top:9px; }
.rz-card-mid{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:10px; }
.rz-quem{ display:flex; align-items:center; gap:7px; min-width:0; }
.rz-quem-nome{ font-size:11.5px; color:var(--text-2); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:108px; }
.rz-quem-data{ font-size:11px; color:var(--text-3); white-space:nowrap; }
.rz-prio{ display:inline-flex; align-items:center; gap:2px; font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:20px; flex-shrink:0; }
.rz-prio-alta{ color:var(--rz-red); background:color-mix(in srgb, var(--rz-red) 16%, transparent); }
.rz-prio-media{ color:var(--rz-amber); background:color-mix(in srgb, var(--rz-amber) 16%, transparent); }
.rz-prio-baixa{ color:var(--rz-green); background:color-mix(in srgb, var(--rz-green) 16%, transparent); }
.rz-card-stats{ display:flex; align-items:center; gap:12px; margin-top:11px; padding-top:9px; border-top:1px solid var(--line); font-size:11px; color:var(--text-3); }
.rz-stat{ display:inline-flex; align-items:center; gap:4px; }
.rz-stat i{ width:12px; height:12px; }
.rz-obs-chip{ background:color-mix(in srgb, var(--warn) 16%, transparent); color:var(--warn); padding:1px 6px; border-radius:5px; font-weight:600; }
.rz-prazo-venc{ color:var(--danger); font-weight:700; }
.rz-setas{ margin-left:auto; display:flex; gap:4px; flex-shrink:0; opacity:0; transition:opacity .12s; }
.rz-card:hover .rz-setas{ opacity:1; }
.rz-seta{ width:24px; height:22px; border:1px solid var(--line-2); background:var(--surface-1); border-radius:6px; color:var(--text-2); cursor:pointer; font-size:12px; transition:.15s; }
.rz-seta:hover:not(:disabled){ border-color:var(--acc-olive); color:var(--acc-olive); }
.rz-seta:disabled{ opacity:.3; cursor:default; }

/* ---- barra de seleção em lote ---- */
.rz-lote-bar{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; background:color-mix(in srgb, var(--acc-olive) 10%, var(--surface-1)); border:1px solid color-mix(in srgb, var(--acc-olive) 35%, var(--line-2)); border-radius:11px; padding:9px 13px; font-size:13px; }
.rz-lote-bar strong{ color:var(--acc-olive); }
.rz-lote-sep{ width:1px; height:20px; background:var(--line-2); margin:0 2px; }
.rz-lote-dica{ font-size:12.5px; color:var(--text-3); }
.rz-lote-sair{ margin-left:auto; }
.rz-tools .btn.ativo{ border-color:var(--acc-olive); color:var(--acc-olive); background:color-mix(in srgb, var(--acc-olive) 12%, transparent); }

/* ---- responsivo ---- */
@media (max-width:1240px){ .rz-kpis{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:900px){
  .rz-col{ flex:0 0 86vw; min-width:0; }
  .rz-kpis{ grid-template-columns:repeat(2,1fr); }
}

/* modais de restrições */
.rz-form small{ color:var(--text-3); font-weight:400; }
.rc-chk-l{ display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.rc-chk-i{ flex:1; }
.rc-del-chk{ border:none; background:transparent; color:var(--danger); cursor:pointer; font-size:14px; }
.rz-anexos{ margin-top:6px; display:flex; gap:8px; flex-wrap:wrap; }
.rz-anexo{ font-size:12px; color:var(--text-2); background:var(--surface-3); border-radius:6px; padding:2px 8px; }
.rz-det-head{ display:flex; align-items:center; gap:10px; }
.rz-det-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:18px; margin-top:12px; }
.rz-det-info p{ margin:5px 0; font-size:13px; color:var(--text-2); }
.rz-det-info b{ color:var(--text-1); }
.rz-det-chk{ margin:8px 0; font-size:13px; }
.rz-det-cria{ color:var(--text-3)!important; font-size:11.5px!important; margin-top:12px!important; }
.rz-det-hist{ border-left:1px solid var(--line); padding-left:16px; }
.rz-hist-lista{ max-height:260px; overflow:auto; margin:8px 0; display:flex; flex-direction:column; gap:7px; }
.rz-hist-i{ font-size:12.5px; color:var(--text-2); line-height:1.35; }
.rz-hist-i.evento{ color:var(--text-3); font-style:italic; }
.rz-hist-a{ font-weight:700; color:var(--text-1); }
.rz-hist-d{ color:var(--text-3); font-size:11px; }
.rz-coment{ display:flex; gap:6px; }
.rz-coment input{ flex:1; }
.rz-etiq-l, .rz-etapa-l{ display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.rz-etapa-nome{ flex:1; }
.rz-etiq-nova{ display:flex; gap:8px; align-items:center; margin-top:12px; padding-top:12px; border-top:1px solid var(--line); }
.rz-etiq-nova input[type=text], .rz-etiq-nova input:not([type]){ flex:1; }
@media (max-width:760px){ .rz-det-grid{ grid-template-columns:1fr; } .rz-det-hist{ border-left:none; padding-left:0; border-top:1px solid var(--line); padding-top:12px; } }

/* ==== MEGA · Orçamento (Demonstrativo) — árvore com valores do grd ==== */
.orc-envelope{ overflow:auto; max-height:72vh; border:1px solid var(--line); border-radius:8px; }
.orc-tabela{ border-collapse:collapse; font-size:10px; white-space:nowrap; width:max-content; user-select:none; }
.orc-tabela thead th{ position:sticky; z-index:1; padding:2px 5px; font-weight:700; font-size:9px; text-align:center;
  background:#7D5026; color:#fff; border:1px solid #DCD9D1; }   /* título menor; grade #DCD9D1 */
.orc-tabela thead tr:first-child th{ top:0; }
.orc-tabela thead tr.orc-subhead th{ top:15px; }   /* gruda abaixo do grupo (= altura da linha 1) */
/* região da Estrutura (Nível/Cód./Descrição/Unid.): marrom-oliva da Resumo */
.orc-tabela thead .orc-estrut,
.orc-tabela thead .orc-subhead .orc-niv, .orc-tabela thead .orc-subhead .orc-ce,
.orc-tabela thead .orc-subhead .orc-ci, .orc-tabela thead .orc-subhead .orc-desc,
.orc-tabela thead .orc-subhead .orc-un{ background:#706556; }
/* SÓ o 1º "Qtde" (a célula colada no Unid.) na cor do título — o resto do
   cabeçalho de valores permanece no barro #7D5026. */
.orc-tabela thead .orc-subhead .orc-un + th{ background:#706556; }
/* Grade fina 1px em TODA a planilha, cor #DCD9D1 */
.orc-tabela tbody td{ padding:1px 5px; border:1px solid #DCD9D1; vertical-align:middle; }
.orc-val{ text-align:right; font-family:var(--f-mono); color:var(--ink-2); min-width:66px; }
.orc-val.orc-valor{ color:var(--ink); }
/* Colunas da Estrutura Orçamentária */
.orc-niv{ text-align:center; min-width:26px; }
.orc-ce{ text-align:left; min-width:84px; }
.orc-ci{ text-align:left; font-family:var(--f-mono); min-width:48px; }
.orc-un{ text-align:center; color:var(--ink-2); min-width:30px; }
.orc-codtxt{ font-family:var(--f-mono); }
/* Descrição: mostra TODA a descrição com quebra de texto; coluna contida
   e poucas linhas (não fica larga demais nem a linha alta demais). */
.orc-desc{ text-align:left; color:var(--ink-2); white-space:normal; word-break:break-word;
  width:260px; max-width:260px; line-height:1.2; }
/* Cód. Insumo só aparece com o filtro "Insumos" (quando há insumos visíveis) */
.orc-tabela:not(.mostra-insumo) th.orc-ci,
.orc-tabela:not(.mostra-insumo) td.orc-ci{ display:none; }
/* Cores POR NÍVEL idênticas à aba "Resumo" do Custo (formatação
   condicional $B=1..5): paleta oliva/marrom, não do tema.
   Cor no td cobre Nível/Cód./Insumo/Unid; desc e valores têm override. */
.orc-row.orc-n1 td{ background:#32331A; color:#fff; font-weight:700; }
.orc-row.orc-n2 td{ background:#57592D; color:#fff; font-weight:700; }
.orc-row.orc-n3 td{ background:#77784F; color:#fff; font-weight:700; }
.orc-row.orc-n4 td{ background:#C4C5A7; color:#1a1a1a; font-weight:700; }
.orc-row.orc-n5 td{ background:#F2F2F2; color:#1a1a1a; }
.orc-row.orc-n1 .orc-desc, .orc-row.orc-n1 .orc-val, .orc-row.orc-n1 .orc-un,
.orc-row.orc-n2 .orc-desc, .orc-row.orc-n2 .orc-val, .orc-row.orc-n2 .orc-un,
.orc-row.orc-n3 .orc-desc, .orc-row.orc-n3 .orc-val, .orc-row.orc-n3 .orc-un{ color:#fff; }
.orc-row.orc-n4 .orc-desc, .orc-row.orc-n4 .orc-val, .orc-row.orc-n4 .orc-un,
.orc-row.orc-n5 .orc-desc, .orc-row.orc-n5 .orc-val, .orc-row.orc-n5 .orc-un{ color:#1a1a1a; }
/* folhas (insumos, nível 0): cinza mais escuro, texto legível */
.orc-folha td{ background:#D0CDC2; color:#3B3B3B; }
.orc-folha .orc-desc, .orc-folha .orc-val, .orc-folha .orc-un{ color:#3B3B3B; }
.orc-tog{ border:none; background:transparent; cursor:pointer; color:inherit; opacity:.8;
  width:15px; padding:0; margin-right:2px; font-size:11px; }
.orc-tog:hover{ opacity:1; }
.orc-row.oculto{ display:none; }
/* Toolbar: agrupar até o nível N (outline tipo Excel) */
.orc-agrupar{ display:flex; align-items:center; gap:6px; flex-wrap:wrap;
  font-size:12px; color:var(--ink-2); margin:0 0 8px; }
.orc-agrupar button{ border:1px solid var(--line); background:var(--paper); color:var(--ink-2);
  border-radius:6px; padding:3px 11px; cursor:pointer; font-weight:600; font-size:12px; line-height:1.4; }
.orc-agrupar button:hover{ border-color:#706556; color:#57592D; }
.orc-agrupar button.ativo{ background:#57592D; border-color:#57592D; color:#fff; }
.orc-dica{ color:var(--ink-3); font-size:11px; }
.orc-dica kbd{ font-family:var(--f-mono); font-size:10px; background:var(--paper);
  border:1px solid var(--line); border-radius:3px; padding:0 4px; }
/* Seleção de células estilo Excel (arraste) */
.orc-tabela td.orc-sel{ box-shadow: inset 0 0 0 9999px rgba(31,95,191,.30); }
/* Barra de soma (rodapé flutuante), igual ao status bar do Excel */
.orc-status{ position:fixed; bottom:16px; right:20px; z-index:60;
  display:flex; gap:16px; align-items:center; background:#2e2a20; color:#fff;
  border:1px solid #4f4636; border-radius:9px; padding:8px 15px; font-size:12px;
  box-shadow:0 6px 20px rgba(0,0,0,.28); }
.orc-status[hidden]{ display:none; }
.orc-status b{ color:#ffe9b0; margin-left:3px; font-variant-numeric:tabular-nums; }
.orc-status.orc-copiado{ background:#2f5d2f; border-color:#3f7a3f; }

/* Restrições — avatares, multi-chips, vínculo de prazo (incremento 0025) */
.oculto{ display:none!important; }
.rz-tags{ display:flex; gap:4px; flex-wrap:wrap; }
.rz-avs{ display:flex; align-items:center; }
.rz-av{ width:22px; height:22px; border-radius:50%; background:var(--ac,#666); color:#fff; font:700 9.5px/22px var(--ff-ui); text-align:center; display:inline-block; margin-left:-6px; border:1.5px solid var(--card); flex-shrink:0; }
.rz-av:first-child{ margin-left:0; }
.rz-av-mais{ background:var(--surface-3); color:var(--text-2); }
.rz-multi{ display:flex; flex-wrap:wrap; gap:6px; }
.rz-multi-chip{ display:inline-flex; align-items:center; gap:5px; padding:4px 9px; border:1px solid var(--line-2); border-radius:20px; font-size:12.5px; cursor:pointer; color:var(--text-2); }
.rz-multi-chip input{ margin:0; }
.rz-multi-chip:has(input:checked){ border-color:var(--tc,var(--acc-olive)); background:color-mix(in srgb, var(--tc,var(--acc-olive)) 12%, transparent); color:var(--text-1); }
.rz-multi-chip .rz-av{ width:18px; height:18px; line-height:18px; font-size:8.5px; margin:0; border:none; }
/* multi-select em dropdown (responsáveis): botão com chevron + lista suspensa */
.rz-select-multi{ position:relative; }
.rz-select-btn{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 12px; border:1px solid var(--line-2); border-radius:8px; background:var(--surface-3); color:var(--text-1); font:inherit; cursor:pointer; text-align:left; }
.rz-select-btn:hover{ border-color:var(--acc-olive); }
.rz-select-btn .rz-select-val{ display:flex; align-items:center; gap:8px; min-width:0; color:var(--text-2); font-size:13px; }
.rz-select-btn .rz-select-caret{ flex-shrink:0; font-size:11px; color:var(--text-3); transition:transform .15s ease; }
.rz-select-btn.aberto .rz-select-caret{ transform:rotate(180deg); }
/* lista inline (não absolute) p/ o overflow do modal não recortar a lista aberta */
.rz-select-pop{ margin-top:6px; max-height:230px; overflow:auto; padding:10px; background:var(--surface-3); border:1px solid var(--line-2); border-radius:10px; }
.rz-select-pop.oculto{ display:none; }
.rz-prazo-modo{ display:flex; gap:16px; margin-bottom:8px; font-size:13px; }
.rz-prazo-modo label{ display:inline-flex; align-items:center; gap:6px; cursor:pointer; }
.rz-vinc-linha{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.rz-vinc-linha #rc-pacote{ flex:1; min-width:220px; }
.rz-antec{ display:inline-flex; align-items:center; gap:5px; font-size:12.5px; color:var(--text-3); white-space:nowrap; }
.rz-antec input{ width:64px; }
.rz-prazo-prev{ margin-top:8px; font-size:13px; color:var(--text-2); }
.rz-prazo-prev b{ color:var(--acc-olive); }
.rz-prev-det{ color:var(--text-3); font-size:12px; }
.rz-share{ cursor:pointer; background:var(--surface-3); padding:1px 7px; border-radius:5px; font-size:12px; color:var(--acc-olive); }
.rz-share:hover{ background:var(--track); }
.rz-refbar{ display:flex; align-items:center; gap:10px; margin:12px 0 2px; font-size:12.5px; color:var(--text-3); flex-wrap:wrap; }
.rz-refbar label{ display:inline-flex; align-items:center; gap:6px; color:var(--text-2); }
.rz-refbar i{ width:14px; height:14px; }
.rz-refbar input[type=date]{ height:32px; border:1px solid var(--line-2); border-radius:8px; background:var(--surface-2); color:var(--text-1); padding:0 8px; }
.rz-ref-hint{ color:var(--text-3); }
#rc-lotevinc{ max-width:180px; height:34px; border:1px solid var(--line-2); border-radius:8px; background:var(--surface-2); color:var(--text-1); padding:0 8px; }
#rc-dep-ref{ flex:1; }
#rc-dep-cond, #rc-dep-cat, #rc-dep-ref{ height:34px; border:1px solid var(--line-2); border-radius:8px; background:var(--surface-2); color:var(--text-1); padding:0 8px; }
.rz-obs{ color:var(--warn)!important; font-size:12.5px!important; background:color-mix(in srgb, var(--warn) 12%, transparent); padding:5px 9px; border-radius:8px; }
.rz-obs-chip{ font-size:10.5px; color:#fff; background:var(--warn); border-radius:20px; padding:2px 7px; font-weight:700; white-space:nowrap; }
.rz-lead-etapas{ display:flex; flex-direction:column; gap:8px; }
.rz-lead-et{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-2); }
.rz-lead-et label{ flex:1; }
.rz-lead-et input{ width:80px; height:30px; border:1px solid var(--line-2); border-radius:6px; background:var(--surface-2); color:var(--text-1); padding:0 6px; }
.rz-lead-tbl{ max-height:320px; overflow:auto; }
.rz-lead-tbl table{ font-size:12.5px; width:100%; }
.rz-lead-tbl th{ position:sticky; top:0; background:var(--surface-3); }
.rz-lead-tbl input{ width:54px; height:28px; border:1px solid var(--line-2); border-radius:6px; background:var(--surface-2); color:var(--text-1); padding:0 5px; }
