*{margin:0;padding:0;box-sizing:border-box}
:root{
    --bg:#f8f5ff;--bg-card:#ffffff;--bg-input:#faf8ff;
    --border:#e8e0f0;--border-focus:#d0c4f0;
    --text:#2d2b3a;--text-muted:#9892a6;--text-bright:#1a1828;
    --accent:#ff4d8a;--accent2:#6c63ff;--accent3:#36d7b7;
    --grad:linear-gradient(135deg,#ff4d8a,#c44dff);
    --grad2:linear-gradient(135deg,#6c63ff,#36d7b7);
    --grad3:linear-gradient(135deg,#ff4d8a,#ff8c42);
    --shadow:0 2px 12px rgba(108,99,255,.08);
    --shadow-lg:0 8px 32px rgba(108,99,255,.12);
}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;min-height:100dvh;overflow:hidden}
body::before{content:'';position:fixed;inset:0;background:radial-gradient(circle at 20% 30%,rgba(108,99,255,.04) 0,transparent 50%),radial-gradient(circle at 80% 70%,rgba(255,77,138,.04) 0,transparent 50%);pointer-events:none;z-index:0}
body::after{content:'';position:fixed;inset:0;background-image:radial-gradient(circle,rgba(108,99,255,.07) 1px,transparent 1px);background-size:28px 28px;pointer-events:none;z-index:0}
.page{height:100vh;height:100dvh;display:flex;flex-direction:column;position:relative;z-index:1}

.top-header{background:var(--bg-card);border-bottom:1px solid var(--border);padding:0 32px;height:64px;display:flex;align-items:center;position:relative;box-shadow:0 1px 8px rgba(108,99,255,.06)}
.top-header-inner{width:100%;max-width:1400px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}
.brand{display:flex;align-items:center;gap:10px}
.brand-icon{width:28px;height:28px;color:var(--accent);filter:drop-shadow(0 2px 4px rgba(255,77,138,.25))}
.brand-text{font-size:18px;font-weight:700;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.link-admin{font-size:13px;color:var(--text-muted);text-decoration:none;font-weight:600;padding:6px 14px;border:1px solid var(--border);border-radius:20px;transition:.2s}
.link-admin:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,77,138,.04)}

.home-content{flex:1;overflow-y:auto;padding:32px}
.home-title{font-size:26px;font-weight:700;margin-bottom:6px;color:var(--text-bright)}
.home-desc{color:var(--text-muted);margin-bottom:28px;font-size:14px}
.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}

.room-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:22px;cursor:pointer;transition:.2s;box-shadow:var(--shadow)}
.room-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.room-card-name{font-size:16px;font-weight:700;margin-bottom:8px;color:var(--text-bright)}
.room-card-meta{display:flex;gap:12px;font-size:13px;color:var(--text-muted)}

.chat-header{background:var(--bg-card);border-bottom:1px solid var(--border);padding:0 20px;height:60px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 6px rgba(108,99,255,.05)}
.chat-header-left{display:flex;align-items:center;gap:12px}
.chat-title{font-size:16px;font-weight:700;color:var(--text-bright)}
.chat-status{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--accent3);font-weight:600;margin-top:2px}
.lock-icon{width:12px;height:12px;filter:drop-shadow(0 1px 2px rgba(54,215,183,.3))}
.btn-icon{width:36px;height:36px;border:1px solid var(--border);background:var(--bg-card);border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:.2s}
.btn-icon:hover{border-color:var(--accent2);color:var(--accent2);background:rgba(108,99,255,.04)}
.btn-icon svg{width:18px;height:18px}

.chat-body{flex:1;display:flex;overflow:hidden}
.messages-area{flex:1;overflow-y:auto;padding:24px 24px 24px 24px;display:flex;flex-direction:column}

.message{display:flex;gap:10px;margin-bottom:16px;animation:msgIn .2s ease-out;max-width:70%}
@keyframes msgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.msg-mine{align-self:flex-end}
.msg-other{align-self:flex-start}
.msg-avatar{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff;flex-shrink:0;transition:.2s;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.msg-avatar-img{width:38px;height:38px;max-width:38px;max-height:38px;object-fit:cover;border-radius:50%;display:block;flex-shrink:0}
.msg-avatar:hover{transform:scale(1.1)}
.msg-body{flex:1;min-width:0;display:flex;flex-direction:column}
.msg-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.msg-name{font-weight:600;font-size:13px;color:var(--text)}
.msg-time{font-size:11px;color:var(--text-muted)}
.msg-time-right{align-self:flex-end;margin-top:2px;font-size:11px;color:rgba(255,255,255,.7)}

.msg-text{font-size:14px;line-height:1.6;color:var(--text);word-break:break-word;padding:10px 16px;border-radius:18px;display:inline-block;max-width:100%}
.msg-other .msg-text{background:var(--bg-card);border:1px solid var(--border);border-radius:4px 18px 18px 18px}
.msg-mine .msg-text{background:var(--grad);color:#fff;border-radius:18px 4px 18px 18px}

.msg-file{display:inline-flex;align-items:center;gap:10px;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;cursor:pointer;margin-top:4px;font-size:13px;color:var(--text);transition:.2s}
.msg-mine .msg-file{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.25);color:#fff}
.msg-file:hover{border-color:var(--accent2);box-shadow:0 2px 8px rgba(108,99,255,.12)}
.msg-file svg{width:20px;height:20px;color:var(--accent2)}
.msg-mine .msg-file svg{color:#fff}
.msg-file-info{display:flex;flex-direction:column;gap:2px}
.msg-file-name{font-weight:600;color:var(--text-bright)}
.msg-mine .msg-file-name{color:#fff}
.msg-file-size{font-size:11px;color:var(--text-muted)}
.msg-mine .msg-file-size{color:rgba(255,255,255,.7)}
.msg-image{max-width:320px;border-radius:14px;cursor:pointer;margin-top:4px;border:1px solid var(--border);transition:.2s}
.msg-mine .msg-image{border-color:rgba(255,255,255,.3)}
.msg-image:hover{transform:scale(1.02);box-shadow:0 4px 16px rgba(108,99,255,.15)}
.msg-video{max-width:400px;border-radius:14px;margin-top:4px;border:1px solid var(--border)}
.msg-audio{width:280px;margin-top:4px;border-radius:14px}

.users-panel{width:240px;background:var(--bg-card);border-left:1px solid var(--border);display:flex;flex-direction:column;transition:.3s;box-shadow:-1px 0 8px rgba(108,99,255,.05)}
.users-panel.hidden{display:none}
.users-panel-header{padding:16px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:700;color:var(--text-bright)}
.user-count{background:var(--grad);padding:2px 10px;border-radius:12px;font-size:11px;color:#fff;font-weight:700}
.users-list{flex:1;overflow-y:auto;padding:8px}
.user-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;transition:.15s;margin-bottom:2px}
.user-item:hover{background:rgba(108,99,255,.04)}
.user-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;color:#fff;flex-shrink:0;box-shadow:0 1px 4px rgba(0,0,0,.1)}
.user-name{font-size:13px;font-weight:600;color:var(--text)}

.chat-input-area{background:var(--bg-card);border-top:1px solid var(--border);padding:12px 20px;box-shadow:0 -1px 6px rgba(108,99,255,.03)}
.input-toolbar{display:flex;gap:4px;margin-bottom:10px}
.toolbar-btn{width:36px;height:36px;border:1px solid var(--border);background:var(--bg-card);border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:.2s;position:relative}
.toolbar-btn:hover{border-color:var(--accent2);color:var(--accent2);background:rgba(108,99,255,.04)}
.toolbar-btn svg{width:16px;height:16px}
.toolbar-divider{width:1px;background:var(--border);margin:0 4px}
.input-row{display:flex;gap:8px;align-items:center}
.msg-input{flex:1;padding:10px 16px;border:1px solid var(--border);border-radius:20px;font-size:14px;outline:none;transition:.2s;background:var(--bg-input);color:var(--text)}
.msg-input:focus{border-color:var(--accent2);box-shadow:0 0 0 3px rgba(108,99,255,.08);background:#fff}
.msg-input::placeholder{color:var(--text-muted)}
.send-btn{width:40px;height:40px;border:none;background:var(--grad);color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;flex-shrink:0;box-shadow:0 2px 8px rgba(255,77,138,.25)}
.send-btn:hover{transform:scale(1.08);box-shadow:0 4px 16px rgba(255,77,138,.35)}
.send-btn svg{width:18px;height:18px}
.send-btn:disabled{background:var(--border);cursor:not-allowed;transform:none;box-shadow:none}

.emoji-container{position:relative}
.emoji-picker{position:absolute;bottom:44px;left:0;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:12px;box-shadow:var(--shadow-lg);width:320px;z-index:50}
.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px}
.emoji-item{width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;border-radius:8px;transition:.12s}
.emoji-item:hover{background:rgba(255,77,138,.08);transform:scale(1.2)}

.modal-overlay{position:fixed;inset:0;background:rgba(45,43,58,.35);display:flex;align-items:center;justify-content:center;z-index:100;backdrop-filter:blur(6px)}
.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:20px;padding:32px;width:90%;max-width:420px;position:relative;box-shadow:var(--shadow-lg);overflow:hidden}
.modal::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--grad)}
.modal h3{font-size:18px;font-weight:700;margin-bottom:6px;color:var(--text-bright)}
.modal-desc{font-size:14px;color:var(--text-muted);margin-bottom:18px}
.form-input{width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:12px;font-size:14px;outline:none;transition:.2s;background:var(--bg-input);color:var(--text)}
.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,77,138,.08)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border:none;border-radius:12px;font-size:14px;font-weight:700;cursor:pointer;transition:.2s}
.btn-primary{background:var(--grad);color:#fff;box-shadow:0 2px 10px rgba(255,77,138,.2)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(255,77,138,.3)}

.toast{position:fixed;bottom:24px;right:24px;padding:12px 20px;background:var(--bg-card);color:var(--text);border:1px solid var(--border);border-radius:12px;font-size:14px;font-weight:600;display:none;z-index:200;box-shadow:var(--shadow-lg)}
.toast.show{display:flex;animation:slideIn .25s}
.toast.success{border-color:var(--accent3);color:var(--accent3)}
.toast.error{border-color:var(--accent);color:var(--accent)}
@keyframes slideIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}

.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}
.empty-icon{width:48px;height:48px;margin:0 auto 16px;opacity:.3}
.empty-state p{font-size:14px;font-weight:500}

.join-error{background:rgba(255,77,138,.06);border:1px solid rgba(255,77,138,.3);color:var(--accent);padding:10px 14px;border-radius:10px;font-size:13px;font-weight:600;margin-bottom:12px;display:none}
.join-error.show{display:block}

::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}

.avatar-0{background:linear-gradient(135deg,#ff4d8a,#ff8c42)}.avatar-1{background:linear-gradient(135deg,#6c63ff,#36d7b7)}
.avatar-2{background:linear-gradient(135deg,#c44dff,#6c63ff)}.avatar-3{background:linear-gradient(135deg,#ff8c42,#ffcc02)}
.avatar-4{background:linear-gradient(135deg,#ff4d4d,#ff4d8a)}.avatar-5{background:linear-gradient(135deg,#ff4d8a,#c44dff)}
.avatar-6{background:linear-gradient(135deg,#36d7b7,#6c63ff)}.avatar-7{background:linear-gradient(135deg,#84cc16,#36d7b7)}

@media(max-width:768px){
    .users-panel{position:fixed;right:0;top:60px;bottom:0;z-index:50;width:260px;box-shadow:-4px 0 24px rgba(0,0,0,.1);transform:translateX(100%);transition:.3s}
    .users-panel.show{transform:translateX(0)}
    .users-panel.hidden{transform:translateX(100%)}
    .room-grid{grid-template-columns:1fr}
    .chat-input-area{padding:10px 14px}
    .msg-input{font-size:16px}
    .top-header{padding:0 16px}
    .home-content{padding:20px 16px}
    .home-title{font-size:22px}
    .messages-area{padding:16px}
    .message{max-width:85%}
    .msg-text{font-size:13px;padding:8px 14px}
    .msg-image{max-width:240px}
    .msg-video{max-width:280px}
    .msg-audio{width:220px}
}
@media(max-width:480px){
    .chat-header{padding:0 12px}
    .chat-title{font-size:14px}
    .toolbar-btn{width:32px;height:32px}
    .toolbar-btn svg{width:14px;height:14px}
    .send-btn{width:36px;height:36px}
    .msg-avatar{width:32px;height:32px;font-size:12px}
    .emoji-picker{width:260px;right:0;left:auto}
    .emoji-grid{grid-template-columns:repeat(7,1fr)}
    .emoji-item{width:32px;height:32px}
}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,77,138,.2)}50%{box-shadow:0 0 0 10px rgba(255,77,138,0)}}
