* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; background:#f5f7fa; color:#333; }
a { color:#2563eb; text-decoration:none; }
.container { max-width:1140px; margin:0 auto; padding:0 16px; }

.auth-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px; }
.auth-card { width:100%; max-width:400px; background:#fff; border-radius:12px; box-shadow:0 4px 24px rgba(0,0,0,.08); padding:36px 32px; }
.auth-card h1 { font-size:22px; text-align:center; margin-bottom:6px; }
.auth-card .sub { text-align:center; color:#999; font-size:13px; margin-bottom:24px; }
.form-item { margin-bottom:16px; }
.form-item label { display:block; font-size:13px; color:#555; margin-bottom:6px; }
.input { width:100%; height:40px; padding:0 12px; border:1px solid #d9d9d9; border-radius:6px; font-size:14px; background:#fff; }
.input:focus { border-color:#2563eb; outline:none; }
.btn { display:block; width:100%; height:42px; border:none; border-radius:6px; font-size:15px; cursor:pointer; background:#2563eb; color:#fff; }
.btn:hover { background:#1d4ed8; }
.btn:disabled { background:#93c5fd; cursor:not-allowed; }
.btn-sm { display:inline-block; width:auto; height:30px; padding:0 12px; font-size:13px; line-height:30px; border:none; border-radius:4px; cursor:pointer; background:#2563eb; color:#fff; }
.btn-sm.danger { background:#dc2626; }
.btn-sm.danger:hover { background:#b91c1c; }
.auth-foot { text-align:center; margin-top:16px; font-size:13px; color:#666; }
.msg { margin-top:12px; font-size:13px; color:#e53e3e; min-height:18px; word-break:break-all; }
.msg.ok { color:#16a34a; }

.nav { background:#fff; border-bottom:1px solid #eee; }
.nav-inner { display:flex; align-items:center; justify-content:space-between; height:56px; }
.nav .brand { font-size:17px; font-weight:600; color:#111; }
.nav .links a { margin-left:20px; font-size:14px; color:#555; cursor:pointer; }

.layout { display:flex; min-height:calc(100vh - 56px); }
.sidebar { width:190px; background:#fff; border-right:1px solid #eee; padding:12px 0; flex-shrink:0; }
.sidebar nav a { display:block; padding:12px 20px; font-size:14px; color:#555; cursor:pointer; border-left:3px solid transparent; }
.sidebar nav a:hover { background:#f9fafb; }
.sidebar nav a.active { color:#2563eb; background:#eff6ff; border-left-color:#2563eb; font-weight:600; }
.content { flex:1; padding:24px; min-width:0; }

.section-title { font-size:16px; font-weight:600; margin:8px 0 12px; }
.cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:16px; margin-bottom:8px; }
.card { background:#fff; border-radius:10px; padding:20px; box-shadow:0 1px 6px rgba(0,0,0,.05); }
.card .label { font-size:13px; color:#999; }
.card .value { font-size:22px; font-weight:600; margin-top:6px; word-break:break-all; }
.card .value.small { font-size:15px; }

.table-wrap { background:#fff; border-radius:10px; box-shadow:0 1px 6px rgba(0,0,0,.05); overflow:auto; }
table { width:100%; border-collapse:collapse; min-width:640px; }
th,td { padding:12px 14px; text-align:left; font-size:14px; border-bottom:1px solid #f0f0f0; white-space:nowrap; }
th { background:#fafafa; color:#666; font-weight:600; }
tr:last-child td { border-bottom:none; }
.tag { display:inline-block; padding:2px 8px; border-radius:4px; font-size:12px; }
.tag-green { background:#e6f7ee; color:#16a34a; }
.tag-gray { background:#f0f0f0; color:#666; }
.tag-red { background:#fee2e2; color:#dc2626; }
.tag-orange { background:#fef3e2; color:#d97706; }
.empty { text-align:center; color:#999; padding:40px 0; }
.muted { color:#999; font-size:13px; }
.link-btn { color:#2563eb; cursor:pointer; margin-right:14px; font-size:13px; background:none; border:none; }
.link-btn.danger { color:#dc2626; }
.mono { font-family:ui-monospace,Menlo,Consolas,monospace; font-size:12px; }
