/* Sistema de diseño de Contabilidad NI — tokens de color + modo oscuro + tipografía,
   aplicados una sola vez acá y heredados por TODAS las páginas (que ya usan clases de
   Bootstrap estándar: .card, .table, .form-control, .btn-*, .alert-*, etc.) en vez de
   reescribir cada vista una por una. El acento (--accent) es la única variable a tocar
   para cambiar la identidad visual de toda la app (sidebar, botones, insignias
   "Activo/Abierto", login) — el sidebar y sus estados derivan del acento vía color-mix,
   así que un cambio de marca no exige tocar cada regla una por una.

   Modo oscuro: se activa poniendo data-theme="dark" en <html> (ver el script inline al
   inicio del <body> en _Layout.cshtml/_LayoutAuth.cshtml, que lo aplica ANTES de pintar
   para no mostrar un parpadeo claro→oscuro en cada navegación — esto es MVC con recarga
   completa de página, no una SPA). El botón "Modo oscuro" del menú lateral hace el
   toggle y guarda la preferencia en localStorage. */

:root {
    --bg: #F5F6F8;
    --surface: #FFFFFF;
    --border: #E4E7ED;
    --text: #171A21;
    --text-muted: #5A6072;
    --input-bg: #FFFFFF;
    --input-border: #D8DCE3;
    --hover-row: #F7F8FA;
    --accent: #4453D1;
    --accent-rgb: 68, 83, 209;
    --accent-soft: rgba(68, 83, 209, .12);
    --shadow: 0 1px 3px rgba(20, 22, 37, .06);
    --shadow-lg: 0 20px 50px -20px rgba(20, 22, 37, .25);
    --login-glow-1: rgba(68, 83, 209, .10);
    --login-glow-2: rgba(14, 124, 134, .08);

    /* Sidebar: siempre un tinte oscuro derivado del acento (no un color fijo), para que
       cambiar --accent re-tiña el menú lateral sin editar nada más. Base #1c1f33 (azul
       pizarra suave) en vez de un casi-negro (#12141f) — se ve menos duro/frío y el
       texto gris claro contrasta mejor sin sentirse tan "apagado". */
    --sidebar-bg: color-mix(in srgb, var(--accent) 38%, #1c1f33);
    --sidebar-border: #2A2E43;
    --sidebar-text: #C7CBE3;
    --sidebar-text-muted: #8A90AD;
    --sidebar-hover-bg: color-mix(in srgb, var(--accent) 22%, #272b47);
    --sidebar-active-bg: color-mix(in srgb, var(--accent) 32%, var(--sidebar-bg));
}

html[data-theme="dark"] {
    --bg: #0F1117;
    --surface: #171A23;
    --border: #262A36;
    --text: #EDEEF2;
    --text-muted: #9AA0B0;
    --input-bg: #1D2029;
    --input-border: #333846;
    --hover-row: #1D2029;
    --accent-soft: color-mix(in srgb, var(--accent) 22%, transparent);
    --shadow: 0 1px 3px rgba(0, 0, 0, .4);
    --shadow-lg: 0 20px 50px -20px rgba(0, 0, 0, .6);
    --login-glow-1: color-mix(in srgb, var(--accent) 18%, transparent);
    --login-glow-2: rgba(14, 124, 134, .14);

    --sidebar-bg: color-mix(in srgb, var(--accent) 28%, #14162a);
    --sidebar-hover-bg: color-mix(in srgb, var(--accent) 20%, #20233f);
}

body {
    background: var(--bg);
    color: var(--text);
    font-family: 'Public Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
    transition: background .15s, color .15s;
}
h1, h2, h3, h4, h5, h6, .fw-bold.fs-5, .marca {
    font-family: 'Manrope', 'Public Sans', sans-serif;
}
a { color: var(--accent); }
a:hover { filter: brightness(1.15); }
.text-secondary { color: var(--text-muted) !important; }
hr { border-color: var(--border); opacity: 1; }

/* Tarjetas: Bootstrap 5.3 ya expone estas variables por componente, así que basta con
   redefinirlas acá en vez de sobreescribir cada propiedad a mano. */
.card {
    --bs-card-bg: var(--surface);
    --bs-card-border-color: var(--border);
    --bs-card-cap-bg: transparent;
    color: var(--text);
    border-radius: 14px;
    box-shadow: var(--shadow);
}

/* Tablas */
.table {
    --bs-table-bg: var(--surface);
    --bs-table-color: var(--text);
    --bs-table-border-color: var(--border);
    --bs-table-striped-bg: var(--hover-row);
    --bs-table-striped-color: var(--text);
    --bs-table-hover-bg: var(--hover-row);
    --bs-table-hover-color: var(--text);
    --bs-table-active-bg: var(--accent-soft);
    --bs-table-active-color: var(--text);
    color: var(--text);
}
.table thead.table-light, .table > thead {
    --bs-table-bg: var(--hover-row);
    --bs-table-color: var(--text-muted);
}
/* Bootstrap define ".table-light" con --bs-table-color:#000 fijo, sin importar el tema
   — en modo oscuro eso deja texto negro sobre fondo oscuro (filas de subtotal en
   negrita, prácticamente invisibles). Se sobreescribe para que siga los tokens del
   tema en cualquier fila/celda con esa clase (los encabezados <thead> ya están
   cubiertos aparte, arriba, y mantienen su color atenuado). */
.table-light {
    --bs-table-color: var(--text) !important;
    --bs-table-bg: var(--hover-row) !important;
    color: var(--text) !important;
}

/* Formularios */
.form-control, .form-select {
    background-color: var(--input-bg);
    border-color: var(--input-border);
    color: var(--text);
    border-radius: 8px;
}
.form-control:focus, .form-select:focus {
    background-color: var(--input-bg);
    color: var(--text);
    border-color: var(--accent);
    box-shadow: 0 0 0 .2rem var(--accent-soft);
}
.form-control::placeholder { color: var(--text-muted); opacity: .75; }
.form-control:disabled, .form-select:disabled { background-color: var(--hover-row); color: var(--text-muted); }
.form-label { color: var(--text); }
.form-check-input { background-color: var(--input-bg); border-color: var(--input-border); }
.form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }
.input-group-text { background-color: var(--hover-row); border-color: var(--input-border); color: var(--text-muted); }

/* Botones */
.btn { border-radius: 9px; }
.btn-success { background-color: var(--accent); border-color: var(--accent); }
.btn-success:hover, .btn-success:focus, .btn-success:active { filter: brightness(1.08); background-color: var(--accent) !important; border-color: var(--accent) !important; }
.btn-outline-success { color: var(--accent); border-color: var(--accent); }
.btn-outline-success:hover { background-color: var(--accent); border-color: var(--accent); }
.btn-outline-primary { color: var(--accent); border-color: var(--accent); }
.btn-outline-primary:hover { background-color: var(--accent); border-color: var(--accent); }
.btn-outline-secondary { color: var(--text-muted); border-color: var(--border); }
.btn-outline-secondary:hover { background-color: var(--hover-row); color: var(--text); border-color: var(--border); }
.btn-link { color: var(--accent); }

/* Alertas — mismos colores semánticos, ajustados a superficie oscura */
html[data-theme="dark"] .alert-success { background: rgba(26,138,74,.15); color: #8fe3ae; border-color: rgba(26,138,74,.35); }
html[data-theme="dark"] .alert-danger  { background: rgba(192,48,60,.16); color: #ff9aa2; border-color: rgba(192,48,60,.35); }
html[data-theme="dark"] .alert-warning { background: rgba(163,105,10,.18); color: #ffcf7a; border-color: rgba(163,105,10,.4); }
html[data-theme="dark"] .alert-info    { background: rgba(37,140,251,.16); color: #8fc4ff; border-color: rgba(37,140,251,.35); }

/* Listas, modales, dropdowns */
.list-group-item { background-color: var(--surface); color: var(--text); border-color: var(--border); }
.modal-content { background-color: var(--surface); color: var(--text); border-color: var(--border); }
.dropdown-menu { background-color: var(--surface); border-color: var(--border); }
.dropdown-item { color: var(--text); }
.dropdown-item:hover, .dropdown-item:focus { background-color: var(--hover-row); color: var(--text); }

/* Tarjetas de estadística (Inicio, resúmenes) — chip de ícono a color + valor grande en
   Manrope, igual que el mockup. Se reutiliza el color de acento u otros semánticos
   (éxito/advertencia) pasados vía variables inline en cada tarjeta. Sin height:100% acá
   a propósito: antes vivía en esta clase base y "colaba" incluso en tarjetas sueltas que
   NO están dentro de un .row/.col (ej. "Accesos rápidos" en Inicio) — con el sidebar ahora
   sticky, el <main> pasó a tener una altura de flex ya definida, y ese height:100% hacía
   que esas tarjetas sueltas se estiraran a toda esa altura (una tarjeta de ~80px de
   contenido terminaba midiendo 700px+). Las tarjetas que sí necesitan igualar su alto entre
   sí dentro de un .row llevan la utilidad h-100 de Bootstrap directo en el HTML. */
.stat-card { background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: 22px; box-shadow: var(--shadow); }
.stat-chip { width: 38px; height: 38px; border-radius: 11px; display: flex; align-items: center; justify-content: center; font-size: 16px; margin-bottom: 14px; background: var(--chip-bg, var(--accent-soft)); color: var(--chip-color, var(--accent)); }
.stat-label { color: var(--text-muted); font-size: .78rem; margin-bottom: 4px; }
.stat-value { font-family: 'Manrope', sans-serif; font-weight: 800; font-size: 1.6rem; }
.stat-hint { color: var(--text-muted); font-size: .75rem; margin-top: 3px; }
.acceso-rapido { padding: 10px 16px; border-radius: 10px; border: 1px solid var(--border); background: transparent; color: var(--text); font-size: .82rem; font-weight: 600; display: inline-flex; align-items: center; gap: 7px; text-decoration: none; }
.acceso-rapido:hover { border-color: var(--accent); color: var(--accent); }

/* Login: panel hero a la izquierda (marca + propuesta de valor) + tarjeta de formulario a
   la derecha — mismo layout de dos columnas del mockup. */
.login-hero { flex: 1; min-width: 300px; background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 65%, #0B0D14), color-mix(in srgb, var(--accent) 40%, #0B0D14)); border-radius: 20px; padding: 46px 40px; color: #fff; display: flex; flex-direction: column; justify-content: center; gap: 26px; box-shadow: var(--shadow-lg); }
.login-hero .icono-marca { width: 44px; height: 44px; border-radius: 12px; background: rgba(255,255,255,.15); display: flex; align-items: center; justify-content: center; font-family: 'Manrope', sans-serif; font-weight: 800; font-size: 14px; flex-shrink: 0; }
.login-hero .titular { font-family: 'Manrope', sans-serif; font-weight: 800; font-size: 26px; line-height: 1.3; }
.login-hero .feature { display: flex; align-items: center; gap: 12px; font-size: 13.5px; }
.login-hero .feature-icono { width: 32px; height: 32px; border-radius: 9px; background: rgba(255,255,255,.15); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.login-form-card { flex: 1; min-width: 320px; max-width: 440px; background: var(--surface); border: 1px solid var(--border); border-radius: 20px; padding: 40px 36px; box-shadow: var(--shadow-lg); }
.login-input-wrap { position: relative; }
.login-input-wrap > i.ti-user, .login-input-wrap > i.ti-lock { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--text-muted); font-size: 15px; pointer-events: none; }
.login-input-wrap input { padding-left: 40px !important; }
.login-input-wrap input#campoPassword { padding-right: 40px !important; }
.btn-ver-password { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 15px; padding: 4px; }
.btn-ver-password:hover { color: var(--accent); }

/* Selector de empresa (post-login) — filas con ícono, nombre/ciudad y chevron. */
.empresa-fila { display: flex; align-items: center; gap: 16px; background: var(--surface); border: 1.5px solid var(--border); border-radius: 14px; padding: 18px 22px; cursor: pointer; text-decoration: none; color: var(--text); width: 100%; font: inherit; text-align: left; }
.empresa-fila:hover { border-color: var(--accent); color: var(--text); }
.empresa-fila .icono { width: 44px; height: 44px; border-radius: 11px; background: var(--accent-soft); color: var(--accent); display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }

/* Barra superior del área de contenido — ícono de usuario + nombre, igual que el mockup
   (ahí también llevaba buscador/notificaciones decorativos; se omiten acá porque no hay
   ninguna función real detrás todavía — un botón que no hace nada es peor que no tenerlo). */
.topbar { height: 60px; flex-shrink: 0; background: var(--surface); border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: flex-end; padding: 0 24px; gap: 14px; }
.topbar .avatar { width: 34px; height: 34px; border-radius: 999px; background: var(--accent-soft); color: var(--accent); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 12.5px; font-family: 'Manrope', sans-serif; }
.topbar .nombre { font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.2; }
.topbar .empresa { font-size: 11.5px; color: var(--text-muted); line-height: 1.2; }

/* Panel deslizante (drawer) para crear/editar — reemplaza la navegación de página
   completa a Nuevo/Editar en Empresas, Empleados, Usuarios y Catálogo (los mismos 5
   formularios que traía el mockup, salvo Comprobantes: su JS de líneas de partida doble
   + conversor USD está demasiado entrelazado con la página completa como para moverlo acá
   sin arriesgar romper un flujo ya probado — ver Views/Roles/... eh, Comprobantes/Nuevo). */
.drawer-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.42); z-index: 1040; }
.drawer-panel { position: fixed; top: 0; right: 0; height: 100%; width: min(520px, 92vw); background: var(--surface); z-index: 1050; display: flex; flex-direction: column; box-shadow: -24px 0 60px -20px rgba(0,0,0,.35); transform: translateX(100%); transition: transform .2s ease; }
.drawer-panel.abierto { transform: translateX(0); }
.drawer-header { padding: 20px 24px; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; }
.drawer-titulo { font-family: 'Manrope', sans-serif; font-weight: 800; font-size: 17px; color: var(--text); }
.drawer-cerrar { width: 32px; height: 32px; border-radius: 999px; border: 1px solid var(--border); background: transparent; color: var(--text-muted); display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; }
.drawer-cerrar:hover { color: var(--text); border-color: var(--accent); }
.drawer-body { flex: 1; overflow-y: auto; padding: 24px; color: var(--text); }
.drawer-body .card { border: none !important; box-shadow: none !important; padding: 0 !important; max-width: none !important; }
.drawer-body .card-body { padding: 0 !important; }
.drawer-footer { padding: 16px 24px; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; gap: 10px; flex-shrink: 0; }
@media (max-width: 576px) { .drawer-panel { width: 100vw; } }

/* Botón de modo oscuro/claro en el menú lateral — mismo patrón visual que "Cerrar sesión" */
.sidebar .tema-toggle { display: flex; align-items: center; gap: 9px; padding: .42rem .8rem; border-radius: .4rem; font-size: .82rem; color: var(--sidebar-text); cursor: pointer; white-space: nowrap; overflow: hidden; background: none; border: none; width: 100%; text-align: left; }
.sidebar .tema-toggle:hover { background: var(--sidebar-hover-bg); color: #fff; }

/* Reportes (Financieros y DGI-NI) — mismo lenguaje visual para ambos: encabezado con
   chip de ícono, barra de filtros en tarjeta, insignias de estado y tablas con
   encabezado atenuado. Vive acá (no en cada vista) para que los reportes fiscales
   (ReportesFiscales/Index.cshtml) luzcan igual de cuidados que los financieros sin
   duplicar CSS. */
.rf-icon { width: 42px; height: 42px; border-radius: 12px; background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 60%, white)); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.15rem; flex-shrink: 0; }
.rf-label { display: block; font-size: .7rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); margin-bottom: .25rem; }
.rf-toolbar { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 1rem 1.15rem; box-shadow: var(--shadow); }
.rf-select { border-radius: 8px; }
.rf-actions .btn { border-radius: 8px !important; }
.rf-stats { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: .65rem .9rem; box-shadow: var(--shadow); }
.rf-stat-label { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); margin-right: .35rem; }
.rf-stat-value { font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
.rf-badge-ok, .rf-badge-bad { border-radius: 999px; padding: .3rem .75rem; font-weight: 600; font-size: .82rem; display: inline-flex; align-items: center; gap: .35rem; }
.rf-badge-ok { background: rgba(26,138,74,.14); color: #1a8a4a; border: 1px solid rgba(26,138,74,.3); }
.rf-badge-bad { background: rgba(192,48,60,.14); color: #c0303c; border: 1px solid rgba(192,48,60,.3); }
.rf-card { border-radius: 14px !important; overflow: hidden; border: 1px solid var(--border) !important; box-shadow: var(--shadow) !important; }
.rf-table thead th { background: var(--hover-row); color: var(--text-muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .03em; font-weight: 700; border-bottom: 2px solid var(--border); padding: .65rem .75rem; vertical-align: bottom; }
.rf-table td { padding: .48rem .75rem; font-size: .88rem; }
.rf-table td.text-end, .rf-table th.text-end { font-variant-numeric: tabular-nums; }
.rf-table tbody tr:hover { background: var(--hover-row); }
.rf-table tfoot td { background: var(--accent-soft); border-top: 2px solid var(--accent); font-weight: 700; }
.rf-table tr.table-light td { background: var(--hover-row) !important; }
/* Tarjeta de cifra destacada (p.ej. IVA a pagar / saldo a favor) — número grande en
   Manrope junto a un chip de ícono, mismo patrón que .stat-card pero con la insignia
   de estado (rf-badge-ok/bad) integrada en vez de un texto suelto. */
.rf-highlight { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow); padding: 1.1rem 1.3rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.rf-highlight-label { color: var(--text-muted); font-size: .78rem; margin-bottom: .3rem; }
.rf-highlight-value { font-family: 'Manrope', sans-serif; font-weight: 800; font-size: 1.7rem; font-variant-numeric: tabular-nums; }
@media print {
    .rf-toolbar, .rf-stats, .rf-highlight { box-shadow: none !important; border: none !important; padding: 0 !important; }
    .rf-card { box-shadow: none !important; border: none !important; border-radius: 0 !important; }
    /* La Balanza de Comprobación tiene 9 columnas — con el padding/tamaño normal de
       pantalla no cabía en el ancho de la hoja horizontal y la última columna
       (Créditos) quedaba cortada. Se achica solo para impresión/PDF. */
    .rf-table th, .rf-table td { padding: .22rem .32rem !important; font-size: .66rem !important; }
    .rf-table thead th { font-size: .58rem !important; }
}
