/* Minerva — libro de cuentas. Tailwind se usa para la disposición; aquí viven los componentes. */
:root {
  --papel: #f5f3ee;
  --blanco: #ffffff;
  --tinta: #1b231e;
  --gris: #6b736d;
  --gris-claro: #9aa19c;
  --linea: #dcd8cc;
  --linea-suave: #ece9e0;
  --verde: #1f3b2c;
  --verde-medio: #2d5a41;
  --verde-tinte: #e6eee8;
  --rojo: #9a3324;
  --ocre: #8a5d0f;
  --ocre-tinte: #f7eed9;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
}

/* Paleta por libro: el <body> lleva la clase libro-<nombre>. */
.libro-grupo_a { --verde: #1f3a4d; --verde-medio: #2f5a73; --verde-tinte: #e5edf2; --papel: #f2f4f5; }
.libro-givp { --verde: #4a3321; --verde-medio: #6b4a30; --verde-tinte: #f1eae3; --papel: #f6f2ed; }

.app { background: var(--papel); color: var(--tinta); font-size: 14px; line-height: 1.45; min-height: 100vh; }
.app ::selection { background: var(--verde); color: #fff; }

/* ---------- Estructura ---------- */
.marco { display: grid; grid-template-columns: 224px minmax(0, 1fr); min-height: 100vh; }
.lateral { background: var(--verde); color: #e3eae5; padding: 28px 0 24px; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.marca { display: block; padding: 0 24px 22px; border-bottom: 1px solid rgba(255,255,255,.12); margin-bottom: 14px; }
.marca b { display: block; font-family: var(--serif); font-size: 25px; font-weight: 600; color: #fff; letter-spacing: .01em; line-height: 1.1; }
.marca > a > span { display: block; margin-top: 5px; font-size: 11px; letter-spacing: .09em; text-transform: uppercase; color: #b7c7bd; }
.lateral .grupo { padding: 14px 24px 5px; font-size: 10.5px; letter-spacing: .13em; text-transform: uppercase; color: #a9bbb0; }
.ico { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.lateral nav a { display: flex; align-items: center; gap: 10px; padding: 7px 24px 7px 21px; border-left: 3px solid transparent; color: #e3eae5; }
.lateral nav a .ico { opacity: .75; }
.lateral nav a.activo .ico { opacity: 1; }
.lateral nav a:hover { color: #fff; background: rgba(255,255,255,.05); }
.lateral nav a.activo { color: #fff; border-left-color: #d9b45a; background: rgba(255,255,255,.08); font-weight: 600; }
.salir { padding: 22px 24px 0; }
.salir button { color: #b7c7bd; font-size: 12.5px; }
.salir button:hover { color: #fff; text-decoration: underline; }
.pagina { padding: 34px 44px 64px; max-width: 1180px; width: 100%; }
.barra-movil, .hoja, .hoja-fondo { display: none; }

@media (max-width: 860px) {
  .app { font-size: 15px; }
  .marco { grid-template-columns: minmax(0, 1fr); }
  .lateral { position: static; height: auto; padding: 0; overflow: visible; }
  .marca { padding: 12px 16px; margin: 0; border: 0; }
  .marca b { font-size: 21px; }
  .marca > a > span { display: none; }
  .lateral nav, .lateral .salir { display: none; }
  .pagina { padding: 18px 16px calc(78px + env(safe-area-inset-bottom)); }
  .barra-movil { display: grid; grid-template-columns: repeat(5, 1fr); position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; background: var(--blanco); border-top: 1px solid var(--linea); padding-bottom: env(safe-area-inset-bottom); }
  .barra-movil a, .barra-movil button { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 8px 2px 7px; text-align: center; font-size: 11px; font-weight: 600; color: var(--gris); border-top: 2px solid transparent; margin-top: -1px; }
  .barra-movil .ico { width: 21px; height: 21px; }
  .barra-movil .activo { color: var(--verde); border-top-color: var(--verde); }
  .hoja-fondo { display: block; position: fixed; inset: 0; z-index: 31; background: rgba(27,35,30,.35); }
  .hoja { display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 32; background: var(--blanco); border-radius: 14px 14px 0 0; padding: 16px 18px calc(22px + env(safe-area-inset-bottom)); box-shadow: 0 -8px 30px rgba(27,35,30,.18); }
  .hoja .rotulo { display: block; margin-bottom: 6px; }
  .hoja a { display: flex; align-items: center; gap: 12px; padding: 13px 0; border-top: 1px solid var(--linea-suave); font-size: 16px; font-weight: 600; }
  .hoja form { border-top: 1px solid var(--linea-suave); padding-top: 12px; }
  .cabecera { margin-bottom: 16px; padding-bottom: 12px; }
  .titulo { font-size: 25px; }
  .seccion { margin-top: 26px; }
  .btn { padding: 11px 16px; font-size: 15px; border-radius: 9px; }
  .btn.chico { padding: 7px 12px; font-size: 13.5px; }
  .cabecera .btn { width: 100%; justify-content: center; }
  .cabecera .relative { width: 100%; }
  .entrada { font-size: 16px; padding: 10px 12px; }
  .entrada.mini { font-size: 15px; padding: 7px 10px; }
  .opciones label { padding: 10px 14px; font-size: 15px; }
  .tabla th { padding: 9px 10px 7px; font-size: 10px; }
  .tabla td { padding: 9px 10px; }
  .oculto-movil { display: none !important; }
  .menu { position: fixed; left: 12px; right: 12px; top: auto; bottom: calc(84px + env(safe-area-inset-bottom)); min-width: 0; padding: 10px; }
  .menu a { padding: 11px 12px; font-size: 16px; }
}

/* ---------- Encabezados ---------- */
.cabecera { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 24px; padding-bottom: 14px; border-bottom: 2px solid var(--tinta); margin-bottom: 22px; }
.cabecera > * { min-width: 0; max-width: 100%; }
.pagina section, .pagina aside, .pagina form { min-width: 0; }
.titulo { font-family: var(--serif); font-size: 29px; font-weight: 600; letter-spacing: -.005em; line-height: 1.15; }
.bajada { color: var(--gris); margin-top: 3px; }
.seccion { font-family: var(--serif); font-size: 18px; font-weight: 600; margin: 34px 0 10px; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.seccion small { font-family: inherit; font-size: 13px; font-weight: 400; color: var(--gris); }
.rotulo { font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--gris); }
.miga { font-size: 12.5px; color: var(--gris); margin-bottom: 6px; }
.miga a:hover, .enlace:hover { text-decoration: underline; }
.enlace { color: var(--verde-medio); font-weight: 600; }
.tenue { color: var(--gris); }

/* ---------- Botones ---------- */
.btn { display: inline-flex; align-items: center; gap: 6px; background: var(--verde); color: #fff; border: 1px solid var(--verde); border-radius: 7px; padding: 7px 14px; font-weight: 600; font-size: 13.5px; line-height: 1.3; cursor: pointer; white-space: nowrap; }
.btn:hover { background: var(--verde-medio); border-color: var(--verde-medio); }
.btn.sec { background: transparent; color: var(--verde); border-color: #b9c4bb; }
.btn.sec:hover { background: var(--verde-tinte); }
.btn.chico { padding: 3px 10px; font-size: 12.5px; }
.btn-texto { color: var(--gris); font-size: 12.5px; cursor: pointer; }
.btn-texto:hover { color: var(--tinta); text-decoration: underline; }
.btn-texto.peligro:hover { color: var(--rojo); }

.menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; min-width: 210px; background: var(--blanco); border: 1px solid var(--linea); border-radius: 8px; box-shadow: 0 8px 24px rgba(27,35,30,.12); padding: 6px; }
.menu a { display: block; padding: 6px 10px; border-radius: 5px; }
.menu a:hover { background: var(--verde-tinte); }
.menu .rotulo { display: block; padding: 8px 10px 3px; }

/* ---------- Tablas ---------- */
.tabla-caja { background: var(--blanco); border: 1px solid var(--linea); border-radius: 4px; overflow-x: auto; }
.tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tabla th { text-align: left; font-size: 10.5px; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; color: var(--gris); padding: 10px 14px 8px; border-bottom: 1px solid var(--tinta); white-space: nowrap; }
.tabla td { padding: 8px 14px; border-bottom: 1px solid var(--linea-suave); vertical-align: top; }
.tabla tbody tr:nth-child(even) td { background: #faf9f5; }
.tabla tr.subfila td { background: var(--blanco) !important; border-bottom-style: dotted; font-size: 13px; padding-top: 5px; padding-bottom: 5px; }
.tabla tbody tr:hover td { background: #f1f4ef; }
.tabla tfoot td { border-top: 1px solid var(--tinta); border-bottom: 0; font-weight: 600; background: var(--blanco); }
.tabla .n, .tabla th.n { text-align: right; white-space: nowrap; }
.tabla .fijo { white-space: nowrap; }
.tabla .vacio { text-align: center; color: var(--gris); padding: 34px 14px; }
.cod { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-size: 12px; color: var(--gris); white-space: nowrap; }
.detalle { font-size: 12.5px; color: var(--gris); margin-top: 1px; }
.ingreso { color: var(--verde-medio); }
.egreso { color: var(--rojo); }
.fuerte { font-weight: 600; }
.clase { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--gris); white-space: nowrap; }
.clase .ico { width: 14px; height: 14px; margin-right: 6px; vertical-align: -3px; stroke-width: 2; color: #7d857f; }
.clase.ingreso .ico { color: var(--verde-medio); }
.solo-movil-linea { display: none; }
@media (max-width: 860px) { .solo-movil-linea { display: inline; } }
.clase.ingreso { color: var(--gris); }

.estado { font-size: 12px; font-weight: 600; white-space: nowrap; }
.estado.ok { color: var(--verde-medio); }
.estado.debe { color: var(--ocre); }

/* ---------- Cifras del resumen ---------- */
.cifras { display: grid; grid-template-columns: repeat(3, 1fr); background: var(--blanco); border: 1px solid var(--linea); border-radius: 4px; }
.cifras > div { padding: 20px 24px 22px; border-left: 1px solid var(--linea-suave); }
.cifras > div:first-child { border-left: 0; }
.cifras strong { display: block; margin-top: 6px; font-family: var(--serif); font-size: 31px; font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: -.01em; line-height: 1.1; }
.cifras small { display: block; margin-top: 5px; color: var(--gris); font-size: 12.5px; }
@media (max-width: 700px) {
  .cifras { grid-template-columns: 1fr; }
  .cifras > div { border-left: 0; border-top: 1px solid var(--linea-suave); padding: 14px 18px; }
  .cifras > div:first-child { border-top: 0; }
  .cifras strong { font-size: 26px; }
}

.pestanas { display: inline-flex; border: 1px solid #b9c4bb; border-radius: 7px; overflow: hidden; }
.pestanas a { padding: 5px 13px; font-size: 13px; color: var(--verde); border-left: 1px solid #b9c4bb; }
.pestanas a:first-child { border-left: 0; }
.pestanas a.activo { background: var(--verde); color: #fff; font-weight: 600; }

.barra { height: 6px; background: var(--linea-suave); border-radius: 3px; min-width: 90px; }
.barra i { display: block; height: 100%; border-radius: 3px; background: var(--rojo); opacity: .75; }
.barra.ingreso i { background: var(--verde-medio); }

.lista { background: var(--blanco); border: 1px solid var(--linea); border-radius: 4px; }
.lista > * { display: flex; justify-content: space-between; gap: 16px; padding: 9px 14px; border-top: 1px solid var(--linea-suave); font-variant-numeric: tabular-nums; }
.lista > *:first-child { border-top: 0; }
.lista a:hover { background: #f1f4ef; }

/* ---------- Formularios ---------- */
.ficha { background: var(--blanco); border: 1px solid var(--linea); border-radius: 4px; padding: 24px 26px; }
.campo { display: block; }
.campo > span { display: block; font-size: 12px; font-weight: 600; color: #3c463f; margin-bottom: 4px; }
.campo > span em { font-style: normal; font-weight: 400; color: var(--gris-claro); }
.entrada { width: 100%; background: var(--blanco); border: 1px solid #c9cdc4; border-radius: 6px; padding: 7px 10px; font-size: 14px; color: var(--tinta); font-variant-numeric: tabular-nums; }
.entrada:focus { outline: 2px solid var(--verde-medio); outline-offset: 0; border-color: var(--verde-medio); }
.entrada.n { text-align: right; }
.entrada.mini { padding: 4px 8px; font-size: 13px; }
.ayuda { font-size: 12px; color: var(--gris); margin-top: 4px; }
.opciones { display: inline-flex; border: 1px solid #c9cdc4; border-radius: 6px; overflow: hidden; }
.opciones label { padding: 7px 14px; cursor: pointer; border-left: 1px solid #c9cdc4; font-size: 13.5px; }
.opciones label:first-child { border-left: 0; }
.opciones input { position: absolute; opacity: 0; pointer-events: none; }
.opciones label:has(input:checked) { background: var(--verde); color: #fff; font-weight: 600; }
.filtros { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px; margin-bottom: 16px; }
.filtros .campo > span { font-weight: 400; color: var(--gris); }
.acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--linea-suave); }

.fichas { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.fichas button { font-size: 12.5px; padding: 4px 10px; border: 1px solid #c9cdc4; border-radius: 999px; background: var(--blanco); color: var(--tinta); cursor: pointer; }
.fichas button:hover { border-color: var(--verde-medio); }
.fichas button.activa { background: var(--verde); border-color: var(--verde); color: #fff; }
@media (max-width: 860px) { .fichas button { font-size: 14px; padding: 7px 13px; } }

.barra-seleccion { position: sticky; bottom: 12px; z-index: 20; margin-top: 14px; display: flex; align-items: center; gap: 14px; padding: 10px 16px; background: var(--verde); color: #fff; border-radius: 9px; box-shadow: 0 6px 20px rgba(27,35,30,.25); }
.barra-seleccion .btn { background: #d9b45a; border-color: #d9b45a; color: #1b231e; }
.barra-seleccion .btn-texto { color: #e3eae5; }
@media (max-width: 860px) { .barra-seleccion { bottom: calc(70px + env(safe-area-inset-bottom)); flex-wrap: wrap; } }
.pdf-marco { width: 100%; height: 78vh; border: 1px solid var(--linea); border-radius: 4px; background: #fff; }

.resumen-filtro { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 26px; margin: -4px 0 12px; padding: 9px 14px; background: var(--blanco); border: 1px solid var(--linea); border-left: 3px solid #d9b45a; border-radius: 4px; font-variant-numeric: tabular-nums; }
.resumen-filtro .rotulo { margin-right: 4px; }
.resumen-filtro b { font-size: 15px; }
@media (max-width: 860px) { .resumen-filtro { gap: 4px 16px; font-size: 13px; } .resumen-filtro b { font-size: 14px; } }

.ficha-persona { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; padding: 6px 12px; border: 1px solid #c9cdc4; border-radius: 999px; background: var(--blanco); }
.ficha-persona b { font-variant-numeric: tabular-nums; }
.ficha-persona.activa { background: var(--verde); border-color: var(--verde); color: #fff; }
.ficha-persona:hover { border-color: var(--verde-medio); }

.tabla th.ordenable-js { cursor: pointer; user-select: none; }
.tabla th.ordenable-js:hover, .tabla th.ordenable-js[data-dir] { color: var(--tinta); }
.tabla th.ordenable a { color: inherit; display: inline-flex; align-items: center; gap: 4px; }
.tabla th.ordenable a:hover { color: var(--tinta); }
.tabla th.ordenable.activo a { color: var(--tinta); }
.tabla th.ordenable .flecha { font-size: 11px; min-width: 9px; }
.tabla th.n.ordenable a { justify-content: flex-end; width: 100%; }

/* ---------- Avisos ---------- */
.aviso { background: var(--ocre-tinte); border-left: 3px solid var(--ocre); padding: 10px 14px; border-radius: 0 4px 4px 0; margin-bottom: 18px; color: #4d3608; }
.flash { display: flex; justify-content: space-between; gap: 16px; padding: 9px 14px; margin-bottom: 18px; border-radius: 4px; border: 1px solid; }
.flash.ok { background: var(--verde-tinte); border-color: #b5cbbb; color: var(--verde); }
.flash.error { background: #f8e9e5; border-color: #e0b9b0; color: var(--rojo); }
[x-cloak] { display: none !important; }

/* ---------- Selector de clase ---------- */
.clases-rotulo { font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--gris); margin: 0 0 6px; }
.clases { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 14px; }
.clases a { display: flex; align-items: center; gap: 9px; padding: 10px 12px; background: var(--blanco); border: 1px solid var(--linea); border-radius: 9px; font-weight: 600; font-size: 13.5px; line-height: 1.25; }
.clases a .ico { width: 19px; height: 19px; opacity: .8; }
.clases a.ingreso-tile { border-color: #bfd3c6; }
.clases a:hover { border-color: var(--verde-medio); }
.clases a.activo { background: var(--verde); border-color: var(--verde); color: #fff; }
.clases a.activo .ico { opacity: 1; }
.clases a.ingreso-tile.activo { background: var(--verde-medio); border-color: var(--verde-medio); }
@media (max-width: 860px) { .clases { grid-template-columns: repeat(2, 1fr); } .clases a { padding: 13px 14px; font-size: 15px; } }

/* ---------- Pantalla de acceso ---------- */
.acceso { display: flex; align-items: center; justify-content: center; min-height: 100vh; box-sizing: border-box; padding: 24px 16px; background: var(--verde) url("chima.jpg") center / cover no-repeat; }
.acceso::before { content: ""; position: fixed; inset: 0; background: linear-gradient(rgba(16, 42, 30, 0.35), rgba(16, 42, 30, 0.6)); }
.acceso-caja { position: relative; box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35); }
.acceso-caja { width: 100%; max-width: 360px; background: var(--blanco); border-radius: 12px; padding: 34px 30px 30px; }
.acceso-marca { display: block; font-family: var(--serif); font-size: 30px; font-weight: 600; line-height: 1; margin-bottom: 8px; }
.acceso-error { color: var(--rojo); font-size: 13px; margin-top: 8px; }

/* ---------- Selector de libro ---------- */
.libros { display: flex; flex-direction: column; border: 1px solid rgba(255,255,255,.32); border-radius: 7px; overflow: hidden; margin: 14px 0 6px; }
.libros form { display: contents; }
.libros > span, .libros button { display: flex; align-items: center; gap: 9px; width: 100%; text-align: left; padding: 8px 12px; font-size: 13px; font-weight: 600; color: #eef3ef; border-top: 1px solid rgba(255,255,255,.18); }
.libros > :first-child, .libros form:first-child button { border-top: 0; }
.libros .ico { width: 16px; height: 16px; }
.libros > span.activo { background: #d9b45a; color: #1b231e; }
.libros > span.activo .ico { stroke: #1b231e; }
.libros button:hover { background: rgba(255,255,255,.12); color: #fff; }
.solo-movil { display: none; }
@media (max-width: 860px) {
  .solo-escritorio { display: none; }
  .solo-movil { display: block; width: 100%; }
  .marca { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
  .libros { flex-direction: row; margin: 0; }
  .libros { border-color: rgba(255,255,255,.45); }
  .libros > span, .libros button { flex: 1; justify-content: center; gap: 6px; padding: 9px 4px; font-size: 13px; color: #fff; border-top: 0; border-left: 1px solid rgba(255,255,255,.18); white-space: nowrap; }
  .libros > :first-child, .libros form:first-child button { border-left: 0; }
}

/* ---------- Impresión de listados ---------- */
@media print {
  .lateral, .barra-movil, .hoja, .hoja-fondo, .filtros, .flash, .btn, .btn-texto, .no-imprimir, .pestanas { display: none !important; }
  .marco { display: block; }
  .app, .pagina { background: #fff; padding: 0; max-width: none; }
  .tabla-caja { border: 0; overflow: visible; }
  .tabla td, .tabla th { padding: 5px 8px; font-size: 12px; }
  .cabecera { border-bottom-width: 1px; }
  .cabecera::after { content: "Impreso el " attr(data-hoy); font-size: 11px; color: #666; }
  a { color: inherit; text-decoration: none; }
}

/* ---------- Entorno de pruebas o local: franja fija y marco ---------- */
.entorno-aviso { --banda: 34px; }
.entorno-banda { font-family: ui-sans-serif, system-ui, "Segoe UI", Roboto, sans-serif; position: sticky; top: 0; z-index: 70; height: var(--banda); display: flex; align-items: center; justify-content: center; gap: 14px; padding: 0 12px; font-size: 12.5px; color: #fff; white-space: nowrap; overflow: hidden;
  background: repeating-linear-gradient(-45deg, #b4410f 0 14px, #9a360b 14px 28px); }
.entorno-banda strong { letter-spacing: .12em; text-transform: uppercase; font-size: 12px; }
.entorno-banda form { margin: 0; }
.entorno-banda button { background: #fff; color: #7a2c09; border-radius: 5px; padding: 3px 10px; font-weight: 600; font-size: 12px; }
.entorno-banda button:hover { background: #fde7d9; }
.entorno-local .entorno-banda { background: repeating-linear-gradient(-45deg, #4b5563 0 14px, #374151 14px 28px); }
.entorno-aviso::after { content: ""; position: fixed; inset: 0; z-index: 69; pointer-events: none; border: 4px solid #b4410f; }
.entorno-local::after { border-color: #4b5563; }
@media (min-width: 861px) { .entorno-aviso .lateral { top: var(--banda); height: calc(100vh - var(--banda)); } }
.entorno-aviso.acceso { flex-direction: column; padding-top: 0; }
.entorno-aviso.acceso .entorno-banda { position: fixed; left: 0; right: 0; }
@media (max-width: 860px) {
  .entorno-nota { display: none; }
  .entorno-banda { justify-content: space-between; }
}

/* ---------- Botón Volver ---------- */
.volver { display: inline-flex; align-items: center; gap: 6px; margin: -4px 0 14px; padding: 6px 12px 6px 8px; border: 1px solid var(--linea); border-radius: 8px; background: var(--blanco); color: var(--verde); font-size: 13.5px; font-weight: 600; }
.volver svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.volver:hover { border-color: var(--verde); }
@media (max-width: 860px) { .volver { margin: -6px 0 14px; padding: 9px 14px 9px 10px; font-size: 14.5px; } }
@media print { .volver { display: none; } }

/* ---------- Soportes: carga y estados ---------- */
.cargador { border: 1.5px dashed #c9cdc4; border-radius: 10px; padding: 14px; background: var(--blanco); }
.cargador.encima { border-color: var(--verde); background: #eef3ef; }
.cargador-real { display: none; }
.cargador-real.visible { display: block; margin-bottom: 8px; }
.cargador-botones { display: flex; flex-wrap: wrap; gap: 10px; }
.cargador-botones .btn { display: inline-flex; align-items: center; gap: 8px; }
.cargador-botones .ico { width: 18px; height: 18px; }
.cargador .ayuda { margin-top: 8px; }
.cargador-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 10px; margin-top: 12px; }
.cargador-item { position: relative; border: 1px solid var(--linea); border-radius: 8px; overflow: hidden; background: #f6f5f0; }
.cargador-item img { display: block; width: 100%; height: 100px; object-fit: cover; }
.cargador-doc { display: flex; align-items: center; justify-content: center; width: 100%; height: 100px; font-weight: 700; font-size: 13px; letter-spacing: .05em; color: var(--gris); background: #efede6; }
.cargador-nombre { display: block; padding: 4px 6px; font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cargador-item button { position: absolute; top: 4px; right: 4px; width: 28px; height: 28px; border-radius: 50%; background: rgba(27,35,30,.78); color: #fff; font-size: 12px; }
.cargador-guardar { margin-top: 14px; }
.cargador-guardar:disabled { opacity: .6; }
@media (max-width: 860px) {
  .cargador-botones .btn { flex: 1 1 140px; justify-content: center; padding-top: 14px; padding-bottom: 14px; font-size: 15px; }
  .cargador-guardar { width: 100%; justify-content: center; padding-top: 14px; padding-bottom: 14px; font-size: 15px; }
}
.soporte-caja { margin-bottom: 22px; scroll-margin-top: 60px; }
.soporte-caja.resaltar { box-shadow: 0 0 0 3px #d9b45a; }
.soporte-mas { margin-top: 14px; }
.soporte-mas summary { cursor: pointer; font-weight: 600; color: var(--verde); margin-bottom: 10px; }
.soportes { display: grid; gap: 10px; }
.soporte { display: flex; gap: 12px; align-items: center; border: 1px solid var(--linea); border-radius: 9px; padding: 8px; background: var(--blanco); }
.soporte-vista { flex: none; }
.soporte-vista img, .soporte-vista .cargador-doc { width: 76px; height: 76px; object-fit: cover; border-radius: 6px; }
.soporte-datos { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.soporte-nombre { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.soporte-acciones { display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: center; }
.soporte-acciones form { margin: 0; }
.estado-comp { display: inline-block; white-space: nowrap; font-size: 11.5px; font-weight: 700; letter-spacing: .02em; padding: 2px 8px; border-radius: 999px; margin-right: 6px; vertical-align: 1px; }
.estado-comp.firmado { background: #e1efe5; color: #2f6b45; }
.estado-comp.pendiente { background: #f8ecd2; color: #8a5a10; }
.estado-comp.falta { background: #d9622b; color: #fff; }
.estado-comp.anulado { background: #f3e1dc; color: #9a3b26; }
.punto-soporte { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 7px; vertical-align: 0; flex: none; }
.punto-soporte.ok { background: #3f8a5a; }
.punto-soporte.pendiente { background: #d29a2a; }
.punto-soporte.sin { box-shadow: inset 0 0 0 1.6px #b0412b; }
.leyenda-soporte { margin-top: 10px; }
.aviso-soportes { margin-top: 14px; }
.aviso-soportes a { display: inline-flex; align-items: center; }
@media print { .cargador, .soporte-caja, .leyenda-soporte, .aviso-soportes { display: none !important; } }

/* ---------- Partes del ganado: editar por partes o por porcentaje ---------- */
.modo-edicion { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-bottom: 12px; }
.modo-edicion .ayuda { flex-basis: 100%; margin: 0; }
.casilla-pct { display: inline-flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.casilla-pct small { font-size: 11px; white-space: nowrap; }
.casilla-pct-fila { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.btn:disabled { opacity: .5; cursor: not-allowed; }

/* ---------- Totales arriba en tablas largas ---------- */
.tabla thead .fila-total td { font-weight: 700; background: #f3f1ea; border-bottom: 1px solid var(--linea); text-transform: none; letter-spacing: 0; font-size: 13.5px; color: var(--tinta); }
.tabla .fila-total .tenue { font-weight: 400; }

/* ---------- Conteos de ganado ---------- */
.tabla .grupo-conteo td { background: #f3f1ea; font-weight: 700; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--gris); padding-top: 7px; padding-bottom: 7px; }
.tabla-conteo input { font-size: 16px; }
@media (max-width: 860px) {
  .tabla-conteo th, .tabla-conteo td { padding-left: 6px; padding-right: 6px; }
  .tabla-conteo td:first-child { padding-left: 10px; }
  .ficha-conteo { padding: 18px 12px; }
  .ficha-conteo .tabla-caja { margin-left: -4px; margin-right: -4px; }
  .tabla-conteo input { width: 62px !important; padding-left: 6px; padding-right: 6px; }
}
.tabla-ancha { overflow-x: auto; }
.tabla-ancha .tabla th, .tabla-ancha .tabla td { white-space: nowrap; }

/* ---------- Balance del Grupo A ---------- */
.tabla-balance th, .tabla-balance td { font-size: 12.5px; padding-left: 8px; padding-right: 8px; }
.tabla-balance th.grupo-col { text-align: center; border-bottom: 1px solid var(--linea); }
.tarjetas-derecho { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; margin-top: 18px; }
.tarjetas-derecho .tabla { width: 100%; table-layout: fixed; }
.tarjetas-derecho .tabla td:last-child, .tarjetas-derecho .tabla th:last-child { width: 120px; white-space: nowrap; }
.aviso-info { background: #eef3ef; border-color: var(--verde-medio); }
.opciones-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 6px 14px; }
.documentos-cierre { margin-bottom: 8px; }
.documentos-cierre .btn-texto + .btn-texto { margin-left: 12px; }
@media (max-width: 860px) { .documentos-cierre td.fijo .btn-texto { display: block; margin: 0 0 4px; } }

/* ---------- Flujo de caja por mes ---------- */
.tabla-flujo .detalle.solo-movil-linea { display: none; }
@media (max-width: 860px) { .tabla-flujo .detalle.solo-movil-linea, .tabla .detalle.solo-movil-linea { display: block; } }
@media (max-width: 860px) {
  .tabla-flujo th, .tabla-flujo td, .tabla-pasto th, .tabla-pasto td { padding-left: 8px; padding-right: 8px; font-size: 13.5px; }
  .tabla-flujo td.fijo, .tabla-pasto td.fijo { white-space: normal; }
  .tabla-flujo td:first-child, .tabla-pasto td:first-child { padding-left: 12px; }
  .tabla-flujo .detalle, .tabla-pasto .detalle { font-size: 11.5px; }
}
.tenue-fila td { color: var(--gris); }
@media (min-width: 861px) {
  .tabla-pasto th, .tabla-pasto td, .tabla-flujo th, .tabla-flujo td { padding-left: 10px; padding-right: 10px; }
  .tabla-pasto td:first-child, .tabla-flujo td:first-child, .tabla-pasto th:first-child, .tabla-flujo th:first-child { padding-left: 14px; }
}
.ficha-persona.ficha-nueva { border-style: dashed; color: var(--verde); font-weight: 600; }
.ficha-persona.ficha-nueva.activa { border-style: solid; color: #fff; }

.ficha-persona.ficha-al-dia { color: var(--gris, #6b6f68); }
.ficha-persona.ficha-al-dia.activa { color: #fff; }

/* ---------- Configuración ---------- */
.indice-config a { text-decoration: none; }
.subtitulo-config { font-weight: 700; margin: 22px 0 6px; font-size: 15px; }
.color-libro { width: 46px; height: 34px; padding: 2px; border: 1px solid var(--linea); border-radius: 6px; background: var(--blanco); cursor: pointer; }
.ficha-quitar { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; padding: 3px 4px 3px 11px; border: 1px solid #c9cdc4; border-radius: 999px; background: var(--blanco); }
.ficha-quitar button { width: 20px; height: 20px; border-radius: 50%; color: var(--gris); font-size: 11px; line-height: 1; }
.ficha-quitar button:hover { background: var(--linea-suave); color: var(--rojo); }
#colores, #medios, #categorias, #numeracion, #pasto { scroll-margin-top: 70px; }

/* ---------- Filtros de Movimientos: cada filtro es un botón que muestra su valor y se aplica al elegir ---------- */
.barra-filtros { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 16px; }
.buscar-mov { position: relative; flex: 1 1 260px; max-width: 420px; display: flex; align-items: center; }
.buscar-mov svg { position: absolute; left: 11px; width: 16px; height: 16px; stroke: var(--gris); stroke-width: 2; fill: none; pointer-events: none; }
.buscar-mov input { width: 100%; height: 36px; padding: 0 30px 0 34px; border: 1px solid #c9cdc4; border-radius: 999px; background: var(--blanco); font-size: 14px; }
.buscar-mov input:focus { outline: none; border-color: var(--verde); box-shadow: 0 0 0 3px var(--verde-tinte); }
.buscar-mov.activo input { border-color: var(--verde); background: var(--verde-tinte); font-weight: 600; }
.buscar-mov .limpiar { position: absolute; right: 10px; color: var(--gris); text-decoration: none; font-size: 12px; }
.filtro { position: relative; display: inline-flex; }
.pastilla { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 12px 0 14px; border: 1px solid #c9cdc4; border-radius: 999px;
  background: var(--blanco); color: var(--tinta); font-size: 13.5px; cursor: pointer; white-space: nowrap; }
.pastilla:hover { border-color: var(--verde-medio); }
.pastilla svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2; fill: none; opacity: .7; }
.pastilla[aria-expanded="true"] svg { transform: rotate(180deg); }
.pastilla.activa { background: var(--verde); border-color: var(--verde); color: #fff; padding-right: 36px; }
.pastilla.activa b { font-weight: 700; }
.quitar-pastilla { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: grid; place-items: center; width: 22px; height: 22px;
  border-radius: 50%; background: rgba(255,255,255,.2); color: #fff; font-size: 11px; text-decoration: none; }
.quitar-pastilla:hover { background: rgba(255,255,255,.4); }
.pastilla.activa svg { display: none; }
.menu-filtro { position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; min-width: 220px; max-height: 340px; overflow-y: auto; padding: 6px;
  background: var(--blanco); border: 1px solid var(--linea); border-radius: 8px; box-shadow: 0 10px 28px rgba(27,35,30,.16); }
.menu-filtro > a, .opcion-rango { display: block; width: 100%; text-align: left; padding: 8px 10px; border-radius: 5px; color: var(--tinta); text-decoration: none; font-size: 14px; }
.menu-filtro > a:hover, .opcion-rango:hover { background: var(--verde-tinte); }
.menu-filtro > a.elegida { font-weight: 700; color: var(--verde); }
.menu-filtro > a.elegida::before { content: "✓ "; }
.opcion-rango { border-top: 1px solid var(--linea-suave); margin-top: 4px; padding-top: 10px; color: var(--verde); font-weight: 600; cursor: pointer; }
.rango-fechas { display: grid; gap: 8px; padding: 8px 6px 4px; }
.quitar-todos { margin-left: 4px; }
@media (max-width: 860px) {
  .buscar-mov { flex-basis: 100%; max-width: none; }
  .pastilla { height: 38px; font-size: 14px; }
  .menu-filtro { position: fixed; left: 12px; right: 12px; top: auto; bottom: 76px; min-width: 0; max-height: 60vh; }
}
@media print { .barra-filtros { display: none !important; } }
.opciones-multiples { display: grid; }
.ayuda-menu { margin: 2px 10px 4px; font-size: 11.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--gris); }
.opcion-casilla { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 5px; font-size: 14px; cursor: pointer; }
.opcion-casilla:hover { background: var(--verde-tinte); }
.opcion-casilla input { width: 17px; height: 17px; accent-color: var(--verde); flex: none; }
.opcion-casilla:has(input:checked) span { font-weight: 700; color: var(--verde); }
.pie-menu { position: sticky; bottom: -6px; display: flex; align-items: center; gap: 12px; margin: 6px -6px -6px; padding: 10px 12px;
  background: var(--blanco); border-top: 1px solid var(--linea-suave); border-radius: 0 0 8px 8px; }

/* ---------- Reporte de Minerva ---------- */
.reporte-minerva { margin-top: 18px; }
.detalle-reporte { margin-top: 12px; }
.detalle-reporte summary { cursor: pointer; color: var(--verde); font-weight: 600; font-size: 14px; }
.etiqueta-sentido { font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.etiqueta-sentido.paga { background: #f8ecd2; color: #8a5a10; }
.etiqueta-sentido.recibe { background: #e1efe5; color: #2f6b45; }
.subtitulo-lista { font-size: 11.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--gris); background: var(--papel) !important; }
.lista a > span:first-child .detalle { display: block; }

/* ---------- Cuota en celular: nombre con estado y botones; columnas de valor reducidas a «Pendiente» ---------- */
.cuota-movil { display: none; }
@media (max-width: 860px) {
  .cuota-movil { display: block; margin-top: 6px; }
  .cuota-movil .estado { font-size: 12px; }
  .cuota-movil-acciones { display: flex; align-items: center; gap: 14px; margin-top: 8px; }
  .cuota-movil-acciones .btn { padding: 8px 14px; }
  .fila-form .filtros { flex-direction: column; align-items: stretch; }
  .fila-form .filtros .entrada { width: 100% !important; }
}

/* Celular: botón de PDF mientras se prepara el archivo para compartir */
a.preparando { opacity: .6; pointer-events: none; }
