:root{font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#1f2937;background:#f5f7f6}*{box-sizing:border-box}body{margin:0;min-width:1024px}.admin-login{min-height:100vh;display:grid;align-content:center;justify-items:center;gap:28px;background:radial-gradient(circle at 20% 10%,#d9eee7,transparent 36%),linear-gradient(145deg,#f5f7f6,#e7eeeb)}.admin-login-brand{display:flex;align-items:center;gap:15px;width:420px}.admin-login-brand>span{display:grid;place-items:center;width:62px;height:62px;color:#fff;background:linear-gradient(145deg,#0e7a5f,#0b5c48);border-radius:17px;font-size:22px;font-weight:800;box-shadow:0 12px 28px #0e7a5f3b}.admin-login-brand h1{margin:0;font-size:25px}.admin-login-brand p{margin:4px 0 0;color:#6b7280}.admin-login-card{width:420px;padding:30px 34px 22px;border:1px solid #e6ebe8;border-radius:14px;background:#fffffff0;box-shadow:0 14px 45px #1232261a}.admin-login-card h2{margin:0 0 24px}.admin-layout{min-height:100vh}.admin-logo{height:64px;display:flex;align-items:center;gap:10px;padding:0 22px;color:#fff;border-bottom:1px solid rgba(255,255,255,.09)}.admin-logo span{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#0e7a5f;font-weight:900}.admin-logo b{font-size:16px}.admin-header{height:64px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #ecefed}.admin-header>span{font-weight:600;color:#46514d}.admin-content{margin:20px;padding:24px;min-height:calc(100vh - 104px);background:#fff;border-radius:10px;box-shadow:0 1px 3px #0000000a}.page-title{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:22px}.page-title h1{margin:0 0 5px;font-size:23px}.page-title p{margin:0;color:#6b7280}.filter-bar{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:18px;padding:14px;background:#f7f9f8;border:1px solid #edf0ee;border-radius:9px}.leaderboard-summary{min-height:40px;display:flex;gap:12px;margin:0 0 18px}.winner{flex:1;display:grid;grid-template-columns:40px 1fr auto auto;gap:12px;align-items:center;padding:16px 18px;background:#f7faf8;border:1px solid #e6ede9;border-radius:10px}.winner-1{background:linear-gradient(100deg,#fff9df,#fff);border-color:#ead99b}.winner span{font-size:26px}.winner b{color:#0e7a5f;font-size:24px;font-variant-numeric:tabular-nums}.winner small{color:#6b7280}
