/* Universidad James Gosling | Login v4 | independiente del CSS anterior */
*{box-sizing:border-box}html,body{margin:0;min-height:100%;}body{font-family:Inter,system-ui,-apple-system,'Segoe UI',Arial,sans-serif;background:#06152f;color:#fff}button,input{font:inherit}button{cursor:pointer}.login-shell{display:grid;grid-template-columns:minmax(0,60%) minmax(360px,40%);min-height:100svh}.brand-panel{position:relative;isolation:isolate;min-height:100svh;overflow:hidden;padding:clamp(30px,4.7vw,72px) clamp(28px,6vw,105px);background:radial-gradient(ellipse at 57% 62%,#174782 0%,transparent 62%),linear-gradient(135deg,#061a3b 0%,#092b5d 57%,#05162f 100%)}.brand-panel:before{content:'';position:absolute;inset:-30% -20% auto 55%;height:70%;transform:rotate(-38deg);background:linear-gradient(90deg,transparent,#0967e9 25%,#0e3d82 50%,transparent 80%);opacity:.45;z-index:-1}.brand-panel:after{content:'';position:absolute;left:-17%;bottom:-27%;width:85%;height:45%;border:clamp(18px,3vw,42px) solid #ec6c29;border-right-color:transparent;border-top-color:transparent;border-radius:50%;transform:rotate(-13deg);opacity:.78;z-index:-1}.brand-content{position:relative;z-index:2;max-width:790px}.brand-lockup{display:flex;align-items:center;gap:22px;margin-bottom:clamp(36px,5vh,66px)}.brand-logo{width:clamp(92px,11vw,152px);height:auto;object-fit:contain}.brand-name{display:flex;flex-direction:column;line-height:1.05}.brand-name span{font-size:clamp(20px,2vw,31px);font-weight:350}.brand-name strong{font-size:clamp(32px,3.5vw,57px);letter-spacing:-.045em}.brand-name small{font-size:clamp(10px,1vw,15px);letter-spacing:.39em;margin-top:12px}.brand-panel h1{margin:0;font-size:clamp(34px,3.6vw,61px);line-height:1.12;letter-spacing:-.04em;font-weight:800;max-width:900px}.brand-panel h1 em{color:#ff762e;font-style:italic}.orange-rule{width:70px;height:6px;border-radius:9px;background:#ff762e;margin:22px 0 16px}.brand-description{font-size:clamp(16px,1.22vw,21px);line-height:1.5;color:#e5efff;max-width:670px;margin:0}.graduates-photo{position:absolute;z-index:1;bottom:-2px;left:0;width:100%;height:58%;background-image:url('/assets/img/graduados-campus.webp');background-size:100% auto;background-repeat:no-repeat;background-position:center bottom;pointer-events:none}.form-panel{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100svh;padding:115px clamp(22px,3.6vw,65px) 25px;background:linear-gradient(145deg,#07172f,#0b254f 95%)}.form-panel:before{content:'';position:absolute;right:-35%;bottom:-20%;width:90%;height:55%;border:35px solid rgba(14,107,247,.18);border-radius:50%;transform:rotate(-26deg);pointer-events:none}.login-card{position:relative;width:100%;max-width:560px;padding:clamp(26px,3vw,48px);border:1px solid #6595c5;border-radius:34px;background:linear-gradient(155deg,rgba(30,66,113,.86),rgba(9,28,60,.95));box-shadow:0 25px 60px rgba(0,0,0,.28);backdrop-filter:blur(15px)}.login-heading{text-align:center;margin-bottom:34px}.login-badge{font-size:12px;letter-spacing:.34em;font-weight:700;color:#d6e5ff}.login-heading h2{font-size:clamp(35px,3.4vw,53px);letter-spacing:-.035em;margin:10px 0 13px;line-height:1.1}.login-heading h2:after{content:'';display:block;width:66px;height:5px;border-radius:6px;background:#ff792f;margin:17px auto 0}.login-heading p{color:#d9e8ff;font-size:15px;margin:0}.field-group{margin-bottom:22px}.field-group label{display:block;font-weight:700;font-size:14px;margin-bottom:9px}.label-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.input-wrap{display:flex;align-items:center;position:relative;min-height:57px;border:1.5px solid #a7bdd7;border-radius:12px;background:rgba(255,255,255,.045);transition:border-color .2s,box-shadow .2s}.input-wrap:focus-within{border-color:#61b5ff;box-shadow:0 0 0 3px rgba(56,151,245,.2)}.input-icon{display:grid;place-items:center;width:52px;flex:none;color:#c4d8ef}.input-icon svg,.password-toggle svg,.help-icon svg,.btn-arrow,.alert svg{width:21px;height:21px}.input-wrap input{min-width:0;width:100%;height:55px;border:0;outline:0;background:transparent;color:#fff;padding:0 15px 0 0}.input-wrap input::placeholder{color:#b9c9e1}.password-toggle{display:grid;place-items:center;flex:none;width:48px;height:52px;background:transparent;color:#bcd3ee;border:0}.password-toggle .eye-closed{display:none}.password-toggle.is-visible .eye-closed{display:block}.password-toggle.is-visible .eye-open{display:none}.caps-warning{display:none;font-size:11px;color:#ffd8a8}.caps-warning.show{display:block}.submit-btn{display:flex;align-items:center;justify-content:center;gap:15px;width:100%;min-height:64px;margin-top:27px;border:0;border-radius:13px;background:linear-gradient(105deg,#2467ed,#078dff);color:white;font-weight:750;font-size:19px;box-shadow:0 8px 26px #005bd344}.submit-btn:hover{filter:brightness(1.08)}.submit-btn:disabled{opacity:.8;cursor:wait}.btn-loader{display:none;width:17px;height:17px;border:2px solid #ffffff80;border-top-color:white;border-radius:50%;animation:spin .8s linear infinite}.is-loading .btn-loader{display:block}.is-loading .btn-arrow{display:none}@keyframes spin{to{transform:rotate(360deg)}}.login-help{display:flex;align-items:center;gap:14px;padding:18px;margin-top:32px;border:1px solid #5b84b1;border-radius:15px;background:rgba(255,255,255,.035)}.help-icon{display:grid;place-items:center;flex:none;width:36px;height:36px;color:#d7e9ff}.login-help strong,.login-help span{display:block}.login-help strong{font-size:14px}.login-help span{font-size:12px;line-height:1.45;margin-top:4px;color:#d2e0f3}.login-benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:26px;text-align:center}.login-benefits>div{font-size:12px;padding:3px 9px;line-height:1.4;color:#e2eeff}.login-benefits>div+div{border-left:1px solid #6a88ad}.login-benefits span{display:block;font-size:25px;margin-bottom:5px}.form-footer{font-size:11px;color:#a8c2df;display:flex;flex-wrap:wrap;gap:10px;justify-content:center;text-align:center;margin-top:18px}.jg-controls{position:fixed;z-index:1000;top:14px;right:clamp(12px,2.3vw,38px);display:flex;gap:4px;padding:6px;background:rgba(8,28,59,.86);border:1px solid rgba(128,175,230,.5);border-radius:999px;backdrop-filter:blur(18px)}.jg-controls button{border:0;background:transparent;color:#e7f1ff;font-size:12px;font-weight:650;padding:10px 14px;border-radius:999px;white-space:nowrap}.jg-controls button[aria-pressed=true]{background:#1d6af4;color:white}.jg-controls button:focus-visible,.password-toggle:focus-visible,.submit-btn:focus-visible{outline:3px solid #ff9d58;outline-offset:3px}.jg-pointer-glow{position:fixed;pointer-events:none;z-index:20;left:0;top:0;width:180px;height:180px;border-radius:50%;opacity:0;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(98,178,255,.15),transparent 68%);transition:opacity .2s}body.jg-pointer-on .jg-pointer-glow{opacity:1}.jg-spark-layer{position:fixed;inset:0;z-index:21;pointer-events:none;overflow:hidden}.jg-spark{position:fixed;width:4px;height:4px;border-radius:50%;background:#72c8ff;box-shadow:0 0 7px #64c2ff;animation:spark .65s ease-out forwards}@keyframes spark{from{opacity:.95;transform:translate(0,0) scale(1)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.2)}}.alert{display:flex;align-items:center;gap:12px;margin-bottom:22px;padding:13px;border:1px solid #ffa3a3;border-radius:10px;background:#8b252744;color:#ffe0e0}.mobile-brand{display:none}
body[data-theme=light]{color-scheme:light}body[data-theme=light] .form-panel{background:linear-gradient(130deg,#f2f7ff,#dce9fa);color:#1b2a44}body[data-theme=light] .login-card{background:rgba(255,255,255,.93);border-color:#cad9ed;box-shadow:0 20px 55px #1d457126}body[data-theme=light] .login-badge{color:#3864a3}body[data-theme=light] .login-heading p{color:#586f8c}body[data-theme=light] .input-wrap{background:#f5f9ff;border-color:#a9bed9}body[data-theme=light] .input-wrap input{color:#1b2a44}body[data-theme=light] .input-wrap input::placeholder{color:#7186a0}body[data-theme=light] .input-icon,body[data-theme=light] .password-toggle{color:#58718f}body[data-theme=light] .login-help{background:#f0f6ff;border-color:#cad9eb}body[data-theme=light] .login-help span,body[data-theme=light] .login-benefits>div{color:#4c6382}body[data-theme=light] .login-benefits>div+div{border-color:#cbd7e8}body[data-theme=light] .form-footer{color:#60718b}body[data-theme=light] .jg-controls{background:#fffffff2;border-color:#c6d7ed}body[data-theme=light] .jg-controls button{color:#2d456a}body[data-theme=light] .jg-controls button[aria-pressed=true]{color:white}
@media(max-width:1150px){.login-shell{grid-template-columns:minmax(0,55%) minmax(360px,45%)}.brand-panel{padding:40px 30px}.brand-panel h1{font-size:clamp(31px,4vw,49px)}.brand-logo{width:90px}.brand-name strong{font-size:clamp(28px,3.1vw,40px)}.graduates-photo{height:50%}.form-panel{padding:95px 20px 25px}.login-card{padding:29px}}
@media(max-width:760px){.login-shell{display:flex;flex-direction:column}.jg-controls{position:relative;top:auto;right:auto;margin:12px auto 0;max-width:calc(100% - 16px)}.jg-controls button{font-size:11px;padding:9px 10px}.brand-panel{min-height:390px;padding:28px 22px 160px}.brand-lockup{gap:12px;margin-bottom:24px}.brand-logo{width:70px}.brand-name span{font-size:17px}.brand-name strong{font-size:28px}.brand-name small{font-size:9px;letter-spacing:.24em}.brand-panel h1{font-size:clamp(28px,7vw,42px)}.brand-description{font-size:14px;max-width:70%}.orange-rule{margin:14px 0 12px}.graduates-photo{height:53%;width:76%;left:auto;right:0;background-size:contain;background-position:right bottom}.form-panel{min-height:auto;padding:22px 16px 30px}.login-card{max-width:560px;padding:28px 22px;border-radius:23px}.login-heading{margin-bottom:26px}.login-heading h2{font-size:38px}.form-footer{margin-top:20px}}
@media(max-width:420px){.brand-panel{min-height:345px;padding-bottom:135px}.brand-description{max-width:79%;font-size:12px}.brand-logo{width:57px}.brand-name strong{font-size:24px}.brand-name span{font-size:14px}.brand-name small{font-size:8px}.brand-panel h1{font-size:29px}.graduates-photo{width:87%;height:47%}.login-card{padding:25px 17px}.login-benefits>div{font-size:10px;padding:3px 5px}.jg-controls button{font-size:10px;padding:8px}.login-heading h2{font-size:33px}}
@media(hover:none),(pointer:coarse){.jg-pointer-glow,.jg-spark-layer{display:none!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* v5: pantalla completa en escritorio; no se recorta el formulario */
@media (min-width: 761px) {
 html,body {height:100%;}
 .login-shell {height:100svh;min-height:0;grid-template-columns:minmax(0,59%) minmax(350px,41%);overflow:hidden;}
 .brand-panel,.form-panel {height:100svh;min-height:0;}
 .brand-panel {padding:clamp(16px,3.2vh,36px) clamp(24px,4.8vw,82px);}
 .brand-content {max-width:100%;}
 .brand-lockup {margin-bottom:clamp(12px,2.6vh,28px);gap:clamp(12px,1.7vw,22px);}
 .brand-logo {width:clamp(65px,8.2vh,112px);}
 .brand-name span {font-size:clamp(17px,2.5vh,27px);}
 .brand-name strong {font-size:clamp(29px,4.1vh,48px);}
 .brand-name small {font-size:clamp(9px,1.4vh,13px);margin-top:7px;}
 .brand-panel h1 {font-size:clamp(29px,4.4vh,52px);line-height:1.07;}
 .orange-rule {margin:clamp(8px,1.6vh,15px) 0 10px;height:4px;}
 .brand-description {font-size:clamp(13px,1.85vh,18px);line-height:1.35;max-width:650px;}
 .graduates-photo {height:55%;bottom:0;width:100%;background-size:contain;background-position:center bottom;}
 .form-panel {padding:clamp(57px,8vh,76px) clamp(18px,3vw,45px) clamp(9px,1.6vh,16px);}
 .login-card {padding:clamp(17px,2.5vh,29px) clamp(22px,2.8vw,38px);border-radius:25px;max-width:510px;}
 .login-heading {margin-bottom:clamp(13px,2vh,21px);}
 .login-badge {font-size:10px;}
 .login-heading h2 {font-size:clamp(29px,4.1vh,42px);margin:6px 0 9px;}
 .login-heading h2:after {margin:10px auto 0;height:4px;}
 .login-heading p {font-size:13px;}
 .field-group {margin-bottom:clamp(10px,1.7vh,17px);}
 .field-group label {font-size:12px;margin-bottom:6px;}
 .input-wrap {min-height:clamp(40px,6vh,51px);}
 .input-wrap input {height:clamp(39px,5.8vh,50px);font-size:14px;}
 .password-toggle {height:clamp(38px,5.8vh,50px);}
 .submit-btn {min-height:clamp(43px,6.4vh,55px);margin-top:clamp(12px,2.1vh,20px);font-size:16px;}
 .login-help {margin-top:clamp(12px,2vh,19px);padding:clamp(9px,1.5vh,14px);}
 .login-benefits {margin-top:clamp(10px,1.7vh,18px);}
 .login-benefits span {font-size:19px;margin-bottom:2px;}
 .login-benefits>div {font-size:11px;}
 .form-footer {margin-top:clamp(7px,1.3vh,13px);font-size:10px;}
 .jg-controls {top:clamp(7px,1.5vh,15px);}
}
/* En pantallas de poca altura reducir adornos sin ocultar los campos */
@media (min-width:761px) and (max-height:680px){
 .brand-panel {padding-top:18px;}
 .brand-lockup {margin-bottom:12px;}
 .brand-panel h1 {font-size:clamp(26px,5vh,34px);}
 .brand-description {font-size:13px;}
 .graduates-photo {height:50%;}
 .form-panel {padding-top:49px;padding-bottom:6px;}
 .login-card {padding:14px 22px;}
 .login-heading {margin-bottom:10px;}
 .login-heading h2 {font-size:29px;}
 .login-heading p {font-size:12px;}
 .field-group {margin-bottom:9px;}
 .input-wrap,.input-wrap input {min-height:38px;height:38px;}
 .password-toggle {height:38px;}
 .submit-btn {min-height:40px;margin-top:10px;}
 .login-help {margin-top:9px;padding:8px;}
 .login-benefits {margin-top:8px;}
 .login-benefits span {font-size:16px;}
 .form-footer {margin-top:6px;}
}
/* Si la altura es excepcionalmente pequeña, permitir desplazamiento antes que perder el login */
@media (min-width:761px) and (max-height:520px){
 .login-shell {height:auto;min-height:100svh;overflow:visible;}
 .brand-panel,.form-panel {height:auto;min-height:520px;}
}
@media (max-width:760px){
 .login-shell {min-height:100svh;}
 .brand-panel {min-height:clamp(240px,38svh,355px);padding:18px 18px 105px;}
 .brand-lockup {margin-bottom:12px;}
 .brand-panel h1 {font-size:clamp(24px,6vw,35px);}
 .brand-description {font-size:12px;line-height:1.3;max-width:67%;}
 .graduates-photo {width:67%;height:58%;right:0;left:auto;background-size:contain;background-position:right bottom;}
 .form-panel {padding:14px 13px 24px;}
 .login-card {padding:22px 19px;}
 .jg-controls {margin:8px auto 0;}
}
@media (max-width:420px){
 .brand-panel {min-height:250px;padding-bottom:100px;}
 .graduates-photo {width:75%;height:51%;}
 .brand-description {max-width:68%;font-size:11px;}
 .login-benefits {margin-top:15px;}
}
/* Foto sin fondo: conservar la transparencia original */
.graduates-photo {background-image:url('/assets/img/graduados-campus-v5.webp');}

/* V6 - mejor proporcion visual y fotografica, sin modificar autenticacion */
@media (min-width: 761px) {
  .login-shell {grid-template-columns:minmax(0,58%) minmax(370px,42%);}
  .brand-panel {padding-left:clamp(28px,4.5vw,78px);padding-right:clamp(22px,3vw,52px);}
  .brand-lockup {margin-bottom:clamp(14px,3vh,34px);}
  .brand-logo {width:clamp(75px,10.5vh,125px);}
  .brand-panel h1 {font-size:clamp(32px,5vh,57px);}
  .brand-description {max-width:620px;line-height:1.42;}
  .graduates-photo {left:0;right:auto;bottom:-1px;width:100%;height:67%;background-size:auto 105%;background-position:center bottom;}
  .form-panel {padding-left:clamp(18px,2.5vw,42px);padding-right:clamp(18px,2.5vw,42px);}
  .login-card {max-width:540px;}
}
@media (min-width:761px) and (max-height:680px){
  .brand-logo {width:clamp(68px,11vh,86px);}
  .brand-panel h1 {font-size:clamp(28px,5.3vh,38px);}
  .graduates-photo {height:67%;background-size:auto 105%;}
}
@media (min-width:761px) and (max-height:560px){
  .graduates-photo {height:61%;background-size:auto 100%;}
}
@media (max-width:760px){
  .brand-panel {min-height:clamp(290px,43svh,400px);padding-bottom:145px;}
  .graduates-photo {height:68%;width:85%;left:auto;right:-1%;background-size:contain;background-position:right bottom;}
}
@media (max-width:420px){
  .brand-panel {min-height:285px;padding-bottom:120px;}
  .graduates-photo {width:88%;height:63%;}
}

/* V7: escala real de fotografía y composición más amplia */
@media (min-width: 761px) {
  .login-shell {grid-template-columns:minmax(0,60%) minmax(360px,40%);}
  .brand-panel {padding-top:clamp(23px,4vh,45px);}
  .brand-lockup {margin-bottom:clamp(16px,3vh,32px);}
  .graduates-photo {width:112%;height:64%;left:-6%;right:auto;bottom:-2px;background-size:100% auto;background-position:center bottom;}
  .form-panel {padding-top:clamp(55px,8vh,80px);}
  .login-card {max-width:540px;}
}
@media (min-width:761px) and (max-height:680px) {
  .graduates-photo {height:65%;width:112%;left:-6%;background-size:100% auto;}
}
@media (min-width:761px) and (max-height:540px) {
  .graduates-photo {height:59%;}
}
@media (max-width:760px) {
  .graduates-photo {width:93%;height:66%;right:-5%;left:auto;background-size:contain;}
}
@media (max-width:420px) {
  .graduates-photo {width:98%;height:60%;right:-8%;}
}
