/* login.css — estilos del login (PRE-auth), re-estilados para matchear el look de la SPA
 * (tema oscuro del Rojo Command Center).
 *
 * NO puede @import tokens.css: esa hoja vive bajo /app y está gateada por auth, y el login
 * es PRE-auth. Por eso los valores de paleta se HARDCODEAN acá, replicando exactamente los
 * tokens: bg #0d1117, superficie #161b22, borde #30363d, texto #e6edf3/#8b949e, acento
 * #c93c3c/#b83636. Self-contained: la sirve GET /login.css públicamente.
 *
 * ⚠️ DRIFT — esta paleta DUPLICA la de tokens.css (no hay import posible: pre-auth). No hay
 * fuente única de verdad compartida, así que TODO cambio de paleta en tokens.css debe
 * replicarse a mano en este archivo, o el login y la SPA divergen. (Ej.: --accent-hover
 * pasó de #d94f4f a #b83636 en ambos por contraste AA del hover.)
 *
 * CSP endurecida (style-src 'self', sin 'unsafe-inline'): todo el CSS vive en este archivo,
 * sin <style> embebido ni style="..." inline. */

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 1rem;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 1rem;
  line-height: 1.5;
  background: #0d1117;            /* --bg */
  color: #e6edf3;                /* --text */
  -webkit-font-smoothing: antialiased;
}

main { width: min(92vw, 360px); }

form {
  display: grid;
  gap: 1rem;
  padding: 2rem;
  background: #161b22;           /* --surface */
  border: 1px solid #30363d;     /* --border */
  border-radius: 14px;           /* --radius-lg */
  box-shadow: 0 8px 24px rgba(1, 4, 9, 0.5); /* --shadow-md */
}

h1 {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 0.5rem;
  font-size: 1.25rem;            /* --fs-xl */
  font-weight: 600;             /* --fw-semibold */
  line-height: 1.25;
}

/* Campo = label VISIBLE y PERSISTENTE encima del input (no sr-only, no placeholder-only). */
.field { display: flex; flex-direction: column; gap: 0.5rem; }
label {
  font-size: 0.875rem;          /* --fs-sm */
  font-weight: 500;             /* --fw-medium */
  color: #8b949e;               /* --text-dim */
}

input {
  width: 100%;
  padding: 0.75rem 0.75rem; /* alto de target táctil ≥44px (14px texto + 24px padding + 2px borde ≈ 47px) */
  font-family: inherit;
  font-size: 0.875rem;
  color: #e6edf3;
  background: #0d1117;           /* recess sobre la superficie de la card */
  border: 1px solid #30363d;
  border-radius: 6px;            /* --radius-sm */
  transition: border-color 0.15s ease;
}
/* Sin outline:none — el anillo global :focus-visible es el único estilo de foco; acá solo
   se tiñe el borde con el acento (mismo patrón que .input:focus-visible de la SPA). */
input:focus-visible { border-color: #c93c3c; }

button {
  padding: 0.75rem 1rem; /* alto de target táctil ≥44px (15px texto + 24px padding + 2px borde ≈ 48px) */
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 600;
  color: #fff;
  background: #c93c3c;           /* --accent */
  border: 1px solid #c93c3c;
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
button:hover { background: #b83636; border-color: #b83636; } /* --accent-hover (AA #fff 5.80:1) */

/* Foco visible unificado (mismo anillo que la SPA: 2px --focus-ring + offset).
   Espejo de --focus-ring de tokens.css (#d94f4f): anillo CLARO por contraste no-textual ≥3:1,
   distinto del #b83636 del hover del botón. Si cambia --focus-ring, replicar acá. */
:focus-visible {
  outline: 2px solid #d94f4f;
  outline-offset: 2px;
  border-radius: 6px;
}

/* Mensaje de error del login (#err lo llena login.js). Rojo de texto legible sobre oscuro;
   min-height reserva la línea para que el form no salte al aparecer el mensaje. */
#err {
  margin: 0;
  min-height: 1.2em;
  font-size: 0.85rem;
  color: #ff7b72;
}
