*{box-sizing:border-box}
:root{--marca:#1f4e79;--fondo:#f4f5f7;--papel:#fff;--tinta:#1c1f24;--suave:#6b7280;--linea:#e5e7eb;--ok:#15803d;--mal:#b91c1c;--tibio:#b45309}
html,body{margin:0;background:var(--fondo);color:var(--tinta);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--marca)}
.barra{display:flex;align-items:center;gap:18px;padding:10px 22px;background:var(--papel);border-bottom:1px solid var(--linea);position:sticky;top:0;z-index:5}
.barra .marca{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--tinta)}
.barra .marca img{height:32px}
.sello{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--marca);color:#fff;font-weight:900;font-size:13px}
.sello.grande{width:64px;height:64px;font-size:24px;margin:0 auto 10px;border-radius:16px}
.barra nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.barra nav a{padding:7px 11px;border-radius:8px;text-decoration:none;color:var(--tinta);font-weight:600;font-size:14px}
.barra nav a.on,.barra nav a:hover{background:color-mix(in srgb,var(--marca) 12%,#fff);color:var(--marca)}
.quien{display:flex;align-items:center;gap:8px;font-size:13px}.quien small{color:var(--suave)}
main{max-width:1240px;margin:0 auto;padding:22px}
footer{text-align:center;color:var(--suave);font-size:12px;padding:30px 0}
h1{font-size:24px;margin:0 0 14px}h2{font-size:18px;margin:18px 0 10px}h3{font-size:15px;margin:0 0 10px}
.suave{color:var(--suave)}
.tarjeta{background:var(--papel);border:1px solid var(--linea);border-radius:14px;padding:18px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.dos{display:grid;grid-template-columns:2fr 1fr;gap:18px}
.tres{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}
.kpi{background:var(--papel);border:1px solid var(--linea);border-radius:12px;padding:14px 16px}
.kpi b{display:block;font-size:26px;line-height:1.1}.kpi span{color:var(--suave);font-size:13px}
.kpi.ok b{color:var(--ok)}.kpi.mal b{color:var(--mal)}.kpi.tibio b{color:var(--tibio)}
.tabla{width:100%;border-collapse:collapse;font-size:14px}
.tabla th{text-align:left;color:var(--suave);font-weight:600;font-size:12px;letter-spacing:.02em;padding:8px 10px;border-bottom:1px solid var(--linea)}
.tabla td{padding:9px 10px;border-bottom:1px solid var(--linea);vertical-align:middle}
.tabla tr:hover td{background:#fafafa}.tabla .num{text-align:right;font-variant-numeric:tabular-nums}
.tabla tr.apagado td{opacity:.45}
.acciones{white-space:nowrap;text-align:right}
.chip{display:inline-block;padding:2px 8px;border-radius:999px;background:#eef0f3;font-size:12px;font-weight:600}
.chip.ok{background:#dcfce7;color:var(--ok)}.chip.mal{background:#fee2e2;color:var(--mal)}.chip.tibio{background:#fef3c7;color:var(--tibio)}.chip.marca{background:color-mix(in srgb,var(--marca) 14%,#fff);color:var(--marca)}
label{display:block;font-size:13px;font-weight:600;color:var(--suave);margin:10px 0 4px}
input,select,textarea{width:100%;padding:9px 11px;border:1px solid #d1d5db;border-radius:9px;font:inherit;background:#fff;color:var(--tinta)}
input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--marca) 40%,#fff);border-color:var(--marca)}
.fila{display:flex;gap:10px;align-items:end}.fila>label{flex:1;margin-top:0}
.btn{display:inline-block;padding:9px 14px;border:1px solid #d1d5db;border-radius:9px;background:#fff;font:inherit;font-weight:600;cursor:pointer;color:var(--tinta);text-decoration:none}
.btn:hover{border-color:var(--marca);color:var(--marca)}
.btn.primario{background:var(--marca);border-color:var(--marca);color:#fff}.btn.primario:hover{filter:brightness(1.08);color:#fff}
.btn.chico{padding:4px 9px;font-size:12px}.btn.peligro{color:var(--mal);border-color:#fca5a5}
.btn:disabled{opacity:.5;cursor:wait}
.error{color:var(--mal);font-size:13px;min-height:18px;margin-top:8px}
.aviso{max-width:1240px;margin:14px auto -8px;padding:10px 16px;background:#dcfce7;color:var(--ok);border-radius:10px;font-weight:600}
.buscador{margin-bottom:12px}.buscador input{max-width:360px}
.vacio{padding:30px;text-align:center;color:var(--suave)}
body.solo{display:grid;place-items:center;min-height:100vh}
.entrar{width:min(380px,92vw);text-align:center}.entrar h1{font-size:20px;margin:4px 0}.entrar label{text-align:left}.entrar .btn{width:100%;margin-top:14px}
.logoGrande{height:56px;margin-bottom:8px}
.grilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.prod{background:var(--papel);border:1px solid var(--linea);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px}
.prod .foto{aspect-ratio:1;background:#f1f2f4;border-radius:8px;display:grid;place-items:center;color:var(--suave);font-size:12px;overflow:hidden}
.prod .foto img{width:100%;height:100%;object-fit:cover}
.prod .precio{font-weight:800;font-size:17px}
.barraLateral{position:sticky;top:70px}
.semaforo{display:inline-block;width:10px;height:10px;border-radius:50%;background:#d1d5db;margin-right:6px}.semaforo.ok{background:var(--ok)}.semaforo.mal{background:var(--mal)}.semaforo.tibio{background:var(--tibio)}
.prog{height:8px;background:#eef0f3;border-radius:4px;overflow:hidden}.prog i{display:block;height:100%;background:var(--marca)}
@media (max-width:820px){.dos,.tres{grid-template-columns:1fr}.barra{flex-wrap:wrap}main{padding:14px}}
@media print{.barra,footer,.btn{display:none}main{padding:0;max-width:none}.tarjeta{border:0;box-shadow:none}}
