/* ============================================================================
   Auth en el shell nuevo (flag `auth_shell`). Se carga DESPUÉS de
   seia-suite.css y depende de sus tokens: acá no se declara ningún color.

   Todo va scopeado bajo `.auth-page` a propósito. seia-suite.css scopea sus
   reglas bajo `.seia-suite` (`.seia-suite a` = 0,1,1 · `.seia-suite .btn` =
   0,2,0), así que una regla de UNA clase pierde contra ellas por especificidad
   sin importar el orden de los archivos — es exactamente lo que dejó el CTA del
   landing blanco sobre blanco. Con `.auth-page .x` (0,2,0) el enlace gana.
   ============================================================================ */

.auth-page {
  /* Focus ring del DS §2.5: anillo blanco interior + teal-700 sólido (5:1).
     La versión vieja de auth (rgba teal-400 α0.12) daba ~1.6:1 sobre blanco y
     no pasaba el 3:1 mínimo de WCAG 2.1 AA para componentes de UI. */
  --shadow-focus: 0 0 0 2px #fff, 0 0 0 4px var(--teal-700);
  /* Ancho de la tarjeta. `register` lo sube a 460 (tiene una fila de dos
     columnas); el resto se queda en 420, igual que hoy. */
  --auth-w: 420px;
}

/* Sin modo oscuro (DS §1.4 lo posterga a v1.1). Los templates viejos traían un
   bloque `prefers-color-scheme` propio que ninguna otra pantalla del sitio
   respeta: en un equipo con el sistema en oscuro, /login era la única página
   negra de ambi. */

/* `hidden` explícito: varios de los bloques que se esconden son contenedores
   flex/grid, y una regla de `display` propia se le impondría al atributo. */
.auth-page [hidden] { display: none !important; }

.auth-page .auth-wrap {
  min-height: calc(100vh - 48px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 16px 56px;
}

.auth-page .auth-card {
  width: 100%;
  max-width: var(--auth-w);
  background: var(--surface);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-lg);
  padding: 28px 26px;
}
.auth-page .auth-card--wide { --auth-w: 460px; }

/* ---- Bloque de apertura: eyebrow + título + sub + accent-line (DS §3.13) ---
   El mismo gesto con el que abren las fichas y los listados de la suite. Es lo
   que hace que /login se lea como una pantalla de ambi y no como un formulario
   genérico. */
.auth-page .auth-head { margin-bottom: var(--space-5); }
.auth-page .auth-head .eyebrow { display: block; }
.auth-page .auth-head h1 {
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 600;
  line-height: 1.2;
  color: var(--ink-1);
  margin: 0 0 2px;
}
.auth-page .auth-head p {
  font-size: 13.5px;
  color: var(--ink-3);
  line-height: 1.5;
  margin: 0;
}
.auth-page .auth-head::after {
  content: "";
  display: block;
  width: 56px;
  height: 2px;
  background: var(--teal-600);
  margin-top: 10px;
}

/* ---- Campos (DS §3.2 + §3.29) ------------------------------------------- */
.auth-page .auth-fields { display: flex; flex-direction: column; gap: 14px; }
.auth-page .auth-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.auth-page .auth-field label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--ink-4);
  margin-bottom: 5px;
}
.auth-page .auth-field input,
.auth-page .auth-field select {
  width: 100%;
  height: 40px;
  padding: 0 12px;
  border: 1px solid var(--hairline-strong);
  border-radius: var(--radius-md);
  font-family: var(--font-sans);
  font-size: 13.5px;
  color: var(--ink-1);
  background: var(--surface);
}
.auth-page .auth-field input::placeholder { color: var(--ink-5); }
.auth-page .auth-field input:focus,
.auth-page .auth-field select:focus {
  outline: none;
  border-color: var(--teal-600);
  box-shadow: var(--shadow-focus);
}
/* Email prellenado y bloqueado en /forgot-password con sesión abierta. */
.auth-page .auth-field input[readonly] {
  background: var(--surface-muted);
  color: var(--ink-4);
  cursor: default;
}

/* ---- Checkbox + su línea de texto ---------------------------------------- */
.auth-page .auth-check {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  font-size: 12.5px;
  color: var(--ink-3);
  line-height: 1.45;
}
.auth-page .auth-check input {
  width: 15px;
  height: 15px;
  margin: 1px 0 0;
  flex-shrink: 0;
  accent-color: var(--teal-700);
}
.auth-page .auth-check input:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.auth-page .auth-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.auth-page .auth-row .auth-link { font-size: 12.5px; }

/* ---- Enlaces ------------------------------------------------------------- */
.auth-page .auth-link {
  color: var(--teal-700);
  font-weight: 500;
  text-decoration: none;
}
.auth-page .auth-link:hover { text-decoration: underline; }
.auth-page .auth-alt {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--hairline);
  font-size: 12.5px;
  color: var(--ink-4);
  text-align: center;
}

/* ---- Botón de envío ------------------------------------------------------
   Reusa `.btn.btn-primary` de seia-suite.css; acá solo el ancho completo y la
   altura 44 del size `lg` (DS §3.1) que corresponde a la acción principal de la
   pantalla. Tres clases (0,3,0) para no depender del orden de carga. */
.auth-page .btn.btn-block {
  width: 100%;
  height: 44px;
  justify-content: center;
  font-size: 13.5px;
  font-weight: 600;
}
/* El hover va acotado a `.btn-primary`, NO a `.btn`. `.auth-page .btn:hover`
   (0,3,0) le gana a `.seia-suite .btn-ghost` (0,2,0), así que también pintaba
   de teal-800 los botones fantasma de la topbar ("Iniciar sesión", "Mi
   cuenta"): texto `--ink-3` sobre teal oscuro, ~1.2:1, el rótulo desaparecía.
   El focus ring sí aplica a los dos: ahí no hay conflicto de color. */
.auth-page .btn-primary:hover { background: var(--teal-800); }
.auth-page .btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.auth-page .btn[disabled] { opacity: 0.5; cursor: not-allowed; }
.auth-page .btn-primary[disabled]:hover { background: var(--teal-700); }
.auth-page .auth-spin {
  width: 15px;
  height: 15px;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: auth-spin 620ms linear infinite;
}
/* El de /verify va dentro del círculo teal claro, no sobre el botón. */
.auth-page .auth-spin--ink {
  width: 20px;
  height: 20px;
  border-color: var(--teal-200);
  border-top-color: var(--teal-700);
}
@keyframes auth-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .auth-page .auth-spin { animation-duration: 2s; }
}

/* ---- Mensajes inline -----------------------------------------------------
   Misma forma que `.me-modal-error` de mi-espacio (danger-700 sobre danger-50).
   NO es el toast de §3.9: el toast es una notificación efímera de la esquina, y
   esto es el resultado del envío, que tiene que quedarse en pantalla. */
.auth-page .auth-error {
  font-size: 12.5px;
  line-height: 1.5;
  border-radius: var(--radius-md);
  padding: 9px 12px;
  margin-bottom: 14px;
  color: var(--danger-700);
  background: var(--danger-50);
  border: 1px solid #fecaca;
}

/* ---- Pantalla de resultado (verificación, alta creada, clave cambiada) ----
   Círculo + título serif + texto, la misma forma del éxito del waiting list
   wall (`.wl-check`), que es el patrón de confirmación del shell nuevo. */
.auth-page .auth-result { text-align: center; padding: 4px 0 2px; }
.auth-page .auth-result-ico {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 14px;
  background: var(--teal-50);
  color: var(--teal-700);
  border: 1px solid var(--teal-200);
}
.auth-page .auth-result-ico.is-ok {
  background: var(--success-50);
  color: var(--success-600);
  border-color: #bbf7d0;
}
.auth-page .auth-result-ico.is-error {
  background: var(--danger-50);
  color: var(--danger-700);
  border-color: #fecaca;
}
.auth-page .auth-result h2 {
  font-family: var(--font-serif);
  font-size: 19px;
  font-weight: 600;
  color: var(--ink-1);
  margin: 0 0 6px;
}
.auth-page .auth-result p {
  font-size: 13px;
  color: var(--ink-3);
  line-height: 1.55;
  margin: 0 0 4px;
}
.auth-page .auth-result .auth-fine { font-size: 12px; color: var(--ink-4); }
.auth-page .auth-result-actions {
  margin-top: 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 9px;
  font-size: 13px;
}

/* ---- 390px ---------------------------------------------------------------
   El shell trae `.topbar-search`, pero acá no se pone: los botones de sesión no
   dejan espacio bajo 640px y el campo queda en un muñón de ~46px con solo la
   lupa. En una pantalla de login tampoco tiene función. */
@media (max-width: 560px) {
  .auth-page .auth-wrap { padding: 24px 14px 40px; align-items: flex-start; }
  .auth-page .auth-card { padding: 22px 18px; }
  .auth-page .auth-grid { grid-template-columns: 1fr; }
  .auth-page .auth-head h1 { font-size: 21px; }
}
