*{
  margin:0;
  padding:0;
  box-sizing:border-box;
}

:root{
  --verde:#0b7d3b;
  --verde-oscuro:#075b2a;
  --verde-claro:#e8f6ee;
  --texto:#172033;
  --muted:#667085;
  --borde:#dbe7df;
}

body{
  min-height:100vh;
  font-family:'Montserrat',sans-serif;
  color:var(--texto);
  background:
    radial-gradient(circle at 18% 18%, rgba(11,125,59,.16), transparent 28%),
    radial-gradient(circle at 82% 12%, rgba(11,125,59,.12), transparent 25%),
    linear-gradient(135deg,#f3f8f5,#e8f1eb);
  display:flex;
  justify-content:center;
  align-items:center;
  padding:24px;
}

.login-wrapper{
  width:100%;
  display:flex;
  justify-content:center;
  align-items:center;
}

.login-card{
  width:min(100%,470px);
  background:rgba(255,255,255,.94);
  border:1px solid rgba(255,255,255,.75);
  border-radius:30px;
  padding:38px;
  box-shadow:0 24px 70px rgba(15,23,42,.14);
  text-align:center;
  backdrop-filter:blur(10px);
}

.login-brand{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  margin-bottom:20px;
}

.login-logo{
  width:145px;
  height:auto;
}

.login-pill{
  display:inline-flex;
  align-items:center;
  padding:7px 11px;
  border-radius:999px;
  background:var(--verde-claro);
  color:var(--verde-oscuro);
  font-size:12px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.06em;
}

.login-card h1{
  color:var(--verde);
  font-size:2.15rem;
  line-height:1.1;
  margin-bottom:12px;
}

.login-text{
  color:var(--muted);
  margin:0 auto 28px;
  line-height:1.55;
  max-width:340px;
}

.form-group{
  text-align:left;
  margin-bottom:16px;
}

.form-group label{
  display:block;
  margin-bottom:8px;
  font-size:14px;
  font-weight:800;
  color:#1f2937;
}

.input-shell{
  position:relative;
  display:flex;
  align-items:center;
}

.input-shell > i{
  position:absolute;
  left:16px;
  color:#7a8a80;
  pointer-events:none;
}

.input-shell input{
  width:100%;
  padding:15px 48px;
  border:1px solid var(--borde);
  border-radius:15px;
  background:#fbfdfc;
  color:var(--texto);
  font-size:1rem;
  transition:.2s ease;
}

.input-shell input:focus{
  outline:none;
  border-color:var(--verde);
  box-shadow:0 0 0 4px rgba(11,125,59,.12);
  background:#fff;
}

.btn-password{
  position:absolute;
  right:8px;
  width:38px;
  height:38px;
  border:0;
  border-radius:12px;
  background:transparent;
  color:#64748b;
  cursor:pointer;
}

.btn-password:hover{
  background:#eef7f1;
  color:var(--verde);
}

.login-options{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:6px 0 22px;
}

.remember-check{
  display:flex;
  align-items:center;
  gap:9px;
  color:#475569;
  font-size:13px;
  font-weight:600;
  text-align:left;
  cursor:pointer;
}

.remember-check input{
  width:17px;
  height:17px;
  accent-color:var(--verde);
}

.btn-login{
  width:100%;
  border:none;
  background:linear-gradient(135deg,var(--verde),#0aa34f);
  color:white;
  padding:16px;
  border-radius:16px;
  font-size:1rem;
  font-weight:800;
  cursor:pointer;
  transition:.2s ease;
  box-shadow:0 12px 24px rgba(11,125,59,.22);
}

.btn-login:hover{
  transform:translateY(-2px);
  box-shadow:0 16px 32px rgba(11,125,59,.28);
}

.btn-login i{
  margin-right:8px;
}

#mensaje{
  margin-top:18px;
  min-height:22px;
  color:#b42318;
  font-size:.92rem;
  font-weight:700;
}

.portal-request{
  margin-top:22px;
  padding-top:20px;
  border-top:1px solid #e7eee9;
}

.portal-text{
  margin-bottom:12px;
  font-size:14px;
  color:var(--muted);
  line-height:1.45;
}

.btn-portal-request{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  width:100%;
  background:#f0f8f3;
  color:var(--verde-oscuro);
  text-decoration:none;
  padding:14px;
  border:1px solid #cae8d4;
  border-radius:16px;
  font-weight:800;
  transition:.2s ease;
}

.btn-portal-request:hover{
  background:#dff4e7;
  transform:translateY(-1px);
}

.login-links{
  margin-top:22px;
}

.login-links a{
  color:var(--verde);
  text-decoration:none;
  font-weight:800;
  font-size:14px;
}

.login-links a:hover{
  text-decoration:underline;
}

@media(max-width:560px){
  body{
    padding:14px;
    align-items:flex-start;
  }

  .login-card{
    padding:28px 22px;
    border-radius:24px;
  }

  .login-brand{
    flex-direction:column;
    gap:8px;
  }

  .login-logo{
    width:135px;
  }

  .login-card h1{
    font-size:1.8rem;
  }
}
