:root{--navy:#0e1726;--navy2:#17243a;--ink:#17233b;--muted:#8a94a8;--line:#e8ebf1;--blue:#4f7cff;--blue2:#3765e8;--soft:#f5f7fb;--green:#28bb86;--shadow:0 16px 45px rgba(28,43,74,.08);font-family:'DM Sans','Noto Sans SC',sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:#f7f9fc;color:var(--ink);overflow:hidden}button,input,textarea{font:inherit}button{border:0;cursor:pointer}.hidden{display:none!important}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#9ca6b8}.auth-view{height:100vh;display:grid;grid-template-columns:minmax(380px,43%) 1fr;background:#fff}.auth-art{position:relative;overflow:hidden;background:linear-gradient(145deg,#101d32,#172e52 55%,#2c4b79);color:#fff;padding:12vh 9vw 7vh 9vw;display:flex;flex-direction:column;justify-content:space-between}.auth-art:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 75% 35%,rgba(117,162,255,.36),transparent 27%),radial-gradient(circle at 20% 85%,rgba(72,132,255,.16),transparent 32%)}.art-orbit{position:absolute;border:1px solid rgba(255,255,255,.13);border-radius:50%;width:490px;height:490px;right:-170px;top:19%;transform:rotate(28deg)}.orbit-two{width:680px;height:250px;right:-270px;top:36%;transform:rotate(-43deg);border-color:rgba(141,184,255,.22)}.art-logo,.mini-logo,.rail-logo{display:grid;place-items:center;background:linear-gradient(135deg,#78a0ff,#355fdd);font-weight:700;box-shadow:0 10px 30px rgba(20,63,172,.25)}.art-logo{position:relative;width:58px;height:58px;border-radius:19px;font-size:28px;z-index:1}.art-copy{position:relative;z-index:1;margin-top:auto;margin-bottom:4vh}.art-copy h1{font-size:clamp(36px,4.3vw,66px);line-height:1.13;letter-spacing:-2px;margin:18px 0}.art-copy em{color:#a7c1ff;font-style:normal}.art-copy p{color:#b5c7e8;font-size:16px;max-width:300px;line-height:1.8}.art-stats{position:relative;display:flex;gap:48px;z-index:1}.art-stats span{display:flex;flex-direction:column;gap:7px}.art-stats b{font-size:15px}.art-stats small{color:#a1b5d5;font-size:11px}.auth-card-wrap{display:grid;place-items:center;background:#fbfcfe;padding:35px}.auth-card{width:min(380px,100%)}.mobile-brand{display:none}.auth-heading h2{font-size:34px;margin:12px 0 8px;letter-spacing:-1px}.auth-heading p{color:var(--muted);margin:0 0 30px;font-size:14px}.auth-tabs{height:44px;display:flex;background:#f0f3f8;border-radius:12px;padding:4px;margin-bottom:24px}.auth-tabs button{flex:1;border-radius:9px;background:none;color:#8791a5;font-size:13px;font-weight:600}.auth-tabs button.active{background:#fff;color:var(--ink);box-shadow:0 3px 9px rgba(36,54,88,.08)}.auth-form{display:flex;flex-direction:column;gap:17px}.auth-form label{font-size:12px;color:#606b7f;font-weight:600}.auth-form input{width:100%;border:1px solid #e1e6ef;border-radius:11px;height:48px;margin-top:8px;padding:0 14px;color:var(--ink);outline:none;background:#fff;transition:.2s}.auth-form input:focus{border-color:#7897ff;box-shadow:0 0 0 3px rgba(79,124,255,.1)}.password-box{position:relative}.password-box input{padding-right:58px}.password-toggle{position:absolute;right:12px;top:22px;color:var(--blue);background:none;font-size:11px}.primary-btn{border-radius:11px;height:48px;background:var(--blue);color:#fff;font-weight:600;margin-top:6px;box-shadow:0 9px 20px rgba(79,124,255,.25);transition:.2s}.primary-btn:hover{background:var(--blue2);transform:translateY(-1px)}.primary-btn span{font-size:20px;line-height:0;margin-left:7px}.auth-tip{text-align:center;color:#aab2c1;font-size:11px;margin-top:26px}
/* app */.chat-view{height:100vh;display:grid;grid-template-columns:72px 330px minmax(420px,1fr) 265px;background:#fff}.left-rail{background:var(--navy);display:flex;align-items:center;flex-direction:column;padding:20px 0 17px}.rail-logo{width:40px;height:40px;border-radius:13px;font-size:19px}.rail-nav{display:flex;flex-direction:column;gap:13px;margin-top:58px}.rail-bottom{margin-top:auto;display:flex;flex-direction:column;gap:18px;align-items:center}.rail-btn{width:42px;height:42px;border-radius:12px;background:transparent;color:#708099;font-size:22px;position:relative;transition:.2s}.rail-btn:hover,.rail-btn.active{background:#253553;color:#fff}.rail-btn i{position:absolute;width:7px;height:7px;border-radius:50%;background:#ff7c79;right:7px;top:7px}.rail-avatar{width:36px;height:36px;border-radius:50%;background:#f0a27c;color:#fff;font-size:11px;font-weight:600;border:2px solid #fff3}.chat-sidebar{border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0}.sidebar-top{display:flex;align-items:center;justify-content:space-between;padding:32px 24px 21px}.sidebar-top h1{font-size:25px;margin:7px 0 0;letter-spacing:-.8px}.icon-btn{height:34px;width:34px;background:transparent;color:#8b95a6;border-radius:9px;font-size:21px;line-height:1}.icon-btn:hover{background:#f1f4f9;color:var(--ink)}.sidebar-top .icon-btn{background:#edf2ff;color:var(--blue);font-size:25px}.search-box{margin:0 20px;height:39px;background:#f5f7fa;border-radius:10px;display:flex;align-items:center;padding:0 12px;color:#8b96aa;gap:8px}.search-box span{font-size:20px}.search-box input{border:0;outline:0;background:transparent;flex:1;font-size:12px;color:var(--ink)}.sidebar-tabs{display:flex;margin:20px 24px 6px;border-bottom:1px solid #eef0f4;gap:24px}.sidebar-tabs button{background:none;padding:0 0 12px;color:#99a2b2;font-size:12px;position:relative}.sidebar-tabs button.active{color:var(--blue);font-weight:600}.sidebar-tabs button.active:after{content:'';position:absolute;height:2px;background:var(--blue);bottom:-1px;left:0;right:0;border-radius:2px}.conversation-list{overflow:auto;flex:1;padding:5px 12px}.conversation-item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:13px;cursor:pointer;transition:.15s;margin-bottom:3px}.conversation-item:hover{background:#f7f9fc}.conversation-item.active{background:#eef3ff}.avatar{display:grid;place-items:center;color:#fff;flex:none;font-weight:600;overflow:hidden}.avatar-small{width:39px;height:39px;border-radius:12px;font-size:12px}.avatar-large{width:72px;height:72px;border-radius:23px;font-size:23px;margin:auto}.conversation-body{min-width:0;flex:1}.conversation-body .row{display:flex;justify-content:space-between;align-items:center;gap:7px}.conversation-body b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-body time{font-size:10px;color:#a5adbb;white-space:nowrap}.conversation-body p{margin:5px 0 0;color:#9aa3b2;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unread{background:var(--blue);color:#fff;border-radius:10px;padding:2px 6px;font-size:9px}.sidebar-user{border-top:1px solid var(--line);padding:16px 18px;display:flex;align-items:center;gap:10px}.sidebar-user-text{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.sidebar-user-text b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-text small{font-size:10px;color:#9da6b5}.online-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:4px}.more-btn{background:none;color:#a3adbc;font-size:19px}.chat-main{min-width:0;display:flex;flex-direction:column;background:#fbfcfe;position:relative}.chat-header{height:81px;border-bottom:1px solid var(--line);background:#fff;padding:0 27px;display:flex;align-items:center;gap:13px}.header-person{min-width:0;flex:1}.header-person h2{font-size:15px;margin:0 0 5px}.header-person span{font-size:10px;color:#a0a9b9}.header-actions{display:flex;gap:4px}.empty-chat{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#99a3b2}.empty-illustration{width:74px;height:74px;border-radius:26px;background:#eef3ff;color:var(--blue);display:grid;place-items:center;font-size:32px;margin-bottom:20px}.empty-chat h2{font-size:17px;color:#516078;margin:0 0 9px}.empty-chat p{font-size:12px;margin:0}.message-pane{display:flex;flex-direction:column;flex:1;min-height:0}.message-list{padding:28px 7%;overflow:auto;flex:1;display:flex;flex-direction:column;gap:15px}.date-divider{text-align:center;font-size:10px;color:#aab2bf;margin:2px 0 8px}.message{display:flex;gap:9px;max-width:75%;align-items:flex-end}.message.mine{margin-left:auto;flex-direction:row-reverse}.message .avatar{width:30px;height:30px;border-radius:10px;font-size:9px;align-self:flex-start}.bubble-wrap{display:flex;flex-direction:column;gap:4px}.message.mine .bubble-wrap{align-items:flex-end}.bubble{padding:11px 14px;border-radius:5px 14px 14px 14px;background:#fff;box-shadow:0 2px 8px rgba(37,51,77,.04);font-size:13px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.message.mine .bubble{background:var(--blue);color:#fff;border-radius:14px 5px 14px 14px}.message time{font-size:9px;color:#adb5c1;margin:0 4px}.message.mine time{text-align:right}.bubble-media{max-width:240px;border-radius:12px;display:block;margin-bottom:4px}.composer{background:#fff;margin:0 5%;border:1px solid #edf0f5;border-radius:16px;min-height:93px;padding:9px 12px 10px;box-shadow:0 8px 25px rgba(39,56,88,.04);position:relative}.composer-tools{height:25px;display:flex;gap:7px;align-items:center}.composer-tools button,.composer-tools label{background:none;color:#9ba5b4;font-size:18px;cursor:pointer;padding:0 3px}.composer textarea{border:0;resize:none;outline:0;width:calc(100% - 43px);height:39px;padding:8px 0 0;font-size:13px;color:var(--ink);line-height:1.5}.send-btn{position:absolute;right:12px;bottom:12px;width:31px;height:31px;border-radius:10px;background:var(--blue);color:#fff;font-size:15px}.emoji-panel{position:absolute;z-index:100;left:10px;bottom:72px;padding:13px;background:#fff;border-radius:13px;box-shadow:var(--shadow);font-size:21px;word-spacing:7px;line-height:1.8;max-width:260px;max-height:min(320px,45vh);overflow-y:auto;overflow-x:hidden}.typing-hint{position:absolute;bottom:110px;left:7%;font-size:10px;color:#adb6c4}.detail-panel{border-left:1px solid var(--line);text-align:center;background:#fff;padding:17px 20px}.detail-close{text-align:right;height:35px}.detail-panel h2{font-size:16px;margin:15px 0 5px}.detail-panel>p{font-size:11px;color:#a1aaba;margin:0}.detail-actions{display:flex;justify-content:center;gap:29px;margin:27px 0;border-bottom:1px solid #f0f1f5;padding-bottom:26px}.detail-actions button{display:flex;flex-direction:column;gap:7px;background:none;color:#6f7a8e;font-size:17px}.detail-actions small{font-size:9px;color:#a7afbc}.detail-section{text-align:left}.detail-section>span{font-size:11px;font-weight:600;color:#7b8698;display:block;margin-bottom:8px}.detail-section label{font-size:11px;display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid #f2f3f6;color:#6b7586}.switch{appearance:none;width:30px;height:17px;border-radius:9px;background:#dfe4ec;position:relative;outline:0}.switch:checked{background:var(--blue)}.switch:after{content:'';position:absolute;width:13px;height:13px;background:#fff;border-radius:50%;left:2px;top:2px;transition:.2s}.switch:checked:after{left:15px}.mobile-only{display:none}
/* admin */.admin-view{height:100vh;background:#f7f9fc;color:var(--ink)}.admin-topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 35px}.admin-brand{display:flex;align-items:center;gap:11px}.mini-logo{width:34px;height:34px;border-radius:11px;color:#fff;font-size:16px}.admin-brand div{display:flex;flex-direction:column;gap:2px}.admin-brand b{font-size:13px}.admin-brand small{font-size:10px;color:#9ca5b4}.admin-top-actions{display:flex;align-items:center;gap:18px}.admin-online{font-size:11px;color:#8490a4}.admin-online i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);margin-right:4px}.ghost-btn{background:#f2f5fb;border-radius:8px;padding:9px 14px;font-size:11px;color:#617089}.admin-layout{display:grid;grid-template-columns:220px 1fr;height:calc(100vh - 70px)}.admin-nav{background:#fff;border-right:1px solid var(--line);padding:30px 16px}.nav-caption{display:block;color:#aab2c0;font-size:10px;font-weight:600;margin:0 14px 12px}.nav-caption.second{margin-top:36px}.admin-nav-item{width:100%;height:42px;text-align:left;border-radius:9px;background:transparent;color:#8792a4;font-size:12px;padding:0 15px;display:flex;align-items:center;gap:12px}.admin-nav-item.active,.admin-nav-item:hover{background:#eef3ff;color:var(--blue);font-weight:600}.admin-content{overflow:auto;padding:36px 5%;max-width:1300px}.admin-page h1{font-size:25px;margin:0 0 7px}.page-subtitle{font-size:12px;color:#9ba5b5;margin:0 0 29px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:24px}.stat-card,.panel{background:#fff;border:1px solid #eef0f5;border-radius:14px;padding:20px;box-shadow:0 5px 18px rgba(35,51,81,.025)}.stat-card{display:flex;align-items:center;gap:15px}.stat-icon{width:39px;height:39px;border-radius:12px;background:#eef3ff;color:var(--blue);display:grid;place-items:center;font-size:19px}.stat-card:nth-child(2) .stat-icon{background:#eaf9f3;color:#21ae7c}.stat-card:nth-child(3) .stat-icon{background:#fff1ee;color:#ed7568}.stat-card:nth-child(4) .stat-icon{background:#fff7e9;color:#e6a22c}.stat-card small{color:#9ca5b4;font-size:10px;display:block;margin-bottom:6px}.stat-card strong{font-size:22px}.admin-two-col{display:grid;grid-template-columns:1.3fr 1fr;gap:18px}.panel-title{font-size:13px;font-weight:600;margin:0 0 18px;display:flex;justify-content:space-between}.panel-title span{font-size:10px;color:#a4adba;font-weight:400}.bar-chart{height:170px;display:flex;align-items:end;gap:11px;padding:0 7px;border-bottom:1px solid #f0f2f6}.bar{flex:1;background:linear-gradient(#7095ff,#b7c8ff);border-radius:5px 5px 0 0;min-height:15px;position:relative}.bar:nth-child(2n){background:linear-gradient(#9e91f6,#d0c8ff)}.bar label{position:absolute;top:calc(100% + 9px);left:50%;transform:translateX(-50%);font-size:9px;color:#a3adbb}.activity{display:flex;flex-direction:column;gap:17px}.activity-row{display:flex;gap:11px;align-items:center}.activity-mark{width:29px;height:29px;border-radius:10px;background:#edf2ff;color:var(--blue);display:grid;place-items:center;font-size:11px}.activity-row div:last-child{display:flex;flex-direction:column;gap:3px}.activity-row b{font-size:11px;font-weight:500}.activity-row small{color:#a8b0bd;font-size:9px}.admin-toolbar{display:flex;justify-content:space-between;align-items:center;margin:0 0 17px}.admin-search{height:36px;border:1px solid #e5e9f0;background:#fff;border-radius:8px;padding:0 11px;width:220px;outline:0;font-size:11px}.table-wrap{overflow:auto;background:#fff;border:1px solid #eef0f5;border-radius:14px}.admin-table{width:100%;border-collapse:collapse;min-width:650px}.admin-table th{text-align:left;background:#fafbfc;color:#9ba5b5;font-size:10px;font-weight:500;padding:14px 16px}.admin-table td{padding:13px 16px;border-top:1px solid #f0f2f5;font-size:11px;color:#5b687c}.admin-table .user-cell{display:flex;align-items:center;gap:9px;color:var(--ink);font-weight:600}.admin-table .avatar{width:28px;height:28px;border-radius:9px;font-size:9px}.status-pill{padding:4px 8px;border-radius:20px;background:#e9faf3;color:#20a878;font-size:9px}.status-pill.disabled{background:#fff0ef;color:#e36d62}.table-action{background:none;color:var(--blue);font-size:11px}.system-form{max-width:660px}.system-row{display:flex;justify-content:space-between;align-items:center;padding:17px 0;border-bottom:1px solid #f0f2f5}.system-row b{font-size:12px}.system-row small{display:block;color:#9ca6b5;font-size:10px;margin-top:5px}.code-block{background:#f6f8fb;border-radius:8px;padding:13px;font:11px monospace;color:#66748a}
@media(max-width:1050px){.chat-view{grid-template-columns:65px 300px minmax(380px,1fr)}.detail-panel{display:none}.stat-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){body{overflow:hidden}.auth-view{display:block}.auth-art{display:none}.auth-card-wrap{height:100vh;padding:26px}.mobile-brand{display:flex;align-items:center;gap:9px;font-size:15px;margin-bottom:11vh}.mobile-brand .mini-logo{display:grid}.chat-view{display:flex;position:relative}.left-rail{width:58px;flex:none}.chat-sidebar{width:calc(100vw - 58px);flex:none}.chat-main{position:absolute;left:58px;right:0;top:0;bottom:0;transform:translateX(100%);transition:.25s;z-index:4}.chat-view.mobile-chat-open .chat-main{transform:translateX(0)}.chat-header{height:67px;padding:0 15px}.mobile-only{display:block}.header-actions{display:none}.message-list{padding:20px 15px}.message{max-width:88%}.composer{margin:0 10px 10px}.detail-panel{display:none}.admin-layout{display:block}.admin-nav{height:58px;border-right:0;border-bottom:1px solid var(--line);padding:8px;display:flex;gap:4px;overflow:auto}.nav-caption{display:none}.nav-caption.second{display:none}.admin-nav-item{width:auto;white-space:nowrap;height:40px;padding:0 12px}.admin-content{padding:25px 16px}.admin-topbar{padding:0 15px;height:62px}.admin-online{display:none}.stat-grid{gap:8px}.stat-card{padding:13px;gap:8px}.stat-card strong{font-size:18px}.stat-card small{font-size:9px}.admin-two-col{display:block}.admin-two-col .panel{margin-top:15px}.admin-top-actions{gap:6px}}
/* 大开门品牌与手机端补充 */
.auth-role-tabs{display:flex;gap:8px;margin-bottom:12px}.auth-role-tabs button{flex:1;height:38px;border-radius:10px;background:#edf1f7;color:#7b879a;font-size:12px;font-weight:600}.auth-role-tabs button.active{background:#172b4b;color:#fff;box-shadow:0 5px 14px rgba(23,43,75,.16)}.required-note{font-size:11px;line-height:1.6;color:#6b7890;background:#f0f4ff;border:1px solid #dce5ff;border-radius:10px;padding:10px 12px}.invite-create{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.invite-create>b,.invite-create>div:first-child{display:flex;flex-direction:column;gap:5px}.invite-create small{font-size:10px;color:#9ca6b5}.invite-actions{display:flex;align-items:center;gap:10px}.invite-actions select{height:36px;border:1px solid #e3e8f0;border-radius:8px;padding:0 10px;color:#68758a;background:#fff;font-size:11px}.small-primary{height:36px!important;margin:0;padding:0 14px;font-size:11px}.invite-code{font:600 12px monospace;letter-spacing:.5px;color:#345edb;background:#eef3ff;border-radius:6px;padding:6px 8px}.list-empty{padding:42px 17px;text-align:center;color:#a6afbd;font-size:11px;line-height:1.8}.toast{position:fixed;z-index:99;left:50%;top:24px;transform:translateX(-50%);background:#17243a;color:#fff;padding:11px 17px;border-radius:10px;box-shadow:0 10px 25px rgba(15,30,55,.2);font-size:12px;animation:toast-in .2s ease}.toast.error{background:#b84c59}.auth-form input::placeholder{color:#b1bac8}@keyframes toast-in{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:720px){.auth-card{width:100%;max-width:420px}.auth-card-wrap{padding:22px 20px;align-items:start}.mobile-brand{margin-bottom:7vh}.auth-heading h2{font-size:30px}.auth-heading p{margin-bottom:20px}.auth-tabs{margin-bottom:18px}.auth-form{gap:12px}.auth-form input{height:45px}.auth-form label{font-size:11px}.primary-btn{height:46px}.auth-tip{margin-top:18px}.left-rail{padding-top:14px}.rail-nav{margin-top:35px;gap:7px}.sidebar-top{padding:24px 18px 16px}.sidebar-top h1{font-size:23px}.search-box{margin:0 15px}.sidebar-tabs{margin:17px 18px 5px}.conversation-list{padding:5px 8px}.conversation-item{padding:11px 9px}.chat-header{box-shadow:0 2px 10px rgba(33,49,76,.03)}.empty-chat{padding:30px}.message-list{gap:13px}.bubble{font-size:13px;padding:10px 12px}.composer{min-height:84px}.composer textarea{height:34px}.admin-topbar{padding:0 12px}.admin-brand b{font-size:12px}.admin-content{padding:20px 12px}.admin-content h1{font-size:22px}.invite-create{display:block;padding:15px}.invite-actions{margin-top:14px}.invite-actions select{flex:1}.invite-actions .small-primary{flex:1}.admin-table{min-width:690px}}

/* v2.1 修复：手机端使用页面级上下滚动，聊天内容单独滚动，避免整页被锁死。 */
.pending-media{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;margin:5px 0 0;padding:6px 50px 6px 9px;border-radius:8px;background:#f0f4ff;color:#5870a4;font-size:11px;min-height:32px}.pending-media>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pending-media>div{display:flex;align-items:center;gap:5px;min-width:0}.pending-media button{border:0;background:none;color:#7c8ba7;font-size:18px;cursor:pointer}.pending-media .send-attachment-now{height:24px;padding:0 8px;border-radius:6px;background:#4f7cff;color:#fff;font-size:10px;white-space:nowrap}.pending-media .send-attachment-now:hover{background:#3765e8}.pending-media .remove-attachment{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:26px;height:26px;padding:0;line-height:24px;text-align:center;border-radius:7px}.pending-media .remove-attachment:hover{background:#dce5ff;color:#345edb}.attachment-link{display:block;color:inherit;text-decoration:none}.file-attachment{padding:8px 10px;border-radius:8px;background:rgba(79,124,255,.1);font-size:12px}.message.mine .file-attachment{background:rgba(255,255,255,.18)}.emoji-panel button{border:0;background:transparent;padding:3px;font-size:21px;cursor:pointer;border-radius:6px}.emoji-panel button:hover{background:#eef3ff}.admin-user-controls{margin-top:18px;padding-top:18px;border-top:1px solid #f0f1f5}.admin-user-controls select{max-width:110px;height:27px;border:1px solid #e1e6ef;border-radius:6px;color:#66748a;background:#fff;font-size:10px;padding:0 4px}.admin-ip-line{font-size:10px;color:#9ba5b4;word-break:break-all;padding:10px 0;line-height:1.5}.danger-btn{width:100%;border:1px solid #ffd8d4;background:#fff5f3;color:#d46158;border-radius:8px;padding:8px;font-size:10px;cursor:pointer}.danger-btn:hover{background:#ffe9e5}
@media(max-width:720px){html,body{min-height:100%;height:auto;overflow-x:hidden;overflow-y:auto}body{background:#fff}.auth-view{min-height:100svh;height:auto}.chat-view{height:100svh;min-height:560px;overflow:hidden}.chat-sidebar{height:100svh}.chat-main{height:100svh;bottom:auto}.message-pane{min-height:0}.message-list{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.composer{flex:none}.admin-view{min-height:100svh;height:auto;overflow:visible}.admin-layout{height:auto;min-height:calc(100svh - 62px)}.admin-content{overflow:visible;padding-bottom:40px}.detail-panel{overflow-y:auto}.emoji-panel{max-width:calc(100vw - 100px);bottom:70px}.pending-media{max-width:calc(100% - 5px)}}

.admin-detail-trigger{display:none}.attachment-link{word-break:break-word}.admin-table small{color:#a4adba;font-size:9px}
@media(max-width:720px){
  /* 手机端改为“页面切换 + 页面上下滚动”，不再使用横向全屏滑入。 */
  body{overflow-x:hidden;overflow-y:auto}
  .chat-view{display:block;height:auto;min-height:100svh;overflow:visible}
  .left-rail{position:fixed;left:0;top:0;z-index:20;width:58px;height:100svh}
  .chat-sidebar{display:flex;width:calc(100% - 58px);margin-left:58px;min-height:100svh;height:auto}
  .chat-main{display:none;position:relative;left:auto;right:auto;top:auto;bottom:auto;width:calc(100% - 58px);margin-left:58px;min-height:100svh;height:auto;transform:none;transition:none;overflow:visible}
  .chat-view.mobile-chat-open .chat-sidebar{display:none}
  .chat-view.mobile-chat-open .chat-main{display:flex}
  .chat-header{flex:none}
  .message-pane{display:flex;min-height:calc(100svh - 67px);height:auto}
  .message-list{flex:none;min-height:calc(100svh - 210px);height:auto;max-height:none;overflow:visible;padding-bottom:18px}
  .composer{flex:none;margin-bottom:18px}
  .admin-detail-trigger{display:block!important}
  .header-actions{display:flex}
  .header-actions>.icon-btn:not(.admin-detail-trigger){display:none}
  .detail-panel:not(.hidden){display:block;position:fixed;z-index:30;right:0;top:0;bottom:0;width:min(310px,calc(100vw - 58px));overflow-y:auto;box-shadow:-12px 0 30px rgba(20,33,57,.14)}
}

/* v2.2 手机浏览器显示修复：通知分列、禁止 Android 自动放大界面文字。 */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
#toast-root{position:fixed;z-index:99;top:24px;left:50%;transform:translateX(-50%);width:min(460px,calc(100vw - 32px));display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
#toast-root .toast{position:relative;left:auto;top:auto;transform:none;width:max-content;max-width:100%;text-align:center;white-space:normal;overflow-wrap:anywhere;word-break:break-word;pointer-events:auto;animation:toast-in-stack .2s ease}@keyframes toast-in-stack{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
#toast-root .message-notice{width:min(360px,calc(100vw - 28px));display:flex;align-items:flex-start;gap:10px;padding:12px 34px 12px 12px;background:#fff;color:#17233b;border:1px solid #dfe6f2;border-left:4px solid #4f7cff;border-radius:12px;box-shadow:0 14px 35px rgba(22,39,70,.18);text-align:left;position:relative;cursor:pointer;pointer-events:auto;animation:notice-in .2s ease}
#toast-root .message-notice .notice-avatar{flex:none}.notice-avatar .avatar-small{width:38px;height:38px;border-radius:12px}.notice-copy{min-width:0;flex:1}.notice-head{display:flex;justify-content:space-between;gap:8px;align-items:center}.notice-head b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-head time{font-size:9px;color:#9aa6b8;white-space:nowrap}.notice-copy small{display:block;color:#7c8ba1;font-size:10px;margin-top:2px}.notice-copy p{margin:5px 0 3px;font-size:11px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-copy em{font-style:normal;color:#4f7cff;font-size:9px}.notice-close{position:absolute;right:8px;top:7px;border:0;background:transparent;color:#9aa6b8;font-size:17px;cursor:pointer;line-height:1}.notice-close:hover{color:#17233b}.rail-btn i.has-count{width:auto;min-width:16px;height:16px;padding:0 4px;right:2px;top:2px;border-radius:9px;color:#fff;background:#f05267;font-size:9px;font-style:normal;display:grid;place-items:center}@keyframes notice-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media(max-width:720px){
  /* 手机通知放到页面底部，避免遮住“消息”标题、搜索框和联系人列表。 */
  #toast-root{top:auto;bottom:calc(22px + env(safe-area-inset-bottom));width:calc(100vw - 28px);gap:7px}
  #toast-root .toast{font-size:12px;line-height:1.45;padding:10px 14px}
  .chat-view,.admin-view{min-height:100dvh}
  .left-rail,.chat-sidebar{min-height:100dvh;height:100dvh}
  .chat-main{min-height:100dvh}
  .admin-layout{min-height:calc(100dvh - 62px)}
}

/* v2.3 设置、管理员文件库与移动端固定输入框。 */
.settings-view,.file-library-view{min-height:100vh;background:#f7f9fc;color:var(--ink);padding:34px 5%;overflow:auto}.settings-head,.file-library-head{display:flex;align-items:center;gap:14px;max-width:920px;margin:0 auto 26px}.settings-head h2,.file-library-head h2{margin:5px 0 0;font-size:25px}.settings-content{max-width:920px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:18px}.settings-panel{background:#fff;border:1px solid #eef0f5;border-radius:14px;padding:22px;box-shadow:0 5px 18px rgba(35,51,81,.025)}.settings-panel h3{font-size:14px;margin:0 0 18px}.settings-panel label{display:block;color:#657288;font-size:11px;margin:14px 0}.settings-panel label input:not(.switch){display:block;width:100%;height:42px;margin-top:7px;border:1px solid #e1e6ef;border-radius:9px;padding:0 12px;outline:0;color:var(--ink)}.settings-readonly{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid #f0f2f5;font-size:11px}.settings-readonly span{color:#9ba5b4}.settings-readonly b{font-weight:500}.settings-save{width:100%;margin-top:12px}.settings-check{display:flex!important;justify-content:space-between;align-items:center;padding:13px 0;border-bottom:1px solid #f0f2f5}.settings-note,.file-library-note{color:#9ba5b4;font-size:11px;line-height:1.7}.file-library-head{margin-bottom:13px}.file-library-head .file-upload-btn{margin-left:auto;width:auto;height:38px;padding:0 15px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:11px}.file-library-note{max-width:920px;margin:0 auto 18px;background:#eef3ff;border:1px solid #dce5ff;border-radius:10px;padding:11px 13px;color:#65779d}.library-list{max-width:920px;margin:0 auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.library-file{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #eef0f5;border-radius:11px;padding:12px}.library-file-icon{width:36px;height:36px;border-radius:10px;background:#eef3ff;color:var(--blue);display:grid;place-items:center;flex:none}.library-file-info{min-width:0;flex:1}.library-file-info b,.library-file-info small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.library-file-info b{font-size:11px}.library-file-info small{font-size:9px;color:#9ba5b4;margin-top:4px}.modal-layer{position:fixed;inset:0;z-index:80;background:rgba(14,23,38,.38);display:grid;place-items:center;padding:18px}.modal-card{width:min(520px,100%);max-height:min(620px,85vh);overflow:auto;background:#fff;border-radius:14px;padding:18px;box-shadow:0 20px 60px rgba(13,25,48,.24)}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.modal-head h3{font-size:14px;margin:0}.cloud-file-list{display:flex;flex-direction:column;gap:7px}.cloud-file-row{display:flex;align-items:center;text-align:left;gap:10px;width:100%;padding:10px;border:1px solid #eef0f5;border-radius:9px;background:#fff;color:var(--ink)}.cloud-file-row:hover{background:#f5f8ff;border-color:#dce5ff}.cloud-file-row>span:last-child{min-width:0}.cloud-file-row b,.cloud-file-row small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cloud-file-row b{font-size:11px}.cloud-file-row small{font-size:9px;color:#9ba5b4;margin-top:4px}.composer-collapsed{display:none}.composer-hidden{display:none!important}
@media(max-width:720px){
  .settings-view,.file-library-view{padding:20px 14px calc(28px + env(safe-area-inset-bottom));min-height:100dvh}
  .settings-head,.file-library-head{margin-bottom:18px}.settings-head h2,.file-library-head h2{font-size:21px}.settings-content{display:block}.settings-panel{margin-bottom:12px;padding:16px}.file-library-head{align-items:center}.file-library-head .file-upload-btn{padding:0 10px;white-space:nowrap}.library-list{display:block}.library-file{margin-bottom:8px}.chat-view.mobile-chat-open .chat-main{position:relative;min-height:100dvh;padding-bottom:0}.chat-view.mobile-chat-open .message-pane{position:relative;min-height:calc(100dvh - 67px);padding-bottom:calc(86px + env(safe-area-inset-bottom))}.chat-view.mobile-chat-open .message-list{padding-bottom:20px}.chat-view.mobile-chat-open .composer{position:fixed;z-index:25;left:58px;right:0;bottom:env(safe-area-inset-bottom);width:auto;margin:0 10px 8px;border-radius:14px;min-height:80px;transition:transform .18s ease,opacity .18s ease;box-shadow:0 8px 30px rgba(25,43,76,.16)}.chat-view.mobile-chat-open .composer-collapsed{position:fixed;z-index:26;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));height:38px;width:118px;border-radius:20px;background:#17243a;color:#fff;display:flex;align-items:center;justify-content:center;gap:6px;box-shadow:0 8px 22px rgba(15,30,55,.22);font-size:10px}.composer-collapsed button{width:25px;height:25px;border-radius:50%;background:#4f7cff;color:#fff;font-size:16px;line-height:1}.chat-view.mobile-chat-open .composer-hidden+.composer-collapsed{display:flex}.chat-view.mobile-chat-open .composer-hidden{display:none!important}.cloud-file-row{min-height:50px}.modal-card{max-height:78dvh}.file-library-view .file-library-note{margin-bottom:12px}
}

/* v2.4 手机输入法、图片比例和导航修复。 */
.bubble-media{width:auto;max-width:min(100%,520px);height:auto;max-height:55vh;object-fit:contain;background:#f2f4f8}.message .bubble{max-width:min(78vw,620px);overflow:hidden}.message .bubble img{display:block;max-width:100%;height:auto}.message.mine .bubble{max-width:min(78vw,620px)}
@media(max-width:720px){
  html,body{overflow-x:hidden}
  .message{max-width:94%;width:auto}.message .bubble,.message.mine .bubble{max-width:calc(100vw - 92px);overflow:hidden}.bubble-media{max-width:calc(100vw - 110px);max-height:48vh;width:auto;height:auto;object-fit:contain}.message .bubble img{max-width:100%;height:auto}
  .chat-view.mobile-chat-open .composer{bottom:calc(env(safe-area-inset-bottom) + 4px);margin-bottom:0;max-height:calc(100dvh - 90px);overflow:visible}
  body.keyboard-open .chat-view.mobile-chat-open .composer{bottom:0;margin-bottom:0;position:fixed;transform:none!important;max-height:40dvh}
  body.keyboard-open .chat-view.mobile-chat-open .composer-collapsed{display:none!important}
  .settings-content{padding-bottom:20px}.settings-panel label input:not(.switch){font-size:16px}
}

/* v2.4：辅助页面沿用左侧导航，聊天图片使用完整比例缩略图。 */
.chat-view.auxiliary-open{display:block;position:relative;min-height:100vh}.chat-view.auxiliary-open .left-rail{position:fixed;left:0;top:0;bottom:0;width:72px;z-index:40}.chat-view.auxiliary-open .chat-sidebar,.chat-view.auxiliary-open .chat-main,.chat-view.auxiliary-open .detail-panel{display:none}.chat-view.auxiliary-open~.settings-view,.chat-view.auxiliary-open~.file-library-view{display:block;position:fixed;z-index:38;top:0;right:0;bottom:0;left:72px;margin:0;min-height:0;overflow-y:auto}
.bubble-media{display:block;width:auto;max-width:100%;max-height:min(42vh,420px);height:auto;object-fit:contain;object-position:center;background:#f2f4f8}.message .bubble{max-width:min(78vw,620px);overflow:hidden}.message .bubble img{display:block;max-width:100%;max-height:min(42vh,420px);height:auto;object-fit:contain}
@media(max-width:720px){
  .chat-view.auxiliary-open .left-rail{width:58px;height:100dvh}.chat-view.auxiliary-open~.settings-view,.chat-view.auxiliary-open~.file-library-view{position:fixed;z-index:38;top:0;right:0;bottom:0;left:58px;margin:0;min-height:100dvh;padding-left:14px;padding-right:14px;overflow-y:auto}
  .message .bubble,.message.mine .bubble{max-width:calc(100vw - 92px);overflow:hidden}.bubble-media{max-width:calc(100vw - 110px);max-height:48vh;width:auto;height:auto}.message .bubble img{max-width:100%;height:auto}
  .chat-view.mobile-chat-open .composer{left:58px;right:10px;bottom:calc(env(safe-area-inset-bottom) + 4px + var(--keyboard-offset, 0px));width:auto;margin:0;min-height:70px;height:auto;max-height:min(124px,28dvh);overflow:hidden;padding:7px 10px}
  .chat-view.mobile-chat-open .composer textarea{font-size:16px;line-height:1.35;min-height:34px;height:36px;max-height:62px;flex:1;overflow-y:auto}.chat-view.mobile-chat-open .composer-tools{height:23px;flex:none}.chat-view.mobile-chat-open .pending-media{flex:none;max-height:32px;overflow:hidden;margin-top:3px}
  body.keyboard-open .chat-view.mobile-chat-open .composer{bottom:var(--keyboard-offset, 0px);max-height:min(45dvh,150px);overflow:hidden}
/* 最终覆盖：输入框只属于已打开的聊天，附件行和文字区不会相互顶出屏幕。 */
.chat-view:not(.mobile-chat-open) .composer,.chat-view:not(.mobile-chat-open) .composer-collapsed{display:none!important}
@media(max-width:720px){.chat-view.mobile-chat-open .composer{display:flex;flex-direction:column;gap:2px;left:58px;right:10px;width:auto;height:auto;max-height:min(124px,28dvh);overflow:hidden;padding:7px 10px}.chat-view.mobile-chat-open .composer-tools{flex:0 0 23px;height:23px}.chat-view.mobile-chat-open .composer textarea{display:block;flex:1;min-height:32px;height:36px;max-height:58px;overflow-y:auto;padding-top:4px}.chat-view.mobile-chat-open .pending-media{flex:0 0 32px;height:32px;max-height:32px;overflow:hidden;margin:1px 0 0}.chat-view.mobile-chat-open .pending-media>span{max-width:36%;}.chat-view.mobile-chat-open .pending-media>div{max-width:62%;}.chat-view.mobile-chat-open .composer .send-btn{flex:none;z-index:3}.chat-view:not(.mobile-chat-open) .composer{display:none!important}}

.group-sender-name{font-size:10px;color:#8995a8;margin:0 4px -1px}.message.mine .group-sender-name{text-align:right}.group-avatar{background:#4f7cff;color:#fff}
.create-group-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.create-group-panel>b,.create-group-panel>div:first-child{display:flex;flex-direction:column;gap:5px}.create-group-panel small{color:#9ba5b4;font-size:10px}.group-create-actions{display:flex;gap:8px;align-items:center}.group-create-actions input{height:36px;width:200px;border:1px solid #e1e6ef;border-radius:8px;padding:0 10px;font-size:11px}.admin-group-list{display:flex;flex-direction:column;gap:14px}.admin-group-card{padding:18px}.admin-group-head{display:flex;justify-content:space-between;align-items:center}.admin-group-head>div{display:flex;align-items:center;gap:10px}.admin-group-head h3{font-size:14px;margin:0 0 4px}.admin-group-head small{font-size:10px;color:#9ba5b4}.group-link-line{display:flex;gap:8px;margin:14px 0}.group-link-line input{flex:1;min-width:0;height:32px;border:1px solid #e5e9f0;border-radius:7px;padding:0 8px;color:#738198;font-size:10px}.group-settings-grid{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:10px;align-items:end}.group-settings-grid label{font-size:10px;color:#7b879a}.group-settings-grid input,.group-settings-grid select{display:block;width:100%;height:32px;margin-top:5px;border:1px solid #e1e6ef;border-radius:7px;background:#fff;padding:0 7px;font-size:10px}.group-members{border-top:1px solid #f0f2f5;margin-top:17px;padding-top:13px;font-size:11px}.group-member-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f4f5f7}.group-member-row>span{display:flex;align-items:center;gap:7px}.group-member-row .avatar{width:26px;height:26px;border-radius:8px;font-size:9px}.group-member-row small{color:#9ba5b4;margin-left:4px}.group-member-row .table-action{margin-left:8px}
@media(max-width:720px){.create-group-panel{display:block}.group-create-actions{margin-top:12px}.group-create-actions input{width:100%;flex:1}.group-settings-grid{grid-template-columns:1fr 1fr}.group-settings-grid .small-primary{grid-column:1/-1}.admin-group-head{align-items:flex-start;gap:8px}.group-link-line input{font-size:9px}.group-member-row{align-items:flex-start;gap:6px}.group-member-row>span{min-width:0;flex:1}.group-member-row strong{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

/* v2.9: keep the message history as the only scrolling surface on mobile. */
.danger-link{background:none;color:#d46158;font-size:11px;cursor:pointer}.group-add-member{display:flex;align-items:center;gap:8px;border-top:1px solid #f0f2f5;margin-top:14px;padding-top:13px}.group-add-member b{font-size:11px}.group-add-select{height:32px;min-width:220px;border:1px solid #e1e6ef;border-radius:7px;background:#fff;padding:0 8px;font-size:10px;color:var(--ink)}.member-actions{display:flex!important;align-items:center;gap:6px}.member-mute-select{height:27px;border:1px solid #e1e6ef;border-radius:6px;background:#fff;font-size:10px;color:#66748a;padding:0 3px}
@media(max-width:720px){
  html,body{height:100%;min-height:0;overflow:hidden}
  .chat-view{height:100dvh;min-height:0;overflow:hidden}
  .chat-sidebar{height:100dvh;min-height:0}
  .chat-view.mobile-chat-open{overflow:hidden}
  .chat-view.mobile-chat-open .chat-main{height:100dvh;min-height:0;overflow:hidden;padding-bottom:0}
  .chat-view.mobile-chat-open .message-pane{height:calc(100dvh - 67px);min-height:0;overflow:hidden;padding-bottom:0}
  .chat-view.mobile-chat-open .message-list{min-height:0;height:auto;flex:1;overflow-y:auto;overflow-x:hidden;padding:20px 15px 110px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .chat-view.mobile-chat-open .composer{position:relative;left:auto;right:auto;bottom:auto;flex:0 0 auto;width:auto;max-height:124px;margin:0 10px 8px;overflow:hidden}
  .chat-view.mobile-chat-open .composer-collapsed{display:none!important}
  .chat-view.mobile-chat-open .message-list + .typing-hint{display:none}
  .chat-view.mobile-chat-open .group-add-member{display:block}
  .group-add-select{width:100%;min-width:0;margin:8px 0}
  .member-actions{flex-wrap:wrap;justify-content:flex-end}
}
}

/* v3.0: explicit scroll surfaces and group controls. */
html{scrollbar-color:#aab7cc #eef2f7;scrollbar-width:thin}
*{scrollbar-width:thin;scrollbar-color:#aab7cc #eef2f7}
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-track{background:#eef2f7;border-radius:8px}
*::-webkit-scrollbar-thumb{background:#aab7cc;border:2px solid #eef2f7;border-radius:8px}
*::-webkit-scrollbar-thumb:hover{background:#8798b0}
.admin-view{height:100dvh;min-height:0;overflow:hidden}
.admin-layout{height:calc(100dvh - 70px);min-height:0}
.admin-content{min-height:0;overflow-y:auto;overflow-x:hidden}
.admin-page{min-height:0;padding-bottom:36px}
.settings-view,.file-library-view{height:100dvh;max-height:100dvh;overflow-y:scroll;overflow-x:hidden;scrollbar-gutter:stable}
.library-list,.admin-group-list,.settings-content{padding-bottom:24px}
.chat-view{min-height:0;overflow:hidden}
.chat-sidebar,.chat-main,.message-pane{min-height:0}
.chat-sidebar,.chat-main{height:100dvh}
.message-pane{overflow:hidden}
.admin-layout{min-height:0}
.conversation-list,.message-list,.admin-content,.detail-panel,.modal-card{scrollbar-gutter:stable}
.group-settings-grid textarea{display:block;width:100%;min-height:54px;margin-top:5px;resize:vertical;border:1px solid #e1e6ef;border-radius:7px;background:#fff;padding:7px;font-size:10px;line-height:1.45;color:var(--ink)}
.group-check-label{display:flex!important;align-items:center;justify-content:space-between;gap:8px;min-height:32px}
.group-check-label input{width:30px!important;height:17px!important;margin:0!important}
.group-member-avatar{border:0;padding:0;cursor:pointer;transition:transform .15s,box-shadow .15s}
.group-member-avatar:hover{transform:scale(1.08);box-shadow:0 0 0 3px rgba(79,124,255,.18)}
.group-info-banner{flex:0 0 auto;display:flex;gap:10px;flex-wrap:wrap;padding:8px 7%;background:#eef3ff;border-bottom:1px solid #dce5ff;color:#61749a;font-size:10px;line-height:1.45}
.group-info-banner span{min-width:0;max-width:100%;overflow-wrap:anywhere}
.group-info-banner b{color:#4666ad;margin-right:5px}
.group-member-modal-card{max-height:min(680px,88dvh);overflow-y:auto}
.member-modal-profile{display:flex;flex-direction:column;align-items:center;gap:6px;padding:4px 0 16px;border-bottom:1px solid #eef0f5}
.member-modal-profile .avatar-large{margin:0}
.member-modal-profile b{font-size:14px}.member-modal-profile small{font-size:10px;color:#9ba5b4}
.modal-field{display:block;margin:16px 0;color:#68768c;font-size:11px}.modal-field select{display:block;width:100%;height:36px;margin-top:7px;border:1px solid #e1e6ef;border-radius:8px;background:#fff;padding:0 8px;color:var(--ink)}
.modal-action-row{display:flex;gap:8px}.modal-action-row>*{flex:1}.modal-action-row .small-primary{height:40px;margin:0}.modal-action-row .danger-btn{height:40px}
@media(max-width:720px){
  .admin-view{height:100dvh;min-height:0;overflow:hidden}
  .admin-layout{height:calc(100dvh - 62px);display:flex;flex-direction:column;min-height:0}
  .admin-nav{flex:0 0 58px;min-height:58px;overflow-x:auto;overflow-y:hidden}
  .admin-content{flex:1;min-height:0;overflow-y:scroll;overflow-x:hidden;padding-bottom:48px;scrollbar-gutter:stable}
  .settings-view,.file-library-view{height:100dvh;max-height:100dvh;overflow-y:scroll;overflow-x:hidden}
  .admin-page{padding-bottom:48px}
  .chat-view.mobile-chat-open .message-pane{display:flex;flex-direction:column;height:calc(100dvh - 67px);min-height:0;overflow:hidden}
  .chat-view.mobile-chat-open .message-list{display:flex;min-height:0;height:auto;flex:1 1 auto;overflow-y:scroll;overflow-x:hidden;padding-bottom:116px}
  .chat-view.mobile-chat-open .composer{flex:0 0 auto;position:relative;max-height:124px;overflow:hidden}
  .chat-view.mobile-chat-open .emoji-panel{position:fixed;z-index:100;left:68px;right:12px;bottom:calc(82px + env(safe-area-inset-bottom));max-width:none;max-height:42dvh;overflow-y:auto;overflow-x:hidden}
  .group-info-banner{padding:8px 15px;max-height:92px;overflow-y:auto}
  .group-settings-grid{grid-template-columns:1fr}
  .group-settings-grid .small-primary{grid-column:auto}
  .group-settings-grid textarea{min-height:70px}
  .modal-action-row{flex-direction:column}
}

/* ===== Top Notification Toast (auto-dismiss) ===== */
#toast-root{position:fixed;z-index:999;top:16px;left:50%;transform:translateX(-50%);width:min(440px,calc(100vw - 24px));display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none}
.top-notice{width:100%;max-width:420px;display:flex;align-items:flex-start;gap:11px;padding:12px 32px 12px 12px;background:rgba(255,255,255,0.96);backdrop-filter:blur(14px);border:1px solid #e6ecf5;border-left:4px solid #4f7cff;border-radius:13px;box-shadow:0 12px 34px rgba(22,39,70,0.18);cursor:pointer;pointer-events:auto;animation:topNoticeIn .28s cubic-bezier(.2,.8,.2,1);position:relative}
@keyframes topNoticeIn{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
.top-notice .avatar-small{width:38px;height:38px;border-radius:12px;flex:none}
.top-notice-body{min-width:0;flex:1}
.top-notice-body b{font-size:13px;color:#17233b}
.top-notice-body time{margin-left:8px;font-size:10px;color:#9aa6b8}
.top-notice-body p{margin:4px 0 0;font-size:12px;color:#4b5970;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-notice-close{position:absolute;right:8px;top:8px;border:0;background:transparent;color:#aab4c4;font-size:16px;cursor:pointer;line-height:1}
.top-notice-close:hover{color:#17233b}
/* Sidebar WeChat-style red badge */
.conversation-body .row{position:relative;display:flex;justify-content:space-between;align-items:center;gap:7px}
.unread{background-color:#f43f5e;color:#fff;border-radius:10px;padding:1px 6px;font-size:10px;font-weight:700;min-width:16px;height:16px;line-height:16px;text-align:center;margin-left:auto;animation:unreadPop .3s cubic-bezier(.175,.885,.32,1.275)}
@keyframes unreadPop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
@media(max-width:720px){#toast-root{top:10px}.top-notice p{font-size:11px}}

/* 备注标签 */
.note-tag{color:#9a86ff;font-size:9px;margin-left:6px;background:#f2eeff;border:1px solid #e2dcff;border-radius:4px;padding:0 4px}
/* 群聊消息：统一昵称行、气泡和时间的垂直排布 */
.group-message{align-items:flex-start}.group-message .group-member-avatar{width:30px;height:30px;border-radius:10px;border:0;flex:none;margin-top:2px}.group-message .bubble-wrap{min-width:0;max-width:100%;gap:4px}.group-message .group-sender-name{display:flex;align-items:center;gap:5px;min-height:15px;margin:0 4px;font-size:10px;color:#7c899b;line-height:15px}.group-message.mine .group-sender-name{justify-content:flex-end}.group-owner-tag{display:inline-block;border-radius:4px;background:#e9f0ff;color:#4168d5;font-size:9px;line-height:14px;padding:0 4px}.group-message .bubble{margin:0}.group-message time{display:block;line-height:14px}
/* 备注在聊天设置中固定可见 */
.user-note-section{margin:14px 0 4px;text-align:left}.user-note-section>span{display:block;margin-bottom:8px;font-size:11px;font-weight:600;color:#7b8698}.note-input{width:100%;height:36px;border:1px solid #e1e6ef;border-radius:8px;background:#fff;color:var(--ink);outline:none;padding:0 10px;font-size:12px}.note-input:focus{border-color:#7897ff;box-shadow:0 0 0 3px rgba(79,124,255,.1)}.user-note-section .small-primary{width:100%;height:34px;margin-top:8px}

/* ===== 群聊消息：与私聊一致排版 ===== */
.bubble-group-sender{display:block;font-size:10px;color:#7c899b;margin-left:4px;margin-bottom:2px;line-height:1.3;display:flex;align-items:center;gap:4px}
.message.mine .bubble-group-sender{justify-content:flex-end;margin-left:0;margin-right:4px}
.user-role-badge{font-style:normal;font-weight:600}
.group-message-avatar{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;color:#fff;flex:none;font-size:11px}
/* 群消息头像与私聊头像同级对齐，避免乱跳 */
#message-list .message:not(.mine) .avatar-small{width:36px;height:36px;border-radius:12px}

/* ===== 聊天设置：详细资料卡片 ===== */
.detail-info-grid{display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}
.info-row{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;color:#5b687c;border-bottom:1px dashed #eef0f5;padding-bottom:7px}
.info-row span{color:#9ba5b4;font-size:11px;flex:none}
.info-row b{font-size:12px;color:#24344d;font-weight:600}
.info-row code{font:12px monospace;color:#345edb;background:#eef3ff;border-radius:5px;padding:2px 6px}
.info-row small{font-size:11px;color:#5b687c;text-align:right}
.user-info-section b{font-size:11px;font-weight:600;color:#7b8698;display:block;margin-bottom:4px}
.user-info-section .status-pill{padding:2px 8px;border-radius:20px;font-size:9px}

/* 电脑端聊天设置面板可上下滚动 */
@media(min-width:1051px){ .detail-panel{height:100vh;overflow-y:auto;box-sizing:border-box} }
.detail-info-grid{display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}
.info-row{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;color:#5b687c;border-bottom:1px dashed #eef0f5;padding-bottom:7px}
.info-row span{color:#9ba5b4;font-size:11px;flex:none}
.info-row b{font-size:12px;color:#24344d;font-weight:600}
.info-row code{font:12px monospace;color:#345edb;background:#eef3ff;border-radius:5px;padding:2px 6px}
.info-row small{font-size:11px;color:#5b687c;text-align:right}
.detail-section>#detail-avatar{margin-bottom:10px}
.user-note-section .note-input{width:100%;height:36px;border:1px solid #e1e6ef;border-radius:8px;padding:0 10px;font-size:12px;margin-top:6px;outline:none}
.user-note-section .small-primary{width:100%;margin-top:8px;height:34px}
.group-info-section b{font-size:11px;font-weight:600;color:#7b8698;display:block;margin-bottom:4px}
