:root{
  --ink:#1a2e52; --ink-2:#334155; --muted:#64748b; --line:#e2e8f0;
  --bg:#f7f9fc; --card:#fff; --accent:#2563eb; --warn:#b45309;
  --warn-bg:#fffbeb; --warn-line:#fcd34d; --ok:#047857;
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--ink-2);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:15px; line-height:1.6;
}
a{color:var(--accent); text-decoration:none}
a:hover{text-decoration:underline}

.top{background:var(--card); border-bottom:1px solid var(--line)}
.top-in{max-width:1080px; margin:0 auto; padding:14px 20px; display:flex; align-items:center; gap:16px}
.brand{font-weight:700; color:var(--ink); font-size:16px; letter-spacing:.3px}
.brand span{color:var(--accent)}
.top .spacer{flex:1}
.top .who{color:var(--muted); font-size:13px}
.btn-link{background:none;border:0;color:var(--muted);font-size:13px;cursor:pointer;padding:4px 6px}
.btn-link:hover{color:var(--ink)}

.wrap{max-width:1080px; margin:0 auto; padding:26px 20px 60px}

h1{font-size:21px; color:var(--ink); margin:0 0 6px; font-weight:700}
h2{font-size:16px; color:var(--ink); margin:0 0 12px; font-weight:700}
h3{font-size:14px; color:var(--ink-2); margin:0 0 8px; font-weight:600}
.sub{color:var(--muted); font-size:13px; margin:0 0 22px}

.card{background:var(--card); border:1px solid var(--line); border-radius:10px; padding:20px 22px; margin-bottom:16px}
.grid2{display:grid; grid-template-columns:1.1fr .9fr; gap:16px}
.grid3{display:grid; grid-template-columns:repeat(3,1fr); gap:12px}
@media(max-width:820px){.grid2,.grid3{grid-template-columns:1fr}}

.stat{background:var(--card); border:1px solid var(--line); border-radius:10px; padding:16px 18px}
.stat .k{color:var(--muted); font-size:12px; letter-spacing:.4px}
.stat .v{font-size:28px; font-weight:700; color:var(--ink); line-height:1.2; margin-top:4px}
.stat .v small{font-size:14px; font-weight:600; color:var(--muted)}
.stat .n{color:var(--muted); font-size:12px; margin-top:2px}

.note{border:1px solid var(--warn-line); background:var(--warn-bg); color:#92400e;
  border-radius:8px; padding:12px 14px; font-size:13px; margin-bottom:16px}
.note b{color:#78350f}

label{display:block; font-size:13px; color:var(--ink-2); margin-bottom:5px; font-weight:600}
input[type=text],input[type=email],input[type=password],textarea,select{
  width:100%; padding:9px 11px; border:1px solid #cbd5e1; border-radius:7px;
  font-size:14px; font-family:inherit; color:var(--ink-2); background:#fff;
}
input:focus,textarea:focus,select:focus{outline:2px solid #bfdbfe; border-color:var(--accent)}
textarea{min-height:110px; resize:vertical; line-height:1.7}
.field{margin-bottom:14px}
.hint{color:var(--muted); font-size:12px; margin-top:4px}
.row{display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap}

.btn{display:inline-block; background:var(--accent); color:#fff; border:0; border-radius:7px;
  padding:9px 18px; font-size:14px; font-weight:600; cursor:pointer; font-family:inherit}
.btn:hover{background:#1d4ed8; text-decoration:none; color:#fff}
.btn:disabled{background:#94a3b8; cursor:not-allowed}
.btn.ghost{background:#fff; color:var(--ink-2); border:1px solid #cbd5e1}
.btn.ghost:hover{background:#f1f5f9; color:var(--ink)}

table{width:100%; border-collapse:collapse; font-size:13.5px}
th{text-align:left; color:var(--muted); font-weight:600; font-size:12px; letter-spacing:.3px;
  padding:8px 10px; border-bottom:1px solid var(--line); background:#fbfdff}
td{padding:9px 10px; border-bottom:1px solid #eef2f7; vertical-align:top}
tr:last-child td{border-bottom:0}
.num{text-align:right; font-variant-numeric:tabular-nums}

.pill{display:inline-block; font-size:11.5px; padding:2px 8px; border-radius:20px;
  background:#eff6ff; color:#1d4ed8; font-weight:600}
.pill.gray{background:#f1f5f9; color:var(--muted)}
.pill.ok{background:#ecfdf5; color:var(--ok)}
.pill.warn{background:#fffbeb; color:var(--warn)}

.empty{color:var(--muted); font-size:13.5px; padding:22px 0; text-align:center}

.proj{display:block; background:var(--card); border:1px solid var(--line); border-radius:10px;
  padding:16px 18px; margin-bottom:10px; color:inherit}
.proj:hover{border-color:#bfdbfe; text-decoration:none; box-shadow:0 1px 6px rgba(37,99,235,.07)}
.proj .t{font-weight:700; color:var(--ink); font-size:15px}
.proj .m{color:var(--muted); font-size:12.5px; margin-top:3px}

.bar{height:7px; background:#eef2f7; border-radius:4px; overflow:hidden; min-width:80px}
.bar>i{display:block; height:100%; background:var(--accent); border-radius:4px}

.ev{color:var(--muted); font-size:12px; margin-top:3px; line-height:1.5}

.login-box{max-width:400px; margin:9vh auto 0; background:var(--card); border:1px solid var(--line);
  border-radius:12px; padding:30px 30px 26px; box-shadow:0 2px 16px rgba(26,46,82,.05)}
.login-box .logo{font-weight:700; color:var(--ink); font-size:17px; margin-bottom:4px}
.login-box .logo span{color:var(--accent)}
.login-box .tag{color:var(--muted); font-size:13px; margin-bottom:22px}
.tabs{display:flex; gap:6px; margin-bottom:18px}
.tabs button{flex:1; background:#f1f5f9; border:0; padding:8px; border-radius:7px;
  font-size:13.5px; font-weight:600; color:var(--muted); cursor:pointer; font-family:inherit}
.tabs button.on{background:var(--ink); color:#fff}
.err{color:#b91c1c; font-size:13px; margin-top:10px; min-height:18px}
.foot{color:#94a3b8; font-size:12px; text-align:center; margin-top:18px}
