/* app.css - Sistema de diseño SGP · identidad CIMELEC / INGEOCHO */
:root{
  --verde:#5f8b1f; --verde-claro:#7ab929; --verde-oscuro:#4a6d18;
  --navy:#0f2340; --azul:#2e78b7; --dorado:#c9a227;
  --bg:#f4f6f8; --surface:#ffffff; --linea:#e3e8ee;
  --txt:#1c2733; --txt-2:#5a6b7b; --txt-3:#8a99a8;
  --ok:#2e9e5b; --warn:#e6a700; --danger:#d9463e; --gris:#9aa7b4;
  --sombra:0 1px 3px rgba(15,35,64,.08),0 6px 20px rgba(15,35,64,.06);
  --sombra-lg:0 8px 30px rgba(15,35,64,.14);
  --r:14px; --r-sm:9px; --nav-w:236px;
  --sans:'Segoe UI',system-ui,-apple-system,Roboto,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--sans);background:var(--bg);color:var(--txt);font-size:14.5px;line-height:1.45}
a{color:var(--azul);text-decoration:none}
button{font-family:inherit;cursor:pointer}
h1,h2,h3,h4{margin:0;color:var(--navy);font-weight:700;letter-spacing:-.01em}
.hidden{display:none!important}
.muted{color:var(--txt-2)}
.small{font-size:12.5px}

/* ---------- layout app ---------- */
.app{display:flex;min-height:100vh}
.nav{width:var(--nav-w);background:linear-gradient(180deg,var(--navy),#0a1930);color:#dce6f2;
  position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:40}
.nav .brand{padding:18px 18px 14px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.08)}
.nav .brand .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--verde-claro),var(--verde));
  display:grid;place-items:center;font-weight:800;color:#fff;font-size:16px}
.nav .brand b{font-size:16px;color:#fff;letter-spacing:.02em}
.nav .brand span{display:block;font-size:11px;color:#8fa6c4}
.nav .grupo{padding:12px 12px 4px;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#6f88ab}
.nav a.item{display:flex;align-items:center;gap:11px;padding:10px 16px;color:#cdd9e8;font-size:14px;
  border-left:3px solid transparent;transition:.15s}
.nav a.item:hover{background:rgba(255,255,255,.06);color:#fff}
.nav a.item.on{background:rgba(122,185,41,.16);border-left-color:var(--verde-claro);color:#fff;font-weight:600}
.nav a.item .ic{width:18px;text-align:center;opacity:.9}
.nav .foot{margin-top:auto;padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#8fa6c4}

.main{margin-left:var(--nav-w);flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{height:60px;background:var(--surface);border-bottom:1px solid var(--linea);
  display:flex;align-items:center;gap:14px;padding:0 22px;position:sticky;top:0;z-index:30}
.topbar h1{font-size:18px}
.topbar .crumbs{font-size:12.5px;color:var(--txt-3)}
.topbar .sp{flex:1}
.topbar .user{display:flex;align-items:center;gap:9px;font-size:13px}
.topbar .avatar{width:32px;height:32px;border-radius:50%;background:var(--verde);color:#fff;
  display:grid;place-items:center;font-weight:700;font-size:13px}
.content{padding:22px;max-width:1240px;width:100%}

/* ---------- botones ---------- */
.btn{border:1px solid var(--linea);background:var(--surface);color:var(--txt);padding:9px 15px;
  border-radius:var(--r-sm);font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;gap:7px;transition:.15s}
.btn:hover{border-color:var(--verde);color:var(--verde-oscuro)}
.btn.primary{background:linear-gradient(135deg,var(--verde-claro),var(--verde));border:none;color:#fff;box-shadow:0 2px 8px rgba(95,139,31,.3)}
.btn.primary:hover{filter:brightness(1.05);color:#fff}
.btn.navy{background:var(--navy);border:none;color:#fff}
.btn.ghost{background:transparent;border-color:transparent;color:var(--txt-2)}
.btn.sm{padding:6px 11px;font-size:12.5px}
.btn.danger:hover{border-color:var(--danger);color:var(--danger)}

/* ---------- cards / grid ---------- */
.grid{display:grid;gap:16px}
.g-2{grid-template-columns:repeat(2,1fr)} .g-3{grid-template-columns:repeat(3,1fr)}
.g-4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--surface);border:1px solid var(--linea);border-radius:var(--r);box-shadow:var(--sombra)}
.card .hd{padding:15px 18px;border-bottom:1px solid var(--linea);display:flex;align-items:center;gap:10px}
.card .hd h3{font-size:15px} .card .hd .sp{flex:1}
.card .bd{padding:18px}
.card.pad{padding:18px}

/* KPI tiles */
.kpi{background:var(--surface);border:1px solid var(--linea);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sombra);position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--verde)}
.kpi.azul::before{background:var(--azul)} .kpi.navy::before{background:var(--navy)}
.kpi.dorado::before{background:var(--dorado)} .kpi.danger::before{background:var(--danger)}
.kpi .lbl{font-size:12px;color:var(--txt-2);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.kpi .val{font-size:26px;font-weight:800;color:var(--navy);margin-top:4px;letter-spacing:-.02em}
.kpi .sub{font-size:12px;color:var(--txt-3);margin-top:2px}

/* ---------- chips / semáforo ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.chip.verde{background:#e5f5ec;color:#1d7a45} .chip.amarillo{background:#fdf3d7;color:#9a7400}
.chip.rojo{background:#fbe3e1;color:#b5322b} .chip.gris{background:#eceff2;color:#5a6b7b}
.chip.azul{background:#e5eef8;color:#1e5fa0} .chip.navy{background:#e3e8f2;color:var(--navy)}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.dot.verde{background:var(--ok)} .dot.amarillo{background:var(--warn)}
.dot.rojo{background:var(--danger)} .dot.gris{background:var(--gris)}
.badge{background:var(--verde);color:#fff;border-radius:999px;font-size:11px;padding:1px 8px;font-weight:700}
.estado-pill{text-transform:capitalize}

/* ---------- barras / anillos ---------- */
.bar{height:8px;background:#eceff2;border-radius:999px;overflow:hidden}
.bar > i{display:block;height:100%;background:linear-gradient(90deg,var(--verde-claro),var(--verde));border-radius:999px}
.bar.azul > i{background:linear-gradient(90deg,#5aa0e0,var(--azul))}

/* ---------- tabla ---------- */
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
table.tbl th{text-align:left;color:var(--txt-2);font-weight:600;font-size:12px;text-transform:uppercase;
  letter-spacing:.04em;padding:10px 12px;border-bottom:2px solid var(--linea)}
table.tbl td{padding:11px 12px;border-bottom:1px solid var(--linea)}
table.tbl tr:hover td{background:#fafcfe}
table.tbl .num{text-align:right;font-variant-numeric:tabular-nums}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--linea);overflow-x:auto;margin-bottom:18px}
.tabs button{background:none;border:none;padding:11px 16px;font-size:13.5px;font-weight:600;color:var(--txt-2);
  border-bottom:3px solid transparent;white-space:nowrap}
.tabs button.on{color:var(--verde-oscuro);border-bottom-color:var(--verde)}
.tabs button:hover{color:var(--navy)}
.tabpane{display:none} .tabpane.on{display:block;animation:fade .2s}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ---------- forms ---------- */
.field{margin-bottom:13px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--txt-2);margin-bottom:5px}
.field input,.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--linea);
  border-radius:var(--r-sm);font-family:inherit;font-size:14px;background:#fff;color:var(--txt)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--verde);box-shadow:0 0 0 3px rgba(122,185,41,.15)}
.field textarea{min-height:78px;resize:vertical}
.row{display:flex;gap:12px} .row > *{flex:1}

/* ---------- modal ---------- */
.overlay{position:fixed;inset:0;background:rgba(15,35,64,.45);display:grid;place-items:center;z-index:60;padding:20px}
.modal{background:#fff;border-radius:var(--r);box-shadow:var(--sombra-lg);width:min(560px,100%);max-height:90vh;overflow:auto}
.modal .hd{padding:16px 20px;border-bottom:1px solid var(--linea);display:flex;align-items:center}
.modal .hd h3{flex:1} .modal .bd{padding:20px} .modal .ft{padding:14px 20px;border-top:1px solid var(--linea);display:flex;gap:10px;justify-content:flex-end}

/* ---------- login ---------- */
.login-wrap{min-height:100vh;display:grid;place-items:center;
  background:radial-gradient(1200px 600px at 20% -10%,#173257,transparent),linear-gradient(135deg,var(--navy),#0a1930)}
.login-card{background:#fff;border-radius:18px;box-shadow:var(--sombra-lg);width:min(400px,92vw);padding:34px 30px}
.login-card .logo{width:56px;height:56px;border-radius:14px;background:linear-gradient(135deg,var(--verde-claro),var(--verde));
  display:grid;place-items:center;color:#fff;font-weight:800;font-size:24px;margin:0 auto 14px}
.login-card h2{text-align:center;font-size:20px} .login-card p{text-align:center;color:var(--txt-3);margin:4px 0 22px;font-size:13px}

/* ---------- toast ---------- */
#toast{position:fixed;bottom:22px;right:22px;z-index:80;display:flex;flex-direction:column;gap:8px}
.toast{background:var(--navy);color:#fff;padding:11px 16px;border-radius:10px;box-shadow:var(--sombra-lg);font-size:13.5px;animation:fade .2s}
.toast.ok{background:var(--ok)} .toast.err{background:var(--danger)}

/* ---------- svg charts ---------- */
.chart{width:100%;overflow-x:auto}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--txt-2);margin-top:8px}
.legend b{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}

/* ---------- responsive / móvil ---------- */
.nav-toggle{display:none;background:none;border:none;font-size:22px;color:var(--navy)}
@media(max-width:960px){.g-4{grid-template-columns:repeat(2,1fr)}.g-3{grid-template-columns:1fr 1fr}}
@media(max-width:760px){
  .nav{transform:translateX(-100%);transition:.25s;box-shadow:var(--sombra-lg)}
  .nav.open{transform:none}
  .main{margin-left:0}
  .nav-toggle{display:block}
  .g-2,.g-3,.g-4{grid-template-columns:1fr}
  .content{padding:15px}
  .row{flex-direction:column}
  .backdrop{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:35}
}
