:root {
  --primary: #032D39;  /* Gunmetal — cor da marca Buch (28/out/2026) */
  --primary-hover: #0A3D4C;
  --accent: #1687a7;
  --background: #f4f7fa;
  --surface: #ffffff;
  --text: #1d2a35;
  --muted: #55636d;
  --border: #dce5eb;
  --danger: #a83232;
  --success: #277649;
  --shadow: 0 12px 35px rgba(10, 61, 98, 0.08);
  /* Nomes antigos ainda usados em 31 telas (Quadro, Reuniões, módulos de 09/set).
     Sem estes apelidos o fundo das abas ativas sumia e o texto branco ficava
     invisível (revisão de design 28/out/2026). Os temas Sol e Clínica
     redefinem os mesmos nomes depois — continuam valendo. */
  --navy: var(--primary);
  --blue: var(--primary);
  --pale: var(--background);
  --line: var(--border);
  --ink: var(--text);
}

* { box-sizing: border-box; }

html { min-height: 100%; }

body {
  min-height: 100vh;
  margin: 0;
  background: var(--background);
  color: var(--text);
  font-family: Poppins, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  font-variant-numeric: tabular-nums;
  font-size: 15px;
  line-height: 1.55;
}

a { color: var(--primary); text-decoration: none; }

.convenio-periodo-form {
  display: flex;
  align-items: end;
  gap: 18px;
  margin-bottom: 20px;
}
.convenio-periodo-form label { flex: 0 1 220px; margin: 0; }
.convenio-periodo-form a { padding: 10px 0; }
.convenio-lista { overflow-x: auto; }
.convenio-funcionario-row > td { padding: 0; }
.convenio-funcionario-row details { min-width: 600px; }
.convenio-funcionario-row summary {
  display: grid;
  grid-template-columns: 1fr 180px 220px;
  align-items: center;
  padding: 14px 12px;
  cursor: pointer;
  list-style: none;
}
.convenio-funcionario-row summary::-webkit-details-marker { display: none; }
.convenio-funcionario-row summary::before { content: "\25B6"; margin-right: 8px; }
.convenio-funcionario-row summary { grid-template-columns: 20px 1fr 180px 220px; }
.convenio-funcionario-row details[open] summary::before { content: "\25BC"; }
.convenio-compras { padding: 0 32px 20px; background: var(--background); }
.convenio-compras table { background: var(--surface); }
.convenio-detalhes-link { display: inline-block; margin-top: 14px; font-weight: 700; }
.lancamento-acoes { display: flex; align-items: flex-start; gap: 12px; }
.lancamento-acoes form { margin: 0; }
.lancamento-edicao { position: relative; }
.lancamento-edicao > summary { color: var(--primary); cursor: pointer; }
.lancamento-edicao[open] > form {
  position: absolute;
  z-index: 2;
  right: 0;
  width: 330px;
  padding: 18px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}
.lancamento-edicao label { margin-top: 8px; }
.lancamento-edicao .button { margin-top: 10px; }
a:hover { color: var(--primary-hover); }

.topbar {
  min-height: 68px;
  padding: 0 max(24px, calc((100% - 1120px) / 2));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  color: #fff;
  background: var(--primary);
  box-shadow: 0 3px 14px rgba(3, 45, 57, 0.18);
}

.brand { color: #fff; font-size: 21px; font-weight: 800; letter-spacing: -0.02em; }
.brand:hover, .topbar nav a:hover { color: #cfeaf2; }
.topbar nav { display: flex; align-items: center; gap: 22px; }
.topbar nav a, .link-button { color: #fff; }
.topbar form { margin: 0; }
.link-button { padding: 0; border: 0; background: none; font: inherit; cursor: pointer; }

.container { width: 100%; max-width: 1120px; margin: 0 auto; padding: 40px 24px 64px; }
.results-page .container {
  width: 100%;
  max-width: none;
  padding-right: 24px;
  padding-left: 24px;
}
.quadro-page .container {
  width: 100%;
  max-width: none;
  padding-right: 24px;
  padding-left: 24px;
}
.matriculas-page .container {
  width: 100%;
  max-width: none;
  padding-right: 24px;
  padding-left: 24px;
}
.context-bar {
  position: sticky;
  top: 0;
  z-index: 20;
  min-height: 42px;
  padding: 8px max(24px, calc((100% - 1120px) / 2));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  color: #10384e;
  background: #d9eef4;
  border-bottom: 1px solid #b9dce6;
}
.context-bar a { font-weight: 750; text-decoration: underline; display: inline-flex; align-items: center; min-height: 32px; }

h1, h2, h3 { line-height: 1.2; letter-spacing: -0.025em; }
h1 { margin: 0 0 6px; font-size: clamp(28px, 4vw, 36px); }
h2 { margin: 30px 0 15px; font-size: 22px; }
p { margin: 8px 0 18px; }
.muted { color: var(--muted); }

.panel, .stat {
  padding: 25px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.page-heading {
  margin-bottom: 30px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}

.login-wrap { min-height: calc(100vh - 104px); display: grid; place-items: center; }
.login-card { width: min(430px, 100%); padding: 38px; }
.login-card h1 { margin-top: 22px; }
.logo-mark {
  width: 56px;
  height: 56px;
  display: grid;
  place-items: center;
  border-radius: 14px;
  color: #fff;
  background: linear-gradient(135deg, var(--primary), var(--accent));
  font-size: 20px;
  font-weight: 800;
}

label { display: block; margin: 17px 0; font-size: 14px; font-weight: 700; }

input, select, textarea {
  width: 100%;
  margin-top: 7px;
  padding: 12px 13px;
  border: 1px solid #bdcbd5;
  border-radius: 9px;
  outline: none;
  background: #fff;
  color: var(--text);
  font: inherit;
  transition: border-color .18s, box-shadow .18s;
}

input:focus, select:focus, textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(22, 135, 167, 0.14);
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 10px 19px;
  border: 0;
  border-radius: 9px;
  color: #fff;
  background: var(--primary);
  font: inherit;
  font-weight: 750;
  cursor: pointer;
  transition: transform .15s, background .15s, box-shadow .15s;
}

.button:hover {
  transform: translateY(-1px);
  color: #fff;
  background: var(--primary-hover);
  box-shadow: 0 7px 18px rgba(10, 61, 98, .18);
}

.button.secondary { color: var(--primary); background: #e8f0f5; }
.button.secondary:hover { color: var(--primary); background: #dce9f0; }
.button.full { width: 100%; margin-top: 7px; }

.fechamento-form-card { width: min(620px, 100%); margin: 0 auto; }
.fechamento-form-title { margin-top: 0; }
.form-note { margin: 22px 0 10px; font-weight: 700; }
.form-label-detail { font-weight: 400; }
.upload-field {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--background);
}
.upload-field label:first-child { margin-top: 0; }
.upload-field input:last-child { margin-bottom: 0; }
.delivery-fields { display: none; }
.delivery-help { margin: 6px 0 10px; font-size: 14px; }
textarea {
  min-height: 90px;
  resize: vertical;
}
.form-status-message { display: none; padding: 30px 10px; text-align: center; }
.form-progress {
  display: none;
  margin-top: 14px;
  padding: 12px 14px;
  border: 1px solid #c8dce7;
  border-radius: 9px;
  color: #35596d;
  background: #eef6fa;
  font-size: 14px;
  text-align: center;
}
.form-duplicate-warning {
  display: none;
  margin-top: 14px;
  padding: 14px;
  border: 1px solid #edcaca;
  border-radius: 9px;
  color: var(--danger);
  background: #fae5e5;
  font-size: 14px;
}

.module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.client-context-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.context-client-card { display: flex; min-height: 210px; flex-direction: column; }
.context-client-card h2 { margin: 20px 0 4px; }
.context-client-card p { flex: 1; }
.status-dot {
  display: inline-block;
  width: 9px;
  height: 9px;
  margin-right: 5px;
  border-radius: 50%;
  background: #2e9c63;
}
.status-dot.inactive { background: #aeb8be; }
.status-label { color: var(--muted); font-size: 12px; }
.module-card { display: flex; min-height: 230px; flex-direction: column; transition: transform .18s, box-shadow .18s; }
.module-card:hover { transform: translateY(-3px); box-shadow: 0 17px 38px rgba(10, 61, 98, .13); }
.module-card h2 { margin: 17px 0 7px; }
.module-card p { flex: 1; color: var(--muted); }
.module-card .button { align-self: flex-start; }
.module-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; }
.module-icon {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: var(--primary);
  background: #dff0f5;
  font-size: 24px;
}

.upload-card { display: flex; align-items: end; gap: 20px; }
.upload-card label { flex: 1; }
.upload-card small { padding-bottom: 12px; color: var(--muted); }
.button:disabled { opacity: .68; cursor: wait; transform: none; box-shadow: none; }
.processing-panel {
  margin-top: 16px;
  padding: 18px 20px;
  border: 1px solid #c8dce7;
  border-radius: 10px;
  background: #eef6fa;
}
.processing-panel[hidden] { display: none; }
.processing-panel p { margin: 11px 0 0; color: #35596d; }
.indeterminate-progress {
  position: relative;
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: #c9dce6;
}
.indeterminate-progress span {
  position: absolute;
  inset: 0 auto 0 -40%;
  width: 40%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--primary), var(--accent));
  animation: loading-slide 1.15s ease-in-out infinite;
}
@keyframes loading-slide {
  0% { left: -40%; }
  100% { left: 100%; }
}

.stats-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; }
.stat { padding: 18px; box-shadow: 0 5px 18px rgba(10, 61, 98, .05); }
.stat span { display: block; color: var(--muted); font-size: 12px; }
.stat strong { font-size: 23px; }
.stat.warning { border-top: 4px solid #e3a21a; }
.stat.danger { border-top: 4px solid var(--danger); }

.alert { margin-bottom: 20px; padding: 14px 17px; border-radius: 9px; }
.alert-error { color: #852626; background: #fae5e5; }
.alert-success { color: #21613d; background: #e2f3e8; }

.table-wrap { overflow-x: auto; }
.table-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.table-actions form { margin: 0; }
.delete-button {
  padding: 0;
  border: 0;
  color: var(--danger);
  background: none;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.delete-button:hover { text-decoration: underline; }
.heading-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.result-stats { margin-bottom: 24px; }
.analysis-scope-note {
  margin: 0 0 22px;
  padding: 13px 16px;
  border-left: 4px solid var(--accent);
  border-radius: 7px;
  color: #35596d;
  background: #eaf4f8;
  font-size: 13px;
}
.analysis-scope-note span { display: block; margin-top: 4px; }
.analysis-guidance {
  margin: 0 0 14px;
  padding: 13px 16px;
  border-left: 4px solid #d59a16;
  border-radius: 7px;
  color: #614b12;
  background: #fff6d8;
  font-size: 13px;
}
.grid-panel { padding: 0; overflow: hidden; }
.results-page .grid-panel {
  width: 100%;
  min-width: 0;
}
.grid-toolbar { padding: 18px 18px 0; border-bottom: 1px solid var(--border); }
.tabs { display: flex; gap: 5px; overflow-x: auto; }
.tab {
  padding: 11px 14px;
  border: 0;
  border-bottom: 3px solid transparent;
  color: var(--muted);
  background: transparent;
  font: inherit;
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
}
.tab:hover { color: var(--primary); }
.tab.active { color: var(--primary); border-bottom-color: var(--primary); }
.tab span { font-size: 12px; font-weight: 500; }
.grid-actions {
  padding: 15px 0;
  display: flex;
  justify-content: space-between;
  gap: 14px;
}
.grid-actions input { max-width: 420px; margin: 0; }
.grid-status { padding: 9px 18px; color: var(--muted); background: #f9fbfc; font-size: 13px; }
.grid-status.error { color: var(--danger); }
.resultados-grid {
  width: 100%;
  min-width: 0;
  height: 650px;
  overflow-x: auto;
  --ag-font-size: 12px;
  --ag-grid-size: 4px;
  --ag-row-height: 34px;
  --ag-list-item-height: 30px;
}
.resultados-grid .ag-header-cell {
  cursor: pointer;
}
.resultados-grid .ag-header-cell:hover {
  background: #e8f2f7;
}
.resultados-grid .ag-sort-indicator-container,
.resultados-grid .ag-header-icon {
  opacity: 1 !important;
  color: var(--primary);
}
.resultados-grid .ag-header-cell-label::after {
  content: "↕";
  margin-left: 7px;
  color: #66879a;
  font-size: 12px;
}
.resultados-grid .ag-header-cell-sorted-asc .ag-header-cell-label::after {
  content: "↑";
  color: var(--primary);
}
.resultados-grid .ag-header-cell-label {
  align-items: center;
  min-width: 0;
  overflow: visible;
}
.resultados-grid .ag-header-cell-text {
  overflow: visible !important;
  white-space: normal !important;
  text-overflow: clip !important;
  line-height: 1.25;
  font-size: 12.5px;
  font-weight: 750;
}
.resultados-grid .ag-header-cell-sorted-desc .ag-header-cell-label::after {
  content: "↓";
  color: var(--primary);
}
.anomaly-badges {
  min-height: 30px;
  padding: 2px 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
}
.anomaly-badge {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 750;
  line-height: 1.2;
  white-space: nowrap;
}
.anomaly-badge.custo-suspeito { color: #743500; background: #ffc98d; }
.anomaly-badge.preco-irrisorio { color: #59247a; background: #e4c6f4; }
.anomaly-badge.margem-negativa { color: #fff; background: #7f1d1d; }
.anomaly-badge.sem-preco { color: #fff; background: #4b5563; }
.anomaly-badge.custo-nao-atualizado { color: #fff; background: #2563a8; }
.anomaly-badge.cadastro-fantasma { color: #fff; background: #4c274f; }
.anomaly-badge.ambos-zerados { color: #fff; background: #111; }
.anomaly-filter {
  min-width: 255px;
  padding: 15px;
  color: var(--text);
  background: #fff;
}
.anomaly-filter strong { display: block; margin-bottom: 10px; }
.anomaly-filter label {
  margin: 7px 0;
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 500;
}
.anomaly-filter input { width: auto; margin: 0; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 13px 12px; border-bottom: 1px solid var(--border); text-align: left; }
th { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
.badge { padding: 4px 9px; border-radius: 999px; background: #edf0f2; }
.badge.sucesso { color: var(--success); background: #dff2e6; }
.badge.erro { color: var(--danger); background: #f8dddd; }

.admin-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.admin-grid h2 { margin-top: 0; }
.client-row {
  margin-bottom: 15px;
  display: grid;
  grid-template-columns: 1.2fr 1fr auto;
  align-items: end;
  gap: 24px;
}
.check { font-weight: 400; }
.check input { display: inline; width: auto; margin-right: 7px; }
.empty { padding: 44px; text-align: center; }

@media (max-width: 900px) {
  .stats-grid { grid-template-columns: repeat(2, 1fr); }
  .module-grid, .client-context-grid { grid-template-columns: repeat(2, 1fr); }
  .client-row { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .container { padding: 24px 12px 46px; }
  .results-page .container { padding-right: 12px; padding-left: 12px; }
  .quadro-page .container { padding-right: 12px; padding-left: 12px; }
  .matriculas-page .container { padding-right: 12px; padding-left: 12px; }
  .topbar {
    min-height: auto;
    padding: 11px 12px 12px;
    align-items: stretch;
    flex-direction: column;
    gap: 8px;
  }
  .brand {
    font-size: 18px;
    line-height: 1.2;
    white-space: nowrap;
  }
  .topbar nav {
    width: 100%;
    justify-content: space-between;
    gap: 7px;
    font-size: 11.5px;
    white-space: nowrap;
  }
  .topbar nav a, .topbar nav form { flex: 0 0 auto; }
  .context-bar {
    padding: 8px 12px;
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
    font-size: 12px;
  }
  .panel { width: 100%; padding: 18px 14px; }
  .page-heading { align-items: flex-start; flex-direction: column; }
  .page-heading .button { width: 100%; }
  input, select, textarea {
    min-width: 0;
    max-width: 100%;
    font-size: 16px;
  }
  input[type="file"] {
    overflow: hidden;
    padding: 9px;
    font-size: 14px;
  }
  input[type="file"]::file-selector-button {
    max-width: 100%;
    margin-right: 8px;
    padding: 8px 10px;
    border: 0;
    border-radius: 7px;
    color: var(--primary);
    background: #e8f0f5;
    font: inherit;
    font-weight: 700;
  }
  .fechamento-form-card { margin: 0; }
  .upload-field { padding: 12px 10px; }
  #enviarBtn { min-height: 48px; }
  .module-grid, .admin-grid, .client-context-grid { grid-template-columns: 1fr; }
  .upload-card { display: block; }
  .grid-actions { align-items: stretch; flex-direction: column; }
  .grid-actions input { max-width: none; }
  .resultados-grid { height: 560px; }
  .login-card { padding: 28px 23px; }
}

/* ==========================================================================
   Botao Voltar -- padronizado em 16/set/2026 em todas as telas e clientes.

   Antes eram 13 formas diferentes de escrever a mesma coisa, todas como
   link de texto de ~20px de altura. O contraste estava OK (11,31:1, o
   --primary sobre branco); o problema era alvo de toque e falta de
   affordance: nao parecia um controle, parecia texto.

   Agora: bloco preenchido em --primary, 44px de altura, largura total no
   celular e anel de foco por teclado -- que nao existia em tela nenhuma.
   Branco sobre --primary da 11,31:1 (AAA).

   A seta e mask CSS, nao SVG repetido em 44 templates: herda a cor do
   texto e muda num lugar so.
   ========================================================================== */
:root {
  --voltar-hover: #072d49;
  --voltar-seta: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 12H5'/%3E%3Cpath d='M12 19l-7-7 7-7'/%3E%3C/svg%3E");
}

.voltar {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 44px;
  padding: 0 20px 0 16px;
  border: 0;
  border-radius: 8px;
  background: var(--primary);
  color: #fff;
  font-size: 14.5px;
  font-weight: 600;
  text-decoration: none;
  margin-bottom: 18px;
  transition: background .14s;
}

.voltar::before {
  content: "";
  width: 17px;
  height: 17px;
  flex: 0 0 auto;
  background-color: currentColor;
  -webkit-mask: var(--voltar-seta) center / contain no-repeat;
  mask: var(--voltar-seta) center / contain no-repeat;
}

.voltar:hover { background: var(--voltar-hover); color: #fff; }

.voltar:focus-visible { outline: 3px solid var(--voltar-hover); outline-offset: 2px; }

@media (max-width: 640px) {
  .voltar { width: 100%; justify-content: center; padding: 0 16px; }
}

/* Filtros da lista de Matriculas -- 16/set/2026.
   Sao links, nao JS: o estado fica na URL, entao a tela e compartilhavel,
   o botao voltar do navegador funciona e nada depende de script.
   Cada situacao tem cor propria. A borda de 2px na cor forte existe pra
   cumprir o WCAG 1.4.11 (3:1 no limite de componente interativo) -- o
   fundo claro sozinho da ~1,2:1 contra a pagina e nao serve de limite.
   Desligado usa borda tracejada alem da cor apagada: quem nao distingue
   cor ainda enxerga o estado. */
.filtros{display:flex;flex-direction:column;gap:14px;margin-bottom:16px}
.filtro-grupo{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.filtro-rotulo{font-size:12px;font-weight:700;letter-spacing:.06em;
text-transform:uppercase;color:var(--muted);flex:0 0 92px}
.chips{display:flex;gap:9px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:7px;min-height:44px;
padding:0 15px;border-radius:999px;border:2px solid;font-size:14px;
font-weight:600;text-decoration:none;transition:background .12s,border-color .12s}
.chip b{font-weight:800;font-variant-numeric:tabular-nums}
.chip:focus-visible{outline:3px solid var(--primary);outline-offset:2px}
.chip-ativa{background:#e3f2e9;border-color:#1d6640;color:#1d6640}
.chip-a_vencer{background:#fdf0d5;border-color:#7a4d00;color:#7a4d00}
.chip-vencida{background:#fbe8e8;border-color:#a02c2c;color:#a02c2c}
.chip-encerrada{background:#e9eef2;border-color:#465561;color:#465561}
.chip-cancelada{background:#f7e6ed;border-color:#6b2440;color:#6b2440}
.chip-ano{background:#e7eef4;border-color:var(--primary);color:var(--primary)}
.chip.off{background:var(--surface);border-color:var(--muted);
border-style:dashed;color:var(--muted);font-weight:500}
.chip.off b{font-weight:600}
.filtro-aviso{margin:0;font-size:13.5px;color:var(--muted)}
.filtro-aviso a{font-weight:700}
@media(max-width:640px){
  .filtro-grupo{flex-direction:column;align-items:stretch;gap:8px}
  .filtro-rotulo{flex:none}
  .chip{flex:1 1 auto;justify-content:center}
}

/* 25/09 — ajuste mobile: topo, filtro e lista do Convenio (antes estourava a largura da tela) */
@media(max-width:640px){
.topbar nav{flex-wrap:wrap;justify-content:flex-start;gap:6px 14px;white-space:normal;font-size:13px}
.topbar nav a,.topbar nav form{flex:0 0 auto;padding:6px 0}
.convenio-periodo-form{flex-wrap:wrap;gap:10px;align-items:stretch}
.convenio-periodo-form label{flex:1 1 calc(50% - 5px);min-width:0}
.convenio-periodo-form label input{min-width:0}
.convenio-periodo-form .button{flex:1 1 100%;min-height:44px}
.convenio-periodo-form a{flex:1 1 100%;text-align:center}
.convenio-lista{padding:8px 10px}
.convenio-lista>table>thead{display:none}
.convenio-funcionario-row details{min-width:0}
.convenio-funcionario-row summary{grid-template-columns:18px 1fr auto;grid-template-areas:"seta nome nome" ". qtd saldo";row-gap:4px;padding:14px 6px}
.convenio-funcionario-row summary:before{grid-area:seta}
.convenio-funcionario-row summary>span:nth-of-type(1){grid-area:nome}
.convenio-funcionario-row summary>span:nth-of-type(2){grid-area:qtd;color:var(--text, #20303c);font-size:14px}
.convenio-funcionario-row summary>span:nth-of-type(2):after{content:" compra(s)"}
.convenio-funcionario-row summary>span:nth-of-type(3){grid-area:saldo;font-weight:700;text-align:right;white-space:nowrap}
.convenio-compras{padding:0 6px 14px}
.convenio-compras table th,.convenio-compras table td{padding:8px 6px;font-size:14px}
.convenio-compras table td:first-child,.convenio-compras table td:last-child{white-space:nowrap}
}

/* 25/09 — tela de conferencia do fechamento (convenio) */
.conferencia-resumo { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-bottom: 20px; }
.conferencia-resumo .stat span { color: var(--text); }
.conferencia-tabela .conferencia-valor { text-align: right; white-space: nowrap; }
.conferencia-tabela tfoot td { border-top: 2px solid var(--line); }
.conferencia-repetida td { background: #fae5e5; }
.conferencia-flag { display: inline-block; margin-top: 4px; padding: 2px 8px; border-radius: 999px; color: #852626; background: #fae5e5; font-size: 13px; font-weight: bold; }
.conferencia-repetida .conferencia-flag { background: #fff; }
.conferencia-acoes { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-top: 20px; }
.conferencia-acoes form { margin: 0; }
.conferencia-acoes .button { min-height: 44px; }
@media (max-width: 640px) {
  .conferencia-resumo { grid-template-columns: 1fr 1fr; gap: 10px; }
  .conferencia-resumo .stat { padding: 12px; }
  .conferencia-resumo .stat strong { font-size: 19px; }
  .conferencia-tabela th:first-child, .conferencia-tabela td:first-child { display: none; }
  .conferencia-acoes { flex-direction: column; align-items: stretch; }
  .conferencia-acoes .button { width: 100%; text-align: center; }
}

/* ==========================================================================
   Revisão de design — 28/out/2026 (leis de Hick, Fitts, Jakob, Gestalt e
   hierarquia visual). Regras únicas para o painel inteiro:
   - alvo clicável com no mínimo 44px de altura;
   - escala de fonte única: 13 / 15 / 18 / 22 / 32;
   - o botão escuro é só a ação principal; "Voltar" é link de navegação.
   ========================================================================== */
:root {
  --fs-xs: 13px; --fs-base: 15px; --fs-md: 18px; --fs-lg: 22px; --fs-xl: 32px;
  --alvo: 44px;
}

/* --- Voltar: navegação, não ação. Alvo de 44px mantido, peso visual baixo. */
.voltar {
  min-height: var(--alvo);
  padding: 0 10px 0 0;
  margin-bottom: 10px;
  background: transparent;
  color: var(--primary);
  font-size: var(--fs-base);
  font-weight: 650;
}
.voltar:hover { background: transparent; color: var(--primary-hover); text-decoration: underline; }
/* Os temas Sol e Clínica carregam depois e pintavam o Voltar como botão:
   seletor mais específico para valer a regra única. */
body.tema-sol main.container a.voltar, body.tema-clinica main.container a.voltar {
  background: transparent; color: var(--navy); border-radius: 0; padding: 0 10px 0 0;
}
body.tema-sol main.container a.voltar:hover, body.tema-clinica main.container a.voltar:hover {
  background: transparent; color: var(--navy); text-decoration: underline;
}
.page-heading .button, .heading-actions .button { white-space: nowrap; }
@media (max-width: 640px) { .voltar { width: auto; justify-content: flex-start; padding: 0 10px 0 0; } }

/* --- Menu do topo: poucos itens, alvo de 44px, item atual marcado. */
.topbar nav a, .topbar nav .link-button {
  display: inline-flex; align-items: center; min-height: var(--alvo); padding: 0 4px;
}
.topbar nav a.ativo { box-shadow: inset 0 -3px 0 #fff; font-weight: 700; }
@media (max-width: 640px) {
  .topbar { flex-direction: row; align-items: center; padding: 6px 12px; gap: 12px; }
  .topbar nav { width: auto; flex-wrap: nowrap; justify-content: flex-end; gap: 14px; font-size: 14px; }
  .topbar nav a, .topbar nav form { padding: 0; }
}

/* --- Alvos mínimos: botões e campos. */
.button, button.button, .chip, .tab,
.container select:not([class*="ag-"]),
.container input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]):not([class*="ag-"]) {
  min-height: var(--alvo);
}
.badge { font-size: var(--fs-xs); }
th { font-size: var(--fs-xs); color: var(--text); }
.muted, .stat span, .status-label { color: #4a5964; }  /* contraste AA sobre branco e fundo */

/* --- Dashboard: o que pede ação primeiro; card inteiro clicável. */
.dash-sub { margin: 0; color: var(--text); }
.dash-atencao { margin: 0 0 28px; }
.dash-atencao h2 { margin: 0 0 12px; font-size: var(--fs-md); }
.dash-atencao-lista { display: flex; flex-wrap: wrap; gap: 10px; }
.dash-alerta {
  display: inline-flex; align-items: center; gap: 6px; min-height: var(--alvo);
  padding: 8px 16px; border-radius: 12px; border: 2px solid; background: var(--surface);
  color: var(--text); font-size: var(--fs-base);
}
.dash-alerta strong { font-size: var(--fs-md); }
.dash-alerta span { margin-left: 6px; padding-left: 10px; border-left: 1px solid var(--border); font-size: var(--fs-xs); }
.dash-alerta.perigo { border-color: var(--danger); }
.dash-alerta.perigo strong { color: var(--danger); }
.dash-alerta.alerta { border-color: #b7791f; }
.dash-alerta.alerta strong { color: #8a5a00; }
.dash-alerta:hover { background: #f7fafc; color: var(--text); }
.module-card { position: relative; min-height: 200px; cursor: pointer; }
.module-card.em-breve { cursor: default; }
.module-card .module-topo { display: flex; align-items: center; justify-content: space-between; }
.module-card .module-icon { font-size: var(--fs-lg); font-weight: 800; }
.module-card h2 { font-size: var(--fs-md); }
.module-card p { color: var(--text); }
.module-link { color: var(--text); }
.module-link::after { content: ""; position: absolute; inset: 0; border-radius: 14px; }
.module-link:focus-visible::after { outline: 3px solid var(--accent); outline-offset: 2px; }
.module-card:hover .module-link { color: var(--primary); }
.module-abrir { color: var(--primary); font-weight: 700; }
.module-extra { position: relative; z-index: 2; }
.module-contador {
  min-width: 32px; height: 32px; padding: 0 9px; display: inline-grid; place-items: center;
  border-radius: 999px; color: #fff; font-weight: 800; font-size: var(--fs-base);
}
.module-contador.perigo { background: var(--danger); }
.module-contador.alerta { background: #b7791f; }
.module-card.com-alerta { border-color: #e7c9a4; }

/* --- Seleção de cliente (admin): card inteiro clicável. */
.context-client-card { position: relative; min-height: 170px; }
.context-client-card form { margin: 0; }
.card-acao {
  padding: 0; border: 0; background: none; color: var(--primary);
  font: inherit; font-weight: 700; cursor: pointer; min-height: var(--alvo);
}
.card-acao::after { content: ""; position: absolute; inset: 0; border-radius: 14px; }
.context-client-card:hover { box-shadow: 0 17px 38px rgba(10, 61, 98, .13); }
.context-client-card:hover h2 { color: var(--primary); }

/* --- Largura: todo módulo usa a mesma coluna central (Gestalt / Jakob). */
.results-page .container, .quadro-page .container, .matriculas-page .container {
  max-width: 1320px; margin: 0 auto;
}
