* { box-sizing: border-box; }
body {
  margin: 0; background: #F4F3F0; color: #1F2933;
  font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 1.45;
}
.topo {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 14px 24px; background: #fff; border-bottom: 1px solid #E4E7EB;
}
.topo h1 { margin: 0; font-size: 18px; color: #1F6F78; }
.topo-pasta { font-size: 13px; color: #52606D; }
.conteudo { max-width: 920px; margin: 24px auto; padding: 0 16px; }

.cartao {
  background: #fff; border: 1px solid #D9D6CF; border-radius: 10px;
  padding: 20px 24px; margin-bottom: 16px;
}
.cartao h2 { margin: 0 0 12px; font-size: 17px; }
.legenda { color: #52606D; font-size: 13px; }
.linha { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.linha.entre { justify-content: space-between; margin-bottom: 14px; }
.linha.entre h2 { margin: 0; }

.btn {
  font: inherit; cursor: pointer; border-radius: 8px; padding: 9px 16px;
  border: 1px solid #1F6F78; background: #1F6F78; color: #fff;
}
.btn:hover { filter: brightness(1.08); }
.btn.sec { background: #fff; color: #1F6F78; }
.btn.peq { padding: 5px 12px; font-size: 13px; }
.btn:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid #9AC9CF; outline-offset: 1px; }
.link { background: none; border: 0; color: #1F6F78; cursor: pointer; font: inherit; text-decoration: underline; padding: 0; }

.aviso { border-radius: 8px; padding: 10px 14px; margin-bottom: 16px; }
.aviso.alerta { background: #FFF1D6; color: #7A4A00; }
.aviso.critica { background: #FDE2E1; color: #8A1C1C; }
.aviso.ok { background: #E3F1F2; color: #14494F; }

label { display: block; font-weight: bold; margin-bottom: 4px; }
input[type=text], input[type=date], input[type=number], input[type=tel], input[type=search], select {
  font: inherit; width: 100%; padding: 8px 10px; border: 1px solid #9AA5B1; border-radius: 8px; background: #fff; color: #1F2933;
}
.campo { margin-bottom: 14px; }
.grade { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
@media (max-width: 640px) { .grade { grid-template-columns: 1fr; } }
.erro { color: #8A1C1C; font-size: 13px; margin-top: 4px; }
.opcao { display: flex; gap: 8px; align-items: flex-start; font-weight: normal; margin-bottom: 6px; cursor: pointer; }
.opcao input { margin-top: 3px; accent-color: #1F6F78; }

table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: 10px 8px; border-bottom: 1px solid #E4E7EB; }
th { font-size: 13px; color: #52606D; }
.vazio { text-align: center; padding: 28px 8px; color: #52606D; }
