:root {
  --gg-verde: #2e5e3e;
  --gg-verde-escuro: #1f4229;
  --gg-terra: #b5643c;
  --gg-fundo: #f4f2ec;
  --gg-sidebar-w: 250px;
  --bs-primary: #2e5e3e;
  --bs-primary-rgb: 46, 94, 62;
  --bs-link-color: #2e5e3e;
  --bs-link-hover-color: #1f4229;
  --bs-link-color-rgb: 46, 94, 62;
  --bs-link-hover-color-rgb: 31, 66, 41;
}
body { background: var(--gg-fundo); font-family: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif; }
.btn-primary { --bs-btn-bg: var(--gg-verde); --bs-btn-border-color: var(--gg-verde);
  --bs-btn-hover-bg: var(--gg-verde-escuro); --bs-btn-hover-border-color: var(--gg-verde-escuro);
  --bs-btn-active-bg: var(--gg-verde-escuro); }
.btn-outline-primary { --bs-btn-color: var(--gg-verde); --bs-btn-border-color: var(--gg-verde);
  --bs-btn-hover-bg: var(--gg-verde); --bs-btn-hover-border-color: var(--gg-verde); --bs-btn-active-bg: var(--gg-verde); }
.text-receita { color: #1e7b43 !important; }
.text-despesa { color: #b3261e !important; }
.bg-receita-soft { background: #e3f2e8; }
.bg-despesa-soft { background: #fbe6e4; }

/* ---------- layout ---------- */
.app-topbar { background: var(--gg-verde); color: #fff; }
.app-topbar .navbar-brand { color: #fff; font-weight: 700; letter-spacing: .2px; }
.app-sidebar { background: #fff; border-right: 1px solid #e5e1d6; }
.app-sidebar .nav-link { color: #3a3a3a; border-radius: .5rem; padding: .55rem .75rem; display: flex; gap: .65rem; align-items: center; }
.app-sidebar .nav-link i { font-size: 1.1rem; color: var(--gg-verde); }
.app-sidebar .nav-link:hover { background: #eef3ee; }
.app-sidebar .nav-link.active { background: var(--gg-verde); color: #fff; }
.app-sidebar .nav-link.active i { color: #fff; }
.app-sidebar .menu-titulo { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: #8a8576; margin: 1rem .75rem .35rem; }
@media (min-width: 992px) {
  .app-sidebar { position: fixed; top: 56px; bottom: 0; width: var(--gg-sidebar-w); overflow-y: auto; }
  .app-main { margin-left: var(--gg-sidebar-w); }
}
.app-main { padding: 1.25rem; }
@media (max-width: 575.98px) { .app-main { padding: .85rem .75rem 5rem; } }

.granja-select { max-width: 260px; }
@media (max-width: 575.98px) { .granja-select { max-width: 150px; font-size: .85rem; } }

/* ---------- componentes ---------- */
.card { border: 1px solid #e5e1d6; border-radius: .85rem; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
.card-header { background: transparent; font-weight: 600; border-bottom-color: #ece8de; }
.kpi .kpi-label { font-size: .8rem; color: #6b6657; text-transform: uppercase; letter-spacing: .04em; }
.kpi .kpi-valor { font-size: clamp(1rem, 1.25vw + .55rem, 1.4rem); white-space: nowrap; font-weight: 700; font-variant-numeric: tabular-nums; }
.kpi .kpi-icone { width: 42px; height: 42px; border-radius: .7rem; display: grid; place-items: center; font-size: 1.3rem; }
.table { font-variant-numeric: tabular-nums; }
.table > :not(caption) > * > * { padding: .55rem .6rem; }
.table thead th { font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; color: #6b6657; font-weight: 600; background: #faf9f5; }
.valor { text-align: right; white-space: nowrap; }
.page-titulo { font-weight: 700; font-size: 1.4rem; margin: 0; }
.filtros .form-control, .filtros .form-select { font-size: .9rem; }
.badge-status-PENDENTE { background: #fff3cd; color: #7a5b00; }
.badge-status-PAGO { background: #d6eedd; color: #1e6b3a; }
.badge-status-CANCELADO { background: #e9e9e9; color: #555; }
tr.vencido td { background: #fdf0ef !important; }

/* botão flutuante de ação rápida no celular */
.fab { position: fixed; right: 1rem; bottom: 1rem; z-index: 1030; width: 56px; height: 56px; border-radius: 50%;
  font-size: 1.6rem; display: grid; place-items: center; box-shadow: 0 6px 18px rgba(0,0,0,.25); }

/* login */
.login-bg { min-height: 100vh; background: linear-gradient(135deg, #2e5e3e 0%, #4f7a4a 55%, #b5643c 140%); }
.login-card { max-width: 400px; width: 100%; border: none; border-radius: 1.1rem; }

/* impressão dos relatórios */
@media print {
  .app-topbar, .app-sidebar, .no-print, .fab, .messages { display: none !important; }
  .app-main { margin: 0 !important; padding: 0 !important; }
  body { background: #fff; font-size: 11px; }
  .card { border: 1px solid #ccc; box-shadow: none; break-inside: avoid; }
  .print-only { display: block !important; }
  a { text-decoration: none; color: inherit; }
}
.print-only { display: none; }
