:root{--lav:#6552c9;--lav-d:#4b3aa8;--lav-l:#efecfb;--mint:#1fa58f;--peach:#f6a98b;--ink:#2b2a4c;--muted:#8a89a6;--line:#e6e3f4}
*{box-sizing:border-box}
body{margin:0;font-family:'Plus Jakarta Sans',system-ui,sans-serif;color:var(--ink);background:#fff;-webkit-font-smoothing:antialiased}
.serif{font-family:'Fraunces',Georgia,serif}
.login-wrap{display:grid;grid-template-columns:1.15fr 1fr;min-height:100vh}

/* Panel visual */
.visual{position:relative;overflow:hidden;padding:3rem 3.5rem;display:flex;flex-direction:column;justify-content:space-between;color:#fff;
  background:radial-gradient(900px 600px at 10% 0%,#a79bf0 0%,transparent 60%),radial-gradient(700px 600px at 100% 100%,#5cd0bd 0%,transparent 55%),linear-gradient(135deg,#7c6fd0,#8fa6e8)}
.visual .orb{position:absolute;border-radius:50%;filter:blur(2px);animation:float 9s ease-in-out infinite}
.o1{width:380px;height:380px;right:-120px;top:-100px;background:rgba(255,255,255,.12)}
.o2{width:220px;height:220px;left:-70px;bottom:90px;background:rgba(255,255,255,.1);animation-delay:-3s}
.o3{width:90px;height:90px;right:22%;bottom:16%;background:rgba(246,169,139,.55);animation-delay:-5s}
.rings{position:absolute;right:6%;top:50%;transform:translateY(-50%);width:420px;height:420px;opacity:.9}
.rings span{position:absolute;inset:0;border:1.5px solid rgba(255,255,255,.28);border-radius:50%}
.rings span:nth-child(2){inset:50px}.rings span:nth-child(3){inset:100px}.rings span:nth-child(4){inset:150px;background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.4)}
.rings .psi{position:absolute;inset:0;display:grid;place-items:center;font-family:'Fraunces',serif;font-size:7.5rem;font-weight:500;color:#fff;text-shadow:0 10px 40px rgba(60,40,140,.4)}
.v-brand{display:flex;align-items:center;gap:.75rem;position:relative;z-index:2}
.v-brand .mark{width:46px;height:46px;border-radius:15px;background:rgba(255,255,255,.22);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.35);display:grid;place-items:center;font-family:'Fraunces',serif;font-size:1.7rem;overflow:hidden}
.v-brand .mark img{width:100%;height:100%;object-fit:cover}
.v-brand b{font-family:'Fraunces',serif;font-size:1.2rem;font-weight:600}
.v-copy{position:relative;z-index:2;max-width:480px}
.v-copy h1{font-family:'Fraunces',serif;font-size:3rem;line-height:1.08;font-weight:500;margin:0 0 1rem;letter-spacing:-.02em}
.v-copy h1 em{font-style:italic;color:#d9fff6}
.v-copy p{font-size:1.02rem;opacity:.92;line-height:1.6;margin:0}
.chips{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.6rem}
.chip{display:flex;align-items:center;gap:.55rem;padding:.6rem .95rem;border-radius:16px;background:rgba(255,255,255,.17);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.3);font-size:.82rem;font-weight:600}
.chip i{font-size:1.1rem}
.v-foot{position:relative;z-index:2;font-size:.78rem;opacity:.8}

/* Formulario */
.form-side{display:flex;align-items:center;justify-content:center;padding:2rem;background:linear-gradient(180deg,#fff,#faf9ff)}
.form-box{width:100%;max-width:410px}
.form-box .mark{width:56px;height:56px;border-radius:18px;background:linear-gradient(135deg,var(--lav),var(--mint));color:#fff;display:grid;place-items:center;font-family:'Fraunces',serif;font-size:2rem;box-shadow:0 12px 26px rgba(124,111,208,.35);margin-bottom:1.4rem;overflow:hidden}
.form-box .mark img{width:100%;height:100%;object-fit:cover}
.form-box h2{font-family:'Fraunces',serif;font-size:2.1rem;font-weight:600;margin:0 0 .35rem;letter-spacing:-.02em}
.form-box .sub{color:var(--muted);margin-bottom:1.8rem}
.field{margin-bottom:1.1rem}
.field label{display:block;font-weight:600;font-size:.82rem;margin-bottom:.4rem}
.input{position:relative}
.input>i{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:#a9a7c6;font-size:1.05rem;transition:.2s}
.input input{width:100%;padding:.85rem 2.8rem .85rem 2.9rem;border:1.5px solid var(--line);border-radius:14px;font:inherit;font-size:.95rem;background:#fff;outline:0;transition:.2s;color:var(--ink)}
.input input:focus{border-color:var(--lav);box-shadow:0 0 0 4px rgba(124,111,208,.14)}
.input input:focus~i,.input:focus-within>i:first-child{color:var(--lav)}
.eye{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);background:none;border:0;color:#a9a7c6;padding:.4rem;cursor:pointer;font-size:1.05rem}
.eye:hover{color:var(--lav)}
.row-opts{display:flex;justify-content:space-between;align-items:center;font-size:.84rem;margin:.2rem 0 1.4rem}
.row-opts label{display:flex;align-items:center;gap:.5rem;color:#5d5c80;cursor:pointer}
.row-opts input{accent-color:var(--lav);width:16px;height:16px}
.row-opts a{color:var(--lav-d);font-weight:600;text-decoration:none}
.btn-login{width:100%;border:0;padding:.95rem;border-radius:14px;font:inherit;font-weight:700;font-size:1rem;color:#fff;cursor:pointer;background:linear-gradient(135deg,var(--lav),#9b8ee6 60%,#6dcbbb);background-size:140% 100%;box-shadow:0 12px 26px rgba(124,111,208,.38);transition:.25s}
.btn-login:hover{transform:translateY(-2px);background-position:100% 0;box-shadow:0 16px 32px rgba(124,111,208,.45)}
.alert-err{display:flex;gap:.6rem;align-items:center;background:#fdeef3;color:#c04a74;border:1px solid #f8d3e0;padding:.75rem 1rem;border-radius:12px;font-size:.86rem;margin-bottom:1.1rem}
.hint{margin-top:1.6rem;text-align:center;font-size:.78rem;color:var(--muted)}
.secure{display:flex;align-items:center;justify-content:center;gap:.4rem;margin-top:.5rem;color:#8a89a6;font-size:.76rem}
@keyframes float{50%{transform:translateY(-22px) translateX(10px)}}
@keyframes up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.form-box>*{animation:up .6s both}.form-box>*:nth-child(2){animation-delay:.07s}.form-box>*:nth-child(3){animation-delay:.14s}.form-box>*:nth-child(4){animation-delay:.2s}
@media(max-width:991px){.login-wrap{grid-template-columns:1fr}.visual{display:none}}
.visual{background:radial-gradient(900px 600px at 10% 0%,#7a62e6 0%,transparent 60%),radial-gradient(700px 600px at 100% 100%,#1fa58f 0%,transparent 55%),linear-gradient(135deg,#4b3aa8,#3f64b8)!important}
.btn-login{background:linear-gradient(135deg,#6552c9,#7f6ee0 60%,#1fa58f)!important;background-size:140% 100%!important}
.form-side{background:linear-gradient(180deg,#fff,#efecfb)}
