/* ===== Tema verde olivo (PROMOCION AI 2002) ===== */
:root {
  --olivo-900: #2f3a12;
  --olivo-800: #3e4d19;
  --olivo-700: #4b5d1e;   /* color principal */
  --olivo-500: #6b8e23;   /* acento */
  --olivo-300: #a9bf6e;
  --olivo-100: #eef2e2;
  --olivo-50:  #f6f8f0;
  --bs-primary: var(--olivo-700);
  --bs-primary-rgb: 75, 93, 30;
  --bs-primary-text-emphasis: var(--olivo-900);
  --bs-primary-bg-subtle: var(--olivo-100);
  --bs-primary-border-subtle: var(--olivo-300);
  --bs-link-color: var(--olivo-700);
  --bs-link-color-rgb: 75, 93, 30;
  --bs-link-hover-color: var(--olivo-900);
  --bs-link-hover-color-rgb: 47, 58, 18;
  --bs-focus-ring-color: rgba(107, 142, 35, .3);
}
.btn-primary {
  --bs-btn-bg: var(--olivo-700); --bs-btn-border-color: var(--olivo-700);
  --bs-btn-hover-bg: var(--olivo-800); --bs-btn-hover-border-color: var(--olivo-800);
  --bs-btn-active-bg: var(--olivo-900); --bs-btn-active-border-color: var(--olivo-900);
  --bs-btn-disabled-bg: var(--olivo-700); --bs-btn-disabled-border-color: var(--olivo-700);
  --bs-btn-focus-shadow-rgb: 107, 142, 35;
}
.btn-outline-primary {
  --bs-btn-color: var(--olivo-700); --bs-btn-border-color: var(--olivo-700);
  --bs-btn-hover-bg: var(--olivo-700); --bs-btn-hover-border-color: var(--olivo-700);
  --bs-btn-active-bg: var(--olivo-800); --bs-btn-active-border-color: var(--olivo-800);
  --bs-btn-focus-shadow-rgb: 107, 142, 35;
}
.btn-success, .btn-outline-success { --bs-btn-focus-shadow-rgb: 107, 142, 35; }
.navbar.bg-primary { background: linear-gradient(90deg, var(--olivo-900), var(--olivo-700)) !important; }
.dropdown-menu { --bs-dropdown-link-active-bg: var(--olivo-700); }
.pagination { --bs-pagination-color: var(--olivo-700); --bs-pagination-hover-color: var(--olivo-900);
  --bs-pagination-active-bg: var(--olivo-700); --bs-pagination-active-border-color: var(--olivo-700);
  --bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(107, 142, 35, .25); }
.progress { --bs-progress-bar-bg: var(--olivo-500); }
.form-control:focus, .form-select:focus { border-color: var(--olivo-300); box-shadow: 0 0 0 .25rem rgba(107, 142, 35, .25); }
.form-check-input:checked { background-color: var(--olivo-700); border-color: var(--olivo-700); }
.form-check-input:focus { border-color: var(--olivo-300); box-shadow: 0 0 0 .25rem rgba(107, 142, 35, .25); }
.text-primary { color: var(--olivo-700) !important; }
.border-primary { border-color: var(--olivo-700) !important; }

/* Logo */
.nav-logo { height: 38px; width: 38px; object-fit: contain; background: #fff; border-radius: 50%; padding: 2px; }
.login-logo { width: 150px; height: 150px; object-fit: contain; }
.recibo-logo { width: 100px; height: 100px; object-fit: contain; }
.dash-logo { width: 96px; height: 96px; object-fit: contain; background: #fff; border-radius: 50%; box-shadow: 0 1px 4px rgba(47, 58, 18, .25); }
.logo-preview { width: 96px; height: 96px; flex: none; overflow: hidden; }
.logo-preview img { max-width: 100%; max-height: 100%; object-fit: contain; }

body { background: var(--olivo-50); }
.card { border: 0; box-shadow: 0 1px 3px rgba(16, 24, 40, .08); }
.kpi .label { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: #6c757d; }
.kpi .value { font-size: 1.45rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.table > :not(caption) > * > * { vertical-align: middle; }
.text-ingreso { color: #4f7a1a; }
.text-gasto { color: #dc3545; }
tr.anulado td { text-decoration: line-through; color: #adb5bd; }
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--olivo-900) 0%, var(--olivo-500) 100%); }

/* Recibo */
.recibo { max-width: 780px; margin: 0 auto; background: #fff; padding: 2rem 2.4rem; border: 1px solid #dee2e6; position: relative; }
.recibo .titulo { letter-spacing: .08em; color: var(--olivo-800); }
.recibo .monto-box { border: 2px solid #212529; padding: .5rem 1rem; font-size: 1.4rem; font-weight: 700; }
.recibo .firma { border-top: 1px solid #212529; margin-top: 4rem; padding-top: .3rem; text-align: center; font-size: .9rem; }
.recibo .sello-anulado { position: absolute; top: 40%; left: 50%; transform: translate(-50%, -50%) rotate(-20deg);
  font-size: 5rem; font-weight: 800; color: rgba(220, 53, 69, .35); border: 6px solid rgba(220, 53, 69, .35); padding: 0 1.5rem; pointer-events: none; }
.recibo dl { margin-bottom: 0; }
.recibo dt { font-weight: 600; }

@media print {
  body { background: #fff; }
  main { padding: 0 !important; }
  .card { box-shadow: none; border: 1px solid #dee2e6; }
  .recibo { border: 0; padding: 0; }
  a { text-decoration: none; color: inherit; }
}
