/* ============================================================
   V3.34  第五代玻璃「细腻霜面 + 锥形描边」
   配方取自用户指定 CSS：
   -75deg 霜面渐变 / inset 立体阴影 / conic 渐变中空描边 / 顶部扫光
   1) 全站 .glass / 卡片 / 弹窗统一替换旧液态玻璃效果
   2) 弹窗文字锐利化：超小模糊 + 内容层上浮 + 彻底移除 SVG 折射
   3) 消息/会话头像、账号栏布局、右上角菜单置顶等配套样式
   作为最后一层覆盖样式加载
   ============================================================ */
@property --ng-angle{ syntax:'<angle>'; inherits:false; initial-value:-75deg; }
@property --ng-bangle{ syntax:'<angle>'; inherits:false; initial-value:-75deg; }

/* ---------- 主题变量（浅色） ---------- */
body[data-theme="light"]{
  --ng-tint-1:rgba(255,255,255,.08);
  --ng-tint-2:rgba(255,255,255,.26);
  --ng-base-panel:rgba(255,255,255,.30);
  --ng-card-1:rgba(255,255,255,.36);
  --ng-card-2:rgba(255,255,255,.58);
  --ng-base-card:rgba(255,255,255,.28);
  --ng-pop-1:rgba(248,249,252,.82);
  --ng-pop-2:rgba(255,255,255,.93);
  --ng-btn-1:rgba(255,255,255,.12);
  --ng-btn-2:rgba(255,255,255,.30);
  --ng-btn-base:rgba(245,246,249,.52);
  --ng-hi:rgba(255,255,255,.95);
  --ng-lo:rgba(255,255,255,.45);
  --ng-drop:rgba(15,23,42,.10);
  --ng-drop-2:rgba(15,23,42,.05);
  --ng-pop-drop:rgba(15,23,42,.22);
  --ng-ring:rgba(255,255,255,.42);
  --ng-line-a:rgba(15,23,42,.18);
  --ng-line-b:rgba(255,255,255,.75);
  --ng-sheen:rgba(255,255,255,.55);
  --ng-inner:rgba(255,255,255,.50);
}
/* ---------- 主题变量（深色） ---------- */
body[data-theme="dark"]{
  --ng-tint-1:rgba(255,255,255,.04);
  --ng-tint-2:rgba(255,255,255,.12);
  --ng-base-panel:rgba(30,32,37,.30);
  --ng-card-1:rgba(255,255,255,.05);
  --ng-card-2:rgba(255,255,255,.11);
  --ng-base-card:rgba(34,36,41,.34);
  --ng-pop-1:rgba(36,38,43,.86);
  --ng-pop-2:rgba(44,46,52,.95);
  --ng-btn-1:rgba(255,255,255,.05);
  --ng-btn-2:rgba(255,255,255,.14);
  --ng-btn-base:rgba(40,42,48,.5);
  --ng-hi:rgba(255,255,255,.14);
  --ng-lo:rgba(0,0,0,.42);
  --ng-drop:rgba(0,0,0,.55);
  --ng-drop-2:rgba(0,0,0,.34);
  --ng-pop-drop:rgba(0,0,0,.66);
  --ng-ring:rgba(255,255,255,.10);
  --ng-line-a:rgba(0,0,0,.55);
  --ng-line-b:rgba(255,255,255,.24);
  --ng-sheen:rgba(255,255,255,.09);
  --ng-inner:rgba(255,255,255,.06);
}

/* ============================================================
   一、玻璃本体：霜面渐变 + 内立体阴影 + 极小模糊（文字不发虚）
   ============================================================ */
.glass{
  position:relative; isolation:isolate;
  background-image:linear-gradient(var(--ng-angle,-75deg),var(--ng-tint-1) 0%,var(--ng-tint-2) 50%,var(--ng-tint-1) 100%);
  background-color:var(--ng-base-panel);
  -webkit-backdrop-filter:blur(12px) saturate(150%);
  backdrop-filter:blur(12px) saturate(150%);
  border:1px solid transparent;
  box-shadow:
    inset 0 1px 1px var(--ng-hi),
    inset 0 -1px 1px var(--ng-lo),
    0 8px 24px var(--ng-drop),
    0 2px 6px var(--ng-drop-2),
    inset 0 0 0 1px var(--ng-ring);
}
/* 顶部扫光（替代 txt 中 span::after 的流光，静态霜化） */
.glass::before{
  content:'';position:absolute;inset:0;border-radius:inherit;z-index:0;pointer-events:none;
  mix-blend-mode:normal!important;opacity:1!important;
  background:linear-gradient(180deg,var(--ng-sheen),transparent 34%)!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
}
/* conic 渐变中空描边（txt button::after 同款 mask 挖心） */
.glass::after{
  content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;z-index:3;pointer-events:none;
  background:
    conic-gradient(from var(--ng-bangle,-75deg) at 50% 50%,
      var(--ng-line-a),var(--ng-line-b) 16% 40%,var(--ng-line-a) 50%,var(--ng-line-b) 62% 86%,var(--ng-line-a)),
    linear-gradient(180deg,var(--ng-line-b),var(--ng-line-a))!important;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;
  transition:--ng-bangle .5s ease;
}
.glass:hover::after{ --ng-bangle:-125deg; }
/* v3.32 的镜面随动高光元素在新效果下停用 */
.glass > .lg-spec{ display:none!important; }

/* ============================================================
   二、卡片：霜面更实，保证表格/正文可读（所有卡片统一效果）
   ============================================================ */
.card.glass,.stat-card.glass,.member-card.glass,.mtg-card.glass,.task-item.glass,
.cal-wrap.glass,.table-wrap.glass,.arr-detail.glass,.login-card.glass,.sc-stage.glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),var(--ng-card-1) 0%,var(--ng-card-2) 50%,var(--ng-card-1) 100%);
  background-color:var(--ng-base-card);
  -webkit-backdrop-filter:blur(16px) saturate(150%);
  backdrop-filter:blur(16px) saturate(150%);
  box-shadow:
    inset 0 1px 1px var(--ng-hi),
    inset 0 -1px 1px var(--ng-lo),
    0 6px 18px var(--ng-drop),
    0 1px 4px var(--ng-drop-2),
    inset 0 0 0 1px var(--ng-ring);
}
/* 恢复 v3.32 曾对卡片关闭的扫光/描边（特异性高于旧层） */
.card.glass::before,.stat-card.glass::before,.member-card.glass::before,.mtg-card.glass::before,
.task-item.glass::before,.cal-wrap.glass::before,.table-wrap.glass::before,.arr-detail.glass::before,
.login-card.glass::before,.sc-stage.glass::before{ display:block!important; }
.card.glass::after,.stat-card.glass::after,.member-card.glass::after,.mtg-card.glass::after,
.task-item.glass::after,.cal-wrap.glass::after,.table-wrap.glass::after,.arr-detail.glass::after,
.login-card.glass::after,.sc-stage.glass::after{ display:block!important; }

/* ============================================================
   三、弹窗：近实霜面 + 2px 微模糊，文字绝对锐利（覆盖 v328/v332 !important）
   ============================================================ */
.modal.glass,.pop-sheet.glass,.urgent-box.glass,.gl-box.glass,.emoji-panel.glass,.user-menu.glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),var(--ng-pop-1) 0%,var(--ng-pop-2) 50%,var(--ng-pop-1) 100%)!important;
  background-color:transparent!important;
  -webkit-backdrop-filter:blur(2px)!important;backdrop-filter:blur(2px)!important;
  border:1px solid transparent!important;
  box-shadow:
    inset 0 1px 1px var(--ng-hi),
    inset 0 -1px 1px var(--ng-lo),
    0 24px 70px var(--ng-pop-drop),
    0 8px 24px var(--ng-drop),
    inset 0 0 0 1px var(--ng-ring)!important;
}
.modal.glass::before,.pop-sheet.glass::before,.urgent-box.glass::before,.gl-box.glass::before,
.emoji-panel.glass::before,.user-menu.glass::before{
  background:linear-gradient(180deg,var(--ng-sheen),transparent 30%)!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
  mix-blend-mode:normal!important;opacity:1!important;
}
/* 弹窗内再嵌的小玻璃卡片：保留霜面渐变与描边，但不再二次模糊（避免层叠模糊致文字发虚） */
.modal .glass,.pop-sheet .glass,.urgent-box .glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),var(--ng-card-1) 0%,var(--ng-card-2) 50%,var(--ng-card-1) 100%)!important;
  background-color:var(--ng-inner)!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
}
/* 弹窗文字锐利化兜底 */
.modal,.pop-sheet,.urgent-box,.user-menu,.emoji-panel,.gl-box{ -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
/* 清除 v318 常驻 will-change:transform（它让弹窗始终停留在合成层，是动画结束后文字持续发虚的根因之一） */
.modal,.pop-sheet,.urgent-box{ will-change:auto!important; }
.modal-head *,.modal-body *,.pop-head *,.pop-body *,.urgent-box *,.user-menu *,.emoji-panel *{
  -webkit-font-smoothing:antialiased; filter:none;
}
/* 分段标签条：横向滚动容器不画外描边，避免被裁剪 */
.set-tabs.glass::after,.set-tabs.glass::before,.mtg-tabs.glass::after,.mtg-tabs.glass::before{ display:none!important; }

/* ============================================================
   四、按钮 / 输入控件：txt 按钮同款内立体霜面
   ============================================================ */
.glass-btn{
  position:relative;isolation:isolate;
  background-image:linear-gradient(var(--ng-angle,-75deg),var(--ng-btn-1) 0%,var(--ng-btn-2) 50%,var(--ng-btn-1) 100%);
  background-color:var(--ng-btn-base);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  border:1px solid transparent;
  box-shadow:
    inset 0 1px 1px var(--ng-hi),
    inset 0 -1px 1px var(--ng-lo),
    0 2px 6px var(--ng-drop-2),
    inset 0 0 0 1px var(--ng-ring);
}
.glass-btn::after{
  content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;z-index:0;pointer-events:none;
  background:
    conic-gradient(from var(--ng-bangle,-75deg) at 50% 50%,
      var(--ng-line-a),var(--ng-line-b) 16% 40%,var(--ng-line-a) 50%,var(--ng-line-b) 62% 86%,var(--ng-line-a)),
    linear-gradient(180deg,var(--ng-line-b),var(--ng-line-a));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;
  opacity:.8;
}
.glass-btn:hover::after{ --ng-bangle:-125deg; }
/* txt 同款悬停扫光（限于按钮等小控件，避免大卡片干扰阅读） */
.glass-btn::before{
  content:'';position:absolute;inset:0;border-radius:inherit;z-index:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 28%,var(--ng-sweep,rgba(255,255,255,.4)) 48%,rgba(255,255,255,.12) 55%,transparent 72%);
  background-size:260% 100%;background-position:130% 0;opacity:0;
  transition:background-position .55s var(--ng-ease,cubic-bezier(.25,1,.5,1)),opacity .25s;
}
.glass-btn:hover::before{ opacity:1;background-position:-70% 0; }
body[data-theme="light"]{ --ng-sweep:rgba(255,255,255,.55); }
body[data-theme="dark"]{ --ng-sweep:rgba(255,255,255,.14); }
/* 玻璃质感输入框（搜索/报表/下拉等 .glass 表单）：内凹霜面，不画描边环 */
input.glass,select.glass,textarea.glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),var(--ng-btn-1) 0%,var(--ng-btn-2) 50%,var(--ng-btn-1) 100%)!important;
  background-color:var(--input-bg)!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
  box-shadow:inset 0 1px 2px var(--ng-drop-2),inset 0 0 0 1px var(--ng-ring)!important;
}
input.glass::after,select.glass::after,textarea.glass::after{ display:none!important; }

/* ============================================================
   五、彻底停用 v3.32「full 液态模式」的 SVG 折射（文字模糊根因之一）
   ============================================================ */
body[data-glass="full"] .glass,body[data-glass="full"] .glass-btn{
  -webkit-backdrop-filter:blur(3px) saturate(140%)!important;
  backdrop-filter:blur(3px) saturate(140%)!important;
}
body[data-glass="full"] .glass::before,body[data-glass="full"] .glass::after,
body[data-glass="full"] .glass-btn::before,body[data-glass="full"] .glass-btn::after{
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
}
/* 弹窗在 full 档也固定 2px 微模糊（特异性高于通用 full 规则，保证文字锐利） */
body[data-glass="full"] .modal.glass,body[data-glass="full"] .pop-sheet.glass,
body[data-glass="full"] .urgent-box.glass,body[data-glass="full"] .user-menu.glass,
body[data-glass="full"] .emoji-panel.glass,body[data-glass="full"] .gl-box.glass{
  -webkit-backdrop-filter:blur(2px)!important;backdrop-filter:blur(2px)!important;
}
/* 区域看板：恢复网格底纹（细网+主网格），整体霜面玻璃，不铺白底 */
.zone-viewport.glass{
  background-color:color-mix(in srgb,var(--bg) 38%,transparent)!important;
  background-image:
    linear-gradient(color-mix(in srgb,var(--blue) 14%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--blue) 14%,transparent) 1px,transparent 1px),
    linear-gradient(color-mix(in srgb,var(--text) 6%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--text) 6%,transparent) 1px,transparent 1px)!important;
  background-size:160px 160px,160px 160px,32px 32px,32px 32px!important;
  -webkit-backdrop-filter:blur(10px) saturate(140%);backdrop-filter:blur(10px) saturate(140%);
}
body[data-glass="lite"] .zone-viewport.glass,body[data-bf="0"] .zone-viewport.glass{
  background-color:var(--input-bg)!important;
  background-image:
    linear-gradient(color-mix(in srgb,var(--text) 8%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--text) 8%,transparent) 1px,transparent 1px)!important;
  background-size:32px 32px,32px 32px!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
}
.zone-viewport.glass::before,.zone-viewport.glass::after{ display:none!important; }

/* ============================================================
   六、右上角小头像菜单：层级置顶，绝不被内容区遮挡
   ============================================================ */
.topbar{ z-index:40; }
.sidebar{ z-index:30; }
.user-menu{ z-index:9999!important; box-shadow:0 24px 60px var(--ng-pop-drop),0 8px 20px var(--ng-drop)!important; }
.user-menu.glass::after{ z-index:3; }
.user-menu>*{ position:relative;z-index:4; }

/* ============================================================
   七、v3.34 消息头像 / 会话头像 / 账号栏布局
   ============================================================ */
.conv-ava-img{ width:100%;height:100%;border-radius:50%;object-fit:cover;display:block; }
.msg-line{ display:flex;align-items:flex-end;gap:8px;max-width:100%; }
.msg-row.mine .msg-line{ flex-direction:row; }
.msg-col{ display:flex;flex-direction:column;min-width:0;max-width:100%; }
.msg-row.mine .msg-col{ align-items:flex-end; }
.msg-row.other .msg-col{ align-items:flex-start; }
.msg-ava{ flex:0 0 auto;width:30px;height:30px;margin-bottom:14px; }
.msg-ava .avatar{ width:30px!important;height:30px!important;font-size:12px; }
.msg-col .msg-bubble-wrap{ max-width:100%; }
/* 账号栏（原个人主页）布局 */
.acct-grid{ display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:start; }
.acct-who{ display:flex;align-items:center;gap:14px;margin:10px 0 12px; }
.acct-who-txt b{ font-size:16px; }
.acct-who-txt p{ margin:2px 0 0;color:var(--text-3);font-size:12.5px; }
.acct-grid .prof-avatar-btn{ margin:6px 0; }

/* ============================================================
   八、流畅（性能）模式：关闭模糊与装饰层，保留纯色霜面
   ============================================================ */
body[data-perf="1"] .glass,body[data-perf="1"] .glass-btn{
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
}
body[data-perf="1"] .glass::before,body[data-perf="1"] .glass::after,
body[data-perf="1"] .glass-btn::before,body[data-perf="1"] .glass-btn::after,
body[data-perf="1"] .glass>.lg-spec{ display:none!important; }
body[data-perf="1"] .card.glass,body[data-perf="1"] .stat-card.glass,
body[data-perf="1"] .table-wrap.glass,body[data-perf="1"] .modal.glass,
body[data-perf="1"] .pop-sheet.glass{ background:var(--bg-card-solid,#fff)!important; }
body[data-theme="dark"][data-perf="1"] .card.glass,body[data-theme="dark"][data-perf="1"] .stat-card.glass,
body[data-theme="dark"][data-perf="1"] .table-wrap.glass,body[data-theme="dark"][data-perf="1"] .modal.glass,
body[data-theme="dark"][data-perf="1"] .pop-sheet.glass{ background:#16181d!important; }

/* ============================================================
   九、v3.34.1 稳定性补丁：杜绝透底 / 弹窗循环 / 低端环境卡死
   ============================================================ */
/* full 液态玻璃模式：弹窗也是整体霜面玻璃（加大模糊保证文字清晰），不再铺白底 */
body[data-glass="full"] .modal.glass,body[data-glass="full"] .pop-sheet.glass,
body[data-glass="full"] .urgent-box.glass,body[data-glass="full"] .gl-box.glass,
body[data-glass="full"] .emoji-panel.glass,body[data-glass="full"] .user-menu.glass{
  -webkit-backdrop-filter:blur(18px) saturate(160%)!important;backdrop-filter:blur(18px) saturate(160%)!important;
}
/* lite / 无 bf 环境：弹窗本体近实底（不依赖 backdrop-filter 也能读清文字） */
body[data-glass="lite"] .modal.glass,body[data-glass="lite"] .pop-sheet.glass,
body[data-glass="lite"] .urgent-box.glass,body[data-glass="lite"] .gl-box.glass,
body[data-glass="lite"] .emoji-panel.glass,body[data-glass="lite"] .user-menu.glass,
body[data-bf="0"] .modal.glass,body[data-bf="0"] .pop-sheet.glass,
body[data-bf="0"] .urgent-box.glass,body[data-bf="0"] .gl-box.glass,
body[data-bf="0"] .emoji-panel.glass,body[data-bf="0"] .user-menu.glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),rgba(250,250,252,.97) 0%,rgba(255,255,255,1) 50%,rgba(250,250,252,.97) 100%)!important;
}
body[data-theme="dark"][data-glass="lite"] .modal.glass,body[data-theme="dark"][data-glass="lite"] .pop-sheet.glass,
body[data-theme="dark"][data-glass="lite"] .urgent-box.glass,body[data-theme="dark"][data-glass="lite"] .gl-box.glass,
body[data-theme="dark"][data-glass="lite"] .emoji-panel.glass,body[data-theme="dark"][data-glass="lite"] .user-menu.glass,
body[data-theme="dark"][data-bf="0"] .modal.glass,body[data-theme="dark"][data-bf="0"] .pop-sheet.glass,
body[data-theme="dark"][data-bf="0"] .urgent-box.glass,body[data-theme="dark"][data-bf="0"] .gl-box.glass,
body[data-theme="dark"][data-bf="0"] .emoji-panel.glass,body[data-theme="dark"][data-bf="0"] .user-menu.glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),rgba(34,36,41,.98) 0%,rgba(44,46,52,1) 50%,rgba(34,36,41,.98) 100%)!important;
}
/* 普通（lite）模式：不依赖 SVG 折射，卡片/面板使用高不透明度霜面，保证任何内核下都不透底 */
body[data-glass="lite"] .card.glass,body[data-glass="lite"] .stat-card.glass,
body[data-glass="lite"] .member-card.glass,body[data-glass="lite"] .mtg-card.glass,
body[data-glass="lite"] .task-item.glass,body[data-glass="lite"] .cal-wrap.glass,
body[data-glass="lite"] .table-wrap.glass,body[data-glass="lite"] .arr-detail.glass,
body[data-glass="lite"] .sc-stage.glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),rgba(255,255,255,.94) 0%,rgba(255,255,255,.985) 50%,rgba(255,255,255,.94) 100%)!important;
  background-color:rgba(255,255,255,.95)!important;
  -webkit-backdrop-filter:blur(2px) saturate(120%)!important;backdrop-filter:blur(2px) saturate(120%)!important;
}
body[data-theme="dark"][data-glass="lite"] .card.glass,body[data-theme="dark"][data-glass="lite"] .stat-card.glass,
body[data-theme="dark"][data-glass="lite"] .member-card.glass,body[data-theme="dark"][data-glass="lite"] .mtg-card.glass,
body[data-theme="dark"][data-glass="lite"] .task-item.glass,body[data-theme="dark"][data-glass="lite"] .cal-wrap.glass,
body[data-theme="dark"][data-glass="lite"] .table-wrap.glass,body[data-theme="dark"][data-glass="lite"] .arr-detail.glass,
body[data-theme="dark"][data-glass="lite"] .sc-stage.glass{
  background-image:linear-gradient(var(--ng-angle,-75deg),rgba(30,32,37,.95) 0%,rgba(38,40,45,.99) 50%,rgba(30,32,37,.95) 100%)!important;
  background-color:rgba(30,32,37,.96)!important;
}
/* lite 模式下侧栏/顶栏/标签条等容器也提高实度 */
body[data-glass="lite"] .sidebar.glass,body[data-glass="lite"] .topbar.glass,
body[data-glass="lite"] .set-tabs.glass,body[data-glass="lite"] .mtg-tabs.glass,
body[data-glass="lite"] .chat-layout.glass,body[data-glass="lite"] .conv-head,
body[data-glass="lite"] .chat-head{
  background-color:rgba(255,255,255,.92)!important;
}
body[data-theme="dark"][data-glass="lite"] .sidebar.glass,body[data-theme="dark"][data-glass="lite"] .topbar.glass,
body[data-theme="dark"][data-glass="lite"] .set-tabs.glass,body[data-theme="dark"][data-glass="lite"] .mtg-tabs.glass,
body[data-theme="dark"][data-glass="lite"] .chat-layout.glass,body[data-theme="dark"][data-glass="lite"] .conv-head,
body[data-theme="dark"][data-glass="lite"] .chat-head{
  background-color:rgba(28,30,35,.94)!important;
}
/* 内核完全不支持 backdrop-filter 时：全部玻璃元素改为实底，杜绝“全透明” */
body[data-bf="0"] .glass,body[data-bf="0"] .glass-btn{ -webkit-backdrop-filter:none!important;backdrop-filter:none!important; }
body[data-bf="0"] .card.glass,body[data-bf="0"] .stat-card.glass,body[data-bf="0"] .member-card.glass,
body[data-bf="0"] .mtg-card.glass,body[data-bf="0"] .task-item.glass,body[data-bf="0"] .cal-wrap.glass,
body[data-bf="0"] .table-wrap.glass,body[data-bf="0"] .arr-detail.glass,body[data-bf="0"] .sc-stage.glass,
body[data-bf="0"] .sidebar.glass,body[data-bf="0"] .topbar.glass,body[data-bf="0"] .set-tabs.glass,
body[data-bf="0"] .mtg-tabs.glass,body[data-bf="0"] .chat-layout.glass{
  background:#ffffff!important;
}
body[data-theme="dark"][data-bf="0"] .card.glass,body[data-theme="dark"][data-bf="0"] .stat-card.glass,
body[data-theme="dark"][data-bf="0"] .member-card.glass,body[data-theme="dark"][data-bf="0"] .mtg-card.glass,
body[data-theme="dark"][data-bf="0"] .task-item.glass,body[data-theme="dark"][data-bf="0"] .cal-wrap.glass,
body[data-theme="dark"][data-bf="0"] .table-wrap.glass,body[data-theme="dark"][data-bf="0"] .arr-detail.glass,
body[data-theme="dark"][data-bf="0"] .sc-stage.glass,body[data-theme="dark"][data-bf="0"] .sidebar.glass,
body[data-theme="dark"][data-bf="0"] .topbar.glass,body[data-theme="dark"][data-bf="0"] .set-tabs.glass,
body[data-theme="dark"][data-bf="0"] .mtg-tabs.glass,body[data-theme="dark"][data-bf="0"] .chat-layout.glass{
  background:#1e2025!important;
}
body[data-bf="0"] .modal.glass,body[data-bf="0"] .pop-sheet.glass,body[data-bf="0"] .urgent-box.glass,
body[data-bf="0"] .user-menu.glass,body[data-bf="0"] .emoji-panel.glass,body[data-bf="0"] .gl-box.glass{
  background:#ffffff!important;
}
body[data-theme="dark"][data-bf="0"] .modal.glass,body[data-theme="dark"][data-bf="0"] .pop-sheet.glass,
body[data-theme="dark"][data-bf="0"] .urgent-box.glass,body[data-theme="dark"][data-bf="0"] .user-menu.glass,
body[data-theme="dark"][data-bf="0"] .emoji-panel.glass,body[data-theme="dark"][data-bf="0"] .gl-box.glass{
  background:#22242a!important;
}
/* 弹窗动画只允许播放一次：禁止任何后代/伪元素继承出可重启动画，杜绝循环弹出 */
.modal,.pop-sheet,.urgent-box{ animation-iteration-count:1!important; }
/* 超级管理员标签 */
.tag-super{ background:linear-gradient(135deg,#7c3aed,#4f46e5)!important;color:#fff!important;border:none!important; }

/* ============================================================
   十、v3.34.1 聊天界面排版 & 整体 UI 精修
   ============================================================ */
/* 1) 会话列 / 聊天列头部、输入区：霜面实底，避免与消息区文字互相穿透 */
.conv-head,.chat-top{
  background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.82));
  -webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);
  position:relative;z-index:2;flex-shrink:0;
}
.chat-compose{
  background:linear-gradient(0deg,rgba(255,255,255,.95),rgba(255,255,255,.86))!important;
  -webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);
  position:relative;z-index:2;flex-shrink:0;
}
body[data-theme="dark"] .conv-head,body[data-theme="dark"] .chat-top{
  background:linear-gradient(180deg,rgba(34,36,41,.94),rgba(34,36,41,.84));
}
body[data-theme="dark"] .chat-compose{
  background:linear-gradient(0deg,rgba(30,32,37,.96),rgba(30,32,37,.86))!important;
}
/* lite / 无 bf 环境下头部与输入区完全实底 */
body[data-glass="lite"] .conv-head,body[data-glass="lite"] .chat-top,
body[data-glass="lite"] .chat-compose,
body[data-bf="0"] .conv-head,body[data-bf="0"] .chat-top,body[data-bf="0"] .chat-compose{
  background:#ffffff!important;-webkit-backdrop-filter:none;backdrop-filter:none;
}
body[data-theme="dark"][data-glass="lite"] .conv-head,body[data-theme="dark"][data-glass="lite"] .chat-top,
body[data-theme="dark"][data-glass="lite"] .chat-compose,
body[data-theme="dark"][data-bf="0"] .conv-head,body[data-theme="dark"][data-bf="0"] .chat-top,
body[data-theme="dark"][data-bf="0"] .chat-compose{ background:#1e2025!important; }
/* 2) 会话列底色与整体玻璃面板统一 */
.conv-col{ background:transparent; }
/* 3) 收到的消息气泡使用近实底，长文清晰；自己的气泡保持品牌渐变 */
.msg-bubble{ background:rgba(255,255,255,.98);box-shadow:0 2px 10px rgba(15,23,42,.08); }
body[data-theme="dark"] .msg-bubble{ background:rgba(48,50,56,.98); }
.msg-row.mine .msg-bubble{ box-shadow:0 4px 14px rgba(10,132,255,.28); }
/* 4) 消息行节奏：行间距、头像与气泡垂直对齐 */
.msg-stream{ gap:12px;padding:20px 20px 14px; }
.msg-row{ margin-bottom:0; }
.msg-line{ gap:9px; }
.msg-ava{ flex-shrink:0;box-shadow:0 2px 8px rgba(15,23,42,.14); }
.msg-col{ min-width:0; }
.msg-time{ margin-top:4px;opacity:.85; }
/* 5) 输入区与工具按钮对齐、发送按钮高度统一 */
.chat-compose{ padding:10px 16px 14px; }
.chat-toolbar{ margin-bottom:9px; }
.chat-input-row{ gap:10px;align-items:flex-end; }
#chatInput{ min-height:48px;max-height:150px;overflow-y:auto; }
.chat-send-btn{ height:48px;border-radius:15px; }
/* 6) 会话列表项高度与信息两行排版 */
.conv-item{ padding:12px 15px;gap:12px; }
.conv-ava{ width:44px;height:44px; }
.conv-last{ margin-top:3px; }
/* 7) 空会话引导居中更稳 */
.chat-empty{ padding:40px 24px;text-align:center; }
/* 8) 全局：细滚动条统一（消息/会话/弹窗滚动区） */
.msg-stream::-webkit-scrollbar,.conv-list::-webkit-scrollbar,.modal-body::-webkit-scrollbar,.pop-body::-webkit-scrollbar{ width:8px;height:8px; }
.msg-stream::-webkit-scrollbar-thumb,.conv-list::-webkit-scrollbar-thumb,.modal-body::-webkit-scrollbar-thumb,.pop-body::-webkit-scrollbar-thumb{
  background:rgba(120,130,150,.32);border-radius:8px;border:2px solid transparent;background-clip:content-box;
}
.msg-stream::-webkit-scrollbar-thumb:hover,.conv-list::-webkit-scrollbar-thumb:hover{ background:rgba(120,130,150,.55);background-clip:content-box; }
/* 9) 弹窗内部表单栅格在窄宽度下不挤压 */
.modal-body{ padding:18px 20px 20px; }
.form-grid{ gap:14px 16px; }
/* 10) 移动端微调 */
@media (max-width:760px){
  .msg-stream{ padding:14px 12px;gap:10px; }
  .chat-compose{ padding:8px 10px 10px; }
  .conv-head,.chat-top{ padding:11px 12px; }
}

/* ============================================================
   十一、v3.34.2 聊天输入框内嵌 / 待发附件 / 文件图标 / 选中过渡 / 到货内联编辑
   ============================================================ */
/* 1) 工具栏与发送按钮并入输入框，整体一块玻璃 */
.chat-compose{ background:transparent!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;padding:10px 16px 14px;position:relative; }
body[data-theme="dark"] .chat-compose{ background:transparent!important; }
.chat-input-shell{ position:relative;border-radius:18px;padding:8px 10px 8px;display:flex;flex-direction:column;gap:7px; }
.chat-pending{ display:flex;flex-wrap:wrap;gap:8px; }
.chat-pending:empty{ display:none; }
.cpend{ position:relative;width:62px;height:62px;border-radius:13px;overflow:hidden;border:1px solid var(--input-border);background:var(--input-bg);
  animation:cpendIn .22s cubic-bezier(.2,1.2,.3,1); }
.cpend img{ width:100%;height:100%;object-fit:cover;display:block; }
.cpend .cpend-x{ position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;border:none;background:rgba(0,0,0,.55);color:#fff;font-size:11px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center; }
.cpend .cpend-name{ position:absolute;left:0;right:0;bottom:0;font-size:9px;background:rgba(0,0,0,.5);color:#fff;padding:2px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
@keyframes cpendIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}
/* v3.34.2b 输入区整体自适应高度：单行紧凑，随内容增高，到上限内部滚动，绝不顶起消息区 */
#chatInput.chat-input-editable{ flex:0 0 auto;height:auto;min-height:42px;max-height:140px;overflow-y:auto;border-radius:13px;padding:10px 13px;line-height:1.5; }
.chat-input-foot{ display:flex;align-items:center;gap:8px;flex-wrap:wrap; }
.chat-input-foot .chat-toolbar{ flex:1;display:flex;gap:7px;margin:0;min-width:0;position:relative; }
.chat-input-foot .chat-send-btn{ height:36px;padding:0 20px;border-radius:12px;margin:0;flex-shrink:0; }
.chat-input-shell{ padding:7px 10px;gap:6px; }
.chat-compose{ padding:8px 14px 12px; }
/* 表情面板必须绝对定位（.glass 会把它改成 relative 从而撑高工具栏） */
.chat-input-shell .emoji-panel.glass{ position:absolute!important; }
.chat-input-shell .emoji-panel{ bottom:46px; }
/* 2) 文件消息：按格式显示彩色类型图标 */
.msg-file{ gap:10px;padding:10px 14px;border-radius:14px;max-width:260px;align-items:center; }
.file-ic{ width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;color:#fff;flex-shrink:0;letter-spacing:.3px;box-shadow:0 3px 9px rgba(15,23,42,.18); }
.fi-pdf{background:linear-gradient(135deg,#ff6b5e,#d63031)}
.fi-word{background:linear-gradient(135deg,#4d9fff,#1c6fd6)}
.fi-excel{background:linear-gradient(135deg,#42d683,#12994b)}
.fi-ppt{background:linear-gradient(135deg,#ff9f43,#e67e22)}
.fi-zip{background:linear-gradient(135deg,#b197fc,#7048e8)}
.fi-img{background:linear-gradient(135deg,#38bdf8,#0284c7)}
.fi-video{background:linear-gradient(135deg,#f783ac,#d6336c)}
.fi-audio{background:linear-gradient(135deg,#63e6be,#0ca678)}
.fi-txt{background:linear-gradient(135deg,#868e96,#495057)}
.fi-other{background:linear-gradient(135deg,#adb5bd,#6c757d)}
.msg-file .mf-mid{ min-width:0; }
.msg-file .mf-name{ font-size:13px;font-weight:600;word-break:break-all; }
.msg-file .mf-size{ font-size:11px;color:var(--text-3);margin-top:2px; }
/* 3) 所有可选中元素平滑过渡 */
.nav-item,.conv-item,.set-tab,.mtg-tab,.emoji-tab,.cp-item,.mpu,.slot-chip,.task-item,
.member-card,.mtg-card,.arr-main-row,.zone-box,.chat-tool,.glass-btn,.btn,.icon-btn,
.tag-chip,.fp-opt,.seg-btn,.task-filter button,.af-status,.notif-item,.list-item,
.member-pick label,.table-wrap tbody tr,.set-tab button,.mtg-tabs button{
  transition:background-color .22s ease,color .22s ease,border-color .22s ease,
  box-shadow .24s ease,transform .18s cubic-bezier(.2,1,.3,1),opacity .2s ease,filter .2s;
}
.conv-item.active,.nav-item.active{ transition:background .22s ease,box-shadow .22s,transform .18s; }
.cp-item.cp-on{ border-color:var(--blue);background:color-mix(in srgb,var(--blue) 12%,transparent);box-shadow:0 3px 12px color-mix(in srgb,var(--blue) 18%,transparent); }
.member-pick .mpu{ cursor:pointer;border-radius:11px;padding:4px 8px;border:1px solid transparent; }
.member-pick .mpu:hover{ background:color-mix(in srgb,var(--blue) 8%,transparent); }
.member-pick .mpu:has(input:checked){ background:color-mix(in srgb,var(--blue) 13%,transparent);border-color:color-mix(in srgb,var(--blue) 45%,transparent); }
/* 4) 到货单展开内联编辑 */
.arr-edit-table input,.arr-edit-table select{ height:32px;min-height:32px;border-radius:9px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text);padding:0 8px;font-size:12.5px;font-family:inherit;width:100%; }
.arr-edit-table input:focus,.arr-edit-table select:focus{ outline:none;border-color:var(--blue);box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 16%,transparent); }
.arr-edit-foot{ display:flex;align-items:center;gap:10px;padding:10px 4px 2px; }
.arr-photo-cell{ display:flex;flex-wrap:wrap;gap:5px;align-items:center; }
.arr-photo-add{ width:34px;height:34px;border-radius:9px;border:1px dashed var(--input-border);background:var(--input-bg);cursor:pointer;font-size:16px;color:var(--text-2);display:flex;align-items:center;justify-content:center; }
.arr-photo-add:hover{ border-color:var(--blue);color:var(--blue); }
.arr-mini-thumb{ position:relative;width:40px;height:40px;border-radius:9px;overflow:hidden; }
.arr-mini-thumb img{ width:100%;height:100%;object-fit:cover; }
.arr-mini-thumb i{ position:absolute;top:1px;right:1px;width:16px;height:16px;border-radius:50%;border:none;background:rgba(0,0,0,.55);color:#fff;font-size:9px;font-style:normal;cursor:pointer;display:flex;align-items:center;justify-content:center; }
.arr-edit-row.changed{ background:color-mix(in srgb,#FFD60A 10%,transparent); }
/* 5) 任务汇报对象选择 */
.rpt-to-pick{ display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 2px;max-height:120px;overflow-y:auto;padding:8px;border:1px solid var(--input-border);border-radius:11px;background:var(--input-bg); }

/* 十二、v3.34.2 补强：自己头像恒在气泡右 / 输入壳细节 / 消息区不被压缩 */
.msg-row.mine .msg-line{ flex-direction:row!important; }
.msg-row.mine .msg-col{ align-items:flex-end; }
.msg-line .msg-ava{ flex:0 0 auto; }
.chat-layout,.chat-pane{ min-height:0; }
.msg-stream{ flex:1 1 auto;min-height:0;overflow-y:auto; }
.chat-compose{ flex:0 0 auto; }
.chat-input-shell{ border-radius:18px; }
.chat-input-shell .chat-tool{ width:38px;height:38px;border-radius:11px; }
.chat-input-foot .chat-toolbar .emoji-panel{ bottom:46px!important;left:0; }
.mf-dl{ font-size:12px;color:var(--blue);font-weight:600;flex-shrink:0;align-self:center; }
.msg-file{ display:flex;text-decoration:none;color:inherit; }
/* 内联编辑表格输入框统一宽度 */
.arr-edit-table td input[type=number]{ width:84px; }
.arr-edit-table .arr-photo-cell .up-thumb,.arr-edit-table .arr-photo-cell .p-thumb{ width:40px;height:40px;border-radius:9px;overflow:hidden; }
.arr-detail-head{ display:flex;align-items:center;gap:10px;flex-wrap:wrap; }

/* v3.34.2 任务汇报区：纵向布局，输入框满宽、按钮靠右 */
.rpt-input{ flex-direction:column!important;align-items:stretch!important;gap:8px; }
.rpt-input textarea{ width:100%;min-height:54px;flex:none; }
.rpt-input .fld{ margin:0; }
.rpt-input>.btn{ align-self:flex-end;width:auto; }
.rpt-to-pick{ max-height:118px;overflow-y:auto; }

/* ============================================================
   十二、v3.34.2b 整行点击 / 纸质单编辑 / 汇报联动 / 自适应输入
   ============================================================ */
.arr-main-row{ cursor:pointer; }
.arr-main-row:hover td{ background:color-mix(in srgb,var(--blue) 6%,transparent); }
.arr-head-tip{ font-size:12px;color:var(--text-3);margin-left:10px; }
.arr-paper-edit{ display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-3);margin-left:10px; }
.arr-paper-now{ position:relative;display:inline-flex;border-radius:8px;overflow:hidden; }
.arr-paper-now img{ width:46px;height:46px;object-fit:cover;display:block;border-radius:8px;border:1px solid var(--input-border);cursor:zoom-in; }
.arr-paper-del{ position:absolute;top:1px;right:1px;width:17px;height:17px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-style:normal;font-size:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;line-height:1; }
.arr-paper-del:hover{ background:#e5484d; }
.arr-paper-edit .btn{ padding:2px 10px;height:26px;font-size:12px; }
@keyframes mpuFlash{0%{background:color-mix(in srgb,var(--blue) 22%,transparent)}100%{background:transparent}}
.mpu-flash{ animation:mpuFlash .6s ease;border-radius:8px; }
/* 自己消息：头像固定在气泡右侧（双保险，防低版本缓存） */
.msg-row.mine .msg-line{ flex-direction:row!important; }
.msg-row.mine .msg-col{ align-items:flex-end; }
