:root{--azul:#1f3a5f;--azul2:#2d5a8c;--fondo:#f4f6f9;--borde:#dde3ea;--texto:#1d2733;--gris:#6b7785;--ok:#1d7a46;--err:#b42318;--warn:#a15c00}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:14px;color:var(--texto);background:var(--fondo)}
a{color:var(--azul2);text-decoration:none}a:hover{text-decoration:underline}
.app{display:flex;min-height:100vh}
nav.lateral{width:230px;background:var(--azul);color:#fff;flex-shrink:0;padding:14px 0;position:sticky;top:0;height:100vh;overflow:auto}
nav.lateral .marca{padding:0 18px 12px;font-weight:700;font-size:15px;border-bottom:1px solid rgba(255,255,255,.15)}
nav.lateral .marca small{display:block;font-weight:400;opacity:.75;font-size:12px}
nav.lateral .ico{display:inline-block;width:26px;font-size:15px}
nav.lateral details.modulo summary{list-style:none;cursor:pointer;padding:9px 18px;font-weight:600;display:flex;align-items:center;user-select:none}
nav.lateral details.modulo summary::-webkit-details-marker{display:none}
nav.lateral details.modulo summary::after{content:'▸';margin-left:auto;opacity:.7;transition:transform .15s}
nav.lateral details.modulo[open] summary::after{transform:rotate(90deg)}
nav.lateral details.modulo summary:hover{background:rgba(255,255,255,.08)}
nav.lateral details.modulo[open]{background:rgba(0,0,0,.12)}
nav.lateral details.modulo .sub a{padding:6px 18px 6px 44px;font-size:13.5px}
nav.lateral a.modulo-link{padding:9px 18px;font-weight:600}
nav.lateral h4{margin:14px 18px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;opacity:.6}
nav.lateral a{display:block;color:#e8eef5;padding:6px 18px}nav.lateral a:hover,nav.lateral a.activo{background:rgba(255,255,255,.12);text-decoration:none}
main{flex:1;padding:22px 28px;min-width:0}
.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px;flex-wrap:wrap}
h1{font-size:21px;margin:0}h2{font-size:16px;margin:22px 0 10px}
.card{background:#fff;border:1px solid var(--borde);border-radius:8px;padding:16px;margin-bottom:16px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:#fff;border:1px solid var(--borde);border-radius:8px;padding:14px}.kpi b{display:block;font-size:20px;margin-top:4px}.kpi span{color:var(--gris);font-size:12px}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:7px 9px;border-bottom:1px solid var(--borde);text-align:left;vertical-align:top}
th{background:#eef2f6;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:#3c4a5a}
td.n,th.n{text-align:right;white-space:nowrap}tr.total td{font-weight:700;background:#f7f9fb}tr.grupo td{font-weight:600;background:#fafbfc}
.tabla{overflow:auto;border:1px solid var(--borde);border-radius:8px}
form.inline{display:inline}
label{display:block;font-size:12px;color:#3c4a5a;margin-bottom:3px;font-weight:600}
input,select,textarea{width:100%;padding:7px 9px;border:1px solid #c5cfda;border-radius:6px;font:inherit;background:#fff}
input[type=checkbox]{width:auto}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.campo{margin-bottom:10px}
.btn{display:inline-block;padding:7px 14px;border-radius:6px;border:1px solid var(--azul2);background:var(--azul2);color:#fff;cursor:pointer;font:inherit;font-weight:600}
.btn:hover{background:var(--azul);text-decoration:none}.btn.sec{background:#fff;color:var(--azul2)}.btn.peligro{background:var(--err);border-color:var(--err)}.btn.sm{padding:4px 9px;font-size:12px}
.acciones{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.flash{padding:10px 14px;border-radius:6px;margin-bottom:14px}.flash.ok{background:#e5f4ec;color:var(--ok)}.flash.error{background:#fdecea;color:var(--err)}
.aviso{background:#fff7e6;border:1px solid #f3d9a4;color:var(--warn);padding:10px 14px;border-radius:6px;margin-bottom:10px}
.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700;background:#e6ebf1;color:#3c4a5a}
.badge.aceptado{background:#e5f4ec;color:var(--ok)}.badge.rechazado,.badge.error{background:#fdecea;color:var(--err)}.badge.en_proceso,.badge.firmado,.badge.aceptado_condicional{background:#fff3dc;color:var(--warn)}.badge.anulado{background:#eee;color:#777}
.muted{color:var(--gris);font-size:12px}.mono{font-family:ui-monospace,Consolas,monospace;font-size:12px}
.login{max-width:360px;margin:10vh auto}
pre{white-space:pre-wrap;word-break:break-all;background:#f7f9fb;padding:10px;border-radius:6px;max-height:300px;overflow:auto}
/* POS */
.pos{display:grid;grid-template-columns:1fr 380px;gap:14px}
.pos .prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.pos .prod{background:#fff;border:1px solid var(--borde);border-radius:8px;padding:10px;cursor:pointer;min-height:70px}.pos .prod:hover{border-color:var(--azul2)}
.pos .prod b{display:block;font-size:13px}.pos .carrito{position:sticky;top:10px}
.pos .total{font-size:28px;font-weight:800;text-align:right;margin:10px 0}
.pos input.buscar{font-size:16px;padding:10px}
@media (max-width:900px){nav.lateral{display:none}.pos{grid-template-columns:1fr}main{padding:14px}}
@media print{nav.lateral,.noprint,.btn{display:none!important}main{padding:0}.card{border:none}body{background:#fff}}
