*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Helvetica Neue",Arial,sans-serif;background:#f5f7fb;color:#111}a{text-decoration:none;color:#2563eb}button,input,textarea{font:inherit}
.auth-body{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(180deg,#eef4ff,#f7f9fc)}
.auth-card{width:min(100%,420px);background:#fff;border-radius:20px;padding:28px;box-shadow:0 18px 50px rgba(0,0,0,.08)}
.auth-card h1{margin:0 0 8px;font-size:28px}.sub{margin:0 0 18px;color:#667085}.form-grid{display:grid;gap:14px}.form-grid label{display:grid;gap:8px;font-size:14px;color:#344054}.form-grid input{height:46px;border:1px solid #d0d5dd;border-radius:12px;padding:0 14px;background:#fff}.form-msg{min-height:24px;margin-top:12px;font-size:14px}.form-msg.ok{color:#067647}.form-msg.err{color:#b42318}.tip{margin:16px 0 0;color:#475467}.default-box{margin-top:16px;padding:14px;border-radius:14px;background:#f8fafc;color:#344054;font-size:14px;line-height:1.7}.small{font-size:12px;color:#667085}
.btn{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:0 16px;border:none;border-radius:12px;background:#111827;color:#fff;cursor:pointer}.btn:hover{opacity:.92}.btn-primary{background:#2563eb}.btn-light{background:#e5e7eb;color:#111827}
.chat-shell,.admin-shell{min-height:100vh;display:grid;grid-template-columns:300px 1fr}.sidebar{padding:22px;background:#111827;color:#fff;display:flex;flex-direction:column;gap:16px}.brand{font-size:24px;font-weight:800}.user-card,.panel{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:16px}.line{display:flex;justify-content:space-between;gap:10px;font-size:14px;padding:4px 0}.panel-title{font-weight:700;margin-bottom:12px}.online-users{display:grid;gap:10px}.online-item{display:flex;justify-content:space-between;gap:8px;font-size:14px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.06)}.online-item em{font-style:normal;color:#c7d2fe}.sidebar-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:auto}
.chat-main{padding:22px;display:grid;grid-template-rows:auto 1fr auto;gap:16px}.chat-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.chat-header h1,.admin-header h1{margin:0;font-size:28px}.chat-header p,.admin-header p{margin:6px 0 0;color:#667085}.mute-notice{color:#b42318;font-weight:700}
.messages{background:#fff;border-radius:20px;padding:18px;box-shadow:0 12px 35px rgba(15,23,42,.06);overflow:auto;max-height:calc(100vh - 210px)}.message{padding:14px 0;border-bottom:1px solid #eef2f7}.message:last-child{border-bottom:none}.meta{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}.name{font-weight:700}.time{font-size:12px;color:#667085}.bubble{line-height:1.7;white-space:pre-wrap;word-break:break-word}.badge{display:inline-block;font-style:normal;font-size:12px;background:#111827;color:#fff;border-radius:999px;padding:2px 8px;margin-left:8px}
.composer{display:grid;grid-template-columns:1fr 120px;gap:12px}.composer textarea{width:100%;height:78px;resize:none;border:1px solid #d0d5dd;border-radius:16px;padding:14px;background:#fff}
.admin-shell{grid-template-columns:1fr}.admin-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:22px 22px 0}.admin-grid{padding:22px;display:grid;grid-template-columns:1fr;gap:16px}.admin-table{width:100%;border-collapse:collapse;background:#fff;border-radius:16px;overflow:hidden}.admin-table th,.admin-table td{padding:12px;border-bottom:1px solid #eef2f7;text-align:left;font-size:14px;vertical-align:top}.admin-table th{background:#f8fafc}.admin-table .ops{display:flex;gap:8px;flex-wrap:wrap}.admin-table button{border:none;background:#111827;color:#fff;border-radius:10px;padding:8px 10px;cursor:pointer}
@media (max-width: 900px){.chat-shell{grid-template-columns:1fr}.sidebar{order:2}.messages{max-height:none;height:50vh}.composer{grid-template-columns:1fr}.chat-header,.admin-header{flex-direction:column}}
