/* 工作台 · 轻玻璃（Apple 风）
   玻璃底固定（浅灰背景 / 白色卡片 / 毛玻璃侧栏顶栏 / 柔和阴影），
   主色相关变量（--wb-p 系列）由 app.js 的 applyTheme 按所选色写入 :root；
   :root 默认值是苹果蓝，保证首屏无闪。 */

:root {
  --wb-p: #0071e3;        /* 主色 */
  --wb-p-soft: rgba(0,113,227,.10);   /* 主色浅底 */
  --wb-p-hover: #0077ed;  /* 悬停 */
  --wb-p-deep: #0058b0;   /* 加深 */
  --wb-ring: rgba(0,113,227,.14);     /* 聚焦光圈 */
  --wb-glow: rgba(0,113,227,.28);     /* 主按钮投影 */
  --wb-bg: #f5f5f7;
  --wb-glass: rgba(246,246,248,.72);
  --wb-card: #ffffff;
  --wb-card2: #fafafc;
  --wb-ink: #1d1d1f;
  --wb-ink2: #49494b;
  --wb-muted: #86868b;
  --wb-faint: #a8a8ad;
  --wb-hair: rgba(0,0,0,.07);         /* 发丝线 */
  --wb-hair2: rgba(0,0,0,.045);
  --wb-seg: rgba(120,120,128,.11);    /* 分段控件底 */
  --wb-thead: #f5f5f7;
  --wb-rowh: #fafafc;
  --wb-up: #248a3d;                   /* 正向绿 */
  --wb-upbd: rgba(36,138,61,.25);
  --wb-shadow1: 0 1px 2px rgba(0,0,0,.04);
  --wb-shadow2: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.05); /* 模糊半径小=栅格化便宜，面板切换时整页重绘更快 */
  --ease-snap: cubic-bezier(.34, 1.42, .5, 1); /* 过冲回弹：吸附落位 */
}
@keyframes pop { from { transform: scale(.94); } to { transform: scale(1); } }

.serif { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif; letter-spacing: -.02em; }
body {
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;
}

/* ---------- 布局 ---------- */
.ant-layout { background: var(--wb-bg) !important; }
/* 侧栏/顶栏不做 backdrop-filter：内容在其下方动画时模糊每帧重算是掉帧主因；半透明实色观感几乎一致 */
.ant-layout-sider.wb-sider {
  background: #f6f6f8 !important;
  border-right: 1px solid var(--wb-hair);
}
.wb-sider .ant-layout-sider-children { display: flex; flex-direction: column; }
.wb-logo { font-size: 21px; font-weight: 700; letter-spacing: -.01em; padding: 26px 24px 2px; color: var(--wb-ink); }
.wb-logo em { font-style: normal; color: var(--wb-p); }
.wb-logo-sub { padding: 2px 24px 20px; color: var(--wb-muted); font-size: 12px; letter-spacing: .02em; margin-bottom: 10px; }

.wb-menu-wrap { position: relative; flex: 1; min-height: 0; overflow-y: auto; padding: 0 8px; }
.wb-menu { background: transparent !important; border-inline-end: none !important; }
/* 侧栏液态滑块：只动 transform/opacity，GPU 合成 */
.wb-nav-thumb { position: absolute; left: 12px; right: 12px; top: 0; height: 40px; border-radius: 11px; background: var(--wb-card); box-shadow: 0 1px 2px rgba(0,0,0,.04), 0 1px 3px rgba(0,0,0,.06); pointer-events: none; opacity: 0; transition: transform .32s var(--ease-snap), opacity .18s; will-change: transform; }
.wb-menu .ant-menu-item { color: var(--wb-ink2) !important; margin: 1px 4px; width: calc(100% - 8px); border-radius: 11px; font-size: 14.5px; position: relative; z-index: 1; padding-right: 34px !important; height: 40px; line-height: 40px; transition: background-color .15s, color .15s !important; }
.wb-menu .ant-menu-item:hover { color: var(--wb-ink) !important; background: rgba(0,0,0,.045) !important; }
.wb-menu .ant-menu-item-selected { color: var(--wb-ink) !important; background: transparent !important; box-shadow: none !important; font-weight: 600; }
.wb-menu .ant-menu-item-selected .wb-ico { stroke: var(--wb-p); }
.wb-menu .ant-menu-item-selected::after { display: none; }
.wb-ico { width: 16px; height: 16px; display: block; }
.wb-nav-no { display: none; }

.ant-layout-header.wb-header {
  background: rgba(245,245,247,.9);
  border-bottom: 1px solid var(--wb-hair);
  height: auto; line-height: normal; padding: 24px 36px 14px;
  position: sticky; top: 0; z-index: 20;
}
.wb-kicker { font-size: 11px; letter-spacing: .18em; color: var(--wb-muted); text-transform: uppercase; margin-bottom: 6px; }
.wb-hello { font-size: 28px; font-weight: 700; letter-spacing: -.02em; color: var(--wb-ink); }
.wb-content { padding: 26px 36px 120px; max-width: 940px; width: 100%; margin: 0 auto; }
/* 表格/泳道类页面放宽：宽屏不再两侧留大片空白 */
.wb-content--wide { max-width: 1320px; }

/* 配色切换圆点（头部右侧） */
.wb-themes { position: absolute; right: 30px; top: 50%; transform: translateY(-50%); display: flex; gap: 10px; }
.wb-tdot { width: 18px; height: 18px; border-radius: 50%; cursor: pointer; border: none; transition: transform .2s var(--ease-snap), box-shadow .15s; opacity: .9; }
.wb-tdot:hover { transform: scale(1.15); opacity: 1; }
.wb-tdot:active { transform: scale(.82); }
.wb-tdot.on { opacity: 1; box-shadow: 0 0 0 2px var(--wb-bg), 0 0 0 4px var(--wb-ink); animation: pop .25s var(--ease-snap); }

/* 移动端顶部导航 */
.wb-mobilenav {
  display: none; gap: 8px; padding: 10px 16px; background: #f5f5f7;
  border-bottom: 1px solid var(--wb-hair); overflow-x: auto; white-space: nowrap;
}
@media (max-width: 991px) {
  .wb-mobilenav { display: flex; }
  .wb-content { padding: 14px 14px 60px; }
  .ant-layout-header.wb-header { padding: 16px 16px 10px; }
  .wb-hello { font-size: 22px; }
  .wb-themes { right: 14px; top: 16px; transform: none; }
}

/* ---------- 记一笔标签页（分段控件化） ---------- */
.wb-qtabs > .ant-tabs-nav { margin-bottom: 20px; }
.wb-qtabs > .ant-tabs-nav .ant-tabs-nav-wrap { background: var(--wb-seg); border: none; border-radius: 14px; padding: 4px; }
.wb-qtabs > .ant-tabs-nav::before { display: none; }
.wb-qtabs .ant-tabs-tab { padding: 8px 16px; font-size: 13.5px; border-radius: 10px !important; margin: 0 !important; border: none !important; transition: background-color .15s, color .15s, box-shadow .15s; cursor: grab; color: var(--wb-ink2); }
.wb-qtabs .ant-tabs-tab:active { cursor: grabbing; }
.wb-qtabs .ant-tabs-tab.dragging { opacity: .35; transform: scale(.96); }
.wb-qtabs .ant-tabs-tab:hover { color: var(--wb-ink); }
.wb-qtabs .ant-tabs-tab { position: relative; z-index: 1; background: transparent !important; }
/* 所有标签恒定字重：选中加粗会让标签宽度变化→整行重排+滑块追移动目标，是"卡"的元凶之一 */
.wb-qtabs .ant-tabs-tab-btn { font-weight: 600 !important; }
.wb-qtabs .ant-tabs-tab-active .ant-tabs-tab-btn { color: var(--wb-ink) !important; }
/* 液态滑块：白色药丸从左一个标签"吸"到右一个，行程中拉伸回弹（!important 压过 antd 高特异性规则） */
.wb-qtabs .ant-tabs-ink-bar { display: block !important; top: 0 !important; bottom: auto !important; height: 100% !important; background: var(--wb-card) !important; border-radius: 10px !important; box-shadow: 0 1px 3px rgba(0,0,0,.1) !important; transition: left .24s var(--ease-snap), width .24s var(--ease-snap) !important; will-change: left, width; }
/* 面板入场只做 opacity+位移，去掉 scale（大元素缩放每帧重栅格化很贵） */
/* 面板切换不做任何动画：大块内容的淡入会把整块面板提升为合成层并重栅格化，WKWebView 上尤其贵；滑块滑动本身已提供动效 */
.wb-qtabs .ant-tabs-tabpane { contain: layout style; }
@media (max-width: 991px) {
  .wb-qtabs > .ant-tabs-nav .ant-tabs-nav-wrap { overflow-x: auto; }
  .wb-qtabs .ant-tabs-tab { padding: 7px 12px; }
}

/* ---------- 得物记账内嵌 ---------- */
.wb-dewu-wrap { max-width: 1320px; margin: 0 auto; }
.wb-dewu-bar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; flex-wrap: wrap; }
.wb-dewu-bar a { color: var(--wb-p); font-size: 13px; text-decoration: none; white-space: nowrap; }
.wb-dewu-frame { width: 100%; height: calc(100vh - 190px); min-height: 520px; border: 1px solid var(--wb-hair); border-radius: 16px; background: #fff; box-shadow: var(--wb-shadow2); }

/* ---------- 卡片 ---------- */
.ant-card { background: var(--wb-card) !important; border: none !important; border-radius: 20px !important; box-shadow: var(--wb-shadow2); }
.ant-card-head { border-bottom: 1px solid var(--wb-hair2) !important; min-height: 56px; }
.ant-card-head-title { font-size: 17px !important; letter-spacing: -.01em; color: var(--wb-ink) !important; font-weight: 700; }
.ant-card-extra { color: var(--wb-muted) !important; font-size: 13px; }
.ant-card-head-wrapper { align-items: center; }

/* ---------- antd 控件 ---------- */
.ant-table { background: transparent !important; }
.ant-table-thead > tr > th { background: var(--wb-thead) !important; color: var(--wb-muted) !important; font-size: 12.5px; letter-spacing: .02em; border-bottom: 1px solid var(--wb-hair) !important; }
.ant-table-tbody > tr > td { border-bottom: 1px solid var(--wb-hair2) !important; color: var(--wb-ink); }
.ant-table-tbody > tr:hover > td { background: var(--wb-rowh) !important; }
.ant-segmented { background: var(--wb-seg) !important; border-radius: 12px !important; padding: 3px; }
.ant-segmented .ant-segmented-item { border-radius: 9px; }
/* 分段器液态滑块：thumb 弹簧滑过去，目标格的白底延迟 .1s 淡入，视觉上连成一体 */
.ant-segmented .ant-segmented-item-selected { background: var(--wb-card) !important; color: var(--wb-ink) !important; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.1); transition: background-color .1s ease .1s, box-shadow .1s ease .1s, color .1s !important; }
.ant-segmented .ant-segmented-item, .ant-segmented .ant-segmented-thumb { transition-duration: .18s !important; }
.ant-segmented-thumb { background: var(--wb-card) !important; border-radius: 9px !important; box-shadow: 0 1px 3px rgba(0,0,0,.1) !important; transition: transform .3s var(--ease-snap), width .3s var(--ease-snap), left .3s var(--ease-snap) !important; }
.ant-input, .ant-input-affix-wrapper, .ant-input-number, .ant-select-selector, .ant-picker { background: var(--wb-bg) !important; border: 1.5px solid transparent !important; border-radius: 12px !important; color: var(--wb-ink) !important; }
.ant-input:focus, .ant-input-affix-wrapper-focused, .ant-input-number-focused, .ant-picker-focused { border-color: var(--wb-p) !important; box-shadow: 0 0 0 4px var(--wb-ring) !important; background: var(--wb-card) !important; }
.ant-btn { border-radius: 980px !important; font-weight: 600; transition: transform .2s var(--ease-snap) !important; }
.ant-btn:active { transform: scale(.95); }
.ant-btn-primary { box-shadow: 0 2px 10px var(--wb-glow); }
.ant-tag { border-radius: 980px; }
.ant-alert-warning { background: var(--wb-p-soft) !important; border-color: transparent !important; }
.ant-progress-bg { transition: width .5s cubic-bezier(.25,.75,.35,1) !important; }
.ant-empty-description { color: var(--wb-faint); }
.ant-collapse-ghost > .ant-collapse-item > .ant-collapse-header { color: var(--wb-ink2) !important; }
.ant-modal .ant-card, .ant-modal-content { background: var(--wb-card) !important; border-radius: 20px !important; }
.ant-popover-inner, .ant-modal-content { box-shadow: 0 24px 64px rgba(0,0,0,.18); }
.ant-message-notice-content { background: var(--wb-card) !important; color: var(--wb-ink) !important; border-radius: 14px !important; box-shadow: var(--wb-shadow2) !important; }
.ant-statistic-content { font-family: -apple-system, "SF Pro Display", "PingFang SC", sans-serif !important; letter-spacing: -.02em; }
.ant-rate { color: #ff9f0a; }

/* ---------- 数字与语义色 ---------- */
.mono { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums; }
.up { color: var(--wb-up); }
.down { color: var(--wb-p); }
.wb-sub { color: var(--wb-muted); font-size: 12.5px; }

/* ---------- 业务线色片 ---------- */
.bchip {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  border: 1px solid var(--wb-hair); border-radius: 980px; padding: 3px 12px;
  background: var(--wb-card); font-size: 13px; margin: 0 8px 8px 0; user-select: none;
  transition: border-color .15s, color .15s, background-color .15s, transform .2s var(--ease-snap); color: var(--wb-ink2);
}
.bchip:active { transform: scale(.95); }
.bchip:hover { border-color: var(--wb-p); color: var(--wb-p); }
.bchip.on { border-color: var(--wb-p); color: var(--wb-p); background: var(--wb-p-soft); font-weight: 600; }
.bdot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; }
.bchip .bdot { margin-right: 0; }

/* ---------- 快速录单 ---------- */
.wb-orderbar {
  display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap;
  background: var(--wb-p-soft); border: none; border-radius: 12px; padding: 8px 14px; margin: -4px 0 16px;
}
.wb-orderbar .mono { font-size: 13px; color: var(--wb-p); font-weight: 600; letter-spacing: .02em; }
.wb-quick-card .ant-card-head { min-height: 56px; }
/* 今日目标 + 进度 */
.wb-goal { margin: -2px 0 16px; }
.wb-goal-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; color: var(--wb-muted); margin-bottom: 4px; }
.wb-goal-num { font-size: 15px; font-weight: 600; color: var(--wb-ink); }
.wb-goal-edit { color: var(--wb-p); cursor: pointer; font-size: 12.5px; }
.wb-goal-done b { color: var(--wb-ink); font-size: 15px; }
.wb-goal-seg { display: inline-flex; gap: 6px; font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums; cursor: default; }
.wb-segchip { display: inline-flex; align-items: center; gap: 3px; padding: 2px 9px; border-radius: 8px; background: var(--wb-bg); font-size: 12px; }
.wb-segchip b { color: var(--wb-ink); font-weight: 600; }
.wb-goal-xb b { color: #d97706; }
.wb-goal .ant-progress-text { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums; font-size: 12px; color: var(--wb-muted); }
/* 最近订单：按日期分组、组内按对接人分节，组间留明显空隙 */
.wb-recent { padding-top: 2px; }
.wb-rgrp { margin-bottom: 26px; }
.wb-rgrp:last-child { margin-bottom: 2px; }
.wb-rgrp-head { display: flex; align-items: baseline; gap: 8px; padding: 0 2px 8px; }
.wb-rgrp-date { font-size: 13px; font-weight: 600; color: var(--wb-ink); }
.wb-rgrp-n { font-size: 12px; color: var(--wb-muted); }
.wb-rsub-head { font-size: 12px; color: #d97706; padding: 14px 2px 6px; }
.wb-ritem { border-top: 1px solid var(--wb-hair); }
.wb-rrow { display: flex; align-items: center; gap: 10px; padding: 9px 2px; font-size: 13.5px; }
.wb-rrow-t { flex: none; width: 44px; color: var(--wb-muted); font-size: 12.5px; }
.wb-rrow-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--wb-ink); }
.wb-rrow-am { flex: none; }
.wb-ritem-xb .wb-rrow-title { color: var(--wb-ink2); }
/* 线条图标（与侧边栏同族，禁 emoji） */
.wb-ico-sm { width: 14px; height: 14px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; vertical-align: -2px; }
button .wb-ico-sm { vertical-align: 0; }
.wb-ico-txt { display: inline-flex; align-items: center; gap: 6px; }
/* 行内三级小按钮（浅灰实心，替代无边框灰字 text 按钮） */
.wb-bx { background: #f0f0f2 !important; border: none !important; color: var(--wb-ink2) !important; box-shadow: none !important; }
.wb-bx:hover { background: #e7e7ea !important; color: var(--wb-ink) !important; }
.wb-bx.ant-btn-dangerous { color: #d70015 !important; }
.wb-bx.ant-btn-dangerous:hover { background: #fdecec !important; }
/* 行尾标签+操作组：桌面 display:contents 融入行；手机折第二行 */
.wb-rrow-tail { display: contents; }
/* 售后期胶囊 */
.wb-as { display: inline-flex; align-items: center; gap: 4px; flex: none; font-size: 11.5px; padding: 2px 8px; border-radius: 8px; }
.wb-as.on { color: var(--wb-p); background: var(--wb-ring); }
.wb-as.warn { color: #b45309; background: #fef3c7; }
.wb-as.off { color: var(--wb-muted); background: var(--wb-bg); }
/* 售后备注 */
/* Google 申诉信生成器（底部坞 appeal 段） */
.wb-ap-form { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.wb-ap-letter { font-size: 12.5px; line-height: 1.7; white-space: pre-wrap; background: var(--wb-bg); border-radius: 12px; padding: 12px 14px; max-height: 300px; overflow: auto; color: var(--wb-ink2); }
.wb-ap-ops { margin-top: 10px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.wb-ap-ops .wb-sub { font-size: 11.5px; }
/* 安装计时 / 档案摘要标签（与 .wb-as 同形态） */
.wb-tmin, .wb-acct-chip { display: inline-flex; align-items: center; gap: 4px; flex: none; font-size: 11.5px; padding: 2px 8px; border-radius: 8px; color: var(--wb-muted); background: #f0f0f2; }
.wb-acct-chip { color: var(--wb-ink2); font-size: 11px; }
/* 售后档案弹窗 */
.wb-ap-paste { display: flex; gap: 8px; margin-bottom: 12px; }
.wb-ap-paste .ant-input-affix-wrapper-lg, .wb-ap-paste input.ant-input-lg { flex: 1; min-width: 0; }
.wb-login-box { background: var(--wb-bg); border-radius: 12px; padding: 10px 14px 12px; margin-bottom: 12px; }
.wb-login-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; font-size: 12.5px; color: var(--wb-muted); }
.wb-login-head b { color: var(--wb-ink); }
.wb-login-text { font: 13px/1.75 -apple-system, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums; color: var(--wb-ink); white-space: pre-wrap; word-break: break-all; margin: 0; }
.wb-fcopy { color: var(--wb-p); cursor: pointer; display: inline-flex; }
.wb-acct-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px 14px; }
.wb-acct-form label { font-size: 12px; color: var(--wb-muted); display: flex; flex-direction: column; gap: 3px; }
.wb-acct-form label.wide { grid-column: 1 / -1; }
.wb-acct-flags { margin-top: 8px; display: flex; gap: 18px; font-size: 12.5px; flex-wrap: wrap; }
/* 手机版：行标签折第二行 + 档案弹窗底部抽屉 + 单列表单 */
@media (max-width: 640px) {
  .wb-rrow-tail { display: flex; flex-basis: 100%; order: 9; gap: 6px; padding-left: 52px; margin-top: -2px; flex-wrap: wrap; align-items: center; }
  .wb-acct-wrap { display: flex; align-items: flex-end; }
  .wb-acct-wrap .ant-modal { top: 0 !important; max-width: 100vw; margin: 0 auto; padding-bottom: 0; }
  .wb-acct-wrap .ant-modal .ant-modal-content { border-radius: 20px 20px 0 0; }
  .wb-acct-form { grid-template-columns: 1fr; }
}
/* 开发日志类型标签 */
.wb-dl-kind { flex: none; font-size: 11px; padding: 1px 8px; border-radius: 999px; }
.wb-dl-kind.idea { color: #b45309; background: #fef3c7; }
.wb-dl-kind.dev { color: var(--wb-p); background: var(--wb-ring); }
.wb-rnote { font-size: 12px; color: var(--wb-muted); padding: 0 2px 9px 54px; white-space: pre-wrap; line-height: 1.55; }
.wb-rnote-edit { padding: 0 2px 10px 54px; }
.wb-rnote-btns { margin-top: 6px; display: flex; gap: 8px; }
.wb-qrow { display: flex; gap: 12px; flex-wrap: wrap; }
.wb-qno { flex: 1; min-width: 220px; }
.wb-qno input { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums; letter-spacing: .02em; font-size: 16px; }
/* 金额框：¥ 与数字一体，原生 input 天然垂直居中（antd input-number 内部高度会跑偏） */
.wb-money { display: flex; align-items: center; height: 40px; width: 140px; background: var(--wb-bg); border: 1.5px solid transparent; border-radius: 12px; padding: 0 12px 0 14px; transition: border-color .15s, box-shadow .15s, background-color .15s; }
.wb-money:focus-within { border-color: var(--wb-p); box-shadow: 0 0 0 4px var(--wb-ring); background: var(--wb-card); }
.wb-money-sym { color: var(--wb-muted); font-size: 15px; flex: none; }
.wb-money-input { flex: 1; min-width: 0; width: 100%; border: none; background: transparent; outline: none; font: inherit; font-size: 16px; color: var(--wb-ink); font-variant-numeric: tabular-nums; padding-left: 6px; }
.wb-qcustom { width: 210px; }
.wb-qcustom.ant-input { background: var(--wb-bg) !important; }
.wb-qmeta {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--wb-hair);
  font-size: 13px; color: var(--wb-muted);
}
.wb-preview { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums; color: var(--wb-ink2); font-size: 13px; }
.wb-qalias { display: inline-flex; align-items: center; gap: 2px; }
.wb-adv { margin-top: 4px; }
.wb-adv .ant-collapse-item { border: none !important; }
.wb-adv .ant-collapse-header { color: var(--wb-muted) !important; font-size: 13px; padding-left: 4px !important; }
.wb-adv .ant-collapse-content-box { padding-top: 4px; }

/* ---------- 话术 ---------- */
.wb-snips { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--wb-hair); }
.wb-snips .wb-sub { display: block; margin-bottom: 8px; }
.bchip.snip { max-width: 360px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-flex; cursor: copy; }
.bchip.snip:active { transform: scale(.97); }
.bchip.snip.link { color: var(--wb-up); border-color: var(--wb-upbd); }
.bchip.snip.link:hover { border-color: var(--wb-up); }
.wb-snip-row { display: flex; gap: 8px; align-items: flex-start; padding: 8px 0; border-bottom: 1px solid var(--wb-hair2); }
.wb-snip-row:last-of-type { border-bottom: none; }
.wb-mv { flex: none; display: flex; flex-direction: column; gap: 2px; margin-top: 3px; }
.wb-mv i { font-style: normal; width: 24px; height: 18px; line-height: 16px; text-align: center; border: 1px solid var(--wb-hair); border-radius: 6px; color: var(--wb-ink2); cursor: pointer; font-size: 11px; background: var(--wb-card); }
.wb-mv i:hover { border-color: var(--wb-p); color: var(--wb-p); }
.wb-mv i.off { opacity: .3; pointer-events: none; }

/* ---------- 底部悬浮坞（白色毛玻璃） ---------- */
.wb-dock { position: fixed; left: 50%; transform: translateX(-50%); bottom: 22px; z-index: 200; display: flex; flex-direction: column; align-items: center; gap: 10px; width: min(480px, calc(100vw - 24px)); }
/* 坞也不做 backdrop-filter：它叠在内容区上方，面板动画期间模糊同样逐帧重算 */
.wb-dock-bar {
  position: relative;
  display: flex; align-items: center; gap: 6px; padding: 6px; border-radius: 980px;
  background: rgba(255,255,255,.94);
  border: 1px solid var(--wb-hair); box-shadow: var(--wb-shadow2);
  color: var(--wb-ink2); font-size: 14px; cursor: pointer; user-select: none; transition: background-color .15s;
}
.wb-dock-bar:hover { background: rgba(255,255,255,.92); }
.wb-dock-bar.on { background: rgba(255,255,255,.92); }
.wb-dock-bar i { font-style: normal; opacity: 0; width: 0; }
/* :not() 排除滑块，否则本规则优先级(类+元素)会压过 .wb-dk-thumb 的 position:absolute，滑块会掉进 flex 流挤乱布局 */
.wb-dock-bar span:not(.wb-dk-thumb) { position: relative; z-index: 1; padding: 9px 18px; border-radius: 980px; transition: color .15s, transform .2s var(--ease-snap); }
.wb-dock-bar span:not(.wb-dk-thumb):active { transform: scale(.93); }
.wb-dock-bar span.on { color: #fff; font-weight: 600; }
/* 坞液态滑块 */
.wb-dk-thumb { position: absolute; top: 6px; bottom: 6px; left: 0; border-radius: 980px; background: var(--wb-p); box-shadow: 0 2px 10px var(--wb-glow); pointer-events: none; transition: transform .3s var(--ease-snap), width .3s var(--ease-snap), opacity .18s; will-change: transform; }
.wb-dock-bar .arr { display: none; }
.wb-dock-panel {
  width: 100%; max-height: min(58vh, 520px); overflow-y: auto;
  background: rgba(255,255,255,.97);
  border: 1px solid var(--wb-hair); border-radius: 22px;
  box-shadow: var(--wb-shadow2); padding: 14px 16px 16px;
}
.wb-dk-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.wb-dk-head b { font-size: 15px; letter-spacing: -.01em; color: var(--wb-ink); }
.wb-dk-head a { color: var(--wb-p); font-size: 13px; cursor: pointer; }
.wb-dk-sec { font-size: 11px; letter-spacing: .1em; color: var(--wb-muted); margin: 14px 0 8px; text-transform: uppercase; }
.wb-dk-item {
  padding: 11px 14px; border: none; border-radius: 14px; margin-bottom: 8px;
  font-size: 13.5px; color: var(--wb-ink2); cursor: copy; background: rgba(255,255,255,.9);
  box-shadow: var(--wb-shadow1); transition: color .15s, box-shadow .15s;
}
.wb-dk-item:hover { color: var(--wb-ink); box-shadow: var(--wb-shadow1), 0 4px 14px rgba(0,0,0,.06); }
.wb-dk-item:active { transform: scale(.985); }
.wb-dk-item.link { display: flex; flex-direction: column; gap: 2px; }
.wb-dk-item.link b { font-weight: 600; }
.wb-dk-item.link .wb-sub { font-size: 11px; word-break: break-all; }
.wb-dk-item.faq { cursor: pointer; }
.wb-dk-item.faq .q { font-weight: 500; }
.wb-dk-item.faq .a { margin-top: 7px; padding-top: 7px; border-top: 1px solid var(--wb-hair); color: var(--wb-up); cursor: default; line-height: 1.7; }
.wb-dk-item.faq .a { white-space: pre-wrap; }
.wb-dk-item.faq .a .cp { margin-left: 10px; color: var(--wb-p); cursor: pointer; }
.wb-dk-empty { font-size: 12.5px; color: var(--wb-faint); padding: 4px 2px 8px; }
.wb-dk-edit { display: flex; gap: 6px; align-items: flex-start; margin-bottom: 7px; }
.wb-dk-edit.col { flex-direction: column; }
.wb-dk-edit .r { display: flex; gap: 6px; width: 100%; }
.wb-dk-edit textarea, .wb-dk-edit .ant-input { font-size: 13px !important; }
.wb-dk-x { flex: none; width: 26px; height: 26px; line-height: 24px; text-align: center; border-radius: 50%; border: 1px solid var(--wb-hair); color: var(--wb-muted); cursor: pointer; font-size: 15px; margin-top: 3px; }
.wb-dk-x:hover { background: var(--wb-p-soft); color: var(--wb-p); }
.wb-dk-addrow { display: flex; gap: 6px; align-items: center; }
.wb-dk-addrow.col { flex-direction: column; align-items: stretch; }
.wb-dk-addrow .ant-btn { flex: none; }
.wb-dk-edit .mv { flex: none; display: flex; flex-direction: column; gap: 2px; margin-top: 2px; }
.wb-dk-edit .mv i { font-style: normal; width: 22px; height: 17px; line-height: 16px; text-align: center; border: 1px solid var(--wb-hair); border-radius: 6px; color: var(--wb-ink2); cursor: pointer; font-size: 11px; background: var(--wb-card); }
.wb-dk-edit .mv i:hover { border-color: var(--wb-p); color: var(--wb-p); }
.wb-dk-edit .mv i.off { opacity: .3; pointer-events: none; }
.wb-dk-foot { text-align: center; padding-top: 6px; }
.wb-dk-foot a { color: var(--wb-p); font-size: 12.5px; cursor: pointer; }
.dock-enter-active { transition: opacity .16s ease-out, transform .3s var(--ease-snap); }
.dock-leave-active { transition: opacity .12s ease-in, transform .12s ease-in; }
.dock-enter-from, .dock-leave-to { opacity: 0; transform: translateY(10px) scale(.97); }
.tabfade-enter-active { transition: opacity .14s ease-out, transform .28s var(--ease-snap); }
.tabfade-leave-active { transition: opacity .1s ease-in; }
.tabfade-enter-from { opacity: 0; transform: translateX(10px); }
.tabfade-leave-to { opacity: 0; }

/* ---------- FAQ 独立页 ---------- */
.wb-faq-card { position: relative; padding: 14px 110px 14px 16px; border: none; border-radius: 16px; margin-bottom: 10px; background: var(--wb-card); box-shadow: var(--wb-shadow1), 0 6px 20px rgba(0,0,0,.04); transition: box-shadow .15s; }
.wb-faq-card:hover { box-shadow: var(--wb-shadow2); }
.wb-faq-card .q { display: flex; align-items: baseline; gap: 8px; cursor: pointer; font-size: 15px; font-weight: 600; color: var(--wb-ink); letter-spacing: -.01em; }
.wb-faq-card .q .t { flex: 1; }
.wb-faq-card .q .arr { font-style: normal; color: var(--wb-faint); transition: transform .25s; }
.wb-faq-card .q .arr.on { transform: rotate(90deg); }
.wb-faq-card .a { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--wb-hair); }
.wb-faq-card .a .txt { font-size: 13.5px; color: var(--wb-up); line-height: 1.8; white-space: pre-wrap; }
.wb-faq-card .a .ops { margin-top: 8px; }
.wb-faq-card .side { position: absolute; right: 10px; top: 10px; display: flex; gap: 0; opacity: 0; transition: opacity .2s; }
.wb-faq-card:hover .side, .wb-faq-card:focus-within .side { opacity: 1; }
@media (max-width: 991px) { .wb-faq-card .side { opacity: 1; } .wb-faq-card { padding-right: 16px; padding-bottom: 44px; } .wb-faq-card .side { top: auto; bottom: 8px; right: 10px; } }
.faqa-enter-active { transition: opacity .14s ease-out, transform .26s var(--ease-snap); }
.faqa-leave-active { transition: opacity .1s ease-in; }
.faqa-enter-from { opacity: 0; transform: translateY(-5px); }
.faqa-leave-to { opacity: 0; }
.wb-faq-edit { padding: 10px 0; border-bottom: 1px solid var(--wb-hair2); }
.wb-faq-edit:last-of-type { border-bottom: none; }
@media (max-width: 991px) { .wb-dock { bottom: 14px; width: calc(100vw - 20px); } }

/* ---------- 图片上传 ---------- */
.wb-updrop {
  display: inline-block; cursor: pointer; padding: 10px 20px;
  border: 1.5px dashed rgba(120,120,128,.35); border-radius: 12px; color: var(--wb-muted); font-size: 13px;
  background: var(--wb-bg); transition: border-color .15s, color .15s;
}
.wb-updrop:hover { border-color: var(--wb-p); color: var(--wb-p); }
.wb-thumbs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.wb-thumbs img { width: 84px; height: 84px; object-fit: cover; border-radius: 12px; border: none; box-shadow: var(--wb-shadow1); }
.wb-thumb-x {
  position: absolute; top: -7px; right: -7px; width: 18px; height: 18px; line-height: 16px;
  text-align: center; border-radius: 50%; background: rgba(120,120,128,.7); color: #fff;
  font-size: 12px; cursor: pointer;
}
.wb-thumbs > div { position: relative; }

/* ---------- 待办 ---------- */
.wb-parse { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 13px; color: var(--wb-ink); }
.wb-parse b { font-weight: 600; }
.wb-parse-hint { font-size: 11.5px; color: var(--wb-faint); margin-top: 8px; }
.wb-bizfilter { margin-top: 14px; display: flex; flex-wrap: wrap; }
.wb-bizfilter .bchip { margin-bottom: 0; }
.wb-tgroup { font-size: 12px; letter-spacing: .06em; color: var(--wb-muted); margin: 18px 0 4px; text-transform: uppercase; }
.wb-tgroup.overdue { color: #d70015; font-weight: 600; }
.wb-tgroup.today { color: var(--wb-up); font-weight: 600; }
.wb-todo2 { display: flex; align-items: center; gap: 9px; padding: 9px 2px; border-bottom: 1px solid var(--wb-hair2); }
.wb-todo2:last-of-type { border-bottom: none; }
.wb-todo2 .tt { flex: 1; cursor: pointer; }
.wb-todo2 .tt:hover { color: var(--wb-p); }
.wb-todo2 .due { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums; font-size: 12px; color: var(--wb-muted); min-width: 42px; text-align: right; }
.wb-todo2 .due.red { color: #d70015; }
.wb-todo2.done .tt { text-decoration: line-through; color: var(--wb-faint); }
.wb-donediv { margin-top: 16px; padding-top: 10px; border-top: 1px solid var(--wb-hair); }
.wb-donediv > a { color: var(--wb-muted); font-size: 13px; cursor: pointer; }

/* ---------- 行式列表 ---------- */
.wb-goal-row { padding: 10px 0; border-bottom: 1px solid var(--wb-hair2); }
.wb-goal-row:last-child { border-bottom: none; }
.wb-goal-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.wb-todo { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--wb-hair2); }
.wb-todo:last-child { border-bottom: none; }
.wb-todo-title { flex: 1; }
.wb-todo.done .wb-todo-title { text-decoration: line-through; color: var(--wb-faint); }
.wb-biz-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--wb-hair2); }
.wb-biz-row:last-child { border-bottom: none; }
.wb-tips { margin: 0; padding-left: 18px; color: var(--wb-ink2); line-height: 2.1; }

/* ---------- 商机泳道 ---------- */
.wb-lanes { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; margin-top: 16px; align-items: start; }
@media (max-width: 1200px) { .wb-lanes { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { .wb-lanes { grid-template-columns: repeat(2, 1fr); } }
.wb-lane-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.wb-lead { margin-bottom: 8px !important; }
.wb-lane-empty { margin: 4px 0 !important; opacity: .45; }

/* ---------- 登录页 ---------- */
.wb-login-body {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(900px 500px at 90% -10%, var(--wb-ring), transparent 60%),
    var(--wb-bg);
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;
}
.wb-login-card {
  width: 380px; background: var(--wb-card); border-radius: 24px; padding: 44px 38px 32px;
  box-shadow: var(--wb-shadow2), 0 32px 80px rgba(0,0,0,.08);
  border: 1px solid var(--wb-hair2);
}
.wb-login-logo { display: flex; align-items: baseline; gap: 2px; font-size: 24px; font-weight: 700; letter-spacing: -.02em; color: var(--wb-ink); }
.wb-login-logo em { font-style: normal; color: var(--wb-p); }
.wb-login-sub { color: var(--wb-muted); font-size: 12.5px; margin: 8px 0 28px; }
.wb-login-input {
  width: 100%; box-sizing: border-box; padding: 12px 15px; font-size: 15px;
  border: 1.5px solid transparent; border-radius: 13px; outline: none; transition: border-color .15s, box-shadow .15s, background-color .15s;
  background: var(--wb-bg); color: var(--wb-ink);
}
.wb-login-input:focus { border-color: var(--wb-p); box-shadow: 0 0 0 4px var(--wb-ring); background: #fff; }
.wb-login-btn {
  width: 100%; margin-top: 14px; padding: 12px 0; font-size: 15.5px; font-weight: 600; letter-spacing: .02em;
  color: #fff; background: var(--wb-p); border: none; border-radius: 980px; cursor: pointer;
  transition: background-color .15s; box-shadow: 0 2px 10px var(--wb-glow);
}
.wb-login-btn:hover { background: var(--wb-p-hover); }
.wb-login-err { color: #d70015; font-size: 13px; margin-top: 12px; min-height: 18px; }

.wb-reptext textarea { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", sans-serif; font-variant-numeric: tabular-nums !important; font-size: 13px; letter-spacing: .02em; background: var(--wb-bg) !important; border-radius: 12px !important; }

/* ---------- 栏目配置引擎：通用栏目页 ---------- */
.wb-board { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; align-items: start; }
.wb-bcol { background: #f0f0f2; border-radius: 12px; padding: 10px; min-height: 80px; }
.wb-bcol-h { display: flex; justify-content: space-between; font-size: 12px; color: #595959; font-weight: 600; padding: 0 4px 8px; }
.wb-bcard { background: #fff; border-radius: 9px; padding: 9px 11px; margin-bottom: 8px; cursor: pointer;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .05); border-left: 3px solid var(--wb-p, #378ADD); transition: .15s; }
.wb-bcard:hover { transform: translateY(-1px); box-shadow: 0 3px 8px rgba(0, 0, 0, .08); }
.wb-bcard-t { font-size: 13px; font-weight: 500; line-height: 1.35; word-break: break-word; }
.wb-bcard-m { display: flex; justify-content: space-between; gap: 6px; font-size: 11px; color: #8c8c8c; margin-top: 5px; }
@media (max-width: 768px) { .wb-board { grid-template-columns: 1fr; } }

