/* ============================================================================
   panel.css — Atmósfera (orbes/retícula/glass) + utilidades del Panel
   ============================================================================ */
body{position:relative}
body::before{
  content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:
    radial-gradient(600px 400px at 12% -5%, rgba(124,84,152,.14), transparent 60%),
    radial-gradient(500px 380px at 105% 8%, rgba(255,107,94,.06), transparent 55%);
}
body::after{
  content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;opacity:.5;
  background-image:linear-gradient(var(--border-subtle) 1px,transparent 1px),linear-gradient(90deg,var(--border-subtle) 1px,transparent 1px);
  background-size:44px 44px;mask-image:radial-gradient(circle at 50% 0%,#000,transparent 70%);
  -webkit-mask-image:radial-gradient(circle at 50% 0%,#000,transparent 70%);
}

/* utilidades */
.mt-0{margin-top:0}.mt-16{margin-top:16px}.mt-24{margin-top:24px}
.muted{color:var(--text-3)}.text-2{color:var(--text-2)}
.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}
.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.ia-text{color:var(--ia)}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:var(--r-full);border:1px solid var(--border);color:var(--text-2)}

/* alerts (mensajes) */
.msgs{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.alert{font-size:13px;font-weight:600;padding:11px 15px;border-radius:var(--r-sm);border:1px solid var(--border)}
.alert.ok{background:var(--success-bg);color:var(--success-light);border-color:transparent}
.alert.bad{background:var(--danger-bg);color:var(--danger-light);border-color:transparent}

/* sparkline */
.spark{width:100%;height:56px;display:block}
.spark-wrap{position:relative}
.spark-lbl{position:absolute;top:0;right:0;font-size:20px;font-weight:800}

/* bloque de salida (consola) */
.console{background:#0a0810;color:#c9d1d9;border:1px solid var(--border);border-radius:var(--r-sm);
  padding:14px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.55;
  white-space:pre-wrap;word-break:break-word;max-height:420px;overflow:auto}

/* login */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{width:100%;max-width:390px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-xl);
  box-shadow:var(--shadow-lg);padding:34px 30px;background-image:var(--gradient-card)}
.login-logo{width:52px;height:52px;border-radius:var(--r-md);background:linear-gradient(135deg,var(--primary-500),var(--primary-700));
  display:grid;place-items:center;color:#fff;font-weight:800;font-size:20px;margin:0 auto 18px;box-shadow:var(--shadow-glow)}
.login-card h1{font-size:20px;font-weight:800;text-align:center}
.login-card p.sub{font-size:12.5px;color:var(--text-3);text-align:center;margin-top:4px;margin-bottom:22px}
.field{margin-bottom:14px}
.field label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.input{width:100%;padding:11px 14px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-1);font-size:14px;font-family:inherit}
.input:focus{outline:none;border-color:var(--primary-500);box-shadow:0 0 0 3px rgba(145,108,174,.18)}
.err{background:var(--danger-bg);color:var(--danger-light);font-size:12.5px;padding:9px 12px;border-radius:var(--r-sm);margin-bottom:14px}
