/* ===== v2.3.1 · 登录 / 申请 / 账号管理 ===== */
:root{
  --brand:#4f46e5; --brand-2:#4338ca; --brand-soft:#eef2ff; --brand-line:#c7d2fe;
  --ink:#111827; --ink-2:#374151; --muted:#6b7280; --muted-2:#9ca3af;
  --bg:#f4f6fb; --card:#fff; --line:#e5e7eb; --line-2:#d1d5db;
  --ok:#059669; --ok-soft:#ecfdf5; --ok-line:#a7f3d0;
  --warn:#b45309; --warn-soft:#fffbeb; --warn-line:#fde68a;
  --err:#b91c1c; --err-soft:#fef2f2; --err-line:#fecaca;
  --r:14px; --r-sm:10px; --sh:0 1px 2px rgba(16,24,40,.04),0 10px 30px rgba(16,24,40,.06);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  min-height:100vh; background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:14px; line-height:1.65; -webkit-font-smoothing:antialiased;
}
a{color:var(--brand); text-decoration:none}
a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit}
.auth-wrap{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:28px 16px}
.auth-card{
  width:100%; max-width:420px; background:var(--card); border:1px solid var(--line);
  border-radius:var(--r); box-shadow:var(--sh); padding:26px 26px 20px;
}
.auth-card.wide{max-width:560px}
.auth-brand{display:flex; align-items:center; gap:11px; margin-bottom:20px}
.auth-logo{
  width:40px; height:40px; border-radius:12px; flex:none; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(145deg,#6366f1,#4338ca 65%,#3730a3); color:#fff; font-weight:800; font-size:18px;
  box-shadow:0 6px 16px rgba(67,56,202,.28);
}
.auth-brand b{display:block; font-size:16px; line-height:1.3}
.auth-brand small{display:block; color:var(--muted); font-size:12px; margin-top:1px}
.auth-title{font-size:22px; line-height:1.3; margin:0 0 4px; letter-spacing:-.01em}
.auth-sub{margin:0 0 18px; color:var(--muted); font-size:13px}
.auth-field{display:block; margin-bottom:13px}
.auth-field>span{display:block; font-size:13px; font-weight:650; color:var(--ink-2); margin-bottom:6px}
.auth-input,.auth-select,.auth-textarea{
  width:100%; border:1px solid var(--line-2); border-radius:var(--r-sm); background:#fff;
  padding:10px 12px; font-size:14px; color:var(--ink); outline:none; transition:border-color .15s, box-shadow .15s;
}
.auth-input:focus,.auth-select:focus,.auth-textarea:focus{border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-soft)}
.auth-textarea{min-height:76px; resize:vertical}
.auth-btn{
  width:100%; height:44px; border:0; border-radius:var(--r-sm); background:var(--brand); color:#fff;
  font-weight:700; font-size:15px; cursor:pointer; transition:background .15s, opacity .15s;
}
.auth-btn:hover{background:var(--brand-2)}
.auth-btn:disabled{opacity:.55; cursor:not-allowed}
.auth-btn.secondary{background:#fff; color:var(--ink-2); border:1px solid var(--line-2)}
.auth-btn.secondary:hover{background:var(--brand-soft); color:var(--brand-2); border-color:var(--brand-line)}
.auth-btn.danger{background:#fff; color:var(--err); border:1px solid var(--err-line)}
.auth-btn.danger:hover{background:var(--err-soft)}
.auth-btn.sm{height:34px; width:auto; padding:0 12px; font-size:13px; font-weight:650}
.auth-links{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:14px; color:var(--muted); font-size:13px}
.auth-links[hidden]{display:none}
.auth-links .dot{color:var(--muted-2)}
.auth-foot{margin:18px 0 0; padding-top:12px; border-top:1px solid var(--line); color:var(--muted-2); font-size:11.5px; text-align:center}
.auth-alert{
  border-radius:var(--r-sm); padding:9px 12px; margin:0 0 12px; font-size:13px; line-height:1.6;
  background:var(--err-soft); border:1px solid var(--err-line); color:var(--err);
}
.auth-alert.ok{background:var(--ok-soft); border-color:var(--ok-line); color:var(--ok)}
.auth-alert.warn{background:var(--warn-soft); border-color:var(--warn-line); color:var(--warn)}
.auth-alert[hidden]{display:none}
.auth-note{background:var(--warn-soft); border:1px solid var(--warn-line); color:var(--warn); border-radius:var(--r-sm); padding:10px 12px; font-size:13px; margin-bottom:14px}
.auth-success{text-align:center; padding:18px 0 6px}
.auth-success .ic{width:46px; height:46px; border-radius:50%; margin:0 auto 12px; display:flex; align-items:center; justify-content:center; background:var(--ok-soft); color:var(--ok); font-size:22px; border:1px solid var(--ok-line)}
.auth-success h2{margin:0 0 6px; font-size:19px}
.auth-success p{margin:0 0 16px; color:var(--muted); font-size:13px}

/* ---------- 账号管理 ---------- */
.admin-wrap{max-width:1040px; margin:0 auto; padding:22px 16px 48px}
.admin-head{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px}
.admin-head .grow{flex:1; min-width:220px}
.admin-head h1{margin:0; font-size:21px; line-height:1.3}
.admin-head p{margin:2px 0 0; color:var(--muted); font-size:12.5px}
.admin-head .actions{display:flex; gap:8px; flex-wrap:wrap}
.admin-card{background:var(--card); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh); padding:16px 18px; margin-bottom:14px}
.admin-card h2{margin:0 0 10px; font-size:16px; display:flex; align-items:center; gap:8px}
.admin-card h2 .count{font-size:12px; color:var(--muted); font-weight:500}
.admin-empty{color:var(--muted); font-size:13px; padding:14px 0; text-align:center}
.admin-item{border:1px solid var(--line); border-radius:var(--r-sm); padding:12px 14px; margin-bottom:10px; background:#fff}
.admin-item .top{display:flex; align-items:flex-start; gap:10px; flex-wrap:wrap}
.admin-item .who{flex:1; min-width:200px}
.admin-item .who b{font-size:14px}
.admin-item .who small{display:block; color:var(--muted); font-size:12px; margin-top:1px}
.admin-item .note{margin:8px 0 0; color:var(--ink-2); font-size:13px; background:var(--bg); border-radius:8px; padding:8px 10px; white-space:pre-wrap; word-break:break-word}
.admin-item .ops{display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin-top:10px}
.admin-table{width:100%; border-collapse:collapse; font-size:13px}
.admin-table th,.admin-table td{padding:9px 8px; border-bottom:1px solid var(--line); text-align:left; vertical-align:middle}
.admin-table th{font-size:12px; color:var(--muted); font-weight:650; background:var(--bg)}
.admin-table tr:last-child td{border-bottom:0}
.admin-table .ops{display:flex; gap:6px; flex-wrap:wrap}
.badge{display:inline-flex; align-items:center; gap:5px; padding:2px 8px; border-radius:999px; font-size:11.5px; font-weight:650; border:1px solid var(--line); background:#fff; color:var(--ink-2); white-space:nowrap}
.badge.ok{background:var(--ok-soft); border-color:var(--ok-line); color:var(--ok)}
.badge.warn{background:var(--warn-soft); border-color:var(--warn-line); color:var(--warn)}
.badge.err{background:var(--err-soft); border-color:var(--err-line); color:var(--err)}
.badge.brand{background:var(--brand-soft); border-color:var(--brand-line); color:var(--brand-2)}
.admin-modal{position:fixed; inset:0; z-index:50; display:flex; align-items:center; justify-content:center; background:rgba(17,24,39,.45); padding:18px}
.admin-modal[hidden]{display:none}
.admin-modal .box{background:#fff; border-radius:var(--r); box-shadow:0 30px 80px rgba(16,24,40,.3); width:100%; max-width:420px; padding:20px}
.admin-modal h3{margin:0 0 8px; font-size:17px}
.admin-modal p{margin:0 0 12px; color:var(--muted); font-size:13px}
.temp-pwd{font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:18px; letter-spacing:.04em; background:var(--brand-soft); border:1px dashed var(--brand-line); color:var(--brand-2); border-radius:10px; padding:12px; text-align:center; user-select:all; word-break:break-all; margin-bottom:14px}
.admin-modal .ops{display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap}
@media(max-width:640px){
  .auth-card{padding:22px 18px 16px}
  .admin-wrap{padding:14px 10px 36px}
  .admin-card{padding:13px 12px}
  .admin-table{display:block; overflow-x:auto; white-space:nowrap}
  .admin-item .ops .btn{flex:1 1 46%}
}
