/* css/19-panel-refine.css — overrides visuais escopados p/ paineis de nota baixa.
   Gerado por 6 agentes UX/UI (2026-07-19). Aditivo, carregado por ultimo, reversivel. */


/* ===================== FATURAMENTO ===================== */
/* Faturamento SUS — flatten dos cards internos da Visao geral.
   ESCOPADO em #view-faturamento-sus, aditivo, sem !important.
   NOTA: estas classes (.fat-visao-*) existem em css/16/02.css mas o render
   atual (faturamento-sus.js) monta a aba com estilo INLINE — logo este bloco
   so tem efeito visual se/quando o render voltar a usar as classes. O flatten
   dos cards inline vivos exige editar o JS (ver deferred). */

/* Cols responsivo: 1.25fr/1fr fixo -> auto-fit + ritmo por gap */
#view-faturamento-sus .fat-visao-cols {
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 16px;
}

/* Achata o card de areas e o card de transporte: o .panel-container/#fatsus-root
   passa a ser o unico cartao (remove bg/borda/raio/sombra) */
#view-faturamento-sus .fat-visao-areas-card,
#view-faturamento-sus .fat-visao-transporte {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
/* card de areas encosta na borda do painel (mantem so ritmo vertical) */
#view-faturamento-sus .fat-visao-areas-card {
  padding-left: 0;
  padding-right: 0;
}

/* Dark: mantem flat (vence a regra body.theme-dark .fat-visao-* de 02.css) */
body.theme-dark #view-faturamento-sus .fat-visao-areas-card,
body.theme-dark #view-faturamento-sus .fat-visao-transporte {
  background: transparent;
  border: 0;
  box-shadow: none;
}


/* ===================== ATENDIMENTO-UBS ===================== */
/* ===== Override visual — Atendimento clinico UBS (#view-ubs-clinical) =====
   Aditivo e escopado; carregado por ultimo, vence por ordem/especificidade.
   Classes reais vistas em css/14 (843-872) e render js/app/units/02.js. */

/* Achata a barra de acoes: sem cartao (fundo/borda/raio/sombra), alinhada a borda */
#view-ubs-clinical .ubs-atend-header {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  margin-bottom: 16px;
}

/* CSS morto: .ubs-atend-title h3 tinha color:#fff (branco sobre fundo claro,
   invisivel se o titulo voltar ao render) — corrige o contraste */
#view-ubs-clinical .ubs-atend-title h3 { color: var(--ds-t-mid); }

/* Reduz elevacao da coluna lateral: tira a sombra, mantem a borda leve */
#view-ubs-clinical .ubs-atend-side { box-shadow: none; }

/* Reduz elevacao das colunas de fila: tira a sombra, mantem a borda leve */
#view-ubs-clinical .ubs-fila-col { box-shadow: none; }

/* Respiro maior: gaps de 14px -> 18px no layout e no quadro de filas */
#view-ubs-clinical .ubs-atend-layout { gap: 18px; }
#view-ubs-clinical .ubs-fila-board { gap: 18px; }


/* ===================== CHAMADOS ===================== */
/* ===== Painel Chamados (agenda) — reusa #view-regulacao (markup legado) =====
   FIX prioritario: cabecalho branco-sobre-branco. css/16/07.css forca
   .reg-header p/ fundo BRANCO em todo #view-regulacao, mas o header do modo
   Chamados usa o markup antigo (.reg-kicker / .reg-header h2 / .reg-sub /
   .reg-user) que tinha texto BRANCO (herdado do gradiente azul do 02-base) —
   ficando ilegivel. Estes seletores casam SO com o markup do Chamados; a
   Regulacao Assistencial reskinizada usa .reg-header-title/.reg-header-sub,
   entao a recolagem nao a afeta. Carregado por ultimo => vence sem !important.
   SO cor (contraste quebrado); nenhuma outra propriedade tocada. */

/* Kicker (rotulo caps) — acento da marca, legivel sobre a superficie branca */
#view-regulacao .reg-kicker {
  color: var(--ds-primary);
}

/* Titulo do cabecalho — texto escuro legivel */
#view-regulacao .reg-header h2 {
  color: var(--ds-t-mid);
}

/* Subtitulo e usuario — texto secundario legivel (antes branco) */
#view-regulacao .reg-sub,
#view-regulacao .reg-user {
  color: var(--ds-t-soft);
}


/* ===================== SERVIDOR ===================== */
/* ==== Painel Servidor (banco de horas) — override de ritmo/espaçamento ====
   Escopado a #view-servidor. Aditivo, sem !important (vence por ordem de cascata
   contra as regras de mesma especificidade em css/11-refinos.css). */

/* Ritmo vertical: transforma o .intranet-main (hoje só min-width:0) em coluna
   flex com gap único. Painéis .hidden (display:none) não geram gap fantasma. */
#view-servidor .intranet-main {
  display: flex;
  flex-direction: column;
  gap: 18px;
  min-width: 0;
}

/* Neutraliza margens soltas dos filhos diretos: o .mb-2 (margin-bottom:1rem)
   duplicaria o gap. .servidor-content-panel já é margin:0. */
#view-servidor .intranet-main > .mb-2 {
  margin-bottom: 0;
}

/* Grid de KPIs do resumo responsivo (auto-fit). Reforço escopado — a base
   .rh-stat-grid já é auto-fit; garante o comportamento dentro do painel. */
#view-servidor #servidor-summary-cards.rh-stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
}


/* ===================== RH ===================== */
/* ============================================================
 * OVERRIDE PAINEL RH (#view-rh) — aditivo e escopado
 * Foco: ritmo por gap, grids de KPI responsivos, abas contracheque
 * Carrega por último; vence por especificidade. Sem tokenizar.
 * ============================================================ */

/* Ritmo por gap: rh-main-content (main.intranet-main) é bloco cru
   no RH (o gap flex só existia p/ #view-intranet). Vira coluna flex
   com gap único; zeramos o mb-2 (1rem) dos cards diretos p/ não
   somar margin+gap (dobra o espaço). Resultado: 16px determinístico. */
#view-rh .intranet-main {
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-width: 0;
}
#view-rh .intranet-main > .card.mb-2 {
  margin-bottom: 0;
}

/* Grid de KPI responsivo (auto-fit): reforça o wrap fluido dos
   cartões e harmoniza o gap com o ritmo do painel. */
#view-rh .rh-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px;
  align-items: stretch;
}

/* Painéis do dashboard (grid de 12 col, span 6/12): em telas
   estreitas colapsa p/ coluna única e evita gráfico/tabela espremidos.
   Não mexe no span nas larguras normais. */
@media (max-width: 760px) {
  #view-rh .rh-dashboard-panels {
    grid-template-columns: 1fr;
  }
  #view-rh .rh-dashboard-panel,
  #view-rh .rh-dashboard-panel--full {
    grid-column: 1 / -1;
  }
}

/* Abas do contracheque: harmonização visual leve (sem reescrever).
   Arredonda o topo das abas — background/padding/underline ficam
   com o inline + refinos 11 (.is-active) intactos. */
#view-rh .rh-cc-tab {
  border-radius: 8px 8px 0 0;
}


/* ===================== RECEPTION ===================== */
/* Recepcao — refino leve: grade do formulario a prova de overflow.
   O valor efetivo de .rec-form-grid vem de css/11-refinos como
   "1fr 1fr !important"; trilha 1fr tem min-width:auto, entao um campo
   com texto longo empurra a coluna alem da trilha e gera scroll
   horizontal no corpo. minmax(0,1fr) trava as trilhas -> sem overflow.
   (usa !important apenas p/ vencer o !important ja existente) */
#view-reception .rec-form-grid{
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
}
@media (max-width: 720px){
  /* mantem o colapso mobile ja existente, tambem a prova de overflow */
  #view-reception .rec-form-grid{ grid-template-columns: minmax(0, 1fr) !important; }
}


/* ===================== FATURAMENTO (passe JS) ===================== */
/* Os cards de topo da Visao geral trocaram o chrome inline por .fat-card no
   render (faturamento-sus.js); o #fatsus-root/.panel-container e o cartao unico. */
#view-faturamento-sus .fat-card{ background:transparent; border:0; box-shadow:none; }

/* ===================== CHAMADOS (passe JS) ===================== */
/* Modo chamados marcado por .reg-mode-chamados no #view-regulacao (units/01.js).
   Achata SO os placeholders de estado; as metricas KPI seguem como tiles. */
#view-regulacao.reg-mode-chamados .reg-loading,
#view-regulacao.reg-mode-chamados .reg-empty{ background:transparent; border:0; box-shadow:none; }
