/*
Interface de coleta orcamentaria.

Principio: o numero manda. Tudo que nao e numero recua.
Digitos com largura tabular para alinhar coluna a coluna, tipografia nativa
do Windows para carregar instantaneamente e sem depender de internet.
*/

:root {
  --papel: #ffffff;
  --superficie: #f4f7f9;
  --tinta: #16202b;
  --tinta-fraca: #61717f;
  --regua: #d9e1e8;
  --acao: #1f5f8b;
  --acao-fraca: #eaf2f8;
  --alerta: #8a4b12;
  --positivo: #17614a;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--superficie);
  color: var(--tinta);
  font-family: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  font-size: 15px;
  line-height: 1.5;
}

.num {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  text-align: right;
  white-space: nowrap;
}

a { color: var(--acao); }

/* ---------- cabecalho ---------- */

.topo {
  background: var(--papel);
  border-bottom: 1px solid var(--regua);
  padding: 14px 28px;
  display: flex;
  align-items: baseline;
  gap: 20px;
}

.topo h1 {
  font-size: 17px;
  font-weight: 600;
  margin: 0;
  letter-spacing: -0.01em;
}

.topo .ciclo { color: var(--tinta-fraca); font-size: 13px; }
.topo .direita { margin-left: auto; font-size: 13px; color: var(--tinta-fraca); }

.conteudo { max-width: 1180px; margin: 0 auto; padding: 24px 28px 120px; }

.trilha { font-size: 13px; color: var(--tinta-fraca); margin-bottom: 6px; }
.trilha a { text-decoration: none; }
.trilha a:hover { text-decoration: underline; }

h2 { font-size: 22px; font-weight: 600; margin: 0 0 4px; letter-spacing: -0.01em; }
.subtitulo { color: var(--tinta-fraca); margin: 0 0 22px; }

/* ---------- blocos ---------- */

.bloco {
  background: var(--papel);
  border: 1px solid var(--regua);
  border-radius: 4px;
  margin-bottom: 18px;
}

.bloco > header {
  padding: 12px 16px;
  border-bottom: 1px solid var(--regua);
  display: flex;
  align-items: baseline;
  gap: 12px;
}

.bloco > header h3 { font-size: 15px; font-weight: 600; margin: 0; }
.bloco > header .total { margin-left: auto; font-weight: 600; }

table { width: 100%; border-collapse: collapse; }

th {
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  color: var(--tinta-fraca);
  padding: 8px 16px;
  border-bottom: 1px solid var(--regua);
}

th.num, td.num { text-align: right; }

td { padding: 9px 16px; border-bottom: 1px solid var(--regua); vertical-align: top; }
tr:last-child td { border-bottom: none; }

.linha-conta td { background: var(--superficie); font-weight: 600; }
.linha-conta .codigo { color: var(--tinta-fraca); font-weight: 400; margin-right: 8px; }

.item-desc { display: block; }
.item-meta { font-size: 12.5px; color: var(--tinta-fraca); }
.acoes a { font-size: 13px; margin-left: 12px; text-decoration: none; }
.acoes a:hover { text-decoration: underline; }

.vazio { color: var(--tinta-fraca); font-style: italic; }

/* ---------- botoes ---------- */

.botao {
  display: inline-block;
  background: var(--acao);
  color: #fff;
  border: 1px solid var(--acao);
  border-radius: 3px;
  padding: 7px 14px;
  font-size: 14px;
  font-family: inherit;
  cursor: pointer;
  text-decoration: none;
}

.botao:hover { filter: brightness(1.08); }

.botao.discreto {
  background: transparent;
  color: var(--acao);
  border-color: var(--regua);
}

.botao.discreto:hover { background: var(--acao-fraca); }

.botao.pequeno { padding: 3px 9px; font-size: 13px; }

/* ---------- formulario ---------- */

form label { display: block; font-size: 13px; color: var(--tinta-fraca); margin-bottom: 4px; }

input[type="text"], input[type="number"], input[type="password"], select, textarea {
  width: 100%;
  padding: 7px 9px;
  border: 1px solid var(--regua);
  border-radius: 3px;
  font-family: inherit;
  font-size: 15px;
  background: var(--papel);
  color: var(--tinta);
}

input[type="number"] { font-variant-numeric: tabular-nums; text-align: right; }

input:focus, select:focus, textarea:focus {
  outline: 2px solid var(--acao);
  outline-offset: 1px;
  border-color: var(--acao);
}

.campo { margin-bottom: 16px; }
.colunas { display: flex; gap: 16px; flex-wrap: wrap; }
.colunas > * { flex: 1 1 200px; }

.meses { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; }
.meses label { font-weight: 600; color: var(--tinta); }

.erro { color: #a02020; font-size: 13px; margin-top: 4px; }

.aviso {
  background: var(--acao-fraca);
  border: 1px solid var(--regua);
  border-left: 3px solid var(--acao);
  padding: 10px 14px;
  border-radius: 3px;
  margin-bottom: 16px;
}

/* ---------- faixa de total ---------- */

.faixa-total {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  background: var(--tinta);
  color: #fff;
  padding: 14px 28px;
}

.faixa-total .interno {
  max-width: 1180px;
  margin: 0 auto;
  display: flex;
  align-items: baseline;
  gap: 24px;
}

.faixa-total .rotulo { font-size: 13px; opacity: 0.72; }
.faixa-total .valor { font-size: 26px; font-weight: 600; letter-spacing: -0.02em; }
.faixa-total .direita { margin-left: auto; font-size: 13px; opacity: 0.72; }

/* ---------- grade conta x mes ---------- */

.rolagem { overflow-x: auto; }
.grade { min-width: 980px; font-size: 14px; }
.grade td, .grade th { padding: 7px 10px; }
.grade tfoot td { font-weight: 600; background: var(--superficie); }

/* ---------- entrar ---------- */

.entrar {
  max-width: 340px;
  margin: 10vh auto;
  background: var(--papel);
  border: 1px solid var(--regua);
  border-radius: 4px;
  padding: 28px;
}

.entrar h1 { font-size: 19px; margin: 0 0 4px; }
.entrar p { color: var(--tinta-fraca); margin: 0 0 20px; font-size: 14px; }

@media (max-width: 720px) {
  .meses { grid-template-columns: repeat(3, 1fr); }
  .conteudo { padding: 16px 14px 120px; }
}
