/* 登录页样式（原 login.html 的内联 <style>，2026-10-02 外置）
   外置的原因：CSP 的 script-src / style-src 不再需要为这一页开 'unsafe-inline'。
   注意：游戏页（game.js / index.html）仍有 6 处内联 style="…" 属性，
   所以站点级 CSP 的 style-src 仍保留 'unsafe-inline'，收紧的是 script-src。 */
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
  --bg: #f4f6f9; --panel: #ffffff; --line: #e4e8ef; --line-strong: #cfd6e2;
  --text: #1f2328; --dim: #6b7280; --accent: #2f6feb; --accent-deep: #1d55c8;
  --danger: #d92d20;
  --shadow: 0 1px 2px rgba(16,24,40,.04), 0 8px 24px rgba(16,24,40,.06);
  --shadow-pop: 0 2px 6px rgba(16,24,40,.06), 0 16px 44px rgba(16,24,40,.13);
  --ease: cubic-bezier(.22,.8,.36,1);
}
html, body { height: 100%; }
body {
  background:
    radial-gradient(1000px 500px at 20% -10%, rgba(47,111,235,.07), transparent 60%),
    radial-gradient(800px 420px at 90% 110%, rgba(143,122,212,.06), transparent 60%),
    var(--bg);
  color: var(--text);
  font-family: "PingFang SC", "Microsoft YaHei", -apple-system, sans-serif;
  display: flex; align-items: center; justify-content: center; padding: 20px;
}
.card {
  width: 400px; max-width: 100%;
  background: var(--panel); border: 1px solid var(--line);
  border-radius: 16px; box-shadow: var(--shadow-pop);
  padding: 34px 32px 28px;
  animation: up .4s var(--ease);
}
@keyframes up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

.brand { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.badge {
  width: 30px; height: 30px; border-radius: 8px; flex: none;
  background: linear-gradient(140deg, var(--accent), #6f8ff5);
  box-shadow: 0 2px 8px rgba(47,111,235,.35);
  position: relative;
}
.badge::after {
  content: ""; position: absolute; inset: 9px 10px 9px 10px;
  border: 2px solid #fff; border-radius: 50% 50% 45% 45%;
  border-bottom-width: 3px;
}
h1 { font-size: 19px; letter-spacing: .5px; font-weight: 600; }
.sub { color: var(--dim); font-size: 12.5px; line-height: 1.6; margin: 8px 0 22px; }

label { display: block; font-size: 12.5px; color: var(--dim); margin: 0 0 6px 2px; }
input {
  width: 100%; padding: 11px 13px; margin-bottom: 14px;
  border: 1px solid var(--line-strong); border-radius: 10px;
  background: #fbfcfe; font-size: 14px; color: var(--text);
  font-family: inherit; transition: border-color .15s, box-shadow .15s, background .15s;
}
input:focus {
  outline: none; border-color: var(--accent); background: #fff;
  box-shadow: 0 0 0 3px rgba(47,111,235,.13);
}
button {
  width: 100%; padding: 12px; margin-top: 6px;
  border: none; border-radius: 10px; cursor: pointer;
  background: var(--accent); color: #fff; font-size: 14.5px; font-weight: 600;
  font-family: inherit; letter-spacing: .5px;
  transition: background .15s, transform .1s;
}
button:hover { background: var(--accent-deep); }
button:active { transform: scale(.985); }
button:disabled { background: #9db6ee; cursor: default; transform: none; }

.msg {
  display: none; margin-top: 14px; padding: 10px 12px; border-radius: 9px;
  font-size: 13px; line-height: 1.5;
}
.msg.err { display: block; background: #fdf1f0; color: var(--danger); border: 1px solid #f6d4d1; }
.msg.ok { display: block; background: #eef7f2; color: #12805c; border: 1px solid #cfe9dd; }

.foot {
  margin-top: 20px; padding-top: 16px; border-top: 1px dashed var(--line);
  color: var(--dim); font-size: 12px; line-height: 1.7;
}
.foot b { color: var(--text); font-weight: 600; }
.k {
  display: inline-block; padding: 1px 6px; margin: 0 1px;
  background: #f1f4f9; border: 1px solid var(--line); border-radius: 5px;
  font-size: 11.5px; color: var(--text);
}
/* 备案号（合规展示） */
.beian { margin-top: 10px; font-size: 12px; letter-spacing: .4px; }
.beian a { color: #9aa3b2; text-decoration: none; transition: color .15s; }
.beian a:hover { color: var(--accent); text-decoration: underline; }
