/* =====================================================================
   PREVISAO
   Tela mais densa do produto: tabela larga com rolagem propria e
   cabecalho fixo. Nada abaixo da tabela deve empurrar a pagina.
   ===================================================================== */

.previsao-view { display: grid; gap: var(--sp-4); }

/* ── Execução ── */
.previsao-run-panel,
.previsao-filters {
  display: flex;
  gap: var(--sp-3);
  align-items: end;
  flex-wrap: wrap;
  margin-bottom: var(--sp-4);
}

.previsao-run-panel > div:first-child { flex: 1 1 320px; }

/* ── Status da execução ── */
.previsao-execution-status {
  margin: calc(var(--sp-2) * -1) 0 var(--sp-4);
  padding: var(--sp-3) var(--sp-4);
  border: 1px solid var(--border);
  border-left: 2px solid var(--border-strong);
  border-radius: var(--r-md);
  background: var(--surface-2);
  font-size: var(--fs-13);
}

.previsao-execution-status.is-hidden { display: none; }

.previsao-execution-status > div {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  font-weight: 550;
  color: var(--text);
}

.previsao-execution-status p {
  margin: var(--sp-1) 0 0;
  color: var(--text-3);
}

.previsao-execution-status.is-processing {
  border-left-color: var(--brand);
  background: var(--brand-subtle);
}

.previsao-execution-status.is-success {
  border-left-color: var(--success);
  background: var(--success-bg);
}

.previsao-execution-status.is-warning {
  border-left-color: var(--warning);
  background: var(--warning-bg);
}

.previsao-execution-status.is-error {
  border-left-color: var(--danger);
  background: var(--danger-bg);
}

/* ── Filtros ── */
.previsao-filters label { flex: 1 1 170px; }

.previsao-filter-actions {
  display: flex;
  gap: var(--sp-2);
  align-items: center;
  flex: 0 0 auto;
}

/* ── KPIs ── */
.previsao-kpis {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: var(--sp-4);
}

/* ── Tabela ── */
.previsao-table-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-3);
  margin-bottom: var(--sp-3);
}

.previsao-table-header h3 {
  font-size: var(--fs-14);
  font-weight: 620;
}

/* A tabela rola dentro do card; a página nunca rola na horizontal */
.previsao-view .table-wrap {
  max-height: calc(100vh - 340px);
  min-height: 260px;
  overflow: auto;
  overscroll-behavior: contain;
}

.previsao-table { min-width: 1320px; }

.previsao-table th {
  /* cabeçalho fixo durante a rolagem vertical da tabela */
  position: sticky;
  top: 0;
  z-index: 3;
}

.previsao-table td { font-size: var(--fs-12); }

.previsao-empty {
  text-align: center;
  color: var(--text-3);
  padding: var(--sp-8) var(--sp-4);
  font-size: var(--fs-13);
}

@media (max-width: 1100px) {
  .previsao-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .previsao-kpis { grid-template-columns: 1fr; }
  .previsao-filter-actions { width: 100%; }
  .previsao-filter-actions .btn { flex: 1 1 0; }
  .previsao-view .table-wrap { max-height: none; }
}
