*{box-sizing:border-box}body{margin:0;font-family:Inter,"Noto Sans TC",Arial,sans-serif;background:#f5f7fb;color:#18212f}button,input{font:inherit}#app{display:none;min-height:100vh}aside{width:245px;background:#111827;color:white;padding:22px 14px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0}.brand{display:flex;align-items:center;gap:12px;padding:8px 12px 28px}.logo,.big-logo{display:grid;place-items:center;background:#fff;color:#111827;font-weight:900}.logo{width:42px;height:42px;border-radius:12px;font-size:26px}.brand b{display:block;font-size:18px}.brand small{color:#9ca3af}nav{display:grid;gap:6px}nav button,.logout{border:0;background:transparent;color:#d1d5db;text-align:left;padding:13px 14px;border-radius:10px;cursor:pointer}nav button:hover,nav button.active{background:#263244;color:white}.logout{margin-top:auto;background:#1f2937}main{margin-left:245px;padding:28px 34px}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:25px}h1{margin:0 0 5px;font-size:28px}header p{margin:0;color:#6b7280}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card,.panel{background:white;border:1px solid #e5e7eb;border-radius:16px;padding:20px;box-shadow:0 2px 8px #00000008}.card small{color:#6b7280}.num{font-size:30px;font-weight:800;margin-top:8px}.toolbar{display:flex;gap:10px;margin-bottom:16px}.toolbar input{flex:1;max-width:420px}.input,select,.toolbar input{border:1px solid #d1d5db;border-radius:10px;padding:11px 13px;background:white}.primary{background:#111827;color:white;border:0;border-radius:10px;padding:11px 16px;cursor:pointer}.danger{background:#fee2e2;color:#991b1b;border:0;border-radius:8px;padding:8px 11px;cursor:pointer}.ok{background:#dcfce7;color:#166534;border:0;border-radius:8px;padding:8px 11px;cursor:pointer}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:13px 10px;border-bottom:1px solid #eef0f3;text-align:left;font-size:14px}.badge{display:inline-block;padding:4px 9px;border-radius:999px;font-size:12px}.normal{background:#dcfce7;color:#166534}.suspended{background:#fef3c7;color:#92400e}.banned{background:#fee2e2;color:#991b1b}.modal{position:fixed;inset:0;background:#0007;display:grid;place-items:center;padding:20px}.modal-card{background:white;border-radius:18px;padding:24px;width:min(650px,100%);max-height:90vh;overflow:auto}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.kv{padding:12px;background:#f8fafc;border-radius:10px}.login{min-height:100vh;display:grid;place-items:center;background:#111827}.login-card{width:360px;background:white;border-radius:20px;padding:35px;text-align:center}.big-logo{width:70px;height:70px;border-radius:20px;margin:auto;font-size:42px}.login-card input{display:block;width:100%;margin:10px 0;padding:13px;border:1px solid #d1d5db;border-radius:10px}.login-card button{width:100%;padding:13px;background:#111827;color:white;border:0;border-radius:10px;margin-top:8px}.login-card p{color:#6b7280}.error{color:#b91c1c;margin-top:12px}@media(max-width:900px){aside{width:76px}.brand div,nav button{font-size:0}.brand{justify-content:center;padding-left:0;padding-right:0}nav button:before{font-size:20px}main{margin-left:76px;padding:20px}.cards{grid-template-columns:repeat(2,1fr)}}
.success{color:#166534;margin-top:12px}.login-card button:disabled{opacity:.6;cursor:not-allowed}
