/* consola/publico/estilo.css — estilo de la consola SAPKIT.
   Mismo aire que el portal (portal/index.html): tipografía del sistema, oscuro, tarjetas,
   tablas pequeñas y botones pequeños. Sin frameworks ni CDN (CSP default-src 'self'). */

:root{
  --bg:#0f172a; --panel:#1e293b; --panel2:#182236; --borde:#334155; --fondo-campo:#0b1220;
  --texto:#e2e8f0; --tenue:#94a3b8;
  --ok:#4ade80; --err:#f87171; --warn:#fbbf24; --acento:#38bdf8;
  --mono:ui-monospace,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--texto);font:14px/1.5 system-ui,Segoe UI,sans-serif}
a{color:var(--acento)}

/* ── cabecera ─────────────────────────────────────────────────────────────── */
header{display:flex;align-items:center;gap:14px;padding:12px 22px;background:var(--panel);
       border-bottom:1px solid var(--borde);flex-wrap:wrap}
header h1{font-size:17px;margin:0;font-weight:600}
header h1 span{color:var(--acento)}
header .hueco{flex:1}
header nav{display:flex;gap:6px}

/* ── controles ────────────────────────────────────────────────────────────── */
select,input,button,textarea{font:inherit;border-radius:8px;border:1px solid var(--borde);
       background:var(--fondo-campo);color:var(--texto);padding:6px 10px}
button{cursor:pointer;background:#16324a}
button:hover{background:#1d466b}
button.primario{background:var(--acento);color:#082033;font-weight:600;border-color:transparent}
button.peligro{background:#3f1d1d;border-color:#7f1d1d}
button.plano{background:transparent;border-color:transparent;color:var(--acento);padding:2px 6px}
button:disabled{opacity:.45;cursor:wait}
button.mini{font-size:12px;padding:3px 8px}
textarea{width:100%;height:460px;font:12.5px/1.55 var(--mono);white-space:pre;resize:vertical;tab-size:2}
textarea.chico{height:120px}
label.campo{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--tenue)}
label.campo>select,label.campo>input,label.campo>textarea{width:100%}
/* casillas del formulario de configuración: etiqueta a la derecha, en una línea */
label.check{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;white-space:nowrap}
label.check>input{margin:0}
.checks{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:10px}
fieldset{border:1px solid var(--borde);border-radius:10px;padding:12px 14px;margin:10px 0;
         background:var(--panel2);min-width:0}
legend{font-size:12.5px;color:var(--tenue);padding:0 6px}

/* ── estructura ───────────────────────────────────────────────────────────── */
main{padding:16px 22px;max-width:1400px;margin:0 auto}
section{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:16px;
        min-width:0;margin-bottom:16px}
h2{margin:0 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--tenue)}
h3{margin:14px 0 8px;font-size:14px}
.barra{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.barra h2{margin:0}
.fila{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.grid{display:grid;gap:8px 12px;align-items:end}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g6{grid-template-columns:repeat(6,minmax(0,1fr))}
.tenue{color:var(--tenue);font-size:12.5px}

/* ── pestañas ─────────────────────────────────────────────────────────────── */
.tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.tabs button{border-radius:8px 8px 0 0;border-bottom:none;background:var(--fondo-campo);color:var(--tenue)}
.tabs button.activa{background:#16324a;color:var(--texto);font-weight:600}

/* ── tarjetas de cliente ──────────────────────────────────────────────────── */
.tarjetas{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.tarjeta{background:var(--panel2);border:1px solid var(--borde);border-radius:12px;padding:14px;cursor:pointer}
.tarjeta:hover{border-color:var(--acento)}
.tarjeta h3{margin:0 0 2px;font-size:15px}
.tarjeta .semaforo{margin-top:6px;font-size:12.5px}

/* ── tablas ───────────────────────────────────────────────────────────────── */
table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}
th,td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--borde);vertical-align:top}
th{color:var(--tenue);font-weight:500;white-space:nowrap}
tr.pulsable{cursor:pointer}
tr.pulsable:hover td{background:#16324a}
.tabla-scroll{overflow-x:auto}

/* ── indicadores ──────────────────────────────────────────────────────────── */
.punto{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.punto.ok{background:var(--ok)} .punto.no{background:var(--err)} .punto.medio{background:var(--warn)}
.chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;
      border:1px solid var(--borde);background:var(--fondo-campo);color:var(--tenue)}
code,.mono{font-family:var(--mono);font-size:12.5px;word-break:break-all}
pre{background:var(--fondo-campo);border:1px solid var(--borde);border-radius:8px;padding:12px;
    overflow:auto;font:12px/1.5 var(--mono);max-height:440px;white-space:pre-wrap;margin:8px 0 0}
pre.log{max-height:520px;white-space:pre}
.msj{margin:4px 0;padding:6px 10px;border-radius:8px;font-size:12.5px;font-family:var(--mono)}
.msj.err{background:#3f1d1d;color:#fecaca} .msj.warn{background:#3a2e10;color:#fde68a}
.msj.ok{background:#132e1d;color:#bbf7d0}

/* ── avisos flotantes ─────────────────────────────────────────────────────── */
#avisos{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:20;max-width:420px}
#avisos .aviso{padding:10px 14px;border-radius:10px;border:1px solid var(--borde);
               background:var(--panel);box-shadow:0 6px 20px rgba(0,0,0,.45);font-size:13px}
#avisos .aviso.err{border-color:#7f1d1d;background:#3f1d1d;color:#fecaca}
#avisos .aviso.ok{border-color:#166534;background:#132e1d;color:#bbf7d0}

/* ── modal ────────────────────────────────────────────────────────────────── */
#modal{position:fixed;inset:0;background:rgba(2,6,23,.72);display:flex;align-items:center;
       justify-content:center;padding:20px;z-index:30}
#modal[hidden]{display:none}
.caja{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:18px;
      width:min(560px,100%)}
.caja h3{margin:0 0 10px}
.caja input.secreto{width:100%;font-family:var(--mono);font-size:13px;background:var(--fondo-campo)}

/* ── login ────────────────────────────────────────────────────────────────── */
body.entrar{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.entrada{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:24px;
         width:min(380px,100%)}
.entrada h1{font-size:19px;margin:0 0 4px}
.entrada h1 span{color:var(--acento)}
.entrada label.campo{margin-top:12px}
.entrada button{width:100%;margin-top:16px}
