/* ============================================================
   v3.38 视觉与功能增强
   1) 普通流畅改为默认界面模式（JS 侧）
   2) 背景配色 → 主题配色，仅普通流畅模式生效
   3) 恢复聊天头像配色（文字占位头像渐变着色，图片头像保持透明）
   4) 液态玻璃模式聊天气泡轻模糊
   5) 所有弹窗增加背景轻模糊（液态玻璃模式）
   6) 液态玻璃模式鼠标光影
   7) 液态玻璃模式增强日/夜文字显示
   8) 任务汇报图片上传/粘贴
   9) 库存盘点重构组件
   ============================================================ */

/* ============================================================
   一、主题配色：仅在「普通流畅」模式生效；液态玻璃模式保持统一玻璃背景
   ============================================================ */
body[data-perf="1"][data-theme="light"][data-bg="aurora"]{ background-image:linear-gradient(160deg,#dbe7ff 0%,#e6dcff 50%,#d7f5e3 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="ocean"]{ background-image:linear-gradient(160deg,#d6f0ff 0%,#cfe4ff 50%,#d3f8f5 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="sunset"]{ background-image:linear-gradient(160deg,#ffe3d0 0%,#ffd6e0 50%,#e8d9ff 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="forest"]{ background-image:linear-gradient(160deg,#d9f5e6 0%,#d4f0dd 50%,#e8f6cf 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="grape"]{ background-image:linear-gradient(160deg,#efdcff 0%,#ffd9ec 50%,#e2e0ff 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="gold"]{ background-image:linear-gradient(160deg,#fff0d6 0%,#ffe4cc 50%,#fff3d1 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="mono"]{ background-image:linear-gradient(160deg,#eef0f4 0%,#e6e8ee 50%,#f2f2f6 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="aurora"]{ background-image:linear-gradient(160deg,#101a3a 0%,#1a1233 50%,#0f2a1d 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="ocean"]{ background-image:linear-gradient(160deg,#0a1a30 0%,#0a1430 50%,#0a1f28 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="sunset"]{ background-image:linear-gradient(160deg,#2e1620 0%,#2e1430 50%,#241733 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="forest"]{ background-image:linear-gradient(160deg,#0d2418 0%,#0e2616 50%,#1d2a10 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="grape"]{ background-image:linear-gradient(160deg,#241033 0%,#2c1030 50%,#1a1433 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="gold"]{ background-image:linear-gradient(160deg,#2e2010 0%,#2e1c10 50%,#2e2810 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="mono"]{ background-image:linear-gradient(160deg,#17181d 0%,#1a1b21 50%,#202127 100%) !important; }
/* 液态玻璃模式：主题选择不改变背景（光斑保持默认天蓝紫绿，统一玻璃背景） */
body[data-perf="0"][data-bg] .o1{ background:radial-gradient(circle at 35% 35%, rgba(10,132,255,.5), transparent 70%); }
body[data-perf="0"][data-bg] .o2{ background:radial-gradient(circle at 60% 60%, rgba(191,90,242,.45), transparent 70%); }
body[data-perf="0"][data-bg] .o3{ background:radial-gradient(circle at 40% 60%, rgba(48,209,88,.4), transparent 70%); }

/* ============================================================
   二、恢复聊天头像配色（文字占位头像渐变着色；图片头像保持透明）
   ============================================================ */
.avatar.av-ph, .av-ph, .av-chip{
  background:linear-gradient(135deg,hsl(var(--avh,210) 72% 56%),hsl(var(--avh,210) 62% 40%)) !important;
}
.avatar.av-ph{ color:#fff; }

/* ============================================================
   三、液态玻璃模式：聊天气泡轻模糊 + 所有弹窗背景轻模糊
   （普通流畅模式维持 v3.37 无模糊，仅 saturate）
   ============================================================ */
body[data-perf="0"] .msg-bubble,
body[data-perf="0"] .msg-file,
body[data-perf="0"] .msg-product,
body[data-perf="0"] .msg-products{
  -webkit-backdrop-filter:blur(10px) saturate(170%) !important;
  backdrop-filter:blur(10px) saturate(170%) !important;
}
body[data-perf="0"] .modal,
body[data-perf="0"] .pop-sheet,
body[data-perf="0"] .urgent-box,
body[data-perf="0"] .emoji-panel,
body[data-perf="0"] .user-menu,
body[data-perf="0"] .gl-box,
body[data-perf="0"] .global-loader .gl-box,
body[data-perf="0"] #globalLoading .gl-box,
body[data-perf="0"][data-glass] .modal.glass,
body[data-perf="0"][data-glass] .pop-sheet.glass,
body[data-perf="0"][data-glass] .urgent-box.glass,
body[data-perf="0"][data-glass] .emoji-panel.glass,
body[data-perf="0"][data-glass] .user-menu.glass,
body[data-perf="0"][data-glass] .gl-box.glass{
  -webkit-backdrop-filter:blur(14px) saturate(180%) !important;
  backdrop-filter:blur(14px) saturate(180%) !important;
}

/* ============================================================
   四、液态玻璃模式：增强日/夜文字显示（提升对比度 + 轻微投影）
   ============================================================ */
body[data-perf="0"][data-theme="light"]{ --text:#0e1116; --text-2:#333a47; --text-3:#5b6474; }
body[data-perf="0"][data-theme="dark"]{ --text:#f5f7fb; --text-2:#cfd7e4; --text-3:#8d97a9; }
body[data-perf="0"][data-theme="light"] .app,
body[data-perf="0"][data-theme="light"] .content-wrap,
body[data-perf="0"][data-theme="light"] .sidebar{ text-shadow:0 1px 1px rgba(255,255,255,.18); }
body[data-perf="0"][data-theme="dark"] .app,
body[data-perf="0"][data-theme="dark"] .content-wrap,
body[data-perf="0"][data-theme="dark"] .sidebar{ text-shadow:0 1px 1px rgba(0,0,0,.3); }
body[data-perf="0"][data-theme="dark"] .page-title,
body[data-perf="0"][data-theme="dark"] .section-title{ text-shadow:0 0 6px rgba(0,0,0,.45); }

/* ============================================================
   五、液态玻璃模式：鼠标光影（指针处柔和光斑，透过玻璃折射）
   ============================================================ */
.cursor-light{
  position:fixed; left:0; top:0; width:480px; height:480px; border-radius:50%;
  pointer-events:none; z-index:0; opacity:0; transition:opacity .4s;
  background:radial-gradient(circle, rgba(255,255,255,.13) 0%, rgba(255,255,255,.05) 35%, transparent 65%);
  mix-blend-mode:screen; will-change:transform;
}
body[data-perf="0"] .cursor-light{ opacity:1; }
body[data-theme="dark"] .cursor-light{
  background:radial-gradient(circle, rgba(120,150,255,.12) 0%, rgba(120,150,255,.04) 35%, transparent 65%);
}

/* ============================================================
   六、任务汇报图片（上传 + 粘贴 + 缩略图管理）
   ============================================================ */
.rpt-img-bar{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin:6px 0; }
.rpt-imgs{ display:flex; flex-wrap:wrap; gap:6px; }
.rpt-img-item{ position:relative; display:inline-block; }
.rpt-img-item .p-thumb{ border-radius:8px; }
.rpt-img-item i{ position:absolute; top:-6px; right:-6px; width:16px; height:16px; border-radius:50%;
  background:rgba(255,59,48,.9); color:#fff; font-style:normal; font-size:11px; line-height:16px;
  text-align:center; cursor:pointer; }
#rptImgBtn{ flex-shrink:0; }

/* ============================================================
   七、库存盘点 v3.38 组件
   ============================================================ */
.mini-chip{ display:inline-block; padding:1px 8px; border-radius:10px; font-size:12px; margin-right:4px;
  background:color-mix(in srgb, var(--accent,#0A84FF) 14%, transparent);
  color:var(--text, inherit); border:1px solid color-mix(in srgb, var(--accent,#0A84FF) 30%, transparent); }
body[data-perf="1"] .mini-chip{ background:color-mix(in srgb, var(--accent,#0A84FF) 12%, #fff); }
body[data-perf="1"][data-theme="dark"] .mini-chip{ background:color-mix(in srgb, var(--accent,#0A84FF) 18%, #1c1d22); }

.ck-kw{ width:100%; padding:8px 12px; border-radius:10px; border:1px solid var(--line,#ddd); background:transparent; color:var(--text,#111); margin-bottom:6px; }
.ck-prod-list{ max-height:34vh; overflow:auto; border:1px dashed var(--line,#ddd); border-radius:10px; padding:4px; }
.ck-prow{ display:flex; align-items:center; gap:8px; padding:5px 6px; border-radius:8px; cursor:pointer; }
.ck-prow:hover{ background:color-mix(in srgb, var(--accent,#0A84FF) 8%, transparent); }
.ck-prow.on{ background:color-mix(in srgb, var(--accent,#0A84FF) 14%, transparent); }
.ck-prow input{ accent-color:var(--accent,#0A84FF); }
.ck-pimg{ width:34px; height:34px; border-radius:6px; object-fit:cover; flex-shrink:0; }
.ck-noimg{ width:34px; height:34px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center;
  background:color-mix(in srgb, var(--accent,#0A84FF) 10%, transparent); flex-shrink:0; }
.ck-prow b{ flex-shrink:0; font-size:13px; min-width:84px; }
.ck-pname{ font-size:12px; color:var(--text-3,#666); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.ck-detail{ display:flex; flex-direction:column; gap:12px; }
.ck-meta{ font-size:13px; color:var(--text-2,#444); }
.ck-meta-line{ margin:3px 0; word-break:break-all; }
.ck-meta-line b{ color:var(--text,#111); }
.ck-scan input{ width:100%; padding:10px 14px; border-radius:12px; border:1px solid var(--line,#ddd);
  background:transparent; color:var(--text,#111); font-size:15px; letter-spacing:.5px; }
.ck-scan-tip{ font-size:12px; color:var(--text-3,#888); margin-top:4px; }
.ck-mine-table td{ vertical-align:middle; }
.ck-mreal, .ck-preal{ width:88px; padding:5px 8px; border-radius:8px; border:1px solid var(--line,#ddd);
  background:transparent; color:var(--text,#111); }
.ck-minfo{ display:flex; flex-direction:column; line-height:1.35; }
.ck-minfo b{ font-size:13px; }
.ck-minfo span{ font-size:12px; color:var(--text-3,#888); }
.ck-mrow{ cursor:pointer; }
.ck-mrow:hover td{ background:color-mix(in srgb, var(--accent,#0A84FF) 6%, transparent); }
.ck-arrow{ font-style:normal; color:var(--text-3,#888); }
.ck-parts{ display:flex; flex-direction:column; gap:4px; }
.ck-part{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px; padding:3px 0; }
.ck-ptime{ font-size:12px; color:var(--text-3,#888); }
.ck-actions{ display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }

/* 移动端适配：弹窗内表格保持可滚动，卡片化 */
@media (max-width:860px){
  .ck-prow b{ min-width:0; }
  .ck-mreal, .ck-preal{ width:72px; }
  .ck-actions{ justify-content:stretch; }
  .ck-actions .btn{ flex:1; }
  .ck-detail{ gap:10px; }
}
/* ============================================================
   八、盘点摄像头扫码（扫码枪之外的第二录入通道）
   ============================================================ */
.ck-scan-row{ display:flex; gap:8px; }
.ck-scan-row input{ flex:1; min-width:0; }
#ckCamBtn{ flex-shrink:0; white-space:nowrap; }
.cam-mask{
  position:fixed; inset:0; z-index:3000; background:rgba(5,8,18,.5);
  display:flex; align-items:center; justify-content:center; padding:18px;
}
.cam-box{
  width:min(560px,100%); border-radius:16px; padding:14px;
  display:flex; flex-direction:column; gap:10px;
}
.cam-head{ display:flex; align-items:center; justify-content:space-between; font-weight:600; font-size:15px; }
.cam-box video{
  width:100%; border-radius:12px; background:#000; aspect-ratio:4/3; object-fit:cover;
}
.cam-scanline{
  height:2px; background:linear-gradient(90deg,transparent,#0A84FF,transparent);
  position:relative; margin-top:-2px; border-radius:2px;
}
.cam-tip{ font-size:12px; color:var(--text-3,#888); text-align:center; }
@media (max-width:860px){
  .cam-box{ width:100%; }
}

/* ============================================================
   九、v3.40 移动端聊天页排版修复
   1) 聊天窗 flex 溢出：.chat-col 缺 min-height:0，消息内容把输入框顶出视口
      （移动端表现为消息显示不全、输入框不显示，需缩放才能看到）
   2) 移动端改用动态视口高度 dvh：手机浏览器地址栏存在时 100vh 偏大，
      底部（含聊天输入框）会被裁切，dvh 随地址栏动态变化规避此问题
   ============================================================ */
.chat-col{ min-height:0 !important; }
.chat-pane{ min-height:0 !important; }

@supports (height: 100dvh){
  @media (max-width:860px){
    .app{ height:100dvh !important; }
    .main{ height:100dvh !important; }
    .sidebar, .sidebar.glass{ height:100dvh !important; }
    .chat-layout{ height:calc(100dvh - 96px) !important; }
    .zone-viewport{ height:62dvh !important; }
    .zone-canvas{ height:44dvh !important; }
  }
}

/* ============================================================
   十、v3.40 会话列表头像恢复底色
   v3.35 透明化规则把 .conv-ava 背景设为 transparent，v3.38 只恢复
   了 av-ph 占位头像，未覆盖会话列表的无头像文字占位，导致
   未设置头像的会话头像没有底色。此处恢复：文字占位显示渐变底，
   有图片头像时保持透明（图片铺满圆形，视觉一致）。
   ============================================================ */
.conv-ava{ background:linear-gradient(135deg,#0A84FF,#5E5CE6) !important; color:#fff !important; }
.conv-ava:has(.conv-ava-img){ background:transparent !important; }

/* ============================================================
   十一、v3.42 普通流畅模式聊天气泡恢复实色底色
   背景：v3.36 全站透明化把气泡背景设为 transparent，且普通流畅
   模式(data-perf="1")没有 backdrop-filter，气泡完全透明无底色。
   此处为 perf=1 恢复：文本气泡白色底、文件/商品卡实色底、
   自己发送的气泡恢复蓝色渐变。msg-bare（图片/贴纸等自带内容的
   气泡）保持透明不受影响。
   ============================================================ */
body[data-perf="1"][data-theme="light"] .msg-bubble:not(.msg-bare),
body[data-perf="1"][data-theme="light"] .msg-file,
body[data-perf="1"][data-theme="light"] .msg-product,
body[data-perf="1"][data-theme="light"] .msg-products{
  background:#ffffff !important;
  border-color:rgba(0,0,0,.08) !important;
}
body[data-perf="1"][data-theme="dark"] .msg-bubble:not(.msg-bare),
body[data-perf="1"][data-theme="dark"] .msg-file,
body[data-perf="1"][data-theme="dark"] .msg-product,
body[data-perf="1"][data-theme="dark"] .msg-products{
  background:#262a33 !important;
  border-color:rgba(255,255,255,.12) !important;
}
body[data-perf="1"] .msg-row.mine .msg-bubble:not(.msg-bare){
  background:linear-gradient(135deg,#0A84FF,#5E5CE6) !important;
  border-color:transparent !important;
  color:#fff !important;
}

/* ============================================================
   十二、v3.43 头像终极防白底（日间/夜间/任何容器统一圆形透明）
   用户反馈日间模式头像偶现"方形白色底色卡片"。代码各容器
   border-radius 均已 50%，此处再加一层兜底：强制 img.avatar 及
   所有头像容器圆形裁剪、透明背景、去阴影，彻底封堵方形白底。
   文字占位头像（av-ph）仍保留彩色渐变底以区分无头像用户。
   ============================================================ */
img.avatar{
  border-radius:50% !important;
  object-fit:cover !important;
  background:transparent !important;
  box-shadow:none !important;
  border:none !important;
}
.avatar{ border-radius:50% !important; }
.msg-ava, .conv-ava, .member-ava,
.person-chip .avatar, .mtg-parts .avatar, .rpt-ava, .prof-avatar-btn{
  border-radius:50% !important;
  background:transparent !important;
  box-shadow:none !important;
}
/* v3.45 修复：member-avatar 仅图片头像强制透明；
   文字占位头像（div.member-avatar，内联 HSL 底色）保留底色，不再被误伤成空白 */
img.member-avatar{ background:transparent !important; border-radius:50% !important; }
div.member-avatar{ border-radius:50% !important; }
.msg-ava{ overflow:hidden !important; }
.conv-ava{ background:linear-gradient(135deg,#0A84FF,#5E5CE6) !important; }
.conv-ava:has(img), .msg-ava:has(img){ background:transparent !important; }
.avatar.av-ph, .av-ph{ background:linear-gradient(135deg,hsl(var(--avh,210) 72% 56%),hsl(var(--avh,210) 62% 40%)) !important; }


/* ============================================================
   十三、v3.50 区域管理深度重做：清爽浅色实色信息卡
   设计原则：保留全部能力（背景网格 / 网格大小 / 缩放平移 / 拖拽推挤 /
   锁定 / 3D / 货架仓位 / 编辑删除），仅重做卡片视觉与可读性：
   - 浅色卡身（跟随日夜 surface）+ 区域色 --zc 顶部色条与描边，
     深色文字，替代旧版深色渐变白字，融入统一设计系统；
   - 容器查询 cqw 任意尺寸字号自适应，小卡不丢内容；
   - 操作钮改中性小圆钮，悬停显现，不再黑块压字。
   ============================================================ */
.zone-box{
  position:absolute; border-radius:14px; padding:0; cursor:grab;
  overflow:hidden; container-type:inline-size; touch-action:none;
  will-change:transform; user-select:none;
  color:var(--text); display:flex; flex-direction:column;
  background:linear-gradient(165deg,
    color-mix(in srgb,var(--zc,#2563EB) 13%, var(--surface,#fff)),
    color-mix(in srgb,var(--zc,#2563EB) 4%, var(--surface,#fff)));
  border:1px solid color-mix(in srgb,var(--zc,#2563EB) 26%, var(--input-border,rgba(0,0,0,.10)));
  box-shadow:0 4px 14px rgba(15,30,60,.08), 0 1px 2px rgba(15,30,60,.05);
  transition:box-shadow .18s ease, border-color .18s ease, transform .12s ease;
  /* v3.72 移除 v3.56 的 min-width/min-height:170 硬下限：区域卡尺寸完全由 zones 表
     pos/size 百分比（用户调校布局）决定，内部用 cqw 自适应，不再被统一撑成正方形 */
}
.zone-box::before{
  content:''; position:absolute; left:0; right:0; top:0; height:4px; z-index:1;
  background:linear-gradient(90deg,var(--zc,#2563EB),color-mix(in srgb,var(--zc,#2563EB) 55%,#fff));
}
.zone-box:hover{
  transform:translateY(-1px);
  border-color:color-mix(in srgb,var(--zc,#2563EB) 52%, var(--input-border,rgba(0,0,0,.10)));
  box-shadow:0 10px 26px color-mix(in srgb,var(--zc,#2563EB) 20%, transparent), 0 2px 6px rgba(15,30,60,.06);
}
.zone-box .zb-inner{
  position:relative; z-index:2; display:flex; flex-direction:column;
  gap:1.6cqw; padding:4.6cqw 3.4cqw 3.4cqw; flex:1; min-height:0;
}
.zb-head{ display:flex; align-items:center; gap:1.6cqw; flex-wrap:wrap; min-width:0; }
.zb-name{
  font-weight:800; letter-spacing:.1px; font-size:6.2cqw; line-height:1.15;
  color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%;
}
.zb-type{
  font-size:3.1cqw; font-weight:700; padding:.6cqw 2cqw; border-radius:20px; flex-shrink:0;
  background:color-mix(in srgb,var(--zc,#2563EB) 16%, transparent); color:var(--zc,#2563EB);
}
.zb-lock-ico{ font-size:3.3cqw; }
.zb-sub{ font-size:3.4cqw; color:var(--text-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.zb-pc{ color:var(--zc,#2563EB); font-weight:700; }
.zb-shelf{ display:grid; gap:1.6cqw; margin:.8cqw 0; }
.zb-shelf .zl{
  aspect-ratio:1.25; border-radius:1.6cqw;
  background:color-mix(in srgb,var(--zc,#2563EB) 10%, var(--input-bg,#f3f5f9));
  border:1px solid color-mix(in srgb,var(--zc,#2563EB) 22%, transparent);
}
.zone-box:hover .zb-shelf .zl{ background:color-mix(in srgb,var(--zc,#2563EB) 17%, var(--input-bg,#f3f5f9)); }
.mslot{
  position:relative; overflow:hidden; border-radius:1.6cqw; min-height:4.4cqw;
  display:flex; align-items:flex-end; justify-content:center;
  background:color-mix(in srgb,var(--zc,#2563EB) 10%, var(--input-bg,#f3f5f9));
  border:1px solid color-mix(in srgb,var(--zc,#2563EB) 22%, transparent);
}
.ms-water{
  position:absolute; left:0; right:0; bottom:0;
  background:linear-gradient(180deg,color-mix(in srgb,var(--zc,#2563EB) 72%,#fff),var(--zc,#2563EB));
  transition:height .3s ease;
}
.ms-pct{ position:relative; font-size:2.6cqw; font-weight:800; color:var(--text); }
.ms-lock{ background:color-mix(in srgb,var(--danger,#FF453A) 14%, transparent); border-color:color-mix(in srgb,var(--danger,#FF453A) 32%, transparent); }
.ms-lock .ms-pct{ color:var(--danger,#FF453A); }
.zb-level{ font-size:3cqw; color:var(--text-2); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.zb-cap{ margin-top:auto; flex-shrink:0; } /* v3.56 容量栏不收缩，始终可见 */
.zb-bar{ height:6px; border-radius:6px; background:var(--track,rgba(0,0,0,.08)); overflow:hidden; margin-bottom:.9cqw; }
.zb-bar i{ display:block; height:100%; border-radius:6px;
  background:linear-gradient(90deg,var(--zc,#2563EB),color-mix(in srgb,var(--zc,#2563EB) 60%,#fff)); transition:width .3s ease; }
.zb-cap-txt{ font-size:3cqw; font-weight:600; color:var(--text-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.zb-acts{ position:absolute; top:2cqw; right:2cqw; display:flex; gap:1.2cqw; z-index:4; }
.zb-act{
  width:5.6cqw; height:5.6cqw; min-width:22px; min-height:22px; border-radius:50%;
  background:var(--surface,#fff); border:1px solid var(--input-border,rgba(0,0,0,.1));
  color:var(--text-2); cursor:pointer; font-size:3.4cqw; display:grid; place-items:center;
  transition:.14s; box-shadow:0 2px 6px rgba(0,0,0,.08);
}
.zb-act:hover{ background:var(--zc,#2563EB); color:#fff; border-color:var(--zc,#2563EB); transform:scale(1.08); }
.zb-del{
  position:absolute; top:2cqw; left:2cqw; width:5.6cqw; height:5.6cqw; min-width:22px; min-height:22px;
  border-radius:50%; background:var(--surface,#fff); border:1px solid var(--input-border,rgba(0,0,0,.1));
  color:var(--danger,#FF453A); cursor:pointer; font-size:3.3cqw; z-index:4; opacity:0;
  transition:.18s; display:grid; place-items:center; box-shadow:0 2px 6px rgba(0,0,0,.08);
}
.zone-box:hover .zb-del, .zone-box.dragging .zb-del{ opacity:1; }
.zb-del:hover{ background:var(--danger,#FF453A); color:#fff; }
.zone-edge{ position:absolute; z-index:21; background:rgba(10,132,255,.08); transition:background .12s; } /* v3.60 四边缩放手柄：中点居中拉手，悬停加深 */
.zone-edge[data-side="n"]{ top:0; left:6%; right:6%; height:16px; cursor:ns-resize; }
.zone-edge[data-side="s"]{ bottom:0; left:6%; right:6%; height:16px; cursor:ns-resize; }
.zone-edge[data-side="w"]{ left:0; top:6%; bottom:6%; width:16px; cursor:ew-resize; }
.zone-edge[data-side="e"]{ right:0; top:6%; bottom:6%; width:16px; cursor:ew-resize; }
.zone-edge::after{ content:''; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); background:rgba(10,132,255,.7); border-radius:3px; pointer-events:none; }
.zone-edge[data-side="n"]::after,.zone-edge[data-side="s"]::after{ width:44px; height:6px; }
.zone-edge[data-side="w"]::after,.zone-edge[data-side="e"]::after{ width:6px; height:44px; }
.zone-edge:hover{ background:color-mix(in srgb,var(--zc,#0A84FF) 42%, transparent); }
.zone-edge:hover::after{ background:var(--zc,#0A84FF); }
.zone-box.is-locked{ cursor:default; }
.zone-box.is-locked::after{
  content:''; position:absolute; inset:0; border-radius:inherit; z-index:3; pointer-events:none;
  border:2px dashed color-mix(in srgb,var(--zc,#2563EB) 45%, transparent);
}
.zone-box.is-full .zb-bar i{ background:linear-gradient(90deg,var(--warning,#FF9F0A),#FFD60A); }
.zone-box.dragging{ box-shadow:0 18px 40px rgba(15,30,60,.20), 0 0 0 2px var(--zc,#2563EB); }
.zone-box.bump{ animation:zbump .3s ease; }
.zone-world.mode-3d .zone-box{
  transform-style:preserve-3d;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--zc,#2563EB) 30%, transparent), 0 18px 40px rgba(15,30,60,.16);
}


/* ============================================================
   十五、v3.50 统一设计系统（大版本重做，替代 v3.45 十四节配色）
   核心思想：三层 token 分离，根治「主题乱套」
   ① 品牌色 --brand/--brand-2/--brand-soft：只用于主按钮 / 品牌 Logo /
      激活导航 / 选中 / 焦点 / 关键开关，克制使用，绝不全局泛滥；
   ② 语义色 --success/--warning/--danger/--info：全主题固定统一，
      状态标签 / 徽章不再随主题主色变色，避免橙底绿标签打架；
   ③ 中性色 --surface/--surface-2/--line/三级文字：卡片恒为纯白/深灰，
      主题只换品牌色与极淡页面氛围，不再大面积饱和渐变铺底。
   ============================================================ */

/* ---------- 1) 语义色 + 中性表面（日夜两套，不随主题换） ---------- */
body[data-theme="light"]{
  --success:#16a34a; --success-soft:rgba(22,163,74,.12);
  --warning:#d97706; --warning-soft:rgba(217,119,6,.13);
  --danger:#dc2626;  --danger-soft:rgba(220,38,38,.11);
  --info:#2563eb;    --info-soft:rgba(37,99,235,.11);
  --surface:#ffffff; --surface-2:#f5f7fb; --line:rgba(16,24,40,.09);
}
body[data-theme="dark"]{
  --success:#34d399; --success-soft:rgba(52,211,153,.15);
  --warning:#fbbf24; --warning-soft:rgba(251,191,36,.15);
  --danger:#f87171;  --danger-soft:rgba(248,113,113,.15);
  --info:#60a5fa;    --info-soft:rgba(96,165,250,.16);
  --surface:#16181d; --surface-2:#1f232b; --line:rgba(255,255,255,.09);
}

/* ---------- 2) 品牌色板（仅普通流畅模式按主题；液态玻璃保持经典蓝） ---------- */
/* 日间 */
body[data-perf="1"][data-theme="light"][data-bg="aurora"]{ --brand:#2563eb; --brand-2:#4f46e5; --brand-soft:rgba(37,99,235,.12);  --brand-line:rgba(37,99,235,.30); }
body[data-perf="1"][data-theme="light"][data-bg="ocean"] { --brand:#0284c7; --brand-2:#0891b2; --brand-soft:rgba(2,132,199,.12);  --brand-line:rgba(2,132,199,.30); }
body[data-perf="1"][data-theme="light"][data-bg="sunset"]{ --brand:#ea580c; --brand-2:#e11d48; --brand-soft:rgba(234,88,12,.12);  --brand-line:rgba(234,88,12,.30); }
body[data-perf="1"][data-theme="light"][data-bg="forest"]{ --brand:#059669; --brand-2:#0d9488; --brand-soft:rgba(5,150,105,.12);  --brand-line:rgba(5,150,105,.30); }
body[data-perf="1"][data-theme="light"][data-bg="grape"] { --brand:#7c3aed; --brand-2:#9333ea; --brand-soft:rgba(124,58,237,.12); --brand-line:rgba(124,58,237,.30); }
body[data-perf="1"][data-theme="light"][data-bg="gold"]  { --brand:#d97706; --brand-2:#ca8a04; --brand-soft:rgba(217,119,6,.13);  --brand-line:rgba(217,119,6,.32); }
body[data-perf="1"][data-theme="light"][data-bg="mono"]  { --brand:#475569; --brand-2:#64748b; --brand-soft:rgba(71,85,105,.12);  --brand-line:rgba(71,85,105,.30); }
/* 夜间（提亮一档保证对比） */
body[data-perf="1"][data-theme="dark"][data-bg="aurora"] { --brand:#60a5fa; --brand-2:#818cf8; --brand-soft:rgba(96,165,250,.17); --brand-line:rgba(96,165,250,.34); }
body[data-perf="1"][data-theme="dark"][data-bg="ocean"]  { --brand:#38bdf8; --brand-2:#22d3ee; --brand-soft:rgba(56,189,248,.17); --brand-line:rgba(56,189,248,.34); }
body[data-perf="1"][data-theme="dark"][data-bg="sunset"] { --brand:#fb923c; --brand-2:#fb7185; --brand-soft:rgba(251,146,60,.17); --brand-line:rgba(251,146,60,.34); }
body[data-perf="1"][data-theme="dark"][data-bg="forest"] { --brand:#34d399; --brand-2:#2dd4bf; --brand-soft:rgba(52,211,153,.17); --brand-line:rgba(52,211,153,.34); }
body[data-perf="1"][data-theme="dark"][data-bg="grape"]  { --brand:#a78bfa; --brand-2:#c084fc; --brand-soft:rgba(167,139,250,.18);--brand-line:rgba(167,139,250,.36); }
body[data-perf="1"][data-theme="dark"][data-bg="gold"]   { --brand:#fbbf24; --brand-2:#facc15; --brand-soft:rgba(251,191,36,.17); --brand-line:rgba(251,191,36,.34); }
body[data-perf="1"][data-theme="dark"][data-bg="mono"]   { --brand:#94a3b8; --brand-2:#cbd5e1; --brand-soft:rgba(148,163,184,.16);--brand-line:rgba(148,163,184,.32); }
/* 液态玻璃模式：统一经典蓝品牌色，不跟随主题 */
body[data-perf="0"]{ --brand:#0A84FF; --brand-2:#5E5CE6; --brand-soft:rgba(10,132,255,.16); --brand-line:rgba(10,132,255,.34); }

/* ---------- 3) 普通流畅：实色表面 + 极淡主题氛围背景（不再饱和铺底） ---------- */
body[data-perf="1"][data-theme="light"]{
  --glass-bg:linear-gradient(180deg,#ffffff,#ffffff);
  --glass-border:var(--line); --glass-edge:none;
  --glass-shadow:0 2px 14px rgba(20,40,80,.06);
  --input-bg:#f4f6fa; --input-border:rgba(16,24,40,.10);
  --hover:rgba(16,24,40,.045); --divider:rgba(16,24,40,.06); --track:rgba(16,24,40,.07);
  background-attachment:fixed;
}
body[data-perf="1"][data-theme="dark"]{
  --glass-bg:linear-gradient(180deg,#16181d,#16181d);
  --glass-border:var(--line); --glass-edge:none;
  --glass-shadow:0 2px 14px rgba(0,0,0,.35);
  --input-bg:#23262d; --input-border:rgba(255,255,255,.10);
  --hover:rgba(255,255,255,.055); --divider:rgba(255,255,255,.07); --track:rgba(255,255,255,.10);
  background-attachment:fixed;
}
/* 极淡氛围底（替换旧版高饱和渐变，几乎中性、只留一丝主题色调） */
body[data-perf="1"][data-theme="light"][data-bg="aurora"]{ background-image:linear-gradient(170deg,#f3f6ff 0%,#f6f4fe 45%,#fbfcfe 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="ocean"] { background-image:linear-gradient(170deg,#f1f8fd 0%,#f2f7fc 45%,#fbfdfe 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="sunset"]{ background-image:linear-gradient(170deg,#fdf4ef 0%,#fdf2f5 45%,#fefefe 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="forest"]{ background-image:linear-gradient(170deg,#f0f9f5 0%,#f3f9f4 45%,#fcfefc 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="grape"] { background-image:linear-gradient(170deg,#f7f2fe 0%,#fcf2f8 45%,#fefcfe 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="gold"]  { background-image:linear-gradient(170deg,#fdf7ec 0%,#fdf5ee 45%,#fefdfb 100%) !important; }
body[data-perf="1"][data-theme="light"][data-bg="mono"]  { background-image:linear-gradient(170deg,#f4f6f9 0%,#f3f5f8 45%,#fafbfc 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="aurora"] { background-image:linear-gradient(170deg,#0d1326 0%,#121024 55%,#0b0d14 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="ocean"]  { background-image:linear-gradient(170deg,#0a1622 0%,#0a1420 55%,#0b0e14 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="sunset"] { background-image:linear-gradient(170deg,#1e1216 0%,#1c1020 55%,#100c14 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="forest"] { background-image:linear-gradient(170deg,#0a1a13 0%,#0b1a12 55%,#0a100d 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="grape"]  { background-image:linear-gradient(170deg,#180f26 0%,#1d0f24 55%,#0f0b14 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="gold"]   { background-image:linear-gradient(170deg,#1c1508 0%,#1d160a 55%,#100e0a 100%) !important; }
body[data-perf="1"][data-theme="dark"][data-bg="mono"]   { background-image:linear-gradient(170deg,#14161a 0%,#13151a 55%,#0c0d10 100%) !important; }

/* ---------- 4) 普通流畅：彻底去玻璃 / 模糊 / 光球 / 鼠标光影 ---------- */
body[data-perf="1"] *,
body[data-perf="1"] *::before,
body[data-perf="1"] *::after{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
body[data-perf="1"][data-glass="off"] *,
body[data-perf="1"][data-glass="off"] *::before,
body[data-perf="1"][data-glass="off"] *::after{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
body[data-perf="1"][data-glass="off"]:not(#__z) .gl-box.glass,
body[data-perf="1"][data-glass="off"]:not(#__z) .modal.glass,
body[data-perf="1"][data-glass="off"]:not(#__z) .pop-sheet.glass,
body[data-perf="1"][data-glass="off"]:not(#__z) .urgent-box.glass,
body[data-perf="1"][data-glass="off"]:not(#__z) .emoji-panel.glass,
body[data-perf="1"][data-glass="off"]:not(#__z) .user-menu.glass,
body[data-perf="1"][data-glass="off"]:not(#__z) #globalLoading .gl-box.glass,
body[data-perf="1"][data-glass="off"]:not(#__z) .toast,
body[data-perf="1"][data-glass="off"]:not(#__z) .modal-mask,
body[data-perf="1"][data-glass="off"]:not(#__z) .img-viewer,
body[data-perf="1"][data-glass="off"]:not(#__z) .showcase-layer{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
body[data-perf="1"] .bg-orbs, body[data-perf="1"] .o1, body[data-perf="1"] .o2, body[data-perf="1"] .o3,
body[data-perf="1"] .cursor-light, body[data-perf="1"] .lg-spec, body[data-perf="1"] .fill-wave,
body[data-perf="1"] .sc-stage{ display:none !important; }
body[data-perf="1"] *, body[data-perf="1"] *::before, body[data-perf="1"] *::after{
  animation-duration:.001s !important; animation-iteration-count:1 !important;
}

/* ---------- 5) 品牌色「克制」应用：只染该染的组件 ---------- */
/* 主按钮 / 品牌 Logo：品牌渐变 */
body[data-perf="1"] .btn-primary,
body[data-perf="0"] .btn-primary{
  background:linear-gradient(135deg,var(--brand,#0A84FF),var(--brand-2,#5E5CE6)) !important;
  box-shadow:0 6px 16px color-mix(in srgb,var(--brand,#0A84FF) 28%, transparent) !important;
  border:1px solid transparent;
}
body[data-perf="1"] .btn-primary:hover,
body[data-perf="0"] .btn-primary:hover{ filter:brightness(1.06); }
.brand-logo{
  background:linear-gradient(135deg,var(--brand,#0A84FF),var(--brand-2,#5E5CE6)) !important;
  box-shadow:0 4px 12px color-mix(in srgb,var(--brand,#0A84FF) 26%, transparent) !important;
}
/* 侧栏导航：未激活一律中性灰，只有激活项用品牌淡底 + 品牌字（根治整列染色） */
.nav-item{ color:var(--text-2) !important; }
.nav-item .ni-ico{ color:inherit; opacity:.9; }
.nav-item:hover{ background:var(--hover); color:var(--text) !important; }
.nav-item.active{ background:var(--brand-soft,var(--active)) !important; color:var(--brand,#0A84FF) !important; font-weight:600; }
.nav-item.active .ni-ico{ color:var(--brand,#0A84FF); opacity:1; }
body[data-theme="dark"] .nav-item.active{ color:var(--brand,#4da3ff) !important; }
/* 分段选择 / 标签页 / 开关选中 */
.perf-seg button.on, .seg button.on{ background:var(--brand-soft,var(--active)) !important; color:var(--brand,#0A84FF) !important; }
.tab.active{ color:var(--brand,#0A84FF) !important; border-color:var(--brand,#0A84FF) !important; }
/* 输入聚焦：品牌细边 + 柔光环 */
body[data-perf="1"] input:focus, body[data-perf="1"] select:focus, body[data-perf="1"] textarea:focus,
input:focus, select:focus, textarea:focus{ outline:none; border-color:var(--brand-line,#0A84FF); box-shadow:0 0 0 3px var(--brand-soft,rgba(10,132,255,.12)); }
/* 分页 / 页码激活、单选选中指示等（如有 .active 主色点） */
.pager button.on, .page-btn.active{ background:var(--brand,#0A84FF) !important; color:#fff !important; border-color:var(--brand,#0A84FF) !important; }
/* 链接：不再全局 !important 强染，正文链接用品牌色但允许组件覆盖 */
body[data-perf="1"] a.link, body[data-perf="1"] .text-brand{ color:var(--brand,#0A84FF); }
/* 品牌名保持中性标题色，不随主色变色 */
.brand-name{ color:var(--text) !important; }

/* ---------- 6) 撤销 v3.45 过度染色：表头 / 统计图标回归语义 ---------- */
.table-wrap thead th, table thead th{
  color:var(--text-2) !important; background:var(--hover) !important;
}
/* 统计卡图标：保留各自内联语义色（商品蓝/到货橙/今日绿/区域紫/待办靛），不统一染主色；
   显式盖掉历史「去白底」大列表里的 .stat-ico{background:transparent}，但不覆盖内联 style 语义底色 */
.stat-ico:not([style]){ background:var(--info-soft); }

/* ---------- 7) 语义状态标签：全主题统一，不跟主色冲突 ---------- */
.tag-pending, .tags.tag-pending{ background:var(--warning-soft) !important; color:var(--warning) !important; }
.tag-confirmed, .tags.tag-confirmed{ background:var(--success-soft) !important; color:var(--success) !important; }
.tag-cancelled, .tags.tag-cancelled{ background:var(--danger-soft) !important; color:var(--danger) !important; }
.tag-info, .tags.tag-info{ background:var(--info-soft) !important; color:var(--info) !important; }

/* ---------- 8) 排版与表面统一（圆角/布局保持不变，仅统一质感层级） ---------- */
body[data-perf="1"] .card.glass, body[data-perf="1"] .glass.card,
body[data-perf="1"] .stat-card, body[data-perf="1"] .member-card,
body[data-perf="1"] .task-item, body[data-perf="1"] .mtg-card,
body[data-perf="1"] .item-card, body[data-perf="1"] .set-card{
  background:var(--surface) !important; border:1px solid var(--line);
  box-shadow:0 2px 14px rgba(20,40,80,.05);
}
body[data-perf="1"][data-theme="dark"] .card.glass, body[data-perf="1"][data-theme="dark"] .glass.card,
body[data-perf="1"][data-theme="dark"] .stat-card, body[data-perf="1"][data-theme="dark"] .member-card,
body[data-perf="1"][data-theme="dark"] .task-item, body[data-perf="1"][data-theme="dark"] .mtg-card,
body[data-perf="1"][data-theme="dark"] .item-card, body[data-perf="1"][data-theme="dark"] .set-card{
  background:var(--surface) !important; border:1px solid var(--line);
  box-shadow:0 2px 14px rgba(0,0,0,.30);
}
body[data-perf="1"] .sidebar, body[data-perf="1"] .topbar{ background:var(--surface); }
body[data-perf="1"] .btn-ghost{ background:var(--surface-2); border:1px solid var(--line); color:var(--text); }
body[data-perf="1"] .btn-ghost:hover{ background:var(--hover); border-color:var(--brand-line); color:var(--brand); }
body[data-perf="1"] .icon-btn:hover{ background:var(--brand-soft); color:var(--brand); }

/* ============================================================
   十六、v3.50 首页（仪表盘）公告条
   ============================================================ */
.ann-list{ display:flex; flex-direction:column; gap:10px; margin:0 0 16px; }
.ann-bar{
  position:relative; display:flex; gap:12px; align-items:flex-start;
  padding:13px 46px 13px 16px; border-radius:14px; overflow:hidden;
  background:var(--surface,#fff); border:1px solid var(--line,rgba(0,0,0,.08));
  box-shadow:0 2px 12px rgba(20,40,80,.06);
  animation:annIn .28s ease;
}
@keyframes annIn{ from{ opacity:0; transform:translateY(-6px);} to{ opacity:1; transform:none; } }
.ann-bar::before{ content:''; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--info,#2563eb); }
.ann-bar.is-important::before{ background:var(--danger,#dc2626); }
.ann-bar.is-warning::before{ background:var(--warning,#d97706); }
.ann-ico{ flex-shrink:0; width:34px; height:34px; border-radius:10px; display:grid; place-items:center; font-size:17px;
  background:var(--info-soft); color:var(--info,#2563eb); }
.ann-bar.is-important .ann-ico{ background:var(--danger-soft); color:var(--danger,#dc2626); }
.ann-bar.is-warning .ann-ico{ background:var(--warning-soft); color:var(--warning,#d97706); }
.ann-body{ flex:1; min-width:0; }
.ann-title{ font-size:14.5px; font-weight:700; color:var(--text); margin:0 0 2px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ann-tag{ font-size:11px; font-weight:700; padding:1px 8px; border-radius:20px; background:var(--info-soft); color:var(--info); }
.ann-bar.is-important .ann-tag{ background:var(--danger-soft); color:var(--danger); }
.ann-bar.is-warning .ann-tag{ background:var(--warning-soft); color:var(--warning); }
.ann-text{ font-size:13.5px; line-height:1.6; color:var(--text-2); margin:0; white-space:pre-wrap; word-break:break-word; }
.ann-meta{ font-size:11.5px; color:var(--text-3); margin-top:4px; }
.ann-ops{ position:absolute; top:8px; right:8px; display:flex; gap:6px; }
.ann-ops button{ width:28px; height:28px; border-radius:8px; border:1px solid var(--line); background:var(--surface); color:var(--text-2); cursor:pointer; font-size:13px; display:grid; place-items:center; transition:.14s; }
.ann-ops button:hover{ background:var(--hover); color:var(--text); }
.ann-new-btn{ display:inline-flex; align-items:center; gap:6px; }
@media (max-width:860px){
  .ann-bar{ padding:11px 40px 11px 13px; }
  .ann-ico{ width:30px; height:30px; font-size:15px; }
}

/* ============================================================
   十七、v3.50 普通流畅 · 实色表面恢复层（核心修复）
   ------------------------------------------------------------
   病根：v336「液态玻璃全面透明化」给 20+ 组元素加了
   background:transparent !important，且未加模式前缀，导致普通
   流畅模式下主按钮、气泡、标签、表头、统计图标、头像占位等全部
   失去底色（即用户反复反馈的「没底色 / 空白 / 乱套」）。
   策略：本节统一用 body[data-perf="1"] 前缀（特异性 +0,1,1，
   稳超 v336 裸类 0,1,0）+ !important 恢复为设计 token 实色；
   液态玻璃模式(perf=0)下本节整组不匹配，玻璃效果完全不受影响。
   注意层叠顺序：通用表面在前，语义主按钮(.btn-primary 等)置于
   本节末尾——二者特异性相同时，后者胜出，保证主按钮渐变不被
   .btn/.btn-sm 的浅底覆盖。日/夜配色由十五节 token 自动切换。
   ============================================================ */

/* 1) 次级 / 幽灵 / 图标 / 顶栏玻璃钮：浅实色底，不再透明，也不是纯白方块 */
body[data-perf="1"] .btn,
body[data-perf="1"] .btn-ghost,
body[data-perf="1"] .btn-sm,
body[data-perf="1"] .icon-btn,
body[data-perf="1"] .icon-zoom,
body[data-perf="1"] .glass-btn,
body[data-perf="1"] .user-chip,
body[data-perf="1"] .notif-bell,
body[data-perf="1"] .theme-toggle,
body[data-perf="1"] .side-collapse,
body[data-perf="1"] .modal-x,
body[data-perf="1"] .chat-tool,
body[data-perf="1"] .zoom-ctl button{
  background:var(--surface-2) !important;
  border:1px solid var(--line) !important;
  box-shadow:none !important; color:var(--text) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .btn:hover,
body[data-perf="1"] .btn-ghost:hover,
body[data-perf="1"] .btn-sm:hover,
body[data-perf="1"] .icon-btn:hover,
body[data-perf="1"] .icon-zoom:hover,
body[data-perf="1"] .user-chip:hover,
body[data-perf="1"] .notif-bell:hover,
body[data-perf="1"] .theme-toggle:hover{
  background:var(--hover) !important;
  border-color:color-mix(in srgb,var(--brand) 35%,var(--line)) !important;
  color:var(--brand) !important;
}

/* 2) 输入类：实色表面（覆盖 v336 大列表里的 .cell-edit/.paste-able/.af-date 等类） */
body[data-perf="1"] input,
body[data-perf="1"] select,
body[data-perf="1"] textarea,
body[data-perf="1"] [contenteditable="true"],
body[data-perf="1"] .cell-edit,
body[data-perf="1"] .paste-able,
body[data-perf="1"] .af-date,
body[data-perf="1"] .af-kw,
body[data-perf="1"] .search-box input,
body[data-perf="1"] .member-status-sel,
body[data-perf="1"] .tbl-group-sel,
body[data-perf="1"] .pct-range,
body[data-perf="1"] .rpt-input textarea{
  background:var(--surface) !important;
  border:1px solid var(--line) !important;
  box-shadow:none !important; color:var(--text) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] input:focus,
body[data-perf="1"] select:focus,
body[data-perf="1"] textarea:focus,
body[data-perf="1"] [contenteditable="true"]:focus,
body[data-perf="1"] .cell-edit:focus{
  border-color:var(--brand) !important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 16%,transparent) !important;
}

/* 3) 统计图标：去玻璃描边方框；内联语义底色由 app.js 以 inline important 提供 */
body[data-perf="1"] .stat-ico{
  border-color:transparent !important; box-shadow:none !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}

/* 4) 状态标签：先清玻璃描边，再赋语义软底（同特异性后者胜） */
body[data-perf="1"] .tags,
body[data-perf="1"] .tag-pending,
body[data-perf="1"] .tag-confirmed,
body[data-perf="1"] .tag-cancelled,
body[data-perf="1"] .tag-admin,
body[data-perf="1"] .tag-user,
body[data-perf="1"] .tag-high,
body[data-perf="1"] .tag-med,
body[data-perf="1"] .tag-low{
  box-shadow:none !important; border-color:transparent !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .tag-pending,
body[data-perf="1"] .tags.tag-pending,
body[data-perf="1"] .tag-med{ background:var(--warning-soft) !important; color:var(--warning) !important; }
body[data-perf="1"] .tag-confirmed{ background:var(--success-soft) !important; color:var(--success) !important; }
body[data-perf="1"] .tag-cancelled,
body[data-perf="1"] .tag-high{ background:var(--danger-soft) !important; color:var(--danger) !important; }
body[data-perf="1"] .tag-admin,
body[data-perf="1"] .tag-low{ background:var(--info-soft) !important; color:var(--info) !important; }
body[data-perf="1"] .tag-user{ background:var(--surface-2) !important; color:var(--text-2) !important; }
/* 计数徽章：品牌实底白字 */
body[data-perf="1"] .grp-cnt{
  background:var(--brand) !important; color:#fff !important;
  border:none !important; box-shadow:none !important;
}
/* 小选项 chip：浅实色底，选中品牌软底 */
body[data-perf="1"] .pp-opt,
body[data-perf="1"] .cal-chip,
body[data-perf="1"] .tpt,
body[data-perf="1"] .task-receipt-mini,
body[data-perf="1"] .task-rpt-cnt,
body[data-perf="1"] .task-assign.mine{
  background:var(--surface-2) !important; border:1px solid var(--line) !important;
  box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .pp-opt.on,
body[data-perf="1"] .cal-chip.on{
  background:var(--brand-soft) !important; color:var(--brand) !important;
  border-color:color-mix(in srgb,var(--brand) 30%,transparent) !important;
}

/* 5) 表格：表头浅灰、行悬停、选中行品牌软底 */
body[data-perf="1"] .table-wrap thead th,
body[data-perf="1"] table thead th{
  background:var(--hover) !important; color:var(--text-2) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] tbody tr:hover,
body[data-perf="1"] #tblView td[data-rid]:hover{
  background:var(--hover) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] tbody tr:hover td{ color:var(--text) !important; }
body[data-perf="1"] tr.row-sel td{ background:var(--brand-soft) !important; box-shadow:none !important; }
body[data-perf="1"] .grp-row td{
  background:var(--surface-2) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}

/* 6) 聊天表面（重点：修复普通流畅气泡无底色） */
body[data-perf="1"] .conv-col{
  background:var(--surface) !important; border-right:1px solid var(--line) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .conv-head{
  background:var(--surface) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .chat-compose,
body[data-perf="1"] .chat-input-bar{
  background:var(--surface) !important; border-top:1px solid var(--line) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .chat-layout{ background:transparent !important; }
body[data-perf="1"] .conv-item:hover{ background:var(--hover) !important; box-shadow:none !important; }
body[data-perf="1"] .conv-item.active{
  background:linear-gradient(90deg,var(--brand-soft),transparent) !important;
  box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .msg-bubble,
body[data-perf="1"] .msg-file,
body[data-perf="1"] .msg-product,
body[data-perf="1"] .msg-products{
  background:var(--surface-2) !important; border:1px solid var(--line) !important;
  box-shadow:0 1px 2px rgba(0,0,0,.05) !important; color:var(--text) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .msg-row.mine .msg-bubble{
  background:linear-gradient(135deg,var(--brand),var(--brand-2)) !important;
  color:#fff !important; border-color:transparent !important;
  box-shadow:0 4px 14px color-mix(in srgb,var(--brand) 26%,transparent) !important;
}
body[data-perf="1"] .mp-noimg,
body[data-perf="1"] .p-noimg,
body[data-perf="1"] .p-thumb,
body[data-perf="1"] .ar-prod-img,
body[data-perf="1"] .p-thumb-lg{
  background:var(--surface-2) !important; border:1px solid var(--line) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}

/* 7) 日历 / 日程 / 汇报 / 成员 / 权限等零散卡片实色化 */
body[data-perf="1"] .cal-cell,
body[data-perf="1"] .sch-item,
body[data-perf="1"] .rpt-body,
body[data-perf="1"] .perm-box,
body[data-perf="1"] .notif-modal-list .notif-item,
body[data-perf="1"] .slot-wrap,
body[data-perf="1"] .slot-chip,
body[data-perf="1"] .file-chip,
body[data-perf="1"] .mpu,
body[data-perf="1"] .um-item,
body[data-perf="1"] .mtg-more,
body[data-perf="1"] .prof-avatar-btn,
body[data-perf="1"] .cp-item{
  background:var(--surface) !important; border:1px solid var(--line) !important;
  box-shadow:none !important; color:var(--text) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .slot-chip.active{
  background:linear-gradient(135deg,var(--brand),var(--brand-2)) !important;
  color:#fff !important; border-color:transparent !important;
}
body[data-perf="1"] .slot-chip.sel{
  background:linear-gradient(135deg,#ef4444,#f59e0b) !important;
  color:#fff !important; border-color:transparent !important;
}
body[data-perf="1"] .cal-today .cal-num{
  background:var(--brand-soft) !important; color:var(--brand) !important; box-shadow:none !important;
}
body[data-perf="1"] .cal-cell:hover,
body[data-perf="1"] .mpu:hover,
body[data-perf="1"] .um-item:hover,
body[data-perf="1"] .mtg-more:hover,
body[data-perf="1"] .cp-item:hover{
  border-color:color-mix(in srgb,var(--brand) 35%,var(--line)) !important;
}
body[data-perf="1"] .mpu:has(input:checked),
body[data-perf="1"] .notif-modal-list .notif-item.unread{
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand) 40%,transparent) !important;
}

/* 8) Toast：实色胶囊（默认深、ok 绿、err 红，白字） */
body[data-perf="1"] .toast{
  background:linear-gradient(135deg,#2b2d33,#17181c) !important; color:#fff !important;
  border:1px solid rgba(255,255,255,.08) !important; box-shadow:0 12px 40px rgba(0,0,0,.28) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .toast.ok{ background:linear-gradient(135deg,#22c55e,#16a34a) !important; color:#fff !important; }
body[data-perf="1"] .toast.err{ background:linear-gradient(135deg,#f43f5e,#dc2626) !important; color:#fff !important; }

/* 9) 弹窗内输入与小卡实色 */
body[data-perf="1"] .modal input,
body[data-perf="1"] .pop-sheet input,
body[data-perf="1"] .modal select,
body[data-perf="1"] .pop-sheet select,
body[data-perf="1"] .modal textarea,
body[data-perf="1"] .pop-sheet textarea,
body[data-perf="1"] .modal [contenteditable="true"],
body[data-perf="1"] .pop-sheet [contenteditable="true"]{
  background:var(--surface) !important; border:1px solid var(--line) !important;
  box-shadow:none !important; color:var(--text) !important;
}
body[data-perf="1"] .modal .item-card,
body[data-perf="1"] .pop-sheet .item-card,
body[data-perf="1"] .modal .ar-prod-ph,
body[data-perf="1"] .pop-sheet .ar-prod-ph,
body[data-perf="1"] .modal .perm-box,
body[data-perf="1"] .pop-sheet .perm-box,
body[data-perf="1"] .modal .slot-wrap,
body[data-perf="1"] .pop-sheet .slot-wrap,
body[data-perf="1"] .modal .cal-cell,
body[data-perf="1"] .pop-sheet .cal-cell,
body[data-perf="1"] .modal .notif-item,
body[data-perf="1"] .pop-sheet .notif-item{
  background:var(--surface-2) !important; border:1px solid var(--line) !important;
  box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}

/* 10) 头像占位：彩色首字圆（高特异性盖掉 v336 透明）；上传槽中性浅底 */
body[data-perf="1"] .avatar.av-ph,
body[data-perf="1"] .av-ph,
body[data-perf="1"] .av-chip{
  background:linear-gradient(135deg,hsl(var(--avh,210) 72% 56%),hsl(var(--avh,210) 62% 42%)) !important;
  color:#fff !important; border:none !important; box-shadow:none !important;
}
body[data-perf="1"] .upload-slot,
body[data-perf="1"] .thumb{
  background:var(--surface-2) !important; border:1px dashed var(--line) !important;
  box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .hwater{ background:transparent !important; }

/* 11) 导航悬停实色反馈（激活态在十五节，这里补 hover 与去模糊） */
body[data-perf="1"] .nav-item:hover{
  background:var(--hover) !important; color:var(--text) !important; box-shadow:none !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}
body[data-perf="1"] .nav-item.active{
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
}

/* 12) 语义主按钮（置于本节末尾：同特异性下后出现者胜，确保渐变压过 .btn/.btn-sm 浅底） */
body[data-perf="1"] .btn-primary{
  background:linear-gradient(135deg,var(--brand),var(--brand-2)) !important;
  color:#fff !important; border:1px solid transparent !important;
  box-shadow:0 4px 14px color-mix(in srgb,var(--brand) 26%,transparent) !important;
}
body[data-perf="1"] .btn-danger{
  background:linear-gradient(135deg,#ef4444,#dc2626) !important; color:#fff !important;
  border-color:transparent !important; box-shadow:0 4px 14px rgba(220,38,38,.22) !important;
}
body[data-perf="1"] .btn-success{
  background:linear-gradient(135deg,#16a34a,#15803d) !important; color:#fff !important;
  border-color:transparent !important; box-shadow:0 4px 14px rgba(22,163,74,.22) !important;
}
body[data-perf="1"] .btn-primary:hover{ filter:brightness(1.06); }
body[data-perf="1"] .btn-danger:hover{ filter:brightness(1.06); }
body[data-perf="1"] .btn-success:hover{ filter:brightness(1.06); }

/* 13) zone-grid-restore 区域画布网格恢复（普通流畅）
   v336 .glass{background-image:none!important} 以 !important 压掉了
   v328 非 important 的网格背景，导致区域网格消失（用户要求必须保留）。
   此处用同 !important + 高特异性恢复中性细网格，3D 档用大小双格。 */
body[data-perf="1"] .zone-viewport.glass,
body[data-perf="1"] .zone-viewport{
  background-color:var(--surface-2) !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;
}
body[data-perf="1"] .zone-viewport.glass.mode-3d,
body[data-perf="1"] .zone-viewport.mode-3d{
  background-color:var(--surface-2) !important;
  background-image:
    linear-gradient(color-mix(in srgb,var(--brand) 14%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--brand) 14%,transparent) 1px,transparent 1px),
    linear-gradient(color-mix(in srgb,var(--text) 7%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--text) 7%,transparent) 1px,transparent 1px) !important;
  background-size:160px 160px,160px 160px,32px 32px,32px 32px !important;
}
