:root{--nav:#111827;--blue:#2563eb;--bg:#f3f6fb;--text:#172033;--muted:#64748b;--line:#dbe2ea;--green:#15803d;--red:#b91c1c;--orange:#c2410c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif}.top{background:var(--nav);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 5%;min-height:66px;box-shadow:0 3px 14px #0002}.brand{font-size:22px}.brand b{color:#60a5fa}.top nav{display:flex;gap:6px;flex-wrap:wrap}.top a{color:#dbeafe;text-decoration:none;padding:10px 12px;border-radius:8px}.top a:hover{background:#263449;color:#fff}.container{max-width:1180px;margin:28px auto;padding:0 18px;min-height:75vh}.page-title{display:flex;justify-content:space-between;align-items:center}.page-title h1{font-size:27px}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:0 5px 20px #0f172a0b;margin-bottom:20px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:18px}.stat strong{font-size:32px;display:block;margin-top:8px}.muted{color:var(--muted)}label{display:block;font-weight:600;margin:14px 0 6px}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;font:inherit}input:focus,select:focus,textarea:focus{outline:3px solid #bfdbfe;border-color:var(--blue)}button,.btn{display:inline-block;border:0;border-radius:9px;padding:11px 16px;background:var(--blue);color:#fff;text-decoration:none;font-weight:700;cursor:pointer}.btn.secondary{background:#475569}.btn.success{background:var(--green)}.btn.danger{background:var(--red)}.actions{display:flex;gap:8px;flex-wrap:wrap}.alert{padding:13px 16px;border-radius:9px;background:#dbeafe;margin-bottom:16px}.alert.error{background:#fee2e2;color:#991b1b}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#f8fafc;color:#475569;font-size:13px;text-transform:uppercase}.badge{display:inline-block;padding:5px 9px;border-radius:999px;background:#e2e8f0;font-size:12px;font-weight:700}.badge.aceptado{background:#dcfce7;color:var(--green)}.badge.rechazado{background:#fee2e2;color:var(--red)}.badge.pendiente,.badge.indeterminado{background:#ffedd5;color:var(--orange)}.drop{border:2px dashed #93c5fd;background:#eff6ff;padding:30px;text-align:center;border-radius:12px}.progress-item{padding:10px;border-bottom:1px solid var(--line)}footer{text-align:center;color:var(--muted);padding:25px}@media(max-width:760px){.top{align-items:flex-start;flex-direction:column;padding:14px}.top nav{margin-top:8px}.top a{padding:8px}.container{margin-top:16px}th,td{padding:9px}}
.tipo-doc{display:inline-block;white-space:nowrap;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800;border:1px solid transparent}.tipo-doc.tipo-01{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}.tipo-doc.tipo-03{background:#cffafe;color:#0e7490;border-color:#67e8f9}.tipo-doc.tipo-07{background:#dcfce7;color:#15803d;border-color:#86efac}.tipo-doc.tipo-08{background:#ffedd5;color:#c2410c;border-color:#fdba74}.tipo-doc.tipo-09{background:#f3e8ff;color:#7e22ce;border-color:#d8b4fe}.tipo-doc.tipo-31{background:#e0e7ff;color:#4338ca;border-color:#a5b4fc}.tipo-doc.tipo-ra{background:#ffe4e6;color:#be123c;border-color:#fda4af}.tipo-doc.tipo-rc{background:#fef3c7;color:#b45309;border-color:#fcd34d}.tipo-doc.tipo-otro{background:#e2e8f0;color:#475569;border-color:#cbd5e1}
/* v14.0.15 - colores independientes para archivos del comprobante */
a.btn.secondary[href^="ver_xml.php"]{background:#15803d}
a.btn.secondary[href^="ver_xml_firmado.php"]{background:#2563eb}
a.btn.secondary[href^="ver_cdr.php"]{background:#ea580c}
a.btn.secondary[href^="ver_xml.php"]:hover{background:#166534}
a.btn.secondary[href^="ver_xml_firmado.php"]:hover{background:#1d4ed8}
a.btn.secondary[href^="ver_cdr.php"]:hover{background:#c2410c}

/* v14.0.16 - botones compactos con iconos */
a.btn.secondary[href^="ver_xml.php"],a.btn.secondary[href^="ver_xml_firmado.php"],a.btn.secondary[href^="ver_cdr.php"]{font-size:12px;padding:8px 10px;display:inline-flex;align-items:center;gap:5px;line-height:1.15;white-space:nowrap}
a.btn.secondary[href^="ver_xml.php"]::before{content:"</>";font-size:11px;font-weight:900;line-height:1}
a.btn.secondary[href^="ver_xml_firmado.php"]::before{content:"✓";display:inline-grid;place-items:center;width:15px;height:15px;border:1.5px solid currentColor;border-radius:50%;font-size:10px;font-weight:900;line-height:1}
a.btn.secondary[href^="ver_cdr.php"]::before{content:"↓";font-size:15px;font-weight:900;line-height:.8}


/* v14.0.17 - botón Historial en Acciones */
.historial-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.historial-item{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:12px}.historial-item b{display:block;margin-bottom:4px}.historial-pre{white-space:pre-wrap;word-break:break-word;background:#0f172a;color:#e2e8f0;border-radius:10px;padding:14px;max-height:420px;overflow:auto;font:12px/1.5 Consolas,monospace}

/* v14.0.18 - Historial en ventana emergente compacta */
button.btn-historial{background:#6d28d9;font-size:12px;padding:8px 10px;display:inline-flex;align-items:center;gap:5px;line-height:1.15;white-space:nowrap}
button.btn-historial:hover{background:#5b21b6}
button.btn-historial::before{content:"↺";font-size:14px;font-weight:900;line-height:1}
.modal-historial{display:none;position:fixed;inset:0;z-index:9999;align-items:center;justify-content:center;padding:18px}
.modal-historial.abierto{display:flex}
.modal-historial-backdrop{position:absolute;inset:0;background:#0f172a99}
.modal-historial-box{position:relative;width:min(520px,96vw);max-height:88vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 24px 70px #0005;border:1px solid var(--line)}
.modal-historial-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}
.modal-historial-head h2{font-size:18px;margin:0}
.modal-historial-x{background:transparent;color:#475569;font-size:25px;line-height:1;padding:2px 7px;border-radius:7px}
.modal-historial-x:hover{background:#f1f5f9}
.modal-historial-body{padding:8px 18px 14px}
.modal-historial-row{display:grid;grid-template-columns:145px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid #eef2f7;align-items:start}
.modal-historial-row b{font-size:13px;color:#475569}.modal-historial-row span{font-size:13px;word-break:break-word}
.modal-historial-mensaje-wrap{margin-top:14px}.modal-historial-mensaje-wrap>b{display:block;margin-bottom:7px;font-size:13px;color:#475569}
.modal-historial-mensaje{background:#f8fafc;border:1px solid var(--line);border-radius:9px;padding:11px;font-size:13px;line-height:1.45;white-space:pre-wrap}
.modal-historial-foot{display:flex;justify-content:flex-end;padding:12px 18px 16px;border-top:1px solid var(--line)}
@media(max-width:560px){.modal-historial-row{grid-template-columns:1fr;gap:3px}.modal-historial-box{width:100%}}

/* v14.0.19 - columna Hash */
.hash-documento{font-family:Consolas,monospace;font-size:12px;word-break:break-all}


/* v14.0.20 - tabla de documentos más compacta */
.table-wrap table{font-size:14px}
.table-wrap th,.table-wrap td{padding:10px 9px}
.table-wrap th:nth-child(1),.table-wrap td:nth-child(1){width:42px;min-width:42px}
.table-wrap th:nth-child(2),.table-wrap td:nth-child(2){width:62px;min-width:62px;max-width:62px;text-align:center}
.table-wrap th:nth-child(3),.table-wrap td:nth-child(3){width:145px;min-width:145px}
.table-wrap th:nth-child(5),.table-wrap td:nth-child(5){width:100px;min-width:100px}
.table-wrap th:nth-child(7),.table-wrap td:nth-child(7){width:92px;min-width:92px;font-size:13px}
.table-wrap th:nth-child(8),.table-wrap td:nth-child(8){width:132px;min-width:132px}
.table-wrap th:nth-child(9),.table-wrap td:nth-child(9){width:118px;min-width:118px}
.table-wrap .actions{gap:6px}
.table-wrap .btn{padding:7px 9px}
.hash-documento{font-size:12px;overflow-wrap:anywhere}
@media(min-width:1000px){.container{max-width:1240px}}

/* v14.0.23 - Dashboard moderno. Solo presentación del Panel principal. */
.page-title:has(+ .dash-hero){display:none}
.dash-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;margin:4px 0 20px}
.dash-hero h2{font-size:25px;line-height:1.2;margin:0 0 6px;color:#14213d}.dash-hero p{margin:0;color:#64748b;font-size:14px}
.dash-periodo{display:flex;gap:10px;align-items:center}.dash-fechas{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid #dbe4ee;border-radius:10px;padding:7px 10px;box-shadow:0 3px 12px #0f172a0a}.dash-fechas input{border:0;padding:3px 2px;width:128px;font-size:12px;background:transparent}.dash-fechas input:focus{outline:none}.dash-calendar{color:#64748b}.dash-separador{color:#94a3b8}.dash-refresh{background:#fff;color:#334155;border:1px solid #dbe4ee;border-radius:10px;padding:10px 13px;box-shadow:0 3px 12px #0f172a0a;font-size:12px}.dash-refresh:hover{background:#f8fafc}
.dash-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;align-items:stretch;margin-bottom:18px}.dash-kpi{min-height:112px;background:#fff;border:1px solid #e0e7ef;border-radius:13px;box-shadow:0 5px 20px #0f172a0a;padding:15px;display:flex;gap:12px;align-items:flex-start}.dash-kpi:nth-child(6){grid-column:1}.dash-kpi-icon{flex:0 0 45px;width:45px;height:45px;border-radius:14px;display:grid;place-items:center;font-size:24px;font-weight:800}.dash-kpi span{display:block;color:#52627a;font-size:12px;margin:1px 0 5px}.dash-kpi strong{display:block;font-size:29px;line-height:1;color:#0f172a;margin-bottom:7px}.dash-kpi small{display:block;color:#64748b;font-size:11px}.dash-kpi-content{min-width:0;flex:1}.dash-mini-track{height:4px;background:#e9eef5;border-radius:99px;overflow:hidden;margin-top:9px}.dash-mini-track i{display:block;height:100%;border-radius:inherit;background:currentColor}.dash-kpi-blue{color:#2563eb}.dash-kpi-blue .dash-kpi-icon{background:#eaf2ff;color:#2563eb}.dash-kpi-green{color:#16a34a}.dash-kpi-green .dash-kpi-icon{background:#e7f8ee;color:#16a34a}.dash-kpi-purple{color:#7c3aed}.dash-kpi-purple .dash-kpi-icon{background:#f1eafe;color:#7c3aed}.dash-kpi-orange{color:#ea580c}.dash-kpi-orange .dash-kpi-icon{background:#fff1e8;color:#ea580c}.dash-kpi-red{color:#ef4444}.dash-kpi-red .dash-kpi-icon{background:#feecec;color:#ef4444}
.dash-panels{display:grid;grid-template-columns:1.05fr 1.35fr .95fr;gap:16px;margin-bottom:18px}.dash-panel{background:#fff;border:1px solid #e0e7ef;border-radius:13px;box-shadow:0 5px 20px #0f172a0a;padding:16px;min-height:265px}.dash-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:17px}.dash-panel-head h3{font-size:15px;margin:0;color:#172033}.dash-panel-head h3 small{font-size:11px;font-weight:500;color:#64748b}.dash-chip{border:1px solid #dbe4ee;border-radius:8px;padding:7px 9px;font-size:11px;color:#475569;background:#fff}.dash-donut-wrap{display:flex;align-items:center;justify-content:space-around;gap:18px;height:190px}.dash-donut{--a:0;--r:0;--p:0;width:148px;height:148px;border-radius:50%;position:relative;background:conic-gradient(#22c55e 0 calc(var(--a)*1%),#ef4444 calc(var(--a)*1%) calc((var(--a) + var(--r))*1%),#2563eb calc((var(--a) + var(--r))*1%) calc((var(--a) + var(--r) + var(--p))*1%),#f59e0b calc((var(--a) + var(--r) + var(--p))*1%) 100%)}.dash-donut:before{content:"";position:absolute;inset:27px;background:#fff;border-radius:50%}.dash-donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center;z-index:1;color:#0f172a}.dash-donut-center strong{font-size:25px}.dash-donut-center span{font-size:12px}.dash-legend{min-width:185px;display:grid;gap:14px}.dash-legend>div{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:7px;font-size:11px}.dash-legend b{font-weight:500;color:#52627a}.dash-legend em{font-style:normal;color:#334155}.dot{width:9px;height:9px;border-radius:50%}.dot.green{background:#22c55e}.dot.red{background:#ef4444}.dot.blue{background:#2563eb}.dot.orange{background:#f59e0b}
.dash-chart{position:relative;height:200px;padding:10px 6px 0}.dash-chart svg{display:block;width:100%;height:145px;overflow:visible}.chart-axis{stroke:#dbe4ee;stroke-width:.5}.chart-line{fill:none;stroke:#2563eb;stroke-width:1.25;vector-effect:non-scaling-stroke}.chart-dot{fill:#2563eb;stroke:#fff;stroke-width:.7;vector-effect:non-scaling-stroke}.dash-chart-values{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center;margin-top:-2px}.dash-chart-values span{display:flex;flex-direction:column;gap:4px}.dash-chart-values b{font-size:10px;color:#0f172a}.dash-chart-values small{font-size:10px;color:#64748b}
.dash-status-row{margin:0 0 20px}.dash-status-row>div:first-child{display:flex;justify-content:space-between;gap:10px;color:#475569;font-size:11px;margin-bottom:7px}.dash-status-row b{font-weight:500}.dash-status-track{height:5px;background:#e9eef5;border-radius:99px;overflow:hidden}.dash-status-track i{display:block;height:100%;border-radius:inherit}.dash-status-track i.green{background:#22c55e}.dash-status-track i.red{background:#ef4444}.dash-status-track i.blue{background:#2563eb}.dash-status-track i.orange{background:#f59e0b}
.dash-quick{padding:19px 22px;margin-top:0}.dash-quick h2{font-size:17px;margin:0 0 15px}.dash-quick .btn{min-width:135px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px}.dash-quick .btn span{font-size:19px}.dash-action-upload{background:#2563eb}.dash-action-history{background:#334155!important}
@media(max-width:1100px){.dash-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.dash-kpi:nth-child(6){grid-column:auto}.dash-panels{grid-template-columns:1fr 1fr}.dash-estados{grid-column:1/-1}}
@media(max-width:760px){.dash-hero{flex-direction:column}.dash-periodo{width:100%;align-items:stretch;flex-direction:column}.dash-fechas{justify-content:center}.dash-fechas input{width:125px}.dash-refresh{width:100%}.dash-kpis{grid-template-columns:1fr 1fr}.dash-panels{grid-template-columns:1fr}.dash-estados{grid-column:auto}.dash-donut-wrap{height:auto;flex-direction:column;padding:5px 0}.dash-panel{min-height:0}.dash-legend{width:100%}.dash-kpi{min-height:105px}}
@media(max-width:480px){.dash-kpis{grid-template-columns:1fr}.dash-fechas{flex-wrap:wrap}.dash-fechas input{width:112px}.dash-hero h2{font-size:21px}}

/* v14.0.25 - nombre visible bajo el saludo del dashboard */
.dash-user-name{margin:-2px 0 6px 18px;font-size:16px;line-height:1.15;font-weight:800;font-style:italic;color:#0f172a;text-transform:lowercase}
@media(max-width:480px){.dash-user-name{margin-left:8px;font-size:14px}}


/* v14.0.26 - cabecera del dashboard más elegante */
.dash-hero>div:first-child{padding-top:2px}
.dash-hero h2{letter-spacing:-.35px;margin-bottom:7px}
.dash-profile{display:flex;align-items:center;gap:9px;min-height:22px;color:#64748b}
.dash-profile .dash-user-name{margin:0;font-size:14px;line-height:1.2;font-weight:700;font-style:normal;color:#334155;text-transform:none;letter-spacing:.05px}
.dash-user-dot{width:4px;height:4px;border-radius:50%;background:#94a3b8;flex:0 0 4px}
.dash-user-role{font-size:12px;line-height:1.2;color:#64748b}
@media(max-width:560px){.dash-profile{flex-wrap:wrap;gap:6px}.dash-user-dot{display:none}.dash-user-role{flex-basis:100%;margin-left:0}}

/* v14.0.28 - KPIs en una sola linea */
@media (min-width: 1101px){
  .dash-kpis{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
  .dash-kpi:nth-child(6){grid-column:auto}
  .dash-kpi{min-width:0;padding:14px 12px;gap:10px}
  .dash-kpi-icon{flex-basis:42px;width:42px;height:42px}
}

/* v14.0.30 - paginación común para listados extensos */
.pagination{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 20px;box-shadow:0 3px 14px #0f172a0a}.pagination-summary{color:var(--muted);font-size:13px}.pagination-links{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.pagination-links>a:not(.btn),.pagination-links>span{min-width:34px;height:34px;display:inline-grid;place-items:center;border-radius:8px;text-decoration:none;color:#334155;font-weight:700;font-size:13px}.pagination-links>a:not(.btn){border:1px solid #dbe2ea;background:#fff}.pagination-links>a:not(.btn):hover{background:#eff6ff;border-color:#93c5fd}.pagination-links>a.active{background:var(--blue);border-color:var(--blue);color:#fff}.pagination-links .btn{padding:8px 11px;font-size:12px}@media(max-width:620px){.pagination{align-items:stretch}.pagination-summary{width:100%;text-align:center}.pagination-links{justify-content:center}}

/* v14.0.31 - actualización manual del historial; no activa recarga automática */
.documentos-refresh{margin-left:auto;width:56px;height:56px;padding:0;border-radius:0;background:#fff;color:#2563eb;border:1px solid #eef2f7;box-shadow:0 4px 16px #0f172a0a;font-size:30px;font-weight:400;line-height:1;display:inline-grid;place-items:center;transition:transform .18s ease,background .18s ease}
.documentos-refresh:hover{background:#f8fafc;color:#1d4ed8}
.documentos-refresh.actualizando{animation:documentos-refresh-spin .7s linear infinite;opacity:.8}
@keyframes documentos-refresh-spin{to{transform:rotate(360deg)}}
@media(max-width:560px){.documentos-refresh{width:48px;height:48px;font-size:27px}}

/* v14.0.34 - contador visible de reintentos automáticos */
.estado-reintento{display:block;margin-top:7px;font-size:11px;line-height:1.35;font-weight:600;min-height:15px}
.estado-reintento.auto-retry-activo{color:#2563eb}
.estado-reintento.auto-retry-agotado{color:#b45309}
.estado-reintento.auto-retry-finalizado{color:#15803d}

/* v14.0.36 - contador debajo del estado; se oculta al aceptar/rechazar */
.estado-reintento{max-width:190px}
.estado-reintento.auto-retry-agotado{font-weight:700}
.estado-reintento.auto-retry-agotado span{display:inline-block;margin-top:2px;font-size:10px;font-weight:600;color:#92400e}

/* Configuración - control acumulativo plegable */
.config-firmas{margin:24px 0 8px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;overflow:hidden}
.config-firmas>summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;cursor:pointer;list-style:none;user-select:none}
.config-firmas>summary::-webkit-details-marker{display:none}
.config-firmas>summary:hover{background:#f1f5f9}
.config-firmas>summary:focus-visible{outline:3px solid #bfdbfe;outline-offset:-3px}
.config-firmas-titulo{display:grid;gap:4px;min-width:0}
.config-firmas-titulo strong{font-size:18px;color:#172033}
.config-firmas-titulo small{color:var(--muted);font-size:12px;font-weight:600}
.config-firmas-accion{display:flex;align-items:center;gap:8px;flex:0 0 auto;color:var(--blue);font-size:13px;font-weight:800}
.config-firmas-accion .ocultar{display:none}
.config-firmas-flecha{display:inline-block;font-size:22px;line-height:1;transition:transform .18s ease}
.config-firmas[open] .config-firmas-accion .ver{display:none}
.config-firmas[open] .config-firmas-accion .ocultar{display:inline}
.config-firmas[open] .config-firmas-flecha{transform:rotate(180deg)}
.config-firmas-contenido{padding:0 18px 18px;border-top:1px solid var(--line);background:#fff}
.config-firmas-tabla{max-height:430px;overflow:auto;border:1px solid var(--line);border-radius:10px}
.config-firmas-tabla thead{position:sticky;top:0;z-index:1}
.config-firmas-tabla th:nth-child(1),.config-firmas-tabla td:nth-child(1){width:auto;min-width:230px;max-width:none}
.config-firmas-tabla th:nth-child(2),.config-firmas-tabla td:nth-child(2){width:120px;min-width:100px;max-width:none;text-align:left}
.config-firmas-tabla th:nth-child(3),.config-firmas-tabla td:nth-child(3){width:170px;min-width:140px;max-width:none}
.config-firmas-tabla th:nth-child(4),.config-firmas-tabla td:nth-child(4){width:130px;min-width:110px;max-width:none}
.config-firmas-tabla input[type="number"]{min-width:105px}
@media(max-width:560px){.config-firmas>summary{align-items:flex-start;padding:14px}.config-firmas-titulo strong{font-size:16px}.config-firmas-accion .ver,.config-firmas-accion .ocultar{display:none!important}.config-firmas-contenido{padding:0 12px 12px}}
