:root{
  --bg:#f4f5f7; --panel:#ffffff; --linea:#e2e5ea; --texto:#1d2430; --suave:#6b7480;
  --primario:#3a3f45; --primario2:#565c64; --acento:#b5651d; --rojo:#b3261e;
  --azul:#245c8f; --sombra:0 1px 2px rgba(16,24,40,.06),0 4px 14px rgba(16,24,40,.06);
  --radio:10px;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 "Segoe UI",system-ui,sans-serif;background:var(--bg);color:var(--texto)}
button,input,select,textarea{font:inherit;color:inherit}

/* ---------- estructura ---------- */
#app{display:flex;min-height:100vh}
nav{width:212px;flex:0 0 212px;background:#2b2d30;color:#cfd2d6;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
nav .marca{display:flex;flex-direction:column;align-items:center;padding:12px 12px 8px;border-bottom:1px solid #3a3d41;margin-bottom:4px;flex:0 0 auto}
nav .marca img{width:34px;height:34px;filter:invert(.8)}
nav h1{font-size:16px;margin:4px 0 0;color:#d9dbde;letter-spacing:6px;font-weight:300;padding-left:6px}
nav .sub{margin-top:2px;font-size:8.5px;color:#8b9096;text-transform:uppercase;letter-spacing:1.4px;text-align:center}
nav .menu{flex:1;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#4a4e54 transparent;padding-bottom:6px}
nav .grupo{padding:9px 16px 3px;font-size:9.5px;color:#8b9096;text-transform:uppercase;letter-spacing:1.3px}
nav a{display:flex;align-items:center;gap:9px;padding:5px 16px;color:#cfd2d6;text-decoration:none;cursor:pointer;font-size:13.5px;border-left:3px solid transparent}
nav a:hover{background:#35383c;color:#fff}
nav a.activo{background:#3d4046;color:#fff;border-left-color:#c9cbce}
nav .esp{flex:1}
nav .pie{padding:8px 16px;font-size:11px;color:#8b9096;border-top:1px solid #3a3d41;flex:0 0 auto}
main{flex:1;padding:22px 26px 60px;max-width:1500px}
h2{margin:0 0 4px;font-size:22px}
.desc{color:var(--suave);margin:0 0 18px;font-size:13.5px}

/* ---------- tarjetas ---------- */
.tarjetas{display:grid;grid-template-columns:repeat(auto-fit,minmax(186px,1fr));gap:12px;margin-bottom:20px}
.tarjeta{background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);padding:13px 15px;box-shadow:var(--sombra)}
.tarjeta .t{font-size:12px;color:var(--suave);text-transform:uppercase;letter-spacing:.5px}
.tarjeta .v{font-size:23px;font-weight:600;margin-top:5px;letter-spacing:-.4px}
.tarjeta .n{font-size:12px;color:var(--suave);margin-top:3px}
.tarjeta.ok .v{color:#2f6f4e} .tarjeta.alerta .v{color:var(--rojo)}
.tarjeta.info .v{color:var(--azul)}

.panel{background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra);margin-bottom:18px}
.panel>h3{margin:0;padding:13px 16px;border-bottom:1px solid var(--linea);font-size:14.5px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.panel .cuerpo{padding:14px 16px}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px}

/* ---------- tablas ---------- */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;font-weight:600;color:var(--suave);font-size:11.5px;text-transform:uppercase;
   letter-spacing:.4px;padding:9px 10px;border-bottom:1px solid var(--linea);white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid #f0f2f5;vertical-align:middle}
tbody tr:hover{background:#f8fafb}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla-caja{overflow-x:auto}
.vacio{padding:26px;text-align:center;color:var(--suave);font-size:13.5px}

/* ---------- controles ---------- */
.btn{background:var(--primario);color:#fff;border:0;border-radius:8px;padding:8px 14px;cursor:pointer;font-size:13.5px;font-weight:500}
.btn:hover{background:var(--primario2)}
.btn.sec{background:#eef0f3;color:var(--texto)} .btn.sec:hover{background:#e2e6eb}
.btn.rojo{background:var(--rojo)} .btn.mini{padding:4px 9px;font-size:12.5px;border-radius:6px}
.barra{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
input,select,textarea{border:1px solid #cfd5dd;border-radius:8px;padding:7px 9px;background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid #d9dbde;border-color:var(--primario2)}
label{display:block;font-size:12px;color:var(--suave);margin-bottom:3px}
.campo{margin-bottom:10px} .campo input,.campo select,.campo textarea{width:100%}
.grilla{display:grid;gap:10px}
.g2{grid-template-columns:1fr 1fr} .g3{grid-template-columns:1fr 1fr 1fr} .g4{grid-template-columns:repeat(4,1fr)}

.chip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600}
.chip.pendiente{background:#fff3d6;color:#8a6100}
.chip.aceptado{background:#e0f2e7;color:#1f6b43}
.chip.rechazado{background:#fbe3e1;color:#9c2119}
.chip.vencido{background:#ececef;color:#5d626b}
.chip.en_curso{background:#e2edf7;color:#1f5580}
.chip.terminado{background:#e0f2e7;color:#1f6b43}
.chip.medicion{background:#eceff3;color:#4a535e}
.chip.corte{background:#e6eefa;color:#25537f}
.chip.armado{background:#efe7f7;color:#5b3c86}
.chip.entrega{background:#fff0d9;color:#8a5a00}
.chip.entregado{background:#e0f2e7;color:#1f6b43}
.rojo{color:var(--rojo)} .verde{color:#2f6f4e}

/* ---------- modal ---------- */
.fondo{position:fixed;inset:0;background:rgba(20,26,33,.45);display:flex;align-items:flex-start;
  justify-content:center;padding:28px 16px;overflow:auto;z-index:50}
.modal{background:#fff;border-radius:12px;width:min(980px,100%);box-shadow:0 18px 50px rgba(0,0,0,.25)}
.modal header{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid var(--linea)}
.modal header h3{margin:0;font-size:17px}
.modal .cuerpo{padding:16px 18px}
.modal footer{display:flex;justify-content:flex-end;gap:8px;padding:13px 18px;border-top:1px solid var(--linea);background:#fafbfc;border-radius:0 0 12px 12px}
.x{background:none;border:0;font-size:22px;cursor:pointer;color:var(--suave);line-height:1}

/* ---------- barras de analisis ---------- */
.barras{display:flex;align-items:flex-end;gap:7px;height:190px;padding-top:10px}
.barras .col{flex:1;max-width:86px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;min-width:0}
.barras .b{width:100%;border-radius:5px 5px 0 0;background:#6f7680;min-height:2px}
.barras .b.c{background:#c08a4f}
.barras .par{display:flex;gap:2px;width:100%;align-items:flex-end;height:150px}
.barras .et{font-size:10.5px;color:var(--suave);white-space:nowrap;overflow:hidden}
.leyenda{display:flex;gap:14px;font-size:12px;color:var(--suave);margin-top:8px}
.leyenda span{display:flex;align-items:center;gap:5px}
.pto{width:10px;height:10px;border-radius:3px;display:inline-block}

.aviso{background:#fff8e6;border:1px solid #f0dca8;color:#7a5800;padding:9px 12px;border-radius:8px;font-size:13px;margin-bottom:12px}
#toast{position:fixed;right:18px;bottom:18px;background:#1f2a33;color:#fff;padding:11px 16px;border-radius:9px;
  font-size:13.5px;opacity:0;transform:translateY(8px);transition:.22s;z-index:99}
#toast.ver{opacity:1;transform:none}
@media print{
  nav,.barra,#toast,.modal,.fondo{display:none!important}
  main{padding:0;max-width:none}
  .panel{break-inside:avoid;box-shadow:none;border:1px solid #ccc}
  .tarjetas{grid-template-columns:repeat(3,1fr)}
  body{background:#fff}
}
@media(max-width:820px){nav{width:64px;flex:0 0 64px}nav h1,nav .sub,nav .pie,nav a span{display:none}main{padding:16px}}

/* ---------- extras: whatsapp e importacion ---------- */
a.wa{display:inline-block;background:#25d366;color:#fff;font-size:10.5px;font-weight:600;padding:1px 6px;border-radius:5px;text-decoration:none;margin-left:6px;vertical-align:middle}
a.wa:hover{background:#1ebe5b}
.aviso.rojo{background:#fdecea;border-color:#f5c2c0;color:var(--rojo)}
.chip.azul{background:#e3edf7;color:#245c8f} .chip.verde{background:#e7f3ec;color:#2f6f4e}
.chip.naranja{background:#fbeede;color:#b5651d} .chip.rojo{background:#fdecea;color:#b3261e}
@media(max-width:820px){nav .grupo{display:none}}


/* menu desplegable: las categorias se abren con un clic y las demas quedan cerradas */
nav .grupo{cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:10px 16px 8px;font-size:11px;color:#c3c6ca;letter-spacing:1.2px;border-top:1px solid #35383c;user-select:none}
nav .grupo:hover{color:#fff;background:#303337}
nav .grupo::after{content:"\203A";font-size:16px;line-height:1;transform:rotate(90deg);transition:transform .15s;color:#8b9096}
nav .grupo.cerrado::after{transform:rotate(0deg)}
nav .grupo.cerrado ~ a.oculto{display:none}
nav .grupo.abierto{color:#fff}
nav .menu a{padding-left:24px}
nav .menu a.suelto{padding-left:16px}
