* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: #f5f6fa; color: #333; }
.topbar { height: 52px; background: #2c3e50; color: #fff; display: flex; align-items: center; padding: 0 20px; }
.topbar .logo { font-weight: 700; font-size: 16px; }
.topbar .user { margin-left: auto; font-size: 13px; opacity: .85; }
.topbar .logout { color: #fff; margin-left: 16px; font-size: 13px; text-decoration: none; opacity: .85; }
.wrap { display: flex; min-height: calc(100vh - 52px); }
.side { width: 180px; background: #34495e; padding: 12px 0; }
.side a { display: block; color: #cfd8dc; padding: 12px 20px; text-decoration: none; font-size: 14px; }
.side a:hover { background: #3d566e; color: #fff; }
.main { flex: 1; padding: 22px; }
h2 { font-size: 18px; margin-bottom: 16px; }
.login { width: 320px; margin: 12vh auto; background: #fff; padding: 28px; border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,.08); }
.login h1 { font-size: 18px; text-align: center; margin-bottom: 20px; }
.login input { width: 100%; padding: 10px; margin-bottom: 12px; border: 1px solid #ddd; border-radius: 4px; }
.login button { width: 100%; padding: 10px; background: #2c7be5; color: #fff; border: 0; border-radius: 4px; cursor: pointer; }
.login .tip, .login .err { font-size: 12px; color: #999; text-align: center; margin-top: 10px; }
.login .err { color: #e74c3c; }
table { width: 100%; background: #fff; border-collapse: collapse; font-size: 13px; }
th, td { padding: 10px 12px; border-bottom: 1px solid #eee; text-align: left; }
th { background: #fafbfc; color: #666; font-weight: 600; }
tr:hover td { background: #fcfcfd; }
.btn { display: inline-block; padding: 5px 12px; background: #2c7be5; color: #fff; border-radius: 4px; text-decoration: none; font-size: 12px; border: 0; cursor: pointer; }
.btn.gray { background: #95a5a6; }
.btn.red { background: #e74c3c; }
.btn.green { background: #27ae60; }
form.inline { display: inline; }
input, select, textarea { padding: 8px; border: 1px solid #ddd; border-radius: 4px; font-size: 13px; }
.cards { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 20px; }
.card { background: #fff; border-radius: 8px; padding: 18px 22px; min-width: 150px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.card .num { font-size: 26px; font-weight: 700; color: #2c7be5; }
.card .label { font-size: 13px; color: #888; margin-top: 6px; }
.toolbar { margin-bottom: 14px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.toolbar input, .toolbar select { min-width: 160px; }
.pagination { margin-top: 14px; }
.tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; background: #ecf0f1; color: #555; }
.tag.ok { background: #e8f8f0; color: #27ae60; }
.tag.wait { background: #fef5e7; color: #e67e22; }
