*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Microsoft YaHei","PingFang SC",sans-serif;background:#f4f6f9;color:#222;font-size:14px}
a{color:#1a56b0;text-decoration:none}
.topbar{background:#1f3864;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:52px}
.topbar .brand{font-size:17px;font-weight:700}
.topbar nav{display:flex;gap:18px;align-items:center}
.topbar nav a{color:#dce6f7}
.topbar nav a:hover{color:#fff}
.topbar .user{color:#9fb8e8}
.topbar .logout{color:#f0b9b9}
.wrap{max-width:1280px;margin:18px auto;padding:0 16px}
.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.page-head h2{font-size:20px;color:#1f3864}
.search{display:flex;gap:6px}
.search input{padding:7px 10px;border:1px solid #c8d2e0;border-radius:4px;width:240px}
button{background:#1f3864;color:#fff;border:0;border-radius:4px;padding:8px 16px;cursor:pointer;font-size:14px}
button:hover{background:#2b4a80}
.cards{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.card{background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:12px 20px;min-width:130px;text-align:center}
.card .num{font-size:24px;font-weight:700;color:#1f3864}
.card .lbl{font-size:12px;color:#778;margin-top:4px}
.num.good,.good{color:#1e7d32}
.num.warn,.warn{color:#b26a00}
.red{color:#c62828}
.yel{color:#a07800}
table.grid{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e2e8f0;font-size:13px}
table.grid th{background:#1f3864;color:#fff;padding:8px 6px;font-weight:600;text-align:center}
table.grid td{border:1px solid #e8edf3;padding:7px 6px;text-align:center}
table.grid tr:nth-child(even) td{background:#fafbfd}
table.grid tr.done td{background:#eef7ee}
td.left,th.left{text-align:left}
.muted{color:#98a2b3;font-size:12px}
.empty{color:#98a2b3;padding:20px}
.tag{display:inline-block;padding:2px 8px;border-radius:10px;background:#e8edf3;color:#556;font-size:12px}
.tag.ok{background:#dcefdd;color:#1e7d32}
.foot{color:#8892a3;font-size:12px;margin-top:10px}
.meta-box{background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:10px 14px;margin-bottom:16px;display:flex;gap:22px;flex-wrap:wrap;font-size:13px;color:#445}
h3{margin:18px 0 8px;color:#1f3864;font-size:15px}
.login-box{max-width:380px;margin:8vh auto;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:32px;text-align:center}
.login-box h1{font-size:20px;color:#1f3864;margin-bottom:6px}
.login-box .sub{color:#8892a3;font-size:12px;margin-bottom:22px}
.login-box form{display:flex;flex-direction:column;gap:10px;text-align:left}
.login-box label{font-size:13px;color:#556}
.login-box input{padding:9px 10px;border:1px solid #c8d2e0;border-radius:4px}
.alert{padding:10px 14px;border-radius:4px;margin-bottom:14px;font-size:13px}
.alert.err{background:#fdecea;color:#c62828}
.alert.ok{background:#e8f5e9;color:#1e7d32}
.upload-box{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:26px}
.file-label{display:block;border:2px dashed #b9c6da;border-radius:6px;padding:34px;text-align:center;color:#667;cursor:pointer;margin-bottom:14px}
.file-label input{display:none}
.file-label:hover{border-color:#1f3864;color:#1f3864}
.tips{margin-top:16px;color:#8892a3;font-size:12px;padding-left:18px}
.back{font-size:13px}
.head-actions{display:flex;gap:10px;align-items:center}
.head-actions .inline{display:inline}
.sync-btn{background:#1e7d32}
.sync-btn:hover{background:#26933d}
