/* ============================================================
   仓驭WMS · Components 组件层
   ------------------------------------------------------------
   按钮 / 卡片 / 表单 / 表格 / 标签 / 弹窗 / 导航 / 头像 / 聊天等
   来源：style.css + v4.css + ui-redesign + ui-refresh + v315~v339
   ============================================================ */

/* ============================================================
   按钮系统
   ============================================================ */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--space-1h);
  padding:var(--space-2) var(--space-4); border-radius:var(--radius-md);
  font-size:var(--font-size-base); font-weight:500;
  border:1px solid var(--border); background:var(--surface-2); color:var(--text);
  transition:background .15s,border-color .15s,color .15s,box-shadow .15s;
  white-space:nowrap;
}
.btn:hover{ background:var(--hover); border-color:color-mix(in srgb,var(--brand) 35%,var(--line)); color:var(--brand); }
.btn-primary{
  background:linear-gradient(135deg,var(--brand,#0D9488),var(--brand-2,#0F766E));
  color:#fff; border-color:transparent;
  box-shadow:0 4px 14px color-mix(in srgb,var(--brand,#0D9488) 26%,transparent);
}
.btn-primary:hover{ filter:brightness(1.06); color:#fff; }
.btn-danger{
  background:linear-gradient(135deg,#ef4444,#dc2626);
  color:#fff; border-color:transparent;
  box-shadow:0 4px 14px rgba(220,38,38,.22);
}
.btn-danger:hover{ filter:brightness(1.06); color:#fff; }
.btn-success{
  background:linear-gradient(135deg,#16a34a,#15803d);
  color:#fff; border-color:transparent;
  box-shadow:0 4px 14px rgba(22,163,74,.22);
}
.btn-success:hover{ filter:brightness(1.06); color:#fff; }
.btn-ghost{
  background:var(--surface-2); border:1px solid var(--line); color:var(--text);
}
.btn-ghost:hover{ background:var(--hover); border-color:var(--brand-line); color:var(--brand); }
.btn-sm{ padding:var(--space-1) var(--space-3); font-size:var(--font-size-sm); border-radius:var(--radius-sm); }
.icon-btn{
  width:36px; height:36px; min-width:36px; border-radius:var(--radius-md);
  display:inline-flex; align-items:center; justify-content:center;
  background:var(--surface-2); border:1px solid var(--line); color:var(--text-2);
  transition:background .15s,color .15s;
}
.icon-btn:hover{ background:var(--brand-soft); color:var(--brand); }
.glass-btn{
  position:relative; isolation:isolate;
  display:inline-flex; align-items:center; justify-content:center;
  padding:var(--space-2) var(--space-4); border-radius:var(--radius-md);
  font-size:var(--font-size-base); font-weight:500;
  background:var(--surface-2); border:1px solid var(--line); color:var(--text);
  transition:all .15s;
}
.glass-btn:hover{ background:var(--hover); border-color:var(--brand-line); color:var(--brand); }

/* 分段控件 */
.seg{
  display:inline-flex; gap:var(--space-1); padding:var(--space-1);
  background:var(--surface-3); border-radius:var(--radius-md);
}
.seg button{
  padding:var(--space-1h) var(--space-3h); border-radius:var(--radius-sm);
  font-size:var(--font-size-sm); color:var(--text-2);
  transition:all .15s;
}
.seg button:hover{ color:var(--text); }
.seg button.on{
  background:var(--brand-soft,var(--active)); color:var(--brand,#0D9488); font-weight:600;
}

/* 标签页 */
.tab{
  padding:var(--space-2) var(--space-4); font-size:var(--font-size-base); color:var(--text-2);
  border-bottom:2px solid transparent; cursor:pointer; transition:all .15s;
}
.tab:hover{ color:var(--text); }
.tab.active{ color:var(--brand,#0D9488); border-color:var(--brand,#0D9488); font-weight:600; }

/* ============================================================
   卡片系统
   ============================================================ */
.card{
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg); padding:var(--space-5);
  box-shadow:0 2px 14px rgba(20,40,80,.05);
}
.stat-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));
  gap:var(--space-4); margin-bottom:var(--space-5);
}
.stat-card{
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg); padding:var(--space-4h);
  display:flex; align-items:flex-start; gap:var(--space-3h);
  transition:box-shadow .2s,transform .2s;
}
.stat-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-2px); }
.stat-ico{
  width:44px; height:44px; border-radius:var(--radius-md);
  display:grid; place-items:center; font-size:var(--font-size-2xl); flex-shrink:0;
  background:var(--info-soft,var(--color-info-bg));
}
.stat-info{ flex:1; min-width:0; }
.stat-label{ font-size:var(--font-size-sm); color:var(--text-3); margin-bottom:var(--space-1); }
.stat-num{ font-size:var(--font-size-3xl); font-weight:700; color:var(--text); line-height:1.2; }
.stat-sub{ font-size:var(--font-size-xs); color:var(--text-3); margin-top:var(--space-0h); }

/* 仪表盘网格 */
.dash-grid{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--space-4); margin-top:var(--space-5);
}
@media(max-width:900px){ .dash-grid{ grid-template-columns:minmax(0,1fr); } }

/* ============================================================
   表格系统
   ============================================================ */
.table-wrap{
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg); overflow:auto;
  min-width:0; max-width:100%;
  max-height:calc(100vh - 220px);
}
table{ width:100%; border-collapse:collapse; font-size:var(--font-size-sm); }
thead th{
  padding:var(--space-2h) var(--space-3h); text-align:left; font-weight:600;
  background:var(--hover); color:var(--text-2);
  border-bottom:1px solid var(--line); white-space:nowrap;
  position:sticky; top:0; z-index:1;
}
tbody td{
  padding:var(--space-2h) var(--space-3h); border-bottom:1px solid var(--divider);
  vertical-align:middle; white-space:nowrap;
}
tbody tr{ transition:background .12s; }
tbody tr:hover{ background:var(--hover); }
tbody tr:hover td{ color:var(--text); }
tr.row-sel td{ background:var(--brand-soft,var(--color-selected)); }
.grp-row td{
  background:var(--surface-2); font-weight:600; cursor:pointer;
}
.grp-row:hover td{ background:var(--hover); }
.grp-cnt{
  display:inline-block; min-width:20px; height:20px; line-height:20px;
  border-radius:var(--radius-full); background:var(--brand,#0D9488);
  color:#fff; font-size:var(--font-size-2xs); font-weight:700; text-align:center;
  padding:0 var(--space-1h); margin-left:var(--space-1h);
}

/* 自定义表格（Excel化）工具栏 */
.toolbar{
  display:flex; align-items:center; gap:var(--space-2); margin-bottom:var(--space-3h); flex-wrap:wrap;
}
.toolbar .spacer{ flex:1; }
.search-box{
  display:flex; align-items:center; gap:var(--space-1h);
  padding:var(--space-1h) var(--space-3); border-radius:var(--radius-md);
  background:var(--surface-2); border:1px solid var(--line);
}
.search-box input{
  border:none; background:none; outline:none; flex:1; min-width:120px;
  font-size:var(--font-size-sm);
}

/* ============================================================
   表单系统
   ============================================================ */
.form-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--space-3h) var(--space-4); }
.form-row{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--space-3h) var(--space-4); }
.form-row-3{ grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr); }
label.fld{
  display:flex; flex-direction:column; gap:var(--space-1); font-size:var(--font-size-sm);
  color:var(--text-2); font-weight:500;
}
input,select,textarea{
  padding:var(--space-2) var(--space-3); border-radius:var(--radius-md);
  border:1px solid var(--line); background:var(--surface); color:var(--text);
  font-size:var(--font-size-base); outline:none;
  transition:border-color .15s,box-shadow .15s;
}
input:focus,select:focus,textarea:focus{
  border-color:var(--brand-line,#0D9488);
  box-shadow:0 0 0 3px var(--brand-soft,rgba(13,148,136,.12));
}
textarea{ resize:vertical; min-height:80px; }
select{ cursor:pointer; }

/* ============================================================
   弹窗系统
   ============================================================ */
.modal-mask{
  position:fixed; inset:0; z-index:var(--z-modal-backdrop,1040);
  display:none; align-items:center; justify-content:center;
  padding:var(--space-5); background:var(--mask);
}
.modal-mask.show{ display:flex; animation:maskFade .18s ease; }
@keyframes maskFade{ from{opacity:0} to{opacity:1} }
.modal{
  width:560px; max-width:100%; max-height:88vh;
  display:flex; flex-direction:column;
  background:var(--surface); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);
  animation:modalPop .25s cubic-bezier(.2,.7,.3,1);
  will-change:auto;
}
.modal.wide{ width:780px; }
@keyframes modalPop{
  from{ opacity:0; transform:translateY(14px); }
  to{ opacity:1; transform:translateY(0); }
}
.modal-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:var(--space-4) var(--space-5); border-bottom:1px solid var(--divider);
}
.modal-head h3{ font-size:var(--font-size-md); font-weight:700; }
.modal-body{ padding:var(--space-4h) var(--space-5); overflow-y:auto; flex:1; }
.modal-foot{
  display:flex; justify-content:flex-end; gap:var(--space-2h); padding:var(--space-3h) var(--space-5);
  border-top:1px solid var(--divider);
}
.modal-x{
  width:32px; height:32px; border-radius:var(--radius-sm);
  display:grid; place-items:center; cursor:pointer;
  color:var(--text-2); font-size:var(--font-size-xl); transition:background .15s;
}
.modal-x:hover{ background:var(--hover); color:var(--text); }

/* 底部弹出浮层 */
.pop-mask{
  position:fixed; inset:0; z-index:var(--z-popover,1060);
  display:none; align-items:center; justify-content:center;
  padding:var(--space-5); background:var(--mask);
}
.pop-mask.show{ display:flex; animation:maskFade .18s ease; }
.pop-sheet{
  width:480px; max-width:100%; max-height:80vh;
  display:flex; flex-direction:column;
  background:var(--surface); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);
}
.pop-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:var(--space-3h) var(--space-4h); border-bottom:1px solid var(--divider);
}
.pop-head h3{ font-size:var(--font-size-md); }
.pop-body{ padding:var(--space-3h) var(--space-4h); overflow-y:auto; flex:1; }
.pop-foot{ padding:var(--space-3) var(--space-4h); border-top:1px solid var(--divider); }
.pop-x{
  width:28px; height:28px; border-radius:var(--radius-sm);
  display:grid; place-items:center; cursor:pointer;
  color:var(--text-2);
}

/* 紧急弹窗 */
.urgent-box{
  width:420px; max-width:100%;
  background:var(--surface); border-radius:var(--radius-lg);
  padding:var(--space-6); box-shadow:var(--shadow-lg);
}

/* ============================================================
   标签 / 徽章系统
   ============================================================ */
.tags{
  display:inline-block; padding:var(--space-0h) var(--space-2h); border-radius:var(--radius-full);
  font-size:var(--font-size-xs); font-weight:600; white-space:nowrap;
}
.tag-pending{ background:var(--warning-soft,var(--color-warning-bg)); color:var(--warning,var(--color-warning-text)); }
.tag-confirmed{ background:var(--success-soft,var(--color-success-bg)); color:var(--success,var(--color-success-text)); }
.tag-cancelled{ background:var(--danger-soft,var(--color-danger-bg)); color:var(--danger,var(--color-danger-text)); }
.tag-admin{ background:var(--info-soft,var(--color-info-bg)); color:var(--info,var(--color-info-text)); }
.tag-user{ background:var(--surface-2); color:var(--text-2); }
.tag-high{ background:var(--danger-soft,var(--color-danger-bg)); color:var(--danger,var(--color-danger-text)); }
.tag-med{ background:var(--warning-soft,var(--color-warning-bg)); color:var(--warning,var(--color-warning-text)); }
.tag-low{ background:var(--info-soft,var(--color-info-bg)); color:var(--info,var(--color-info-text)); }
.tag-super{
  background:linear-gradient(135deg,#0F766E,#0D9488); color:#fff; border:none;
}

/* ============================================================
   头像系统
   ============================================================ */
.avatar{
  border-radius:50%; object-fit:cover; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:600; color:#fff; user-select:none; vertical-align:middle;
}
img.avatar{ display:inline-block; background:transparent !important; border-radius:50% !important; }
.av-ph{
  background:linear-gradient(135deg,hsl(var(--avh,210) 72% 56%),hsl(var(--avh,210) 62% 40%));
  text-shadow:0 1px 2px rgba(0,0,0,.25);
}
.av-xs{ width:18px; height:18px; font-size:10px; }
.av-chip{ width:22px; height:22px; font-size:var(--font-size-2xs); }
.av-sm{ width:26px; height:26px; font-size:var(--font-size-xs); }
.av-md{ width:42px; height:42px; font-size:var(--font-size-lg); }
.av-lg{ width:88px; height:88px; font-size:var(--font-size-5xl); }
.person-chip{ display:inline-flex; align-items:center; gap:var(--space-1); margin:1px var(--space-0h) 1px 0; font-style:normal; }
.person-chip i{ font-style:normal; font-size:var(--font-size-xs); color:var(--text-2); }

/* ============================================================
   顶栏用户菜单 / 通知
   ============================================================ */
.user-chip{ display:inline-flex; align-items:center; gap:var(--space-2); cursor:pointer; }
.uc-name{ font-weight:600; color:var(--text); }
.uc-caret{ font-style:normal; font-size:10px; opacity:.6; }
.user-menu{
  position:absolute; top:58px; right:22px; min-width:236px;
  border-radius:var(--radius); padding:var(--space-2); display:none; z-index:9999;
  background:var(--surface); border:1px solid var(--line);
  box-shadow:0 24px 60px rgba(0,0,0,.2);
}
.user-menu.show{ display:block; }
.um-head{ display:flex; align-items:center; gap:var(--space-2h); padding:var(--space-2); margin-bottom:var(--space-1h); border-bottom:1px solid var(--divider); }
.um-who b{ display:block; font-size:var(--font-size-base); }
.um-who small{ color:var(--text-3); font-size:var(--font-size-2xs); }
.um-item{
  display:flex; width:100%; align-items:center; gap:var(--space-2); padding:var(--space-2h) var(--space-3);
  border:none; background:none; border-radius:var(--radius-sm);
  color:var(--text); font-size:var(--font-size-base); cursor:pointer; text-align:left;
}
.um-item:hover{ background:var(--hover); }
.um-danger{ color:var(--red,var(--color-danger)); }
.um-danger:hover{ background:rgba(255,69,58,.10); }

.notif-bell{
  width:36px; height:36px; min-height:36px; border-radius:var(--radius-md);
  display:grid; place-items:center; cursor:pointer;
  background:var(--surface-2); border:1px solid var(--line);
  color:var(--text-2); position:relative;
}
.notif-bell:hover{ background:var(--brand-soft); color:var(--brand); }
.notif-bell .dot{
  position:absolute; top:6px; right:6px; width:8px; height:8px;
  border-radius:50%; background:var(--color-danger);
}

/* 主题切换按钮 */
.theme-toggle{
  width:36px; height:36px; border-radius:var(--radius-md);
  display:grid; place-items:center; cursor:pointer;
  background:var(--surface-2); border:1px solid var(--line); color:var(--text-2);
}
.theme-toggle:hover{ background:var(--brand-soft); color:var(--brand); }

/* ============================================================
   聊天组件
   ============================================================ */
.chat-layout{
  display:grid; grid-template-columns:280px 1fr; gap:0;
  height:calc(100vh - 120px); min-height:400px;
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg); overflow:hidden;
}
.conv-col{ display:flex; flex-direction:column; border-right:1px solid var(--divider); background:var(--surface); }
.conv-head{
  padding:var(--space-3) var(--space-4); border-bottom:1px solid var(--divider);
  font-weight:600; display:flex; align-items:center; justify-content:space-between;
}
.conv-list{ flex:1; overflow-y:auto; }
.conv-item{
  display:flex; align-items:center; gap:var(--space-2h); padding:var(--space-2h) var(--space-3h);
  cursor:pointer; transition:background .15s; border-bottom:1px solid var(--divider);
}
.conv-item:hover{ background:var(--hover); }
.conv-item.active{
  background:linear-gradient(90deg,var(--brand-soft),transparent);
}
.conv-ava{ width:44px; height:44px; border-radius:50%; flex-shrink:0;
  background:linear-gradient(135deg,#0D9488,#0F766E); color:#fff;
  display:grid; place-items:center; font-weight:600; font-size:var(--font-size-lg);
}
.conv-ava:has(.conv-ava-img){ background:transparent; }
.conv-ava-img{ width:100%; height:100%; border-radius:50%; object-fit:cover; display:block; }
.conv-info{ flex:1; min-width:0; }
.conv-name{ font-weight:600; font-size:var(--font-size-base); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.conv-last{ font-size:var(--font-size-xs); color:var(--text-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:var(--space-0h); }

.chat-col{ display:flex; flex-direction:column; min-height:0; }
.chat-top{
  padding:var(--space-3) var(--space-4); border-bottom:1px solid var(--divider);
  font-weight:600; display:flex; align-items:center; justify-content:space-between;
}
.msg-stream{
  flex:1; overflow-y:auto; padding:var(--space-4); display:flex; flex-direction:column; gap:var(--space-2h);
}
.msg-row{ display:flex; gap:var(--space-2); max-width:100%; }
.msg-row.mine{ flex-direction:row-reverse; }
.msg-ava{ width:30px; height:30px; border-radius:50%; flex-shrink:0; overflow:hidden; }
.msg-col{ display:flex; flex-direction:column; max-width:70%; }
.msg-row.mine .msg-col{ align-items:flex-end; }
.msg-row.other .msg-col{ align-items:flex-start; }
.msg-bubble{
  padding:var(--space-2) var(--space-3); border-radius:var(--radius-xl); font-size:var(--font-size-base); line-height:1.5;
  background:var(--surface-2); border:1px solid var(--line);
  word-break:break-word;
}
.msg-row.mine .msg-bubble{
  background:linear-gradient(135deg,var(--brand,#0D9488),var(--brand-2,#0F766E));
  color:#fff; border-color:transparent;
}
.msg-time{ font-size:var(--font-size-2xs); color:var(--text-3); margin-top:var(--space-0h); }

.chat-compose{ padding:var(--space-2h) var(--space-3h); border-top:1px solid var(--divider); }
.chat-input-shell{
  border-radius:var(--radius-2xl); padding:var(--space-1h) var(--space-2h);
  background:var(--surface-2); border:1px solid var(--line);
}
#chatInput{
  min-height:42px; max-height:140px; overflow-y:auto;
  padding:var(--space-2) var(--space-2h); line-height:1.5; outline:none;
}
.chat-input-foot{ display:flex; align-items:center; gap:var(--space-2); }
.chat-toolbar{ display:flex; gap:var(--space-1h); }
.chat-tool{
  width:36px; height:36px; border-radius:var(--radius-sm);
  display:grid; place-items:center; cursor:pointer;
  color:var(--text-2); font-size:var(--font-size-xl);
}
.chat-tool:hover{ background:var(--hover); }
.chat-send-btn{
  height:36px; padding:0 var(--space-5); border-radius:var(--radius-xl);
  background:linear-gradient(135deg,var(--brand,#0D9488),var(--brand-2,#0F766E));
  color:#fff; font-weight:600;
}

/* 文件消息 */
.msg-file{
  display:flex; gap:var(--space-2h); padding:var(--space-2h) var(--space-3h); border-radius:var(--radius-xl);
  max-width:260px; align-items:center; text-decoration:none; color:inherit;
}
.file-ic{
  width:42px; height:42px; border-radius:var(--radius-xl);
  display:flex; align-items:center; justify-content:center;
  font-weight:800; font-size:var(--font-size-2xs); color:#fff; flex-shrink:0;
}
.mf-name{ font-size:var(--font-size-sm); font-weight:600; word-break:break-all; }
.mf-size{ font-size:var(--font-size-2xs); color:var(--text-3); margin-top:var(--space-0h); }

/* 表情面板 */
.emoji-panel{
  padding:var(--space-2h); border-radius:var(--radius-md);
  background:var(--surface); border:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:var(--space-1); max-width:280px;
}
.emoji-panel span{
  width:32px; height:32px; display:grid; place-items:center;
  font-size:var(--font-size-2xl); cursor:pointer; border-radius:var(--radius-sm);
}
.emoji-panel span:hover{ background:var(--hover); }

/* ============================================================
   成员选择（多选人员芯片）
   ============================================================ */
.mpu{
  display:inline-flex; align-items:center; gap:var(--space-1h); padding:var(--space-1h) var(--space-2h);
  border-radius:var(--radius-3xl); background:var(--input-bg); border:1px solid var(--input-border);
  cursor:pointer; font-size:var(--font-size-sm); transition:.15s;
}
.mpu:hover{ border-color:var(--blue); }
.mpu i{ font-style:normal; color:var(--text-2); }
.mpu input{ accent-color:var(--blue); }
.mpu:has(input:checked){ background:var(--active); border-color:var(--blue); }
.mpu:has(input:checked) i{ color:var(--blue); font-weight:600; }

/* ============================================================
   成员卡片 / 网格
   ============================================================ */
.member-grid,.members-grid{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:var(--space-3h);
}
.member-card{
  display:flex; align-items:center; gap:var(--space-3); padding:var(--space-3h);
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg); transition:box-shadow .2s;
}
.member-card:hover{ box-shadow:var(--shadow-md); }
.member-ava{ width:44px; height:44px; border-radius:50%; flex-shrink:0; }

/* ============================================================
   任务卡片
   ============================================================ */
.task-list{ display:flex; flex-direction:column; gap:var(--space-2h); }
.task-item{
  display:flex; align-items:flex-start; gap:var(--space-3); padding:var(--space-3h);
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg); transition:box-shadow .2s;
}
.task-item:hover{ box-shadow:var(--shadow-md); }
.task-main{ flex:1; min-width:0; }
.task-title{ font-weight:600; font-size:var(--font-size-base); margin-bottom:var(--space-1); }
.task-meta{ display:flex; gap:var(--space-2h); font-size:var(--font-size-xs); color:var(--text-3); flex-wrap:wrap; }
.task-acts{ display:flex; gap:var(--space-1h); flex-shrink:0; }
.task-toolbar{ display:flex; gap:var(--space-2); margin-bottom:var(--space-3h); flex-wrap:wrap; }
.task-filter{ display:flex; gap:var(--space-1); }

/* 任务汇报 */
.rpt-list{ display:flex; flex-direction:column; gap:var(--space-2h); margin:var(--space-2h) 0; max-height:34vh; overflow-y:auto; }
.rpt-item{ display:flex; gap:var(--space-2h); align-items:flex-start; }
.rpt-body{
  flex:1; min-width:0; background:var(--input-bg);
  border:1px solid var(--input-border); border-radius:var(--radius-sm); padding:var(--space-2) var(--space-2h);
}
.rpt-head{ display:flex; justify-content:space-between; gap:var(--space-2); font-size:var(--font-size-xs); margin-bottom:var(--space-1); }
.rpt-head span{ color:var(--text-3); }
.rpt-text{ font-size:var(--font-size-sm); white-space:pre-wrap; word-break:break-word; }
.rpt-input{
  display:flex; flex-direction:column; gap:var(--space-2); padding:var(--space-2h);
  border-radius:var(--radius-sm); margin-top:var(--space-2);
}
.rpt-input textarea{
  width:100%; min-height:54px; resize:none; background:var(--input-bg); color:var(--text);
  border:1px solid var(--input-border); border-radius:var(--radius-sm);
  padding:var(--space-2) var(--space-2h); font-family:var(--font); font-size:var(--font-size-sm); outline:none;
}
.rpt-input textarea:focus{ border-color:var(--blue); }
.rpt-img-bar{ display:flex; align-items:center; flex-wrap:wrap; gap:var(--space-1h); margin:var(--space-1h) 0; }
.rpt-imgs{ display:flex; flex-wrap:wrap; gap:var(--space-1h); }
.rpt-img-item{ position:relative; display:inline-block; }
.rpt-img-item .p-thumb{ border-radius:var(--radius-md); }
.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:var(--font-size-2xs);
  line-height:16px; text-align:center; cursor:pointer;
}

/* ============================================================
   会议卡片
   ============================================================ */
.mtg-list{ display:flex; flex-direction:column; gap:var(--space-2h); }
.mtg-card{
  display:flex; align-items:center; gap:var(--space-3); padding:var(--space-3h);
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg);
}
.mtg-info{ flex:1; min-width:0; }
.mtg-title{ font-weight:600; margin-bottom:var(--space-1); }
.mtg-time{ font-size:var(--font-size-xs); color:var(--text-3); }
.mtg-remark{ font-size:var(--font-size-xs); color:var(--text-3); margin-top:var(--space-0h); max-width:340px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mtg-parts{ display:inline-flex; align-items:center; }
.mtg-parts .avatar{ margin-right:-6px; border:2px solid var(--bg); }
.mtg-parts .mtg-more{
  width:18px; height:18px; border-radius:50%; background:var(--hover);
  color:var(--text-2); font-size:9px; font-style:normal;
  display:inline-flex; align-items:center; justify-content:center;
}
.mtg-tabs{ display:inline-flex; gap:var(--space-1h); padding:var(--space-1); margin:0 0 var(--space-3); border-radius:var(--radius-xl); background:var(--surface-2); }
.mtg-tabs .btn{ border-radius:var(--radius-md); font-weight:600; }

/* ============================================================
   日程日历
   ============================================================ */
.cal-wrap{ padding:var(--space-3h); border-radius:var(--radius); overflow:hidden; background:var(--surface); border:1px solid var(--line); }
.cal-bar{ display:flex; align-items:center; justify-content:space-between; margin-bottom:var(--space-2h); }
.cal-title{ font-size:var(--font-size-lg); font-weight:700; margin:0 var(--space-1h); }
.cal-head{ display:grid; grid-template-columns:repeat(7,1fr); gap:var(--space-1h); margin-bottom:var(--space-1h); }
.cal-wd{ text-align:center; font-size:var(--font-size-xs); color:var(--text-3); font-weight:600; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:var(--space-1h); }
.cal-cell{
  min-height:96px; border-radius:var(--radius-sm); background:var(--input-bg);
  border:1px solid var(--input-border); padding:var(--space-1h); cursor:pointer;
  display:flex; flex-direction:column; gap:var(--space-1); transition:.18s; overflow:hidden;
}
.cal-cell:hover{ background:var(--hover); border-color:var(--blue); }
.cal-out{ opacity:.38; }
.cal-today{ border-color:var(--blue); box-shadow:inset 0 0 0 1px var(--blue); }
.cal-num{
  width:22px; height:22px; border-radius:50%; display:flex; align-items:center;
  justify-content:center; font-size:var(--font-size-xs); font-weight:600; color:var(--text-2); flex-shrink:0;
}
.cal-today .cal-num{ background:var(--blue); color:#fff; }
.cal-items{ display:flex; flex-direction:column; gap:var(--space-0h); min-height:0; }
.cal-chip{
  font-size:var(--font-size-2xs); background:var(--active); color:var(--blue); border-radius:var(--radius-sm);
  padding:var(--space-0h) var(--space-1h); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.cal-more{ font-size:var(--font-size-2xs); color:var(--text-3); padding-left:var(--space-1); }

/* 当日日程列表 */
.sch-day-list{ display:flex; flex-direction:column; gap:var(--space-2); max-height:46vh; overflow-y:auto; padding-right:var(--space-1); }
.sch-item{
  display:flex; gap:var(--space-2h); align-items:flex-start; background:var(--input-bg);
  border:1px solid var(--input-border); border-radius:var(--radius-sm); padding:var(--space-2h);
}
.sch-item.is-done{ opacity:.55; }
.sch-time{ font-size:var(--font-size-xs); color:var(--blue); font-weight:600; min-width:78px; padding-top:var(--space-0h); }
.sch-main{ flex:1; min-width:0; }
.sch-main b{ font-size:var(--font-size-base); }
.sch-main p{ font-size:var(--font-size-xs); color:var(--text-2); margin:var(--space-0h) 0; white-space:pre-wrap; word-break:break-word; }
.sch-main small{ display:flex; align-items:center; gap:var(--space-1h); color:var(--text-3); font-size:var(--font-size-2xs); flex-wrap:wrap; }
.sch-acts{ display:flex; gap:var(--space-1); flex-shrink:0; }

/* ============================================================
   公告条（仪表盘）
   ============================================================ */
.ann-list{ display:flex; flex-direction:column; gap:var(--space-2h); margin:0 0 var(--space-4); }
.ann-bar{
  position:relative; display:flex; gap:var(--space-3); align-items:flex-start;
  padding:var(--space-3) var(--space-12) var(--space-3) var(--space-4); border-radius:var(--radius-xl); overflow:hidden;
  background:var(--surface); border:1px solid var(--line);
  box-shadow:0 2px 12px rgba(20,40,80,.06);
}
.ann-bar::before{ content:''; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--info,#0D9488); }
.ann-bar.is-important::before{ background:var(--danger); }
.ann-bar.is-warning::before{ background:var(--warning); }
.ann-ico{
  flex-shrink:0; width:34px; height:34px; border-radius:var(--radius-lg); display:grid; place-items:center;
  font-size:var(--font-size-lg); background:var(--info-soft); color:var(--info,#0D9488);
}
.ann-bar.is-important .ann-ico{ background:var(--danger-soft); color:var(--danger); }
.ann-bar.is-warning .ann-ico{ background:var(--warning-soft); color:var(--warning); }
.ann-body{ flex:1; min-width:0; }
.ann-title{ font-size:var(--font-size-base); font-weight:700; color:var(--text); margin:0 0 var(--space-0h); }
.ann-tag{ font-size:var(--font-size-2xs); font-weight:700; padding:1px var(--space-2); border-radius:var(--radius-3xl); background:var(--info-soft); color:var(--info); }
.ann-text{ font-size:var(--font-size-sm); line-height:1.6; color:var(--text-2); margin:0; white-space:pre-wrap; word-break:break-word; }
.ann-meta{ font-size:var(--font-size-2xs); color:var(--text-3); margin-top:var(--space-1); }
.ann-ops{ position:absolute; top:8px; right:8px; display:flex; gap:var(--space-1h); }
.ann-ops button{
  width:28px; height:28px; border-radius:var(--radius-md); border:1px solid var(--line);
  background:var(--surface); color:var(--text-2); cursor:pointer; font-size:var(--font-size-sm);
  display:grid; place-items:center; transition:.14s;
}
.ann-ops button:hover{ background:var(--hover); color:var(--text); }

/* ============================================================
   个人主页 / 账号
   ============================================================ */
.profile-grid{ display:grid; grid-template-columns:300px 1fr 1fr; gap:var(--space-3h); align-items:start; }
.prof-card{ padding:var(--space-4h); }
.prof-avatar-btn{
  border:none; background:none; cursor:pointer; padding:var(--space-1h);
  display:flex; flex-direction:column; align-items:center; gap:var(--space-2);
  border-radius:var(--radius-sm);
}
.prof-avatar-btn:hover{ background:var(--hover); }
.prof-avatar-tip{ font-size:var(--font-size-xs); color:var(--text-2); }
.acct-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:var(--space-4); align-items:start; }
.acct-who{ display:flex; align-items:center; gap:var(--space-3h); margin:var(--space-2h) 0 var(--space-3); }
.acct-who-txt b{ font-size:var(--font-size-lg); }
.acct-who-txt p{ margin:var(--space-0h) 0 0; color:var(--text-3); font-size:var(--font-size-xs); }

/* ============================================================
   权限矩阵
   ============================================================ */
.perm-box{
  background:var(--input-bg); border:1px solid var(--input-border);
  border-radius:var(--radius-sm); padding:var(--space-2h); margin:var(--space-1h) 0;
}
.perm-group{ margin-bottom:var(--space-2h); }
.perm-group-head{ font-weight:600; margin-bottom:var(--space-1h); cursor:pointer; display:flex; align-items:center; gap:var(--space-1h); }
.perm-rows{ display:flex; flex-direction:column; gap:var(--space-1); }
.perm-row{ display:flex; align-items:center; gap:var(--space-2); padding:var(--space-1) 0; }
.perm-row label{ font-size:var(--font-size-sm); cursor:pointer; }

/* ============================================================
   通用过渡
   ============================================================ */
.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;
}

/* ==== v8 CSS 归并补遗：缺失类迁移（自动提取+去重+令牌映射） ==== */
.search, .search-box input { font-size: var(--font-size-lg) }
.brand { display:flex; align-items:center; gap:var(--space-2h); padding:var(--space-4) var(--space-4) var(--space-3h); border-bottom:1px solid var(--color-border-light) }
.brand-txt b { font-size:var(--font-size-md); color:var(--color-text-primary); font-weight:700 }
.brand-txt small { font-size:var(--font-size-2xs); color:var(--color-text-muted); margin-top:var(--space-0h); letter-spacing:.3px }
.nav { flex:1; overflow-y:auto; padding:var(--space-2h) var(--space-2); display:flex; flex-direction:column; gap:var(--space-0h) }
.act-btns { display:inline-flex; gap:var(--space-1); align-items:center }
.empty { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--space-2h); padding:var(--space-12) var(--space-5); text-align:center; color:var(--color-text-muted) }
.empty .e-ico { font-size:var(--font-size-6xl); opacity:.6 }
.toast { background: transparent !important; background-image: none !important; background-color: transparent !important; color: var(--text-1) !important; -webkit-backdrop-filter: saturate(170%) !important; backdrop-filter: saturate(170%) !important; border: 1px solid var(--input-border) !important; box-shadow: inset 0 1px 1px rgba(255,255,255,.5), 0 10px 40px rgba(0,0,0,.18) !important }
.toast.show { transform:translateY(0); opacity:1 }
.toast.ok { color: var(--green) !important }
.toast.err { color: var(--red) !important }
.side-mask { display:none }
.login-card { position:relative; z-index:1; width:100%; max-width:380px; background:var(--color-surface); border:1px solid var(--color-border-light); border-radius:var(--radius-lg); padding:var(--space-8) var(--space-7); box-shadow:var(--shadow-lg); animation:loginIn .35s ease }
.login-card h2 { margin:var(--space-3h) 0 var(--space-0h); text-align:center; font-size:var(--font-size-2xl); font-weight:700; color:var(--color-text-primary); letter-spacing:1px }
.tag { background:var(--color-surface-3); color:var(--color-text-secondary) }
.p-thumb-lg { width:96px; height:96px; border-radius:var(--radius-xl); overflow:hidden; background:var(--input-bg); display:grid; place-items:center; color:var(--text-3); font-size:var(--font-size-xs); border:1px solid var(--input-border); flex-shrink:0 }
.p-thumb-lg img { width:100%; height:100%; object-fit:cover }
.pager-info { color:var(--text-2); font-size:var(--font-size-sm) }
.pager-ps { font-size:var(--font-size-sm); color:var(--text-2); display:flex; align-items:center; gap:var(--space-1h) }
.pager-ps select { width:auto; padding:var(--space-1h) var(--space-2h) }
.zoom-ctl .z-reset { width:auto; padding:0 var(--space-2h); font-size:var(--font-size-xs); height:26px }
.dlg-msg { display:flex; gap:var(--space-3h); align-items:flex-start; font-size:var(--font-size-base); line-height:1.6; color:var(--color-text-primary) }
.dlg-foot { display:flex; justify-content:flex-end; gap:var(--space-2h); margin-top:var(--space-4h) }
.stat-card.clickable { cursor:pointer; transition:transform .18s ease, box-shadow .18s ease; position:relative }
.stat-card.clickable:hover { transform:translateY(-3px); box-shadow:0 14px 34px var(--color-primary-bg-strong) }
.stat-card.clickable:hover .stat-go { color:var(--blue); transform:translateX(3px) }
.ph-cnt { font-size:var(--font-size-xs); color:var(--text-2) }
.tbl-group-sel { width:auto; min-width:150px }
.th-drag { color:var(--text-3); font-size:var(--font-size-xs); margin-left:var(--space-0h) }
#tblHead th:hover .th-drag { opacity:1 }
#tblHead th.dragging-col { opacity:.45 }
#tblHead th.over-col { box-shadow:inset 3px 0 0 var(--blue); color:var(--blue) }
.notif-modal-list { display:flex; flex-direction:column; gap:var(--space-2); max-height:62vh; overflow:auto }
.notif-modal-list .notif-item { padding:var(--space-3) var(--space-3h); border-radius:var(--radius-xl); background:var(--input-bg); border:1px solid var(--input-border); cursor:pointer; transition:.15s }
.notif-modal-list .notif-item:hover { border-color:var(--blue); transform:translateX(2px) }
.notif-modal-list .notif-item.unread { border-left:3px solid var(--blue); background:rgba(13,148,136,.07) }
.nav-badge { margin-left:auto; min-width:18px; height:18px; padding:0 var(--space-1); background:var(--color-danger); color:#fff; border-radius:var(--radius-full); font-size:var(--font-size-2xs); font-weight:600; display:inline-flex; align-items:center; justify-content:center }
.icon-zoom:hover { border-color:var(--blue); color:var(--blue); transform:translateY(-1px) }
.bell-ico { display:inline-flex }
.notif-bell.has-dot .bell-ico { animation:bellRing 1.6s ease-in-out infinite; transform-origin:top center }
.file-chip { display:inline-flex; align-items:center; gap:var(--space-1); padding:var(--space-0h) var(--space-2); border-radius:var(--radius-md); background:var(--input-bg); font-size:var(--font-size-xs); color:var(--blue); text-decoration:none }
.set-row input[type=checkbox] { width:20px; height:20px; accent-color:var(--blue); cursor:pointer }
.theme-ico { display:inline-flex; width:22px; justify-content:center; align-items:center }
.theme-ico svg { width:18px; height:18px }
.bg-picker { display:flex; flex-wrap:wrap; gap:var(--space-3); margin:var(--space-1h) 0 var(--space-1) }
.bg-swatch:hover { transform:translateY(-3px) scale(1.05) }
.bg-swatch.active { border-color:var(--blue); box-shadow:0 0 0 3px rgba(13,148,136,.22),0 6px 18px rgba(0,0,0,.18) }
.bg-swatch span { font-size:var(--font-size-2xs); font-weight:700; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.55); background:rgba(0,0,0,.22); padding:1px var(--space-1h); border-radius:var(--radius-md) }
.paste-able { position:relative }
.paste-able:hover::after { opacity:1; transform:scale(1) }
.slot-chip.sel { background:linear-gradient(135deg,var(--color-primary),var(--color-primary-active)); border-color:transparent; color:#fff; font-weight:700 }
.slot-chip .sc-x { font-style:normal; margin-left:var(--space-1); font-size:var(--font-size-2xs); opacity:.85 }
.img-up-row { margin:var(--space-2) 0 }
.up-thumb { position:relative; width:52px; height:52px }
.up-thumb .p-thumb { width:64px; height:64px; border-radius:0 }
.task-imgs .p-thumb,.cell-imgs .p-thumb { width:48px; height:48px }
.online-dot { display:inline-block; width:9px; height:9px; border-radius:50%; box-shadow:0 0 0 2px var(--card,#fff) }
.chat-empty { padding:var(--space-10) var(--space-6); text-align:center }
.chat-empty small { font-size:var(--font-size-xs) }
.msg-empty { margin:auto; color:var(--text-3); font-size:var(--font-size-sm) }
.cp-list { display:flex; flex-direction:column; gap:var(--space-2); max-height:50vh; overflow:auto }
.nav-item.dragging-nav { opacity:.35; cursor:grabbing; transform:scale(.97) }
.typing-dots i:nth-child(2) { animation-delay:.2s }
.typing-dots i:nth-child(3) { animation-delay:.4s }
.mps-modal { max-height:56vh; overflow:auto; display:flex; flex-direction:column; gap:var(--space-1) }
.mps-modal .mps-item { border:1px solid var(--input-border); border-radius:var(--radius-lg); padding:var(--space-1h) var(--space-2) }
.cp-item .cp-check { font-size:var(--font-size-lg); color:var(--blue); width:20px; text-align:center; flex-shrink:0 }
.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) }
.cp-item .cp-mid { color:var(--text-1) }
.cp-item .cp-mid small { color:var(--text-2) !important; font-size:var(--font-size-xs) }
.notif-bell .bell-ico { display:grid; place-items:center }
.notif-bell .notif-dot { position:absolute; top:-5px; right:-5px; min-width:17px; height:17px; padding:0 var(--space-1); border-radius:var(--radius-md); background:var(--color-danger); color:#fff; font-size:10.5px; font-weight:800; display:flex; align-items:center; justify-content:center; border:2px solid var(--card,#1c1c1e); box-shadow:0 2px 6px var(--color-danger-bg) }
.slot-chip.st-chip-full .slot-water { background:linear-gradient(180deg,rgba(48,209,88,.46),rgba(48,209,88,.20)) }
.slot-chip.st-chip-partial .slot-water { background:linear-gradient(180deg,rgba(13,148,136,.40),rgba(13,148,136,.18)) }
.slot-chip.st-chip-locked .slot-water { background:linear-gradient(180deg,rgba(255,69,58,.34),rgba(255,69,58,.14)) }
.slot-chip.st-chip-empty .slot-water { background:transparent }
.slot-chip>*:not(.slot-water) { position:relative; z-index:1 }
.slot-chip .sc-pct { font-size:var(--font-size-2xs); font-weight:800; margin-left:var(--space-0h); font-variant-numeric:tabular-nums; color:var(--blue) }
.slot-chip.st-chip-full .sc-pct { color:var(--color-success) }
.slot-chip.st-chip-locked .sc-pct { color:var(--color-danger) }
.slot-chip.st-chip-empty .sc-pct { color:var(--text-3); font-weight:600 }
.pct-range { display:inline-flex; align-items:center; gap:var(--space-2); background:var(--input-bg); border:1px solid var(--input-border); border-radius:var(--radius-lg); padding:var(--space-1) var(--space-2h); font-size:var(--font-size-xs) }
.pct-range input[type=range] { width:150px; height:20px; accent-color:var(--blue); cursor:pointer; margin:0 }
.pct-range b { min-width:40px; color:var(--blue); font-variant-numeric:tabular-nums; font-size:var(--font-size-sm) }
.cell-edit:empty::before { content:'输入内容，或 Ctrl+V 粘贴图片'; color:var(--text-3); font-size:var(--font-size-xs) }
.paste-hover { outline:2px solid var(--blue); outline-offset:1px; box-shadow:0 0 0 4px rgba(13,148,136,.15)!important }
.task-prod-tags { display:flex; flex-wrap:wrap; gap:var(--space-1h); margin:var(--space-1h) 0 }
.task-receipt-mini img,.task-receipt-mini .thumb { width:40px; height:40px; border-radius:var(--radius-sm) }
.empty-sm { color:var(--text-3); font-size:var(--font-size-sm); padding:var(--space-4h); text-align:center }
.fpv2-body { display:grid; gap:var(--space-1h) }
.fp-seg2 label { position:relative; cursor:pointer }
.fp-seg2 input { position:absolute; opacity:0 }
.fp-seg2 label:last-child i { border-right:none }
.fp-seg2 input:checked+i { background:var(--blue); color:#fff }
.fpu input { position:absolute; opacity:0 }
.fpu input:checked+i { background:rgba(13,148,136,.16); border-color:var(--blue); color:var(--blue) }
.sp-list { display:flex; flex-direction:column; gap:var(--space-2); margin:var(--space-2) 0 }
.sp-card { border:1px solid var(--glass-border); border-radius:var(--radius-lg); padding:var(--space-2h) var(--space-3); background:var(--glass-bg) }
.sp-card.sp-picked { border-color:var(--blue); box-shadow:0 0 0 2px rgba(13,148,136,.15) }
.sp-head { display:flex; align-items:center; gap:var(--space-2h); font-size:var(--font-size-xs); color:var(--text-3); margin-bottom:var(--space-1) }
.sp-head b { color:var(--text-1); font-size:var(--font-size-sm) }
.sp-pick { margin-left:auto; cursor:pointer; color:var(--blue); display:flex; align-items:center; gap:var(--space-1) }
.sp-text { font-size:var(--font-size-base); line-height:1.7; white-space:pre-wrap; color:var(--text-1) }
.sp-imgs { display:flex; flex-wrap:wrap; gap:var(--space-1h); margin-top:var(--space-1h) }
.sp-input { border-radius:var(--radius-xl); padding:var(--space-2h); margin-top:var(--space-2h); border:1px solid var(--glass-border) }
.sp-input textarea { width:100%; resize:vertical; min-height:48px }
.sp-in-row { display:flex; align-items:center; gap:var(--space-2); margin-top:var(--space-2); flex-wrap:wrap }
.sc-stage { position:relative }
.sc-stage.in { opacity:1; transform:none }
body[data-perf="1"] .brand-txt b { color:var(--text-1); font-weight:800; letter-spacing:.02em }
body[data-perf="1"] .brand-txt small { color:var(--text-3); letter-spacing:.05em }
body[data-perf="1"] .nav-badge { background:var(--accent); color:var(--on-accent); font-weight:700; border-radius:var(--radius-full) }
body[data-perf="1"] .side-mask { background:rgba(15,20,35,.42) }
body[data-perf="1"] .glass,
body[data-perf="1"] .card { background:var(--surface) !important; border:1px solid var(--line) !important; box-shadow:var(--sh) !important; border-radius:var(--r-card) }
body[data-perf="1"] .set-card,
body[data-perf="1"] .stat-card,
body[data-perf="1"] .task-item,
body[data-perf="1"] .member-card,
body[data-perf="1"] .meeting-card { background:var(--surface) !important }
body[data-perf="1"] .set-card-title,
body[data-perf="1"] .card-title,
body[data-perf="1"] .panel-title { color:var(--text-1); font-weight:700 }
body[data-perf="1"] .seg,body[data-perf="1"] .perf-seg { gap:var(--space-1) }
body[data-perf="1"] .seg button,body[data-perf="1"] .perf-seg button { background:var(--surface-2); border:1px solid var(--line); color:var(--text-2); border-radius:var(--r-ctl) }
body[data-perf="1"] .seg button.on,body[data-perf="1"] .perf-seg button.on,
body[data-perf="1"] .tab.active { background:var(--accent-soft) !important; color:var(--accent) !important; border-color:var(--accent-line) !important; font-weight:600 }
body[data-perf="1"] .search { background:var(--surface-2) !important; border:1px solid var(--line) !important; border-radius:var(--r-ctl) }
body[data-perf="1"] .search:focus-within { border-color:var(--accent) !important; background:var(--surface) !important; box-shadow:0 0 0 3px var(--accent-soft) !important }
body[data-perf="1"] .modal-head.scrolled,body[data-perf="1"] .pop-head.scrolled { box-shadow:0 4px 12px rgba(20,30,55,.06) }
body[data-perf="1"] .tags .tag,body[data-perf="1"] .tag { background:var(--surface-3); color:var(--text-2); border:1px solid var(--line); border-radius:var(--radius-full) }
body[data-perf="1"] .login-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-3xl); box-shadow:var(--sh-lg); width:400px; padding:var(--space-8) var(--space-8) }
body[data-perf="1"] .login-card h2 { color:var(--text-1); font-weight:800; letter-spacing:.02em }
body[data-perf="1"] .toast { z-index:1500 }
body[data-perf="1"] .empty,body[data-perf="1"] .empty-state { color:var(--text-3) }
.sidebar.collapsed .brand-txt,
.sidebar.collapsed .ni-txt,
.sidebar.collapsed .side-foot .ni-txt { display:none }
.brand-txt { display:flex; flex-direction:column; line-height:1.2; min-width:0 }
.ni-txt { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis }
.notif-dot { position:absolute; top:-4px; right:-4px; min-width:17px; height:17px; padding:0 var(--space-1); border-radius:var(--radius-md); background:linear-gradient(135deg,#FF453A,#FF3B30); color:#fff; font-size:10.5px; font-weight:700; display:grid; place-items:center; box-shadow:0 3px 8px rgba(255,69,58,.5) }
.af-kw { max-width:200px }
.af-date { width:140px }
.af-date-label { display:inline-flex; align-items:center; gap:var(--space-1h); font-size:var(--font-size-xs); color:var(--text-2); white-space:nowrap }
.table-wrap.glass { background:var(--color-surface) }
tbody tr.selected { background:var(--color-selected) }
.arr-main-row.expanded .arr-expand-btn { color:var(--blue) }
.po-tag-wrap { display:flex; flex-wrap:wrap; gap:var(--space-1) }
.card.glass { background:var(--color-surface) }
.card.clickable { cursor:pointer }
.card.clickable:hover { box-shadow:var(--shadow-md); transform:translateY(-2px) }
.stat-card:hover .stat-go { color:var(--color-primary); transform:translateX(3px) }
.tag,.chip,.mini-chip,.badge { display:inline-flex; align-items:center; gap:var(--space-1); padding:var(--space-0h) var(--space-2); border-radius:var(--radius-sm); font-size:var(--font-size-xs); font-weight:500; line-height:1.6; white-space:nowrap }
.tag.ok,.tag.success { background:var(--color-success-bg); color:var(--color-success-text) }
.tag.warn,.tag.warning { background:var(--color-warning-bg); color:var(--color-warning-text) }
.tag.danger,.tag.error { background:var(--color-danger-bg); color:var(--color-danger-text) }
.tag.info { background:var(--color-info-bg); color:var(--color-info-text) }
.tag.primary { background:var(--color-primary-bg); color:var(--color-primary) }
.pager .pager-info { font-size:var(--font-size-xs); color:var(--color-text-muted); margin:0 var(--space-2) }
.empty p { margin:0; font-size:var(--font-size-base) }
.login-card img { width:56px; height:56px; border-radius:var(--radius-md); object-fit:cover; box-shadow:var(--shadow-sm) }
.login-card .fld { margin-bottom:var(--space-4) }
.login-card .fld>span { font-size:var(--font-size-sm); font-weight:500; color:var(--color-text-secondary); margin-bottom:var(--space-1h) }
.login-card .btn-primary { width:100%; justify-content:center; margin-top:var(--space-1h); padding:var(--space-2h) var(--space-4); font-size:var(--font-size-md); font-weight:600 }
.toast.err,.toast.error { background:var(--color-danger) }
.toast.warn { background:var(--color-warning) }
[data-theme="dark"] .card,
[data-theme="dark"] .table-wrap,
[data-theme="dark"] .arr-filter,
[data-theme="dark"] .modal,
[data-theme="dark"] .pop-sheet,
[data-theme="dark"] .login-card { border-color:var(--color-border) }
.pp-search { position:relative; margin-bottom:var(--space-2h) }
.pp-opt input { width:17px; height:17px; min-height:0; flex-shrink:0; accent-color:var(--blue) }
.item-card { border:1px solid var(--input-border); border-radius:var(--radius-2xl); padding:var(--space-3); margin-bottom:var(--space-2h); background:var(--input-bg); box-shadow:var(--glass-edge); animation:modalPop .3s var(--ease-spring,cubic-bezier(.2,.9,.3,1.2)) }
.item-grid input { min-height:38px; padding:var(--space-2) var(--space-2h); font-size:var(--font-size-sm) }
.item-zone .iz-label { font-size:var(--font-size-xs); color:var(--text-3); display:flex; align-items:center; gap:var(--space-1); white-space:nowrap }
.it-sum { font-size:var(--font-size-sm); color:var(--blue); font-weight:700; font-variant-numeric:tabular-nums }
.up-thumb img { width:52px; height:52px; border-radius:var(--radius-lg); object-fit:cover; border:1px solid var(--input-border) }
.sc-setbar label { display:inline-flex; align-items:center; gap:var(--space-1h); cursor:pointer; user-select:none }
.sc-setbar input[type=checkbox] { width:16px; height:16px; min-height:0; accent-color:var(--blue) }
.sc-setbar input[type=number] { width:64px; min-height:32px; padding:var(--space-1) var(--space-2); text-align:center }
.sc-stage:hover .sc-hint { opacity:1 }
.conv-search { position:relative; display:flex; align-items:center; padding:var(--space-2h) var(--space-3) var(--space-2); color:var(--text-3) }
.conv-search svg { position:absolute; left:24px; top:50%; transform:translateY(-6px); opacity:.6; pointer-events:none }
.conv-search input { width:100%; height:36px; border-radius:var(--radius-lg); border:1px solid var(--input-border); background:var(--input-bg); color:var(--text-1); padding:0 var(--space-7) 0 var(--space-8); font-size:var(--font-size-sm); font-family:inherit; transition:.16s }
.conv-search input:focus { outline:none; border-color:var(--blue); box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 18%,transparent) }
.kw-hl { background:color-mix(in srgb,#FFD60A 62%,transparent); color:inherit; border-radius:var(--radius-xs); padding:0 1px }
body[data-theme="dark"] .kw-hl { background:color-mix(in srgb,#FFD60A 38%,transparent); color:#fff }
.chat-top-btn { width:36px; height:36px; border-radius:var(--radius-lg); border:1px solid var(--input-border); background:var(--input-bg); color:var(--text-2); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:.18s; flex-shrink:0 }
.chat-top-btn:hover { color:var(--blue); border-color:var(--blue); transform:translateY(-1px); box-shadow:0 4px 12px color-mix(in srgb,var(--blue) 22%,transparent) }
.chat-top-btn:active { transform:scale(.92) }
.msg-search-bar { display:none; align-items:center; gap:var(--space-1h); padding:var(--space-2) var(--space-3h); border-bottom:1px solid var(--input-border); background:color-mix(in srgb,var(--blue) 7%,transparent) }
.msg-search-bar.show { display:flex; animation:barDown .22s ease }
.msg-search-bar input { flex:1; height:34px; min-height:34px; width:auto; border-radius:var(--radius-lg); border:1px solid var(--input-border); background:var(--input-bg); color:var(--text-1); padding:0 var(--space-3); font-size:var(--font-size-sm); font-family:inherit }
.msg-search-bar input:focus { outline:none; border-color:var(--blue) }
.msg-search-bar .btn-sm { height:32px; min-height:32px; padding:0 var(--space-2h); width:auto }
.ms-count { font-size:var(--font-size-xs); color:var(--text-3); min-width:44px; text-align:center; font-variant-numeric:tabular-nums }
.emoji-head input { width:100%; height:34px; min-height:34px; border-radius:var(--radius-lg); border:1px solid var(--input-border); background:var(--input-bg); color:var(--text-1); padding:0 var(--space-3); font-size:var(--font-size-sm); font-family:inherit }
.emoji-head input:focus { outline:none; border-color:var(--blue) }
.emoji-empty { grid-column:1/-1; text-align:center; color:var(--text-3); font-size:var(--font-size-sm); padding:var(--space-6) 0 }
body[data-theme="dark"] .msg-file,
body[data-theme="dark"] .msg-product,
body[data-theme="dark"] .msg-products { background:rgba(50,50,56,.96); border-color:rgba(255,255,255,.1); color:var(--text-1) }
body[data-theme="dark"] .mp-noimg { background:color-mix(in srgb,var(--blue) 22%,transparent) }
#chatInput, .conv-search input, .emoji-head input, .msg-search-bar input { color-scheme:light }
body[data-theme="dark"] #chatInput,
body[data-theme="dark"] .conv-search input,
body[data-theme="dark"] .emoji-head input,
body[data-theme="dark"] .msg-search-bar input { color-scheme:dark }
.cp-item .cp-mid b { color:var(--text-1); font-size:var(--font-size-sm) }
.cp-item.cp-on .cp-mid small { color:var(--text-2) }
.gif-tag { position:absolute; right:1px; bottom:1px; font-style:normal; font-size:8px; background:#FF453A; color:#fff; border-radius:var(--radius-xs); padding:0 var(--space-0h); line-height:1.5; font-weight:700 }
#chatInput.chat-input-editable { flex:0 0 auto; height:auto; min-height:42px; max-height:140px; overflow-y:auto; border-radius:var(--radius-xl); padding:var(--space-2h) var(--space-3); line-height:1.5 }
#chatInput.chat-input-editable:focus { border-color:var(--blue); box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 18%,transparent) }
#chatInput.chat-input-editable:empty::before { line-height:1.6; font-size:var(--font-size-base) }
.er-title { font-size:var(--font-size-2xs); color:var(--text-3); flex:none; letter-spacing:.5px }
.er-list { display:flex; gap:var(--space-0h); overflow-x:auto; flex:1; scrollbar-width:thin; padding-bottom:var(--space-0h) }
.er-list::-webkit-scrollbar { height:4px }
.er-qq img { width:100%; height:100%; object-fit:contain }
.er-qq:hover,.er-uni:hover { background:color-mix(in srgb,var(--blue) 14%,transparent); transform:scale(1.12) }
.er-qq:active,.er-uni:active { transform:scale(.88) }
.msg-recall-btn { opacity:0; flex:none; border:1px solid var(--input-border); background:var(--card); color:var(--text-2); font-size:var(--font-size-2xs); padding:var(--space-0h) var(--space-2); border-radius:var(--radius-md); cursor:pointer; white-space:nowrap; transition:opacity .18s, color .18s, transform .15s, background .2s; box-shadow:0 2px 10px rgba(0,0,0,.12) }
.msg-row:hover .msg-recall-btn { opacity:1 }
.msg-recall-btn:hover { color:#FF453A; border-color:#FF453A }
.msg-recall-btn:active { transform:scale(.9) }
.sc-exit-btn { position:absolute; top:14px; right:20px; z-index:6; border:1px solid rgba(255,255,255,.28); background:rgba(255,255,255,.12); color:#fff; padding:var(--space-1h) var(--space-3h); border-radius:var(--radius-3xl); cursor:pointer; font-size:var(--font-size-sm); letter-spacing:.5px; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); transition:background .2s, transform .15s, border-color .2s }
.sc-exit-btn:hover { background:rgba(255,69,58,.9); border-color:transparent }
.sc-exit-btn:active { transform:scale(.93) }
.arr-detail .up-thumb { width:34px; height:34px }
.arr-detail .up-thumb img { width:100%; height:100%; object-fit:cover; border-radius:var(--radius-xs) }
.empty-tip { color:var(--text-3); font-size:var(--font-size-sm); text-align:center; padding:var(--space-4h) 0 }
.glass-input { font-family:inherit; font-size:var(--font-size-sm); color:var(--text-1); background:var(--input-bg); border:1px solid var(--input-border); border-radius:var(--radius-md); padding:var(--space-2) var(--space-2h); outline:none; transition:.18s }
.glass-input:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(13,148,136,.14) }
.col-add-btn { width:100%; justify-content:center; border-style:dashed!important; padding:var(--space-2h)!important; color:var(--blue)!important }
thead th.dragging-col { opacity:.4 }
thead th.over-col { background:color-mix(in srgb,var(--blue) 12%,var(--hover)) }
.toolbar .search { height:36px; min-width:180px }
.toolbar select.glass,.toolbar .tbl-group-sel { height:36px; border-radius:var(--radius-lg); font-size:var(--font-size-sm); padding:0 var(--space-2h) }
.slot-chips { display:flex; flex-wrap:wrap; gap:var(--space-1); align-items:center; margin-bottom:var(--space-1h); min-height:26px }
.slot-chip .slot-code { max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.slot-empty { font-size:var(--font-size-xs); color:var(--text-3) }
.slot-chip-sm { display:inline-block; background:var(--input-bg); border:1px solid var(--input-border); border-radius:var(--radius-sm); padding:var(--space-0h) var(--space-1h); font-size:var(--font-size-2xs); margin:1px var(--space-0h) 1px 0; font-weight:500; color:var(--text-2) }
.pm-table { border:1px solid var(--input-border); border-radius:var(--radius-xl); overflow:hidden; background:var(--card) }
.pm-cb input { width:16px; height:16px; cursor:pointer; accent-color:var(--blue) }
body[data-perf="1"] .glass,
body[data-perf="1"] .glass-btn,
body[data-perf="1"] .modal,
body[data-perf="1"] .topbar,
body[data-perf="1"] .sidebar,
body[data-perf="1"] .stat-card,
body[data-perf="1"] .card,
body[data-perf="1"] .table-wrap,
body[data-perf="1"] .item-card,
body[data-perf="1"] .emoji-panel,
body[data-perf="1"] .notif-panel,
body[data-perf="1"] .zone-box,
body[data-perf="1"] .arr-detail,
body[data-perf="1"] .chat-msg,
body[data-perf="1"] .msg-bubble,
body[data-perf="1"] input,
body[data-perf="1"] select,
body[data-perf="1"] textarea { -webkit-backdrop-filter:none!important; backdrop-filter:none!important }
body[data-perf="1"] .glass,
body[data-perf="1"] .card,
body[data-perf="1"] .stat-card,
body[data-perf="1"] .table-wrap,
body[data-perf="1"] .arr-detail { background:var(--bg-card-solid,#fff)!important }
body[data-theme="dark"][data-perf="1"] .glass,
body[data-theme="dark"][data-perf="1"] .card,
body[data-theme="dark"][data-perf="1"] .stat-card,
body[data-theme="dark"][data-perf="1"] .table-wrap,
body[data-theme="dark"][data-perf="1"] .arr-detail { background:#16181d!important }
body[data-perf="1"] .orb,
body[data-perf="1"] .sc-stage,
body[data-perf="1"] .zone-box::after,
body[data-perf="1"] .fill-wave { animation:none!important }
.perf-seg { display:flex; gap:var(--space-1h) }
.perf-seg button { flex:1 }
.perf-seg button.on { background:var(--active); color:var(--blue); font-weight:600 }
body[data-theme="dark"] .msg-row.mine .msg-read.read { color:#4da3ff }
.arr-prod-thumb { width:34px; height:34px; border-radius:var(--radius-sm); object-fit:cover; border:1px solid var(--divider); background:var(--input-bg) }
.arr-prod-thumb-empty { width:34px; height:34px; border-radius:var(--radius-sm); display:grid; place-items:center; background:var(--input-bg); font-size:var(--font-size-md) }
.urgent-actions .btn { flex:1; min-height:44px; justify-content:center }
body[data-theme="dark"] .msg-read.read { color:#5eb1ff }
.af-date-label .af-date { width:135px; height:36px; min-height:36px; padding:0 var(--space-2h); font-size:var(--font-size-sm); border-radius:var(--radius-lg) }
.sup-search-input { flex:1; min-width:180px; height:38px }
.seg-divider { width:1px; height:22px; background:var(--divider); margin:0 var(--space-1h); align-self:center }
.seg-badge { display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 var(--space-1); border-radius:var(--radius-md); background:#FF453A; color:#fff; font-size:10.5px; font-weight:700; margin-left:var(--space-1) }
.my-status-row { display:flex!important; flex-direction:row!important; align-items:center; gap:var(--space-2h); max-width:320px; margin:0 }
.my-status-row span { margin:0; font-size:var(--font-size-sm); color:var(--text-2); white-space:nowrap }
.my-status-row select { height:36px; min-height:36px; padding:0 var(--space-3); font-size:var(--font-size-sm); border-radius:var(--radius-lg) }
.member-card.is-me .member-status { display:none }
.modal.glass,
.pop-sheet.glass,
.urgent-box.glass,
#globalLoading .gl-box.glass,
.global-loader .gl-box.glass { -webkit-backdrop-filter:none !important; backdrop-filter:none !important; background:var(--sheet-bg) !important; border-color:var(--sheet-border) !important; box-shadow:var(--sheet-shadow),var(--sheet-edge) !important }
.modal.glass::before,
.pop-sheet.glass::before,
.urgent-box.glass::before,
#globalLoading .gl-box.glass::before { mix-blend-mode:normal !important; opacity:1 !important; background:var(--sheet-sheen) !important }
.modal .glass,
.pop-sheet .glass,
.urgent-box .glass { -webkit-backdrop-filter:none !important; backdrop-filter:none !important; background:var(--sheet-inner) !important }
.modal .item-card,.pop-sheet .item-card,
.modal .perm-box,.pop-sheet .perm-box,
.modal .pp-list,.pop-sheet .pp-list { background:var(--sheet-inner) }
.modal-head h3,.pop-head h3,.urgent-title { letter-spacing:.2px }
.set-card { padding:var(--space-5) var(--space-5h) }
.set-card-title { font-size:var(--font-size-md); font-weight:700; margin:0 0 var(--space-3); display:flex; align-items:center; justify-content:space-between; gap:var(--space-2h); flex-wrap:wrap }
.set-card .set-row { margin-bottom:var(--space-3) }
.set-card .fld { margin-bottom:var(--space-3) }
.set-card .btn-ghost { margin-right:var(--space-2) }
.set-card .table-wrap { margin-top:var(--space-1) }
.modal.glass,
.pop-sheet.glass,
.urgent-box.glass,
.gl-box.glass,
#globalLoading .gl-box.glass,
.global-loader .gl-box.glass { -webkit-backdrop-filter:blur(12px) saturate(160%) !important; backdrop-filter:blur(12px) saturate(160%) !important; background:linear-gradient(162deg,var(--sheet-tint-a),var(--sheet-tint-b)) !important; border-color:var(--glass-border) !important; box-shadow:var(--sheet-shadow),var(--glass-edge) !important }
.modal.glass::before,
.pop-sheet.glass::before,
.urgent-box.glass::before,
.gl-box.glass::before,
#globalLoading .gl-box.glass::before { opacity:1 !important; mix-blend-mode:normal !important; background:
    radial-gradient(220px circle at var(--mx,50%) var(--my,-20%),var(--sheen-dot),transparent 58%),
    radial-gradient(120% 55% at 50% -12%,var(--sheen-arc),transparent 60%) !important }
body[data-theme="dark"] .sidebar.glass { box-shadow:0 1px 2px rgba(0,0,0,.45),0 12px 32px rgba(0,0,0,.5),var(--glass-edge) }
body[data-theme="dark"] .topbar.glass { box-shadow:0 1px 2px rgba(0,0,0,.4),0 10px 26px rgba(0,0,0,.45),var(--glass-edge) }
.page-enter .stat-grid > .stat-card,
.page-enter .dash-grid > .card { animation:v331CardIn .34s cubic-bezier(.2,.8,.2,1) backwards }
.page-enter .stat-grid > .stat-card:nth-child(2),
.page-enter .dash-grid > .card:nth-child(2) { animation-delay:.05s }
.page-enter .stat-grid > .stat-card:nth-child(3),
.page-enter .dash-grid > .card:nth-child(3) { animation-delay:.1s }
.page-enter .stat-grid > .stat-card:nth-child(4),
.page-enter .dash-grid > .card:nth-child(4) { animation-delay:.15s }
.page-enter .stat-grid > .stat-card:nth-child(5),
.page-enter .dash-grid > .card:nth-child(5) { animation-delay:.2s }
.page-enter .stat-grid > .stat-card:nth-child(6) { animation-delay:.25s }
.modal.glass,
.pop-sheet.glass,
.urgent-box.glass,
.gl-box.glass,
.emoji-panel.glass,
#globalLoading .gl-box.glass,
.global-loader .gl-box.glass { -webkit-backdrop-filter:blur(8px) !important; backdrop-filter:blur(8px) !important; background:linear-gradient(168deg,var(--lg-sheet-a),var(--lg-sheet-b)) !important; border-color:transparent !important; box-shadow:var(--lg-sheet-shadow) !important }
.modal.glass::before,
.pop-sheet.glass::before,
.urgent-box.glass::before,
.gl-box.glass::before,
.emoji-panel.glass::before,
#globalLoading .gl-box.glass::before { opacity:1 !important; mix-blend-mode:normal !important; background:linear-gradient(180deg,var(--lg-sheet-top),rgba(255,255,255,0) 26%) !important }
.modal-head.scrolled,.pop-head.scrolled { background:linear-gradient(180deg,var(--lg-head-scroll),var(--lg-head-scroll)); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); box-shadow:0 1px 0 var(--lg-head-line) }
.tdv-title { font-size:var(--font-size-lg); font-weight:700; margin-bottom:var(--space-2h); display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap }
.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) }
.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 }
.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 }
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 }
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 }
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-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 }
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 }
.chat-input-shell .emoji-panel.glass { position:absolute!important }
.rpt-to-pick { max-height:118px; overflow-y:auto }
.mf-dl { font-size:var(--font-size-xs); color:var(--blue); font-weight:600; flex-shrink:0; align-self:center }
.arr-edit-table .arr-photo-cell .up-thumb,.arr-edit-table .arr-photo-cell .p-thumb { width:40px; height:40px; border-radius:var(--radius-md); overflow:hidden }
.glass,
.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,
.modal.glass, .pop-sheet.glass, .urgent-box.glass, .gl-box.glass, .emoji-panel.glass, .user-menu.glass,
.chat-layout.glass, .arr-filter.glass,
.modal .glass, .pop-sheet .glass, .urgent-box .glass { background: transparent !important; background-image: none !important; background-color: transparent !important }
.glass, .glass-btn{ -webkit-backdrop-filter: saturate(160%) !important; backdrop-filter: saturate(160%) !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, .msg-bubble{ -webkit-backdrop-filter: saturate(160%) !important; backdrop-filter: saturate(160%) !important }
.modal.glass, .pop-sheet.glass, .urgent-box.glass, .gl-box.glass, .emoji-panel.glass, .user-menu.glass{ -webkit-backdrop-filter: saturate(170%) !important; backdrop-filter: saturate(170%) !important }
.glass, .card.glass, .stat-card.glass, .modal.glass, .pop-sheet.glass, .user-menu.glass,
.chat-layout.glass, .arr-filter.glass { box-shadow: inset 0 1px 1px rgba(255,255,255,.6), inset 0 0 0 1px var(--ng-ring), 0 8px 32px rgba(0,0,0,.08) !important }
input, select, textarea, [contenteditable="true"],
.btn, .btn-ghost, .btn-sm, .btn-primary, .btn-danger, .btn-success,
.icon-btn, .icon-zoom, .side-collapse, .modal-x,
.theme-toggle, .chat-tool, .zoom-ctl button,
.search-box input, .af-date, .af-kw, .member-status-sel,
.tbl-group-sel, .pct-range, .cell-edit, .paste-able,
.user-chip, .notif-bell, .stat-ico, .upload-slot, .thumb { background: transparent !important; background-image: none !important; background-color: transparent !important; -webkit-backdrop-filter: saturate(160%) !important; backdrop-filter: saturate(160%) !important }
.btn, .btn-ghost, .btn-sm, .btn-primary, .btn-danger, .btn-success,
.icon-btn, .icon-zoom, .side-collapse, .modal-x, .theme-toggle,
.chat-tool, .zoom-ctl button, .user-chip, .notif-bell, .stat-ico,
.upload-slot, .thumb { border: 1px solid var(--input-border) !important; box-shadow: inset 0 1px 1px rgba(255,255,255,.5), inset 0 0 0 1px rgba(255,255,255,.12) !important }
input, select, textarea, [contenteditable="true"],
.search-box input, .af-date, .af-kw, .member-status-sel,
.tbl-group-sel, .pct-range, .cell-edit { border: 1px solid var(--input-border) !important; box-shadow: inset 0 1px 1px rgba(255,255,255,.4) !important }
input:focus, select:focus, textarea:focus, .cell-edit:focus, .search-box input:focus { border-color: var(--blue) !important; box-shadow: 0 0 0 3px rgba(13,148,136,.16) !important }
.tags, .tag-pending, .tag-confirmed, .tag-cancelled, .tag-admin, .tag-user,
.tag-high, .tag-med, .tag-low, .tpt, .task-receipt-mini, .task-rpt-cnt,
.cal-chip, .pp-opt, .pp-opt.on, .grp-cnt, .task-assign.mine { background: transparent !important; background-image: none !important; background-color: transparent !important; -webkit-backdrop-filter: saturate(150%) !important; backdrop-filter: saturate(150%) !important; box-shadow: inset 0 0 0 1px var(--input-border) !important }
.cal-chip, .pp-opt, .pp-opt.on { color: var(--blue) !important }
.cal-cell, .sch-item, .rpt-body, .rpt-input textarea, .perm-box,
.notif-modal-list .notif-item, .slot-wrap, .slot-chip, .p-noimg, .p-thumb-lg,
.file-chip, .mpu, .um-item, .mtg-more, .prof-avatar-btn, .cp-item { background: transparent !important; background-image: none !important; background-color: transparent !important; -webkit-backdrop-filter: saturate(150%) !important; backdrop-filter: saturate(150%) !important; border: 1px solid var(--input-border) !important }
.mpu:has(input:checked), .notif-modal-list .notif-item.unread, .pp-opt.on { box-shadow: inset 0 0 0 1px rgba(13,148,136,.4) !important }
.modal input, .pop-sheet input,
.modal select, .pop-sheet select,
.modal textarea, .pop-sheet textarea,
.modal [contenteditable="true"], .pop-sheet [contenteditable="true"],
.modal .item-card, .pop-sheet .item-card,
.modal .ar-prod-ph, .pop-sheet .ar-prod-ph,
.modal .perm-box, .pop-sheet .perm-box,
.modal .slot-wrap, .pop-sheet .slot-wrap,
.modal .cal-cell, .pop-sheet .cal-cell,
.modal .notif-item, .pop-sheet .notif-item { background: transparent !important; background-image: none !important; background-color: transparent !important; -webkit-backdrop-filter: saturate(160%) !important; backdrop-filter: saturate(160%) !important; border-color: var(--input-border) !important }
.p-thumb, .ar-prod-img { background: transparent !important; border: 1px solid var(--input-border) !important }
/* v9.6 紧急补回旧style.css丢失的全局缩略图基础尺寸，防止图片按原尺寸撑死布局 */
.p-thumb{ width:42px; height:42px; border-radius:var(--radius-md); object-fit:cover; display:block; flex-shrink:0; background:var(--input-bg); border:1px solid var(--input-border); cursor:zoom-in; transition:transform .18s; }
.p-thumb:hover{ transform:scale(1.1); }
.thumb{ width:42px; height:42px; border-radius:var(--radius-md); object-fit:cover; display:block; flex-shrink:0; border:1px solid var(--input-border); }
.p-noimg{ width:42px; height:42px; border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center; background:var(--input-bg); color:var(--text-3); border:1px solid var(--input-border); flex-shrink:0; }
.p-thumb-lg img,.p-thumb-lg svg{ width:100%; height:100%; object-fit:cover; }
/* 局部覆盖保持 */
.up-thumb .p-thumb{ width:64px; height:64px; border-radius:0; }
.task-imgs .p-thumb,.cell-imgs .p-thumb,.cp-item .p-thumb{ width:48px; height:48px; }
.arr-edit-table .arr-photo-cell .up-thumb,.arr-edit-table .arr-photo-cell .p-thumb{ width:40px; height:40px; border-radius:var(--radius-md); overflow:hidden; }
.glass, .glass-btn, .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, .zone-viewport.glass{ -webkit-backdrop-filter:saturate(160%) !important; backdrop-filter:saturate(160%) !important }
.modal.glass, .pop-sheet.glass, .urgent-box.glass, .gl-box.glass, .emoji-panel.glass, .user-menu.glass, #globalLoading .gl-box.glass, .global-loader .gl-box.glass{ -webkit-backdrop-filter:saturate(170%) !important; backdrop-filter:saturate(170%) !important }
.msg-bubble, .msg-file, .msg-product, .msg-products, .conv-col, .conv-head, .chat-compose, .chat-layout, .chat-input-bar, .conv-item.active{ -webkit-backdrop-filter:saturate(160%) !important; backdrop-filter:saturate(160%) !important }
input, select, textarea, [contenteditable="true"],
.btn, .btn-ghost, .btn-sm, .btn-primary, .btn-danger, .btn-success,
.icon-btn, .icon-zoom, .side-collapse, .modal-x, .theme-toggle,
.chat-tool, .zoom-ctl button, .search-box input, .af-date, .af-kw,
.member-status-sel, .tbl-group-sel, .pct-range, .cell-edit, .paste-able,
.user-chip, .notif-bell, .stat-ico, .upload-slot, .thumb,
.nav-item:hover, .nav-item.active,
.tags, .tag-pending, .tag-confirmed, .tag-cancelled, .tag-admin, .tag-user,
.tag-high, .tag-med, .tag-low, .tpt, .task-receipt-mini, .task-rpt-cnt,
.cal-chip, .pp-opt, .pp-opt.on, .grp-cnt,
.table-wrap thead th, table thead th, tbody tr:hover, #tblView td[data-rid]:hover,
.grp-row td, .cal-cell, .sch-item, .rpt-body, .rpt-input textarea, .perm-box,
.notif-modal-list .notif-item, .slot-wrap, .slot-chip, .p-noimg, .p-thumb-lg,
.file-chip, .mpu, .um-item, .mtg-more, .prof-avatar-btn, .cp-item, .hwater { -webkit-backdrop-filter:saturate(150%) !important; backdrop-filter:saturate(150%) !important }
body[data-perf="1"] .glass, body[data-perf="1"] .glass-btn { -webkit-backdrop-filter:saturate(140%) !important; backdrop-filter:saturate(140%) !important }
.modal-head.scrolled, .pop-head.scrolled { -webkit-backdrop-filter:none !important; backdrop-filter:none !important }
.ck-mine-table td { vertical-align:middle }
.ck-scan-row { display:flex; gap:var(--space-2) }
.ck-scan-row input { flex:1; min-width:0 }
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"][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 }
.perf-seg button.on, .seg button.on { background:var(--brand-soft,var(--active)) !important; color:var(--brand,var(--color-primary)) !important }
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"] .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-1) !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 }
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-1) !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 }
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 }
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 }
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-1) !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !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"] .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 }
body[data-perf="1"] .toast.ok { background:linear-gradient(135deg,#0f9d6e,#0b7f57) !important }
body[data-perf="1"] .toast.err { background:linear-gradient(135deg,#e14b4b,#c43333) !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 }
#zpList table th:nth-child(6),#zpList td.zp-spec,
#zpList table th:nth-child(7),#zpList td.zp-qty { white-space:nowrap; text-align:right }
#zpList td.zp-spec b,#zpList td.zp-qty b { font-variant-numeric:tabular-nums }
#zpList tr.zp-open > td { background:var(--surface-2,rgba(13,148,136,.05)) }
#zpList tr.zp-detail > td { padding:0 !important; background:var(--surface-2,rgba(0,0,0,.03)) }
body[data-theme="dark"] #zpList tr.zp-detail > td { background:rgba(255,255,255,.03) }
body[data-perf="1"] .brand { padding:var(--space-1h) var(--space-2) var(--space-4) }
body[data-perf="1"] .notif-dot { background:var(--red); color:#fff }
body[data-perf="1"] .glass:not(.zone-viewport):not(.zone-world):not(input):not(select):not(textarea),
body[data-perf="1"] .card,
body[data-perf="1"] .set-card,
body[data-perf="1"] .task-item,
body[data-perf="1"] .member-card,
body[data-perf="1"] .task-mini,
body[data-perf="1"] .cap-overview { background:var(--surface) !important; border:1px solid var(--line) !important; border-radius:var(--r-card); box-shadow:var(--sh) !important; padding:var(--space-4h) }
body[data-perf="1"] .card-title,body[data-perf="1"] .set-card-title,body[data-perf="1"] .panel-title { color:var(--text-1); font-weight:700 }
body[data-perf="1"] .stat-card.clickable:hover .stat-go { color:var(--accent) }
body[data-perf="1"] .seg button.on,body[data-perf="1"] .perf-seg button.on,
body[data-perf="1"] .tab.active { background:var(--accent-soft) !important; color:var(--accent) !important; border-color:var(--accent-line) !important; font-weight:600 }
body[data-perf="1"] .pager-info { color:var(--text-3); font-size:var(--font-size-sm) }
body[data-perf="1"] .pager-ps { color:var(--text-3); font-size:var(--font-size-sm) }
body[data-perf="1"] #tblHead th.over-col { box-shadow:inset 3px 0 0 var(--accent); color:var(--accent) }
body[data-perf="1"] .notif-modal-list .notif-item:hover { border-color:var(--accent) }
body[data-perf="1"] .modal-head.scrolled { box-shadow:0 4px 12px rgba(20,30,55,.06) }
body[data-perf="1"] .dlg-foot { display:flex; justify-content:flex-end; gap:var(--space-2) }
body[data-perf="1"] .tag,body[data-perf="1"] .tags .tag { border-radius:var(--radius-full); font-weight:600 }
body[data-perf="1"] .login-card .btn-primary { width:100%; padding:var(--space-3); margin-top:var(--space-2) }
body[data-perf="1"] .unread-dot { background:var(--red) }
body[data-perf="1"] .sp-card,.rpt-item { background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-card) }
body[data-perf="1"] .conv-search { color:var(--text-3) }
body[data-perf="1"] .chat-top-btn { background:var(--surface-2); border:1px solid var(--line); color:var(--text-2); border-radius:var(--radius-lg) }
body[data-perf="1"] .chat-top-btn:hover { color:var(--accent); border-color:var(--accent) }
.chat-input-editable { color:var(--text-1) }
.chat-input-editable:empty::before { color:var(--text-3) }
body[data-perf="1"] .kw-hl { background:var(--warning-soft); color:var(--color-warning) }
body[data-perf="1"] .bg-swatch.active { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft) }
body[data-perf="1"] .file-chip { background:var(--surface-2); color:var(--accent); border:1px solid var(--line); border-radius:var(--radius-md) }
body[data-perf="1"] .up-thumb { border:1px solid var(--line); border-radius:var(--radius-md); background:var(--surface-2) }
.paste-able.paste-hover { outline:2px dashed var(--accent); outline-offset:2px }
body[data-perf="1"] .empty { color:var(--text-3) }
body[data-perf="1"] .empty-sm { color:var(--text-3) }
body[data-perf="1"] table tbody tr.row-sel td,
body[data-perf="1"] table tbody tr.selected td,
body[data-perf="1"] .list-row.selected,
body[data-perf="1"] .row.selected { background:var(--color-selected-strong) !important; box-shadow:inset 3px 0 0 var(--color-selected-border) !important; color:var(--color-text-primary) }
body[data-perf="1"] #tblView tr.row-sel td,
body[data-perf="1"] #tblView tr.selected td { background:var(--color-selected-strong) !important; box-shadow:inset 3px 0 0 var(--color-selected-border) !important }
body[data-perf="1"] table tbody tr.row-sel:hover td,
body[data-perf="1"] table tbody tr.selected:hover td { background:var(--color-primary-bg-strong) !important }
body[data-perf="1"] .toolbar .search,body[data-perf="1"] .toolbar select { width:auto; min-width:160px }
body[data-perf="1"] td.num,body[data-perf="1"] .cell-num,body[data-perf="1"] .td-num { font-variant-numeric:tabular-nums; text-align:right }
.help-doc { font-size:var(--font-size-sm); line-height:1.7; color:var(--color-text-secondary); max-height:62vh; overflow:auto }
.help-doc p { margin:0 0 var(--space-2h) }
.help-doc b { color:var(--color-text-primary) }
.help-doc code { background:var(--color-surface-3); padding:1px var(--space-1h); border-radius:var(--radius-xs); font-size:var(--font-size-xs); color:var(--color-primary) }
.help-doc ul { margin:var(--space-1) 0 var(--space-2h); padding-left:var(--space-5) }
.help-doc li { margin-bottom:var(--space-1) }
.skip-link:focus { top:0; outline:2px solid #fff; outline-offset:2px }
.dlg-msg .dlg-ico { flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; background:var(--color-info-bg); color:var(--color-info) }
.dlg-msg.dlg-danger .dlg-ico { background:var(--color-danger-bg); color:var(--color-danger) }
.dlg-msg.dlg-danger { font-weight:500 }
.dlg-sub { margin-top:var(--space-1h); font-size:var(--font-size-xs); color:var(--color-text-muted) }
.dlg-confirm-input { width:100%; margin-top:var(--space-3); border:1px solid var(--color-danger-border)!important }
table td,.modal-body,.pop-body,.help-doc,.cell-text,.note,pre,code { user-select:text; -webkit-user-select:text }
button,.btn,.seg button,.tab,.chip,.nav-item,.pager button,th[data-sort],.col-drag,label.switch,.switch { user-select:none; -webkit-user-select:none }
table tbody tr.selected>td,
table tbody tr[aria-selected="true"]>td,
.list-row.selected,.list-row[aria-selected="true"],
.list-item.selected,.pick-item.selected,.pick-row.selected,.menu-item.selected,.row.selected { background:var(--color-primary-bg)!important; color:var(--color-primary)!important; box-shadow:inset 3px 0 0 var(--color-primary) }
table tbody tr.selected:hover>td,.list-row.selected:hover,.list-item.selected:hover { background:var(--color-primary-bg-strong)!important }
table tbody tr[role="button"],.list-row[role="button"],.clickable { cursor:pointer }

/* ============================================================
   阶段A样板 · PC 仪表盘视觉升级（增量，不重写）
   风格：Linear/Vercel/飞书专业版 · 中性灰阶+单一品牌色点缀
   ============================================================ */

/* ---------- 1) skip-link：默认 sr-only，仅键盘 focus 可见 ---------- */
.skip-link{
  position:fixed; left:16px; z-index:9999;
  width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;
  background:var(--color-primary); color:var(--color-primary-text);
  border-radius:0 0 var(--radius-lg) var(--radius-lg); font-weight:600; font-size:var(--font-size-base); text-decoration:none;
}
.skip-link:focus,.skip-link:focus-visible{
  width:auto; height:auto; margin:0; overflow:visible;
  clip:auto; clip-path:none; white-space:normal;
  top:0; padding:var(--space-2h) var(--space-4h);
  outline:2px solid var(--color-focus-ring); outline-offset:2px;
}

/* ---------- 2) 侧栏 brand：修 logo 与站名挤压重叠 ---------- */
.brand{ gap:var(--space-3); padding:var(--space-3h) var(--space-3h) var(--space-3); }
.brand-logo{ width:38px; height:38px; flex:0 0 auto; border-radius:var(--radius-md); font-size:var(--font-size-lg); }
.brand-txt{ flex:1 1 auto; min-width:0; gap:1px; }
.brand-txt b{ display:block; font-size:var(--font-size-md); line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.brand-txt small{ display:block; max-width:100%; line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.side-collapse{ flex:0 0 auto; margin-left:0; }

/* ---------- 3) 侧栏导航：激活态统一语言（tint 底+主色文字+左 3px 指示条，圆角项） ---------- */
.nav-item{
  position:relative; border-radius:var(--radius-md);
  gap:var(--space-2h); padding:var(--space-2h) var(--space-3); margin-bottom:var(--space-0h);
  transition:background-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard);
}
.nav-item .ni-ico{ width:22px; height:22px; flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; opacity:.85; }
.nav-item .ni-ico svg{ width:20px; height:20px; }
.nav-item:hover{ background:var(--hover); color:var(--text); }
.nav-item.active{ background:var(--color-primary-bg); color:var(--color-primary); font-weight:600; }
.nav-item.active .ni-ico{ color:var(--color-primary); opacity:1; }
.nav-item.active::before{
  content:''; position:absolute; left:3px; top:50%; transform:translateY(-50%);
  width:var(--nav-active-bar-w); height:20px; border-radius:var(--radius-full);
  background:var(--color-primary);
}
body[data-theme="dark"] .nav-item.active{ color:var(--color-primary); }

/* ---------- 4) 顶栏：标题与控件同基线，右侧控件等高 ---------- */
.topbar{ gap:var(--space-3h); }
.topbar h1{ font-size:var(--font-size-lg); font-weight:700; letter-spacing:.2px; }
.top-actions{ gap:var(--space-2); }
.top-actions .glass-btn{ height:var(--tobar-ctl-h); min-width:var(--tobar-ctl-h); padding:0 var(--space-3); font-size:var(--font-size-base); }
.top-actions .icon-zoom{ width:var(--tobar-ctl-h); padding:0; font-size:var(--font-size-sm); font-weight:600; }
.notif-bell{ width:var(--tobar-ctl-h); min-width:var(--tobar-ctl-h); height:var(--tobar-ctl-h); padding:0; border-radius:var(--radius-md); }
.user-chip{ height:var(--tobar-ctl-h); padding:0 var(--space-3); border-radius:var(--radius-full); font-size:var(--font-size-sm); }
.user-chip .uc-caret{ opacity:.6 }

/* ---------- 5) 统计卡：白底+1px浅边+柔和双层阴影，hover 轻微上浮 ---------- */
.stat-card{
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-card); padding:var(--space-5);
  box-shadow:var(--shadow-card);
}
.stat-card:hover{ box-shadow:var(--shadow-card-hover); transform:translateY(-2px); }
.stat-card .stat-ico{
  width:44px; height:44px; border-radius:var(--radius-xl);
  display:grid; place-items:center; flex:0 0 auto;
}
.stat-card .stat-ico svg{ width:22px; height:22px; }
.stat-card .stat-num{ font-size:var(--font-size-3xl); font-weight:700; line-height:1.15; letter-spacing:-.3px; font-variant-numeric:tabular-nums; color:var(--text); }
.stat-card .stat-label{ font-size:var(--font-size-sm); color:var(--text-3); margin-top:var(--space-0h); }

/* ---------- 6) 库容环：卡片呼吸感 ---------- */
.cap-overview{ padding:var(--space-5); }
.cap-ov-title{ margin-bottom:var(--space-4); }

/* ---------- 7) 列表卡：表头浅灰 sticky、行高、hover 浅主色、最浅 divider ---------- */
.table-wrap{ border-radius:var(--radius-card); box-shadow:var(--shadow-card); }
.table-wrap thead th{
  background:var(--surface-2); color:var(--text-2);
  font-weight:600; font-size:var(--font-size-xs); letter-spacing:.2px;
  position:sticky; top:0; z-index:2;
}
.table-wrap tbody td{ padding:var(--space-3) var(--space-3h); }
.table-wrap tbody tr{ transition:background-color var(--duration-fast) var(--ease-standard); }
.table-wrap tbody tr:hover td{ background:var(--color-primary-bg); }
/* 空态：图标+说明，而非一行文字 */
.table-wrap .empty, .content .empty{ padding:var(--space-10) var(--space-5); }
.table-wrap .empty .e-ico, .content .empty .e-ico{
  width:56px; height:56px; font-size:var(--font-size-3xl); line-height:56px; border-radius:var(--radius-2xl);
  background:var(--surface-2); color:var(--text-3); opacity:1; margin-bottom:var(--space-1);
}

/* ---------- 8) Toast：白底阴影卡+左侧语义色条+图标 ---------- */
.toast.toast{
  left:50%; transform:translateX(-50%) translateY(16px);
  min-width:260px; max-width:min(420px,86vw);
  padding:var(--space-3) var(--space-4) var(--space-3) var(--space-4h);
  background:var(--surface)!important; color:var(--text)!important;
  border:1px solid var(--line)!important; border-radius:var(--radius-xl);
  box-shadow:var(--shadow-card-hover)!important;
  font-size:var(--font-size-base); font-weight:500; line-height:1.45;
  display:flex; align-items:center; gap:var(--space-2h);
  pointer-events:none; opacity:0; transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out);
}
.toast.toast::before{
  content:''; flex:0 0 auto; width:4px; height:20px; border-radius:var(--radius-full);
  background:var(--text-3);
}
.toast.toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }
.toast.toast.ok,.toast.toast.success{ background:var(--surface)!important; color:var(--text)!important; }
.toast.toast.ok::before,.toast.toast.success::before{ background:var(--color-success); }
.toast.toast.err,.toast.toast.error{ background:var(--surface)!important; color:var(--text)!important; }
.toast.toast.err::before,.toast.toast.error::before{ background:var(--color-danger); }
.toast.toast.warn{ background:var(--surface)!important; color:var(--text)!important; }
.toast.toast.warn::before{ background:var(--color-warning); }
.toast.toast.info{ background:var(--surface)!important; color:var(--text)!important; }
.toast.toast.info::before{ background:var(--color-info); }

/* ---------- 9) 骨架屏 shimmer ---------- */
.skeleton{ position:relative; overflow:hidden; background:var(--skeleton-from); border-radius:var(--radius-md); }
.skeleton::after{
  content:''; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,var(--skeleton-to),transparent);
  animation:skelShimmer 1.4s infinite;
}
@keyframes skelShimmer{ 100%{ transform:translateX(100%); } }

/* ============================================================
   阶段A·精修（用户打回）：6 项硬伤
   ============================================================ */

/* ---------- 1) 侧栏底部主题切换：图标+文字横排一行，42px，不竖排 ---------- */
.side-foot{ padding:var(--space-2) var(--space-3) var(--space-3); border-top:1px solid var(--divider); }
.theme-toggle{
  width:100%; height:42px; border-radius:var(--radius-md);
  display:flex; align-items:center; gap:var(--space-2h); padding:0 var(--space-3);
  background:var(--surface-2); border:1px solid var(--line); color:var(--text-2);
}
.theme-toggle .theme-ico{ width:20px; height:20px; flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; }
.theme-toggle .theme-ico svg{ width:18px; height:18px; }
.theme-toggle .ni-txt{ flex:1; min-width:0; text-align:left; white-space:nowrap; overflow:visible; font-size:var(--font-size-sm); line-height:1; }
.sidebar.collapsed .theme-toggle{ justify-content:center; padding:0; }
.sidebar.collapsed .theme-toggle .ni-txt{ display:none; }

/* ---------- 2) brand：logo 40×40，副标题一行不省略 ---------- */
.brand-logo{ width:40px; height:40px; border-radius:var(--radius-xl); font-size:var(--font-size-xl); }
.brand-txt small{ white-space:nowrap; overflow:visible; text-overflow:clip; }

/* ---------- 3) 统计卡：三层节奏垂直堆叠，左对齐，边界可辨 ---------- */
.stat-card{
  flex-direction:column; align-items:flex-start; gap:var(--space-2);
  padding:var(--space-5); border:1px solid var(--line);
  box-shadow:var(--shadow-card);
}
.stat-card:hover{ box-shadow:var(--shadow-card-hover); transform:translateY(-2px); }
.stat-card .stat-ico{ width:40px; height:40px; border-radius:var(--radius-lg); }
.stat-card .stat-ico svg{ width:20px; height:20px; }
.stat-card .stat-num{ font-size:var(--font-size-3xl); font-weight:600; line-height:1.1; letter-spacing:-.2px; font-variant-numeric:tabular-nums; color:var(--text); }
.stat-card .stat-label{ font-size:var(--font-size-sm); color:var(--text-3); margin-top:0; }
.stat-grid{ gap:var(--space-4); }

/* ---------- 4) 表格卡片：完整白卡 + 通栏表头 + 空态居中无残留线 ---------- */
.table-wrap{
  border:1px solid var(--line); border-radius:var(--radius-card);
  box-shadow:var(--shadow-card); overflow:hidden;
}
.table-wrap table{ width:100%; border-collapse:collapse; }
.table-wrap thead{ background:var(--surface-2); }
.table-wrap thead th{
  background:transparent; position:static; z-index:auto;
  font-size:var(--font-size-xs); font-weight:600; color:var(--text-2);
  border-bottom:1px solid var(--line);
  padding:var(--space-2h) var(--space-3h);
}
.table-wrap tbody td{ padding:var(--space-3) var(--space-3h); border-bottom:1px solid var(--divider); }
.table-wrap tbody tr:last-child td{ border-bottom:none; }
.table-wrap tbody tr:hover td{ background:var(--color-primary-bg); }
/* 空态：图标+说明居中，无残留横线 */
.table-wrap .empty{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:var(--space-2h); padding:var(--space-10) var(--space-5); border-bottom:none;
}
/* 表格里的空态 td 必须留在表格布局中：给 td 设 display:flex/block 会让它不再是单元格，
   被匿名单元格包住后 colspan 失效 —— 实测空态行只剩第一列宽（货源库 352/1276，图标与文案挤在左侧）。
   居中改由单元格自身承担：text-align 居中 + 图标块 margin:auto（DESIGN.md §3.1：用 display:revert 回到 UA 值）。 */
.table-wrap td.empty{
  display:revert; padding:var(--space-10) var(--space-5); border-bottom:none; text-align:center;
}
.table-wrap td.empty .e-ico{ margin-left:auto; margin-right:auto; margin-bottom:var(--space-2h); }
.table-wrap .empty .e-ico{
  width:48px; height:48px; border-radius:var(--radius-xl); background:var(--surface-2);
  display:flex; align-items:center; justify-content:center; color:var(--text-3);
  font-size:0; margin:0; opacity:1;
}
.table-wrap .empty .e-ico svg{ width:22px; height:22px; }
/* cap 标题图标对齐 */
.cap-ov-title{ align-items:center; gap:var(--space-2); }
.cap-ov-title svg{ flex:0 0 auto; color:var(--text-2); }

/* ---------- 5) 顶栏控件 34px 垂直居中 ---------- */
.topbar{ align-items:center; }

/* ---------- 6) 对讲条 SVG 居中 ---------- */
.ic-logo{ display:inline-flex; align-items:center; justify-content:center; color:var(--text-2); }
.ic-ico-btn{ display:inline-flex; align-items:center; justify-content:center; }
.ic-ptt{ display:inline-flex; align-items:center; justify-content:center; gap:var(--space-1h); }

/* ============================================================
   阶段B · PC 全站铺开（全局组件基准，与阶段A样板一致）
   ============================================================ */

/* ---------- B1) .main 底部留白，避免 icDock 挡最后一行/分页 ---------- */
.main{ padding-bottom:96px; }

/* ---------- B2) 弹窗档位：560 / 720 / 900 / 1120 ---------- */
.modal{ border-radius:var(--radius-lg); }
.modal-lg{ width:720px !important; }
.modal-xl{ width:900px !important; }
.modal-xxl{ width:1120px !important; }
.modal-head{ padding:var(--space-4h) var(--space-6); }
.modal-head h3{ font-size:var(--font-size-lg); font-weight:600; letter-spacing:.2px; }
.modal-body{ padding:var(--space-5) var(--space-6); }
.modal-foot{ padding:var(--space-3h) var(--space-6); }
.modal-mask{ -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.pop-mask{ -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.pop-sheet{ border-radius:var(--radius-lg); }

/* ---------- B3) 按钮三档高度统一 ---------- */
.btn{ min-height:34px; padding:var(--space-1h) var(--space-3h); border-radius:var(--radius-md); }
.btn-sm{ min-height:30px; padding:var(--space-1) var(--space-3); }
.btn-primary{ font-weight:600; }

/* ---------- B4) 表单控件：focus 主色柔光环（已基础具备，统一圆角/高度） ---------- */
input,select,textarea{ border-radius:var(--radius-md); }
input[type="date"],input[type="time"]{ height:36px; }

/* ---------- B5) 分页按钮 ---------- */
.pager{ gap:var(--space-2); align-items:center; margin-top:var(--space-3h); }
.pager .btn{ min-width:32px; padding:var(--space-1) var(--space-3); }
.pager .btn:disabled{ opacity:.45; cursor:not-allowed; }
.pager .pager-num.active,.pager .btn[aria-current="page"]{
  background:var(--color-primary); color:var(--color-primary-text); border-color:var(--color-primary); font-weight:600;
}

/* ---------- B6) 全站空态统一（以仪表盘 inbox 为基准） ---------- */
.empty{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:var(--space-2h); padding:var(--space-10) var(--space-5); text-align:center; color:var(--text-3);
}
.empty .e-ico{
  width:48px; height:48px; border-radius:var(--radius-xl); background:var(--surface-2);
  display:flex; align-items:center; justify-content:center; color:var(--text-3);
  font-size:0; margin:0; opacity:1;
}
.empty .e-ico svg{ width:22px; height:22px; }
/* 表内空 td 也居中：但 display 必须保持单元格（block/flex 会让 colspan 失效），靠 text-align 居中 */
td.empty{ display:revert; text-align:center; }
.empty-block{
  display:flex; flex-direction:column; align-items:center; gap:var(--space-2h);
  padding:var(--space-12) var(--space-5); color:var(--text-3); text-align:center;
}

/* ---------- B7) 精致转圈 ---------- */
.spinner{
  width:22px; height:22px; border-radius:50%;
  border:2.5px solid var(--color-primary-bg); border-top-color:var(--color-primary);
  animation:spnSpin .8s linear infinite; display:inline-block;
}
@keyframes spnSpin{ to{ transform:rotate(360deg); } }
.loading-row{ display:flex; align-items:center; gap:var(--space-2h); color:var(--text-3); font-size:var(--font-size-sm); padding:var(--space-7); justify-content:center; }

/* ---------- B8) 可排序表头：规范箭头，不断线 ---------- */
th.sortable{ cursor:pointer; white-space:nowrap; user-select:none; }
th.sortable::after{
  content:'⇅'; margin-left:var(--space-1h); font-size:var(--font-size-2xs); color:var(--text-3); opacity:.7;
}
th.sortable.asc::after{ content:'↑'; color:var(--color-primary); opacity:1; }
th.sortable.desc::after{ content:'↓'; color:var(--color-primary); opacity:1; }
th.sortable.asc, th.sortable.desc{ color:var(--color-primary); }

/* ---------- B9) 卡片悬浮（全站可点卡片统一上浮） ---------- */
.member-card,.list-item,.notif-item,.task-card,.zone-box,.mtg-card{ transition:box-shadow var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard); }
.member-card.clickable:hover,.list-item:hover,.notif-item:hover{ transform:translateY(-2px); box-shadow:var(--shadow-card-hover); }

/* ---------- B10) 徽章/标签统一胶囊 ---------- */
.tag,.chip,.mini-chip,.badge{ border-radius:var(--radius-full); }

/* ============================================================
   cy260926 · 样式修复与美化补丁
   背景：cy260925 的 CSS 分层归并过程中，下列类在「已加载的 6 个样式层」中缺失
   （部分原本只存在于旧版 app.js 的内联样式里，重构时被一并丢弃），
   造成列表选择框、任务完成态、上货作业状态徽章、货架标识等视觉不一致。
   ============================================================ */

/* C1) 列表行选择框统一主色（flow/io/check/ip 等此前完全无样式，勾选态是浏览器默认蓝）
   注意：这里只能放 <input> 类。原先把容器 .ck-asg-pick（= <div class="member-pick ck-asg-pick">）
   也并进来，导致「新建盘点 → 盘点人员」整个选择区被设成 15×15px、16 个芯片全部溢出容器（排版错乱）。 */
.flow-chk,.io-chk,.check-chk,.ip-chk,.arow-check,.prow-check,.row-chk,.rpt-chk,
.asg-chk{ accent-color:var(--color-primary); cursor:pointer; width:15px; height:15px; margin:0; vertical-align:middle; }

/* C2) 任务完成态（此前 .task-done 无样式，已完成与进行中视觉完全相同） */
.task-item.task-done{ opacity:.62; }
.task-item.task-done .task-mini-title,.task-item.task-done .task-title{ text-decoration:line-through; color:var(--text-3); }

/* C3) 分段标签容器（共享页使用 .seg-tabs，此前无样式导致按钮贴在一起） */
.seg-tabs{ display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap; }
.seg-tabs .btn{ border-radius:var(--radius-full); }

/* C4) 信息 / 重要语义提示条（仪表盘公告用 .is-info / .is-important，此前无样式） */
.is-info{ background:var(--color-info-bg,rgba(2,132,199,.08)); border-left:3px solid var(--color-info,#0284C7); }
.is-important{ background:var(--color-warning-bg,rgba(217,119,6,.08)); border-left:3px solid var(--color-warning,#D97706); }

/* C5) 上传缩略图行（上货作业页用 .up-thumb-row，此前无样式会导致缩略图竖向堆叠） */
.up-thumb-row{ display:flex; flex-wrap:wrap; gap:var(--space-2); margin-top:var(--space-2); min-height:0; }
.up-thumb-row:empty{ display:none; }

/* C6) 作业状态徽章（.pf-badge 旧版仅存在于 app.js 内联样式，重构后丢失） */
.pf-badge{ display:inline-flex; align-items:center; gap:var(--space-1); padding:var(--space-0h) var(--space-2); border-radius:var(--radius-full);
  font-size:var(--font-size-xs); font-weight:600; line-height:1.6; background:var(--color-neutral-bg,#f2f4f7); color:var(--color-neutral-text,#475467); }
.pf-badge.active{ background:var(--color-success-bg,#e8f9ef); color:var(--color-success-text,#12713c); }
.pf-badge.pending{ background:var(--color-warning-bg,#fff6e6); color:var(--color-warning-text,#9a6200); }
.pf-badge.disabled{ background:var(--color-neutral-bg,#f2f4f7); color:var(--color-neutral-text,#475467); }

/* C7) 区域货架 / 实货位标识（.is-real / .is-shelf 无样式，货架区域与普通区域无区分） */
.zone-box.is-shelf{ border-style:dashed; border-width:2px; }
.zone-box.is-real{ box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-primary) 34%,transparent); }
.zb-shelf.is-real{ border-radius:var(--radius-md,10px); background:var(--color-primary-bg,rgba(13,148,136,.08)); padding:var(--space-1); }

/* C8) 财务标签页：标签过多时横向可滚动，避免换行挤乱标题栏 */
.seg.fin-tabs{ display:flex; gap:var(--space-1h); flex-wrap:wrap; margin-bottom:var(--space-3); }
.seg.fin-tabs button{ white-space:nowrap; }
@media (max-width:900px){ .seg.fin-tabs{ flex-wrap:nowrap; overflow-x:auto; padding-bottom:var(--space-1); } }

/* C9) 条码与标签预览 */
.bc-preview{ margin-top:var(--space-1h); }
.bc-preview-box{ display:inline-flex; flex-direction:column; align-items:center; gap:var(--space-1h); padding:var(--space-2h) var(--space-3h);
  border:1px solid var(--border-color,var(--line)); border-radius:var(--radius-md,10px); background:var(--color-bg-container,#fff); }
.bc-preview-txt{ font-family:Consolas,Menlo,monospace; font-size:var(--font-size-sm); letter-spacing:1px; color:var(--text-2); }
.bc-label-preview{ margin-top:var(--space-1h); }
.plabels{ display:flex; flex-wrap:wrap; gap:var(--space-2); }
.plabel{ border:1px dashed var(--border-color,var(--line)); border-radius:var(--radius-sm,6px); background:#fff; color:#111;
  padding:var(--space-0h) var(--space-1); display:flex; flex-direction:column; align-items:center; justify-content:space-between; text-align:center; overflow:hidden; line-height:1.15; }
.plabel .pl-t{ font-size:10px; color:#666; letter-spacing:1px; }
.plabel .pl-n{ font-size:var(--font-size-xs); font-weight:700; line-height:1.15; max-height:2.3em; overflow:hidden; }
.plabel .pl-x{ font-size:10px; color:#444; line-height:1.15; }
.plabel .pl-c{ font-size:var(--font-size-2xs); letter-spacing:1px; font-family:Consolas,Menlo,monospace; line-height:1.15; }
.plabel .pl-bc{ width:100%; display:flex; justify-content:center; align-items:center; flex:none; }
.plabel svg{ display:block; width:100%; height:100%; }

/* C10) 顶栏打印按钮（文字比 A+/A− 长，单独收敛） */
#pagePrint{ min-width:44px; font-size:var(--font-size-xs); letter-spacing:0; }

/* C11) 浏览器直接 Ctrl+P 的兜底打印样式（单据打印走独立 iframe，此处保证当前页也可用） */
@media print{
  .sidebar,.side-mask,.topbar,.toast,#modalMask,.pop-mask,#cyPrintFrame,.ic-dock,#rtDirtyBar,.skip-link{ display:none !important; }
  .app,.main,.content{ display:block !important; height:auto !important; overflow:visible !important; padding:0 !important; margin:0 !important; }
  .card,.glass{ box-shadow:none !important; background:#fff !important; border:1px solid #999 !important; }
  .table-wrap{ overflow:visible !important; max-height:none !important; }
  table{ border-collapse:collapse !important; width:100% !important; }
  th,td{ border:1px solid #666 !important; color:#000 !important; }
  .act-btns,.toolbar,.pager,.ph-acts,button{ display:none !important; }
  a{ color:#000 !important; text-decoration:none !important; }
}

