:root{
  --bg:#faf8f6;
  --navy:#0B3A8F;
  --text:#0B3A8F;
  --muted:#5E6B85;
  --primary:#1E73E8;
  --accent:#F4C20D;
  --danger:#E5252A;
  --danger-soft:#FBEAEA;
  --line:#E1E7F2;
}

*{box-sizing:border-box}
body{
  margin:0;
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    linear-gradient(180deg, rgba(255,255,255,.05), transparent 24%),
    linear-gradient(160deg,#0B3A8F 0%,#0A2E70 55%,#071F4D 100%);
  font-family:Arial,Helvetica,sans-serif;
  padding:20px;
}

.login-shell{width:100%;max-width:700px;display:flex;justify-content:center;align-items:stretch;gap:20px}

.login-card{
  width:100%;
  max-width:380px;
  background:#fff;
  border-radius:20px;
  box-shadow:0 24px 70px rgba(7,31,77,.35);
  padding:36px 32px 32px;
}

.login-brand{text-align:center;margin-bottom:26px}
.crest{
  width:96px;height:96px;
  margin:0 auto 14px;
  border-radius:20px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,var(--navy),var(--primary));
  color:var(--accent);font-weight:700;font-size:22px;
  font-family:Arial,Helvetica,sans-serif;
  overflow:hidden;
}
.crest img{width:100%;height:100%;object-fit:contain}
.crest i{font-size:40px}

/* Tarjeta lateral decorativa: mismo degradado que la barra lateral de la
   app (login.php se ve antes de autenticar, fuera de esa página), con el
   logo de Shellbit arriba y los mismos "trazos" (montañas/edificio/sol) que
   aparecen al pie del menú lateral, para que el branding sea consistente
   entre el login y el resto de la aplicación. */
.login-side-card{
  position:relative;
  overflow:hidden;
  flex-shrink:0;
  width:260px;
  border-radius:20px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.05), transparent 24%),
    linear-gradient(160deg,#0B3A8F 0%,#0A2E70 55%,#071F4D 100%);
  box-shadow:0 24px 70px rgba(7,31,77,.35);
  display:flex;
  flex-direction:column;
}
.login-side-brand{
  text-align:center;
  padding:36px 24px 0;
  position:relative;
  z-index:1;
}
.login-side-brand img{width:84px;height:84px;object-fit:contain;margin:0 auto 12px;display:block}
.login-side-brand p{
  color:rgba(255,255,255,.75);
  font-size:11.5px;
  line-height:1.5;
  margin:0;
}

.login-side-subbrand{
  text-align:center;
  padding:18px 24px 0;
  margin:18px 20px 0;
  border-top:1px solid rgba(255,255,255,.15);
  position:relative;
  z-index:1;
}
.login-side-subbrand img{width:130px;height:130px;object-fit:contain;margin:0 auto 10px;display:block}
.login-side-subbrand h2{
  color:#fff;
  font-size:16px;
  font-family:Arial,Helvetica,sans-serif;
  margin:0 0 4px;
}
.login-side-subbrand p{
  color:rgba(255,255,255,.7);
  font-size:10px;
  line-height:1.4;
  margin:0;
}

.sidebar-art{
  position:absolute;
  bottom:-2px;
  left:0;
  right:0;
  height:185px;
  opacity:.92;
  pointer-events:none;
}
.sidebar-art svg{
  fill:none;
  stroke-width:1.3;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.art-mountain-back{stroke:rgba(255,255,255,.3)}
.art-mountain-front{stroke:var(--accent);stroke-width:1.5}
.art-building{stroke:#fff}
.art-roof{stroke:var(--danger);stroke-width:1.6}
.art-door{stroke:#fff;opacity:.85}
.art-trunk{stroke:rgba(255,255,255,.55)}
.art-flag{stroke:var(--accent)}
.art-sun{
  stroke:var(--accent);
  stroke-width:1.6;
  transform-origin:28px 128px;
  animation:artSunPulse 3.2s ease-in-out infinite;
}
@keyframes artSunPulse{
  0%,100%{opacity:.6;stroke-width:1.4}
  50%{opacity:1;stroke-width:2}
}
@media (prefers-reduced-motion:reduce){
  .art-sun{animation:none}
}

@media (max-width:760px){
  .login-side-card{display:none}
}
.login-brand h1{
  font-family:Arial,Helvetica,sans-serif;
  color:var(--navy);
  font-size:24px;
  margin:0 0 4px;
}
.login-brand p{
  color:var(--muted);
  font-size:12px;
  margin:0;
}

.login-alert{
  display:flex;
  align-items:center;
  gap:10px;
  background:var(--danger-soft);
  color:var(--danger);
  border:1px solid #F6C6C7;
  border-radius:10px;
  padding:10px 14px;
  font-size:12.5px;
  margin-bottom:18px;
}
.login-alert i{font-size:15px;flex-shrink:0}

.politica-shell{max-width:960px}
.politica-card{max-width:880px}
.politica-texto{
  max-height:320px;
  overflow-y:auto;
  border:1px solid var(--line);
  border-radius:12px;
  padding:14px 16px;
  margin-bottom:18px;
  background:var(--bg);
}
.politica-texto p{
  font-size:12px;
  line-height:1.55;
  color:var(--text);
  margin:0 0 12px;
}
.politica-texto p:last-child{margin-bottom:0}
.politica-card label.politica-check{
  display:flex;
  align-items:flex-start;
  gap:10px;
  font-size:12px;
  font-weight:400;
  color:var(--text);
  margin-top:0;
  cursor:pointer;
}
.politica-check input[type="checkbox"]{
  width:16px;
  height:16px;
  margin-top:2px;
  flex-shrink:0;
}

.politica-autoriza{
  margin-top:16px;
  padding:14px 16px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg);
}
.politica-autoriza p{
  font-size:12px;
  font-weight:600;
  color:var(--navy);
  margin:0 0 10px;
}
.politica-card label.politica-radio{
  display:flex;
  align-items:center;
  gap:9px;
  font-size:12px;
  font-weight:400;
  color:var(--text);
  margin-top:8px;
  cursor:pointer;
}
.politica-autoriza label.politica-radio:first-of-type{margin-top:0}
.politica-radio input[type="radio"]{
  width:16px;
  height:16px;
  flex-shrink:0;
}
.politica-logout{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  margin-top:16px;
  font-size:11.5px;
  color:var(--muted);
  text-decoration:none;
}
.politica-logout:hover{color:var(--danger)}

.login-form{display:flex;flex-direction:column;gap:6px}
.login-form label{
  display:flex;
  align-items:center;
  gap:7px;
  font-size:11.5px;
  font-weight:600;
  color:var(--navy);
  margin-top:12px;
}
.login-form label i{color:var(--primary);font-size:13px}
.login-form input{
  height:44px;
  border:1px solid var(--line);
  border-radius:10px;
  padding:0 14px;
  font-size:13.5px;
  font-family:inherit;
  color:var(--navy);
  outline:none;
  transition:.15s ease;
}
.login-form input:focus{
  border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(30,115,232,.15);
}

.login-password-row{display:flex;gap:8px}
.login-password-row input{flex:1;min-width:0}
.login-password-row button{
  width:44px;height:44px;flex-shrink:0;
  display:grid;place-items:center;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fff;
  color:var(--muted);
  font-size:15px;
  cursor:pointer;
  transition:.15s ease;
}
.login-password-row button:hover{color:var(--primary);border-color:var(--primary)}

.login-submit{
  margin-top:22px;
  height:46px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  border:0;
  border-radius:24px;
  background:linear-gradient(90deg,#1E73E8,#155ACB);
  color:#fff;
  font-size:13px;
  font-weight:600;
  cursor:pointer;
  transition:.15s ease;
}
.login-submit:hover{filter:brightness(1.06)}
.login-submit:disabled{cursor:default;filter:brightness(.92)}
.login-submit.is-loading::before{
  content:"";
  width:14px;height:14px;
  border-radius:50%;
  border:2px solid rgba(255,255,255,.4);
  border-top-color:#fff;
  animation:login-spin .7s linear infinite;
}
@keyframes login-spin{to{transform:rotate(360deg)}}
