/* =====================================================================
   sistema.css - design system e shell do Progredir RH Indicadores.

   Paleta cobalto executiva. Carregado em todas as telas; define os
   tokens que styles.css e as demais folhas consomem.
   ===================================================================== */

:root{
  /* --- cobalto --- */
  --co-950:#05122B; --co-900:#071A3C; --co-800:#0A2352; --co-700:#0D2E6B;
  --co-600:#0F3A8A; --co-500:#0047AB; --co-400:#1A61D4; --co-300:#4B87E8;
  --co-200:#A9C4F4; --co-100:#DBE7FB; --co-50:#EFF4FE;

  /* --- neutros --- */
  --tinta:#0F172A; --tinta2:#475569; --tinta3:#94A3B8; --tinta4:#CBD5E1;
  --linha:#E2E8F0; --linha-forte:#CBD5E1;
  --fundo:#F4F6FB; --card:#FFFFFF; --card-2:#FAFBFE;

  /* --- semantica --- */
  --positivo:#047857; --positivo-cl:#ECFDF5;
  --negativo:#BE123C; --negativo-cl:#FFF1F3;
  --alerta:#B45309;   --alerta-cl:#FFFBEB;
  --info:var(--co-500); --info-cl:var(--co-50);

  /* graficos (consumidos por app.js) */
  --prov:#047857; --desc:#BE123C; --liq:#0047AB;
  --verde:var(--co-500); --verde-esc:var(--co-700); --verde-cl:var(--co-50);
  --txt:var(--tinta); --txt2:var(--tinta2); --bg:var(--fundo);

  /* --- elevacao --- */
  --sombra-xs:0 1px 2px rgba(7,26,60,.06);
  --sombra-sm:0 1px 3px rgba(7,26,60,.08),0 1px 2px rgba(7,26,60,.04);
  --sombra-md:0 4px 12px rgba(7,26,60,.08),0 2px 4px rgba(7,26,60,.04);
  --sombra-lg:0 12px 32px rgba(7,26,60,.12),0 4px 8px rgba(7,26,60,.06);
  --sombra-cobalto:0 6px 20px rgba(0,71,171,.24);

  --r-sm:6px; --r:10px; --r-md:14px; --r-lg:18px;
  /* apelidos consumidos por styles.css (painel de Folha Mensal) */
  --radius:var(--r); --radius-card:var(--r-md);
  --lateral:268px; --lateral-min:72px; --topo:64px;
  --transicao:180ms cubic-bezier(.4,0,.2,1);
}

*{box-sizing:border-box}
html,body{height:100%;max-width:100%;overflow-x:hidden}
body{
  margin:0;
  font-family:"Segoe UI",Inter,Roboto,system-ui,Arial,sans-serif;
  background:var(--fundo); color:var(--tinta);
  font-size:14px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--co-500)}
.oculto{display:none !important}

/* =====================================================================
   LAYOUT
   ===================================================================== */
.app{display:flex; min-height:100vh}

/* ---------------------------------------------------------------------
   Barra lateral
   --------------------------------------------------------------------- */
.lateral{
  width:var(--lateral); flex:0 0 var(--lateral);
  background:linear-gradient(175deg,var(--co-900) 0%,var(--co-800) 55%,var(--co-700) 100%);
  color:#fff; display:flex; flex-direction:column;
  position:sticky; top:0; height:100vh;
  transition:width var(--transicao),flex-basis var(--transicao);
  z-index:40;
}
/* Filete claro na borda: separa da area de conteudo sem usar sombra,
   que ficaria suja sobre o fundo azulado. */
.lateral::after{
  content:""; position:absolute; inset:0 0 0 auto; width:1px;
  background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.02));
}

/* --- marca --- */
.marca{padding:20px 18px 16px; border-bottom:1px solid rgba(255,255,255,.10)}
.marca-linha{display:flex; align-items:center; gap:12px}
.marca-selo{
  width:38px; height:38px; flex:0 0 38px; border-radius:11px;
  background:linear-gradient(145deg,var(--co-400),var(--co-600));
  display:grid; place-items:center; box-shadow:var(--sombra-cobalto);
}
.marca-selo svg{width:21px; height:21px; stroke:#fff; fill:none; stroke-width:1.9}
.marca-txt{min-width:0}
.marca-nome{
  font-size:13px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.marca-sub{
  font-size:11.5px; color:var(--co-200); margin-top:1px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
/* --- busca no menu --- */
.nav-busca{position:relative; margin:2px 12px 10px}
.nav-busca svg{
  position:absolute; left:11px; top:50%; transform:translateY(-50%);
  width:15px; height:15px; stroke:rgba(255,255,255,.5); fill:none; stroke-width:1.9;
}
.nav-busca input{
  width:100%; min-height:40px; padding:0 10px 0 33px; border-radius:var(--r);
  border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.07);
  color:#fff; font:inherit; font-size:13px;
}
.nav-busca input::placeholder{color:rgba(255,255,255,.45)}
.nav-busca input:focus{
  outline:none; border-color:var(--co-300); background:rgba(255,255,255,.11);
  box-shadow:0 0 0 3px rgba(75,135,232,.25);
}

/* --- navegacao --- */
.nav{flex:1; overflow-y:auto; overflow-x:hidden; padding:2px 12px 20px}
.nav::-webkit-scrollbar{width:8px}
.nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16); border-radius:4px}
.nav::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.26)}
.nav-vazio{font-size:12.5px; color:rgba(255,255,255,.55); padding:10px 6px; margin:0}

/* --- grupo recolhivel --- */
.nav-grupo{margin-top:6px}
.nav-grupo:first-child{margin-top:0}
.nav-grupo.oculto{display:none}
.nav-grupo-cab{padding:0}
.nav-grupo-bt{
  width:100%; display:flex; align-items:center; gap:8px;
  min-height:40px; padding:8px 10px; margin:0;
  background:transparent; border:0; cursor:pointer;
  font:inherit; text-align:left;
}
.nav-grupo-bt:hover{background:rgba(255,255,255,.06); border-radius:var(--r-sm)}
.nav-grupo-bt:focus-visible{outline:2px solid var(--co-300); outline-offset:-2px; border-radius:var(--r-sm)}
.nav-grupo-rot{
  flex:1; font-size:10px; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  color:rgba(169,196,244,.75);
}
.nav-grupo-seta{
  width:14px; height:14px; flex:0 0 14px; stroke:rgba(169,196,244,.6); fill:none;
  stroke-width:2; stroke-linecap:round; stroke-linejoin:round;
  transition:transform var(--transicao);
}
.nav-grupo-bt[aria-expanded="true"] .nav-grupo-seta{transform:rotate(180deg)}
.nav-grupo-itens{display:none; padding-top:2px}
.nav-grupo-itens.aberto{display:block}
.nav-grupo-fixo{margin-bottom:4px}
/* Enquanto ha busca ativa, os itens aparecem mesmo em grupo recolhido -
   senao um resultado ficaria escondido atras do proprio filtro. */
.nav.nav-busca-ativa .nav-grupo-itens{display:block}

.nav-item{
  display:flex; align-items:center; gap:11px;
  min-height:40px; padding:9px 11px; margin-bottom:2px;
  border-radius:var(--r); color:rgba(255,255,255,.86);
  text-decoration:none; font-size:13.5px; font-weight:500;
  border:1px solid transparent; position:relative;
  transition:background var(--transicao),color var(--transicao);
  white-space:nowrap;
}
.nav-item.nav-item-oculto{display:none}
.nav-item svg{
  width:18px; height:18px; flex:0 0 18px;
  stroke:currentColor; fill:none; stroke-width:1.75;
  stroke-linecap:round; stroke-linejoin:round; opacity:.82;
}
.nav-item .rot{overflow:hidden; text-overflow:ellipsis}
/* Sem deslocamento horizontal no hover: so contraste, pra nao gerar
   instabilidade visual na lista. */
.nav-item:hover{background:rgba(255,255,255,.09); color:#fff}
.nav-item:hover svg{opacity:1}
.nav-item:focus-visible{outline:2px solid var(--co-300); outline-offset:2px}

.nav-item.ativo{
  background:rgba(75,135,232,.20);
  border-color:rgba(169,196,244,.28); color:#fff; font-weight:600;
}
.nav-item.ativo svg{opacity:1}
/* Barra de acento a esquerda marca a pagina corrente. */
.nav-item.ativo::before{
  content:""; position:absolute; left:-12px; top:50%; transform:translateY(-50%);
  width:3px; height:22px; border-radius:0 3px 3px 0; background:var(--co-300);
}
.nav-item.desabilitado{opacity:.42; pointer-events:none}
.nav-item .selo{
  margin-left:auto; font-size:9px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; padding:2px 6px; border-radius:4px;
  background:rgba(255,255,255,.13); color:var(--co-200);
}

/* --- tooltip do item, so aparece com a lateral recolhida (so icones) --- */
.nav-tip{
  position:absolute; left:calc(100% + 10px); top:50%; transform:translateY(-50%) translateX(-4px);
  background:var(--co-950); color:#fff; padding:7px 11px; border-radius:var(--r-sm);
  font-size:12.5px; font-weight:600; white-space:nowrap; box-shadow:var(--sombra-lg);
  opacity:0; visibility:hidden; pointer-events:none; z-index:50;
  transition:opacity var(--transicao),transform var(--transicao),visibility var(--transicao);
}
.nav-tip small{display:block; font-size:10.5px; font-weight:500; color:var(--co-200); margin-top:1px}
.app:not(.recolhida) .nav-tip{display:none}
.app.recolhida .nav-item:hover .nav-tip,
.app.recolhida .nav-item:focus-visible .nav-tip{
  opacity:1; visibility:visible; transform:translateY(-50%) translateX(0);
}

/* --- selo "atualizado", fora da marca --- */
.selo-atualizado{
  margin:10px 12px; font-size:10.5px; letter-spacing:.03em;
  color:var(--co-200); background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.10); border-radius:var(--r-sm);
  padding:6px 9px; display:flex; align-items:center; gap:7px;
}
.selo-atualizado .ponto{
  width:6px; height:6px; border-radius:50%; background:#34D399; flex:0 0 6px;
  box-shadow:0 0 0 3px rgba(52,211,153,.20);
}
.selo-atualizado.frio .ponto{background:var(--tinta3); box-shadow:0 0 0 3px rgba(148,163,184,.20)}
.selo-atualizado.erro .ponto{background:#FB7185; box-shadow:0 0 0 3px rgba(251,113,133,.22)}

/* --- rodape da lateral --- */
.lateral-rodape{
  padding:12px; border-top:1px solid rgba(255,255,255,.10);
  display:flex; align-items:center; gap:10px;
}
.avatar{
  width:34px; height:34px; flex:0 0 34px; border-radius:50%;
  background:linear-gradient(145deg,var(--co-400),var(--co-600));
  display:grid; place-items:center; color:#fff; font-weight:700; font-size:12.5px;
  letter-spacing:.02em;
}
.lateral-rodape .quem{min-width:0; flex:1}
.lateral-rodape .nome{
  font-size:12.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.lateral-rodape .papel{font-size:11px; color:var(--co-200)}
.bt-sair{
  background:transparent; border:1px solid rgba(255,255,255,.16); color:rgba(255,255,255,.8);
  border-radius:var(--r-sm); width:40px; height:40px; flex:0 0 40px; cursor:pointer;
  display:grid; place-items:center;
}
.bt-sair svg{width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.8}
.bt-sair:hover{background:rgba(251,113,133,.16); border-color:rgba(251,113,133,.4); color:#FFD3D9}

/* --- lateral recolhida (so icones) --- */
.app.recolhida{--lateral:var(--lateral-min)}
.app.recolhida .marca-txt,
.app.recolhida .nav-busca,
.app.recolhida .selo-atualizado,
.app.recolhida .nav-grupo-cab,
.app.recolhida .nav-item .rot,
.app.recolhida .nav-item .selo,
.app.recolhida .lateral-rodape .quem{display:none}
.app.recolhida .marca-linha,
.app.recolhida .nav-item,
.app.recolhida .lateral-rodape{justify-content:center}
.app.recolhida .nav-item{padding:10px}
/* Sem cabecalho de grupo pra abrir/fechar, os itens ficam sempre visiveis
   como icones - e' pra isso que o tooltip (.nav-tip) existe. */
.app.recolhida .nav-grupo-itens{display:block}

/* =====================================================================
   AREA DE CONTEUDO
   ===================================================================== */
.conteudo{flex:1; min-width:0; display:flex; flex-direction:column}

.topo{
  height:var(--topo); flex:0 0 var(--topo);
  background:rgba(255,255,255,.85); backdrop-filter:blur(10px);
  border-bottom:1px solid var(--linha);
  display:flex; align-items:center; gap:16px; padding:0 clamp(16px,2.4vw,28px);
  position:sticky; top:0; z-index:30;
}
.bt-menu{
  background:transparent; border:1px solid var(--linha); border-radius:var(--r-sm);
  width:40px; height:40px; display:grid; place-items:center; cursor:pointer; color:var(--tinta2);
}
.bt-menu:hover{background:var(--co-50); border-color:var(--co-200); color:var(--co-600)}
.bt-menu svg{width:17px; height:17px; stroke:currentColor; fill:none; stroke-width:1.9}

/* --- skip-link: so aparece com foco de teclado, pula a navegacao --- */
.skip-link{
  position:absolute; left:12px; top:-52px; z-index:100;
  background:var(--co-600); color:#fff; padding:11px 18px; border-radius:0 0 var(--r) var(--r);
  font-weight:600; font-size:13.5px; text-decoration:none;
  transition:top var(--transicao);
}
.skip-link:focus{top:0; outline:2px solid #fff; outline-offset:-2px}

.topo-tit{min-width:0; flex:1}
.topo-tit h1{
  margin:0; font-size:17px; font-weight:700; letter-spacing:-.01em; color:var(--tinta);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.topo-tit .trilha{font-size:12px; color:var(--tinta3); margin-top:1px}
.topo-acoes{display:flex; align-items:center; gap:10px}

main.pagina{flex:1; padding:clamp(18px,2.4vw,28px); max-width:1720px; width:100%}

/* =====================================================================
   COMPONENTES
   ===================================================================== */

/* --- cartao --- */
.cartao{
  background:var(--card); border:1px solid var(--linha); border-radius:var(--r-md);
  box-shadow:var(--sombra-sm); padding:18px 20px; margin-bottom:18px;
}
.cartao>h3,.cartao>h2{margin:0 0 4px; font-size:15px; font-weight:700; letter-spacing:-.01em}
.cartao .legenda-cartao{color:var(--tinta2); font-size:12.5px; margin:0 0 16px; line-height:1.55}
.cartao .legenda-cartao code{
  background:var(--co-50); color:var(--co-700); padding:1px 5px; border-radius:4px; font-size:11.5px;
}

/* --- KPI --- */
.kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(212px,1fr)); gap:16px; margin-bottom:18px}
.kpi{
  background:var(--card); border:1px solid var(--linha); border-radius:var(--r-md);
  padding:16px 18px; box-shadow:var(--sombra-sm); position:relative; overflow:hidden; min-width:0;
}
/* Faixa superior colorida identifica a metrica sem precisar de icone. */
.kpi::before{content:""; position:absolute; inset:0 0 auto 0; height:3px; background:var(--co-400)}
.kpi.prov::before{background:var(--positivo)}
.kpi.desc::before{background:var(--negativo)}
.kpi.liq::before{background:var(--co-500)}
.kpi.col::before{background:var(--co-300)}
.kpi.med::before{background:var(--alerta)}
.kpi .rot{
  font-size:11px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--tinta3);
}
.kpi .val{
  font-size:clamp(19px,1.7vw,25px); font-weight:700; letter-spacing:-.025em; margin-top:7px;
  color:var(--tinta); font-variant-numeric:tabular-nums; overflow-wrap:anywhere; word-break:normal;
}
.kpi.prov .val{color:var(--positivo)}
.kpi.desc .val{color:var(--negativo)}
.kpi.liq .val{color:var(--co-600)}
.kpi .obs{font-size:11.5px; color:var(--tinta3); margin-top:5px}

/* --- botoes --- */
.bt{
  border:1px solid var(--linha-forte); background:var(--card); color:var(--tinta);
  font:inherit; font-size:13.5px; font-weight:600; padding:9px 16px;
  border-radius:var(--r); cursor:pointer; white-space:nowrap;
  display:inline-flex; align-items:center; gap:8px;
  transition:background var(--transicao),border-color var(--transicao),color var(--transicao),box-shadow var(--transicao);
}
.bt svg{width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.85}
.bt:hover:not(:disabled){background:var(--co-50); border-color:var(--co-300); color:var(--co-700)}
.bt:focus-visible{outline:2px solid var(--co-400); outline-offset:2px}
.bt:disabled{opacity:.5; cursor:not-allowed}
.bt.principal{
  background:var(--co-500); border-color:var(--co-500); color:#fff; box-shadow:var(--sombra-cobalto);
}
.bt.principal:hover:not(:disabled){background:var(--co-600); border-color:var(--co-600); color:#fff}
.bt.perigo:hover:not(:disabled){background:var(--negativo-cl); border-color:var(--negativo); color:var(--negativo)}
.bt.pequeno{padding:6px 11px; font-size:12.5px}

/* --- formularios --- */
.linha{display:flex; gap:16px; flex-wrap:wrap; align-items:flex-end; margin-bottom:14px}
.linha:last-child{margin-bottom:0}
.campo{display:flex; flex-direction:column; gap:6px; min-width:0}
.campo.f1{flex:1 1 180px} .campo.f2{flex:2 1 260px} .campo.curto{flex:0 0 100px}
.campo.acoes{flex-direction:row; gap:8px; align-items:flex-end; flex-wrap:wrap}
.campo>label{
  font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--tinta3);
}
.campo>label .opc{font-weight:500; text-transform:none; letter-spacing:0; color:var(--tinta3)}
.campo input,.campo select,.campo textarea{
  padding:9px 11px; border:1px solid var(--linha-forte); border-radius:var(--r);
  background:var(--card); font:inherit; font-size:13.5px; color:var(--tinta);
  width:100%; min-width:0; transition:border-color var(--transicao),box-shadow var(--transicao);
}
.campo input:focus,.campo select:focus,.campo textarea:focus{
  outline:none; border-color:var(--co-400); box-shadow:0 0 0 3px var(--co-100);
}
.campo input:disabled,.campo select:disabled{background:var(--fundo); color:var(--tinta3)}
.chk{display:flex; align-items:center; gap:9px; font-size:13.5px; cursor:pointer}
.chk input{width:16px; height:16px; accent-color:var(--co-500); cursor:pointer; flex:0 0 16px}

/* --- avisos --- */
.aviso{margin-top:12px; font-size:13.5px; line-height:1.55; border-radius:var(--r)}
.aviso:not(:empty){padding:11px 14px; border:1px solid}
.aviso.ok{background:var(--positivo-cl); color:var(--positivo); border-color:#A7F3D0}
.aviso.erro{background:var(--negativo-cl); color:var(--negativo); border-color:#FECDD3}
.aviso.info{background:var(--info-cl); color:var(--co-700); border-color:var(--co-200)}
.aviso.alerta{background:var(--alerta-cl); color:var(--alerta); border-color:#FDE68A}

/* --- etiquetas --- */
.tag{
  display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase; padding:3px 9px; border-radius:99px;
}
.tag.ok{background:var(--positivo-cl); color:var(--positivo)}
.tag.erro{background:var(--negativo-cl); color:var(--negativo)}
.tag.aviso{background:var(--alerta-cl); color:var(--alerta)}
.tag.info{background:var(--co-50); color:var(--co-600)}
.tag.neutro{background:var(--fundo); color:var(--tinta2)}

/* --- tabelas --- */
table.tab{width:100%; border-collapse:collapse; font-size:13px}
table.tab th{
  text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.06em;
  color:var(--tinta3); font-weight:700; padding:9px 12px;
  border-bottom:1px solid var(--linha); background:var(--card-2);
  position:sticky; top:0;
}
table.tab td{padding:10px 12px; border-bottom:1px solid var(--linha); vertical-align:middle}
table.tab tbody tr:last-child td{border-bottom:0}
table.tab tbody tr:hover{background:var(--co-50)}
table.tab td.num,table.tab th.num{text-align:right; font-variant-numeric:tabular-nums}
.tab-envolve{max-width:100%;overflow:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;border:1px solid var(--linha); border-radius:var(--r); background:var(--card)}

.vazio{color:var(--tinta3); font-size:13px; padding:18px; text-align:center}

/* --- estado "em construcao" --- */
.constru{
  text-align:center; padding:56px 24px; background:var(--card);
  border:1px dashed var(--linha-forte); border-radius:var(--r-md);
}
.constru .ico{
  width:52px; height:52px; margin:0 auto 16px; border-radius:15px;
  background:var(--co-50); display:grid; place-items:center;
}
.constru .ico svg{width:25px; height:25px; stroke:var(--co-500); fill:none; stroke-width:1.6}
.constru h2{margin:0 0 8px; font-size:17px; font-weight:700}
.constru p{margin:0 auto; max-width:520px; color:var(--tinta2); font-size:13.5px; line-height:1.65}
.constru .fonte{
  margin-top:18px; display:inline-block; font-size:12px; color:var(--tinta3);
  background:var(--fundo); border:1px solid var(--linha); border-radius:var(--r-sm); padding:8px 13px;
}

/* --- carregando --- */
.girando{animation:girar .8s linear infinite}
@keyframes girar{to{transform:rotate(360deg)}}

/* --- barra de ferramentas --- */
.ferramentas{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px;
}
.ferramentas .busca{position:relative; flex:1 1 260px; max-width:380px}
.ferramentas .busca input{
  width:100%; padding:9px 12px 9px 36px; border:1px solid var(--linha-forte);
  border-radius:var(--r); font:inherit; font-size:13.5px; background:var(--card);
}
.ferramentas .busca input:focus{
  outline:none; border-color:var(--co-400); box-shadow:0 0 0 3px var(--co-100);
}
.ferramentas .busca svg{
  position:absolute; left:11px; top:50%; transform:translateY(-50%);
  width:16px; height:16px; stroke:var(--tinta3); fill:none; stroke-width:1.9;
}
.ferramentas .espaco{margin-left:auto}

/* --- modal --- */
.modal{
  position:fixed; inset:0; z-index:60; display:grid; place-items:center;
  padding:20px; background:rgba(7,26,60,.52); backdrop-filter:blur(3px);
}
.modal[hidden]{display:none}
.modal-caixa{
  background:var(--card); border-radius:var(--r-lg); box-shadow:var(--sombra-lg);
  width:100%; max-width:560px; max-height:calc(100vh - 40px);
  display:flex; flex-direction:column; overflow:hidden;
  animation:sobe var(--transicao);
}
@keyframes sobe{from{opacity:0; transform:translateY(10px)}}
.modal-topo{
  padding:18px 22px; border-bottom:1px solid var(--linha);
  display:flex; align-items:center; gap:12px;
}
.modal-topo h3{margin:0; font-size:16px; font-weight:700; flex:1}
.modal-fechar{
  border:0; background:transparent; cursor:pointer; color:var(--tinta3);
  width:30px; height:30px; border-radius:var(--r-sm); display:grid; place-items:center;
}
.modal-fechar:hover{background:var(--fundo); color:var(--tinta)}
.modal-fechar svg{width:17px; height:17px; stroke:currentColor; fill:none; stroke-width:2}
.modal-corpo{padding:20px 22px; overflow-y:auto}
.modal-rodape{
  padding:15px 22px; border-top:1px solid var(--linha); background:var(--card-2);
  display:flex; gap:10px; justify-content:flex-end; flex-wrap:wrap;
}

/* --- celulas de usuario --- */
.cel-quem{display:flex; align-items:center; gap:11px; min-width:0}
.cel-quem .avatar{width:32px; height:32px; flex:0 0 32px; font-size:12px}
.cel-quem .txt{min-width:0}
.cel-quem .n{font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.cel-quem .l{font-size:12px; color:var(--tinta3)}
.cel-acoes{display:flex; gap:6px; justify-content:flex-end}
.eu-marca{
  font-size:9.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  background:var(--co-50); color:var(--co-600); padding:2px 6px; border-radius:4px; margin-left:6px;
}

/* =====================================================================
   RESPONSIVO
   ===================================================================== */
.veu{
  position:fixed; inset:0; background:rgba(7,26,60,.45); backdrop-filter:blur(2px);
  z-index:35; opacity:0; pointer-events:none; transition:opacity var(--transicao);
}
.veu.visivel{opacity:1; pointer-events:auto}

@media (max-width:1024px){
  .lateral{
    position:fixed; left:0; top:0; transform:translateX(-100%);
    transition:transform var(--transicao); box-shadow:var(--sombra-lg);
  }
  .app.aberta .lateral{transform:translateX(0)}
  .app.recolhida{--lateral:268px}
}
@media (max-width:640px){
  .kpis{grid-template-columns:1fr 1fr; gap:12px}
  .kpi .val{font-size:21px}
  main.pagina{padding:14px}
  .topo{padding:0 14px}
  .topo-tit h1{font-size:15px}
  .campo.f1,.campo.f2{flex:1 1 100%}
  .cartao{padding:16px;margin-bottom:14px}
  .linha{gap:12px}.campo,.campo.curto{flex:1 1 100%;width:100%}
  .bt,.bt-menu,.bt-sair,.modal-fechar{min-height:44px}
  .bt-menu,.bt-sair,.modal-fechar{min-width:44px}
  .bt{white-space:normal;justify-content:center;text-align:center}
  .topo{gap:10px}.topo-acoes{gap:6px}.topo-acoes .bt{padding-inline:10px;font-size:12.5px}
  .modal{padding:10px}.modal-caixa{max-height:calc(100dvh - 20px)}
  .modal-topo,.modal-corpo,.modal-rodape{padding-left:16px;padding-right:16px}
  table.tab{min-width:620px}
  .ferramentas .busca{max-width:none;flex-basis:100%}
  .campo input,.campo select,.campo textarea,.ferramentas .busca input{font-size:16px}
  .chk{min-height:44px}.chk input{width:20px;height:20px;flex-basis:20px}
  .aviso,.resultado,.constru p{overflow-wrap:anywhere}
}
@media (max-width:420px){
  .kpis{grid-template-columns:1fr}
}

@media print{
  .lateral,.topo,.veu,.bt{display:none !important}
  main.pagina{padding:0}
  .cartao{break-inside:avoid; box-shadow:none}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
/* Tema global Azul Claro — selecionado por administrador em Configuracoes. */
:root[data-tema="azul-claro"]{--co-950:#10213D;--co-900:#173B80;--co-800:#0B3EA7;--co-700:#104DBB;--co-600:#1457D9;--co-500:#1457D9;--co-400:#2E75E8;--co-300:#78A7F3;--co-200:#B9D0F8;--co-100:#DCE9FD;--co-50:#EAF2FF;--tinta:#162238;--tinta2:#526078;--tinta3:#718096;--tinta4:#C5D1E0;--linha:#E5ECF5;--linha-forte:#CFDAE8;--fundo:#F3F7FC;--card:#FFFFFF;--card-2:#F8FAFD;--info:#1457D9;--info-cl:#EAF2FF;--liq:#1457D9;--verde:#1457D9;--verde-esc:#0B3EA7;--verde-cl:#EAF2FF;--sombra-xs:0 1px 2px rgba(31,64,117,.05);--sombra-sm:0 3px 10px rgba(31,64,117,.07),0 1px 2px rgba(31,64,117,.04);--sombra-md:0 8px 22px rgba(31,64,117,.09),0 2px 5px rgba(31,64,117,.04);--sombra-lg:0 16px 38px rgba(31,64,117,.13);--sombra-cobalto:0 7px 18px rgba(20,87,217,.20);--r-sm:8px;--r:12px;--r-md:16px;--r-lg:20px}
:root[data-tema="azul-claro"] .lateral{background:#FFF;color:var(--tinta);border-right:1px solid var(--linha);box-shadow:4px 0 22px rgba(31,64,117,.05)}
:root[data-tema="azul-claro"] .lateral::after{background:var(--linha)}:root[data-tema="azul-claro"] .marca{border-bottom-color:var(--linha)}:root[data-tema="azul-claro"] .marca-sub,:root[data-tema="azul-claro"] .lateral-rodape .papel{color:var(--tinta2)}
:root[data-tema="azul-claro"] .nav-busca input{color:var(--tinta);background:var(--card-2);border-color:var(--linha)}:root[data-tema="azul-claro"] .nav-busca input::placeholder{color:var(--tinta3)}:root[data-tema="azul-claro"] .nav-busca svg{stroke:var(--tinta3)}
:root[data-tema="azul-claro"] .nav-grupo-bt,:root[data-tema="azul-claro"] .nav-item{color:var(--tinta2)}:root[data-tema="azul-claro"] .nav-item:hover,:root[data-tema="azul-claro"] .nav-item.ativo{color:var(--co-600);background:var(--co-50)}:root[data-tema="azul-claro"] .lateral-rodape{border-top-color:var(--linha)}
:root[data-tema="azul-claro"] .marca-nome{color:#10213D;font-weight:800}:root[data-tema="azul-claro"] .marca-sub{color:#3F5068}:root[data-tema="azul-claro"] .nav-grupo-rot{color:#34445C;font-weight:800}:root[data-tema="azul-claro"] .nav-grupo-seta{stroke:#526078;opacity:1}:root[data-tema="azul-claro"] .nav-item{color:#34445C;font-weight:600}:root[data-tema="azul-claro"] .nav-item svg{opacity:.95;stroke-width:1.9}:root[data-tema="azul-claro"] .nav-item:hover{color:#0B3EA7;background:#EAF2FF}:root[data-tema="azul-claro"] .nav-item.ativo{color:#0B3EA7;background:#DCE9FD;border-color:#B9D0F8;font-weight:750}:root[data-tema="azul-claro"] .nav-item.ativo::before{background:#1457D9}:root[data-tema="azul-claro"] .selo-atualizado{color:#34445C;background:#F3F7FC;border-color:#CFDAE8;font-weight:600}:root[data-tema="azul-claro"] .lateral-rodape .nome{color:#10213D;font-weight:700}:root[data-tema="azul-claro"] .lateral-rodape .papel{color:#526078;font-weight:600}:root[data-tema="azul-claro"] .bt-sair{color:#34445C;border-color:#CFDAE8}:root[data-tema="azul-claro"] .bt-sair:hover{color:#BE123C;background:#FFF1F3;border-color:#FECDD3}:root[data-tema="azul-claro"] .nav-vazio{color:#526078}
:root[data-tema="azul-claro"] .lateral{box-shadow:8px 0 32px rgba(31,64,117,.08)}
:root[data-tema="azul-claro"] .nav-grupo-bt:hover{background:#F3F7FC}
:root[data-tema="azul-claro"] .nav-item:hover{background:#EAF2FF;box-shadow:inset 0 0 0 1px #D7E5FA}
:root[data-tema="azul-claro"] .nav-item.ativo{background:linear-gradient(135deg,#E4EEFF,#F1F6FF);box-shadow:inset 0 0 0 1px #B9D0F8,0 5px 14px rgba(20,87,217,.10)}
:root[data-tema="azul-claro"] .lateral-rodape{background:rgba(243,247,252,.92)}
/* Tema global Verde — inspirado na identidade do Hospital do Coração (verde
   predominante), selecionado por administrador em Aparência. */
:root[data-tema="verde"]{--co-950:#0B2B1C;--co-900:#113D27;--co-800:#155233;--co-700:#1C6B40;--co-600:#217D4B;--co-500:#249057;--co-400:#3FAE71;--co-300:#7BCB9B;--co-200:#B3E3C6;--co-100:#DCF3E5;--co-50:#F0FAF4;--tinta:#15241C;--tinta2:#44604F;--tinta3:#7B968A;--tinta4:#C8DACE;--linha:#DCEDE2;--linha-forte:#C3DECB;--fundo:#F2FAF5;--card:#FFFFFF;--card-2:#F7FCF9;--info:#249057;--info-cl:#F0FAF4;--liq:#249057;--verde:#249057;--verde-esc:#155233;--verde-cl:#F0FAF4;--sombra-xs:0 1px 2px rgba(21,66,41,.06);--sombra-sm:0 3px 10px rgba(21,66,41,.08),0 1px 2px rgba(21,66,41,.05);--sombra-md:0 8px 22px rgba(21,66,41,.10),0 2px 5px rgba(21,66,41,.05);--sombra-lg:0 16px 38px rgba(21,66,41,.14);--sombra-cobalto:0 7px 18px rgba(36,144,87,.22);--r-sm:8px;--r:12px;--r-md:16px;--r-lg:20px}
:root[data-tema="verde"] .lateral{background:#FFF;color:var(--tinta);border-right:1px solid var(--linha);box-shadow:4px 0 22px rgba(21,66,41,.05)}
:root[data-tema="verde"] .lateral::after{background:var(--linha)}:root[data-tema="verde"] .marca{border-bottom-color:var(--linha)}:root[data-tema="verde"] .marca-sub,:root[data-tema="verde"] .lateral-rodape .papel{color:var(--tinta2)}
:root[data-tema="verde"] .nav-busca input{color:var(--tinta);background:var(--card-2);border-color:var(--linha)}:root[data-tema="verde"] .nav-busca input::placeholder{color:var(--tinta3)}:root[data-tema="verde"] .nav-busca svg{stroke:var(--tinta3)}
:root[data-tema="verde"] .nav-grupo-bt,:root[data-tema="verde"] .nav-item{color:var(--tinta2)}:root[data-tema="verde"] .nav-item:hover,:root[data-tema="verde"] .nav-item.ativo{color:var(--co-700);background:var(--co-50)}:root[data-tema="verde"] .lateral-rodape{border-top-color:var(--linha)}
:root[data-tema="verde"] .marca-nome{color:#0B2B1C;font-weight:800}:root[data-tema="verde"] .marca-sub{color:#44604F}:root[data-tema="verde"] .nav-grupo-rot{color:#1F3A2B;font-weight:800}:root[data-tema="verde"] .nav-grupo-seta{stroke:#44604F;opacity:1}:root[data-tema="verde"] .nav-item{color:#1F3A2B;font-weight:600}:root[data-tema="verde"] .nav-item svg{opacity:.95;stroke-width:1.9}:root[data-tema="verde"] .nav-item:hover{color:#155233;background:#F0FAF4}:root[data-tema="verde"] .nav-item.ativo{color:#155233;background:#DCF3E5;border-color:#B3E3C6;font-weight:750}:root[data-tema="verde"] .nav-item.ativo::before{background:#249057}:root[data-tema="verde"] .selo-atualizado{color:#1F3A2B;background:#F2FAF5;border-color:#C3DECB;font-weight:600}:root[data-tema="verde"] .lateral-rodape .nome{color:#0B2B1C;font-weight:700}:root[data-tema="verde"] .lateral-rodape .papel{color:#44604F;font-weight:600}:root[data-tema="verde"] .bt-sair{color:#1F3A2B;border-color:#C3DECB}:root[data-tema="verde"] .bt-sair:hover{color:#BE123C;background:#FFF1F3;border-color:#FECDD3}:root[data-tema="verde"] .nav-vazio{color:#44604F}
:root[data-tema="verde"] .lateral{box-shadow:8px 0 32px rgba(21,66,41,.08)}
:root[data-tema="verde"] .nav-grupo-bt:hover{background:#F2FAF5}
:root[data-tema="verde"] .nav-item:hover{background:#F0FAF4;box-shadow:inset 0 0 0 1px #D5EEDE}
:root[data-tema="verde"] .nav-item.ativo{background:linear-gradient(135deg,#E2F5E9,#F1FBF5);box-shadow:inset 0 0 0 1px #B3E3C6,0 5px 14px rgba(36,144,87,.10)}
:root[data-tema="verde"] .lateral-rodape{background:rgba(242,250,245,.92)}
