:root {
  --fundo: #f4f2ee;
  --papel: #ffffff;
  --tinta: #1d2430;
  --suave: #5d6573;
  --linha: #dcd8d0;
  --marca: #1f3a5f;
  --marca-forte: #15294a;
  --erro-fundo: #fbe9e7;
  --erro: #8a2a1c;
  --ok-fundo: #e6f2ea;
  --ok: #1f5a36;
}
@media (prefers-color-scheme: dark) {
  :root {
    --fundo: #14181f;
    --papel: #1c222b;
    --tinta: #e7e9ee;
    --suave: #9aa3b2;
    --linha: #2e3743;
    --marca: #8fb3e6;
    --marca-forte: #b5cdf0;
    --erro-fundo: #3a1f1b;
    --erro: #f1b3a8;
    --ok-fundo: #1b3326;
    --ok: #a6dcb8;
  }
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--fundo);
  color: var(--tinta);
  font: 16px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
.topo {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 14px 24px;
  background: var(--papel);
  border-bottom: 1px solid var(--linha);
}
.marca { font-weight: 600; letter-spacing: .01em; }
.sigla { color: var(--marca); font-weight: 800; }
.usuario { display: flex; align-items: center; gap: 16px; font-size: 14px; color: var(--suave); }
.usuario form { margin: 0; }
a, .link { color: var(--marca); }
.link { background: none; border: 0; padding: 0; font: inherit; cursor: pointer; text-decoration: underline; }
.conteudo { max-width: 860px; margin: 32px auto; padding: 0 16px; }
.caixa {
  max-width: 400px;
  margin: 64px auto;
  padding: 28px;
  background: var(--papel);
  border: 1px solid var(--linha);
  border-radius: 10px;
}
h1 { font-size: 24px; margin: 0 0 8px; }
h2 { font-size: 18px; margin: 0 0 8px; }
.apoio, .rodape, .nota { color: var(--suave); font-size: 14px; }
.rodape { margin: 20px 0 0; }
label { display: block; margin: 16px 0 0; font-size: 14px; font-weight: 600; }
label small { font-weight: 400; color: var(--suave); }
input {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 10px 12px;
  font: inherit;
  color: var(--tinta);
  background: var(--fundo);
  border: 1px solid var(--linha);
  border-radius: 6px;
}
input:focus { outline: 2px solid var(--marca); outline-offset: 1px; }
button[type=submit]:not(.link) {
  margin-top: 22px;
  width: 100%;
  padding: 11px;
  font: inherit;
  font-weight: 600;
  color: #fff;
  background: var(--marca);
  border: 0;
  border-radius: 6px;
  cursor: pointer;
}
@media (prefers-color-scheme: dark) { button[type=submit]:not(.link) { color: #0f1520; } }
button[type=submit]:not(.link):hover { background: var(--marca-forte); }
.aviso { padding: 10px 12px; border-radius: 6px; margin-bottom: 16px; font-size: 14px; }
.aviso-erro { background: var(--erro-fundo); color: var(--erro); }
.aviso-ok { background: var(--ok-fundo); color: var(--ok); }
.cartao {
  margin: 20px 0;
  padding: 20px;
  background: var(--papel);
  border: 1px solid var(--linha);
  border-radius: 10px;
}
@media (max-width: 520px) {
  .topo { flex-direction: column; align-items: flex-start; padding: 12px 16px; }
  .caixa { margin: 24px 16px; }
}

/* menu */
.menu { display: flex; gap: 18px; font-size: 15px; font-weight: 600; margin-right: auto; margin-left: 24px; }
.menu a { text-decoration: none; }
.menu a:hover { text-decoration: underline; }

/* tabelas e memorias */
table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 14px; }
th, td { text-align: left; padding: 7px 8px; border-bottom: 1px solid var(--linha); vertical-align: top; }
th { color: var(--suave); font-weight: 600; }
.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
tr.total td { font-weight: 700; border-bottom: 0; border-top: 2px solid var(--linha); }
details { border-top: 1px solid var(--linha); padding: 10px 0; }
details:first-of-type { border-top: 0; }
summary { cursor: pointer; }
.fonte { font-size: 13px; margin: 6px 0 0; }
.selo { font-size: 12px; padding: 1px 6px; border-radius: 4px; background: var(--erro-fundo); color: var(--erro); }
.fontes { margin: 0; padding-left: 18px; font-size: 14px; }
.fontes li { margin: 4px 0; }
.cartao h2 a { text-decoration: none; }

/* formulario em grade */
.grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0 16px; align-items: end; }
.grade label { margin-top: 0; margin-bottom: 4px; }
.grade button[type=submit]:not(.link) { margin-top: 12px; }

@media (max-width: 720px) {
  .topo { flex-wrap: wrap; }
  .menu { order: 3; width: 100%; margin: 6px 0 0; }
}
