*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --g:#07C160;--gd:#06AD56;--gl:#0FE37A;
  --bg:#F0F2F5;--border:#EAECEF;
  --txt:#0A0D14;--txt2:#6B7280;--txt3:#9CA3AF;
  --sbg:#0E1117;--si:#1A1F2E;--sb2:rgba(255,255,255,.07);
  --h:54px;--sw:255px;--cw:310px;
  --sat:env(safe-area-inset-top,0px);
  --sab:env(safe-area-inset-bottom,0px);
}
html{height:100%;-webkit-text-size-adjust:100%}
body{margin:0;height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;
  font-family:'Manrope','PingFang SC','Microsoft YaHei',system-ui,sans-serif;
  background:#0E1117;color:#F0F2F5;font-size:15px;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;}
.sidebar{display:none}
.mob-nav{display:flex;height:calc(50px + var(--sab));padding-bottom:var(--sab);
  background:#fff;border-top:1px solid var(--border);flex-shrink:0;}
.mni{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  cursor:pointer;color:var(--txt3);font-size:10px;font-weight:600;position:relative;padding-top:5px;transition:color .15s;}
.mni.on{color:var(--g)}
.mni .ico{font-size:23px;line-height:1}
.mbadge{position:absolute;top:3px;right:calc(50% - 22px);background:#E53935;color:#fff;
  font-size:9px;padding:1px 5px;border-radius:99px;min-width:15px;text-align:center;font-weight:700}
/* 移动端主页左上角 logo（桌面端隐藏，桌面端在侧边栏已有 logo） */
.ph-brand{display:flex;align-items:center;gap:9px;min-width:0}
.ph-logo{width:28px;height:28px;min-width:28px;max-width:28px;max-height:28px;
  border-radius:7px;object-fit:cover;flex:none;display:none}
@media(max-width:768px){.ph-logo{display:inline-block}}
@media(min-width:769px){
  body{flex-direction:row}
  .sidebar{display:flex;flex-direction:column;width:var(--sw);background:var(--sbg);
    flex-shrink:0;border-right:1px solid var(--sb2);padding-top:var(--sat)}
  .mob-nav{display:none}
  .chat-view{flex-direction:row!important}
  .cl-panel{width:var(--cw);border-right:1px solid var(--border);flex-shrink:0;display:flex!important;flex-direction:column}
  .back-btn{display:none!important}
  .cpanel.hide{display:flex!important}
}
#auth{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#0A1628 0%,#0E2440 40%,#0A1628 100%);
  overflow-y:auto;padding:calc(var(--sat)+12px) 12px calc(var(--sab)+12px);}
.card{position:relative;background:rgba(255,255,255,.97);border-radius:22px;
  padding:32px 26px;width:min(430px,100%);box-shadow:0 32px 100px rgba(0,0,0,.4);color:var(--txt)}
.logo-icon{width:66px;height:66px;background:linear-gradient(135deg,#07C160,#0FE37A);border-radius:17px;
  display:flex;align-items:center;justify-content:center;font-size:33px;margin:0 auto 10px;box-shadow:0 10px 32px rgba(7,193,96,.42);overflow:hidden}
.logo-icon img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.logo-title{text-align:center;font-size:22px;font-weight:800;color:var(--txt)}
.logo-sub{text-align:center;font-size:12.5px;color:var(--txt2);margin-top:3px;margin-bottom:22px}
.atabs{display:flex;border-bottom:2px solid var(--border);margin-bottom:18px}
.atab{flex:1;text-align:center;padding:9px;cursor:pointer;font-size:14px;color:var(--txt2);
  border-bottom:2.5px solid transparent;margin-bottom:-2px;font-weight:700;border-radius:8px 8px 0 0;transition:all .2s}
.atab.on{color:var(--g);border-color:var(--g)}
.aform{display:none}.aform.on{display:block}
.fg{margin-bottom:12px}
.fg label{display:block;font-size:10.5px;font-weight:700;color:var(--txt2);margin-bottom:5px;text-transform:uppercase;letter-spacing:.6px}
.fg input,.fg select{width:100%;height:43px;border:1.5px solid var(--border);border-radius:10px;padding:0 12px;
  font-size:14px;color:var(--txt);background:#FAFAFA;outline:none;font-family:inherit;transition:border-color .2s;-webkit-appearance:none}
.fg textarea{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:9px 12px;
  font-size:14px;color:var(--txt);background:#FAFAFA;outline:none;font-family:inherit;transition:border-color .2s;resize:none;line-height:1.5}
.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:var(--g);background:#fff;box-shadow:0 0 0 3px rgba(7,193,96,.1)}
.fg select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:9px}
@media(max-width:400px){.frow{grid-template-columns:1fr}}
.hint{font-size:11px;color:var(--txt3);margin-top:3px;line-height:1.4}
.ferr{display:none;font-size:12.5px;color:#C62828;background:#FFEBEE;border-radius:9px;padding:9px 12px;margin-top:9px;text-align:center;font-weight:500}
.ferr.on{display:block}
.btn{width:100%;height:45px;background:linear-gradient(135deg,#07C160,var(--gd));color:#fff;border:none;
  border-radius:11px;font-size:15px;font-weight:700;cursor:pointer;margin-top:6px;font-family:inherit;
  box-shadow:0 5px 16px rgba(7,193,96,.3)}
.btn:active{opacity:.9}.btn:disabled{background:#D1D5DB;box-shadow:none;cursor:not-allowed}
#app{display:none;flex:1;min-height:0;flex-direction:row;overflow:hidden}
.sb-top{padding:18px 13px 13px;border-bottom:1px solid var(--sb2)}
.sb-brand{display:flex;align-items:center;gap:8px;margin-bottom:13px;padding:0 3px}
.sb-brand .icon{width:29px;height:29px;background:linear-gradient(135deg,#07C160,#0FE37A);border-radius:8px;
  display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;overflow:hidden}
.sb-brand .icon img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.sb-brand .bname{color:#fff;font-size:15px;font-weight:800}
.sb-me{display:flex;align-items:center;gap:8px;cursor:pointer;padding:7px 9px;border-radius:9px;transition:background .15s}
.sb-me:hover{background:var(--si)}
.sb-me .sn{color:#F0F2F5;font-size:13px;font-weight:700}
.sb-me .ss{color:rgba(255,255,255,.3);font-size:10.5px;margin-top:1px}
.sb-nav{flex:1;padding:6px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}
.ni{display:flex;align-items:center;gap:8px;padding:10px 11px;border-radius:9px;cursor:pointer;
  color:rgba(255,255,255,.4);font-size:13px;font-weight:600;transition:all .15s;position:relative}
.ni:hover{background:var(--si);color:rgba(255,255,255,.8)}
.ni.on{background:rgba(7,193,96,.18);color:var(--gl)}
.ni .ico{font-size:16px;width:19px;text-align:center;flex-shrink:0}
.badge{margin-left:auto;background:#E53935;color:#fff;font-size:9.5px;padding:1px 5px;border-radius:99px;min-width:16px;text-align:center;font-weight:700}
.main{flex:1;display:flex;min-height:0;overflow:hidden;background:var(--bg)}
.view{display:none;flex:1;min-height:0;flex-direction:column;overflow:hidden}
.view.on{display:flex}
.pane{display:flex;flex-direction:column;background:#fff;min-height:0;flex:1}
.ph{height:calc(var(--h) + var(--sat));padding:0 15px;display:flex;align-items:center;justify-content:space-between;
  border-bottom:1px solid var(--border);flex-shrink:0;background:#fff;padding-top:var(--sat)}
.ph h2{font-size:17px;font-weight:800;color:var(--txt)}
.sbar{padding:6px 12px;border-bottom:1px solid var(--border);flex-shrink:0;background:#fff}
.sinput{width:100%;height:32px;background:#F3F4F6;border:none;border-radius:8px;padding:0 12px 0 30px;
  font-size:12.5px;outline:none;color:var(--txt);font-family:inherit;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:10px center}
.clist{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.ci{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid #F5F6F8}
.ci:active,.ci.on{background:#EFF9F4}
.ci .info{flex:1;min-width:0}
.ci .cn{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt)}
.ci .cp{font-size:11px;color:var(--txt2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.ci .ct{font-size:10px;color:var(--txt3);flex-shrink:0;align-self:flex-start;margin-top:2px}
.empty-s{display:flex;flex-direction:column;align-items:center;justify-content:center;height:150px;gap:8px;color:var(--txt2)}
.empty-s .ei{font-size:36px;opacity:.22}
.empty-s p{font-size:12.5px}
.cpanel{flex:1;display:flex;flex-direction:column;background:#F0F2F5;min-height:0;overflow:hidden}
.cph{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--txt2)}
.cph .icon{font-size:52px;opacity:.14}
.cph p{font-size:13.5px;font-weight:600}
.ach{display:none;flex:1;flex-direction:column;min-height:0}
.ach.on{display:flex}
.chdr{height:calc(var(--h) + var(--sat));background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;
  gap:9px;padding:0 13px;flex-shrink:0;padding-top:var(--sat)}
.back-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:3px 7px 3px 0;color:var(--txt);line-height:1}
.chead-name{font-size:14.5px;font-weight:800;color:var(--txt)}
.chead-sub{font-size:10.5px;color:var(--txt2);margin-top:1px}
.chat-acts{margin-left:auto;display:flex;gap:4px}
.cab{background:none;border:none;cursor:pointer;font-size:18px;padding:5px;border-radius:7px;color:var(--txt2)}
.cab:active{background:#F3F4F6}
.cmsgs{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 10px;display:flex;flex-direction:column}
.lmbtn{text-align:center;padding:3px 0 10px}
.lmbtn button{background:#fff;border:1px solid var(--border);border-radius:15px;padding:5px 14px;
  font-size:11.5px;color:var(--txt2);cursor:pointer;font-family:inherit;font-weight:600}
.mt{display:flex;justify-content:center;margin:7px 0}
.mt span{font-size:10px;color:var(--txt2);font-weight:600;background:rgba(0,0,0,.06);padding:2px 9px;border-radius:99px}
.mwrap{display:flex;gap:6px;align-items:flex-end;margin-bottom:2px;padding:0 1px}
.mwrap.s{flex-direction:row-reverse}
.mav{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;overflow:hidden}
.mav img{width:100%;height:100%;object-fit:cover}
/* 1. 气泡外层容器：接管宽度限制，min-width:0 防止移动端 Flex 子项异常压缩 */
.m-content{display:flex;flex-direction:column;max-width:72%;min-width:0}
.mwrap.s .m-content{align-items:flex-end}
.mwrap.r .m-content{align-items:flex-start}
/* 2. 气泡本体：不再设置 width/max-width，只负责显示文字 */
.mb{word-break:break-word;overflow-wrap:anywhere;white-space:pre-wrap;
  padding:8px 12px;border-radius:13px;font-size:13.5px;line-height:1.55;font-weight:500}
.mwrap.s .mb{background:linear-gradient(135deg,#0FE37A,#07C160);color:#fff;border-bottom-right-radius:3px;box-shadow:0 2px 7px rgba(7,193,96,.22)}
.mwrap.r .mb{background:#fff;color:var(--txt);border-bottom-left-radius:3px;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.msender{font-size:10px;color:var(--txt2);margin-bottom:1px;font-weight:600;padding-left:34px}
.cinput{background:#fff;border-top:1px solid var(--border);padding:7px 11px;display:flex;gap:7px;
  align-items:flex-end;flex-shrink:0;padding-bottom:max(7px,var(--sab))}
.txta{flex:1;min-height:36px;max-height:100px;border:1.5px solid var(--border);border-radius:10px;
  padding:7px 11px;font-size:14px;resize:none;outline:none;font-family:inherit;line-height:1.5;color:var(--txt);
  transition:border-color .2s;background:#FAFAFA}
.txta:focus{border-color:var(--g);background:#fff}
.txta::placeholder{color:var(--txt3)}
.sbtn{width:38px;height:38px;background:linear-gradient(135deg,#07C160,var(--gd));color:#fff;border:none;
  border-radius:9px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.sbtn:active{opacity:.85}.sbtn:disabled{background:#D1D5DB;cursor:not-allowed}
.cvw{background:#fff;overflow-y:auto;-webkit-overflow-scrolling:touch}
.addbox{padding:13px 14px;border-bottom:1px solid var(--border);background:#FAFAFA}
.addbox h3{font-size:10px;font-weight:700;color:var(--txt2);text-transform:uppercase;letter-spacing:.6px;margin-bottom:7px}
.addtabs{display:flex;gap:5px;margin-bottom:9px}
.addtab{flex:1;text-align:center;padding:7px;border-radius:8px;border:1.5px solid var(--border);
  background:#fff;font-size:12.5px;font-weight:700;color:var(--txt2);cursor:pointer;transition:all .15s;font-family:inherit}
.addtab.on{border-color:var(--g);color:var(--g);background:rgba(7,193,96,.05)}
.add-pane{display:none}.add-pane.on{display:block}
.addrow{display:flex;gap:7px}
.addrow input{flex:1;height:37px;border:1.5px solid var(--border);border-radius:9px;padding:0 11px;
  font-size:13px;outline:none;background:#fff;font-family:inherit;color:var(--txt);transition:border-color .2s}
.addrow input:focus{border-color:var(--g)}
.addrow button,.add-full-btn{height:37px;background:linear-gradient(135deg,#07C160,var(--gd));color:#fff;border:none;
  border-radius:9px;padding:0 14px;font-size:13px;cursor:pointer;font-weight:700;font-family:inherit;white-space:nowrap}
.add-full-btn{width:100%;margin-top:8px;display:flex;align-items:center;justify-content:center;gap:5px}
.src-card{display:none;margin-top:8px;background:#fff;border:1.5px solid var(--border);border-radius:11px;padding:10px;align-items:center;gap:9px}
.src-card.on{display:flex}
.src-info{flex:1;min-width:0;cursor:pointer}
.src-name{font-size:13.5px;font-weight:700;color:var(--txt)}
.src-id{font-size:11px;color:var(--txt2);margin-top:1px}
.src-btn{background:linear-gradient(135deg,#07C160,var(--gd));color:#fff;border:none;border-radius:8px;
  padding:6px 13px;font-size:12px;cursor:pointer;font-weight:700;white-space:nowrap;font-family:inherit}
.src-btn:disabled{background:#D1D5DB;cursor:not-allowed}
.csec{padding:6px 14px;font-size:10px;font-weight:700;color:var(--txt2);text-transform:uppercase;
  letter-spacing:.6px;background:#F8F9FA;border-bottom:1px solid var(--border)}
.fri{display:flex;align-items:center;gap:9px;padding:10px 14px;border-bottom:1px solid #F5F6F8}
.fri-info{flex:1;min-width:0;cursor:pointer}
.fri-name{font-size:13.5px;font-weight:700;color:var(--txt)}
.fri-sub{font-size:11px;color:var(--txt2);margin-top:1px}
.bacc{background:linear-gradient(135deg,#07C160,var(--gd));color:#fff;border:none;border-radius:7px;
  padding:5px 11px;font-size:12px;cursor:pointer;font-weight:700;font-family:inherit}
.brej{background:#F3F4F6;color:var(--txt2);border:none;border-radius:7px;padding:5px 11px;
  font-size:12px;cursor:pointer;margin-left:5px;font-family:inherit;font-weight:600}
.bmsg{background:none;border:1.5px solid var(--g);color:var(--g);border-radius:7px;padding:4px 12px;
  font-size:12px;cursor:pointer;font-weight:700;font-family:inherit}
.mvw{background:var(--bg);overflow-y:auto;-webkit-overflow-scrolling:touch}
.prohead{background:#fff;padding:calc(20px + var(--sat)) 16px 20px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--border)}
.pro-info{flex:1;min-width:0}
.pro-name{font-size:19px;font-weight:800;color:var(--txt)}
.pro-sub{font-size:11.5px;color:var(--txt2);margin-top:3px}
.pro-bio{font-size:12px;color:var(--txt2);margin-top:5px;line-height:1.4;word-break:break-word}
.bedit{background:#fff;border:1.5px solid var(--border);border-radius:9px;padding:5px 15px;
  font-size:12.5px;cursor:pointer;color:var(--txt);font-weight:600;font-family:inherit;flex-shrink:0}
.edit-av-row{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.edit-av{width:64px;height:64px;border-radius:15px;flex-shrink:0;overflow:hidden}
.edit-av img{width:100%;height:100%;object-fit:cover}
.slist{background:#fff;border-radius:13px;margin:10px 10px 0;overflow:hidden;box-shadow:0 1px 7px rgba(0,0,0,.05)}
.si{display:flex;align-items:center;padding:11px 15px;border-bottom:1px solid #F5F6F8}
.si:last-child{border-bottom:none}
.si .ico{font-size:15px;margin-right:10px;width:19px;text-align:center;flex-shrink:0}
.si .lbl{flex:1;font-size:13px;font-weight:600;color:var(--txt)}
.si .val{font-size:12.5px;color:var(--txt2)}
.boutl{display:block;width:calc(100% - 20px);margin:10px;height:44px;background:#fff;color:#D32F2F;
  border:1.5px solid #FFCDD2;border-radius:12px;font-size:14px;cursor:pointer;font-weight:600;font-family:inherit}
.pwa-box{background:linear-gradient(135deg,rgba(7,193,96,.1),rgba(7,193,96,.04));
  border:1.5px solid rgba(7,193,96,.22);border-radius:12px;margin:10px 10px 0;padding:13px 14px;display:none}
.pwa-box.on{display:block}
.pwa-box h4{font-size:13px;font-weight:700;color:var(--txt);margin-bottom:4px}
.pwa-box p{font-size:11.5px;color:var(--txt2);line-height:1.6}
.pwa-steps{margin-top:8px;display:flex;flex-direction:column;gap:4px}
.pwa-step{font-size:11.5px;color:var(--txt2);display:flex;align-items:flex-start;gap:6px}
.pwa-step b{color:var(--txt)}
/* 公告框（黄色） */
.announce-box{display:flex;align-items:center;gap:10px;cursor:pointer;
  background:linear-gradient(135deg,#FEF9C3,#FEF3C7);border:1.5px solid #FDE68A;
  border-radius:12px;margin:10px 10px 0;padding:12px 14px}
.announce-box:active{opacity:.92}
.announce-icon{font-size:20px;flex-shrink:0}
.announce-body{flex:1;min-width:0}
.announce-title{font-size:13px;font-weight:700;color:#92400E;margin-bottom:2px}
.announce-preview{font-size:11.5px;color:#B45309;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.push-step{margin-bottom:12px;background:#F8F9FA;padding:12px;border-radius:10px;}
.push-step-num{display:inline-block;width:20px;height:20px;background:var(--g);color:#fff;border-radius:50%;text-align:center;line-height:20px;font-size:12px;font-weight:bold;margin-right:8px;}
.push-step-title{font-size:14px;font-weight:700;color:var(--txt);margin-bottom:4px;display:flex;align-items:center;}
.push-step-desc{font-size:12.5px;color:var(--txt2);line-height:1.5;padding-left:28px;}
/* 公告 Markdown 渲染样式 */
.md-body{font-size:14px;line-height:1.7;color:var(--txt);word-break:break-word}
.md-body h1,.md-body h2,.md-body h3,.md-body h4{margin:14px 0 8px;font-weight:800;color:var(--txt);line-height:1.3}
.md-body h1{font-size:19px}.md-body h2{font-size:17px}.md-body h3{font-size:15px}.md-body h4{font-size:14px}
.md-body p{margin:8px 0}
.md-body ul,.md-body ol{margin:8px 0;padding-left:22px}
.md-body li{margin:3px 0}
.md-body a{color:var(--g);text-decoration:none}
.md-body a:hover{text-decoration:underline}
.md-body code{background:#F3F4F6;border-radius:5px;padding:2px 6px;font-size:12.5px;font-family:monospace}
.md-body pre{background:#F3F4F6;border-radius:9px;padding:12px;overflow-x:auto;margin:8px 0}
.md-body pre code{background:none;padding:0}
.md-body blockquote{border-left:3px solid #FDE68A;padding-left:12px;color:var(--txt2);margin:8px 0}
.md-body img{max-width:100%;border-radius:9px}
.md-body hr{border:none;border-top:1px solid var(--border);margin:12px 0}
.md-body table{border-collapse:collapse;width:100%;margin:8px 0;font-size:13px}
.md-body th,.md-body td{border:1px solid var(--border);padding:6px 9px;text-align:left}
.ov{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;align-items:flex-end;justify-content:center;
  z-index:1000;backdrop-filter:blur(4px)}
.ov.on{display:flex}
@media(min-width:480px){.ov{align-items:center}}
.modal{background:#fff;border-radius:20px 20px 0 0;padding:22px;width:100%;max-height:90vh;
  overflow-y:auto;box-shadow:0 -6px 30px rgba(0,0,0,.15);color:var(--txt);
  padding-bottom:max(22px,var(--sab))}
@media(min-width:480px){.modal{border-radius:18px;width:min(420px,96%);padding-bottom:22px;max-height:86vh}}
.modal h3{font-size:17px;font-weight:800;margin-bottom:16px}
.mfoot{display:flex;gap:9px;margin-top:16px}
.bcancel{flex:1;height:42px;background:#F3F4F6;border:none;border-radius:9px;font-size:14px;cursor:pointer;font-weight:600;font-family:inherit}
.bsave{flex:1;height:42px;background:linear-gradient(135deg,#07C160,var(--gd));color:#fff;border:none;border-radius:9px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit}
.pc-head{background:linear-gradient(135deg,#0E2440,#0A1628);padding:22px 20px 16px;
  display:flex;align-items:center;gap:13px;border-radius:20px 20px 0 0}
@media(min-width:480px){.pc-head{border-radius:18px 18px 0 0}}
.pc-name{font-size:17px;font-weight:800;color:#fff}
.pc-id{font-size:11px;color:rgba(255,255,255,.4);margin-top:3px}
.pc-body{padding:16px 20px 0}
.pc-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #F5F6F8;font-size:13px}
.pc-row:last-child{border-bottom:none}
.pc-row .ico{font-size:14px;width:19px;text-align:center;flex-shrink:0}
.pc-row .lbl{color:var(--txt2);font-size:11.5px;font-weight:600;width:48px;flex-shrink:0}
.pc-row .vl{color:var(--txt);font-weight:600;flex:1;word-break:break-word}
.pc-foot{padding:0 20px 20px;margin-top:14px;display:flex;gap:8px}
.ginfo-head{padding:18px 18px 0;border-bottom:1px solid var(--border);background:#fff}
.gmem-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:300px}
.gmem{display:flex;align-items:center;gap:9px;padding:9px 14px;border-bottom:1px solid #F5F6F8}
.gmem-info{flex:1;min-width:0}
.gmem-name{font-size:13px;font-weight:700;color:var(--txt)}
.gmem-role{font-size:10px;margin-top:1px;font-weight:600}
.r-owner{color:#F59E0B}.r-admin{color:#3B82F6}.r-member{color:var(--txt3)}
.gbtn{background:#F3F4F6;border:none;border-radius:7px;padding:5px 10px;font-size:11.5px;cursor:pointer;font-weight:600;font-family:inherit;color:var(--txt2)}
.gbtn.red{background:#FFEBEE;color:#D32F2F}
.toast{position:fixed;bottom:calc(28px + var(--sab));left:50%;transform:translateX(-50%) translateY(120px);
  background:rgba(15,20,30,.9);color:#fff;padding:9px 18px;border-radius:20px;font-size:13px;z-index:9999;
  transition:transform .3s cubic-bezier(.175,.885,.32,1.275);white-space:nowrap;pointer-events:none;
  backdrop-filter:blur(8px);font-weight:600;max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis}
.toast.on{transform:translateX(-50%) translateY(0)}
.ldots{display:flex;gap:5px;align-items:center;justify-content:center;padding:18px}
.ldots span{width:6px;height:6px;background:var(--g);border-radius:50%;animation:ld 1.2s infinite}
.ldots span:nth-child(2){animation-delay:.22s}.ldots span:nth-child(3){animation-delay:.44s}
@keyframes ld{0%,80%,100%{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}
::-webkit-scrollbar{width:3px;height:3px}
::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:99px}
.msg-img{max-width:200px;max-height:200px;border-radius:8px;display:block;cursor:pointer;object-fit:cover}
.mwrap.s .msg-img{border-radius:13px 13px 3px 13px}
.mwrap.r .msg-img{border-radius:13px 13px 13px 3px}
.upbtn{width:38px;height:38px;background:#F3F4F6;border:none;border-radius:9px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;color:var(--txt2)}
.upbtn:active{background:#E5E7EB}
.imgview-ov{position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:2000;display:none;align-items:center;justify-content:center;cursor:zoom-out}
.imgview-ov.on{display:flex}
.imgview-ov img{max-width:94vw;max-height:90vh;border-radius:10px;object-fit:contain}
/* 大图查看中的“撤回图片”按钮 */
.imgview-recall{position:fixed;bottom:calc(28px + var(--sab));left:50%;transform:translateX(-50%);
  background:rgba(229,57,53,.94);color:#fff;border:none;border-radius:20px;padding:9px 22px;
  font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;z-index:2001;backdrop-filter:blur(8px);
  box-shadow:0 4px 14px rgba(0,0,0,.3)}
.imgview-recall:active{opacity:.85}
.uploading-tip{display:inline-block;padding:8px 12px;background:#E8F5E9;border-radius:10px;font-size:12.5px;color:#388E3C;font-weight:600}
@media(max-width:768px){
  .cl-panel{flex:1;display:flex;flex-direction:column}
  .cl-panel.hide{display:none!important}
  .cpanel{flex:1}.cpanel.hide{display:none!important}
  .back-btn{display:block!important}
  .chat-view{flex:1;min-height:0;overflow:hidden}
}
.recalled-tip{color:var(--txt3);font-size:12px;font-style:italic;padding:4px 10px;}
.msg-actions{display:none;gap:6px;margin-top:4px;}
.mwrap.s:hover .msg-actions{display:flex;}
/* 移动端无 hover：点击气泡切换显示操作按钮 */
.mwrap.s.show-acts .msg-actions{display:flex;}
.msg-act{font-size:11px;color:var(--txt3);cursor:pointer;padding:2px 6px;border-radius:4px;background:rgba(0,0,0,.06);}
.msg-act:hover{color:var(--g);}
/* 图片气泡去掉绿色背景和内边距 */
.mb:has(.msg-img){padding:0!important;background:transparent!important;box-shadow:none!important}
/* ==========================================
   终极修复：气泡错位 & 安卓 Chrome 诡异换行
   ========================================== */

/* 1. 精准锁定气泡外层的匿名包裹 div，重新定义它的排版 */
.mwrap > div:not(.mav) {
  display: flex;
  flex-direction: column;
  max-width: 72%;
  min-width: 0; /* 🌟 核心：这一行专门治安卓 Chrome 的 flex 宽度坍塌换行 Bug */
}

/* 2. 强制纠正对齐方式：自己发的靠右贴头像，别人发的靠左贴头像 */
.mwrap.s > div:not(.mav) {
  align-items: flex-end;
}
.mwrap.r > div:not(.mav) {
  align-items: flex-start;
}

/* 3. 剥夺气泡本体控制宽度的权力，全部交给外层 */
.mb {
  max-width: 100% !important; /* 用 !important 镇压老样式 */
  word-break: break-word !important;
  overflow-wrap: anywhere !important; /* 增强安卓端连续字符换行兼容性 */
  white-space: pre-wrap !important;
}

/* 4. 彻底解决发图片时出现的诡异绿色底色 */
.mb:has(.msg-img) {
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
/* 朋友圈样式 */
.moment-card{background:#fff;padding:16px;border-bottom:1px solid var(--border);display:flex;gap:12px;margin-bottom:8px;}
.moment-av{width:42px;height:42px;border-radius:8px;flex-shrink:0;overflow:hidden;}
.moment-body{flex:1;min-width:0;}
.moment-name{font-size:15px;font-weight:700;color:#576b95;margin-bottom:4px;}
.moment-txt{font-size:15px;color:var(--txt);line-height:1.5;word-break:break-word;white-space:pre-wrap;}
.moment-imgs-btn{margin-top:8px;background:#F0F2F5;border:1px solid var(--border);padding:6px 12px;border-radius:6px;font-size:13px;color:var(--txt2);cursor:pointer;display:inline-block;}
.moment-imgs-btn:active{background:#E5E7EB;}
.moment-time-row{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:12px;color:var(--txt3);}
.moment-acts{display:flex;gap:16px;}
.moment-act-btn{background:none;border:none;color:#576b95;font-size:13px;cursor:pointer;font-weight:600;}
.moment-interacts{background:#F0F2F5;border-radius:6px;margin-top:10px;padding:8px;font-size:13px;}
.moment-likes{color:#576b95;font-weight:700;margin-bottom:4px;}
.moment-cmt{margin-top:4px;color:var(--txt);word-break:break-word;font-size:13px;}
.moment-cmt span.cname{color:#576b95;font-weight:700;}
.pub-img-item{width:80px;height:80px;border-radius:8px;object-fit:cover;cursor:pointer;}
/* AI 对话 */
.ai-modal{padding:0;display:flex;flex-direction:column;height:90vh;width:min(480px,100%);overflow:hidden}
@media(min-width:480px){.ai-modal{height:82vh;border-radius:18px}}
.ai-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.ai-title{font-size:16px;font-weight:800}
.ai-head-acts{display:flex;gap:4px}
.ai-head-acts button{background:none;border:none;font-size:20px;cursor:pointer;color:var(--txt2);padding:3px 8px;line-height:1;border-radius:7px}
.ai-head-acts button:active{background:#F3F4F6}
.ai-msgs{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px 12px;background:#F0F2F5;display:flex;flex-direction:column;gap:10px}
.ai-input{display:flex;gap:7px;align-items:flex-end;padding:8px 11px;border-top:1px solid var(--border);flex-shrink:0;background:#fff}
.ai-tip{flex-shrink:0;display:flex;align-items:center;justify-content:center;text-align:center;font-size:11px;color:var(--txt3);background:#fff;padding:5px 10px;padding-bottom:max(6px,var(--sab))}
.ai-row{display:flex;gap:8px;max-width:88%}
.ai-row.user{align-self:flex-end;flex-direction:row-reverse}
.ai-row.ai{align-self:flex-start}
.ai-ava{width:30px;height:30px;border-radius:8px;flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:16px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.ai-bubble{padding:9px 13px;border-radius:13px;font-size:14px;line-height:1.6;word-break:break-word;overflow-wrap:anywhere;min-width:0}
.ai-row.user .ai-bubble{background:linear-gradient(135deg,#0FE37A,#07C160);color:#fff;border-bottom-right-radius:3px;white-space:pre-wrap}
.ai-row.ai .ai-bubble{background:#fff;color:var(--txt);border-bottom-left-radius:3px;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.ai-row.ai .ai-bubble p{margin:6px 0}
.ai-row.ai .ai-bubble p:first-child{margin-top:0}
.ai-row.ai .ai-bubble p:last-child{margin-bottom:0}
.ai-row.ai .ai-bubble pre{background:#F3F4F6;border-radius:8px;padding:10px;overflow-x:auto;font-size:12.5px}
.ai-row.ai .ai-bubble code{background:#F3F4F6;border-radius:4px;padding:1px 5px;font-size:12.5px;font-family:monospace}
.ai-row.ai .ai-bubble pre code{background:none;padding:0}
.ai-row .ai-bubble img{max-width:180px;border-radius:9px;display:block;margin-top:4px;cursor:pointer}
.ai-divider{align-self:center;font-size:11px;color:var(--txt2);background:rgba(0,0,0,.06);padding:3px 12px;border-radius:99px;margin:4px 0;font-weight:600}
.ai-think{margin-bottom:8px;background:#F3F4F6;border:1px solid var(--border);border-radius:8px;font-size:12.5px;overflow:hidden}
.ai-think summary{cursor:pointer;padding:7px 10px;font-weight:700;color:var(--txt2);user-select:none;list-style:none;outline:none}
.ai-think summary::-webkit-details-marker{display:none}
.ai-think summary::before{content:'▸ '}
.ai-think[open] summary::before{content:'▾ '}
.ai-think-body{padding:8px 10px 9px;color:var(--txt2);line-height:1.6;border-top:1px solid var(--border)}
.ai-think-body p{margin:5px 0}
.ai-think-body p:first-child{margin-top:0}
.ai-think-body p:last-child{margin-bottom:0}
.ai-time{font-size:10.5px;color:var(--txt3);margin-top:7px}
.ai-img-pending{position:relative;padding:6px 11px 0;flex-shrink:0;background:#fff}
.ai-img-pending img{height:54px;border-radius:8px;display:block}
.ai-img-pending button{position:absolute;top:0;left:50px;background:#E53935;color:#fff;border:none;border-radius:50%;width:20px;height:20px;font-size:12px;line-height:1;cursor:pointer}
.ai-edit-btn{align-self:center;background:none;border:none;cursor:pointer;font-size:15px;opacity:.75;padding:2px 4px;flex-shrink:0;transition:opacity .15s}
.ai-edit-btn:hover{opacity:1}