:root{
  --bg:#0b0b0e; --panel:#121216; --ice:#dfe9f5; --ice-dim:#8f9bb0; --white:#f6f8fc;
  --red:#b3261e; --red2:#d23a30; --line:rgba(223,233,245,.18);
  --font-head:'Libre Baskerville',Georgia,serif; --font-body:'Montserrat',system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:var(--bg);color:var(--ice);font-family:var(--font-body);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}

.auth{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}

/* ---------- hero (image) ---------- */
.hero{position:relative;height:46vh;min-height:300px;overflow:hidden;background:#000}
.hero-img{position:absolute;inset:-4%;background:url('/assets/img/login-mobile.webp') center 20%/cover no-repeat;animation:kb 26s ease-in-out infinite alternate}
@keyframes kb{from{transform:scale(1)}to{transform:scale(1.08)}}
.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,11,14,.25),transparent 40%,rgba(11,11,14,.35))}
.hero-tag{position:absolute;top:20px;left:22px;z-index:2;font-family:var(--font-head);font-size:11px;letter-spacing:.35em;color:var(--white);opacity:.85}

.wave{position:absolute;fill:var(--panel);pointer-events:none}
.wave-m{left:0;bottom:-1px;width:100%;height:84px;animation:waveM 9s ease-in-out infinite}
@keyframes waveM{0%,100%{transform:translateX(0)}50%{transform:translateX(-14px) scaleX(1.07)}}
.wave-d{display:none}

/* ---------- panel (form) ---------- */
.panel{flex:1;background:var(--panel);padding:10px 24px 40px;display:flex;justify-content:center;min-height:54vh}
.form{width:100%;max-width:400px;display:flex;flex-direction:column;opacity:0;animation:up .8s ease .15s forwards}
@keyframes up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

.h{font-family:var(--font-head);font-weight:700;font-size:30px;color:var(--white);display:inline-block;position:relative;align-self:flex-start}
.h .ul{position:absolute;left:0;bottom:-6px;height:2px;width:0;background:var(--red);animation:ul 1s cubic-bezier(.7,0,.3,1) .5s forwards}
@keyframes ul{to{width:100%}}
.sub{margin-top:14px;font-size:13px;color:var(--ice-dim);font-weight:300}

.err{margin-top:16px;padding:10px 14px;border-radius:10px;font-size:13px;background:rgba(179,38,30,.15);border:1px solid rgba(179,38,30,.4);color:#ff8d85}

.field{display:block;margin-top:18px}
.lbl{display:block;font-size:12px;font-weight:600;color:var(--ice);margin-bottom:6px;letter-spacing:.02em}
.in{position:relative;display:flex;align-items:center;gap:10px;padding:13px 14px;border-radius:12px;
  background:rgba(223,233,245,.06);border:1px solid var(--line);transition:border-color .25s,box-shadow .25s}
.in:focus-within{border-color:var(--red);box-shadow:0 0 0 3px rgba(179,38,30,.18)}
.in svg{width:16px;height:16px;fill:none;stroke:var(--ice-dim);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.in input{flex:1;min-width:0;background:transparent!important;border:0!important;outline:0!important;box-shadow:none!important;
  color:var(--white);font-family:var(--font-body);font-size:14px;-webkit-appearance:none;appearance:none}
.in input::placeholder{color:#5f6778;font-weight:300}
.in input:-webkit-autofill,.in input:-webkit-autofill:hover,.in input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--white);-webkit-box-shadow:0 0 0 100px #16161b inset!important;caret-color:var(--white);border-radius:0}
.eye{background:none;border:0;cursor:pointer;padding:4px;display:flex}
.eye svg{stroke:var(--ice-dim)}
.eye.on svg{stroke:var(--red2)}

.row{display:flex;align-items:center;justify-content:space-between;margin-top:16px;font-size:12px}
.chk{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--ice);font-weight:500}
.chk input{display:none}
.chk span{width:14px;height:14px;border:1.5px solid var(--red);border-radius:3px;position:relative;transition:background .2s}
.chk input:checked+span{background:var(--red)}
.chk input:checked+span::after{content:"";position:absolute;left:3.5px;top:0.5px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.forgot{color:var(--red2);font-weight:500}
.forgot:hover{text-decoration:underline}

.btn{margin-top:36px;width:100%;padding:15px;border:0;border-radius:10px;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:14px;letter-spacing:.04em;
  color:#fff;background:linear-gradient(90deg,var(--red),var(--red2));box-shadow:0 10px 30px rgba(179,38,30,.35);transition:transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 36px rgba(179,38,30,.5)}
.btn:active{transform:scale(.98)}

.foot{margin-top:16px;text-align:center;font-size:12px;color:var(--ice-dim)}
.foot a{color:var(--red2);font-weight:500}

.form.shake{animation:up .8s ease .15s forwards,shake .5s ease .9s}
@keyframes shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}

/* ---------- desktop: image left, form right ---------- */
@media(min-width:900px){
  .auth{flex-direction:row}
  .hero{flex:0 0 56%;height:100vh;min-height:0}
  .hero-img{background-image:url('/assets/img/login-desktop.webp');background-position:center}
  .hero-shade{background:linear-gradient(90deg,transparent 60%,rgba(18,18,22,.45))}
  .hero-tag{top:28px;left:32px;font-size:12px}
  .wave-m{display:none}
  .wave-d{display:block;top:0;right:-1px;width:90px;height:100%;animation:waveD 10s ease-in-out infinite}
  @keyframes waveD{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px) scaleY(1.06)}}
  .panel{align-items:center;padding:40px 60px}
  .form{max-width:380px}
  .h{font-size:36px}
}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-delay:0s!important}}