/* =========================================================
   INFOP v2 — Pantallas de acceso al panel
   (inicio de sesión, verificación en dos pasos y recuperación)
   ========================================================= */

body.acceso, body.acceso *, body.acceso *::before, body.acceso *::after{ box-sizing:border-box; }
body.acceso{ margin:0; min-height:100vh; background:#f4f6fb; color:var(--ink, #0f172a); font-family:var(--font, 'Nunito', system-ui, sans-serif); }
.acc{ display:grid; grid-template-columns:minmax(380px, 46%) 1fr; min-height:100vh; }

/* ---------- Panel institucional ---------- */
.acc-lado{
  position:relative; overflow:hidden; color:#fff;
  display:flex; flex-direction:column; justify-content:space-between; gap:32px;
  padding:36px 44px;
  background:
    radial-gradient(circle at 18% 12%, rgba(255,255,255,.10) 0, rgba(255,255,255,0) 42%),
    radial-gradient(circle at 92% 88%, rgba(200,162,74,.22) 0, rgba(200,162,74,0) 45%),
    linear-gradient(155deg, #0b2f7a 0%, #16326b 45%, #0d3b99 100%);
}
/* Trama de puntos muy suave */
.acc-lado::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.18;
  background-image:radial-gradient(rgba(255,255,255,.55) 1px, transparent 1.2px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(180deg, #000 0%, transparent 75%); mask-image:linear-gradient(180deg, #000 0%, transparent 75%);
}
/* Franja dorada institucional */
.acc-lado::after{ content:""; position:absolute; top:0; right:0; width:5px; height:100%; background:linear-gradient(180deg, #c8a24a, #e6c97a 50%, #c8a24a); }
.acc-lado > *{ position:relative; }
.acc-lado__marca{ align-self:flex-start; }
.acc-lado__marca img{ display:block; height:68px; width:auto; max-width:100%; }
.acc-lado__centro{ max-width:460px; }
.acc-lado__emblema{ display:inline-block; margin-bottom:24px; }
.acc-lado__emblema img{ display:block; height:104px; width:auto; filter:drop-shadow(0 10px 22px rgba(0,0,0,.35)); }
.acc-lado h1{ margin:0 0 12px; font-size:32px; line-height:1.18; font-weight:900; letter-spacing:-.3px; }
.acc-lado p{ margin:0 0 26px; font-size:16px; line-height:1.55; color:#c9d8f7; }
.acc-lado__lista{ list-style:none; margin:0; padding:0; display:grid; gap:14px; }
.acc-lado__lista li{ display:flex; align-items:center; gap:12px; font-size:15px; font-weight:700; color:#eef3ff; }
.acc-lado__lista span{ width:36px; height:36px; border-radius:10px; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.18);
                       display:inline-flex; align-items:center; justify-content:center; color:#e6c97a; flex:0 0 auto; }
.acc-lado__pie{ font-size:12.5px; color:#9fb4e3; }

/* ---------- Zona del formulario ---------- */
.acc-main{ display:flex; flex-direction:column; align-items:center; justify-content:center; padding:40px 24px; gap:18px;
           background:radial-gradient(circle at 80% 0%, #e3ecfa 0, rgba(227,236,250,0) 50%), #f4f6fb; }
.acc-caja{ width:100%; max-width:440px; background:#fff; border:1px solid #e2e8f0; border-radius:22px; padding:36px 34px;
           box-shadow:0 24px 60px rgba(22,50,107,.12); }
.acc-caja > .alert{ margin-bottom:18px; }
/* Fila superior de la tarjeta: ícono de la pantalla y logo del Gobierno + INFOP */
.acc-caja__cab{ display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:20px; }
.acc-caja__cab .acc-icono{ margin:0; flex:0 0 auto; }
.acc-caja__marca{ display:block; height:46px; width:auto; max-width:calc(100% - 72px); object-fit:contain; }
.acc-legal{ margin:0; max-width:440px; text-align:center; font-size:12px; color:#94a3b8; }
.acc-legal i{ color:#c8a24a; margin-right:4px; }

/* Encabezado de la tarjeta */
.acc-icono{ width:58px; height:58px; border-radius:16px; display:flex; align-items:center; justify-content:center; font-size:24px;
            background:#e3ecfa; color:#16326b; margin-bottom:18px; }
.acc-icono--ok{ background:#dcfce7; color:#15803d; }
.acc-icono--aviso{ background:#ffedd5; color:#c2410c; }
.acc-titulo{ margin:0 0 6px; font-size:26px; font-weight:900; color:#0f172a; letter-spacing:-.2px; }
.acc-sub{ margin:0 0 26px; font-size:14.5px; line-height:1.55; color:#64748b; }
.acc-sub strong{ color:#334155; }

/* Campos con ícono */
.acc-etiqueta{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; font-size:13.5px; font-weight:800; color:#334155; margin-bottom:7px; }
.acc-etiqueta a{ font-size:13px; font-weight:800; }
.acc-campo{ position:relative; margin-bottom:18px; }
.acc-campo > i{ position:absolute; left:16px; top:50%; transform:translateY(-50%); color:#94a3b8; font-size:15px; pointer-events:none; transition:color .15s; }
.acc-campo input{
  width:100%; height:50px; padding:0 16px 0 46px; border:1px solid #cbd5e1; border-radius:12px; background:#fff;
  font-family:inherit; font-size:15px; color:#0f172a; transition:border-color .15s, box-shadow .15s;
}
.acc-campo input::placeholder{ color:#a0aec0; }
.acc-campo input:focus{ outline:none; border-color:#2b62b9; box-shadow:0 0 0 4px rgba(43,98,185,.14); }
.acc-campo:focus-within > i{ color:#2b62b9; }
.acc-campo--clave input{ padding-right:50px; }
.acc-ojo{ position:absolute; right:6px; top:50%; transform:translateY(-50%); width:40px; height:40px; border:0; background:transparent;
          border-radius:10px; color:#64748b; cursor:pointer; font-size:15px; }
.acc-ojo:hover{ background:#f1f5f9; color:#0f172a; }
.acc-ayuda{ margin:-10px 0 16px; font-size:12.5px; color:#64748b; }

/* Medidor de seguridad de la contraseña */
.acc-fuerza{ display:grid; grid-template-columns:repeat(4, 1fr); gap:5px; margin:-8px 0 6px; }
.acc-fuerza span{ height:5px; border-radius:99px; background:#e2e8f0; transition:background .2s; }
.acc-fuerza__txt{ font-size:12.5px; color:#64748b; margin:0 0 16px; min-height:17px; }
.acc-reglas{ list-style:none; margin:-6px 0 18px; padding:0; display:grid; gap:4px; font-size:12.5px; color:#64748b; }
.acc-reglas li i{ width:16px; color:#cbd5e1; }
.acc-reglas li.ok{ color:#15803d; }
.acc-reglas li.ok i{ color:#16a34a; }

/* Botón principal y enlaces */
.acc-btn{
  width:100%; height:52px; display:inline-flex; align-items:center; justify-content:center; gap:10px; margin-top:6px;
  border:0; border-radius:12px; cursor:pointer; color:#fff; font-family:inherit; font-size:16px; font-weight:800;
  background:linear-gradient(135deg, #1e438b, #2b62b9); box-shadow:0 10px 24px rgba(35,79,159,.30);
  transition:transform .12s, box-shadow .15s, filter .15s;
}
.acc-btn, .acc-btn:hover{ text-decoration:none; }
.acc-btn:hover{ filter:brightness(1.06); box-shadow:0 14px 30px rgba(35,79,159,.36); }
.acc-btn:active{ transform:translateY(1px); }
.acc-btn[disabled]{ opacity:.75; cursor:progress; }
.acc-btn--secundario{ background:#fff; color:#1e438b; border:1px solid #cbd5e1; box-shadow:none; }
.acc-separador{ display:flex; align-items:center; gap:12px; margin:22px 0 16px; font-size:12px; color:#94a3b8; text-transform:uppercase; letter-spacing:.6px; }
.acc-separador::before, .acc-separador::after{ content:""; flex:1; height:1px; background:#e2e8f0; }
.acc-pie{ margin-top:22px; text-align:center; font-size:14px; color:#64748b; }
.acc-pie a{ font-weight:800; }
.acc-seguro{ display:flex; align-items:center; justify-content:center; gap:8px; margin-top:20px; font-size:12.5px; color:#64748b; }
.acc-seguro i{ color:#16a34a; }

/* Compatibilidad con la pantalla de verificación en dos pasos (usa estas clases) */
.acc-caja .title{ font-size:24px; font-weight:900; color:#0f172a; text-align:center; margin-bottom:8px; }
.acc-caja .subtitle{ font-size:14px; line-height:1.55; color:#64748b; text-align:center; margin-bottom:22px; }
.acc-caja label:not(.acc-etiqueta){ display:block; font-size:13.5px; font-weight:800; color:#334155; margin-bottom:7px; }
.acc-caja .btn{ width:100%; height:52px; border:0; border-radius:12px; cursor:pointer; color:#fff; font-family:inherit; font-size:16px; font-weight:800;
                background:linear-gradient(135deg, #1e438b, #2b62b9); box-shadow:0 10px 24px rgba(35,79,159,.30); }
.acc-caja .copyright{ margin-top:18px; text-align:center; font-size:12.5px; color:#94a3b8; line-height:1.5; }
.acc-caja .alert{ margin-bottom:16px; }

/* ---------- Responsive ---------- */
@media (max-width:980px){
  .acc{ grid-template-columns:1fr; }
  .acc-lado{ display:none; }
  .acc-main{ justify-content:flex-start; padding:28px 16px 32px; }
}
@media (max-width:480px){
  .acc-caja{ padding:26px 20px; border-radius:18px; }
  .acc-titulo{ font-size:23px; }
  .acc-caja__marca{ height:38px; }
  .acc-icono{ width:50px; height:50px; font-size:21px; border-radius:14px; }
}
@media (prefers-reduced-motion:reduce){ .acc-btn, .acc-campo input{ transition:none; } }
