/* ============================================================
   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).
   ============================================================ */

:root{
  --verde:       #57592E;
  --verde-hover: #464824;
  --verde-tint:  #EEEFE4;
  --verde-linha: #C9CBB0;

  --ink:    #26261F;
  --ink-2:  #5C5C52;
  --ink-3:  #8B8B7E;
  --paper:  #F7F7F3;
  --card:   #FFFFFF;
  --line:   #E4E3DA;
  --line-2: #D2D1C5;
  --erro:   #9C0006;
  --erro-bg:#FDF3F4;

  --f-ui:  'IBM Plex Sans', sans-serif;
  --f-cond:'IBM Plex Sans Condensed', sans-serif;
  --f-mono:'IBM Plex Mono', monospace;

  --sombra: 0 1px 2px rgba(38,38,31,.05), 0 8px 24px -12px rgba(38,38,31,.12);
  --altura-cabecalho: 56px;
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{ font-family:var(--f-ui); color:var(--ink); background:var(--paper); -webkit-font-smoothing:antialiased; }
.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); }

/* ============================================================
   TELAS DE AUTENTICAÇÃO
   ============================================================ */
.tela-auth{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(180deg, #FBFBF8 0%, var(--paper) 100%);
  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; }
.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; }
.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:#fff; 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
   ============================================================ */
.app-shell{ min-height:100vh; 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); }

.shell-corpo{ flex:1; display:flex; min-height:0; }

.shell-sidebar{
  width:226px; flex:none; background:var(--card);
  border-right:1px solid var(--line);
  display:flex; flex-direction:column;
  position:sticky; top:var(--altura-cabecalho);
  height:calc(100vh - var(--altura-cabecalho));
  transition:width .18s ease;
}
.shell-nav{ padding:12px 10px 4px; display:flex; flex-direction:column; gap:2px; flex:1; overflow-y:auto; }
.nav-item{
  display:flex; align-items:center; gap:11px;
  border:none; background:transparent; border-radius:7px;
  padding:9px 10px; font-size:13.5px; color:var(--ink-2); width:100%;
  text-align:left; position:relative;
}
.nav-item:hover{ background:var(--paper); color:var(--ink); }
.nav-item.ativo{ background:var(--verde-tint); color:var(--verde); font-weight:600; }
.nav-icone{ width:20px; flex:none; text-align:center; font-size:15px; }
.nav-rotulo{ white-space:nowrap; }

.shell-sidebar-rodape{ padding:10px; border-top:1px solid var(--line); display:flex; justify-content:flex-end; }
.shell-toggle{
  border:1px solid var(--line-2); background:#fff; border-radius:6px;
  width:26px; height:26px; font-size:14px; color:var(--ink-2); line-height:1;
}
.shell-toggle:hover{ border-color:var(--verde); color:var(--verde); }

/* 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(--ink); color:#fff; font-size:11.5px; padding:5px 9px; border-radius:5px;
  white-space:nowrap; opacity:0; pointer-events:none; transition:opacity .12s; z-index:60;
}
.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; }

.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%); }
/* 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; }

.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:#fff; 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; }

.metricas{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom:14px; }
.metrica{
  background:var(--card); border:1px solid var(--line); border-radius:8px;
  padding:12px 18px; min-width:120px;
  display:flex; flex-direction:column; gap:2px;
}
.metrica strong{ font-size:22px; font-weight:700; color:var(--verde); }
.metrica span{ font-size:12px; color:var(--ink-2); }

/* ============================================================
   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:8px;
  padding:16px 18px; margin-bottom:18px;
}
.grafico-card h3{
  margin:0 0 4px; font-size:13px; font-weight:700; letter-spacing:.04em;
  text-transform:uppercase; color:var(--ink-2);
}
.grafico-card .grafico-sub{ margin:0 0 14px; font-size:12px; color:var(--ink-3); }
.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:12.5px; 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:#fff; font-family:inherit;
}
.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:11.5px; 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;
}
.hist-tabela{ border-collapse:separate; border-spacing:0; font-family:var(--f-mono); font-size:11px; 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:27px; }

.hcol-cod{ width:54px; min-width:54px; position:sticky; left:0; z-index:3; background:#fff; }
.hcol-nome{ width:200px; min-width:200px; position:sticky; left:54px; z-index:3; background:#fff; text-align:left !important; font-family:var(--f-cond); font-size:12.5px; }
.hcol-func{ width:118px; min-width:118px; position:sticky; left:254px; z-index:3; background:#fff; text-align:left !important; font-family:var(--f-cond); font-size:11.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:12px; font-weight:600; text-transform:none;
  text-align:center !important;
}
.th-semana{ letter-spacing:.02em; }
.th-dia{ width:27px; min-width:27px; 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:214px; max-width:214px; }
.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(7){ background:#22373D; }
.th-cont-grupo .th-contador:nth-child(8){ 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:12.5px; text-align:left; padding:0 10px; letter-spacing:.03em;
  border-right-color:transparent; height:26px; 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:27px; }
.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; }
.cal-legenda{ display:flex; gap:18px; align-items:center; font-size:12.5px; color:var(--ink-2); margin:2px 0 14px; }
.cal-dia-mini{ display:inline-block; width:14px; height:14px; border-radius:50%;
  background:var(--paper); border:1px solid var(--line-2); vertical-align:-2px; margin-right:5px; }
.cal-dia-mini.util{ background:#3F4147; border-color:#3F4147; }
.cal-dia-mini.feriado{ background:#F6D9D6; border-color:#B4483C; }
.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; }
.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(--ink-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(--ink-2); }
.cal-dia.util{ background:#3F4147; color:#fff; font-weight:600; }
.cal-dia.feriado{ background:#F6D9D6; color:#B4483C; font-weight:700; box-shadow:inset 0 0 0 1.5px #B4483C; }
.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:28px 0 10px; padding-bottom:6px; border-bottom:2px solid var(--verde); }
.dash-secao h2{ font-size:17px; margin:0; }
.dash-secao p{ font-size:12.5px; color:var(--ink-3); margin:2px 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); } }

/* ============================================================
   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; }
}
