:root{--bg: #f4f6f9;--card: #fff;--text: #1d2733;--muted: #6b7684;--line: #e3e7ec;--brand: #1f3a5f;--brand2: #2d5a8f;--green: #16a34a;--amber: #d97706;--red: #dc2626;--green-bg: #ecfdf3;--amber-bg: #fff8eb;--red-bg: #fef2f2;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1{font-size:22px;margin:0 0 14px}h3{font-size:15px;margin:0 0 10px}a{color:var(--brand2)}input,select,textarea,button{font:inherit}input,select,textarea{border:1px solid #cfd6de;border-radius:6px;padding:7px 9px;background:#fff;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid #9cc0ea;border-color:var(--brand2)}input.num{text-align:right;font-variant-numeric:tabular-nums}button{border:1px solid #cfd6de;background:#fff;border-radius:6px;padding:7px 13px;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){background:#f1f4f8}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.primary:hover:not(:disabled){background:var(--brand2)}button.danger{border-color:var(--red);color:var(--red)}button.link.danger-link{color:var(--red)}button.link{border:0;background:none;color:var(--brand2);padding:0 4px}label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);font-weight:500}label.inline{flex-direction:row;align-items:center;gap:8px}label.inline input[type=checkbox],.checks input,.red-confirm input[type=checkbox]{width:auto}code{background:#eef1f5;padding:1px 4px;border-radius:4px}.muted{color:var(--muted)}.small{font-size:12px}.center{display:flex;align-items:center;justify-content:center;min-height:200px}.error{color:var(--red);background:var(--red-bg);border-radius:6px;padding:8px 10px;margin:8px 0}.banner{background:#eef4fb;border:1px solid #cfe0f3;border-radius:6px;padding:8px 12px;margin:8px 0}.banner.warn{background:var(--amber-bg);border-color:#f5d9a8}.banner.err{background:var(--red-bg);border-color:#f6c6c6}.banner ul{margin:4px 0 0;padding-left:18px}.app{min-height:100vh}.topbar{display:flex;align-items:center;gap:24px;background:var(--brand);color:#fff;padding:0 24px;height:52px}.topbar nav{display:flex;gap:4px;flex:1}.topbar nav a{color:#d6e2f0;text-decoration:none;padding:8px 12px;border-radius:6px}.topbar nav a.active,.topbar nav a:hover{background:#ffffff1f;color:#fff}.topbar .user{display:flex;align-items:center;gap:8px}.topbar .user .link{color:#d6e2f0}.topbar .muted{color:#a9bcd2}.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px}.brand.big{font-size:20px;margin-bottom:8px;color:var(--brand)}.dots{display:inline-flex;gap:3px}.dots i{width:10px;height:10px;border-radius:50%;display:inline-block}.dots .g{background:#22c55e}.dots .a{background:#f59e0b}.dots .r{background:#ef4444}.badge{background:#ffffff26;border-radius:10px;padding:1px 8px;font-size:11px}main{padding:20px 24px;max-width:1880px;margin:0 auto}.narrow{max-width:900px;margin:0 auto}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:16px}.row{display:flex;gap:8px;align-items:center}.row.between{justify-content:space-between;margin-bottom:8px}.row.end{justify-content:flex-end;margin-top:12px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin-bottom:10px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px 14px;margin:10px 0}.grid4{display:grid;grid-template-columns:2fr 2fr 1fr 2fr;gap:8px;margin-top:10px}.span2{grid-column:span 2}.actions{display:flex;justify-content:space-between;align-items:center;margin-top:14px}.login{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:380px;display:flex;flex-direction:column;gap:12px}.picker{position:relative}.dropdown{position:absolute;z-index:10;left:0;right:0;top:100%;background:#fff;border:1px solid var(--line);border-radius:6px;list-style:none;margin:2px 0 0;padding:4px 0;max-height:320px;overflow:auto;box-shadow:0 6px 18px #00000014}.dropdown li{padding:7px 10px;cursor:pointer;color:var(--text)}.dropdown li:hover{background:#f1f5fa}.picked{padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:#f8fafc;color:var(--text);font-size:14px}.dropzone{border:2px dashed #b8c4d2;border-radius:10px;padding:40px 20px;text-align:center;cursor:pointer;margin-top:8px;background:#fafbfd}.dropzone.over{border-color:var(--brand2);background:#eef4fb}.dz-title{font-size:16px;font-weight:600;margin-bottom:6px}.filelist{list-style:none;padding:0;margin:12px 0 0;max-height:280px;overflow:auto}.filelist li{display:flex;gap:10px;padding:4px 0;border-bottom:1px solid var(--line)}.filelist li .link{margin-left:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:8px;border-bottom:1px solid var(--line);background:#fafbfc;position:sticky;top:0}.table td{padding:8px;border-bottom:1px solid #eef1f4;vertical-align:middle}.table.compact td,.table.compact th{padding:4px 6px}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table tr.click{cursor:pointer}.table tr.click:hover td{background:#f5f8fc}.table tr.off td{opacity:.5}.table td.motivo{max-width:460px}.table td.detail{max-width:600px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:11px;color:#fff;font-weight:700}.dot.verde{background:var(--green)}.dot.ambar{background:var(--amber)}.dot.rojo{background:var(--red)}.dot.none{background:#cbd2da}.dot.off{opacity:.45}.dot.reading{background:conic-gradient(var(--brand2) 0 25%,#d6dee8 0);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:#eef1f5;margin-right:4px}.pill.procesando{background:#e0ecfa;color:#1d4f8a}.pill.en_revision{background:var(--amber-bg);color:#9a5b00}.pill.revisado{background:var(--green-bg);color:#13703a}.pill.exportado{background:#e8e6fb;color:#4a3fb3}.pill.warn{background:var(--amber-bg);color:#9a5b00;margin-left:6px}.batch-head{display:flex;justify-content:space-between;align-items:center;gap:20px}.batch-head h1{margin-bottom:4px}.live{color:var(--green);margin-left:8px;font-size:12px}.counters{display:flex;gap:10px}.counter{min-width:96px;text-align:center;border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;color:var(--muted)}.counter b{display:block;font-size:24px;color:var(--text)}.counter.g{background:var(--green-bg)}.counter.a{background:var(--amber-bg)}.counter.r{background:var(--red-bg)}.progress{position:relative;height:26px;background:#e6ebf1;border-radius:6px;margin-bottom:16px;overflow:hidden}.progress .bar{height:100%;background:linear-gradient(90deg,var(--brand2),#4b86c9);transition:width .5s}.progress .bar.indeterminate{animation:indet 1.4s ease-in-out infinite}@keyframes indet{0%{margin-left:-30%}to{margin-left:100%}}.progress span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.split-top{display:grid;grid-template-columns:1fr 1fr;gap:16px}.exports{padding-left:18px;margin:10px 0 0;font-size:13px}.tabs{display:flex;gap:4px;margin-bottom:10px;flex-wrap:wrap}.tabs button{border-radius:16px;padding:5px 12px}.tabs button.on{background:var(--brand);color:#fff;border-color:var(--brand)}.review-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.review-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(520px,1fr);gap:16px;height:calc(100vh - 140px)}.viewer{background:#2b313a;border-radius:10px;display:flex;flex-direction:column;overflow:hidden}.viewer-bar{display:flex;gap:6px;align-items:center;padding:8px;background:#1f242b;color:#dfe5ec;font-size:12px}.viewer-bar button{background:#39414c;border-color:#4a535f;color:#fff;padding:4px 10px}.viewer-bar a{color:#9cc0ea;margin-left:auto}.viewer-bar .sep{width:12px}.viewer-img{flex:1;overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:12px}.viewer-img img{max-width:none;background:#fff;box-shadow:0 2px 12px #0006;transition:transform .2s;transform-origin:center center}.review-form{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px;overflow:auto}.review-form fieldset{border:0;padding:0;margin:0}.status-line{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}.avisos{list-style:none;padding:0;margin:0 0 12px}.avisos li{padding:6px 10px;border-radius:6px;margin-bottom:4px;border-left:4px solid}.avisos li.rojo{background:var(--red-bg);border-color:var(--red)}.avisos li.ambar{background:var(--amber-bg);border-color:var(--amber)}.avisos li.info{background:#f2f5f9;border-color:#9aa8b8;color:var(--muted)}.flag input,.flag select,td.flag input{border-color:var(--red);background:#fff6f6}label.flag{color:var(--red)}.lines.flag{outline:2px solid #f6c6c6;border-radius:6px}.lines .table input{padding:4px 6px}label.strong input{font-weight:700;font-size:15px}.checks{display:flex;flex-wrap:wrap;gap:6px 18px;margin:8px 0}.checks label{flex-direction:row;align-items:center;gap:6px;color:var(--text);font-size:13px}.red-confirm{display:flex;gap:12px;align-items:center;background:var(--red-bg);border-radius:6px;padding:8px 10px;margin-top:12px}.red-confirm label{flex-direction:row;align-items:center;gap:6px;color:var(--red);font-size:13px;white-space:nowrap}.review-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 6px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172373;display:flex;align-items:center;justify-content:center;z-index:50}.modal .card{width:560px;display:flex;flex-direction:column;gap:10px}textarea.code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}.hint{color:var(--amber);font-weight:600}
