* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:'Microsoft YaHei','PingFang SC',sans-serif; background:#f0f2f5; color:#333; font-size:14px; }
button { cursor:pointer; border:none; background:#2b6cb0; color:#fff; padding:7px 16px; border-radius:4px; font-size:13px; }
button:hover { opacity:.88; }
button.btn-gray { background:#a0aec0; }
button.btn-green { background:#38a169; }
button.btn-red { background:#e53e3e; }
button.btn-sm { padding:3px 10px; font-size:12px; }
input, select, textarea { padding:7px 10px; border:1px solid #cbd5e0; border-radius:4px; font-size:13px; outline:none; }
input:focus, select:focus, textarea:focus { border-color:#2b6cb0; }
table { width:100%; border-collapse:collapse; background:#fff; }
th { background:#f7fafc; color:#4a5568; font-weight:600; padding:9px 8px; border-bottom:2px solid #e2e8f0; white-space:nowrap; font-size:12px; text-align:left; }
td { padding:8px; border-bottom:1px solid #edf2f7; font-size:13px; }
tr:hover td { background:#f7fafc; }

.login-wrap { display:flex; align-items:center; justify-content:center; min-height:100vh; background:linear-gradient(135deg,#1a365d,#2b6cb0); }
.login-box { background:#fff; padding:38px 42px; border-radius:10px; width:340px; box-shadow:0 12px 40px rgba(0,0,0,.25); }
.login-logo { font-size:22px; font-weight:700; text-align:center; color:#1a365d; }
.login-sub { text-align:center; color:#718096; font-size:12px; margin:8px 0 24px; }
.login-box input { width:100%; margin-bottom:12px; padding:11px; }
.login-box button { width:100%; padding:11px; font-size:15px; }
.login-msg { color:#e53e3e; text-align:center; margin-top:10px; font-size:13px; min-height:18px; }

.sidebar { position:fixed; left:0; top:0; bottom:0; width:170px; background:#1a365d; color:#fff; display:flex; flex-direction:column; z-index:10; }
.side-logo { padding:18px 16px; font-size:18px; font-weight:700; border-bottom:1px solid rgba(255,255,255,.12); }
#navMenu { flex:1; overflow-y:auto; padding:8px 0; }
#navMenu a { display:block; padding:10px 18px; color:#cbd5e0; text-decoration:none; font-size:13.5px; }
#navMenu a:hover { background:rgba(255,255,255,.08); color:#fff; }
#navMenu a.active { background:#2b6cb0; color:#fff; }
.side-user { padding:14px 18px; border-top:1px solid rgba(255,255,255,.12); font-size:12.5px; }
.side-user span { display:block; margin-bottom:6px; color:#e2e8f0; }
.side-user a { color:#90cdf4; text-decoration:none; margin-right:12px; font-size:12.5px; }

.main { margin-left:170px; min-height:100vh; }
.topbar { background:#fff; padding:14px 24px; border-bottom:1px solid #e2e8f0; display:flex; justify-content:space-between; align-items:center; position:sticky; top:0; z-index:5; }
.topbar h2 { font-size:17px; color:#1a202c; }
.top-actions button { margin-left:8px; }
.page-body { padding:20px 24px; }

.card { background:#fff; border-radius:6px; padding:16px; margin-bottom:16px; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.card h3 { font-size:15px; margin-bottom:12px; color:#2d3748; }
.toolbar { display:flex; gap:8px; margin-bottom:12px; flex-wrap:wrap; align-items:center; }
.toolbar input[type=text], .toolbar select { min-width:180px; }
.stat-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:12px; margin-bottom:16px; }
.stat-item { background:#fff; border-radius:6px; padding:16px; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.stat-item .num { font-size:24px; font-weight:700; color:#2b6cb0; margin-top:4px; }
.stat-item .lbl { color:#718096; font-size:12.5px; }
.stat-item.warn .num { color:#e53e3e; }

.modal-mask { position:fixed; inset:0; background:rgba(0,0,0,.45); display:flex; align-items:center; justify-content:center; z-index:50; }
.modal { background:#fff; border-radius:8px; padding:24px; width:420px; max-width:94vw; max-height:88vh; overflow-y:auto; }
.modal-lg { width:860px; max-width:96vw; }
.modal h3 { margin-bottom:14px; }
.modal input, .modal select, .modal textarea { width:100%; margin-bottom:10px; }
.modal-actions { margin-top:14px; text-align:right; gap:8px; display:flex; justify-content:flex-end; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }
.grid3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:0 14px; }
.form-row { margin-bottom:10px; }
.form-row label { display:block; font-size:12.5px; color:#4a5568; margin-bottom:3px; }
.badge { display:inline-block; padding:2px 9px; border-radius:10px; font-size:11.5px; }
.badge-green { background:#c6f6d5; color:#22543d; }
.badge-yellow { background:#fefcbf; color:#744210; }
.badge-red { background:#fed7d7; color:#742a2a; }
.badge-blue { background:#bee3f8; color:#2c5282; }
.badge-gray { background:#e2e8f0; color:#4a5568; }
.item-rows td input { width:100%; padding:5px 7px; }
.mono { font-family:Consolas,monospace; font-size:12.5px; }
.link { color:#2b6cb0; cursor:pointer; text-decoration:underline; margin-right:8px; font-size:12.5px; }
.empty { text-align:center; color:#a0aec0; padding:30px; }
textarea.bom-input { width:100%; height:220px; font-family:Consolas,monospace; font-size:13px; }
.tag { display:inline-block; background:#edf2f7; color:#4a5568; border-radius:4px; padding:1px 8px; margin-right:4px; font-size:12px; }
.actions-cell a { margin-right:6px; }
.trend-bar { display:flex; align-items:flex-end; gap:10px; height:150px; padding:10px 0; }
.trend-col { display:flex; flex-direction:column; align-items:center; justify-content:flex-end; flex:1; }
.trend-col .v { font-size:10.5px; color:#718096; margin-bottom:2px; }
.trend-col .bar { width:26px; border-radius:3px 3px 0 0; }
.bar-q { background:#2b6cb0; }
.bar-s { background:#38a169; }
.trend-col .d { font-size:10.5px; color:#a0aec0; margin-top:4px; }
@media (max-width:900px){ .sidebar{width:60px} .side-logo{font-size:12px;padding:16px 8px} #navMenu a{padding:12px 6px;font-size:11px;word-break:break-all} .main{margin-left:60px} .grid2,.grid3{grid-template-columns:1fr} }
