/* ══════════════════════════════════════════════════════════════════════════
   GESTÃO DE PERMISSÕES E ATRIBUIÇÕES — Administração › Configurações
   (01/10/2026) — visual de js/permissoes-granulares.js
   ══════════════════════════════════════════════════════════════════════════

   Diretrizes do dono para esta seção:
   · fundo PRETO ABSOLUTO (#000000);
   · bordas, destaques e o botão de salvar na liga DOURADO (#FFD700) →
     AMARELO CARAMELO (#D4A373); interruptor LIGADO acende em dourado;
   · "frosted glass" PLANO: retângulos finos, cantos 8–12 px, vidro jateado
     sem brilho nem gradiente de luz;
   · tipografia SANS-SERIF DO SISTEMA — a Quiche Sans (e a Urbanist do resto
     do ERP) ficam fora destes controles de leitura.

   DESEMPENHO: `backdrop-filter` só em DOIS lugares (a seção e o fundo do
   modal). Em 25/09/2026 o ERP engasgava por ter backdrop-filter em todo
   .btn-ghost — aqui nenhuma linha, botão ou interruptor leva o efeito.

   CSP: `style-src 'self'` — nenhum <style> por script; tudo mora aqui. */

.pg-secao, .pg-overlay {
  --pg-preto: #000000;
  --pg-ouro: #FFD700;
  --pg-caramelo: #D4A373;
  --pg-liga: linear-gradient(135deg, var(--pg-ouro) 0%, var(--pg-caramelo) 100%);
  --pg-borda: rgba(212, 163, 115, .42);
  --pg-borda-sutil: rgba(212, 163, 115, .20);
  --pg-vidro: rgba(255, 255, 255, .035);
  --pg-texto: #F5F1E6;
  --pg-texto-fraco: rgba(245, 241, 230, .66);
  --pg-vermelho: #F4A3A3;
  --pg-vermelho-borda: rgba(244, 163, 163, .42);
  --pg-verde: #9AD6A0;
  --pg-fonte: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  font-family: var(--pg-fonte);
  color: var(--pg-texto);
}

.pg-secao *, .pg-overlay * { font-family: inherit; }

/* ── a seção expansível ─────────────────────────────────────────────────── */
.pg-secao {
  margin-top: 18px;
  background: var(--pg-preto);
  border: 1px solid var(--pg-borda);
  border-radius: 12px;
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  overflow: hidden;
}
.pg-secao.pg-aberta { border-color: var(--pg-ouro); }

.pg-cabeca {
  all: unset;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  gap: 16px;
  width: 100%;
  padding: 18px 20px;
  cursor: pointer;
  font-family: var(--pg-fonte);
}
.pg-cabeca:focus-visible { outline: 2px solid var(--pg-ouro); outline-offset: -4px; border-radius: 12px; }
.pg-cabeca-textos { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.pg-cabeca-titulo { font-size: 17px; font-weight: 700; color: var(--pg-ouro); letter-spacing: .2px; }
.pg-cabeca-sub { font-size: 13px; line-height: 1.45; color: var(--pg-texto-fraco); text-align: justify; }
.pg-seta {
  flex: none;
  width: 10px; height: 10px;
  border-right: 2px solid var(--pg-caramelo);
  border-bottom: 2px solid var(--pg-caramelo);
  transform: rotate(45deg);
  margin-right: 4px;
  transition: transform .18s ease;
}
.pg-aberta .pg-seta { transform: rotate(-135deg); border-color: var(--pg-ouro); }

.pg-corpo { border-top: 1px solid var(--pg-borda-sutil); padding: 18px 20px 20px; }
.pg-corpo[hidden] { display: none; }

.pg-grade { display: grid; grid-template-columns: minmax(240px, 300px) 1fr; gap: 20px; align-items: start; }
@media (max-width: 900px) { .pg-grade { grid-template-columns: 1fr; } }

/* ── lista de funcionários ──────────────────────────────────────────────── */
.pg-rotulo {
  display: block;
  font-size: 11.5px; font-weight: 600; letter-spacing: .7px; text-transform: uppercase;
  color: var(--pg-caramelo);
  margin: 0 0 6px;
}
.pg-busca {
  box-sizing: border-box;
  width: 100%;
  margin: 0 0 10px;
  padding: 9px 12px;
  background: var(--pg-vidro);
  color: var(--pg-texto);
  border: 1px solid var(--pg-borda);
  border-radius: 8px;
  font-size: 14px;
}
.pg-busca::placeholder { color: var(--pg-texto-fraco); }
.pg-busca:focus { outline: none; border-color: var(--pg-ouro); }

.pg-lista { list-style: none; margin: 0; padding: 0; max-height: 420px; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; }
.pg-lista li { margin: 0; }
.pg-item {
  all: unset;
  box-sizing: border-box;
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas: "nome conta" "meta conta";
  column-gap: 10px;
  width: 100%;
  padding: 9px 12px;
  border: 1px solid var(--pg-borda-sutil);
  border-radius: 8px;
  background: var(--pg-vidro);
  cursor: pointer;
  font-family: var(--pg-fonte);
}
.pg-item:hover { border-color: var(--pg-borda); }
.pg-item:focus-visible { outline: 2px solid var(--pg-ouro); outline-offset: 1px; }
.pg-item-ativo { border-color: var(--pg-ouro); background: rgba(255, 215, 0, .07); }
.pg-item-inativo .pg-item-nome { opacity: .62; }
.pg-item-nome { grid-area: nome; font-size: 14px; font-weight: 600; color: var(--pg-texto); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pg-item-meta { grid-area: meta; font-size: 12px; color: var(--pg-texto-fraco); }
.pg-item-conta {
  grid-area: conta; align-self: center;
  font-size: 12px; font-weight: 700; color: var(--pg-caramelo);
  border: 1px solid var(--pg-borda-sutil); border-radius: 8px; padding: 2px 8px;
  font-variant-numeric: tabular-nums;
}
.pg-item-ativo .pg-item-conta { color: var(--pg-ouro); border-color: rgba(255, 215, 0, .45); }

.pg-vazio { margin: 0; padding: 14px 4px; font-size: 13.5px; color: var(--pg-texto-fraco); list-style: none; }
.pg-erro { color: var(--pg-vermelho); }

/* ── a matriz de atribuições ───────────────────────────────────────────── */
.pg-matriz { min-width: 0; }
.pg-alvo { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.pg-alvo-nome { margin: 0; font-size: 18px; font-weight: 700; color: var(--pg-texto); }
.pg-alvo-meta { margin: 3px 0 0; font-size: 13px; color: var(--pg-texto-fraco); }
.pg-alvo-conta {
  flex: none;
  font-size: 12.5px; font-weight: 700; color: var(--pg-ouro);
  border: 1px solid rgba(255, 215, 0, .45); border-radius: 8px; padding: 4px 10px;
  font-variant-numeric: tabular-nums;
}
.pg-aviso {
  margin: 0 0 14px;
  padding: 10px 12px;
  border: 1px solid var(--pg-borda);
  border-left: 3px solid var(--pg-ouro);
  border-radius: 8px;
  font-size: 13.5px; line-height: 1.5; text-align: justify;
  color: var(--pg-texto);
  background: rgba(255, 215, 0, .05);
}

.pg-grupo { margin: 0 0 14px; padding: 0; border: 1px solid var(--pg-borda-sutil); border-radius: 10px; background: var(--pg-vidro); }
.pg-grupo-titulo {
  margin-left: 12px; padding: 0 6px;
  font-size: 11.5px; font-weight: 600; letter-spacing: .7px; text-transform: uppercase;
  color: var(--pg-caramelo);
}

.pg-linha {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 12px;
  padding: 11px 14px;
  border-top: 1px solid var(--pg-borda-sutil);
}
.pg-grupo .pg-linha:first-of-type { border-top: 0; }
.pg-linha-mudou { box-shadow: inset 3px 0 0 var(--pg-ouro); background: rgba(255, 215, 0, .045); }
.pg-linha-textos { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pg-linha-rotulo { font-size: 14.5px; font-weight: 600; color: var(--pg-texto); }
.pg-linha-desc { font-size: 12.5px; line-height: 1.45; color: var(--pg-texto-fraco); text-align: justify; }
.pg-linha-nota { display: block; margin-top: 3px; font-style: normal; color: var(--pg-caramelo); }
.pg-selo-seg {
  display: inline-block; margin-left: 6px; padding: 1px 7px; vertical-align: 1px;
  font-size: 10.5px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase;
  color: var(--pg-caramelo); border: 1px solid var(--pg-borda); border-radius: 8px;
}

.pg-origem {
  font-size: 11.5px; font-weight: 600; white-space: nowrap;
  padding: 2px 8px; border-radius: 8px; border: 1px solid var(--pg-borda-sutil);
  color: var(--pg-texto-fraco);
}
.pg-origem-delegada { color: var(--pg-ouro); border-color: rgba(255, 215, 0, .40); }
.pg-origem-retirada { color: var(--pg-vermelho); border-color: var(--pg-vermelho-borda); }
.pg-origem-total { color: var(--pg-verde); border-color: rgba(154, 214, 160, .40); }
.pg-origem-pendente { color: #0A0A0A; background: var(--pg-liga); border-color: transparent; }
.pg-origem-sem_efeito, .pg-origem-implicada { color: var(--pg-caramelo); }

/* ── o interruptor: acende em DOURADO quando ativo ─────────────────────── */
.pg-switch {
  all: unset;
  box-sizing: border-box;
  display: inline-flex; align-items: center; gap: 8px;
  cursor: pointer;
  font-family: var(--pg-fonte);
  min-width: 96px;
  justify-content: flex-end;
}
.pg-switch-trilho {
  position: relative;
  flex: none;
  width: 44px; height: 24px;
  border-radius: 12px;
  background: rgba(255, 255, 255, .08);
  border: 1px solid var(--pg-borda);
  transition: background-color .16s ease, border-color .16s ease;
}
.pg-switch-botao {
  position: absolute; top: 2px; left: 2px;
  width: 18px; height: 18px; border-radius: 50%;
  background: #8E8A82;
  transition: transform .16s ease, background-color .16s ease;
}
.pg-switch-texto { font-size: 12px; font-weight: 600; color: var(--pg-texto-fraco); width: 46px; text-align: left; }
.pg-switch[aria-checked="true"] .pg-switch-trilho { background: var(--pg-ouro); border-color: var(--pg-ouro); }
.pg-switch[aria-checked="true"] .pg-switch-botao { transform: translateX(20px); background: #0A0A0A; }
.pg-switch[aria-checked="true"] .pg-switch-texto { color: var(--pg-ouro); }
/* Um anel só, em volta do trilho: o `button:focus-visible` global do ERP
   desenharia uma segunda moldura em volta do trilho + texto. */
.pg-switch:focus, .pg-switch:focus-visible { outline: none; box-shadow: none; }
.pg-switch:focus-visible .pg-switch-trilho { outline: 2px solid var(--pg-ouro); outline-offset: 3px; }
.pg-switch:disabled { cursor: not-allowed; }
.pg-switch:disabled .pg-switch-trilho { opacity: .45; }
.pg-switch:disabled .pg-switch-texto { opacity: .6; }

@media (prefers-reduced-motion: reduce) {
  .pg-switch-trilho, .pg-switch-botao, .pg-seta { transition: none; }
}

@media (max-width: 640px) {
  /* Coluna estreita: justificado abriria "rios" entre as palavras. */
  .pg-linha-desc, .pg-cabeca-sub, .pg-modal-desc, .pg-aviso { text-align: left; }
  .pg-linha { grid-template-columns: 1fr auto; grid-template-areas: "textos switch" "origem switch"; }
  .pg-linha-textos { grid-area: textos; }
  .pg-origem { grid-area: origem; justify-self: start; }
  .pg-switch { grid-area: switch; min-width: 0; }
  .pg-switch-texto { display: none; }
  .pg-cabeca, .pg-corpo { padding-left: 14px; padding-right: 14px; }
}

/* ── rodapé e botões ───────────────────────────────────────────────────── */
.pg-rodape { margin-top: 6px; padding-top: 14px; border-top: 1px solid var(--pg-borda-sutil); }
.pg-pendentes { margin: 0 0 10px; font-size: 13px; color: var(--pg-texto-fraco); }
.pg-botoes { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.pg-botoes-dir { display: inline-flex; gap: 10px; margin-left: auto; }

.pg-btn {
  all: unset;
  box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 40px;
  padding: 9px 18px;
  border-radius: 8px;
  font-family: var(--pg-fonte);
  font-size: 14px; font-weight: 700; letter-spacing: .3px;
  cursor: pointer;
  text-align: center;
}
.pg-btn:focus-visible { outline: 2px solid var(--pg-ouro); outline-offset: 2px; }
.pg-btn:disabled { cursor: not-allowed; opacity: .45; }
.pg-btn-ouro { background: var(--pg-liga); color: #0A0A0A; border: 1px solid transparent; }
.pg-btn-ouro:hover:not(:disabled) { filter: brightness(1.06); }
.pg-btn-neutro { background: transparent; color: var(--pg-texto); border: 1px solid var(--pg-borda); }
.pg-btn-neutro:hover:not(:disabled) { border-color: var(--pg-caramelo); }
/* "Excluir todas as atribuições": vermelho SUTIL — contorno e texto, nunca um bloco cheio. */
.pg-btn-reset { background: transparent; color: var(--pg-vermelho); border: 1px solid var(--pg-vermelho-borda); font-weight: 600; }
.pg-btn-reset:hover:not(:disabled) { background: rgba(244, 163, 163, .08); }
.pg-btn-perigo { background: #7A1F1F; color: #FFF3F3; border: 1px solid #C25B5B; }
.pg-btn-perigo:hover:not(:disabled) { background: #8C2626; }

/* ── modal da senha do Administrador Master ────────────────────────────── */
.pg-overlay {
  position: fixed !important;
  inset: 0;
  z-index: 2147483000;
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
  background: rgba(0, 0, 0, .74);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.pg-overlay[hidden] { display: none; }
.pg-modal {
  box-sizing: border-box;
  width: 100%; max-width: 540px; max-height: calc(100vh - 32px); overflow-y: auto;
  padding: 24px;
  background: var(--pg-preto);
  border: 1px solid var(--pg-ouro);
  border-radius: 12px;
  box-shadow: 0 18px 56px rgba(0, 0, 0, .7);
}
.pg-modal-perigo { border-color: #C25B5B; }
.pg-modal-selo {
  display: inline-block; margin-bottom: 10px; padding: 3px 10px;
  font-size: 11px; font-weight: 700; letter-spacing: .7px; text-transform: uppercase;
  color: var(--pg-ouro); border: 1px solid rgba(255, 215, 0, .45); border-radius: 8px;
}
.pg-modal-titulo { margin: 0 0 8px; font-size: 20px; font-weight: 700; color: var(--pg-texto); }
.pg-modal-desc { margin: 0 0 14px; font-size: 13px; line-height: 1.5; color: var(--pg-texto-fraco); text-align: justify; }
.pg-modal-resumo {
  margin: 0 0 16px; padding: 12px 14px;
  border: 1px solid var(--pg-borda-sutil); border-radius: 10px; background: var(--pg-vidro);
  font-size: 13.5px; line-height: 1.5;
}
.pg-modal-resumo:empty { display: none; }
.pg-modal-resumo p { margin: 0 0 6px; }
.pg-modal-resumo ul { margin: 0; padding-left: 18px; }
.pg-modal-resumo li { margin: 2px 0; }
.pg-modal-obs { margin-top: 8px !important; color: var(--pg-texto-fraco); font-size: 12.5px; }
.pg-modal-campo { display: block; font-size: 12px; font-weight: 600; letter-spacing: .5px; color: var(--pg-caramelo); margin: 0; }
.pg-modal-campo input {
  box-sizing: border-box; display: block; width: 100%;
  margin-top: 6px; padding: 11px 12px;
  background: rgba(255, 255, 255, .05); color: var(--pg-texto);
  border: 1px solid var(--pg-borda); border-radius: 8px;
  font-size: 15px; letter-spacing: 1px;
}
.pg-modal-campo input:focus { outline: none; border-color: var(--pg-ouro); }
.pg-modal-erro { min-height: 20px; margin: 8px 0 4px; font-size: 13px; color: var(--pg-vermelho); }
.pg-modal-botoes { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; }

/* ── estoque só leitura ("Acesso ao estoque" sem "Gestão completa") ─────────
   A classe vem de app.js (entrarNoApp). Esconde os botões de ESCRITA da tela
   de insumos e protocolos; Histórico, CSV/PDF e a consulta ficam. Só
   interface: toda escrita em /api/estoque recusa 403 sem a gestão. */
body.pg-estoque-leitura .ins-modulo button[onclick*="EstoqueUI.movimentar"],
body.pg-estoque-leitura .ins-modulo button[onclick*="EstoqueUI.formItem"],
body.pg-estoque-leitura .ins-modulo button[onclick*="EstoqueUI.desativar"],
body.pg-estoque-leitura .ins-modulo button[onclick*="EstoqueUI.formProtocolo"] { display: none !important; }

/* ── PENDENCIAS PERMISSOES (02/10/2026): sem "Exportação de relatórios gerenciais
   e dados" ──────────────────────────────────────────────────────────────────────
   A classe vem de app.js (entrarNoApp). Esconde os botões de CSV/PDF de
   Pacientes, Financeiro (tudo e por janela), RH, Estoque, Central de dados e dos
   relatórios do RH, e o "Relatório individual". Só interface: exportarCSV e
   imprimirRelatorio recusam por baixo, e o XML TISS é recusado pela rota. O PDF
   e o .docx da RECEITA assinada não entram: são o documento do paciente. */
body.pg-sem-exportacao button[onclick*="exportarCSVModulo"],
body.pg-sem-exportacao button[onclick*="imprimirModulo"],
body.pg-sem-exportacao #adm-export,
body.pg-sem-exportacao button[data-fin-acao="csv"],
body.pg-sem-exportacao button[data-fin-acao="pdf"],
body.pg-sem-exportacao button[data-acao="rel-csv"],
body.pg-sem-exportacao button[data-acao="rel-imprimir"],
body.pg-sem-exportacao button[data-acao="rec-csv"],
body.pg-sem-exportacao button[data-acao="realizados-csv"],
body.pg-sem-exportacao button[data-acao="pac-imprimir"] { display: none !important; }
/* O bloco financeiro do painel do RH, quando o servidor não o manda (atributo hidden). */
.rh-painel[hidden] { display: none !important; }
