:root{
  --bg:#f4f6fb; --card:#fff; --line:#e4e9f2; --txt:#1f2937; --sub:#6b7280;
  --brand:#4f46e5; --brand-d:#4338ca; --brandbg:#eef0ff;
  --ok:#15803d; --okbg:#e9f8ee; --okline:#7bd39c;
  --warn:#b45309; --warnbg:#fff7ed; --danger:#dc2626; --dangerbg:#fef2f2;
  --radius:12px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{margin:0;padding:0;background:var(--bg);color:var(--txt);
  font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB",system-ui,-apple-system,sans-serif;
  font-size:15px;line-height:1.7}
a{color:var(--brand);text-decoration:none}
button,input,select{font-family:inherit}
button{cursor:pointer}
.btn{border:1px solid var(--line);background:#fff;color:var(--txt);border-radius:9px;
  padding:8px 14px;font-size:14px;min-height:38px;transition:.15s;white-space:nowrap;flex:0 0 auto}
.btn:hover{border-color:var(--brand);color:var(--brand)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.btn.primary:hover{background:var(--brand-d);color:#fff}
.btn.danger{color:var(--danger);border-color:#f3c4c4;background:#fff}
.btn.danger:hover{background:var(--dangerbg);color:var(--danger)}
.btn.ok{background:var(--okbg);border-color:var(--okline);color:var(--ok);font-weight:600}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.sm{padding:4px 10px;font-size:12.5px;min-height:30px;border-radius:7px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:13px;color:var(--sub)}
.field input,.field select{border:1px solid var(--line);border-radius:9px;padding:10px 12px;
  font-size:16px;background:#fff;color:var(--txt);outline:none;transition:.15s}
.field input:focus,.field select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.msg{font-size:13px;border-radius:8px;padding:8px 12px;margin-bottom:12px;display:none}
.msg.err{display:block;background:var(--dangerbg);color:var(--danger);border:1px solid #f5c2c2}
.msg.ok{display:block;background:var(--okbg);color:var(--ok);border:1px solid var(--okline)}
.tag{display:inline-block;border-radius:5px;padding:1px 8px;font-size:12px;background:#f1f5f9;color:#475569}
.tag.g{background:var(--okbg);color:var(--ok)}
.tag.w{background:var(--warnbg);color:var(--warn)}
.tag.r{background:var(--dangerbg);color:var(--danger)}
.tag.b{background:var(--brandbg);color:var(--brand-d)}
.muted{color:var(--sub);font-size:13px}
