:root{--bg:#f2f4f6;--panel:#fff;--ink:#18212b;--muted:#5f6b78;--line:#dde2e8;--soft:#f6f8fa;--side:#031a3d;--side-ink:#c9d3dd;--side-hi:#fff;--accent:#2c5f86;--accent-soft:#e2ecf4;--hazard:#e3a400;--hazard-soft:#fcf2d4;--on-accent:#fff;--ok:#2c7d50;--ok-soft:#e0f2e7;--bad:#b9412f;--bad-soft:#f8e3df;--warn:#b86e00;--warn-soft:#fbead1;--f-ui:"IBM Plex Sans",system-ui,sans-serif;--f-head:"IBM Plex Sans Condensed","Arial Narrow",sans-serif;--f-mono:"IBM Plex Mono",ui-monospace,monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--f-ui);margin:0;font-size:14px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--hazard);outline-offset:2px}a{color:var(--accent)}.app{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.side{background:var(--side);color:var(--side-ink);flex-direction:column;gap:18px;height:100vh;padding:18px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.side .logo{border-radius:6px;width:100%;display:block}.navg{flex-direction:column;gap:2px;display:flex}.navg h6{font-size:10.5px;font-family:var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:#7c8a98;margin:6px 8px 4px;font-weight:500}.nav{text-align:left;width:100%;color:var(--side-ink);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:flex}.nav svg{stroke:currentColor;fill:none;stroke-width:1.8px;flex:none;width:18px;height:18px}.nav:hover{color:var(--side-hi);background:#ffffff0f}.nav.active{color:var(--side-hi);box-shadow:inset 3px 0 0 var(--hazard);background:#ffffff1a}.nav .cnt{font-family:var(--f-mono);background:var(--hazard);color:#18212b;border-radius:10px;margin-left:auto;padding:0 7px;font-size:11px}.side .foot{color:#9aa7b4;flex-direction:column;gap:8px;margin-top:auto;padding:0 8px;font-size:11.5px;display:flex}.side .foot .pill{align-self:flex-start}.side .foot .btn{color:var(--side-ink);background:0 0;border-color:#fff3}.main{flex-direction:column;min-width:0;display:flex}.top{z-index:5;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 20px;display:flex;position:sticky;top:0}.crumb{font-family:var(--f-head);margin-right:auto;font-size:20px;font-weight:700}.crumb small{font-family:var(--f-ui);color:var(--muted);margin-left:8px;font-size:13px;font-weight:400}.field{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}select,input[type=text],input[type=number],input[type=date],input[type=email],input:not([type]){border:1px solid var(--line);background:var(--panel);border-radius:6px;min-width:0;padding:6px 8px}.content{flex-direction:column;gap:18px;width:100%;max-width:1280px;padding:20px 20px 60px;display:flex}.btn{border:1px solid var(--line);background:var(--panel);cursor:pointer;white-space:nowrap;color:inherit;border-radius:6px;align-items:center;gap:6px;padding:7px 12px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.sm{padding:4px 9px;font-size:12.5px}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn.ghost{color:var(--accent);background:0 0;border-color:#0000}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:0;padding:16px}.card h3{font-family:var(--f-head);letter-spacing:.02em;align-items:center;gap:8px;margin:0 0 10px;font-size:16px;display:flex}.card h3 .btn{margin-left:auto}.grid{gap:14px;display:grid}.g4{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.kpi{flex-direction:column;gap:2px;display:flex}.kpi .l{color:var(--muted);font-size:12px}.kpi .v{font-family:var(--f-head);font-variant-numeric:tabular-nums;font-size:28px;font-weight:700}.kpi .s{color:var(--muted);font-size:12px}.tbl{overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px;font-size:11.5px;font-weight:600}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 10px}tr:last-child td{border-bottom:0}td.num,th.num,.num{text-align:right}tbody tr:hover{background:var(--soft)}.mono{font-family:var(--f-mono);font-size:12.5px}.muted{color:var(--muted)}.small{font-size:12px}.pill{white-space:nowrap;background:var(--accent-soft);color:var(--accent);border-radius:12px;align-items:center;gap:5px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.neu{background:var(--soft);color:var(--muted);border:1px solid var(--line)}.pill.role{background:var(--hazard);color:#18212b}.stages{gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.stage{border:1px solid var(--line);background:var(--panel);cursor:pointer;text-align:left;border-radius:8px;flex:1;min-width:120px;padding:8px 12px;position:relative}.stage .n{font-family:var(--f-head);font-size:22px;font-weight:700;display:block}.stage .t{color:var(--muted);font-size:12px}.stage[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent)}.stage:not(:last-child):after{content:"";background:var(--line);width:6px;height:2px;position:absolute;top:50%;right:-6px}.steps{gap:3px;display:flex}.steps i{background:var(--line);border-radius:2px;width:16px;height:5px}.steps i.on{background:var(--accent)}.steps i.end{background:var(--ok)}.bar{background:var(--line);border-radius:3px;min-width:80px;height:6px;overflow:hidden}.bar i{background:var(--accent);height:100%;display:block}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.toolbar .sp,.sp{flex:1}.empty{text-align:center;color:var(--muted);padding:26px}.note{color:var(--muted);font-size:12px}.err{color:var(--bad)}.errbox{background:var(--bad-soft);color:var(--bad);border-radius:8px;padding:10px 12px;font-size:13px}.qty{text-align:right;width:84px}.scrim{z-index:30;background:#0a0f1480;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:14px;width:min(760px,100%);max-height:90vh;padding:20px;display:flex;overflow:auto}.modal h4{font-family:var(--f-head);margin:0;font-size:20px}.modal h5{font-family:var(--f-head);margin:4px 0 0;font-size:15px}.form,.formgrid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;gap:12px;display:grid}.form label,.formgrid label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.form label span{font-weight:600}.actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.login{background:var(--bg);place-items:center;min-height:100vh;display:grid}.login .card{flex-direction:column;align-items:center;gap:14px;width:min(380px,92vw);display:flex}.login img{border-radius:6px;width:100%}.login h1{font-family:var(--f-head);margin:0}.loginform{flex-direction:column;gap:10px;width:100%;display:flex}.loginform input{border:1px solid var(--line);border-radius:6px;padding:8px}.aviso-version{z-index:40;background:var(--ink);color:#fff;border-radius:8px;align-items:center;gap:12px;padding:10px 14px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px -10px #0006}@media (width<=860px){.app{grid-template-columns:1fr}.side{gap:10px;height:auto;position:static}.navs{gap:4px;display:flex;overflow-x:auto}.navg{flex-direction:row}.navg h6{display:none}.nav{white-space:nowrap}.top{position:static}}@media (prefers-reduced-motion:reduce){*{animation:none!important}}.aviso-version.error{background:var(--bad)}.modal.xl{gap:0;width:min(1120px,100%);max-height:92vh;padding:0;overflow:hidden}.mhead{border-bottom:1px solid var(--line);align-items:flex-start;gap:12px;padding:16px 20px 12px;display:flex}.mhead h4{font-family:var(--f-head);margin:0;font-size:20px}.mhead .sub{color:var(--muted);margin-top:2px;font-size:12.5px}.mhead .cerrar{cursor:pointer;color:var(--muted);background:0 0;border:0;margin-left:auto;padding:2px 6px;font-size:22px;line-height:1}.mbody{flex-direction:column;flex:1;gap:14px;min-height:0;padding:16px 20px;display:flex;overflow:auto}.mfoot{border-top:1px solid var(--line);background:var(--soft);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 20px;display:flex}.mfoot .sp{flex:1}.chips{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.chip{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:8px 12px}.chip .l{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11.5px}.chip .v{font-family:var(--f-head);font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.chip.alerta{border-color:var(--warn);background:var(--warn-soft)}.compara{border:1px solid var(--line);border-radius:8px;grid-template-columns:110px 1fr 1fr 28px;font-size:13px;display:grid;overflow:hidden}.compara>div{border-bottom:1px solid var(--line);padding:7px 10px}.compara>div:nth-last-child(-n+4){border-bottom:0}.compara .h{background:var(--soft);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11.5px;font-weight:600}.compara .k{color:var(--muted)}.ok-ico{color:var(--ok);font-weight:700}.no-ico{color:var(--warn);font-weight:700}.archivo{border:1px dashed var(--accent);background:var(--accent-soft);cursor:pointer;color:var(--accent);border-radius:8px;align-items:center;gap:10px;min-height:38px;padding:8px 12px;font-weight:500;display:flex}.archivo input{display:none}.archivo .nom{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.tbl.scroll{border:1px solid var(--line);border-radius:8px;max-height:46vh;overflow:auto}.tbl.scroll thead th{background:var(--panel);z-index:1;position:sticky;top:0}.tabs{border-bottom:1px solid var(--line);gap:4px;display:flex}.tab{cursor:pointer;color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 12px;font-weight:600}.tab[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}.alerta{background:var(--bad-soft);color:var(--bad);border-radius:8px;align-items:flex-start;gap:8px;padding:9px 12px;font-size:13px;display:flex}.alerta.warn{background:var(--warn-soft);color:var(--warn)}.alerta.ok{background:var(--ok-soft);color:var(--ok)}.linea-add{border:1px solid var(--line);background:var(--soft);border-radius:8px;grid-template-columns:2fr 110px auto auto;align-items:end;gap:8px;padding:10px;display:grid}.linea-add label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.icono-btn{border:1px solid var(--line);background:var(--panel);cursor:pointer;width:28px;height:28px;color:var(--bad);border-radius:6px;font-size:15px;line-height:1}.icono-btn:hover{border-color:var(--bad)}@media (width<=700px){.compara{grid-template-columns:80px 1fr 1fr 24px}.linea-add{grid-template-columns:1fr 1fr}}.mbody>*{flex-shrink:0}.mbody>.tbl.scroll{flex-shrink:1;min-height:180px}table.compacta td{padding:5px 8px;font-size:13px}table.compacta th{padding:6px 8px}table.compacta .qty{width:74px;padding:2px 6px}table.compacta .small{font-size:11px;line-height:1.2}.chips.compactas{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.chips.compactas .chip{padding:5px 10px}.chips.compactas .chip .l{font-size:10.5px}.chips.compactas .chip .v{font-size:16px}.chips.compactas .chip input{width:84px;padding:2px 6px}.chips.compactas .bar{height:4px;margin-top:3px}.modal.xl .tbl.scroll{max-height:58vh}.linea-add.compacta{gap:6px;padding:8px}tr.menos td{background:var(--warn-soft)}tr.mas td{background:var(--accent-soft)}tr.agregado td{background:var(--ok-soft)}tr.quitado td{background:var(--bad-soft);color:var(--muted)}tr.quitado td.tachar{text-decoration:line-through}tr.quitado td:last-child{text-decoration:none}tr.pendiente td:first-child{box-shadow:inset 3px 0 0 var(--hazard)}.leyenda{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.leyenda i{vertical-align:-2px;border:1px solid var(--line);border-radius:3px;width:12px;height:12px;margin-right:4px;display:inline-block}
