:root{--verde: #39A909;--verde-osc: #007832;--azul: #1E3A5F;--violeta: #71277A;--amarillo: #FDC300;--naranja: #FD7E14;--rojo: #DC3545;--cyan: #17A2B8;--fondo: #F5F7FA;--card: #FFFFFF;--borde: #E2E8F0;--fila: #F8F9FA;--texto: #1A202C;--texto2: #718096;--radio: 8px;--sombra: 0 1px 3px rgba(16, 24, 40, .08);font-family:Work Sans,Inter,Roboto,system-ui,sans-serif;color:var(--texto);background:var(--fondo);font-size:14px}*{box-sizing:border-box}body{margin:0;background:var(--fondo)}a{color:var(--azul)}h1{font-size:22px;margin:0 0 4px;font-weight:600}h2{font-size:16px;margin:0 0 12px;font-weight:600}h3{font-size:14px;margin:0 0 8px;font-weight:600}.sub{color:var(--texto2);font-size:13px}.muted{color:var(--texto2)}.small{font-size:12px}.right{text-align:right}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.page-head{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;justify-content:space-between;margin-bottom:16px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.grow{flex:1}.grid{display:grid;gap:16px}.kpis{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:16px}.cols-2{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.card{background:var(--card);border:1px solid var(--borde);border-radius:var(--radio);padding:16px;box-shadow:var(--sombra)}.card+.card{margin-top:16px}.kpi{border-top:4px solid var(--verde);cursor:default}.kpi .v{font-size:26px;font-weight:700;margin-top:4px}.kpi .l{color:var(--texto2);font-size:12px}a.kpi{text-decoration:none;color:inherit;cursor:pointer}a.kpi:hover{box-shadow:0 4px 10px #1018281f}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;background:var(--verde);color:#fff;font:inherit;font-weight:600;font-size:13px;padding:8px 14px;border-radius:6px;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{filter:brightness(.95)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.azul{background:var(--azul)}.btn.rojo{background:var(--rojo)}.btn.amarillo{background:var(--amarillo);color:var(--texto)}.btn.outline{background:#fff;color:var(--verde);border-color:var(--verde)}.btn.ghost{background:transparent;color:var(--azul);border-color:var(--borde)}.btn.sm{padding:4px 9px;font-size:12px}.link{background:none;border:0;color:var(--azul);cursor:pointer;font:inherit;padding:0;text-decoration:underline}label.f{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:#4a5568}label.f.req>span:after{content:" *";color:var(--rojo)}input,select,textarea{font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--borde);border-radius:6px;background:#fff;color:var(--texto);min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid rgba(57,169,9,.35);border-color:var(--verde)}textarea{min-height:70px;resize:vertical}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.form-grid .full{grid-column:1 / -1}input.cant{width:90px;text-align:right}input.precio{width:130px;text-align:right}.table-wrap{overflow-x:auto;border:1px solid var(--borde);border-radius:var(--radio);background:#fff}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--texto2);font-weight:600;padding:10px;border-bottom:1px solid var(--borde);background:#fff;position:sticky;top:0;z-index:1}td{padding:9px 10px;border-bottom:1px solid var(--borde);vertical-align:top}tbody tr:nth-child(2n){background:var(--fila)}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:#eef6ea}tr.dis td{color:#a0aec0}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.tall{max-height:62vh;overflow:auto}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;color:#fff;white-space:nowrap}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle;margin-right:4px}.alert{border-radius:6px;padding:10px 12px;font-size:13px;margin-bottom:12px;border:1px solid}.alert.info{background:#ebf4ff;border-color:#b6d4f5;color:#1e3a5f}.alert.warn{background:#fff8e1;border-color:#f5d97a;color:#6b5300}.alert.error{background:#fdecee;border-color:#f3b6bd;color:#8a1c27}.alert.ok{background:#eef8e9;border-color:#b9e2a6;color:#22560b}.alert ul{margin:6px 0 0;padding-left:18px}.progress{height:8px;background:#e2e8f0;border-radius:99px;overflow:hidden}.progress>div{height:100%;border-radius:99px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--borde);margin-bottom:16px;overflow-x:auto}.tabs button{background:none;border:0;padding:10px 14px;font:inherit;font-weight:600;color:var(--texto2);cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}.tabs button.on{color:var(--verde);border-color:var(--verde)}.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:10px;font-size:13px}.empty{text-align:center;padding:28px;color:var(--texto2)}.skeleton{background:linear-gradient(90deg,#edf2f7 25%,#f7fafc,#edf2f7 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:6px;height:14px;margin:8px 0}@keyframes sk{to{background-position:-200% 0}}.stepper{display:flex;gap:0;overflow-x:auto;padding:4px 0 8px}.step{flex:1;min-width:92px;text-align:center;position:relative;font-size:12px}.step:before{content:"";position:absolute;top:13px;left:-50%;width:100%;height:3px;background:var(--borde);z-index:0}.step:first-child:before{display:none}.step.done:before,.step.cur:before{background:var(--verde)}.step .c{width:28px;height:28px;border-radius:50%;background:#fff;border:3px solid var(--borde);margin:0 auto 6px;position:relative;z-index:1;display:grid;place-items:center;font-weight:700;font-size:12px;color:#fff}.step.done .c{background:var(--verde);border-color:var(--verde)}.step.cur .c{border-color:var(--verde);background:#fff;color:var(--verde)}.step.bad .c{background:var(--rojo);border-color:var(--rojo)}.bars{display:grid;gap:8px}.bar-row{display:grid;grid-template-columns:minmax(110px,200px) 1fr 70px;gap:8px;align-items:center;font-size:12px}.bar-row .track{background:#edf2f7;border-radius:4px;height:18px;overflow:hidden}.bar-row .track>div{height:100%;border-radius:4px}.toasts{position:fixed;right:16px;bottom:16px;display:grid;gap:8px;z-index:100;max-width:min(440px,calc(100vw - 32px))}.toast{padding:12px 14px;border-radius:8px;color:#fff;background:var(--verde-osc);box-shadow:0 6px 18px #0000002e;font-size:13px}.toast.error{background:var(--rojo)}@media(max-width:640px){.card{padding:12px}.kpi .v{font-size:22px}.bar-row{grid-template-columns:90px 1fr 56px}}
