/* Controle de Qualidade da Água (ca-) — chassi modelo B em CIANO. Reusa
   .fo-shell/.fo-side/.fo-main do gestao_fornecedores.css; aqui ficam só a
   cor e o que é exclusivo do módulo.
   ⚠️ O estado ativo dos chips é SEMPRE a classe `on` (o JS faz
   classList.toggle('on', cond)) — nunca criar um segundo nome de classe. */

:root {
  --ca: var(--green);
}

.ca-modtag {
  padding: 9px 20px;
  font-size: var(--text-2xs);
  font-weight: var(--font-bold);
  letter-spacing: .6px;
  color: var(--green);
  background: linear-gradient(90deg, rgba(132, 255, 0, .13), rgba(132, 255, 0, .045));
  display: flex; align-items: center; gap: 8px;
  border-bottom: 1px solid var(--line);
}
.ca-modrule { height: 3px; background: linear-gradient(90deg, var(--ca), transparent 70%); }
.fo-side-item.ca-side.active {
  border-left-color: var(--green);
  color: var(--text);
  background: var(--surface-alt);
}

#caAreaConteudo .card { padding: var(--space-4) var(--space-5); }

/* ===== KPIs ===== */
.ca-kpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--space-3); margin-bottom: var(--space-4); }
.ca-kpi-card { display: flex; flex-direction: column; gap: 5px; padding: var(--space-3-5) var(--space-4) !important; }
.ca-kpi-ic { width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 14px; margin-bottom: 2px; }
.ca-kpi-n { font-size: var(--text-2xl, 22px); font-weight: var(--font-bold); line-height: 1; }
.ca-kpi-l { color: var(--muted); font-size: var(--text-xs); }

.ca-grid2 { display: grid; grid-template-columns: 1.3fr 1fr; gap: var(--space-4); margin-bottom: var(--space-4); }

/* ===== Barras (Pareto e evolução empilhada) ===== */
.ca-bars { display: flex; align-items: flex-end; gap: var(--space-3); height: 150px; padding-top: var(--space-2); }
.ca-bar-col { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 6px; height: 100%; }
.ca-bar { width: 100%; background: var(--ca); border-radius: 6px 6px 0 0; min-height: 6px; }
.ca-bar-label { font-size: 10px; color: var(--muted); text-align: center; line-height: 1.2; overflow-wrap: anywhere; }
.ca-bar-stack { width: 100%; display: flex; flex-direction: column; border-radius: 6px 6px 0 0; overflow: hidden; min-height: 6px; }
.ca-bar-nc { width: 100%; background: var(--danger); }
.ca-bar-ok { width: 100%; background: var(--green); }

/* ===== Tabela (mesmo escudo anti table-layout:fixed dos outros módulos) ===== */
.ca-table-wrap { overflow-x: auto; }
.ca-table { table-layout: auto !important; width: 100%; min-width: 820px; border-collapse: collapse; }
.ca-table th {
  color: var(--muted); text-align: left; font-weight: var(--font-medium);
  font-size: var(--text-xs); text-transform: uppercase; letter-spacing: .4px;
  padding: 10px 13px; border-bottom: 1px solid var(--line); white-space: nowrap;
}
.ca-table td { padding: 10px 13px; border-bottom: 1px solid var(--line); font-size: var(--text-sm); vertical-align: middle; }
.ca-table tbody tr:nth-child(odd) td { background: var(--surface-alt); }
.ca-table tbody tr.ca-row:hover td { background: color-mix(in srgb, var(--ca) 8%, var(--panel)); }
.ca-table tbody tr.ca-row { cursor: pointer; }

/* ===== Filtros ===== */
.ca-filtros { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: var(--space-3); }

/* Ponto desativado continua clicável (pra ver histórico ou reativar),
   só fica visualmente apagado na lista. */
.ca-table tbody tr.ca-row-inativo td { opacity: .55; }
.ca-table tbody tr.ca-row-inativo:hover td { opacity: 1; }

/* ===== Badges ===== */
.ca-badge { padding: 3px 10px; border-radius: 999px; font-size: 10.5px; font-weight: var(--font-bold); display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.ca-badge-ok { background: rgba(34, 197, 94, .14); color: var(--green); }
.ca-badge-fora { background: rgba(239, 68, 68, .14); color: var(--danger); }
.ca-badge-pend { background: rgba(245, 158, 11, .14); color: var(--warn); }
.ca-badge-tipo { padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: var(--font-semibold); white-space: nowrap; }
.ca-badge-link { border: none; cursor: pointer; font: inherit; transition: filter .12s; }
.ca-badge-link:hover { filter: brightness(1.25); }

/* ===== Seções / notas ===== */
.ca-section-title { font-size: var(--text-sm); font-weight: var(--font-bold); margin: var(--space-5) 0 var(--space-2-5); display: flex; align-items: center; gap: 8px; color: var(--ca); }
.ca-note { background: var(--surface-alt); border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; font-size: 12px; color: var(--muted); margin-bottom: var(--space-3); }
.ca-label { display: block; color: var(--muted); font-size: 11px; margin-bottom: 5px; }

/* ===== Chips / seletores (classe própria — não depende de .chip global) ===== */
.ca-chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--field-bg, var(--surface-alt)); border: 1px solid var(--line);
  color: var(--text); padding: 7px 13px; border-radius: 999px;
  font-size: var(--text-xs); font-weight: var(--font-medium); cursor: pointer;
  user-select: none; text-decoration: none;
}
.ca-chip.on { background: var(--ca); border-color: var(--ca); color: #fff; font-weight: var(--font-semibold); }
a.ca-chip { cursor: pointer; }

/* ===== Dias da semana (bolinhas) ===== */
.ca-dias { display: flex; gap: 6px; flex-wrap: wrap; }
.ca-dia {
  width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line);
  background: var(--field-bg, var(--surface-alt)); display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: var(--font-bold); cursor: pointer; color: var(--muted); user-select: none;
}
.ca-dia.on { background: var(--ca); border-color: var(--ca); color: #fff; }
.ca-turnos { display: flex; gap: 8px; flex-wrap: wrap; }

/* ===== Cor do subtipo (seletor em Configurações) ===== */
.ca-cor-op { width: 26px; height: 26px; border-radius: 50%; cursor: pointer; border: 2px solid transparent; display: inline-block; }
.ca-cor-op.on { border-color: var(--text); outline: 2px solid var(--text); outline-offset: 2px; }

/* ===== Formulários de cadastro ===== */
.ca-form-grid2, .ca-form-grid3 { display: grid; gap: var(--space-3); margin-bottom: var(--space-3-5); }
.ca-form-grid2 { grid-template-columns: 1fr 1fr; }
.ca-form-grid3 { grid-template-columns: 1fr 1fr 1fr; }

/* ===== Pendências / desvios (linhas de lista) ===== */
.ca-pend-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: var(--text-sm); }
.ca-pend-item:last-child { border-bottom: 0; }

@media (max-width: 768px) {
  .ca-kpis { grid-template-columns: 1fr 1fr; }
  .ca-grid2 { grid-template-columns: 1fr; }
  .ca-filtros { grid-template-columns: 1fr; }
  .ca-form-grid2, .ca-form-grid3 { grid-template-columns: 1fr; }
  .ca-table { min-width: 680px; }
}

/* ===== Seleção múltipla para agendar coletas em lote ===== */
.ca-lote-lista {
  max-height: 320px; overflow-y: auto;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface-alt);
}
.ca-lote-item {
  display: flex; align-items: center; gap: var(--space-3);
  padding: 10px var(--space-3-5);
  border-bottom: 1px solid var(--line);
  font-size: var(--text-sm); cursor: pointer;
}
.ca-lote-item:last-child { border-bottom: 0; }
.ca-lote-item:hover { background: color-mix(in srgb, var(--ca) 8%, var(--panel)); }
.ca-lote-item input[type="checkbox"] { width: 16px; height: 16px; flex-shrink: 0; accent-color: var(--ca); cursor: pointer; }

/* ═══════════════════════════════════════════════════════════════════════
   CONTENÇÃO / MOBILE
   Os estouros vinham de `flex-shrink:0` e `min-width` fixo: com eles o
   flex item mantém a largura de conteúdo e empurra a página inteira.
   ═══════════════════════════════════════════════════════════════════════ */

/* A casca é montada pelo próprio módulo (panel.js), então dá pra soltar o
   min-width só aqui, sem afetar os outros módulos que usam .fo-main. */
.fo-main.ca-main { min-width: 0; }

#caAreaConteudo { min-width: 0; }
#caAreaConteudo .page-title,
#caAreaConteudo .page-sub { overflow-wrap: anywhere; }
.ca-table-wrap { max-width: 100%; }

/* Grade dos formulários dos overlays */
.ca-grid6 { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--space-3); }

/* Texto do desvio/pendência: encolhe até 200px, mas pode ir abaixo disso */
.ca-pend-texto { flex: 1 1 200px; min-width: 0; }

/* Grupos de botões: podem quebrar linha e encolher */
.ca-desvio-acoes,
.ca-detalhe-acoes { display: flex; gap: 6px; flex-wrap: wrap; min-width: 0; }
.ca-detalhe-acoes { gap: 8px; }

/* Rodapé do overlay: 3 botões não cabem em 360px sem quebrar */
.ca-overlay-rodape {
  display: flex; justify-content: flex-end; align-items: center;
  gap: var(--space-2); flex-wrap: wrap; flex-shrink: 0;
  padding: var(--space-4) var(--space-5);
  border-top: 1px solid var(--line);
}

@media (max-width: 768px) {
  /* Gráfico: 12 meses precisam caber; menos respiro e rótulo menor */
  .ca-bars { gap: 3px; height: 130px; }
  .ca-bar-label { font-size: 9px; }

  /* Pendências e desvios empilham em vez de disputar a linha */
  .ca-pend-item { flex-direction: column; align-items: stretch; gap: 8px; }
  .ca-desvio-acoes .btn,
  .ca-desvio-acoes .ca-badge-link { flex: 1 1 auto; justify-content: center; }

  /* Ações do topo do ponto ocupam a largura toda */
  .ca-detalhe-acoes { width: 100%; }
  .ca-detalhe-acoes .btn { flex: 1 1 auto; justify-content: center; }

  /* Rodapé do overlay centralizado e com botões cheios */
  .ca-overlay-rodape { justify-content: stretch; padding: var(--space-3) var(--space-4); }
  .ca-overlay-rodape .btn { flex: 1 1 auto; justify-content: center; }

  .ca-lote-lista { max-height: 45vh; }

  /* Formulários dos overlays: uma coluna. Em 6 colunas, um campo de span 3
     ficava com ~140px e os rótulos quebravam em cascata. */
  /* 7 bolinhas de 38px + gaps = 302px, apertado num card de 360px */
  .ca-dia { width: 34px; height: 34px; }
  .ca-dias { gap: 4px; }

  /* Botão de agendar em lote ocupa a linha toda — alvo de toque melhor */
  #caAgendarLote { width: 100%; justify-content: center; }

  .ca-grid6 { grid-template-columns: 1fr; }
  .ca-grid6 > div { grid-column: 1 / -1 !important; }
}
