@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;600&display=swap');

:root {
  --bg-primary: #0a0a0f;
  --bg-secondary: #111118;
  --bg-card: #16161e;
  --bg-input: #1e1e2a;
  --bg-hover: #1a1a24;
  --bg-msg-self: #1a3a5c;
  --bg-msg-other: #1e1e2a;
  --accent: #3b82f6;
  --accent-bright: #60a5fa;
  --accent-glow: rgba(59,130,246,0.18);
  --text-primary: #e8e8f0;
  --text-secondary: #8888a8;
  --text-muted: #55556a;
  --border: rgba(255,255,255,0.07);
  --border-accent: rgba(59,130,246,0.35);
  --shadow: 0 8px 32px rgba(0,0,0,0.5);
  --radius: 16px;
  --radius-sm: 10px;
  --font: 'Noto Sans SC', -apple-system, BlinkMacSystemFont, sans-serif;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html,body,#app{width:100%;height:100%;overflow:hidden;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;}
::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:2px}
button{font-family:var(--font);cursor:pointer;border:none;outline:none;transition:all 0.15s ease;}
input,textarea{font-family:var(--font);outline:none;border:none;background:none;color:var(--text-primary);}

.app,.lobby,.chat{width:100%;height:100%;display:flex;flex-direction:column;}
.app{background:radial-gradient(ellipse 80% 40% at 50% -10%,rgba(59,130,246,0.08) 0%,transparent 60%),var(--bg-primary);}

.fade-in{animation:fade-in 0.3s ease;}
@keyframes fade-in{from{opacity:0}to{opacity:1}}

/* Lobby */
.lobby{align-items:center;justify-content:center;padding:24px;gap:12px;}
.lobby-logo{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:16px;}
.lobby-logo svg{filter:drop-shadow(0 0 18px rgba(59,130,246,0.5));animation:pulse-glow 3s ease-in-out infinite;}
@keyframes pulse-glow{0%,100%{filter:drop-shadow(0 0 18px rgba(59,130,246,0.4))}50%{filter:drop-shadow(0 0 28px rgba(59,130,246,0.8))}}
.lobby-title{font-size:26px;font-weight:600;letter-spacing:.02em;}
.lobby-subtitle{font-size:12px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;display:flex;align-items:center;gap:6px;}
.lobby-card{width:100%;max-width:380px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow);}
.field-label{font-size:11px;font-weight:500;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px;}
.field-input{width:100%;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;font-size:15px;color:var(--text-primary);transition:border-color .15s;}
.field-input:focus{border-color:var(--border-accent);box-shadow:0 0 0 3px var(--accent-glow);}
.field-input::placeholder{color:var(--text-muted);}
.btn-primary{width:100%;padding:13px;background:var(--accent);color:#fff;font-size:15px;font-weight:500;border-radius:var(--radius-sm);letter-spacing:.02em;box-shadow:0 4px 16px rgba(59,130,246,0.3);}
.btn-primary:hover{background:var(--accent-bright);transform:translateY(-1px);}
.btn-primary:active{transform:translateY(0);}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;}
.btn-secondary{width:100%;padding:13px;background:var(--bg-input);color:var(--text-secondary);font-size:15px;border-radius:var(--radius-sm);border:1px solid var(--border);}
.btn-secondary:hover{background:var(--bg-hover);color:var(--text-primary);}
.divider{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:12px;}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--border);}
.security-badge{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted);justify-content:center;margin-top:4px;}
.security-badge span{color:#22c55e;}

/* Chat */
.chat{position:relative;overflow:hidden;}
.chat-header{display:flex;align-items:center;padding:12px 16px;padding-top:calc(12px + var(--safe-top));background:rgba(17,17,24,0.92);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);gap:12px;z-index:10;}
.chat-header-info{flex:1;min-width:0;}
.chat-header-title{font-size:16px;font-weight:600;}
.chat-header-sub{font-size:12px;color:var(--text-muted);display:flex;align-items:center;gap:5px;}
.online-dot{width:6px;height:6px;background:#22c55e;border-radius:50%;display:inline-block;box-shadow:0 0 6px #22c55e;}
.header-btn{width:36px;height:36px;background:var(--bg-input);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);flex-shrink:0;}
.header-btn:hover{background:var(--bg-hover);color:var(--text-primary);}
.lock-icon{color:var(--accent);}

.msg-list{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 12px 8px;display:flex;flex-direction:column;gap:4px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
.empty-hint{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:var(--text-muted);font-size:13px;line-height:1.8;gap:4px;}

.sys-msg{text-align:center;font-size:11px;color:var(--text-muted);background:var(--bg-secondary);border:1px solid var(--border);border-radius:20px;padding:3px 10px;align-self:center;margin:6px 0;}

.msg-row{display:flex;align-items:flex-end;gap:8px;max-width:100%;animation:msg-in .2s ease;}
@keyframes msg-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.msg-row.self{flex-direction:row-reverse;}
.msg-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--accent) 0%,#7c3aed 100%);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff;flex-shrink:0;margin-bottom:18px;}
.msg-avatar.self{background:linear-gradient(135deg,#22c55e 0%,#16a34a 100%);}
.msg-body{max-width:calc(100% - 46px);}
.msg-sender{font-size:11px;color:var(--text-muted);margin-bottom:3px;padding:0 6px;}
.msg-bubble{position:relative;padding:9px 13px;border-radius:18px;background:var(--bg-msg-other);border:1px solid var(--border);color:var(--text-primary);font-size:15px;line-height:1.5;word-break:break-word;white-space:pre-wrap;}
.msg-row.self .msg-bubble{background:var(--bg-msg-self);border-color:rgba(59,130,246,0.2);border-bottom-right-radius:5px;}
.msg-row:not(.self) .msg-bubble{border-bottom-left-radius:5px;}
.msg-meta{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--text-muted);margin-top:3px;padding:0 4px;}
.msg-row.self .msg-meta{flex-direction:row-reverse;}
.msg-status{color:var(--accent);}
.enc-badge{font-size:10px;opacity:.7;}

.msg-actions{position:fixed;z-index:500;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow);z-index:100;min-width:130px;animation:popup .15s ease;}
@keyframes popup{from{opacity:0;transform:scale(.9) translateY(4px)}to{opacity:1;transform:scale(1) translateY(0)}}
.msg-action-btn{padding:8px 12px;background:none;border-radius:7px;font-size:13px;color:var(--text-secondary);text-align:left;display:flex;align-items:center;gap:8px;}
.msg-action-btn:hover{background:var(--bg-hover);color:var(--text-primary);}
.msg-action-btn.danger{color:#ef4444;}
.msg-action-btn.danger:hover{background:rgba(239,68,68,.1);}

.typing-indicator{padding:4px 14px;font-size:12px;color:var(--text-muted);height:22px;display:flex;align-items:center;gap:6px;}
.typing-dots span{display:inline-block;width:4px;height:4px;background:var(--text-muted);border-radius:50%;animation:dot-bounce 1.2s infinite;}
.typing-dots span:nth-child(2){animation-delay:.2s;}
.typing-dots span:nth-child(3){animation-delay:.4s;}
@keyframes dot-bounce{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}

.chat-input-area{display:flex;align-items:flex-end;gap:6px;padding:8px 10px;padding-bottom:calc(8px + var(--safe-bottom));background:rgba(17,17,24,.95);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border);min-height:60px;box-sizing:border-box;width:100%;overflow:hidden;}
.input-wrap{flex:1;min-width:0;background:var(--bg-input);border:1px solid var(--border);border-radius:22px;display:flex;align-items:flex-end;padding:8px 12px;transition:border-color .15s;min-height:42px;max-height:120px;}
.input-wrap:focus-within{border-color:var(--border-accent);box-shadow:0 0 0 3px var(--accent-glow);}
.msg-textarea{flex:1;resize:none;font-size:15px;line-height:1.5;max-height:100px;overflow-y:auto;background:none;color:var(--text-primary);}
.msg-textarea::placeholder{color:var(--text-muted);}
.send-btn{width:40px;height:40px;min-width:40px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;box-shadow:0 4px 12px rgba(59,130,246,0.35);transition:all .15s;}
.send-btn:hover{transform:scale(1.08);background:var(--accent-bright);}
.send-btn:active{transform:scale(.96);}
.send-btn:disabled{opacity:.4;transform:none;box-shadow:none;}

.conn-toast{position:fixed;top:calc(60px + var(--safe-top));left:50%;transform:translateX(-50%);background:var(--bg-card);border:1px solid var(--border);border-radius:20px;padding:7px 16px;font-size:12px;color:var(--text-secondary);z-index:999;display:flex;align-items:center;gap:6px;box-shadow:var(--shadow);}
.conn-dot{width:7px;height:7px;border-radius:50%;}
.conn-dot.connecting{background:#f59e0b;animation:blink 1s infinite;}
.conn-dot.disconnected{background:#ef4444;}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}

.members-panel{position:fixed;top:0;right:0;width:260px;height:100%;background:var(--bg-card);border-left:1px solid var(--border);z-index:200;display:flex;flex-direction:column;box-shadow:-8px 0 32px rgba(0,0,0,.4);animation:slide-in .2s ease;}
@keyframes slide-in{from{transform:translateX(100%)}to{transform:translateX(0)}}
.members-header{display:flex;align-items:center;justify-content:space-between;padding:18px 16px;border-bottom:1px solid var(--border);font-weight:600;}
.members-list{flex:1;overflow-y:auto;padding:10px 8px;display:flex;flex-direction:column;gap:4px;}
.member-item{display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--radius-sm);}
.member-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#7c3aed);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:#fff;}
.member-info{flex:1;}
.member-name{font-size:14px;font-weight:500;}
.member-key{font-size:10px;color:var(--text-muted);font-family:monospace;}
.self-tag{font-size:10px;background:var(--accent-glow);color:var(--accent-bright);padding:2px 6px;border-radius:4px;border:1px solid var(--border-accent);}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:150;backdrop-filter:blur(2px);}
.room-share{background:var(--bg-input);border:1px solid var(--border-accent);border-radius:var(--radius-sm);padding:10px 14px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:background .15s;}
.room-share:hover{background:var(--bg-hover);}
.room-id-text{flex:1;font-family:monospace;font-size:13px;color:var(--accent-bright);word-break:break-all;}
.copy-hint{font-size:11px;color:var(--text-muted);}

/* 附件按钮 */
.attach-btn{width:36px;height:36px;min-width:36px;background:var(--bg-input);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);flex-shrink:0;transition:all .15s;border:1px solid var(--border);}
.attach-btn:hover{background:var(--bg-hover);color:var(--accent);border-color:var(--border-accent);}

/* 媒体气泡 */
.bubble-media{padding:4px;background:transparent;border:none;}
.file-bubble{display:flex;align-items:center;gap:10px;padding:4px 2px;}
.file-icon{font-size:28px;flex-shrink:0;}
.file-info{flex:1;min-width:0;}
.file-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px;}
.file-size{font-size:11px;color:var(--text-muted);margin-top:2px;}

/* 灯箱 */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,0.88);z-index:1000;display:flex;align-items:center;justify-content:center;cursor:zoom-out;backdrop-filter:blur(4px);animation:fade-in .15s ease;}

/* 拖拽高亮 */
.drag-over::after{content:'松开发送文件';position:absolute;inset:0;background:rgba(59,130,246,0.15);border:2px dashed var(--accent);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--accent);z-index:50;pointer-events:none;}

/* 视频播放器确保可见 */
video::-webkit-media-controls{display:flex!important;}
video{background:#000;}
.bubble-media video{max-width:min(240px,75vw);}
.bubble-media img{max-width:min(220px,72vw);}
