/* ==============================================================
   登录遮罩 —— 官网和控制台共用
   ==============================================================
   单独一个文件的原因：官网只引 site.css，控制台只引 console.css，
   而登录框两边都要用。抽出来后谁引谁有，不用把整套控制台 CSS
   塞进官网。

   所有变量都给了 fallback —— 万一某个页面没定义 token 也不会糊成一片。
   ============================================================== */

.mask {
  position: fixed; inset: 0; z-index: 200;
  display: none; place-items: center; padding: 20px;
  background: rgba(6, 6, 10, .74);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
}
.mask.on { display: grid; }

.login-card {
  position: relative;
  width: 100%; max-width: 392px; padding: 30px;
  border: 1px solid var(--line, #272933);
  border-radius: 18px;
  background: var(--surface, #16171E);
  box-shadow: 0 24px 66px rgba(0, 0, 0, .62);
  animation: login-pop .22s cubic-bezier(.2, .9, .3, 1.2);
}
@keyframes login-pop {
  from { opacity: 0; transform: translateY(14px) scale(.97); }
  to   { opacity: 1; transform: none; }
}

/* 关闭按钮 —— 控制台里是强制登录，这个按钮会被藏掉 */
.login-x {
  position: absolute; top: 12px; right: 12px;
  width: 32px; height: 32px; padding: 0;
  display: grid; place-items: center;
  border: 0; border-radius: 999px; cursor: pointer;
  background: transparent;
  color: var(--sub2, #767B85);
  transition: background .16s, color .16s;
}
.login-x:hover { background: var(--surface-2, #1C1E27); color: var(--txt, #F5F6F8); }
.login-x .ico { width: 16px; height: 16px; }
.mask.locked .login-x { display: none; }

.login-head { text-align: center; margin-bottom: 24px; }
.login-head .mark {
  width: 50px; height: 50px; margin: 0 auto 14px; border-radius: 14px;
  display: grid; place-items: center;
  color: #fff;
  background: linear-gradient(135deg, var(--pink, #FE2C55), #FF7A3D);
  box-shadow: 0 8px 22px rgba(254, 44, 85, .34);
}
.login-head .mark .ico { width: 24px; height: 24px; }
.login-head h2 { margin: 0 0 6px; font-size: 20px; font-weight: 700; color: var(--txt, #F5F6F8); }
.login-head p {
  margin: 0; font-size: 13px; line-height: 1.65;
  color: var(--sub, #A6ABB4);
}

.field { margin-bottom: 16px; }
.field > label {
  display: block; margin-bottom: 7px;
  font-size: 12.5px; font-weight: 600; color: var(--sub, #A6ABB4);
}
.field input[type="text"], .field input[type="password"] {
  width: 100%; height: 42px; padding: 0 13px;
  border: 1px solid var(--line, #272933);
  border-radius: var(--r, 10px);
  background: var(--bg, #0B0B0F);
  color: var(--txt, #F5F6F8);
  font: 14px var(--font, "PingFang SC", "Microsoft YaHei", sans-serif);
  outline: none;
  transition: border-color .16s, box-shadow .16s;
}
.field input:focus {
  border-color: var(--pink, #FE2C55);
  box-shadow: 0 0 0 3px rgba(254, 44, 85, .16);
}

.err-box {
  display: none; margin-bottom: 14px; padding: 10px 13px;
  border-radius: var(--r-sm, 7px);
  font-size: 12.5px; line-height: 1.6;
  background: rgba(255, 77, 106, .12);
  color: #FF8FA3;
  border: 1px solid rgba(255, 77, 106, .26);
}
.err-box.on { display: block; }

.login-card .btn {
  width: 100%; height: 44px;
  font: 700 14.5px var(--font, inherit);
  border: 0; border-radius: 999px; cursor: pointer; color: #fff;
  background: linear-gradient(135deg, var(--pink, #FE2C55), #FF5A3C);
  box-shadow: 0 6px 20px rgba(254, 44, 85, .3);
  transition: filter .18s, box-shadow .18s;
}
.login-card .btn:hover { filter: brightness(1.08); }
.login-card .btn:disabled { opacity: .6; cursor: default; }

.login-foot {
  margin-top: 16px; text-align: center;
  font-size: 11.5px; line-height: 1.6;
  color: var(--sub2, #767B85);
}

@media (prefers-reduced-motion: reduce) {
  .login-card { animation: none; }
}
