/* Único tema de toda la app: oscuro siempre, sin importar el modo
   claro/oscuro del sistema operativo del usuario ni ningún toggle —
   antes esto dependía de prefers-color-scheme y de un botón para
   alternar; ambos se quitaron a pedido explícito para que todos vean
   siempre esta misma paleta. */
:root{
  --surface-1:#131a24;
  --surface-2:#182230;
  --page:#0a0e14;
  --text-primary:#dff7fb;
  --text-secondary:#a8d4e0;
  --text-muted:#e0d9c4;
  --grid:#1f2a3a;
  --baseline:#2c3a4d;
  --border:rgba(135,180,255,0.14);
  --accent:#0a6fa8;
  --accent-ink:#ffffff;
  --gauge-track:#c7d6e3;

  --s1-blue:#3987e5;
  --s2-aqua:#199e70;
  --s3-yellow:#c98500;
  --s4-green:#008300;
  --s5-violet:#9085e9;
  --s6-red:#e66767;
  --s7-magenta:#d55181;
  --s8-orange:#d95926;

  --good:#0ca30c;
  --warning:#fab219;
  --serious:#ec835a;
  --critical:#d03b3b;

  --good-bg:rgba(12,163,12,0.18);
  --warning-bg:rgba(250,178,25,0.20);
  --critical-bg:rgba(208,59,59,0.20);
}

*{box-sizing:border-box;}
body{
  margin:0;
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  background:var(--page);
  color:var(--text-primary);
  -webkit-font-smoothing:antialiased;
  position:relative;
}
a{color:inherit;}

/* Pantalla de carga / transición entre páginas: fondo azul con el logo
   centrado, se muestra al llegar a una página nueva o al hacer clic en
   un link del menú, y se desvanece cuando el contenido ya está listo. */
.page-loader{
  position:fixed;inset:0;z-index:99999;background:#2e5da1;
  display:flex;align-items:center;justify-content:center;
  transition:opacity .35s ease, visibility .35s ease;
}
.page-loader.hidden{opacity:0;visibility:hidden;pointer-events:none;}
.page-loader.hidden .page-loader-logo{animation:none;}
.page-loader-logo{
  width:130px;height:130px;object-fit:contain;
  animation:page-loader-pulse 1.4s ease-in-out infinite;
}
@keyframes page-loader-pulse{
  0%,100%{transform:scale(1);opacity:1;}
  50%{transform:scale(1.08);opacity:.85;}
}
@media print{ .page-loader{display:none !important;} }

/* Fondo decorativo "burbujas": círculos suaves detrás de las tarjetas
   (que tienen fondo sólido), visibles solo en el espacio entre ellas. */
body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-image:
    radial-gradient(circle at 6% 10%,  rgba(255,255,255,0.050) 0%, transparent 9%),
    radial-gradient(circle at 90% 6%,  rgba(255,255,255,0.045) 0%, transparent 12%),
    radial-gradient(circle at 82% 85%, rgba(255,255,255,0.050) 0%, transparent 15%),
    radial-gradient(circle at 10% 88%, rgba(255,255,255,0.035) 0%, transparent 10%),
    radial-gradient(circle at 48% 42%, rgba(255,255,255,0.030) 0%, transparent 22%),
    radial-gradient(circle at 66% 18%, rgba(255,255,255,0.040) 0%, transparent 8%),
    radial-gradient(circle at 24% 60%, rgba(255,255,255,0.032) 0%, transparent 12%);
}

.app-layout{display:flex;align-items:stretch;min-height:100vh;}
.app-main{flex:1;min-width:0;}
.app{max-width:1400px;margin:0 auto;padding:20px 24px 60px;}
.app.app-full{max-width:none;}

/* HEADER */
header.top{
  display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;
  gap:16px;margin-bottom:20px;
}
.title-block h1{font-size:22px;margin:0 0 4px;font-weight:700;}
.title-block p{margin:0;color:var(--text-secondary);font-size:13.5px;}
.header-controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.control{
  background:var(--surface-2);border:1px solid var(--border);border-radius:8px;
  padding:8px 12px;font-size:13.5px;color:var(--text-primary);
}
input.control{min-width:220px;}
select.control{cursor:pointer;}
button.icon-btn{
  background:var(--surface-2);border:1px solid var(--border);border-radius:8px;
  width:36px;height:36px;cursor:pointer;color:var(--text-primary);font-size:16px;
  display:flex;align-items:center;justify-content:center;
}
button.icon-btn:hover{background:var(--page);}

/* SIDEBAR */
.sidebar{
  width:224px;flex:none;background:var(--surface-1);border-right:1px solid var(--border);
  display:flex;flex-direction:column;transition:width .15s ease;
  position:sticky;top:0;align-self:flex-start;height:100vh;overflow-x:hidden;overflow-y:auto;
}
.sidebar.collapsed{width:60px;}
.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:12px;gap:8px;}
.sidebar-logo{width:24px;height:24px;border-radius:6px;object-fit:contain;flex:none;}
.sidebar-brand{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;flex:1;}
.sidebar-toggle{
  background:none;border:1px solid var(--border);border-radius:8px;color:var(--text-secondary);
  cursor:pointer;font-size:15px;padding:6px 9px;flex:none;
}
.sidebar-toggle:hover{background:var(--surface-2);color:var(--text-primary);}
.sidebar-links{display:flex;flex-direction:column;gap:2px;padding:4px 8px;flex:1;}
.sidebar-link{
  display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:8px;
  color:var(--text-secondary);text-decoration:none;white-space:nowrap;font-size:13.5px;
  background:none;border:none;cursor:pointer;width:100%;text-align:left;
}
.sidebar-link:hover{background:var(--surface-2);color:var(--text-primary);}
.sidebar-link.active{background:var(--accent);color:var(--accent-ink);}
.sidebar-link.danger{color:var(--critical);}
.sidebar-icon{font-size:16px;flex:none;width:20px;text-align:center;}
.sidebar-label{overflow:hidden;text-overflow:ellipsis;}
.sidebar.collapsed .sidebar-label,
.sidebar.collapsed .sidebar-brand{display:none;}
.sidebar.collapsed .sidebar-link{justify-content:center;padding:9px;}
.sidebar.collapsed .sidebar-header{justify-content:center;}
.sidebar-group{display:flex;flex-direction:column;}
.sidebar-parent-row{display:flex;align-items:stretch;gap:2px;}
.sidebar-parent-row .sidebar-link{flex:1;min-width:0;}
.sidebar-chevron{
  flex:none;background:none;border:none;color:var(--text-muted);cursor:pointer;
  width:26px;border-radius:8px;font-size:11px;transition:transform .15s ease;
}
.sidebar-chevron:hover{background:var(--surface-2);color:var(--text-primary);}
.sidebar-group.expanded .sidebar-chevron{transform:rotate(180deg);}
.sidebar-sublist{display:none;flex-direction:column;padding-left:30px;gap:1px;margin:2px 0 4px;}
.sidebar-group.expanded .sidebar-sublist{display:flex;}
.sidebar-sublink{
  display:block;padding:7px 10px;border-radius:8px;font-size:12.5px;
  color:var(--text-muted);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.sidebar-sublink:hover{background:var(--surface-2);color:var(--text-primary);}
.sidebar-sublink.active{color:var(--accent);font-weight:600;}
.sidebar.collapsed .sidebar-chevron,
.sidebar.collapsed .sidebar-sublist{display:none;}
.sidebar-subgroup{display:flex;flex-direction:column;}
.sidebar-subparent-row{display:flex;align-items:stretch;gap:2px;}
.sidebar-subparent-row .sidebar-sublink{flex:1;min-width:0;}
.sidebar-subchevron{
  flex:none;background:none;border:none;color:var(--text-muted);cursor:pointer;
  width:22px;border-radius:8px;font-size:10px;transition:transform .15s ease;
}
.sidebar-subchevron:hover{background:var(--surface-2);color:var(--text-primary);}
.sidebar-subgroup.expanded .sidebar-subchevron{transform:rotate(180deg);}
.sidebar-subsublist{display:none;flex-direction:column;padding-left:14px;gap:1px;margin:1px 0 3px;}
.sidebar-subgroup.expanded .sidebar-subsublist{display:flex;}
.sidebar.collapsed .sidebar-subchevron,
.sidebar.collapsed .sidebar-subsublist{display:none;}
.sidebar-footer{border-top:1px solid var(--border);padding:8px;display:flex;flex-direction:column;gap:2px;}
.sidebar-user{
  display:flex;align-items:center;gap:12px;padding:8px 10px;font-size:12px;color:var(--text-muted);
  text-decoration:none;border-radius:8px;overflow:hidden;
}
.sidebar-user:hover{background:var(--surface-2);color:var(--text-primary);}
.sidebar-user.active{background:var(--accent);color:var(--accent-ink);}
.sidebar-user .sidebar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sidebar.collapsed .sidebar-user{justify-content:center;padding:9px;}
.nav-avatar{width:26px;height:26px;border-radius:50%;object-fit:cover;border:1px solid var(--border);flex:none;}

/* MENÚ EN CELULAR: bajo MOBILE_NAV_BREAKPOINT (900px, ver auth-guard.js) el
   sidebar deja de convivir en la fila y pasa a ser un cajón que se abre
   encima del contenido, con un botón ☰ flotante y un fondo oscuro para
   cerrarlo tocando afuera. Ocultos por completo en escritorio. */
.mobile-menu-btn{
  display:none;position:fixed;top:14px;left:14px;z-index:310;
  width:40px;height:40px;border-radius:10px;border:1px solid var(--border);
  background:var(--surface-1);color:var(--text-primary);font-size:18px;
  align-items:center;justify-content:center;cursor:pointer;
  box-shadow:0 2px 10px rgba(0,0,0,.25);
}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:250;}
.sidebar-backdrop.active{display:block;}

@media(max-width:900px){
  .mobile-menu-btn{display:flex;}
  .app{padding:60px 14px 40px;}
  .sidebar{
    position:fixed;top:0;left:0;height:100vh;width:264px;max-width:82vw;
    transform:translateX(-100%);transition:transform .2s ease;z-index:300;
    box-shadow:2px 0 20px rgba(0,0,0,.35);
  }
  .sidebar.mobile-open{transform:translateX(0);}
  input.control{min-width:0;}
  .eval-header-grid{grid-template-columns:1fr;}
  .eval-signatures{flex-wrap:wrap;gap:24px;}
}
@media(max-width:560px){
  .app{padding:56px 10px 36px;}
  .title-block h1{font-size:19px;}
}

.btn{
  background:var(--surface-2);border:1px solid var(--border);border-radius:8px;
  padding:8px 14px;font-size:13.5px;color:var(--text-primary);cursor:pointer;
  text-decoration:none;display:inline-flex;align-items:center;gap:6px;
}
.btn:hover{background:var(--page);}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
.btn.primary:hover{filter:brightness(1.05);}
.btn.danger{color:var(--critical);}
.btn.warning{background:var(--warning-bg);border-color:var(--warning);color:#8a6200;}
.btn.warning:hover{filter:brightness(0.97);}
.btn:disabled{opacity:0.5;cursor:not-allowed;}
.btn svg,.pill svg,.icon-btn svg{width:15px;height:15px;flex:none;}

/* KPI GRID */
.kpi-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;
}
@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.kpi-grid{grid-template-columns:1fr;}}
.stat-tile{
  background:var(--surface-1);border:1px solid var(--border);border-radius:12px;
  padding:14px 16px;
}
.stat-tile .label{font-size:12px;color:var(--text-secondary);margin-bottom:6px;}
.stat-tile .value{font-size:22px;font-weight:600;letter-spacing:-0.3px;}
.stat-tile .sub{font-size:11.5px;color:var(--text-muted);margin-top:4px;}
.stat-tile.status-critical .value{color:var(--critical);}
.stat-tile.status-good .value{color:var(--good);}
.stat-tile.status-warning .value{color:var(--warning);}
.stat-tile.status-critical{border-color:var(--critical);}
.stat-tile.status-good{border-color:var(--good);}
.stat-tile.status-warning{border-color:var(--warning);}
.stat-tile.clickable{cursor:pointer;transition:border-color .15s, transform .1s, background .15s;}
.stat-tile.clickable:hover{border-color:var(--accent);transform:translateY(-1px);}
.stat-tile.clickable.active-filter{background:var(--surface-2);box-shadow:inset 0 0 0 2px currentColor;}

/* CHART CARDS */
.chart-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;margin-bottom:20px;}
@media(max-width:1000px){.chart-grid{grid-template-columns:1fr;}}
.chart-grid.secondary{grid-template-columns:1fr 1fr;}
@media(max-width:1000px){.chart-grid.secondary{grid-template-columns:1fr;}}
.chart-grid-3{display:grid;grid-template-columns:1.1fr 1fr 0.9fr;gap:14px;margin-bottom:20px;}
@media(max-width:1200px){.chart-grid-3{grid-template-columns:1fr 1fr;}}
@media(max-width:700px){.chart-grid-3{grid-template-columns:1fr;}}
.card{
  background:var(--surface-1);border:1px solid var(--border);border-radius:12px;
  padding:16px 18px;
}
.card h3{margin:0 0 2px;font-size:14.5px;font-weight:600;}
.card .card-sub{font-size:12px;color:var(--text-muted);margin-bottom:10px;}
.card canvas{max-height:280px;}

.legend-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--text-secondary);}
.legend-row .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;}
.legend-row .clickable-legend{cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px;}
.legend-row .clickable-legend:hover{color:var(--accent);}

/* ---- hand-built SVG / HTML charts ---- */
.chart-svg-wrap{position:relative;}
.chart-svg-wrap svg{width:100%;height:auto;display:block;overflow:visible;}
.svg-gridline{stroke:var(--grid);stroke-width:1;}
.svg-axis-label{fill:var(--text-muted);font-size:10.5px;}
.svg-endlabel{font-size:11px;font-weight:600;}
.chart-tooltip{
  position:absolute;pointer-events:none;background:var(--surface-2);border:1px solid var(--border);
  border-radius:8px;padding:8px 10px;font-size:12px;box-shadow:0 4px 14px rgba(0,0,0,0.12);
  opacity:0;transition:opacity .1s;white-space:nowrap;z-index:5;
}
.chart-tooltip .tt-row{display:flex;align-items:center;gap:6px;margin-top:2px;}
.chart-tooltip .tt-dot{width:8px;height:8px;border-radius:50%;flex:none;}
.chart-tooltip .tt-month{font-weight:600;color:var(--text-primary);margin-bottom:2px;}
.hover-col{fill:transparent;}
.hover-col:hover{fill:var(--page);opacity:0.5;}
.crosshair{stroke:var(--baseline);stroke-width:1;opacity:0;pointer-events:none;}

.donut-wrap{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap;}
.donut-center-value{font-size:26px;font-weight:700;fill:var(--text-primary);}
.donut-center-value.neg{fill:var(--critical);}
.donut-center-label{font-size:10.5px;fill:var(--text-muted);}
.donut-seg{transition:opacity .15s;}
.donut-seg:hover{opacity:0.75;}

/* REPORTE MENSUAL (Editar datos) */
.report-recipients{display:flex;flex-wrap:wrap;gap:8px 16px;background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:12px 16px;}

.report-recipient{display:flex;align-items:center;gap:7px;font-size:13px;}

#reporteTable{table-layout:fixed;width:auto;min-width:100%;font-size:11.5px;border-collapse:separate;border-spacing:0;}
#reporteTable th, #reporteTable td{white-space:normal;word-break:break-word;padding:6px 6px;overflow:hidden;}
#reporteTable thead th{background:var(--surface-2);z-index:2;border-bottom:none;box-shadow:inset 0 -1px 0 var(--border);}
#reporteTable td.num, #reporteTable th.num{text-align:center;}
#reporteTable input[type="checkbox"]{width:15px;height:15px;cursor:pointer;}
#reporteTable th.sortable{cursor:grab;user-select:none;line-height:1.25;position:sticky;top:0;}
#reporteTable th.sortable:hover{color:var(--accent);}
#reporteTable th.sortable.drag-over{box-shadow:inset 2px 0 0 var(--accent), inset -1px 0 0 var(--border);background:var(--surface-1);}
#reporteTable .col-resizer{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;z-index:3;}
#reporteTable .col-resizer:hover, #reporteTable .col-resizer.resizing{background:var(--accent);opacity:0.6;}
#reporteTable .num-critical{color:var(--critical);font-weight:600;}
#reporteTable .num-warning{color:var(--warning);font-weight:600;}
#reporteTable .num-good{color:var(--good);font-weight:600;}
#diferenciasTable .num-critical{color:var(--critical);font-weight:600;}
#diferenciasTable .num-warning{color:var(--warning);font-weight:600;}
#diferenciasTable .num-good{color:var(--good);font-weight:600;}
/* Columna "Total": se destaca del resto de las columnas mensuales */
#diferenciasTable th.col-total, #diferenciasTable td.col-total{
  border-left:2px solid var(--border);background:var(--surface-2);font-weight:700;
}
.report-bulk-actions{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin-top:14px;}
.report-bulk-group{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-secondary);}
.report-bulk-group .btn{padding:5px 10px;font-size:12px;}

.hbar-list{display:flex;flex-direction:column;gap:10px;}
.hbar-row{display:grid;grid-template-columns:110px 1fr 90px;align-items:center;gap:10px;}
.hbar-label{font-size:12.5px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hbar-track{position:relative;height:16px;}
.hbar-fill{
  position:absolute;left:0;top:3px;height:10px;border-radius:4px;background:var(--accent);
  transition:filter .1s;
}
.hbar-fill:hover{filter:brightness(1.12);}
.hbar-fill.neg{background:var(--critical);}
.hbar-fill.good{background:var(--good);}
.hbar-value{font-size:12px;font-variant-numeric:tabular-nums;text-align:right;color:var(--text-primary);font-weight:500;}

.mini-progress{min-width:120px;}
.mini-progress-label{font-size:11px;color:var(--text-secondary);white-space:nowrap;margin-bottom:4px;}
.mini-progress .hbar-track{width:100%;}

tr.rank-row-top{background:var(--good-bg);}
tr.rank-row-bottom{background:var(--critical-bg);}

/* Registro de Pagos: filas de distrito expandibles con iglesias adentro */
.distrito-row{background:var(--surface-1);border:1px solid var(--border);border-radius:10px;margin-bottom:10px;overflow:hidden;}
.distrito-row-head{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;}
.distrito-row-head:hover{background:var(--page);}
.distrito-toggle{
  width:22px;height:22px;flex:none;border-radius:6px;border:1px solid var(--border);background:var(--surface-2);
  color:var(--text-primary);font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;
}
.distrito-row-label{font-weight:600;flex:1;}
.distrito-row-count{font-size:12px;color:var(--text-muted);}
.distrito-row-total{font-weight:700;font-variant-numeric:tabular-nums;min-width:110px;text-align:right;}
.distrito-row-children{border-top:1px solid var(--border);background:var(--page);}
.iglesia-row{display:flex;align-items:center;gap:12px;padding:9px 14px 9px 46px;font-size:13px;}
.iglesia-row:not(:last-child){border-bottom:1px solid var(--border);}
.iglesia-row-label{flex:1;color:var(--text-secondary);}
.iglesia-row-count{font-size:11.5px;color:var(--text-muted);}
.iglesia-row-total{font-weight:600;font-variant-numeric:tabular-nums;min-width:110px;text-align:right;}

/* ANÁLISIS (página de detalle por indicador) */
.kpi-hero{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;}
.kpi-hero .hero-value{font-size:34px;font-weight:700;letter-spacing:-0.5px;}
.kpi-hero .hero-sub{color:var(--text-muted);font-size:13px;}
.two-col-equal{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media(max-width:800px){.two-col-equal{grid-template-columns:1fr;}}
.donut-row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
@media(max-width:900px){.donut-row-3{grid-template-columns:1fr 1fr;}}
@media(max-width:600px){.donut-row-3{grid-template-columns:1fr;}}
.rank-pct{color:var(--text-muted);}
.crumb-link{cursor:pointer;color:var(--accent);}
.crumb-link:hover{text-decoration:underline;}
.crumb-current{font-weight:600;}

.theme-swatch-row{display:flex;gap:14px;flex-wrap:wrap;}
.theme-swatch{display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:none;cursor:pointer;padding:4px;}
.theme-swatch .swatch-dot{width:36px;height:36px;border-radius:50%;border:2px solid var(--border);}
.theme-swatch.active .swatch-dot{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent);}
.theme-swatch .swatch-label{font-size:11.5px;color:var(--text-secondary);}

/* TABS */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap;}
.tab-btn{
  background:none;border:none;padding:10px 14px;font-size:13.5px;cursor:pointer;
  color:var(--text-secondary);border-bottom:2px solid transparent;font-weight:500;
}
.tab-btn.active{color:var(--text-primary);border-bottom-color:var(--accent);}
.tab-panel{display:none;}
.tab-panel.active{display:block;}

/* TABLE */
.table-wrap{overflow-x:auto;background:var(--surface-1);border:1px solid var(--border);border-radius:12px;}
.table-wrap.scrollable{max-height:540px;overflow-y:auto;}
.table-wrap.fill-viewport{max-height:calc(100vh - 300px);overflow-y:auto;}
#estadoIglesiasTable th, #estadoIglesiasTable td{text-align:center;}
table{border-collapse:collapse;width:100%;font-size:12.8px;min-width:900px;}
thead th{
  position:sticky;top:0;background:var(--surface-1);text-align:left;
  padding:10px 10px;font-weight:600;color:var(--text-secondary);
  border-bottom:1px solid var(--border);cursor:pointer;white-space:nowrap;font-size:11.8px;
  text-transform:uppercase;letter-spacing:0.02em;
}
thead th:hover{color:var(--text-primary);}
thead th.sorted::after{content:" ▾";}
thead th.sorted.asc::after{content:" ▴";}
tbody td{padding:9px 10px;border-bottom:1px solid var(--grid);white-space:nowrap;font-variant-numeric:tabular-nums;}
tbody tr:hover{background:var(--page);}
tbody tr.conciliada-row{background:var(--good-bg);}
tbody tr.conciliada-row:hover{background:var(--good-bg);}
tbody tr.mx-dirty{background:var(--warning-bg);}
tbody tr.mx-dirty:hover{background:var(--warning-bg);}
tbody tr:last-child td{border-bottom:none;}
td.num{text-align:right;}
td.name{font-variant-numeric:normal;font-weight:500;}
.small-table{min-width:600px;}

/* Ranking completo (Informes, Análisis Mensual, 7ME, Panel del pastor):
   títulos y valores de todas las columnas centrados. */
#rankingTable th, #rankingTable td,
#aiRankingTable th, #aiRankingTable td{text-align:center;}

/* Acumulado (Por Iglesia / Por Distrito): columnas numéricas (Diezmo a
   Balance) con título y valor centrados entre sí. */
#churchesTable th.num, #churchesTable td.num,
#districtsTable th.num, #districtsTable td.num{text-align:center;}
#districtsTable .num-critical, #churchesTable .num-critical{color:var(--critical);font-weight:600;}
#districtsTable .num-warning, #churchesTable .num-warning{color:var(--warning);font-weight:600;}
#districtsTable .num-good, #churchesTable .num-good{color:var(--good);font-weight:600;}

.roomy-table th, .roomy-table td{padding-left:20px;padding-right:20px;}
.roomy-table th:first-child, .roomy-table td:first-child{padding-left:10px;}
.estado-table th, .estado-table td{text-align:center;}
.estado-table th:first-child, .estado-table td:first-child{text-align:left;}
.estado-table th:first-child{color:var(--accent);}
.estado-table td.name{color:var(--accent);font-weight:700;}
.estado-table thead th:not(:first-child):nth-child(even),
.estado-table tbody tr:not(.estado-total-row) td:not(:first-child):nth-child(even){background:var(--page);}
.estado-table .estado-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap;text-transform:none;letter-spacing:normal;}
.estado-table .estado-chip .b-dot{width:6px;height:6px;border-radius:50%;flex:none;}
.estado-table tr.estado-total-row td{background:var(--surface-2);font-weight:700;border-top:2px solid var(--border);}
.estado-table .estado-pct{color:var(--s3-yellow);font-weight:700;margin-left:2px;}
.estado-table td.clickable{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;}
.estado-table td.clickable:hover{background:var(--surface-2);}
table.small-table th.sortable{cursor:pointer;user-select:none;}
table.small-table th.sortable:hover{color:var(--accent);}
.centered-nums th.num, .centered-nums td.num{text-align:center;}
#churchesTable td.name, #churchesTable th:first-child,
#monthTable td.name, #monthTable th:first-child{color:var(--accent);font-weight:700;}

/* Diferencias Mensuales: 17 columnas (Iglesia/Distrito/Responsable/Saldo
   Inicial/12 meses/Total) — celdas más compactas para que quepan sin
   scroll horizontal en ancho completo. Saldo Inicial/meses/Total comparten
   la misma clase "num", así que un mismo ancho fijo los deja parejos. */
#diferenciasTable{min-width:0;table-layout:fixed;width:100%;}
#diferenciasTable th, #diferenciasTable td{padding:6px 4px;font-size:12.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#diferenciasTable th{font-size:11px;}
#diferenciasTable td.num{padding-left:2px;padding-right:6px;}
#diferenciasTable th.num, #diferenciasTable td.num{text-align:center;}
.table-wrap.diferencias-wrap{max-height:calc(100vh - 260px);}
.diferencias-group-row{font-weight:600;background:var(--surface-1);}
.diferencias-group-row td{border-top:1px solid var(--border);}
.diferencias-total-row{font-weight:700;background:var(--surface-2);}
/* Anchos iniciales — se sobrescriben por columna (inline) desde
   diferencias-mensuales.js, que además permite arrastrar para cambiarlos. */
#diferenciasTable .col-resizer{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;z-index:3;}
#diferenciasTable .col-resizer:hover, #diferenciasTable .col-resizer.resizing{background:var(--accent);opacity:0.6;}

.badge{
  display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:20px;
  font-size:11px;font-weight:600;white-space:nowrap;
}
.badge .b-dot{width:6px;height:6px;border-radius:50%;}
.badge.eficiente{background:var(--good-bg);color:var(--good);}
.badge.eficiente .b-dot{background:var(--good);}
.badge.deficiente{background:var(--warning-bg);color:#ffd479;}
.badge.deficiente .b-dot{background:var(--warning);}
.badge.riesgo-a{background:var(--critical-bg);color:var(--critical);}
.badge.riesgo-a .b-dot{background:var(--critical);}
.badge.riesgo-b{background:var(--warning-bg);color:#8a6200;}
.badge.riesgo-b .b-dot{background:var(--warning);}
.badge.riesgo-c{background:var(--good-bg);color:var(--good);}
.badge.riesgo-c .b-dot{background:var(--good);}
.badge.excelencia{background:rgba(42,120,214,0.14);color:var(--accent);}
.badge.excelencia .b-dot{background:var(--accent);}
.badge.naranja{background:rgba(235,104,52,0.16);color:var(--s8-orange);}
.badge.naranja .b-dot{background:var(--s8-orange);}

.neg{color:var(--critical);}
.pos{color:var(--text-primary);}
.diferencia-cell{cursor:pointer;}
.diferencia-cell:hover{text-decoration:underline;background:var(--page);}

.section-note{font-size:12px;color:var(--text-muted);margin:0 0 12px;}

.resp-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px;}
@media(max-width:800px){.resp-cards{grid-template-columns:1fr;}}
.resp-card{background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:14px 16px;cursor:pointer;}
.resp-card.active{border-color:var(--accent);}

.gauge-select{cursor:pointer;border:1px solid transparent;border-radius:12px;padding:10px;transition:border-color .15s, background .15s;}
.gauge-select:hover{background:var(--page);}
.gauge-select.active{border-color:var(--accent);background:var(--page);}
.resp-card .rname{font-weight:600;font-size:14px;margin-bottom:6px;}
.resp-card .rmeta{font-size:12px;color:var(--text-secondary);}
.resp-card .rtotal{font-size:19px;font-weight:600;margin-top:8px;}
.resp-card .rtotal.num-critical{color:var(--critical);}
.resp-card .rtotal.num-warning{color:var(--warning);}
.resp-card .rtotal.num-good{color:var(--good);}

/* Tarjeta KPI con ícono circular (usada en Diferencias Mensuales > Por Distrito) */
.resp-card.kpi-card{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;cursor:default;}
.kpi-icon-badge{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;}
.kpi-icon-badge.blue{background:rgba(10,111,168,.18);color:var(--accent);}
.kpi-icon-badge.critical{background:var(--critical-bg);color:var(--critical);}
.kpi-icon-badge.warning{background:var(--warning-bg);color:var(--warning);}
.kpi-icon-badge.good{background:var(--good-bg);color:var(--good);}

/* Ranking horizontal con barras divergentes desde cero (Por Distrito) */
.dist-rank-list{display:flex;flex-direction:column;gap:7px;max-height:420px;overflow-y:auto;}
.dist-rank-row{display:grid;grid-template-columns:20px 108px 1fr 2px 1fr 92px;align-items:center;gap:6px;}
.dist-rank-num{font-size:11px;color:var(--text-muted);text-align:center;}
.dist-rank-label{font-size:12.5px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dist-rank-neg{display:flex;justify-content:flex-end;height:14px;}
.dist-rank-pos{display:flex;justify-content:flex-start;height:14px;}
.dist-rank-zero{width:2px;height:18px;background:var(--border);justify-self:center;}
.dist-rank-fill{height:10px;border-radius:3px;min-width:2px;transition:filter .1s;}
.dist-rank-fill:hover{filter:brightness(1.12);}
.dist-rank-fill.num-critical{background:var(--critical);}
.dist-rank-fill.num-warning{background:var(--warning);}
.dist-rank-fill.num-good{background:var(--good);}
.dist-rank-value{font-size:12px;font-variant-numeric:tabular-nums;text-align:right;font-weight:600;}
.dist-rank-value.num-critical{color:var(--critical);}
.dist-rank-value.num-warning{color:var(--warning);}
.dist-rank-value.num-good{color:var(--good);}

.footer-note{margin-top:30px;font-size:11.5px;color:var(--text-muted);text-align:center;}

/* Interruptor tipo switch (on/off) — por ejemplo, mostrar/ocultar una columna */
.switch{position:relative;display:inline-block;width:44px;height:24px;flex:none;cursor:pointer;vertical-align:middle;}
.switch input{position:absolute;opacity:0;width:0;height:0;}
.switch-slider{position:absolute;inset:0;background:var(--border);border-radius:24px;transition:background .15s ease;}
.switch-slider::before{content:'';position:absolute;left:3px;top:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .15s ease;box-shadow:0 1px 2px rgba(0,0,0,.3);}
.switch input:checked + .switch-slider{background:var(--good);}
.switch input:checked + .switch-slider::before{transform:translateX(20px);}
.switch input:focus-visible + .switch-slider{outline:2px solid var(--accent);outline-offset:2px;}

.pill-filter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;}
.pill{
  padding:6px 12px;border-radius:20px;font-size:12.5px;border:1px solid var(--border);
  background:var(--surface-1);cursor:pointer;color:var(--text-secondary);
  display:inline-flex;align-items:center;gap:5px;
}
.pill.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
.pill.disabled{opacity:0.4;cursor:not-allowed;}

.donut-legend-list{display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.donut-legend-list .dl-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-secondary);}
.donut-legend-list .dl-row .dot{width:9px;height:9px;border-radius:50%;flex:none;}
.donut-legend-list .dl-row .dl-label{flex:1;}
.donut-legend-list .dl-row .dl-value{font-weight:600;color:var(--text-primary);white-space:nowrap;}

.attention-list{display:flex;flex-direction:column;gap:8px;}
.attention-item{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:12px 14px;
}
.attention-item .ai-left{display:flex;flex-direction:column;gap:2px;}
.attention-item .ai-name{font-weight:600;font-size:13.5px;}
.attention-item .ai-dist{font-size:11.5px;color:var(--text-muted);}
.attention-item .ai-right{text-align:right;}
.attention-item .ai-val{font-weight:600;font-size:14.5px;}
.attention-item .ai-label{font-size:11px;color:var(--text-muted);}

/* ===================================================================
   Agenda de auditoría (vista mes / semana)
   =================================================================== */
.agenda-grid{
  display:grid;grid-template-columns:repeat(7,1fr);gap:6px;
}
.agenda-grid.week .agenda-cell{min-height:140px;}
.agenda-daylabel{
  text-align:center;font-size:11.5px;font-weight:600;color:var(--text-muted);
  padding:4px 0 8px;text-transform:uppercase;letter-spacing:.03em;
}
.agenda-cell{
  background:var(--surface-1);border:1px solid var(--border);border-radius:10px;
  min-height:92px;padding:8px;display:flex;flex-direction:column;gap:4px;
}
.agenda-cell.dim{opacity:0.4;}
.agenda-cell.today{border-color:var(--accent);}
.agenda-daynum{font-size:12.5px;font-weight:600;color:var(--text-secondary);}
.agenda-item{
  display:block;width:100%;text-align:left;font-size:11.5px;line-height:1.3;
  background:var(--accent);color:var(--accent-ink);border:none;border-radius:6px;padding:4px 6px;
  cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.agenda-item:hover{opacity:0.85;}

/* ===================================================================
   Añadido para login.html / editar.html
   =================================================================== */

/* login page */
.auth-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
}
.auth-card{
  background:var(--surface-1);border:1px solid var(--border);border-radius:14px;
  padding:32px 28px;width:100%;max-width:380px;
}
.auth-card h1{font-size:19px;margin:0 0 4px;}
.auth-card p.sub{color:var(--text-secondary);font-size:13px;margin:0 0 20px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:12.5px;color:var(--text-secondary);margin-bottom:5px;}
.field input, .field select{
  width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;
  padding:9px 11px;font-size:14px;color:var(--text-primary);
}
.field input:disabled{background:var(--grid);color:var(--text-muted);cursor:not-allowed;opacity:0.8;}
.search-results{
  position:absolute; z-index:20; left:0; right:0; top:100%; margin-top:4px;
  background:var(--surface-2); border:1px solid var(--border); border-radius:8px;
  max-height:260px; overflow-y:auto; box-shadow:0 6px 20px rgba(0,0,0,0.18);
}
.search-results .result-item{padding:8px 11px; cursor:pointer; font-size:13.5px;}
.search-results .result-item .rdist{color:var(--text-muted); font-size:12px;}
.search-results .result-item:hover, .search-results .result-item.active{background:var(--page);}
.search-results .no-results{padding:8px 11px;color:var(--text-muted);font-size:12.5px;}
.auth-error{
  background:var(--critical-bg);color:var(--critical);border-radius:8px;padding:9px 11px;
  font-size:12.5px;margin-bottom:14px;display:none;
}
.auth-error.show{display:block;}

.selected-church-card{
  background:linear-gradient(135deg, rgba(250,178,25,0.16), rgba(250,178,25,0.04));
  border:1px solid rgba(250,178,25,0.35);border-left:4px solid var(--warning);
  border-radius:8px;padding:10px 12px;margin-bottom:14px;
}
.selected-church-card.empty{
  background:var(--surface-2);border-color:var(--border);border-left-color:var(--border);
  color:var(--text-muted);font-size:12.5px;font-style:italic;
}
.selected-church-card .sc-label{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--warning);font-weight:700;margin-bottom:3px;
}
.selected-church-card .sc-name{font-size:22px;font-weight:800;color:var(--text-primary);line-height:1.25;}
.selected-church-card .sc-distrito{font-size:12.5px;color:var(--text-secondary);margin-top:2px;}
.selected-church-card .sc-tesorero{font-size:12px;color:var(--text-muted);margin-top:4px;}

/* editar.html layout */
.editor-grid{display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:start;}
@media(max-width:900px){.editor-grid{grid-template-columns:1fr;}}
.editor-sidebar{background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:16px;position:sticky;top:16px;}
.editor-sidebar h3{margin:0 0 10px;font-size:13.5px;}

.conc-iglesia-banner{
  background:var(--surface-1);border:1px solid var(--accent);border-left:4px solid var(--accent);
  border-radius:10px;padding:12px 16px;margin-bottom:18px;font-size:15px;font-weight:600;
}
.conc-iglesia-banner .dist{color:var(--text-muted);font-weight:400;font-size:12.5px;margin-top:2px;}

/* Buscador de iglesias con autocompletado (Conciliación) */
.conc-iglesia-dropdown{
  position:absolute;left:0;right:0;top:100%;margin-top:4px;z-index:20;
  background:var(--surface-2);border:1px solid var(--border);border-radius:10px;
  max-height:320px;overflow-y:auto;box-shadow:0 8px 24px rgba(0,0,0,0.18);
}
.conc-iglesia-item{padding:9px 14px;cursor:pointer;font-size:13.5px;border-bottom:1px solid var(--border);}
.conc-iglesia-item:last-child{border-bottom:none;}
.conc-iglesia-item:hover{background:var(--page);}
.conc-iglesia-item .dist{color:var(--text-muted);font-weight:400;font-size:12px;}
.conc-iglesia-item.has-data{background:rgba(250,178,25,0.16);}
.conc-iglesia-item.has-data:hover{background:rgba(250,178,25,0.26);}
.conc-iglesia-item.has-conciliado{color:var(--good);font-weight:600;}
.conc-iglesia-empty{padding:10px 14px;font-size:13px;color:var(--text-muted);}

/* Comparativo entre Entidad: dos fieldsets de carga lado a lado */
.cmp-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:800px){.cmp-upload-grid{grid-template-columns:1fr;}}
.cmp-row-diff td{background:rgba(208,59,59,0.08);}
.cmp-row-diff td:first-child{border-left:3px solid var(--critical);}

/* Comparativo entre Entidad: tarjetas con Débito/Crédito por separado y
   panel de selección manual (mismo patrón visual que Conciliación). */
.cmp-card-amounts{display:flex;gap:14px;font-size:10.5px;text-align:right;white-space:nowrap;color:var(--text-muted);}
.cmp-card-amounts div{display:flex;flex-direction:column;}
.cmp-card-amounts b{font-size:13px;font-weight:700;}
.cmp-amt-deb b{color:var(--critical);}
.cmp-amt-cred b{color:var(--good);}
.cmp-mid-row{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:4px;}
/* Foco por teclado (navegación con flechas / shift+flechas) sobre las tarjetas */
.conc-card:focus{outline:none;box-shadow:0 0 0 2px var(--accent);}

/* Conciliación de Cuenta: dos columnas del mismo ancho (Pendientes /
   Seleccionados) con el saldo y el botón "Conciliar" en el medio — al
   marcar una tarjeta pasa de una columna a la otra. */
.conc-transfer{display:grid;grid-template-columns:1fr 220px 1fr;gap:16px;align-items:start;}
@media(max-width:900px){.conc-transfer{grid-template-columns:1fr;}}
.conc-col h4{margin:0 0 10px;font-size:13.5px;}
.conc-col-mid{
  background:var(--surface-1);border:1px solid var(--border);border-radius:12px;
  padding:16px;position:sticky;top:16px;text-align:center;
}
.conc-mid-saldo{font-size:26px;font-weight:700;margin:6px 0 14px;}
.conc-conciliar-btn{width:100%;justify-content:center;background:var(--good);border-color:var(--good);color:#fff;}
.conc-conciliar-btn:disabled{background:var(--surface-2);border-color:var(--border);color:var(--text-muted);cursor:not-allowed;}

.conc-card-list{display:flex;flex-direction:column;gap:10px;max-height:560px;overflow-y:auto;padding-right:2px;}
.conc-card{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  background:var(--surface-1);border:1px solid var(--accent);border-radius:10px;
  padding:12px 14px;cursor:pointer;transition:transform .1s;
}
.conc-card:hover{background:var(--page);}
.conc-card:active{transform:scale(0.99);}
.conc-card .conc-card-desc{font-weight:600;color:var(--text-primary);}
.conc-card .conc-card-fecha{font-size:11px;color:var(--text-muted);margin-top:2px;}
.conc-card .conc-card-amt{font-size:17px;font-weight:700;white-space:nowrap;}
/* El monto siempre se colorea por signo (verde=positivo, rojo=negativo),
   tanto en Pendientes como en Seleccionados — el borde es lo que distingue
   en qué columna está la tarjeta. */
.conc-card .conc-card-amt.pos{color:var(--good);}
.conc-card .conc-card-amt.neg{color:var(--critical);}

.conc-card.conc-card-selected{border-color:var(--warning);}
.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
@media(max-width:900px){.form-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.form-grid{grid-template-columns:1fr;}}
.form-grid.cols-5{grid-template-columns:repeat(5,1fr);}
@media(max-width:900px){.form-grid.cols-5{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){.form-grid.cols-5{grid-template-columns:repeat(2,1fr);}}
.preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;}
@media(max-width:700px){.preview-grid{grid-template-columns:1fr 1fr;}}
.preview-tile{background:var(--page);border:1px solid var(--border);border-radius:10px;padding:10px 12px;}
.preview-tile .label{font-size:11px;color:var(--text-muted);}
.preview-tile .value{font-size:15px;font-weight:600;margin-top:2px;}
.preview-tile.status-critical{border-color:var(--critical);}
.preview-tile.status-critical .value{color:var(--critical);}
.preview-tile.status-good{border-color:var(--good);}
.preview-tile.status-good .value{color:var(--good);}
.preview-tile.status-warning{border-color:var(--warning);}
.preview-tile.status-warning .value{color:var(--warning);}

.field label.checkbox-label{
  display:flex;align-items:center;gap:8px;cursor:pointer;margin-bottom:0;
}
.field label.checkbox-label input[type="checkbox"],
.field label.checkbox-label input[type="radio"]{
  width:17px;height:17px;flex:none;accent-color:var(--accent);cursor:pointer;
}
.radio-group{
  display:flex;flex-direction:column;gap:0;border:1px solid var(--border);
  border-radius:8px;overflow:hidden;background:var(--surface-2);
}
.radio-group .checkbox-label{padding:10px 12px;transition:background .12s;}
.radio-group .checkbox-label:not(:last-child){border-bottom:1px solid var(--border);}
.radio-group .checkbox-label:hover{background:var(--page);}
.radio-subpanel{
  display:none;flex-direction:column;gap:8px;margin-top:8px;padding:10px 12px 10px 14px;
  border:1px solid var(--border);border-left:3px solid var(--accent);
  border-radius:0 8px 8px 0;background:var(--surface-1);
}
fieldset.complete{border-color:var(--good);background:var(--good-bg);}
.toast{
  position:fixed;bottom:20px;right:20px;background:var(--surface-2);border:1px solid var(--border);
  border-radius:10px;padding:12px 16px;font-size:13.5px;box-shadow:0 6px 20px rgba(0,0,0,0.15);
  opacity:0;transform:translateY(8px);transition:opacity .2s, transform .2s;pointer-events:none;z-index:50;
}
.toast.show{opacity:1;transform:translateY(0);}
.toast.error{color:var(--critical);}
.toast.ok{color:var(--good);}

.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,0.55);
  display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;
}
.modal-box{
  background:var(--surface-1);border:1px solid var(--border);border-radius:14px;
  padding:32px 28px;max-width:380px;width:100%;text-align:center;
}
.modal-box .modal-icon{font-size:40px;margin-bottom:10px;}
.modal-box h3{margin:0 0 10px;font-size:18px;}
.modal-box p{margin:0 0 20px;color:var(--text-secondary);font-size:14px;}
fieldset{border:1px solid var(--border);border-radius:10px;padding:14px;margin:0 0 16px;}
fieldset legend{padding:0 6px;font-size:12.5px;color:var(--text-secondary);font-weight:600;}

/* ---------- Modal "Crear Informe" ---------- */
.informe-modal-box{max-width:640px;width:100%;text-align:left;padding:0;border-radius:14px;overflow:hidden;max-height:88vh;display:flex;flex-direction:column;}
.informe-modal-header{
  background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;gap:10px;
  padding:16px 20px;flex:none;
}
.informe-modal-header-icon{font-size:20px;}
.informe-modal-header h3{margin:0;font-size:17px;color:#fff;flex:1;}
.informe-modal-close{
  background:none;border:none;color:#fff;font-size:18px;cursor:pointer;opacity:0.85;
  padding:4px 6px;line-height:1;
}
.informe-modal-close:hover{opacity:1;}
.informe-modal-body{padding:20px 22px 24px;overflow-y:auto;}
.informe-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px;}
.informe-section{border:1px solid var(--border);border-radius:12px;padding:16px 18px;background:var(--surface-1);}
.informe-section + .informe-section{margin-top:16px;}
.informe-section-title{font-weight:700;font-size:14px;margin-bottom:14px;display:flex;align-items:center;gap:8px;}
.informe-subgroup{margin-bottom:16px;}
.informe-subgroup:last-child{margin-bottom:0;}
.informe-label{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;}
.informe-switch-row{display:flex;flex-wrap:wrap;gap:14px 22px;}
.informe-switch-item{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer;}
.informe-radio-row{display:flex;flex-wrap:wrap;gap:18px;}
.informe-radio-item{display:flex;align-items:center;gap:6px;font-size:13.5px;cursor:pointer;}
.informe-col-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px 16px;}
.informe-col-item{display:flex;align-items:center;gap:7px;font-size:13.5px;cursor:pointer;}

/* ===================================================================
   Evaluación Tesorería de Iglesias (submódulo de Auditoría)
   =================================================================== */
.eval-header-grid{
  display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:12px 16px;
  border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:18px;
  background:var(--surface-1);
}
.eval-nivel-box{display:flex;flex-direction:column;justify-content:flex-end;}
.eval-nivel-value{
  font-weight:700;font-size:15px;padding:8px 10px;border-radius:8px;text-align:center;
  background:var(--surface-2);border:1px solid var(--border);color:var(--text-primary);
}
.eval-area{margin-bottom:22px;}
.eval-area-title{
  background:var(--surface-2);border:1px solid var(--border);border-left:4px solid var(--accent);
  border-bottom:none;border-radius:8px 8px 0 0;padding:10px 14px;font-weight:700;font-size:13px;letter-spacing:.02em;
}
.eval-area table{margin:0;table-layout:fixed;width:100%;}
.eval-area .table-wrap{border-radius:0 0 8px 8px;}
.eval-area table td.num, .eval-area table th.num{text-align:center;}
.eval-item-input{width:100%;min-width:0 !important;max-width:100%;text-align:center;padding:8px 6px;box-sizing:border-box;}
.eval-subtotal-row td{font-weight:700;background:var(--surface-2);}
/* Mismas proporciones de columna que las tablas de arriba (N°=40px,
   Requerimiento=1fr, Puntaje=90px, Alcanzado=100px), para que los dos
   números del Total queden centrados justo bajo esas dos columnas. */
.eval-total-row{
  display:grid;grid-template-columns:40px 1fr 90px 100px;align-items:center;gap:0;
  border:1px solid var(--border);border-radius:10px;
  padding:14px 0;background:var(--surface-1);font-weight:700;
}
.eval-total-row > *:nth-child(1){grid-column:1 / 3;padding-left:10px;}
.eval-total-row > *:nth-child(2){grid-column:3;}
.eval-total-row > *:nth-child(3){grid-column:4;}
.eval-total-label{font-size:15px;}
.eval-total-value{
  text-align:center;font-size:16px;padding:6px 8px;border-radius:8px;
  background:var(--surface-2);border:1px solid var(--border);
}
.eval-signatures{display:flex;gap:60px;margin-top:60px;padding:0 20px;}
.eval-signature-box{flex:1;text-align:center;}
.eval-signature-line{border-top:1px solid var(--text-secondary);margin-bottom:8px;}
.eval-signature-label{font-size:12.5px;font-weight:600;}
.eval-signature-name{font-size:12px;color:var(--text-secondary);margin-top:2px;min-height:15px;}

/* ===================================================================
   Directorio de Tesoreros: próximos cumpleaños + calendario 12 meses
   =================================================================== */
.proximo-item{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:10px 14px;
}
.proximo-item.clickable{cursor:pointer;transition:border-color .15s, transform .1s;}
.proximo-item.clickable:hover{border-color:var(--accent);transform:translateY(-1px);}
.proximo-name{font-weight:600;font-size:13.5px;}
.proximo-iglesia{font-size:12px;color:var(--text-muted);}
.proximo-right{text-align:right;}
.proximo-when{font-weight:600;font-size:13px;color:var(--accent);}
.proximo-date{font-size:11.5px;color:var(--text-muted);}

.cumple-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;}
.cumple-month{background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:12px 14px;}
.cumple-month-title{font-weight:700;font-size:13px;margin-bottom:8px;color:var(--accent);}
.cumple-item{display:flex;align-items:baseline;gap:8px;padding:4px 0;border-bottom:1px solid var(--grid);font-size:12.5px;}
.cumple-item:last-child{border-bottom:none;}

/* ===================================================================
   Agenda — calendario (año / mes / semana)
   =================================================================== */
.cal-weekday-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;}
.cal-weekday-row div{text-align:center;font-size:11.5px;color:var(--text-muted);font-weight:600;text-transform:uppercase;}

.cal-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.cal-day-cell{
  min-height:92px;background:var(--surface-1);border:1px solid var(--border);border-radius:8px;
  padding:6px;display:flex;flex-direction:column;gap:3px;cursor:pointer;
}
.cal-day-cell:hover{background:var(--surface-2);}
.cal-day-cell.outside{opacity:0.35;}
.cal-day-cell.today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);}
.cal-day-num{font-size:12px;font-weight:600;color:var(--text-secondary);}
.cal-day-cell.today .cal-day-num{color:var(--accent);}
.cal-event-chip{
  font-size:10.5px;padding:2px 5px;border-radius:5px;color:#fff;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;cursor:pointer;
}
.cal-event-more{font-size:10px;color:var(--text-muted);padding:1px 5px;}

.cal-week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;}
.cal-week-day{
  min-height:340px;background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:10px;
  display:flex;flex-direction:column;gap:6px;cursor:pointer;
}
.cal-week-day:hover{background:var(--surface-2);}
.cal-week-day.today{border-color:var(--accent);}
.cal-week-day-header{font-size:12px;font-weight:700;color:var(--text-secondary);text-align:center;padding-bottom:6px;border-bottom:1px solid var(--border);}
.cal-week-day.today .cal-week-day-header{color:var(--accent);}

.cal-year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;}
.cal-year-month{background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:12px;cursor:pointer;}
.cal-year-month:hover{background:var(--surface-2);}
.cal-year-month-title{font-weight:700;font-size:13px;margin-bottom:8px;color:var(--accent);text-align:center;}
.cal-year-weekday-row{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:3px;}
.cal-year-weekday-row span{font-size:8.5px;color:var(--text-muted);text-align:center;}
.cal-year-day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.cal-year-day{
  aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  font-size:8.5px;color:var(--text-muted);border-radius:3px;
}
.cal-year-day.outside{opacity:0.3;}
.cal-year-day.today{background:var(--accent);color:var(--accent-ink);font-weight:700;}
.cal-year-dot{width:3px;height:3px;border-radius:50%;display:block;}
.cumple-day{font-weight:700;min-width:20px;}
.cumple-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cumple-iglesia{color:var(--text-muted);font-size:11.5px;white-space:nowrap;}

/* ===================================================================
   Impresión / exportar a PDF (botón "Exportar a PDF" -> window.print())
   =================================================================== */
@media print{
  html, body{background:#fff !important;}
  body::before{display:none !important;}
  .sidebar, .header-controls, .footer-note, .toast{display:none !important;}
  .mobile-menu-btn, .sidebar-backdrop{display:none !important;}
  .app-layout{display:block;}
  .app-main{flex:none;width:100%;}
  .app{max-width:none;margin:0;padding:0 8px;background:#fff !important;}
  .card{background:#fff !important;box-shadow:none;}
  .card, .kpi-grid, .stat-tile, .table-wrap{break-inside:avoid;}
  * { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  @page{ size: letter; margin: 10mm 12mm; }

  /* Evaluación Tesorería: informe compacto, cabe en una sola hoja carta.
     Se fuerza texto oscuro en todo el bloque; los badges de nivel/riesgo
     recuperan su color propio abajo (selectores más específicos) a
     propósito. */
  #guardarBtn, #guardarBorradorBtn, #guardarNote, #borradorNote, #editingNote,
  .eval-print-area ~ section{ display:none !important; }
  .eval-print-area, .eval-print-area *{
    color:#161616 !important; background-color:transparent !important;
  }
  .eval-print-area{ font-size:11px; }
  .eval-print-area .badge.riesgo-a{ color:#b3261e !important; background:#fbe7e6 !important; }
  .eval-print-area .badge.riesgo-b{ color:#8a6200 !important; background:#fbf1d9 !important; }
  .eval-print-area .badge.riesgo-c{ color:#1c7a34 !important; background:#e3f5e7 !important; }
  .eval-print-area .badge.excelencia{ color:#1a56c4 !important; background:#e5edfb !important; }

  .eval-header-grid{
    display:grid; grid-template-columns:1.3fr 1fr 1.1fr; align-items:start;
    background:#fbfbfb !important; border-color:#999 !important;
    padding:8px 10px; gap:6px 12px; margin-bottom:8px; border-radius:6px;
  }
  .eval-header-grid label{ font-size:9px; color:#555 !important; text-transform:uppercase; letter-spacing:.03em; }
  .eval-header-grid select, .eval-header-grid input, .eval-item-input{
    border:none !important; background:transparent !important; padding:1px 0 !important;
    font-weight:600; font-size:11px; -webkit-appearance:none; appearance:none;
  }
  .eval-nivel-box{ min-width:0; }
  .eval-nivel-value{
    border:1px solid #999 !important; padding:4px 6px; font-size:10.5px;
    white-space:normal !important; word-break:break-word; line-height:1.25;
    box-sizing:border-box; width:100%;
  }

  .eval-print-area .table-wrap{ overflow:visible !important; border-radius:4px; border-color:#999 !important; }
  .eval-print-area .small-table{ min-width:0 !important; }
  .eval-print-area table{ min-width:0 !important; width:100% !important; table-layout:fixed; font-size:10px; }
  .eval-print-area thead th{ position:static; padding:3px 6px; font-size:8.5px; border-color:#999 !important; }
  .eval-print-area tbody td{ padding:3px 6px; white-space:normal; word-break:break-word; border-color:#ccc !important; }

  .eval-area{ margin-bottom:8px; break-inside:avoid; }
  .eval-area-title{
    padding:4px 10px; font-size:10px; border-radius:4px 4px 0 0;
    background:#eef4fc !important; border-color:#999 !important; border-left:4px solid #2a78d6 !important;
  }
  .eval-subtotal-row td{ padding:3px 6px; background:#f2f2f2 !important; }
  .eval-total-row{
    padding:8px 0; margin-top:4px; border-radius:6px;
    background:#fbfbfb !important; border-color:#999 !important;
  }
  .eval-total-label{ font-size:12px; }
  .eval-total-value{ font-size:12px; padding:4px 4px; border-color:#999 !important; }

  #pageSubtitle{ display:none !important; }
  header.top{ display:block !important; text-align:center; margin-bottom:8px; }
  header.top .title-block{ width:100%; }
  header.top h1{ text-align:center; font-size:17px; margin:0; }

  .eval-signatures{ margin-top:110px; padding:0 20px; }
  .eval-signature-line{ border-top-color:#333 !important; margin-bottom:4px; }
  .eval-signature-label{ font-size:10.5px; }
  .eval-signature-name{ font-size:10px; }

  /* Traspasos de Tesorería: exporta el acta a un documento formal aparte
     (#actaPrintArea), en vez de imprimir la pantalla tal cual — así el PDF
     queda con aspecto de acta impresa, con líneas en blanco para firmar. */
  body.printing-acta > *:not(.acta-print){ display:none !important; }
  body.printing-acta .acta-print{ display:block !important; }
}

.acta-print{ display:none; }
@media print{
  .acta-print{
    color:#161616 !important; background:#fff !important;
    max-width:190mm; margin:0 auto; font-size:11px;
    overflow-wrap:anywhere; word-break:break-word;
  }
  .acta-print-header{
    display:flex; align-items:center; gap:14px;
    border-bottom:2px solid #2a78d6; padding-bottom:10px; margin-bottom:14px;
  }
  .acta-print-logo{ width:44px; height:44px; object-fit:contain; }
  .acta-print-header h1{ font-size:16px; margin:0; letter-spacing:.02em; }
  .acta-print-header p{ font-size:11px; margin:2px 0 0; color:#555; }
  .acta-print h2{
    font-size:11.5px; background:#eef4fc; border-left:4px solid #2a78d6;
    padding:4px 8px; margin:14px 0 6px; border-radius:0 4px 4px 0;
  }
  .acta-print p{ margin:0 0 8px; line-height:1.4; }
  .acta-print table{ width:100% !important; min-width:0 !important; border-collapse:collapse; font-size:10.5px; margin-bottom:8px; border:1px solid #999; }
  .acta-print table td, .acta-print table th{
    border:1px solid #ccc; padding:5px 7px; text-align:left; vertical-align:top;
  }
  .acta-print table th{ background:#f5f5f5; }
  .acta-print table td.num, .acta-print table th.num{ text-align:right; }
  .acta-print table thead{ display:table-header-group; }
  .acta-print table tr{ break-inside:avoid; page-break-inside:avoid; }
  .acta-print-signatures{
    display:grid; grid-template-columns:repeat(2,1fr); gap:36px 30px; margin-top:70px;
    break-inside:avoid;
  }
  .acta-sig-line{ border-top:1px solid #333; margin-bottom:5px; }
  .acta-sig-label{ font-size:10px; font-weight:600; text-align:center; }
  .acta-sig-name{ font-size:10px; text-align:center; color:#555; margin-top:2px; }
  @page{ size:letter; margin:14mm; }
}
