:root{--primary: #4f46e5;--primary-2: #6366f1;--primary-3: #818cf8;--primary-soft: #eef0ff;--primary-soft-2: #e0e4ff;--bg: #eef0f7;--panel: #ffffff;--border: #e6e8f2;--border-strong: #d7dae9;--text: #20242f;--text-2: #6b7280;--text-3: #9aa0ae;--danger: #ef4444;--success: #10b981;--warning: #f59e0b;--bubble-self: linear-gradient(135deg, #6a6ff0 0%, #4f46e5 100%);--rail-bg: linear-gradient(180deg, #232055 0%, #17163c 100%);--shadow-sm: 0 1px 2px rgba(23, 22, 60, .06);--shadow-md: 0 4px 16px rgba(23, 22, 60, .08);--shadow-lg: 0 12px 40px rgba(23, 22, 60, .14);--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}button{font-family:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#64688c40;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#64688c66}::-webkit-scrollbar-track{background:transparent}.login-page{min-height:100%;display:flex;align-items:center;justify-content:center;padding:32px 16px;position:relative;overflow:hidden;background:linear-gradient(135deg,#1e1b4b,#3730a3 45%,#4f46e5 75%,#6366f1)}.login-blob{position:absolute;border-radius:50%;filter:blur(90px);opacity:.45;pointer-events:none}.login-blob.b1{width:480px;height:480px;background:#818cf8;top:-140px;left:-120px}.login-blob.b2{width:420px;height:420px;background:#38bdf8;bottom:-160px;right:-100px}.login-blob.b3{width:260px;height:260px;background:#c084fc;bottom:12%;left:16%;opacity:.3}.login-card{position:relative;width:100%;max-width:400px;background:#fffffff7;backdrop-filter:blur(12px);border-radius:20px;box-shadow:var(--shadow-lg);padding:36px 32px 28px;animation:card-in .45s cubic-bezier(.22,1,.36,1)}@keyframes card-in{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}.login-brand{display:flex;flex-direction:column;align-items:center;margin-bottom:26px}.brand-logo{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 20px #4f46e559;margin-bottom:14px}.brand-logo img{width:100%;height:100%;border-radius:inherit;display:block}.brand-name{font-size:22px;font-weight:700;letter-spacing:.5px}.brand-slogan{font-size:13px;color:var(--text-2);margin-top:4px}.auth-tabs{display:flex;background:#f1f2f8;border-radius:var(--radius-sm);padding:4px;margin-bottom:22px;position:relative}.auth-tab{flex:1;padding:9px 12px;background:none;border:none;border-radius:calc(var(--radius-sm) - 2px);font-size:14px;font-weight:600;color:var(--text-2);cursor:pointer;transition:background .18s,color .18s,box-shadow .18s}.auth-tab:hover:not(.active){color:var(--text)}.auth-tab.active{background:#fff;color:var(--primary);box-shadow:0 2px 6px #4f46e52e}.field{margin-bottom:16px}.field-label{display:block;font-size:13px;font-weight:500;color:var(--text-2);margin-bottom:6px}.field-input{width:100%;padding:11px 14px;font-size:14px;color:var(--text);background:#f7f8fc;border:1.5px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.field-input::placeholder{color:var(--text-3)}.field-input:focus{border-color:var(--primary-2);background:#fff;box-shadow:0 0 0 3px #6366f126}.server-cfg-toggle{display:flex;align-items:center;gap:6px;width:100%;background:none;border:none;padding:4px 0;margin-bottom:8px;font-size:13px;color:var(--text-2);cursor:pointer;transition:color .15s}.server-cfg-toggle:hover{color:var(--primary)}.server-cfg-toggle .chev{transition:transform .2s}.server-cfg-toggle.open .chev{transform:rotate(90deg)}.server-cfg{padding:14px;background:#f7f8fc;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:16px}.server-cfg .field{margin-bottom:12px}.server-cfg .field:last-child{margin-bottom:0}.login-msg{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:16px;word-break:break-all}.login-msg.error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.login-msg.success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;transition:transform .12s,box-shadow .15s,background .15s,opacity .15s;user-select:none}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-primary{width:100%;padding:12px 20px;color:#fff;background:var(--bubble-self);box-shadow:0 6px 16px #4f46e552}.btn-primary:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 8px 22px #4f46e56b}.btn-primary:not(:disabled):active{transform:translateY(0)}.btn-text{width:100%;padding:10px;margin-top:10px;background:none;color:var(--primary);font-weight:500}.btn-text:not(:disabled):hover{background:var(--primary-soft)}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-foot{margin-top:22px;padding-top:16px;border-top:1px solid var(--border);font-size:12px;color:var(--text-3);text-align:center;line-height:1.8}.login-foot code{font-family:var(--mono);font-size:11px;background:#f1f2f8;padding:1px 6px;border-radius:4px}.app-shell{display:flex;height:100vh;overflow:hidden}.rail{width:64px;flex-shrink:0;background:var(--rail-bg);display:flex;flex-direction:column;align-items:center;padding:16px 0 14px;gap:8px}.rail-avatar{margin-bottom:14px;cursor:default}.rail-btn{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border:none;border-radius:12px;background:transparent;color:#ffffff8c;cursor:pointer;position:relative;transition:background .15s,color .15s}.rail-btn:hover{background:#ffffff1a;color:#fff}.rail-btn.active{background:#ffffff29;color:#fff}.rail-btn .unread-dot{position:absolute;top:6px;right:6px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.rail-spacer{flex:1}.conn-dot-wrap{display:flex;align-items:center;justify-content:center;width:42px;height:32px}.conn-dot{width:9px;height:9px;border-radius:50%;transition:background .2s,box-shadow .2s}.conn-dot.connected{background:#34d399;box-shadow:0 0 8px #34d399cc}.conn-dot.connecting,.conn-dot.reconnecting{background:#fbbf24;box-shadow:0 0 8px #fbbf24b3;animation:pulse 1.2s ease-in-out infinite}.conn-dot.disconnected{background:#f87171}@keyframes pulse{50%{opacity:.4}}.avatar{border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;flex-shrink:0;user-select:none;box-shadow:inset 0 0 0 1px #ffffff2e}.list-panel{width:300px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.list-header{padding:18px 16px 10px}.list-title{font-size:17px;font-weight:700;display:flex;align-items:baseline;gap:8px}.list-title .count{font-size:12px;font-weight:500;color:var(--text-3)}.search-box{position:relative;margin-top:12px}.search-box .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.search-input{width:100%;padding:8px 12px 8px 32px;font-size:13px;background:#f3f4f9;border:1px solid transparent;border-radius:10px;outline:none;transition:border-color .15s,background .15s}.search-input:focus{background:#fff;border-color:var(--primary-2)}.list-body{flex:1;overflow-y:auto;padding:4px 8px 12px}.conv-item{display:flex;align-items:center;gap:12px;padding:11px 10px;border-radius:var(--radius);cursor:pointer;transition:background .13s;position:relative}.conv-item:hover{background:#f4f5fb}.conv-item.active{background:var(--primary-soft)}.conv-item.active:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:26px;border-radius:2px;background:var(--primary)}.conv-main{flex:1;min-width:0}.conv-row1{display:flex;align-items:center;justify-content:space-between;gap:8px}.conv-name{font-size:14px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:5px}.conv-name .pin-ic,.conv-name .mute-ic{color:var(--text-3);flex-shrink:0}.conv-time{font-size:11px;color:var(--text-3);flex-shrink:0}.conv-row2{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:3px}.conv-preview{font-size:12.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge-unread{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.badge-unread.muted{background:#c3c6d4}.main-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f7f8fb;min-width:0}.chat-header{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#ffffffd9;backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.chat-header-info{min-width:0;flex:1}.chat-header-name{font-size:15px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-header-sub{font-size:12px;color:var(--text-3);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-actions{display:flex;align-items:center;gap:8px}.icon-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--text-2);font-size:12.5px;font-weight:500;cursor:pointer;transition:all .15s}.icon-btn:hover{border-color:var(--primary-2);color:var(--primary);background:var(--primary-soft)}.icon-btn.active{background:var(--primary-soft);border-color:var(--primary-2);color:var(--primary)}.icon-btn.icon-only{padding:7px}.msg-list{flex:1;overflow-y:auto;padding:22px 24px 12px}.msg-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:18px}.msg-row.self{flex-direction:row-reverse}.msg-col{max-width:68%;display:flex;flex-direction:column}.msg-row.self .msg-col{align-items:flex-end}.msg-meta{font-size:11.5px;color:var(--text-3);margin:0 2px 5px;display:flex;gap:6px;align-items:baseline}.msg-bubble-wrap{position:relative;display:flex;align-items:center;gap:8px}.msg-row.self .msg-bubble-wrap{flex-direction:row-reverse}.msg-bubble{padding:10px 14px;border-radius:14px;font-size:14.5px;line-height:1.55;word-break:break-word;white-space:pre-wrap;box-shadow:var(--shadow-sm)}.msg-row.other .msg-bubble{background:#fff;border:1px solid var(--border);border-top-left-radius:4px}.msg-row.self .msg-bubble{background:var(--bubble-self);color:#fff;border-top-right-radius:4px}.msg-actions{display:flex;gap:2px;opacity:0;transform:translateY(2px);transition:opacity .15s,transform .15s;flex-shrink:0}.msg-row:hover .msg-actions{opacity:1;transform:none}.msg-action-btn{border:none;background:transparent;color:var(--text-3);font-size:12px;padding:4px 6px;border-radius:6px;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap}.msg-action-btn:hover{background:#eceef6;color:var(--text)}.msg-action-btn.danger:hover{background:#fef2f2;color:var(--danger)}.msg-reply-quote{display:flex;align-items:center;gap:4px;padding:4px 8px;margin-bottom:6px;border-left:2px solid rgba(99,102,241,.5);background:#6366f10f;border-radius:4px;font-size:12.5px;line-height:1.4;max-width:320px;overflow:hidden}.msg-row.self .msg-reply-quote{background:#ffffff26;border-left-color:#ffffff80}.msg-reply-quote .reply-arrow{flex-shrink:0;opacity:.6}.msg-reply-quote .reply-sender{flex-shrink:0;font-weight:600;opacity:.8}.msg-row.self .msg-reply-quote .reply-sender{color:#ffffffe6}.msg-reply-quote .reply-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.7}.msg-body{word-break:break-word;white-space:pre-wrap}.reply-preview-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#f5f6fa;border-bottom:1px solid var(--border);font-size:13px}.reply-preview-content{flex:1;min-width:0;display:flex;align-items:center;gap:4px;overflow:hidden}.reply-preview-arrow{flex-shrink:0;color:var(--primary);font-weight:600}.reply-preview-label{flex-shrink:0;color:var(--text-2);font-weight:600}.reply-preview-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3)}.reply-preview-close{flex-shrink:0;border:none;background:transparent;color:var(--text-3);font-size:16px;width:24px;height:24px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.reply-preview-close:hover{background:#e4e6ef;color:var(--text)}.ctx-menu-overlay{position:fixed;inset:0;z-index:1000}.ctx-menu{position:fixed;z-index:1001;min-width:168px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #00000024;padding:4px;animation:ctx-menu-in .1s ease-out}@keyframes ctx-menu-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ctx-item{display:flex;align-items:center;gap:8px;width:100%;border:none;background:transparent;color:var(--text);font-size:13.5px;padding:7px 10px;border-radius:6px;cursor:pointer;text-align:left;transition:background .1s}.ctx-item:hover{background:#f0f2f8}.ctx-item.danger{color:var(--danger)}.ctx-item.danger:hover{background:#fef2f2}.ctx-icon{font-size:15px;width:18px;text-align:center;flex-shrink:0}.ctx-divider{height:1px;background:var(--border);margin:4px 6px}.msg-sys{text-align:center;margin:6px 0 14px}.msg-sys span{display:inline-block;font-size:12px;color:var(--text-3);background:#eceef4;padding:3px 12px;border-radius:10px}.composer{position:relative;padding:14px 20px 16px;background:#fff;border-top:1px solid var(--border)}.composer-inner{display:flex;align-items:flex-end;gap:10px;background:#f4f5fa;border:1.5px solid var(--border);border-radius:14px;padding:8px 8px 8px 14px;transition:border-color .15s,box-shadow .15s,background .15s}.composer-inner:focus-within{border-color:var(--primary-2);background:#fff;box-shadow:0 0 0 3px #6366f11f}.composer-input{flex:1;border:none;outline:none;background:transparent;resize:none;font-family:inherit;font-size:14.5px;line-height:1.5;max-height:120px;padding:4px 0;color:var(--text)}.composer-input::placeholder{color:var(--text-3)}.send-btn{width:38px;height:38px;border:none;border-radius:11px;background:var(--bubble-self);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:transform .12s,box-shadow .15s,opacity .15s;box-shadow:0 4px 10px #4f46e54d}.send-btn:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 6px 14px #4f46e566}.send-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.composer-hint{margin-top:8px;font-size:11.5px;color:var(--text-3);text-align:right}.composer-hint kbd{font-family:var(--mono);font-size:10.5px;background:#f1f2f8;border:1px solid var(--border-strong);border-radius:4px;padding:0 5px}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--text-3);padding:40px;text-align:center}.empty-icon{width:84px;height:84px;border-radius:24px;background:var(--primary-soft);color:var(--primary-3);display:flex;align-items:center;justify-content:center}.empty-title{font-size:15px;font-weight:600;color:var(--text-2)}.empty-desc{font-size:13px;max-width:320px;line-height:1.7}.dept-item{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:10px;cursor:pointer;font-size:13.5px;transition:background .13s}.dept-item:hover{background:#f4f5fb}.dept-item.selected{background:var(--primary-soft);color:var(--primary);font-weight:550}.dept-toggle{width:18px;display:flex;align-items:center;justify-content:center;color:var(--text-3);flex-shrink:0;transition:transform .18s}.dept-toggle.expanded{transform:rotate(90deg)}.dept-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dept-count{font-size:11px;color:var(--text-3);background:#f1f2f8;border-radius:8px;padding:1px 7px}.dept-item.selected .dept-count{background:var(--primary-soft-2);color:var(--primary)}.member-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius);cursor:pointer;transition:background .13s}.member-item:hover{background:#f4f5fb}.member-name{font-size:14px;font-weight:550}.member-sub{font-size:12px;color:var(--text-2);margin-top:2px}.member-list-wrap{padding:12px}.profile-card{max-width:440px;margin:24px auto;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;animation:card-in .3s ease}.profile-hero{background:linear-gradient(135deg,#4f46e5,#7c74f5);padding:28px 24px 22px;color:#fff;display:flex;align-items:center;gap:16px;position:relative}.profile-back{position:absolute;top:12px;left:12px;border:none;background:#ffffff2e;color:#fff;border-radius:8px;padding:5px 10px;font-size:12px;cursor:pointer;transition:background .15s}.profile-back:hover{background:#ffffff4d}.profile-hero .avatar{box-shadow:0 0 0 3px #ffffff59}.profile-name{font-size:19px;font-weight:700}.profile-tags{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}.profile-tag{font-size:11.5px;background:#fff3;border-radius:6px;padding:2px 8px}.profile-rows{padding:10px 24px}.profile-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid #f1f2f8;font-size:13.5px}.profile-row:last-child{border-bottom:none}.profile-row .k{color:var(--text-3);flex-shrink:0}.profile-row .v{text-align:right;word-break:break-all}.profile-row .v code{font-family:var(--mono);font-size:12px}.profile-cta{padding:16px 24px 22px}.section-hint{padding:8px 12px 4px;font-size:11.5px;color:var(--text-3)}.agent-side{display:flex;flex-direction:column;gap:2px;padding:10px 8px}.agent-side-group{font-size:11.5px;color:var(--text-3);padding:4px 8px 8px}.agent-side-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:10px;background:transparent;border:none;cursor:pointer;text-align:left;transition:background .15s}.agent-side-item:hover{background:var(--bg-hover, rgba(255, 255, 255, .06))}.agent-side-item.active{background:var(--bg-active, rgba(99, 102, 241, .16))}.agent-side-avatar{width:34px;height:34px;border-radius:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6)}.agent-side-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;color:var(--text-1, #e5e7eb)}.agent-side-model{font-size:10.5px;color:var(--text-3, #9ca3af);flex-shrink:0}.agent-side-tip{margin-top:14px;padding:10px 12px;border-radius:10px;background:#6366f114;font-size:11.5px;line-height:1.7;color:var(--text-2, #b8bcc8)}.agent-side-tip kbd{padding:1px 5px;border-radius:4px;background:#ffffff1a;font-size:10.5px}.agent-model-btn{margin-left:10px;padding:2px 9px;border-radius:999px;border:1px solid rgba(99,102,241,.45);background:#6366f11a;color:#a5b4fc;font-size:11px;cursor:pointer;vertical-align:middle}.agent-model-btn:hover{background:#6366f133}.agent-picker{margin:10px 16px 0;border-radius:12px;border:1px solid var(--border, #262a4d);background:var(--bg-panel, #171a33);padding:6px;display:flex;flex-direction:column;gap:2px}.agent-picker-item{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;border:none;background:transparent;cursor:pointer;text-align:left}.agent-picker-item:hover{background:#ffffff0d}.agent-picker-item.active{background:#6366f129}.agent-picker-name{font-size:13px;color:var(--text-1, #e5e7eb)}.agent-picker-model{font-size:11px;color:var(--text-3, #9ca3af)}.agent-picker-empty{padding:10px;font-size:12px;color:var(--text-3, #9ca3af);text-align:center}.agent-tools{display:flex;flex-direction:column;gap:4px;margin-bottom:8px;padding:7px 10px;border-radius:8px;background:#ffffff0d;border-left:2px solid rgba(99,102,241,.5)}.agent-tool{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--text-2, #b8bcc8);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.agent-tool.state-1{color:#c7d2fe}.agent-tool.state-2{color:#86efac}.agent-tool.state-3{color:#fca5a5}.agent-tool-icon{font-size:11px}.agent-tool-spin{width:9px;height:9px;border-radius:50%;border:1.5px solid rgba(199,210,254,.35);border-top-color:#c7d2fe;animation:agent-spin .8s linear infinite}@keyframes agent-spin{to{transform:rotate(360deg)}}.agent-text{white-space:pre-wrap;word-break:break-word}.agent-cursor{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:-2px;background:#a5b4fc;animation:agent-blink .9s steps(2) infinite}@keyframes agent-blink{50%{opacity:0}}.agent-msg-failed{border:1px solid rgba(248,113,113,.4)}.agent-error{margin:8px 16px;padding:8px 12px;border-radius:8px;background:#f871711f;color:#fca5a5;font-size:12px}.log-panel{width:340px;flex-shrink:0;background:#101327;border-left:1px solid #232452;display:flex;flex-direction:column;overflow:hidden;animation:slide-in .22s ease}@keyframes slide-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.log-header{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid #232452;color:#c7c9e8;font-size:13px;font-weight:600}.log-header .spacer{flex:1}.log-header-btn{border:none;background:transparent;color:#8a8dbd;font-size:12px;padding:4px 8px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:background .13s,color .13s}.log-header-btn:hover{background:#1d2044;color:#e3e4f7}.log-body{flex:1;overflow-y:auto;padding:8px 0;font-family:var(--mono)}.log-body::-webkit-scrollbar-thumb{background:#8c90c84d}.log-entry{padding:6px 14px;border-bottom:1px solid rgba(255,255,255,.04);font-size:12px;line-height:1.6}.log-entry .log-top{display:flex;align-items:center;gap:8px}.log-time{color:#666b9e;font-size:11px}.log-kind{font-size:10.5px;font-weight:700;padding:0 6px;border-radius:4px;letter-spacing:.3px}.log-kind.message{color:#7dd3fc;background:#7dd3fc1f}.log-kind.deleted{color:#fca5a5;background:#fca5a51f}.log-kind.read{color:#6ee7b7;background:#6ee7b71f}.log-kind.conv_update{color:#d8b4fe;background:#d8b4fe1f}.log-kind.conn{color:#a5b4fc;background:#a5b4fc1f}.log-text{color:#b8bbd9;word-break:break-all;margin-top:2px}.log-empty{padding:40px 20px;text-align:center;color:#666b9e;font-size:12.5px;line-height:1.8}@media (max-width: 1100px){.log-panel{width:300px}}@media (max-width: 900px){.list-panel{width:260px}}.error-boundary{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:#1e1b4b}.error-boundary-card{max-width:480px;width:100%;background:#fff;border-radius:var(--radius-lg);box-shadow:0 12px 40px #0000004d;padding:32px 28px;text-align:center}.error-boundary-icon{font-size:40px;line-height:1;margin-bottom:12px}.error-boundary-title{font-size:18px;font-weight:700;color:var(--text);margin-bottom:8px}.error-boundary-desc{font-size:13px;color:var(--text-2);line-height:1.7;margin-bottom:16px}.error-boundary-detail{margin:0 0 16px;padding:10px 12px;background:#fbf3f3;border:1px solid #f4d4d4;border-radius:var(--radius-sm);font-family:var(--mono);font-size:12px;color:#dc2626;text-align:left;white-space:pre-wrap;word-break:break-all}.error-boundary-actions{display:flex;gap:10px;justify-content:center}.loading-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 16px;color:var(--text-2);font-size:13px}.lazy-image{background:var(--primary-soft);color:var(--text-3)}.lazy-image.loaded{background:transparent}.lazy-image .lazy-image-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:11px}.call-overlay{position:fixed;inset:0;background:#1110328c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:2000;display:flex;align-items:center;justify-content:center;animation:call-fade-in .2s ease}@keyframes call-fade-in{0%{opacity:0}to{opacity:1}}.call-incoming{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:32px 36px 24px;width:360px;max-width:calc(100vw - 32px);text-align:center;animation:call-pop-in .25s cubic-bezier(.2,.8,.2,1)}@keyframes call-pop-in{0%{transform:scale(.92) translateY(8px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.call-incoming-avatar{width:72px;height:72px;border-radius:50%;margin:0 auto 16px;background:linear-gradient(135deg,var(--primary-3) 0%,var(--primary) 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:600;letter-spacing:1px;box-shadow:0 6px 20px #4f46e559}.call-incoming-name{font-size:18px;font-weight:600;color:var(--text);margin-bottom:4px;word-break:break-all}.call-incoming-type{font-size:13px;color:var(--text-2);margin-bottom:24px}.call-incoming-actions{display:flex;gap:40px;justify-content:center}.call-btn{width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:transform .15s ease,box-shadow .15s ease}.call-btn:hover{transform:translateY(-2px)}.call-btn:active{transform:translateY(0)}.call-btn-accept{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 6px 18px #10b98173}.call-btn-accept:hover{box-shadow:0 8px 22px #10b9818c}.call-btn-reject{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 6px 18px #ef444473}.call-btn-reject:hover{box-shadow:0 8px 22px #ef44448c}.call-active{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:36px 36px 28px;width:360px;max-width:calc(100vw - 32px);text-align:center}.call-ringing-indicator{display:flex;gap:6px;justify-content:center;margin-bottom:18px}.call-dot{width:10px;height:10px;border-radius:50%;background:var(--primary-2);animation:call-dot-pulse 1.4s ease-in-out infinite}.call-dot:nth-child(2){animation-delay:.2s}.call-dot:nth-child(3){animation-delay:.4s}@keyframes call-dot-pulse{0%,60%,to{transform:scale(.6);opacity:.4}30%{transform:scale(1);opacity:1}}.call-ringing-text{font-size:15px;color:var(--text);margin-bottom:24px;word-break:break-all}.call-window{position:relative;background:#0e0d2a;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:720px;max-width:calc(100vw - 24px);height:540px;max-height:calc(100vh - 24px);overflow:hidden;display:flex;flex-direction:column}.call-remote{flex:1;position:relative;background:#0e0d2a;display:flex;align-items:center;justify-content:center;overflow:hidden}.call-video-remote{width:100%;height:100%;object-fit:cover}.call-audio-only{display:flex;flex-direction:column;align-items:center;gap:16px;color:#fff}.call-audio-avatar{width:96px;height:96px;border-radius:50%;background:linear-gradient(135deg,var(--primary-3) 0%,var(--primary) 100%);display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:600;box-shadow:0 8px 28px #6366f180}.call-audio-name{font-size:16px;opacity:.9}.call-audio-wave{display:flex;gap:4px;align-items:center;height:24px}.call-audio-wave span{width:3px;height:100%;background:var(--primary-3);border-radius:2px;animation:call-wave 1s ease-in-out infinite}.call-audio-wave span:nth-child(2){animation-delay:.15s}.call-audio-wave span:nth-child(3){animation-delay:.3s}.call-audio-wave span:nth-child(4){animation-delay:.45s}.call-audio-wave span:nth-child(5){animation-delay:.6s}@keyframes call-wave{0%,to{transform:scaleY(.3);opacity:.5}50%{transform:scaleY(1);opacity:1}}.call-local-pip{position:absolute;top:16px;right:16px;width:160px;height:120px;border-radius:var(--radius);overflow:hidden;background:#1a1840;box-shadow:0 4px 16px #00000080;border:1px solid rgba(255,255,255,.1);z-index:2}.call-video-local{width:100%;height:100%;object-fit:cover}.call-local-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;font-weight:600;background:linear-gradient(135deg,var(--primary-2) 0%,var(--primary) 100%)}.call-topbar{position:absolute;top:0;left:0;right:0;padding:12px 16px;background:linear-gradient(180deg,#00000080,#0000);z-index:3;pointer-events:none}.call-topbar-title{color:#fff;font-size:13px;opacity:.9;text-shadow:0 1px 3px rgba(0,0,0,.5)}.call-controls{display:flex;gap:16px;justify-content:center;align-items:center;padding:16px;background:#0e0d2af2;border-top:1px solid rgba(255,255,255,.06)}.call-ctrl{width:48px;height:48px;border-radius:50%;border:none;background:#ffffff1f;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,transform .15s ease}.call-ctrl:hover:not(:disabled){background:#fff3;transform:translateY(-1px)}.call-ctrl:disabled{opacity:.4;cursor:not-allowed}.avatar-img{object-fit:cover;display:block}.rail-avatar{width:38px;height:38px;border-radius:50%;border:none;padding:0;cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;background:none;transition:transform .15s ease,box-shadow .15s ease}.rail-avatar:hover{transform:scale(1.08);box-shadow:0 0 0 2px #6366f180}.rail-avatar-img{width:38px;height:38px;border-radius:50%;object-fit:cover}.modal-overlay{position:fixed;inset:0;background:#0f0e2a80;backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);display:flex;flex-direction:column;animation:modalIn .2s ease}@keyframes modalIn{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--border);font-size:16px;font-weight:600;color:var(--text)}.modal-body{padding:20px;overflow-y:auto;flex:1}.add-friend-results{max-height:220px;overflow-y:auto;margin:4px 0 14px;border:1px solid var(--border);border-radius:8px;padding:6px}.add-friend-results .member-item{border-radius:6px}.add-friend-picked{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:14px;border:1px solid var(--border);border-radius:10px;background:var(--panel)}.add-friend-picked-main{flex:1;min-width:0}.add-friend-picked-name{font-size:15px;font-weight:600;color:var(--text)}.add-friend-picked-sub{font-size:12px;color:var(--text-3);margin-top:2px}.add-friend-advanced{margin:4px 0 14px;border:1px dashed var(--border);border-radius:8px;padding:8px 12px}.add-friend-advanced summary{font-size:12px;color:var(--text-3);cursor:pointer;user-select:none}.add-friend-advanced summary:hover{color:var(--text-2)}.avatar-wrap{position:relative;flex-shrink:0}.online-dot{position:absolute;right:-1px;bottom:-1px;width:12px;height:12px;border-radius:50%;background:#22c55e;border:2px solid var(--panel);box-shadow:0 0 4px #22c55e99}.online-text{color:#16a34a;font-size:12px}.avatar-edit-wrap{position:relative;width:64px;height:64px}.avatar-edit-btn{position:absolute;right:-4px;bottom:-4px;width:24px;height:24px;border-radius:50%;border:2px solid var(--panel);background:var(--primary, #6366f1);color:#fff;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.avatar-edit-btn:hover{filter:brightness(1.1)}.avatar-edit-btn:disabled{opacity:.6;cursor:default}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border)}.profile-edit-avatar{display:flex;align-items:center;gap:14px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--border)}.profile-edit-username{font-size:15px;font-weight:600;color:var(--text)}.profile-edit-hint{font-size:12px;color:var(--text-3);margin-top:4px}.profile-edit-hint code{font-family:var(--mono);font-size:11px;background:var(--bg);padding:1px 5px;border-radius:4px}.gender-group{display:flex;gap:8px}.gender-btn{flex:1;padding:9px 0;border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--panel);color:var(--text-2);font-size:14px;cursor:pointer;transition:all .15s ease}.gender-btn:hover{border-color:var(--primary-3);color:var(--primary)}.gender-btn.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary);font-weight:600}.call-ctrl.off{background:#ef4444d9}.call-ctrl.off:hover{background:#ef4444}.call-ctrl-hangup{background:linear-gradient(135deg,#ef4444,#dc2626)}.call-ctrl-hangup:hover{background:linear-gradient(135deg,#f87171,#ef4444)}.call-error{position:absolute;bottom:80px;left:50%;transform:translate(-50%);background:#ef4444f2;color:#fff;font-size:12px;padding:6px 12px;border-radius:var(--radius-sm);max-width:calc(100% - 32px);text-align:center;z-index:4}.call-ended{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:28px 36px;text-align:center;color:var(--text-2);display:flex;flex-direction:column;align-items:center;gap:10px}.call-ended-text{font-size:14px}.call-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:10px 18px;border-radius:var(--radius);font-size:13px;z-index:2001;animation:call-fade-in .2s ease}.call-toast-error{background:var(--danger);color:#fff;box-shadow:var(--shadow-md)}@media (max-width: 640px){.call-window{width:100vw;height:100vh;max-width:100vw;max-height:100vh;border-radius:0}.call-local-pip{width:100px;height:140px;top:12px;right:12px}.call-controls{gap:12px;padding:12px;overflow-x:auto;justify-content:flex-start}.call-incoming{padding:24px 20px 20px;width:calc(100vw - 32px)}.call-incoming-actions{gap:32px}.call-btn{width:52px;height:52px}}.add-friend-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;font-size:13px;width:auto;margin-left:auto}.friend-req-item{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border)}.friend-req-main{flex:1;min-width:0}.friend-req-name{font-size:14px;font-weight:600;color:var(--text)}.friend-req-msg{font-size:12px;color:var(--text-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friend-req-actions{display:flex;gap:8px;margin-top:8px}.friend-req-btn{padding:4px 14px;font-size:12px;min-width:auto}.friend-tag{font-size:10px;color:var(--primary);background:var(--primary-soft);padding:1px 6px;border-radius:var(--radius-sm);margin-left:6px;font-weight:500}.composer-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.composer-action-btn{width:32px;height:32px;border:none;border-radius:8px;background:transparent;color:var(--text-2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s,color .12s}.composer-action-btn:hover:not(:disabled){background:#6366f11a;color:var(--primary)}.composer-action-btn:disabled{opacity:.45;cursor:not-allowed}.spinner.dark{border-color:#6366f140;border-top-color:var(--primary)}.spinner.dark.small{width:14px;height:14px;border-width:2px}.msg-image-wrap{display:block;max-width:100%}.msg-image{display:block;max-width:240px;max-height:240px;border-radius:8px;cursor:zoom-in;object-fit:cover;transition:transform .12s}.msg-image:hover{transform:scale(1.01)}.msg-image-loading{display:flex;align-items:center;justify-content:center;background:#0000000f;border-radius:8px;min-width:120px;min-height:120px}.msg-file-card{display:flex;align-items:center;gap:10px;padding:10px 12px;min-width:220px;max-width:280px;background:#6366f10f;border:1px solid rgba(99,102,241,.18);border-radius:10px;cursor:pointer;transition:background .13s,border-color .13s}.msg-row.self .msg-file-card{background:#ffffff26;border-color:#ffffff40;color:#fff}.msg-file-card:hover{background:#6366f11f;border-color:#6366f159}.msg-row.self .msg-file-card:hover{background:#ffffff38}.msg-file-icon{width:36px;height:36px;border-radius:8px;background:#6366f126;display:flex;align-items:center;justify-content:center;color:var(--primary);flex-shrink:0}.msg-row.self .msg-file-icon{background:#fff3;color:#fff}.msg-file-info{flex:1;min-width:0}.msg-file-name{font-size:13.5px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-file-meta{font-size:11.5px;opacity:.7;margin-top:2px}.msg-file-download{flex-shrink:0;width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .12s}.msg-file-card:hover .msg-file-download{opacity:1}.img-lightbox{position:fixed;inset:0;background:#0f0e2aeb;backdrop-filter:blur(8px);z-index:3000;display:flex;align-items:center;justify-content:center;padding:32px;cursor:zoom-out;animation:fadeIn .15s ease}.img-lightbox img{max-width:90vw;max-height:90vh;border-radius:8px;box-shadow:0 20px 60px #00000080;object-fit:contain}.img-lightbox-close{position:absolute;top:24px;right:24px;width:40px;height:40px;border-radius:50%;border:none;background:#ffffff26;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.img-lightbox-close:hover{background:#ffffff4d}.search-row{display:flex;align-items:center;gap:8px}.search-input-wrap{position:relative;flex:1;min-width:0}.search-input-wrap .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.search-input-wrap .search-input{width:100%;padding:8px 12px 8px 32px}.new-group-btn{flex-shrink:0;width:34px;height:34px;padding:0}.new-group-btn:disabled{opacity:.4;cursor:not-allowed}.create-group-card{width:460px}.member-pick-list{max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fafbff;padding:4px}.member-pick-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;transition:background .12s}.member-pick-item:hover{background:#eef0fb}.member-pick-item.checked{background:var(--primary-soft)}.member-pick-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;flex-shrink:0}.member-pick-name{font-size:13.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-load-more{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 0;font-size:12px;color:var(--text-3)}.msg-load-more.no-more{opacity:.6;font-size:11px}.msg-row.self.sending .msg-bubble{opacity:.7}.msg-row.self.failed .msg-bubble{background:#fee2e2!important;color:#b91c1c;border:1px solid #fecaca}.msg-state{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-3);margin-top:2px;padding:0 2px}.msg-state.failed{color:#b91c1c;background:transparent;border:none;cursor:pointer;padding:2px 6px;border-radius:4px;font-weight:500}.msg-state.failed:hover{background:#fee2e2}.msg-state-icon{font-size:13px;line-height:1}.emoji-picker{position:absolute;bottom:100%;left:12px;margin-bottom:8px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 28px #0f0e2a26;padding:10px;display:grid;grid-template-columns:repeat(12,1fr);gap:2px;width:360px;max-height:240px;overflow-y:auto;z-index:100;animation:emojiIn .12s ease}@keyframes emojiIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.emoji-item{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:18px;background:transparent;border:none;border-radius:6px;cursor:pointer;transition:background .1s;padding:0}.emoji-item:hover{background:var(--primary-soft)}@keyframes msgHighlight{0%{background:#6366f140}to{background:transparent}}.msg-row.highlighted .msg-bubble{animation:msgHighlight 1.5s ease}.msg-day-separator{display:flex;align-items:center;justify-content:center;padding:12px 0 6px;font-size:11px;color:var(--text-3)}.msg-day-separator span{background:#0f0e2a0f;padding:2px 10px;border-radius:10px}.msg-body mark{background:#fff3a3;color:inherit;padding:0 2px;border-radius:2px}.msg-reply-quote{cursor:pointer;transition:opacity .15s}.msg-reply-quote:hover{opacity:.75}.msg-search-bar{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--border)}.msg-search-bar .search-icon{color:var(--text-3);display:flex;align-items:center}.msg-search-input{flex:1;border:1px solid var(--border);border-radius:6px;padding:5px 10px;font-size:13px;background:var(--bg);color:var(--text)}.msg-search-input:focus{outline:none;border-color:var(--primary-2)}.msg-search-count{font-size:12px;color:var(--text-3);white-space:nowrap;padding:0 4px;min-width:48px;text-align:center}.multi-select-bar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--primary-soft);border-bottom:1px solid var(--border)}.multi-select-bar .multi-select-count{font-size:13px;color:var(--text);font-weight:500}.multi-select-bar .spacer{flex:1}.multi-select-bar .btn-text.danger{color:var(--danger)}.msg-select-check{display:flex;align-items:center;cursor:pointer;margin-right:6px;flex-shrink:0;align-self:center}.msg-select-check input{width:16px;height:16px;cursor:pointer;accent-color:var(--primary)}.msg-row.selected{background:var(--primary-soft)}.forward-card{max-width:420px}.forward-conv-list{max-height:360px;overflow-y:auto;padding:4px 0}.forward-conv-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--text-3)}.forward-conv-item:hover{background:var(--bg)}.forward-conv-name{flex:1;font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-panel{position:fixed;top:0;right:0;bottom:0;width:340px;background:var(--panel);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;z-index:50}.group-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);font-size:15px;font-weight:600;color:var(--text)}.group-panel-body{flex:1;overflow-y:auto;padding:0 16px 16px}.group-hero{display:flex;align-items:center;gap:12px;padding:16px 0}.group-hero-info{flex:1;min-width:0}.group-hero-name{font-size:16px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-hero-meta{font-size:12px;color:var(--text-3);margin-top:4px}.group-section{border-top:1px solid var(--border);padding:12px 0}.group-section-header{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--text-2);margin-bottom:8px;font-weight:500}.group-announcement{font-size:13px;color:var(--text);line-height:1.5;white-space:pre-wrap;word-break:break-word;padding:8px 10px;background:var(--bg);border-radius:8px}.group-member-list{display:flex;flex-direction:column;gap:2px}.group-member-item{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:8px}.group-member-item:hover{background:var(--bg)}.group-member-main{flex:1;min-width:0}.group-member-name{font-size:13px;color:var(--text);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.group-member-self{color:var(--text-3);font-size:12px}.group-member-sub{font-size:11px;color:var(--text-3);margin-top:2px}.group-member-actions{display:flex;gap:4px;flex-shrink:0}.role-badge{font-size:10px;padding:1px 6px;border-radius:4px;font-weight:500}.role-badge.owner{background:var(--primary-soft);color:var(--primary)}.role-badge.admin{background:#e0f2fe;color:#0284c7}.role-badge.muted{background:#fef3c7;color:#d97706}.group-actions-section{display:flex;flex-direction:column;gap:4px;padding-top:16px}.group-action-btn{width:100%;justify-content:center;padding:8px;font-size:13px}.group-action-btn.danger{color:var(--danger)}.chat-header-group-btn{display:flex;align-items:center;gap:10px;cursor:pointer;border-radius:8px;padding:2px 4px;margin-left:-4px}.chat-header-group-btn:hover{background:var(--bg)}.btn.btn-text.small{font-size:12px;padding:3px 8px}.btn.btn-text.small.danger{color:var(--danger)}.composer-recording-bar{flex:1;display:flex;align-items:center;gap:8px;padding:0 8px;height:36px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px}.recording-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:recPulse 1s ease-in-out infinite;flex-shrink:0}@keyframes recPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.recording-time{font-size:13px;font-weight:600;color:#ef4444;font-variant-numeric:tabular-nums;min-width:38px}.recording-hint{font-size:12px;color:var(--text-3);flex:1}.recording-cancel{border:1px solid var(--border);background:var(--bg);color:var(--text-2);border-radius:6px;padding:3px 10px;font-size:12px;cursor:pointer;transition:background .12s}.recording-cancel:hover{background:var(--bg);color:var(--text)}.recording-stop{width:30px;height:30px;border:none;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:transform .12s}.recording-stop:hover{transform:scale(1.08)}.composer-action-btn.mic-btn{flex-shrink:0}.composer-action-btn.mic-btn.active{background:#ef44441f;color:#ef4444}.msg-audio-card{display:flex;align-items:center;gap:8px;min-width:180px;max-width:240px;padding:4px 0}.msg-audio-play{color:var(--primary);display:flex;align-items:center;flex-shrink:0;cursor:pointer}.msg-row.self .msg-audio-play{color:#fff}.msg-audio-waveform{display:flex;align-items:center;gap:2px;height:28px;flex:1;min-width:80px}.msg-audio-bar{display:block;width:3px;background:currentColor;opacity:.5;border-radius:2px;min-height:4px}.msg-row.self .msg-audio-bar{opacity:.7}.msg-audio-waveform-placeholder{flex:1;height:2px;background:currentColor;opacity:.3;border-radius:2px;min-width:60px}.msg-audio-duration{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums;flex-shrink:0}.msg-row.self .msg-audio-duration{color:#fffc}.msg-audio-el{display:none}.msg-video-wrap{display:block;position:relative;max-width:100%}.msg-video{display:block;max-width:280px;max-height:200px;border-radius:8px;background:#000}.msg-video-loading{display:flex;align-items:center;justify-content:center;background:#0000000f;border-radius:8px;min-width:160px;min-height:120px}.msg-video-duration{position:absolute;bottom:6px;right:6px;background:#000000a6;color:#fff;font-size:11px;padding:1px 6px;border-radius:4px;font-variant-numeric:tabular-nums}.msg-location-card{display:flex;align-items:center;gap:10px;padding:10px 12px;min-width:200px;max-width:260px;background:#6366f10f;border:1px solid rgba(99,102,241,.18);border-radius:10px;text-decoration:none;color:inherit;transition:background .13s,border-color .13s;cursor:pointer}.msg-row.self .msg-location-card{background:#ffffff26;border-color:#ffffff40;color:#fff}.msg-location-card:hover{background:#6366f11f;border-color:#6366f159}.msg-row.self .msg-location-card:hover{background:#ffffff38}.msg-location-icon{width:36px;height:36px;border-radius:8px;background:#6366f126;display:flex;align-items:center;justify-content:center;color:var(--primary);flex-shrink:0}.msg-row.self .msg-location-icon{background:#fff3;color:#fff}.msg-location-info{flex:1;min-width:0}.msg-location-name{font-size:13.5px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-location-meta{font-size:11.5px;opacity:.7;margin-top:2px}.mention-picker{position:absolute;bottom:100%;left:12px;margin-bottom:8px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 28px #0f0e2a26;padding:4px;min-width:200px;max-height:260px;overflow-y:auto;z-index:100;animation:emojiIn .12s ease}.mention-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;background:transparent;border:none;border-radius:6px;cursor:pointer;text-align:left;transition:background .1s}.mention-item:hover{background:var(--primary-soft)}.mention-avatar{width:24px;height:24px;border-radius:50%;flex-shrink:0}.mention-name{flex:1;font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mention-role{font-size:10px;padding:1px 5px;border-radius:4px;flex-shrink:0}.mention-role.owner{background:#f59e0b26;color:#d97706}.mention-role.admin{background:#6366f11f;color:var(--primary)}.msg-body.mention-me{position:relative}.msg-body.mention-me:before{content:"";position:absolute;left:-6px;top:0;bottom:0;width:3px;background:#ef4444;border-radius:2px}.mention-badge{display:inline-block;font-size:10px;background:#ef4444;color:#fff;padding:1px 5px;border-radius:4px;margin-left:4px;vertical-align:middle}.rail-btn-badge{position:absolute;top:6px;right:6px;width:7px;height:7px;background:#22c55e;border-radius:50%;border:1.5px solid var(--bg);pointer-events:none}.meeting-entry{display:flex;flex-direction:column;gap:14px;padding:14px 12px}.meeting-entry-actions{display:flex;gap:10px}.meeting-action-card{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px;padding:14px 10px 12px;background:var(--bg-2, #fff);border:1px solid var(--border, rgba(0, 0, 0, .08));border-radius:12px;cursor:pointer;color:inherit;transition:border-color .13s,background .13s,box-shadow .13s,transform .13s}.meeting-action-card:hover{border-color:var(--primary-2);box-shadow:0 4px 12px #6366f124;transform:translateY(-1px)}.meeting-action-icon{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--primary-soft, rgba(99, 102, 241, .12));color:var(--primary, #6366f1);margin-bottom:2px}.meeting-action-card.primary{background:linear-gradient(135deg,var(--primary-3, #a5b4fc) 0%,var(--primary, #6366f1) 100%);border:none;color:#fff}.meeting-action-card.primary .meeting-action-icon{background:#ffffff38;color:#fff}.meeting-action-card.primary:hover{box-shadow:0 6px 16px #6366f161}.meeting-action-name{font-size:14px;font-weight:600}.meeting-action-desc{font-size:11px;opacity:.75}.meeting-join-form{background:var(--bg-2, #fff);border:1px solid var(--border, rgba(0, 0, 0, .08));border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px}.meeting-join-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--primary)}.meeting-join-no{text-align:center;font-size:16px;font-weight:600;letter-spacing:3px;font-variant-numeric:tabular-nums}.meeting-join-no::placeholder{font-size:13px;font-weight:400;letter-spacing:normal}.meeting-join-row{display:flex;gap:8px}.meeting-join-row .field-input{flex:1;min-width:0}.meeting-join-btn{width:auto;flex-shrink:0;padding:0 18px}.meeting-form-error{color:var(--danger, #ef4444);font-size:12px}.meeting-entry-list{display:flex;flex-direction:column;gap:8px}.meeting-entry-list-header{display:flex;align-items:center;justify-content:space-between;padding:0 2px}.meeting-entry-list-title{font-size:13px;font-weight:600;white-space:nowrap}.meeting-refresh-btn{width:auto;margin-top:0;padding:4px 10px;font-size:12px}.meeting-list{display:flex;flex-direction:column;gap:8px}.meeting-item{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-radius:10px;border:1px solid var(--border, rgba(0, 0, 0, .08));background:var(--bg-2, #fff);transition:border-color .13s,box-shadow .13s}.meeting-item:hover{border-color:var(--primary-2);box-shadow:0 2px 8px #6366f11a}.meeting-item.live{border-color:var(--primary-2);background:var(--primary-soft, rgba(99, 102, 241, .06))}.meeting-item.closed{opacity:.55}.meeting-item-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600}.meeting-item-status{font-size:10px;padding:1px 6px;border-radius:999px;background:#0000000f;color:var(--text-3, #888);white-space:nowrap}.meeting-item-status.s1{background:var(--primary-soft, rgba(99, 102, 241, .12));color:var(--primary, #6366f1)}.meeting-item-sub{font-size:11px;color:var(--text-3, #888);display:flex;gap:6px;align-items:center;flex-wrap:wrap}.meeting-item-org{color:var(--primary)}.meeting-item-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.meeting-item-actions .btn{width:auto;margin-top:0;padding:5px 12px;font-size:12px;font-weight:500}.meeting-item-actions .btn-primary{padding:6px 14px;box-shadow:0 2px 8px #4f46e53d}.meeting-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:32px 16px;text-align:center}.meeting-empty-icon{width:60px;height:60px;border-radius:18px;background:var(--primary-soft, rgba(99, 102, 241, .12));color:var(--primary-3, #a5b4fc);display:flex;align-items:center;justify-content:center;margin-bottom:2px}.meeting-empty-title{font-size:13px;font-weight:600;color:var(--text-2)}.meeting-empty-desc{font-size:12px;color:var(--text-3, #888);line-height:1.7}.meeting-overlay{position:fixed;inset:0;z-index:1200;background:radial-gradient(1200px 700px at 75% -10%,#131830,#13183000 60%),linear-gradient(160deg,#131830,#0b0e1a 55% 100%);display:flex;align-items:center;justify-content:center}.meeting-room{width:100%;height:100%;display:flex;flex-direction:column}.meeting-joining{display:flex;flex-direction:column;align-items:center;gap:16px;color:#fff}.meeting-joining-text{font-size:15px;opacity:.85}.meeting-ended{display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px}.meeting-topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;color:#fff;background:#0f12238c;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.07)}.meeting-topbar-title{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;min-width:0;letter-spacing:.2px}.meeting-topbar-no{font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;padding:2px 9px;border-radius:999px;color:#ffffffd1;background:#ffffff14;border:1px solid rgba(255,255,255,.12)}.meeting-topbar-actions{display:flex;align-items:center;gap:6px}.meeting-topbar-actions .icon-btn{padding:7px;background:#ffffff14;border:1px solid rgba(255,255,255,.18);color:#fff}.meeting-topbar-actions .icon-btn:hover{background:#ffffff29;border-color:#ffffff47;color:#fff}.meeting-topbar-actions .icon-btn.active{background:var(--primary, #6366f1);border-color:var(--primary, #6366f1);color:#fff}.meeting-reconnecting{font-size:12px;color:#fbbf24;margin-right:8px}.meeting-rec-indicator{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:#fca5a5;margin-right:8px;padding:3px 10px;border-radius:999px;background:#ef444426;border:1px solid rgba(239,68,68,.4)}.meeting-rec-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:meeting-rec-pulse 1.5s ease-in-out infinite}.meeting-item-rec{margin-left:6px;padding:1px 6px;border-radius:999px;font-size:11px;color:#ef4444;background:#ef44441f}@keyframes meeting-rec-pulse{0%,to{opacity:1}50%{opacity:.25}}.meeting-body{flex:1;display:flex;min-height:0}.meeting-stage-area{flex:1;min-width:0;padding:10px}.meeting-grid{width:100%;height:100%;display:grid;gap:8px}.meeting-grid.cols-1{grid-template-columns:1fr}.meeting-grid.cols-2{grid-template-columns:repeat(2,1fr)}.meeting-grid.cols-3{grid-template-columns:repeat(3,1fr)}.meeting-grid.cols-4{grid-template-columns:repeat(4,1fr)}.meeting-speaker-layout{width:100%;height:100%;display:flex;gap:8px}.meeting-stage-wrap{position:relative;flex:1;min-width:0}.meeting-unpin{position:absolute;top:8px;right:8px;z-index:3;font-size:11px;padding:3px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:#00000073;color:#fff;cursor:pointer}.meeting-thumb-strip{width:132px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;flex-shrink:0}.meeting-tile{position:relative;border-radius:14px;overflow:hidden;background:linear-gradient(135deg,#1b2140,#12162c);border:2px solid transparent;box-shadow:0 8px 24px #00000059;transition:border-color .15s;min-height:0;min-width:0}.meeting-tile.speaking{border-color:var(--primary, #6366f1);box-shadow:0 8px 24px #00000059,0 0 14px #6366f159}.meeting-tile-video,.meeting-stage-video{width:100%;height:100%;object-fit:cover;display:block;background:#000}.meeting-tile-video.mirror,.meeting-thumb-video.mirror{transform:scaleX(-1)}.meeting-tile-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#fff}.meeting-tile-avatar{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:600;border:2px solid rgba(255,255,255,.35);box-shadow:0 4px 14px #0006;background:linear-gradient(135deg,var(--primary-3, #a5b4fc) 0%,var(--primary, #6366f1) 100%)}.meeting-tile-nameline{font-size:12px;opacity:.8}.meeting-tile-info{position:absolute;left:8px;bottom:8px;display:flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;background:#0000008c;color:#fff;font-size:12px;max-width:calc(100% - 16px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meeting-badge-host{color:#fbbf24;flex-shrink:0}.meeting-badge-muted{color:#f87171;flex-shrink:0}.meeting-thumb{position:relative;width:100%;aspect-ratio:16 / 10;border-radius:14px;overflow:hidden;background:linear-gradient(135deg,#1b2140,#12162c);border:2px solid transparent;box-shadow:0 8px 24px #00000059;cursor:pointer}.meeting-thumb.active{border-color:var(--primary, #6366f1)}.meeting-thumb-video{width:100%;height:100%;object-fit:cover;display:block}.meeting-thumb-avatar{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:600;background:linear-gradient(135deg,var(--primary-3, #a5b4fc) 0%,var(--primary, #6366f1) 100%)}.meeting-thumb-name{position:absolute;left:0;right:0;bottom:0;padding:2px 6px;font-size:10px;color:#fff;background:#0000008c;display:flex;align-items:center;gap:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.meeting-stage{width:100%;height:100%;border-radius:14px;overflow:hidden;background:#000;box-shadow:0 8px 24px #00000059}.meeting-stage-share .meeting-stage-video{object-fit:contain}.meeting-stage-tag{position:absolute;top:10px;left:10px;display:flex;align-items:center;gap:5px;font-size:12px;color:#fff;padding:3px 10px;border-radius:999px;background:#0000008c}.meeting-people-panel{width:240px;flex-shrink:0;background:#ffffff0a;border-left:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;color:#fff}.meeting-people-header{display:flex;align-items:center;justify-content:space-between;padding:12px;font-size:13px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.08)}.meeting-mute-all{color:#fbbf24;display:flex;align-items:center;gap:4px}.meeting-allow-rec{display:flex;align-items:center;gap:4px;font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:#ffffff14;color:#ffffffbf;cursor:pointer;transition:background .13s,border-color .13s,color .13s}.meeting-allow-rec:hover{background:#ffffff29;color:#fff}.meeting-allow-rec.active{background:var(--primary, #6366f1);border-color:var(--primary, #6366f1);color:#fff}.meeting-people-header-actions{display:flex;align-items:center;gap:6px}.meeting-people-list{flex:1;overflow-y:auto;padding:8px 12px;display:flex;flex-direction:column;gap:10px}.meeting-people-item{display:flex;align-items:center;gap:8px}.meeting-people-item .meeting-thumb{flex:1}.meeting-people-actions{display:flex;flex-direction:column;align-items:center;gap:4px;color:#fffc}.meeting-people-actions .icon-btn{padding:7px;background:#ffffff14;border:1px solid rgba(255,255,255,.18);color:#fff}.meeting-people-actions .icon-btn:hover{background:#ffffff29;border-color:#ffffff47;color:#fff}.meeting-people-actions .icon-btn.active{background:var(--primary, #6366f1);border-color:var(--primary, #6366f1);color:#fff}.meeting-people-actions .icon-btn.danger{color:#f87171}.meeting-people-actions .icon-btn.danger:hover{background:#ef444433;border-color:#ef444473;color:#fca5a5}.meeting-controls{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;margin:12px auto 18px;width:fit-content;max-width:calc(100% - 24px);border-radius:20px;background:#0f1223b8;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 32px #00000073;overflow-x:auto}.meeting-ctrl{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:64px;padding:8px 10px;border-radius:10px;border:none;background:#ffffff14;color:#fff;cursor:pointer;transition:background .13s,transform .13s;flex-shrink:0}.meeting-ctrl:hover:not(:disabled){background:#ffffff29;transform:translateY(-1px)}.meeting-ctrl.off{background:#ffffff38;color:#f87171}.meeting-ctrl.share-on{background:var(--primary, #6366f1)}.meeting-ctrl.rec-on{background:#ef444459;color:#fca5a5}.meeting-ctrl.rec-on:hover:not(:disabled){background:#ef444480}.meeting-ctrl.active{background:var(--primary-soft, rgba(99, 102, 241, .25));color:#c7d2fe}.meeting-ctrl-label{font-size:11px;opacity:.85;white-space:nowrap}.meeting-ctrl-leave{background:#ff9f0a40;color:#fbbf24}.meeting-ctrl-leave:hover:not(:disabled){background:#ff9f0a66}.meeting-ctrl-end{background:#ef4444cc;color:#fff}.meeting-ctrl-end:hover:not(:disabled){background:#ef4444}.meeting-invite-banner{position:fixed;right:16px;bottom:16px;z-index:1300;display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;background:var(--bg-2, #fff);border:1px solid var(--primary-2, rgba(99, 102, 241, .4));box-shadow:0 8px 28px #0000002e;animation:meeting-banner-in .22s ease-out;max-width:340px}@keyframes meeting-banner-in{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.meeting-invite-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--primary-3, #a5b4fc) 0%,var(--primary, #6366f1) 100%);flex-shrink:0}.meeting-invite-main{flex:1;min-width:0}.meeting-invite-title{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meeting-invite-sub{font-size:11px;color:var(--text-3, #888);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meeting-invite-join,.meeting-invite-close{flex-shrink:0}.meeting-toast{position:absolute;left:50%;bottom:96px;transform:translate(-50%);padding:7px 16px;border-radius:999px;background:#0f1223c7;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);box-shadow:0 6px 20px #0006;color:#fff;font-size:12px;z-index:5}.meeting-error-float{position:absolute;top:56px;left:50%;transform:translate(-50%);z-index:5}@media (max-width: 720px){.meeting-thumb-strip{width:96px}.meeting-people-panel{position:absolute;right:0;top:46px;bottom:76px;z-index:4;box-shadow:-8px 0 24px #0006}.meeting-ctrl{min-width:52px;padding:6px 8px}.meeting-ctrl-label{font-size:10px}.meeting-grid.cols-3,.meeting-grid.cols-4{grid-template-columns:repeat(2,1fr)}}.mail-sidebar{display:flex;flex-direction:column;height:100%;padding:12px 10px;gap:10px}.mail-add-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%}.mail-sidebar-empty{text-align:center;color:var(--text-2);padding:28px 12px;font-size:13px}.mail-sidebar-empty .hint{font-size:12px;color:var(--text-3);line-height:1.6}.mail-account-list{flex:1;overflow-y:auto}.mail-account-group{margin-bottom:4px}.mail-account-item{display:flex;align-items:center;gap:6px;padding:8px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text);user-select:none}.mail-account-item:hover{background:#6366f10f}.mail-account-item.open{font-weight:600}.mail-account-arrow{font-size:9px;color:var(--text-3);transition:transform .15s ease;flex-shrink:0}.mail-account-arrow.open{transform:rotate(90deg)}.mail-account-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.mail-account-status-dot.ok{background:var(--success)}.mail-account-status-dot.err{background:var(--danger)}.mail-account-email{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-account-action{flex-shrink:0;opacity:0;transition:opacity .12s ease}.mail-account-item:hover .mail-account-action{opacity:1}.mail-account-action.danger:hover{color:var(--danger)}.mail-folder-list{margin:2px 0 6px 14px}.mail-folder-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text-2)}.mail-folder-item:hover{background:#6366f10f;color:var(--text)}.mail-folder-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.mail-folder-icon{display:inline-flex;flex-shrink:0}.mail-folder-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-folder-unread{background:var(--primary);color:#fff;border-radius:10px;font-size:11px;padding:0 7px;line-height:17px;flex-shrink:0}.mail-folder-empty{padding:6px 10px;font-size:12px;color:var(--text-3)}.mail-workspace{display:flex;flex-direction:column;height:100%;background:var(--panel)}.mail-toolbar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.mail-unread-toggle{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--text-2);cursor:pointer;user-select:none}.mail-toolbar-error{font-size:12px;color:var(--danger);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-main{flex:1;display:flex;min-height:0}.mail-list{width:340px;flex-shrink:0;border-right:1px solid var(--border);overflow-y:auto;padding:8px}.mail-list-hint{text-align:center;color:var(--text-3);font-size:13px;padding:32px 12px}.mail-item{padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;margin-bottom:4px;border:1px solid transparent}.mail-item:hover{background:#6366f10d}.mail-item.active{background:var(--primary-soft);border-color:var(--primary-soft-2)}.mail-item-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.mail-item-from{font-size:13px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-item.unseen .mail-item-from{color:var(--text);font-weight:700}.mail-item-date{font-size:11px;color:var(--text-3);flex-shrink:0}.mail-item-subject{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--text);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-item.unseen .mail-item-subject{font-weight:700}.mail-item-subject .flagged{color:var(--warning);flex-shrink:0}.mail-item-snippet{font-size:12px;color:var(--text-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-item-attach{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-3);margin-top:3px}.mail-load-more{width:100%;margin-top:4px}.mail-reader{flex:1;min-width:0;display:flex;flex-direction:column}.mail-reader-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:13px}.mail-reader-header{padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.mail-reader-header h3{margin:0 0 8px;font-size:16px;color:var(--text);line-height:1.4;word-break:break-word}.mail-reader-meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--text-2);margin-bottom:10px}.mail-reader-meta .from{color:var(--text);font-weight:600}.mail-reader-actions{display:flex;gap:8px}.mail-reader-body{flex:1;overflow:auto;padding:16px 20px;min-height:0}.mail-html-frame{width:100%;height:100%;border:none;background:#fff}.mail-text-body{margin:0;white-space:pre-wrap;word-break:break-word;font-size:13.5px;line-height:1.7;color:var(--text);font-family:var(--font)}.mail-reader-attachments{border-top:1px solid var(--border);padding:10px 20px 14px;flex-shrink:0}.mail-ai-btn{color:var(--accent, #6366f1)}.mail-ai-btn:disabled{opacity:.6}.mail-ai-panel{border-top:1px solid var(--border);padding:10px 20px 14px;flex-shrink:0;max-height:220px;overflow:auto;background:color-mix(in srgb,var(--accent, #6366f1) 4%,transparent)}.mail-ai-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.mail-ai-panel-title{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--accent, #6366f1)}.mail-ai-cursor{animation:mail-ai-blink 1s step-start infinite}@keyframes mail-ai-blink{50%{opacity:0}}.mail-ai-panel-actions{display:inline-flex;gap:6px}.mail-ai-body{margin:0;white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.7;color:var(--text);font-family:var(--font)}.mail-ai-error{font-size:13px;color:#ef4444}.mail-attach-list{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.mail-attach-item{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel);cursor:pointer;font-size:12.5px;color:var(--text-2);max-width:100%}.mail-attach-item:hover{border-color:var(--primary-3);color:var(--primary)}.mail-attach-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-attach-size{color:var(--text-3);font-size:11px;flex-shrink:0}.drive-workspace{display:flex;flex-direction:column;height:100%;width:100%;background:var(--panel)}.drive-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.drive-title{font-size:15px;font-weight:600;color:var(--text)}.drive-sub{font-size:12px;color:var(--text-3);margin-top:3px}.drive-error{margin:8px 20px 0;padding:8px 12px;border:1px solid var(--danger, #ef4444);border-radius:var(--radius-sm);color:var(--danger, #ef4444);font-size:12.5px}.drive-list{flex:1;overflow:auto;padding:12px 20px;min-height:0}.drive-table{width:100%;border-collapse:collapse;font-size:13px;color:var(--text-2)}.drive-table th{text-align:left;font-size:12px;font-weight:500;color:var(--text-3);padding:8px 10px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--panel);z-index:1}.drive-table td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.drive-table tr:hover td{background:color-mix(in srgb,var(--primary) 5%,transparent)}.drive-name-cell{color:var(--text);max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drive-type-cell{color:var(--text-3);font-size:12px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drive-table-ops{width:130px;white-space:nowrap}.drive-table-ops .icon-btn{margin-right:4px}.drive-rename-row{display:flex;align-items:center;gap:6px}.drive-rename-row .search-input{width:220px;padding:4px 8px;font-size:12.5px}.drive-pager{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px;border-top:1px solid var(--border);flex-shrink:0}.drive-pager-info{font-size:12.5px;color:var(--text-3)}.mail-account-modal{width:480px}.mail-provider-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.mail-provider-chip{padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--panel);color:var(--text-2);font-size:12.5px;cursor:pointer;transition:all .15s ease}.mail-provider-chip:hover{border-color:var(--primary-3);color:var(--primary)}.mail-provider-chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.mail-provider-note{font-size:12px;color:var(--text-3);background:var(--primary-soft);border-radius:var(--radius-sm);padding:8px 12px;margin-bottom:14px;line-height:1.6}.mail-server-fields{display:grid;grid-template-columns:1fr 88px;gap:0 10px;padding:12px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);margin-bottom:12px}.form-field{margin-bottom:12px}.form-field label{display:block;font-size:12.5px;color:var(--text-2);margin-bottom:5px}.form-field input{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;color:var(--text);background:var(--panel);outline:none}.form-field input:focus{border-color:var(--primary-3);box-shadow:0 0 0 3px #6366f11f}.form-error{color:var(--danger);font-size:12.5px;margin-top:8px;word-break:break-all}.mail-compose-modal{width:640px}.mail-compose-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.mail-compose-label{width:52px;flex-shrink:0;font-size:13px;color:var(--text-2);text-align:right}.mail-compose-from{font-size:13px;color:var(--text);font-weight:600}.mail-compose-row input{flex:1;min-width:0;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;color:var(--text);outline:none}.mail-compose-row input:focus{border-color:var(--primary-3);box-shadow:0 0 0 3px #6366f11f}.mail-compose-cc-toggle{flex-shrink:0}.mail-compose-body{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;font-size:13.5px;font-family:var(--font);color:var(--text);resize:vertical;outline:none;min-height:220px}.mail-compose-body:focus{border-color:var(--primary-3);box-shadow:0 0 0 3px #6366f11f}.mail-compose-modal .modal-footer{justify-content:space-between}.mail-compose-modal .modal-footer-actions{display:flex;gap:10px}.mail-attach-btn{cursor:pointer}.btn-sm{padding:5px 10px;font-size:12.5px;display:inline-flex;align-items:center;gap:5px}.btn.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.spin{animation:mailSpin 1s linear infinite}@keyframes mailSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 900px){.mail-list{width:260px}.mail-compose-modal{width:calc(100vw - 32px)}}.cal-workspace{display:flex;flex-direction:column;height:100%;width:100%;background:var(--panel)}.cal-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;gap:8px}.cal-toolbar-info{min-width:0}.cal-title{font-size:15px;font-weight:600;color:var(--text)}.cal-sub{font-size:12px;color:var(--text-3);margin-top:3px}.cal-actions{display:flex;align-items:center;gap:8px}.cal-body{flex:1;display:flex;min-height:0}.cal-grid{flex:1;min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--border)}.cal-grid-head{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--border);flex-shrink:0}.cal-week-label{padding:8px 10px;font-size:12px;color:var(--text-3);text-align:center}.cal-grid-cells{flex:1;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;min-height:0;overflow-y:auto}.cal-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px 8px;cursor:pointer;overflow:hidden;transition:background .12s ease}.cal-cell:hover{background:color-mix(in srgb,var(--primary) 5%,transparent)}.cal-cell.dim{color:var(--text-3)}.cal-cell.selected{background:color-mix(in srgb,var(--primary) 10%,transparent);box-shadow:inset 0 0 0 1.5px var(--primary)}.cal-cell-day{font-size:12.5px;color:var(--text-2);margin-bottom:4px}.cal-cell.today .cal-cell-day{display:inline-block;background:var(--primary);color:#fff;border-radius:999px;padding:1px 7px;font-weight:600}.cal-cell-events{display:flex;flex-direction:column;gap:2px}.cal-event-chip{font-size:11.5px;color:var(--primary);background:var(--primary-soft);border-radius:4px;padding:1px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-event-chip.cancelled{color:var(--text-3);text-decoration:line-through;background:var(--panel-2, var(--border))}.cal-event-more{font-size:11px;color:var(--text-3)}.cal-side{width:300px;flex-shrink:0;display:flex;flex-direction:column;padding:14px 16px;gap:10px;overflow-y:auto;min-height:0}.cal-side-head{font-size:14px;font-weight:600;color:var(--text)}.cal-side-sub{font-size:12px;color:var(--text-3);margin-top:-6px}.cal-side-list{display:flex;flex-direction:column;gap:8px}.cal-event-card{display:flex;gap:8px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px}.cal-event-bar{width:3px;border-radius:2px;background:var(--primary);flex-shrink:0}.cal-event-bar.cancelled{background:var(--text-3)}.cal-event-main{flex:1;min-width:0}.cal-event-title{font-size:13px;font-weight:600;color:var(--text);word-break:break-all}.cal-cancelled-tag{font-size:11px;color:var(--danger);border:1px solid var(--danger);border-radius:4px;padding:0 4px;margin-right:4px}.cal-event-meta{font-size:12px;color:var(--text-3);margin-top:2px}.cal-event-desc{font-size:12px;color:var(--text-2);margin-top:4px;word-break:break-all}.cal-event-ops{display:flex;gap:4px;margin-top:6px}.cal-busy{margin-top:auto;border-top:1px dashed var(--border-strong, var(--border));padding-top:10px}.cal-busy-title{font-size:12.5px;font-weight:600;color:var(--text-2);margin-bottom:8px}.cal-busy-row{display:flex;gap:6px}.cal-busy-row .search-input{flex:1;min-width:0;padding:5px 8px;font-size:12.5px}.cal-busy-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.cal-busy-item{display:flex;align-items:baseline;gap:8px;font-size:12px}.cal-busy-user{color:var(--text);font-weight:500;word-break:break-all}.cal-busy-free{color:var(--success, #10b981)}.cal-busy-slots{display:flex;flex-wrap:wrap;gap:4px;color:var(--text-3)}.cal-editor{width:520px}.cal-form-row{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.cal-form-check{margin-bottom:12px;font-size:12.5px;color:var(--text-2)}.cal-form-check label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.cal-form-row .form-field{margin-bottom:12px}.cal-form-row select{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;color:var(--text);background:var(--panel);outline:none}.cal-form-desc{width:100%;min-height:72px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;font-family:var(--font);color:var(--text);background:var(--panel);resize:vertical;outline:none}.cal-editor .modal-footer-actions{display:flex;gap:10px}.cal-editor-error{margin-bottom:12px;padding:8px 12px;border:1px solid color-mix(in srgb,var(--danger) 40%,transparent);background:color-mix(in srgb,var(--danger) 8%,transparent);color:var(--danger);border-radius:var(--radius-sm);font-size:12.5px}.cal-attendee-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.cal-attendee-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:12px}.cal-attendee-chip-x{border:none;background:transparent;color:inherit;cursor:pointer;font-size:14px;line-height:1;padding:2px 5px;border-radius:999px}.cal-attendee-chip-x:hover{background:color-mix(in srgb,var(--primary) 16%,transparent)}.cal-attendee-filter{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12.5px;color:var(--text);background:var(--panel);outline:none;margin-bottom:6px}.cal-attendee-list{max-height:140px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:6px}.cal-attendee-item{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:12.5px;color:var(--text-2);cursor:pointer}.cal-attendee-item:hover{background:color-mix(in srgb,var(--primary) 5%,transparent)}.cal-attendee-item.checked{color:var(--text);background:color-mix(in srgb,var(--primary) 8%,transparent)}.cal-attendee-item input{flex-shrink:0}.cal-attendee-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-attendee-id{font-size:11px;color:var(--text-3);flex-shrink:0}.cal-attendee-empty{padding:10px;font-size:12px;color:var(--text-3);text-align:center}.cal-attendee-manual{display:flex;gap:6px}.cal-attendee-manual input{flex:1;min-width:0;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12.5px;color:var(--text);background:var(--panel);outline:none}@media (max-width: 900px){.cal-side{width:240px}.cal-form-row{grid-template-columns:1fr}.cal-editor{width:calc(100vw - 32px)}}
