/* SIMM · estilo sobrio de aplicación interna */
:root {
  --texto: #1f2328;
  --sec: #59636e;
  --borde: #d0d7de;
  --borde-suave: #e5e8eb;
  --fondo: #f5f6f8;
  --blanco: #fff;
  --acento: #2b4c6f;
  --acento-oscuro: #213b57;
  --acento-fondo: #eaf0f6;
  --ok: #1a7f37;
  --aviso: #9a6700;
  --aviso-fondo: #fff8e5;
  --error: #b42318;
  --error-fondo: #fdf0ef;
  --bs-body-font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --bs-body-font-size: .875rem;
  --bs-body-color: var(--texto);
  --bs-body-bg: var(--fondo);
  --bs-border-color: var(--borde);
  --bs-border-radius: 4px;
  --bs-border-radius-sm: 3px;
  --bs-link-color: var(--acento);
  --bs-link-color-rgb: 43, 76, 111;
  --bs-link-hover-color: var(--acento-oscuro);
}

h1 { font-size: 1.25rem; font-weight: 600; margin: 0; }
h2 { font-size: 1rem; font-weight: 600; margin: 0 0 .75rem; }
.text-muted, .form-text { color: var(--sec) !important; }
:focus-visible { outline: 2px solid var(--acento); outline-offset: 1px; }

.btn { font-size: .85rem; }
.btn-primary { --bs-btn-bg: var(--acento); --bs-btn-border-color: var(--acento); --bs-btn-hover-bg: var(--acento-oscuro); --bs-btn-hover-border-color: var(--acento-oscuro); --bs-btn-active-bg: var(--acento-oscuro); --bs-btn-disabled-bg: var(--acento); }
.btn-light { --bs-btn-bg: #fff; --bs-btn-border-color: var(--borde); --bs-btn-hover-bg: #f3f4f6; --bs-btn-hover-border-color: #bfc5cc; }
.form-control, .form-select { font-size: .875rem; }
.form-control:focus, .form-select:focus { border-color: var(--acento); box-shadow: 0 0 0 .15rem rgba(43, 76, 111, .15); }
.form-label { font-size: .8rem; color: var(--sec); margin-bottom: .2rem; }

/* Estructura */
.app { display: grid; grid-template-columns: 210px 1fr; min-height: 100vh; }
.lateral { background: var(--blanco); border-right: 1px solid var(--borde); position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; }
.marca { padding: .9rem 1rem; border-bottom: 1px solid var(--borde-suave); }
.marca b { display: block; font-size: .95rem; }
.marca span { font-size: .75rem; color: var(--sec); }
.nav-lateral { padding: .5rem 0; flex: 1; overflow-y: auto; }
.nav-lateral a { display: block; padding: .42rem 1rem; color: var(--texto); text-decoration: none; border-left: 3px solid transparent; }
.nav-lateral a:hover { background: var(--fondo); }
.nav-lateral a.activo { border-left-color: var(--acento); background: var(--acento-fondo); color: var(--acento-oscuro); font-weight: 600; }
.nav-lateral .grupo { font-size: .72rem; color: var(--sec); padding: .9rem 1rem .25rem; }
.usuario-lateral { padding: .75rem 1rem; border-top: 1px solid var(--borde-suave); font-size: .78rem; color: var(--sec); }
.usuario-lateral b { color: var(--texto); display: block; font-size: .82rem; }

.principal { min-width: 0; }
.barra { background: var(--blanco); border-bottom: 1px solid var(--borde); padding: .5rem 1.25rem; display: flex; align-items: center; gap: .75rem; min-height: 48px; }
.barra .consulta-rapida { max-width: 260px; margin-left: auto; }
.contenido { padding: 1.25rem; max-width: 1400px; }
.encabezado { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: 1rem; }
.encabezado p { margin: .2rem 0 0; color: var(--sec); }
.btn-menu { display: none; }

.panel { background: var(--blanco); border: 1px solid var(--borde); border-radius: 4px; padding: 1rem; }
.panel + .panel { margin-top: 1rem; }
.panel-titulo { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; margin-bottom: .6rem; }
.panel-titulo h2 { margin: 0; }

/* Resumen en línea, sin tarjetas */
.resumen { display: flex; flex-wrap: wrap; gap: 0; border: 1px solid var(--borde); border-radius: 4px; background: var(--blanco); margin-bottom: 1rem; }
.resumen > div { padding: .6rem 1rem; border-right: 1px solid var(--borde-suave); min-width: 140px; }
.resumen > div:last-child { border-right: 0; }
.resumen b { display: block; font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.resumen span { font-size: .78rem; color: var(--sec); }

/* Estados: texto con punto de color */
.estado { white-space: nowrap; font-size: .82rem; }
.estado::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: .35rem; background: #adb5bd; vertical-align: 1px; }
.estado.aliado { color: var(--ok); } .estado.aliado::before { background: var(--ok); }
.estado.no-aliado { color: var(--sec); } .estado.no-aliado::before { background: #6e7781; }
.estado.confirmar { color: var(--aviso); } .estado.confirmar::before { background: #d4a72c; }
.estado.pendiente { color: #8c959f; }
.etiqueta { font-size: .75rem; color: var(--sec); border: 1px solid var(--borde); border-radius: 3px; padding: 0 .3rem; white-space: nowrap; }
.etiqueta.alerta { color: var(--error); border-color: #f1b5b0; }

/* Tablas */
.table { --bs-table-hover-bg: #f6f8fa; margin-bottom: 0; }
.table > :not(caption) > * > * { padding: .38rem .5rem; }
.table thead th { background: #f6f8fa; font-weight: 600; color: var(--sec); font-size: .8rem; border-bottom: 1px solid var(--borde); white-space: nowrap; }
table.dataTable { font-size: .84rem; }
table.dataTable tr.en-padron > td { background: #fbfaf4; }
table.dataTable tr.seleccionada > td { background: var(--acento-fondo) !important; }
div.dt-container .dt-search input { width: 220px; }
.dni { font-variant-numeric: tabular-nums; }
.filtros { display: flex; flex-wrap: wrap; gap: .5rem .75rem; align-items: end; margin-bottom: .75rem; }
.filtros > div { min-width: 150px; }
.filtros .form-check { padding-bottom: .35rem; }

/* Mesa */
.tabla-mesa td { font-size: .84rem; }
.tabla-mesa tr.separador td { background: #f6f8fa; font-size: .75rem; color: var(--sec); padding: .2rem .5rem; }
.tabla-mesa tr.buscado td { font-weight: 600; }

/* Barra de acciones en lote */
.acciones-lote { display: none; align-items: center; gap: .5rem; flex-wrap: wrap; padding: .5rem .75rem; margin-bottom: .6rem; border: 1px solid var(--borde); background: var(--acento-fondo); border-radius: 4px; }
.acciones-lote.visible { display: flex; }

/* Importación */
.pasos { display: flex; gap: 1.5rem; list-style: none; padding: 0; margin: 0 0 1rem; font-size: .85rem; color: var(--sec); }
.pasos li.actual { color: var(--texto); font-weight: 600; }
.pasos li.hecho { color: var(--ok); }
.zona-archivo { border: 1px dashed #aeb6bf; border-radius: 4px; padding: 1.5rem; text-align: center; background: #fafbfc; cursor: pointer; color: var(--sec); }
.zona-archivo.sobre { border-color: var(--acento); background: var(--acento-fondo); }
.mapeo { display: grid; grid-template-columns: 150px 1fr; gap: .4rem .75rem; align-items: center; font-size: .82rem; }
.tabla-previa { font-size: .78rem; }
.tabla-previa th.mapeada { background: var(--acento-fondo); color: var(--acento-oscuro); }

/* Permisos */
.lista-permisos .form-check { padding: .35rem 0 .35rem 1.8rem; border-bottom: 1px solid var(--borde-suave); margin: 0; }
.lista-permisos .form-check small { display: block; color: var(--sec); }
.arbol-ambito { max-height: 320px; overflow-y: auto; border: 1px solid var(--borde); border-radius: 4px; padding: .4rem .6rem; }
.arbol-ambito details { border-bottom: 1px solid var(--borde-suave); padding: .2rem 0; }
.arbol-ambito summary { cursor: pointer; }
.arbol-ambito .distritos { padding: .2rem 0 .3rem 1.6rem; columns: 2; }

/* Acceso */
.acceso { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.acceso form { width: 100%; max-width: 330px; background: var(--blanco); border: 1px solid var(--borde); border-radius: 4px; padding: 1.5rem; }

@media (max-width: 992px) {
  .app { grid-template-columns: 1fr; }
  .lateral { position: fixed; left: -230px; width: 210px; z-index: 50; transition: left .15s; }
  .lateral.abierto { left: 0; box-shadow: 0 0 0 100vw rgba(0, 0, 0, .25); }
  .btn-menu { display: inline-block; }
  .barra .consulta-rapida { max-width: 180px; }
  .resumen > div { min-width: 50%; border-bottom: 1px solid var(--borde-suave); }
}
@media print {
  .lateral, .barra, .no-imprimir { display: none !important; }
  .app { display: block; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }

/* Ajustes finos sobre Bootstrap */
.table { --bs-table-bg: #fff; }
.form-check-input:checked { background-color: var(--acento); border-color: var(--acento); }
.form-check-input:focus { box-shadow: 0 0 0 .15rem rgba(43, 76, 111, .2); border-color: var(--acento); }
.table a, .nav-lateral a, .usuario-lateral a { text-decoration: none; }
.table a:hover { text-decoration: underline; }
table.dataTable th.dni, table.dataTable td.dni { text-align: left; }
.progress-bar { background: var(--acento); }
table.dataTable th.dt-type-numeric, table.dataTable td.dt-type-numeric { text-align: left; }
td.nw { white-space: nowrap; }
.swal2-popup.swal2-toast .swal2-title { font-size: .85rem; font-weight: 600; }

/* Tablero */
.grafico-titulo { font-size: .78rem; color: var(--sec); margin-bottom: .25rem; }
.grafico { position: relative; }
.panel-tablero .kpi td { padding: .3rem .4rem; }
#migas a { color: var(--acento); }
td.corta { max-width: 170px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.etiqueta.otra { color: #8a5a5a; border-color: #d9c2c2; }

/* Tablero para lectura general */
.cifras-grandes { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: .75rem; }
.cifras-grandes > div { background: var(--blanco); border: 1px solid var(--borde); border-left: 4px solid #aeb6bf; border-radius: 4px; padding: .8rem 1rem; }
.cifras-grandes b { display: block; font-size: 1.9rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.cifras-grandes span { display: block; font-size: .9rem; color: var(--texto); }
.cifras-grandes small { display: block; font-size: .78rem; color: var(--sec); margin-top: .15rem; }
.cifras-grandes .c-app { border-left-color: #2b4c6f; }
.cifras-grandes .c-app2 { border-left-color: #7f9cbc; }
.cifras-grandes .c-otros { border-left-color: #b5835a; }
.cifras-grandes .c-nadie { border-left-color: #d3d8dd; }
.accion { display: flex; gap: .9rem; align-items: flex-start; padding: .7rem .8rem; border-radius: 4px; margin-bottom: .55rem; background: #f6f8fa; border-left: 4px solid #aeb6bf; font-size: .9rem; }
.accion .num { font-weight: 700; font-size: 1.35rem; min-width: 3.2rem; text-align: right; line-height: 1.1; font-variant-numeric: tabular-nums; }
.accion.urgente { background: var(--error-fondo); border-left-color: var(--error); }
.accion.importante { background: var(--aviso-fondo); border-left-color: #d4a72c; }
.accion.info { border-left-color: #2b4c6f; }
.leer { font-size: .82rem; color: var(--sec); margin: -.4rem 0 .6rem; }
.intro { font-size: .92rem; max-width: 90ch; margin-bottom: 1rem; }
.punto { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 6px; vertical-align: 0; }
.nav-underline .nav-link { color: var(--sec); font-size: .9rem; }
.nav-underline .nav-link.active { color: var(--acento-oscuro); font-weight: 600; }
.glosario dt { font-weight: 600; margin-top: .6rem; }
.glosario dd { margin-bottom: .2rem; color: var(--texto); max-width: 90ch; }
.tab-content { position: relative; min-height: 320px; }
.tab-content.cargando > .tab-pane { opacity: .35; pointer-events: none; transition: opacity .15s; }
.cargador { display: none; position: sticky; top: 56px; z-index: 5; margin-bottom: .75rem; }
.tab-content.cargando > .cargador { display: block; }
.cargador-caja { width: max-content; margin: 0 auto; display: flex; align-items: center; gap: .6rem;
  background: var(--blanco); border: 1px solid var(--borde); border-radius: 4px; padding: .55rem .9rem; font-size: .88rem; color: var(--sec); }
.girando { width: 14px; height: 14px; border: 2px solid var(--borde); border-top-color: var(--acento); border-radius: 50%; display: inline-block; animation: giro .7s linear infinite; }
@keyframes giro { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .girando { animation-duration: 2.5s; } }
.cifras-grandes.esperando b, .tab-content.cargando .cifras-grandes b { color: var(--sec); }
.local { max-width: 220px; line-height: 1.2; }
.tabla-reportes td { padding: .3rem .4rem; }
.codigo { background: #f6f8fa; border: 1px solid var(--borde); border-radius: 4px; padding: .7rem .8rem; font-size: .76rem; line-height: 1.45; max-height: 340px; overflow: auto; }
.codigo code { color: var(--texto); }
