*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;background:#f4f6f9;color:#222;font-size:14px}
a{color:#1a4f8b;text-decoration:none}
a:hover{text-decoration:underline}
.admin-topbar{background:#0f2c52;color:#fff;height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;position:sticky;top:0;z-index:30}
.admin-topbar .brand{font-weight:800;font-size:18px;color:#fff}
.admin-topbar .user{color:#cfe0f3;font-size:13px}
.admin-topbar a{color:#e8a33d;margin-left:14px}
.admin-layout{display:flex;min-height:calc(100vh - 54px)}
.admin-side{width:200px;background:#13365f;color:#cfe0f3;padding:16px 0;flex:0 0 200px}
.admin-side a{display:block;color:#cfe0f3;padding:11px 20px;font-weight:600}
.admin-side a:hover,.admin-side a.active{background:#1a4f8b;color:#fff;text-decoration:none}
.admin-main{flex:1;padding:24px}
.admin-main h1{font-size:22px;margin-bottom:16px;color:#0f2c52}
.admin-main h2{font-size:17px;margin:18px 0 10px;color:#13365f}
.card{background:#fff;border:1px solid #e3e8ef;border-radius:10px;padding:20px;margin-bottom:20px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.grid-stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}
.stat{background:#fff;border:1px solid #e3e8ef;border-radius:10px;padding:18px}
.stat .n{font-size:30px;font-weight:800;color:#1a4f8b}
.stat .l{color:#667;font-size:13px;margin-top:4px}
label{display:block;font-weight:600;margin:14px 0 5px;color:#333}
input[type=text],input[type=url],input[type=number],textarea,select{width:100%;padding:9px 11px;border:1px solid #cdd5e0;border-radius:7px;font-size:14px;font-family:inherit}
textarea{min-height:90px;resize:vertical}
.btn{display:inline-block;background:#1a4f8b;color:#fff;padding:10px 18px;border:none;border-radius:7px;font-weight:600;cursor:pointer;font-size:14px}
.btn:hover{background:#11386a;text-decoration:none}
.btn-sm{padding:5px 11px;font-size:12px}
.btn-danger{background:#c0392b}
.btn-ghost{background:#eee;color:#333}
table{width:100%;border-collapse:collapse;background:#fff;margin-top:6px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #eee;font-size:13px}
th{background:#f7f9fc;color:#455}
tr:hover td{background:#fafcff}
.badge{display:inline-block;background:#eef4fb;color:#1a4f8b;padding:2px 9px;border-radius:20px;font-size:12px}
.bar{height:14px;background:#1a4f8b;border-radius:4px;display:inline-block;vertical-align:middle}
.barwrap{margin:6px 0}
.login-wrap{display:flex;align-items:center;justify-content:center;height:100vh}
.login-card{background:#fff;padding:34px 30px;border-radius:12px;width:360px;box-shadow:0 6px 30px rgba(0,0,0,.12)}
.login-card h1{text-align:center;color:#0f2c52;margin-bottom:18px;font-size:22px}
.err{color:#c0392b;margin-bottom:10px;font-size:13px}
.hint{color:#8794a6;font-size:12px;margin-top:4px}
.ok{color:#1e8e3e;font-size:13px;margin-bottom:10px}
