body { background: #f4f6fa; }

.sidebar { width: 230px; min-height: calc(100vh - 56px); }
.sidebar .nav-link { color: #495057; padding: .6rem 1.25rem; border-left: 3px solid transparent; }
.sidebar .nav-link i { width: 1.4rem; display: inline-block; }
.sidebar .nav-link:hover { background: #eef2ff; }
.sidebar .nav-link.active { color: var(--bs-primary); background: #eef2ff; border-left-color: var(--bs-primary); font-weight: 600; }
@media (min-width: 992px) {
    .sidebar { position: sticky; top: 56px; height: calc(100vh - 56px); overflow-y: auto; flex-shrink: 0; }
    .sidebar .offcanvas-body { flex-direction: column; overflow-x: hidden; }
}

.contenido { min-width: 0; }
.selector-pres { max-width: 200px; }

.card { border: 0; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.kpi .card-body { padding: 1rem 1.25rem; }
.kpi .kpi-titulo { font-size: .8rem; text-transform: uppercase; color: #6c757d; letter-spacing: .03em; }
.kpi .kpi-valor { font-size: 1.5rem; font-weight: 600; }
.kpi .kpi-icono { font-size: 1.8rem; opacity: .25; }

.cat-icono { width: 2.2rem; height: 2.2rem; border-radius: 50%; display: inline-flex;
    align-items: center; justify-content: center; color: #fff; flex-shrink: 0; }
.progress { height: .6rem; }

.tarjeta-visual { border-radius: 14px; color: #fff; padding: 1.1rem 1.25rem; min-height: 150px;
    background-image: linear-gradient(135deg, rgba(255,255,255,.18), rgba(0,0,0,.15)); }
.tarjeta-visual .numero { letter-spacing: .15em; font-family: monospace; font-size: 1.05rem; }

.selector-mes .btn { min-width: 2.5rem; }
.table td, .table th { vertical-align: middle; }
.text-gasto { color: #dc3545; }
.text-ingreso { color: #198754; }

.auth-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #0d6efd, #6f42c1); }
.auth-card { width: 100%; max-width: 420px; }

/* Montos de la tabla anual en una sola línea */
#tablaAnio td { white-space: nowrap; }
