/* Pantalla de login — sistema visual "Kinetic Routing System" (krs-pantallas/).
   Hoja aparte de style.css a propósito: es la única página que se sirve sin
   sesión y no necesita arrastrar el layout del panel.

   El export de Stitch venía con Tailwind por CDN y utilidades autogeneradas.
   Acá está traducido a CSS propio con tokens, porque el proyecto no tiene
   build step y no vamos a agregar un <script> de CDN solo para estilos. */

:root {
  /* Superficies: capas tonales, más claro = más cerca del usuario */
  --space-cadet: #07151a;
  --surface-container: #142227;
  --surface-bright: #2d3b41;

  /* Contenido */
  --on-surface: #d6e5ec;
  --outline: #91927c;

  /* Acentos de marca */
  --mindaro: #ebff68;
  --chrysler-blue: #4f2cbf;
  --error: #ffb4ab;

  /* Radios y escala de 8px del sistema */
  --radius-md: 0.375rem;
  --radius-lg: 0.5rem;
  --radius-xl: 0.75rem;
  --stack-xs: 4px;
  --stack-sm: 12px;
  --stack-md: 24px;
  --stack-lg: 48px;

  /* Outfit es la tipografía del sistema; el stack de respaldo cubre el caso
     de que Google Fonts no cargue (red del local caída, por ejemplo). */
  --font: 'Outfit', system-ui, -apple-system, 'Segoe UI', sans-serif;
}

* {
  box-sizing: border-box;
}

/* Outfit se usa en pesos livianos; los encabezados vienen en 700 por la hoja
   del navegador y acá se neutralizan. */
h1,
h2,
strong,
b {
  font-weight: 500;
}

.login-body {
  margin: 0;
  min-height: 100vh;
  min-height: 100dvh; /* evita el salto por la barra del navegador móvil */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--stack-md);
  padding: var(--stack-md) 20px;
  position: relative;
  overflow: hidden;
  font-family: var(--font);
  background: var(--space-cadet);
  color: var(--on-surface);
}

/* ─── Halos ambientales ───
   Dan profundidad al fondo sin usar imágenes. `filter: blur` sobre un círculo
   de color es barato y no pide ningún asset. */
.ambient {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
}

.ambient-blue {
  top: -10%;
  right: -5%;
  width: 384px;
  height: 384px;
  background: var(--chrysler-blue);
  opacity: 0.18;
  filter: blur(100px);
}

.ambient-lime {
  bottom: -10%;
  left: -5%;
  width: 320px;
  height: 320px;
  background: var(--mindaro);
  opacity: 0.06;
  filter: blur(80px);
}

/* ─── Tarjeta ─── */
.login-card {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 460px;
  padding: var(--stack-lg) var(--stack-md);
  background: var(--surface-container);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--radius-xl);
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.45);
  overflow: hidden;
}

/* Acento neón en el borde izquierdo: en el sistema marca "nodo activo". */
.card-accent {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: var(--mindaro);
}

.login-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin-bottom: var(--stack-md);
}

.login-logo {
  height: 60px;
  width: auto;
  max-width: 100%;
  object-fit: contain;
  margin-bottom: var(--stack-md);
}

.login-title {
  margin: 0 0 var(--stack-xs);
  font-size: 24px;
  line-height: 32px;
  font-weight: 300;
  letter-spacing: -0.02em;
  color: #fff;
}

.login-business {
  margin: 0;
  padding-top: 2px;
  font-size: 12px;
  font-weight: 500;
  line-height: 16px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--mindaro);
}

/* ─── Frase del día ───
   Es el elemento dominante de la tarjeta, no un pie de página: grande,
   bold e itálica en blanco, como en el diseño de krs-pantallas/. */
.frase-bloque {
  margin: 0 0 var(--stack-lg);
  padding: 0;
}

.frase-comilla {
  /* Centrada sobre la frase: pegada al borde izquierdo se leía como un
     elemento suelto y no como la apertura de la cita. */
  display: block;
  text-align: center;
  font-size: 40px;
  line-height: 0.7;
  font-weight: 400;
  color: rgba(235, 255, 104, 0.35);
  margin-bottom: var(--stack-sm);
}

.frase-del-dia {
  margin: 0;
  text-align: center;
  font-size: 24px;
  line-height: 32px;
  font-style: italic;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: #fff;
  /* Reserva el alto de tres líneas: la frase llega por fetch y sin esto la
     tarjeta daría un salto al aparecer. */
  min-height: 96px;
}

/* ─── Formulario ─── */
.login-form {
  display: flex;
  flex-direction: column;
  gap: var(--stack-md);
}

.field {
  display: flex;
  flex-direction: column;
  gap: var(--stack-xs);
}

.login-label {
  font-size: 12px;
  font-weight: 500;
  line-height: 16px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--outline);
  transition: color 0.2s;
}

.field:focus-within .login-label {
  color: var(--mindaro);
}

.login-form input {
  width: 100%;
  padding: 12px 14px;
  background: var(--surface-bright);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--radius-lg);
  color: var(--on-surface);
  /* 16px evita que iOS haga zoom al enfocar el campo */
  font-size: 16px;
  font-family: inherit;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.login-form input::placeholder {
  color: var(--outline);
}

.login-form input:focus {
  outline: none;
  border-color: var(--mindaro);
  /* El "glow" del sistema: activación digital, no sombra pesada. */
  box-shadow: 0 0 0 3px rgba(235, 255, 104, 0.15);
}

.login-btn {
  padding: 13px;
  border: none;
  border-radius: var(--radius-lg);
  background: var(--mindaro);
  color: var(--space-cadet);
  font-size: 15px;
  font-weight: 700;
  font-family: inherit;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: filter 0.2s, box-shadow 0.2s;
}

.login-btn:hover:not(:disabled) {
  filter: brightness(1.08);
  box-shadow: 0 0 20px rgba(235, 255, 104, 0.2);
}

.login-btn:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

.login-btn:disabled {
  opacity: 0.55;
  cursor: default;
}

.login-error {
  margin: var(--stack-sm) 0 0;
  padding: 10px 12px;
  border: 1px solid rgba(255, 180, 171, 0.35);
  border-radius: var(--radius-md);
  background: rgba(255, 180, 171, 0.1);
  color: var(--error);
  font-size: 14px;
  text-align: center;
}

/* ─── Pie ─── */
.login-footer {
  position: relative;
  z-index: 1;
  text-align: center;
}

.login-footer p {
  margin: 0;
  font-size: 12px;
  color: var(--outline);
}

.login-footer a {
  color: var(--on-surface);
  text-decoration: none;
  border-bottom: 1px solid rgba(235, 255, 104, 0.4);
  transition: color 0.2s, border-color 0.2s;
}

.login-footer a:hover {
  color: var(--mindaro);
  border-bottom-color: var(--mindaro);
}

/* ─── Móvil ───
   El agente puede loguearse desde el celular, así que la tarjeta pasa a ancho
   completo y se aprieta el espaciado vertical para que entre sin scroll. */
@media (max-width: 480px) {
  .login-card {
    padding: var(--stack-md) 20px;
    border-radius: var(--radius-lg);
  }

  .login-logo {
    height: 46px;
  }

  .login-title {
    font-size: 21px;
    line-height: 28px;
  }

  .frase-del-dia {
    font-size: 20px;
    line-height: 28px;
    min-height: 84px;
  }

  .frase-comilla {
    font-size: 32px;
  }
}

/* Los halos son puramente decorativos: con reduced-motion no molestan, pero
   en pantallas muy chicas suman coste de composición sin aportar nada. */
@media (max-width: 380px) {
  .ambient {
    display: none;
  }
}
