:root{
  --teal:#0f766e;
  --teal-soft:#e9f4f2;
  --teal-line:#c9d8d5;
  --ink:#212a33;
  --muted:#6b7280;
  --line:#e5e9ec;
  --bg:#f7f9f9;
  --ws-bg:#eef2f2;
  --card:#ffffff;
  --warn-bg:#fdf6ec;
  --warn-line:#f0dcc0;
  --warn-ink:#8a5a12;
  --danger-bg:#fdf3f2;
  --danger-line:#f0c9c4;
  --danger-ink:#8c2f2f;
  --radius:12px;
  --font:"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--font);
  background:var(--ws-bg);
  color:var(--ink);
  font-size:14.5px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--teal);text-decoration:none}
button{font-family:inherit}
/* hidden 属性必须真正生效：否则被 .auth-wrap/.layout 的 display:flex 覆盖，
   登录成功后登录屏不会消失，界面看起来"卡在正在进入" */
[hidden]{display:none !important}

/* ---------- layout：左菜单 + 右工作区 ---------- */
.layout{display:flex;height:100vh;overflow:hidden}

/* 左：菜单栏 */
.sidebar{
  width:250px;flex:0 0 250px;background:#fff;
  border-right:1px solid var(--line);box-shadow:1px 0 0 rgba(15,118,110,.05);
  display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;
  transition:width .18s ease,flex-basis .18s ease;
}
.brand{
  padding:18px 18px 16px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:11px;flex:0 0 auto;
}
.brand-mark{
  flex:0 0 34px;height:34px;border-radius:9px;background:#fff;color:var(--teal);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;letter-spacing:.5px;
  overflow:hidden;
}
.brand-mark img{display:block;width:100%;height:100%;object-fit:contain;border-radius:inherit}
.brand-txt{min-width:0}
.brand .bt{font-size:14.5px;font-weight:700;letter-spacing:.2px;white-space:nowrap}
.brand .bs{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.45;white-space:nowrap}
.nav{padding:10px 10px 4px;flex:1}
.nav .nav-cap{
  font-size:10.5px;color:#9aa3ad;letter-spacing:1.4px;padding:14px 10px 6px;font-weight:600;
}
.nav a{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:8px;color:var(--ink);font-size:13.5px;margin-bottom:2px;
  white-space:nowrap;
}
.nav a .ic{flex:0 0 18px;display:flex;align-items:center;justify-content:center;color:#8b959e}
.nav a:hover{background:var(--teal-soft);color:var(--teal)}
.nav a:hover .ic{color:var(--teal)}
.nav a .nm{flex:1;overflow:hidden;text-overflow:ellipsis}
.nav a.on{background:var(--teal);color:#fff;font-weight:600}
.nav a.on .ic{color:#fff}
.nav a .badge{font-size:10.5px;background:var(--teal-soft);color:var(--teal);border-radius:20px;padding:1px 7px;font-weight:400}
.nav a.on .badge{background:rgba(255,255,255,.22);color:#fff}

/* 侧栏分组（如「我的团队」下挂子项）：父级可收起/展开 */
.nav-group{margin-bottom:2px}
.nav .nav-parent{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--ink);font-size:13.5px;cursor:pointer;white-space:nowrap}
.nav .nav-parent:hover{background:var(--teal-soft);color:var(--teal)}
.nav-group.cur .nav-parent{color:var(--teal);font-weight:600}
.nav .nav-parent .nm{flex:1;overflow:hidden;text-overflow:ellipsis}
.nav .nav-parent .chev{flex:0 0 14px;color:#9aa3ad;transition:transform .18s}
.nav .nav-parent .chev.open{transform:rotate(90deg)}
.nav-children{display:none;margin:2px 0 4px 20px;padding-left:10px;border-left:1px solid var(--line)}
.nav-children.open{display:block}
.nav .nav-child{display:flex;align-items:center;padding:6px 10px;border-radius:7px;color:var(--muted);font-size:13px;margin-bottom:1px}
.nav .nav-child:hover{background:var(--teal-soft);color:var(--teal)}
.nav .nav-child.on{background:var(--teal-soft);color:var(--teal);font-weight:600}

/* 移动端抽屉遮罩 */
.nav-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,32,.45);z-index:1100}
.side-foot{
  padding:12px 18px 16px;border-top:1px solid var(--line);
  font-size:11.5px;color:#9aa3ad;flex:0 0 auto;
}
.side-foot .fp{display:flex;justify-content:space-between;margin-bottom:6px;color:var(--muted);font-size:11.5px}
.side-foot .fp b{color:var(--teal);font-weight:700}
.side-foot .side-help{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:12px;padding:8px 10px;border:1px solid var(--teal-line);border-radius:9px;background:var(--teal-bg);color:var(--teal);font-size:12.5px;font-weight:700;text-decoration:none;transition:.15s}
.side-foot .side-help:before{content:"";width:14px;height:14px;background:var(--teal);-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='black' d='M6 2h9l5 5v15a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm8 1.5V8h4.5z'/></svg>") center/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='black' d='M6 2h9l5 5v15a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm8 1.5V8h4.5z'/></svg>") center/contain no-repeat}
.side-foot .side-help:hover{background:#e3f3ec}
.side-foot .fn{margin-top:10px;font-size:11px;line-height:1.6}

/* 右：工作区 */
.workspace{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--ws-bg);overflow:hidden}
.ws-head{
  flex:0 0 auto;height:64px;background:#fff;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:14px;padding:0 24px;
}
.ws-toggle{
  flex:0 0 32px;height:32px;border:1px solid var(--line);background:#fff;border-radius:8px;
  color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
}
.ws-toggle:hover{border-color:var(--teal-line);color:var(--teal);background:var(--teal-soft)}
.ws-title{flex:1;min-width:0}
.ws-title .tt{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws-title .ts{font-size:12px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws-acts{display:flex;gap:8px;align-items:center;flex:0 0 auto}
.ws-body{flex:1;overflow-y:auto;padding:22px 24px 44px;scrollbar-gutter:stable both-edges}
.ws-inner{max-width:1000px;margin:0 auto;width:100%}

/* 菜单收起 */
body.menu-collapsed .sidebar{width:0;flex-basis:0;border-right-width:0;box-shadow:none}

/* ---------- 居中排版模式：顶部横条菜单 + 内容窄栏居中 ----------
   ⚠️ 2026-09-19 起该模式的入口按钮已移除，站点固定「左菜单 + 右工作区」，
   body.layout-center 不会再被添加 ⇒ 以下规则当前**休眠**（不生效）。
   如需恢复：在 index.html 顶部操作区加回按钮，并在 app.js 里恢复 applyLayout() 对 body 类的切换。
   `.ws-acts` 同理——它对应的操作区 DOM 已删除。 */
body.layout-center .layout{display:flex;flex-direction:column}
body.layout-center .sidebar{
  width:auto;flex:0 0 auto;flex-direction:row;align-items:center;gap:20px;
  height:58px;padding:0 24px;overflow:visible;
  border-right:0;border-bottom:1px solid var(--line);box-shadow:0 1px 3px rgba(15,118,110,.05);
}
body.layout-center .brand{padding:0;border-bottom:0;flex:0 0 auto}
body.layout-center .brand .bs{display:none}
body.layout-center .nav{
  flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:2px;padding:0;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;
}
body.layout-center .nav .nav-cap{display:none}
body.layout-center .nav a{margin-bottom:0;padding:6px 11px;font-size:13px;flex:0 0 auto}
body.layout-center .nav a .badge{display:none}
body.layout-center .side-foot{
  flex:0 0 auto;border-top:0;padding:0;margin-left:8px;
  display:flex;align-items:center;gap:14px;
}
body.layout-center .side-foot .fp{margin:0;justify-content:flex-start;gap:6px;white-space:nowrap}
body.layout-center .side-foot .fp+.fp{margin-top:0}
body.layout-center .side-foot .bar{width:64px;flex:0 0 64px;margin-top:0}
body.layout-center .side-foot .fn{display:none}
/* 工作区：标题居中、内容 780px 居中 */
body.layout-center .workspace{overflow:hidden}
body.layout-center .ws-toggle{display:none}
body.layout-center .ws-head{
  position:relative;height:auto;min-height:78px;background:transparent;border-bottom:0;
  padding:24px 24px 0;gap:0;
}
body.layout-center .ws-title{text-align:center;margin:0 auto;padding:0 150px}
body.layout-center .ws-title .tt{font-size:20px;letter-spacing:.2px}
body.layout-center .ws-title .ts{margin-top:3px}
body.layout-center .ws-acts{position:absolute;right:24px;top:24px}
body.layout-center .ws-body{padding:6px 24px 60px}
body.layout-center .ws-inner{max-width:780px}
body.layout-center .card{padding:22px 26px}
/* 居中模式下多列网格更窄，避免拥挤 */
body.layout-center .g3,body.layout-center .g4{grid-template-columns:repeat(2,1fr)}
.btn .lico{display:inline-flex;align-items:center;justify-content:center;margin-right:5px;vertical-align:-3px}
.btn .lico svg{display:block}

/* ---------- 账号：登录 / 注册 ---------- */
body.booting .layout{visibility:hidden}
/* 启动期（booting）显示轻量加载提示，避免"登录屏未显示前"的空白闪烁 */
body.booting::after{
  content:'正在加载…';position:fixed;inset:0;z-index:9999;
  display:flex;align-items:center;justify-content:center;
  background:var(--ws-bg);color:var(--muted);font-size:14px;letter-spacing:.5px;
}
/* ---------- 鉴权屏：左品牌区 + 右表单区（桌面端分栏，≤900px 收起品牌区） ---------- */
.auth-wrap{min-height:100vh;display:flex;align-items:stretch;background:#f7faf9}

/* 左：品牌区 */
.auth-brand{
  position:relative;overflow:hidden;flex:0 0 51%;max-width:51%;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:36px 46px 28px;color:#eaf6f4;
  background:linear-gradient(158deg,#118378 0%,#0f766e 40%,#0a4d48 100%);
}
.ab-arc{position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.10);pointer-events:none}
.ab-arc-1{width:540px;height:540px;top:-250px;right:-180px}
.ab-arc-2{width:380px;height:380px;bottom:-200px;left:-130px;border-color:rgba(255,255,255,.07)}
.ab-top{display:flex;align-items:center;gap:12px;position:relative;z-index:1}
.ab-mark{
  display:flex;align-items:center;justify-content:center;flex:0 0 40px;
  width:40px;height:40px;border-radius:11px;background:#fff;color:var(--teal);
  font-size:14px;font-weight:800;letter-spacing:.5px;overflow:hidden;
}
.ab-mark .brand-logo{display:block;width:100%;height:100%;object-fit:contain;border-radius:inherit}
.ab-id{display:flex;flex-direction:column;gap:3px;min-width:0}
.ab-name{font-size:15px;font-weight:700;color:#fff;letter-spacing:.2px}
.ab-slogan{font-size:11.5px;color:rgba(255,255,255,.62);letter-spacing:1.1px}
.ab-mid{position:relative;z-index:1;padding:6px 0}
.ab-kicker{font-size:10.5px;letter-spacing:2.6px;color:rgba(255,255,255,.6);font-weight:600;margin-bottom:15px}
.ab-title{font-size:36px;line-height:1.36;font-weight:800;color:#fff;margin:0 0 18px;letter-spacing:.5px}
.ab-desc{font-size:13.5px;line-height:1.95;color:rgba(255,255,255,.76);margin:0 0 26px}
.ab-feats{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 26px}
.ab-feats li{display:flex;align-items:center;gap:8px;font-size:13px;color:rgba(255,255,255,.88)}
.ab-feats svg{flex:0 0 16px;color:rgba(255,255,255,.68)}
.ab-foot{position:relative;z-index:1;font-size:11.5px;line-height:1.85;color:rgba(255,255,255,.48)}

/* 右：表单区 */
.auth-panel{
  flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:center;
  padding:44px 30px;background:#f7faf9;
}
.auth-box{width:100%;max-width:372px}
.auth-head{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:22px}
.ah-ico{
  display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:11px;background:var(--teal-soft);color:var(--teal);
}
.auth-t{font-size:22px;font-weight:800;letter-spacing:.3px}
.auth-s{font-size:12.5px;color:var(--muted);margin-top:6px;line-height:1.7}
.auth-tabs{display:flex;gap:5px;background:#e9efee;border-radius:11px;padding:4px;margin-bottom:20px}
.atab{
  flex:1;border:0;background:transparent;padding:9px 0;border-radius:8px;
  font-size:13px;color:var(--muted);cursor:pointer;font-family:inherit;transition:.15s;
}
.atab.on{background:#fff;color:var(--teal);font-weight:700;box-shadow:0 1px 3px rgba(15,118,110,.16)}
.auth-pane{display:none}
.auth-pane.on{display:block}
.auth-note{font-size:12.5px;color:var(--muted);line-height:1.75;background:#eff4f3;border-radius:9px;padding:10px 12px;margin-bottom:14px}
.auth-submit{
  display:block;width:100%;margin-top:18px;padding:11px 14px;text-align:center;
  font-size:14px;font-weight:600;border-radius:9px;
}
.auth-submit::after{content:'→';margin-left:7px}
.auth-links{display:flex;justify-content:space-between;gap:10px;margin-top:13px;font-size:12.5px}
.auth-msg{min-height:18px;margin-top:12px;font-size:12.5px;color:var(--muted);line-height:1.6}
/* v=369：登录页「请向谁索取验证码」的常驻醒目提示（填码全程可见，不随 toast 消失） */
.auth-ask{font-size:13px;line-height:1.7;color:#7a4a16;background:#fff7f0;border:1px solid #f3d9c2;border-left:4px solid #e0922f;border-radius:9px;padding:11px 13px;margin-bottom:14px}
.auth-ask b{color:#c9761f;font-weight:700}
.auth-msg.err{color:#b4413a}
.auth-msg.ok{color:var(--teal)}
.wx-env-tip{margin-top:10px;padding:9px 12px;border:1px solid #bfe0d4;background:#eef8f3;color:#1d6a52;border-radius:9px;font-size:12px;line-height:1.6}
.auth-foot{margin-top:18px;padding-top:15px;border-top:1px solid var(--line);font-size:11.5px;color:#9aa3ad;line-height:1.75}
/* 登录屏输入框统一取景（含 email/password：通用规则只覆盖了 text/number/search） */
.auth-box input[type=text],
.auth-box input[type=email],
.auth-box input[type=password]{border-radius:9px;padding:10px 12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid2 > div{margin-top:12px}
.row2{display:flex;gap:8px}
.row2 input{flex:1}
.row2 .btn{flex:0 0 auto;white-space:nowrap}
/* .row2 的布局项是 .field 块，默认按内容宽度分配：要占满剩余用 field-grow，
   要固定窄列（如「性别」下拉）用 field-narrow —— 否则窄屏下被压到文字裁切。 */
.row2 .field-grow{flex:1 1 auto;min-width:0}
.row2 .field-narrow{flex:0 0 auto}
.chk{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:13.5px;cursor:pointer}
.chk input{width:auto;margin:0}
.req{color:#b4413a}

/* ---------- 微信扫码登录 ---------- */
.oauth-area{margin-top:18px}
.auth-divider{display:flex;align-items:center;color:#9aa3ad;font-size:12px;margin:2px 0 14px}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--line)}
.auth-divider span{padding:0 12px}
.wechat-btn{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  background:#07c160;color:#fff;border-color:#07c160;font-size:13.5px;padding:9px 14px;
}
.wechat-btn:hover{background:#06ad56;border-color:#06ad56}
.wechat-btn .wx-ico{
  display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;border-radius:4px;background:rgba(255,255,255,.22);
  font-size:11px;font-weight:700;
}
.oauth-tip{font-size:12px;color:var(--muted);text-align:center;margin-top:10px;line-height:1.6}
.wx-qr{
  margin:6px auto 14px;width:200px;height:200px;border:1px solid var(--line);
  border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.wx-qr-placeholder{
  width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;color:var(--muted);padding:14px;box-sizing:border-box;
  background:repeating-linear-gradient(45deg,#fafbfb,#fafbfb 10px,#f4f7f7 10px,#f4f7f7 20px);
}
.wx-qr-placeholder.on{border-color:var(--warn-line);background:#fff}
.wx-qr-ico{
  width:34px;height:34px;border-radius:8px;background:#07c160;color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;margin-bottom:10px;
}
.wx-qr-title{font-size:13px;color:var(--ink);font-weight:600;margin-bottom:6px}
.wx-qr-sub{font-size:11.5px;line-height:1.6}

/* ---------- 当前登录用户 ---------- */
.me{padding:12px 18px;border-top:1px solid var(--line);flex:0 0 auto}
.me-name{font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.me-sub{font-size:11.5px;color:var(--muted);margin-top:3px}
.me-tag{font-size:10.5px;background:var(--teal-soft);color:var(--teal);border-radius:20px;padding:1px 7px;font-weight:500}
.me-out{margin-top:9px;width:100%;font-size:12px;padding:5px 10px}
body.layout-center .me{
  border-top:0;padding:0;flex:0 0 auto;display:flex;align-items:center;gap:10px;
}
body.layout-center .me-name{font-size:13px;white-space:nowrap}
body.layout-center .me-sub{display:none}
body.layout-center .me-out{margin-top:0;width:auto;padding:5px 10px}

/* 窄屏：收起品牌区，表单占满；超窄屏再收紧内边距 */
@media(max-width:900px){
  .auth-brand{display:none}
  .auth-panel{padding:36px 20px}
}
@media(max-width:520px){
  .grid2{grid-template-columns:1fr;gap:0}
  .auth-panel{padding:28px 16px}
  body.layout-center .me{margin-left:0}
}

/* ---------- generic ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-bottom:18px}
.card.tight{padding:16px 18px}
.card h2{font-size:16px;margin:0 0 14px;font-weight:700}
.card h2 .sub{font-size:12px;color:var(--muted);font-weight:400;margin-left:8px}
.muted{color:var(--muted)}
.h3{font-size:15px;margin:26px 0 10px;padding-left:10px;border-left:3px solid var(--teal);font-weight:700}
.h3:first-child{margin-top:0}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
/* KPI 数据条：窄屏保持多列紧凑（不被全局 .g4/.g3 单列规则拆散）
   默认 4 列（与仪表盘一致）；标签较长的收入测算用 cols-2 两行两列；任务页用 cols-3 */
@media(max-width:860px){
  .grid.stat-row{grid-template-columns:repeat(4,1fr);gap:8px}
  .grid.stat-row.cols-3{grid-template-columns:repeat(3,1fr)}
  .grid.stat-row.cols-2{grid-template-columns:repeat(2,1fr)}
  .grid.stat-row .stat{padding:10px 8px}
  .grid.stat-row .stat .k{font-size:10.5px;line-height:1.3}
  .grid.stat-row .stat .v{font-size:15px;margin-top:3px}
  .grid.stat-row .stat .v small{font-size:9.5px;margin-left:2px}
  .grid.stat-row .stat .d{font-size:9.5px;line-height:1.3}
  /* 课程环节卡片：窄屏两列，减少长滚 */
  .grid.mod-grid{grid-template-columns:repeat(2,1fr);gap:10px}
}
@media(max-width:860px){
  .g2,.g3,.g4{grid-template-columns:1fr}
  /* 左侧菜单改为悬浮抽屉：默认隐藏，点顶栏按钮拉开，点遮罩收起 */
  body:not(.layout-center) .sidebar{
    position:fixed;top:0;left:0;height:100vh;width:280px;max-width:82vw;
    z-index:1200;transform:translateX(-100%);transition:transform .22s ease;
    box-shadow:2px 0 18px rgba(0,0,0,.18);
  }
  body.nav-open .sidebar{transform:none}
  body:not(.layout-center) .nav{display:block}
  body.nav-open .nav-backdrop{display:block}
  .ws-head{padding:0 16px;gap:10px}
  .ws-body{padding:16px 16px 32px}
  .ws-acts .btn{padding:6px 10px;font-size:12px}
  /* 居中模式在窄屏下：菜单换行，操作按钮回到常规流 */
  body.layout-center .sidebar{height:auto;flex-wrap:wrap;padding:10px 16px;gap:10px}
  body.layout-center .nav{flex-wrap:wrap;overflow-x:visible}
  body.layout-center .nav a{border:1px solid var(--line)}
  body.layout-center .side-foot{margin-left:0;width:100%;justify-content:space-between}
  body.layout-center .ws-head{padding:18px 16px 0;min-height:0}
  body.layout-center .ws-title{padding:0}
  body.layout-center .ws-title .tt{font-size:17px}
  body.layout-center .ws-acts{position:static;margin:12px auto 0}
  body.layout-center .ws-body{padding:10px 16px 40px}
}

/* buttons / inputs */
.btn{
  border:1px solid var(--teal-line);background:#fff;color:var(--teal);
  border-radius:8px;padding:7px 14px;font-size:13px;cursor:pointer;transition:.15s;
}
.btn:hover{background:var(--teal-soft)}
.btn.primary{background:var(--teal);color:#fff;border-color:var(--teal)}
.btn.primary:hover{background:#0b5c56}
.btn.ghost{border-color:var(--line);color:var(--muted)}
.btn.ghost:hover{background:#f2f5f5;color:var(--ink)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

label.fl{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
/* 产品管理后台表单 */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 22px;margin:6px 0 4px}
.form-row{display:flex;flex-direction:column}
.form-row .fl{margin-bottom:6px;font-size:12.5px;color:var(--ink);font-weight:600}
.form-row input,.form-row select,.form-row textarea{
  width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13.5px;
  background:#fff;color:var(--ink);font-family:inherit;box-sizing:border-box}
.form-row textarea{resize:vertical;line-height:1.6}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.08);outline:none}
.form-row input[type=color]{height:38px;padding:4px;cursor:pointer}
.btn.sm{padding:4px 10px;font-size:12px;border-radius:7px}
.btn.danger,.btn.ghost.danger{color:#b42318;border-color:#f0c2bc;background:#fff}
.btn.danger:hover,.btn.ghost.danger:hover{background:#fdecea}
@media (max-width:680px){.form-grid{grid-template-columns:1fr}}
/* 轻提示 toast（auth.js / app.js 共用） */
.wb-toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%) translateY(20px);
  background:rgba(17,24,39,.94);color:#fff;padding:11px 18px;border-radius:10px;font-size:13.5px;
  max-width:88vw;line-height:1.5;box-shadow:0 10px 30px rgba(0,0,0,.25);opacity:0;pointer-events:none;
  transition:opacity .2s ease,transform .2s ease;z-index:9999}
.wb-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============ 首页：产品选择 ============ */
.home{max-width:1080px;margin:0 auto;padding:8px 4px 24px}
.home-hero{margin:16px 2px 22px}
.home-hero h1{font-size:26px;margin:0 0 8px;letter-spacing:.5px}
.home-sub{margin:0;color:var(--muted);font-size:14.5px}
.prod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:18px}
.prod-card{position:relative;display:flex;flex-direction:column;background:var(--card);
  border:1px solid var(--line);border-radius:14px;padding:18px 18px 16px;text-decoration:none;
  color:var(--ink);transition:.18s;overflow:hidden}
.prod-card:before{content:"";position:absolute;left:0;top:0;right:0;height:4px;background:var(--pc,#0f766e)}
.prod-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(15,118,110,.12);border-color:var(--pc,#0f766e)}
.prod-card.is-soon{opacity:.74;filter:saturate(.72)}
.prod-card.is-soon:hover{transform:none;box-shadow:none;border-color:var(--line)}
.pc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.pc-ico{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:19px;font-weight:700;color:#fff;background:var(--pc,#0f766e)}
.pc-status{font-size:11px;padding:3px 9px;border-radius:20px;font-weight:600}
.pc-status.live{background:var(--teal-soft);color:var(--teal)}
.pc-status.soon{background:#eef1f3;color:#8a949c}
.pc-code{font-size:11.5px;color:#9aa3ad;letter-spacing:1px;margin-bottom:3px}
.pc-name{font-size:17px;font-weight:700;margin-bottom:4px}
.pc-tag{font-size:12.5px;color:var(--pc,#0f766e);font-weight:600;margin-bottom:10px}
.pc-desc{font-size:13px;color:var(--muted);line-height:1.6;flex:1}
.pc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.pc-meta{font-size:11.5px;color:#9aa3ad}
.pc-go{font-size:13px;font-weight:600;color:var(--pc,#0f766e)}
.prod-card.is-soon .pc-go{color:#9aa3ad}
.home-foot{margin-top:22px;text-align:center;font-size:12px;color:#9aa3ad}

/* ============ 侧栏产品条 ============ */
.prod-bar{padding:11px 14px;border-bottom:1px solid var(--line)}
.pb-row{display:flex;align-items:center;gap:10px}
.pb-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.pb-txt{flex:1;min-width:0;line-height:1.25}
.pb-label{font-size:10.5px;color:#9aa3ad;letter-spacing:.5px}
.pb-name{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-switch{padding:5px 10px;font-size:12px}
body.layout-center .prod-bar{display:none}

/* ============ 轻提示 toast ============ */
.wb-toast{position:fixed;left:50%;bottom:38px;transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:#fff;padding:11px 18px;border-radius:10px;font-size:13.5px;
  opacity:0;pointer-events:none;transition:.22s;z-index:9999;box-shadow:0 8px 24px rgba(0,0,0,.18);max-width:86vw;text-align:center}
.wb-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* type=email / type=password 原先漏在通用规则之外，导致这两类输入框渲染成浏览器默认样式 */
input[type=text],input[type=number],input[type=search],input[type=email],input[type=password],select,textarea{
  width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;
  font-size:14px;font-family:inherit;color:var(--ink);background:#fff;outline:none;
}
input:focus,select:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.08)}
.field{margin-bottom:12px}

/* table */
.tbl-wrap{overflow-x:auto;margin:12px 0;border:1px solid var(--line);border-radius:10px}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
th{background:#f4f7f7;font-weight:600;font-size:13px;color:#3d4954;white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:#fafcfc}
tr.total td{background:var(--teal-soft);font-weight:600}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}

/* text blocks */
.quote{
  background:var(--teal-soft);border-left:3px solid var(--teal);
  padding:14px 18px;border-radius:0 10px 10px 0;margin:14px 0;line-height:1.85;
}
.note{background:#f4f7f7;border:1px solid var(--line);padding:12px 16px;border-radius:10px;margin:14px 0;font-size:13.5px}
.warn{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-ink);padding:12px 16px;border-radius:10px;margin:14px 0;font-size:13.5px;line-height:1.8}
.danger{color:var(--danger-ink);font-weight:600}
ul.list,ol.list{padding-left:0;list-style:none;margin:10px 0}
ul.list li,ol.list li{position:relative;padding:6px 0 6px 18px;border-bottom:1px dashed #eef1f2;line-height:1.8}
ul.list li:before{content:'';position:absolute;left:2px;top:16px;width:5px;height:5px;border-radius:50%;background:var(--teal)}
ol.list.num{counter-reset:n}
ol.list.num li{counter-increment:n;padding-left:26px}
ol.list.num li:before{content:counter(n);position:absolute;left:2px;top:7px;width:17px;height:17px;line-height:17px;text-align:center;border-radius:50%;background:var(--teal);color:#fff;font-size:11px}
.tag{display:inline-block;font-size:11.5px;background:var(--teal-soft);color:var(--teal);border-radius:5px;padding:1px 7px;margin-right:8px;font-weight:600;vertical-align:1px}
.tag.ok{background:#eaf5ec;color:#2f6b3c}
.tag.no{background:var(--danger-bg);color:var(--danger-ink)}

/* script */
.script{border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin:12px 0;background:#fcfdfd}
.sc-head{font-weight:700;font-size:13px;color:var(--teal);margin:0 0 8px}
.sc-line{margin:4px 0;font-size:13.5px}
.who{display:inline-block;width:26px;height:20px;line-height:20px;text-align:center;border-radius:5px;font-size:11.5px;margin-right:8px;font-weight:600}
.who.me{background:var(--teal);color:#fff}
.who.cu{background:#eceff1;color:#54606b}

/* ---------- dashboard ---------- */
.hero{
  background:linear-gradient(135deg,#0f766e 0%,#12827a 100%);color:#fff;
  border-radius:var(--radius);padding:24px 26px;margin-bottom:18px;
}
.hero h1{margin:0;font-size:21px;font-weight:700;letter-spacing:.3px}
.hero .hs{margin-top:6px;font-size:13.5px;opacity:.92}
.hero .hl{margin-top:12px;font-size:12.5px;opacity:.82;border-top:1px solid rgba(255,255,255,.22);padding-top:12px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.stat .k{font-size:12px;color:var(--muted)}
.stat .v{font-size:22px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.stat .v small{font-size:12px;font-weight:400;color:var(--muted);margin-left:3px}
.stat .d{font-size:11.5px;color:var(--muted);margin-top:2px}

/* progress */
.bar{height:6px;background:#eef1f2;border-radius:6px;overflow:hidden;margin-top:8px}
.bar > i{display:block;height:100%;background:var(--teal);border-radius:6px;transition:width .4s}

/* module cards */
.mod-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;cursor:pointer;transition:.15s;display:flex;flex-direction:column;gap:6px;
}
.mod-card:hover{border-color:var(--teal);box-shadow:0 2px 10px rgba(15,118,110,.07)}
.mod-card .mn{font-size:11.5px;color:var(--teal);font-weight:700;letter-spacing:.5px}
.mod-card .mt{font-size:15px;font-weight:700}
.mod-card .mg{font-size:12.5px;color:var(--muted);line-height:1.6;flex:1}
.mod-card .mf{font-size:11.5px;color:#9aa3ad;display:flex;justify-content:space-between}
.mod-card.done{background:#fbfefd}
.mod-card.done .mn:after{content:' · 已学';color:#2f6b3c}

/* ---------- selftest ---------- */
.q-item{
  display:flex;gap:12px;align-items:flex-start;padding:11px 14px;border:1px solid var(--line);
  border-radius:10px;margin-bottom:8px;cursor:pointer;transition:.15s;background:#fff;
}
.q-item:hover{border-color:var(--teal-line)}
.q-item.on{background:var(--teal-soft);border-color:var(--teal)}
.q-item .qno{
  flex:0 0 24px;height:24px;line-height:24px;text-align:center;border-radius:50%;
  background:#f0f3f4;color:var(--muted);font-size:12px;font-weight:700;
}
.q-item.on .qno{background:var(--teal);color:#fff}
.q-item .qx{flex:1;font-size:14px}
.q-item .qbox{
  flex:0 0 22px;height:22px;border:1.5px solid var(--teal-line);border-radius:6px;margin-top:2px;
  position:relative;
}
.q-item.on .qbox{background:var(--teal);border-color:var(--teal)}
.q-item.on .qbox:after{content:'✓';position:absolute;inset:0;color:#fff;font-size:13px;line-height:19px;text-align:center}

.result-box{background:var(--teal-soft);border:1px solid var(--teal-line);border-radius:var(--radius);padding:18px 20px;margin-top:16px}
.result-box .rt{font-size:17px;font-weight:700}
.result-box .rs{margin-top:8px;font-size:13.5px;line-height:1.8}
.result-box.level-2{background:#eaf5ec;border-color:#c9e3ce}
.result-box.level-3{background:var(--warn-bg);border-color:var(--warn-line)}

/* ---------- calculator ---------- */
.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:860px){.calc-grid{grid-template-columns:repeat(2,1fr)}}
.kv{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed #eef1f2;font-size:13.5px}
.kv:last-child{border-bottom:none}
.kv .k{color:var(--muted)}
.kv .v{font-weight:600;font-variant-numeric:tabular-nums}
.kv.big .v{font-size:18px;color:var(--teal)}
.capped{color:#b26a00;font-weight:600}

/* ---------- timer ---------- */
.timer-face{text-align:center;padding:10px 0 4px}
.timer-face .seg{font-size:12.5px;color:var(--muted)}
.timer-face .big{font-size:52px;font-weight:700;letter-spacing:1px;font-variant-numeric:tabular-nums;line-height:1.2}
.timer-face .big.over{color:var(--danger-ink)}
.timer-face .nm{font-size:16px;font-weight:600;margin-top:2px}
.tl-item{display:flex;gap:12px;padding:10px 12px;border-radius:10px;align-items:center;transition:.15s}
.tl-item.on{background:var(--teal-soft)}
.tl-item.done{opacity:.5}
.tl-item .tmin{flex:0 0 56px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.tl-item .tname{flex:1;font-size:13.5px}
.tl-item .tform{font-size:11.5px;color:#9aa3ad}

/* ---------- flashcard ---------- */
.flash{
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  padding:26px 24px;min-height:210px;display:flex;flex-direction:column;justify-content:center;
}
.flash .fq{font-size:19px;font-weight:700;margin-bottom:14px}
.flash .fl{font-size:13px;color:var(--teal);font-weight:600;margin-bottom:12px}
.flash .fa{font-size:14.5px;line-height:1.9;background:#f7faf9;border-radius:10px;padding:14px 16px}
.flash .fa.hide{display:none}
.flash .hint{color:#9aa3ad;font-size:13px;text-align:center}

/* ---------- checklist ---------- */
.chk{display:flex;gap:11px;align-items:flex-start;padding:11px 14px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;cursor:pointer;background:#fff;transition:.15s}
.chk:hover{border-color:var(--teal-line)}
.chk.on{background:#fbfefd;border-color:#c9e3ce}
.chk .box{flex:0 0 20px;height:20px;border:1.5px solid var(--teal-line);border-radius:6px;position:relative;margin-top:2px}
.chk.on .box{background:#2f6b3c;border-color:#2f6b3c}
.chk.on .box:after{content:'✓';position:absolute;inset:0;color:#fff;font-size:12px;line-height:17px;text-align:center}
.chk .tx{flex:1;font-size:13.5px;line-height:1.7}
.chk.on .tx{color:#4a5560}

/* misc */
.pill{display:inline-block;font-size:11.5px;border-radius:20px;padding:2px 10px;border:1px solid var(--line);color:var(--muted);background:#fff}
.pill.hi{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger-ink);font-weight:600}
.pill.mid{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink);font-weight:600}
.pill.low{background:#f4f7f7;color:var(--muted)}
.empty{text-align:center;color:#9aa3ad;padding:30px 0;font-size:13px}
.divider{height:1px;background:var(--line);margin:18px 0}
.foot-note{font-size:11.5px;color:#9aa3ad;line-height:1.8;padding:6px 0 24px}

/* ===== 讲师工具包 · 可打印附件 ===== */
.kit-grid{gap:14px}
.kit-card{display:block;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;color:inherit;text-decoration:none;transition:.15s}
.kit-card:hover{border-color:var(--teal);box-shadow:0 4px 14px rgba(15,118,110,.12);transform:translateY(-2px)}
.kit-card .kn{font-size:12px;font-weight:700;color:var(--teal)}
.kit-card .kt{font-size:15px;font-weight:700;margin:6px 0 4px}
.kit-card .ks{font-size:12.5px;color:var(--muted);line-height:1.5}
.kit-card .kg{margin-top:10px;font-size:12.5px;color:var(--teal);font-weight:600}
.kit-page .kit-head{margin-bottom:4px}
.kit-intro{font-size:13.5px;color:#3d4954;line-height:1.7;margin:0 0 14px}
.kit-tip{font-size:12.5px;color:var(--muted);line-height:1.7;margin:10px 0;padding:10px 12px;background:#f6f9f8;border-left:3px solid var(--teal);border-radius:6px}
.kit-h{font-size:15px;font-weight:700;margin:20px 0 10px;color:#1f2a32}
.kit-fields{font-size:13px;line-height:2.2;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.blank{display:inline-block;border-bottom:1px solid #555;min-width:64px;margin:0 4px}
.chk-line{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.7;padding:7px 0;border-bottom:1px solid #f0f0f0}
.chk-line .box{flex:0 0 18px;height:18px;border:1.5px solid #c2ccd1;border-radius:4px;margin-top:2px}
.tree-root{font-size:14px;font-weight:700;margin:14px 0 6px}
.tree-children{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding-left:18px;border-left:2px solid var(--teal-line)}
.tree-node{background:#f6f9f8;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:13px}
.tree-sub{margin-top:6px;font-size:12px;color:var(--muted)}

/* 本课课件卡片（在线查看 / 下载 PDF / 下载 PPTX / 打印） */
.kit-cw{margin-bottom:18px}
.kit-cw-head{margin-bottom:4px}
.kit-cw-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.kit-cw-actions .btn{flex:0 1 auto}
.cw-extra{display:inline-flex;align-items:center;gap:7px;margin:0}
.cw-ext-ico{display:inline-block;font-size:10.5px;font-weight:700;line-height:1;padding:3px 5px;border-radius:4px;background:var(--teal);color:#fff;letter-spacing:.3px}

@media print{
  .sidebar,.ws-head,.ws-toggle,.btn-row,.no-print{display:none!important}
  body{background:#fff}
  .layout{display:block;height:auto;overflow:visible}
  .ws-body{overflow:visible;padding:0}
  .ws-inner{max-width:none}
  .card{border:none;padding:0;margin-bottom:14px;break-inside:avoid}
  .kit-card{box-shadow:none;border:1px solid #ddd}
  .tbl-wrap table,.tbl-wrap tr,.kit-page,.kit-tip{break-inside:avoid}
  .kit-tip{background:#f6f9f8!important}
}


/* ===== 我的团队（前端原型） ===== */
.team-wrap{max-width:980px;margin:0 auto}
.team-bar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.tb-label{font-size:12px;color:var(--muted);margin-bottom:4px}
#teamViewAs{padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:14px;min-width:220px}
.team-stats{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.ts-pill{background:#eef2f4;padding:7px 14px;border-radius:999px;font-size:13px;color:#3d4954}
.ts-pill b{color:var(--teal)}
.team-legend{display:flex;gap:14px;font-size:13px;color:#3d4954}
.team-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:middle}
.hint{background:#f3f7f8;border:1px solid #d8e6e4;color:#4b635f;padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.7;margin-bottom:16px}
.hint b{color:#1f2a32}
.tree{padding:4px 0}
.tnode-wrap{}
.tnode{display:flex;align-items:center;gap:11px;padding:9px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;margin:6px 0}
.tdot{width:11px;height:11px;border-radius:50%;background:var(--tc);flex:0 0 auto}
.tmain{flex:1;min-width:0}
.tname{font-weight:600;font-size:14px}
.tmeta{font-size:12px;color:var(--muted);margin-top:3px}
.tchildren{margin-left:24px;padding-left:16px;border-left:2px solid #e8edf0}
.tmore{margin:4px 0 4px 24px;color:var(--muted);font-size:12px}
.invite-card{border:1px solid var(--line);border-radius:12px;padding:18px;margin-top:20px;background:#fbfdfd}
.invite-card h3{margin:0 0 4px;font-size:16px}
.inv-sub{font-size:13px;color:var(--muted);line-height:1.7;margin:0 0 14px}
.inv-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0}
.inv-k{font-size:13px;font-weight:600;color:#3d4954;min-width:64px}
.seg{display:inline-flex;gap:6px}
.seg button{border:1px solid var(--line);background:#fff;padding:7px 18px;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px;color:#3d4954}
.seg button.on{background:var(--teal);color:#fff;border-color:var(--teal)}
.seg-i{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;padding:7px 14px;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px;color:#3d4954}
.seg-i input{accent-color:var(--teal)}
.seg-i.on{background:var(--teal);color:#fff;border-color:var(--teal)}
#invLink{flex:1;min-width:240px;padding:8px 11px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:#fff;color:#3d4954}
.inv-sep{border-top:1px dashed var(--line);margin:14px 0}
.btn.sm{padding:7px 14px;font-size:13px}
.inv-row.sim input{padding:8px 11px;border:1px solid var(--line);border-radius:8px;font-size:13px;min-width:120px}
.note{font-size:12px;color:var(--muted);line-height:1.7;margin-top:12px}

/* ===== 注册表单团队选择（邀请链接带入） ===== */
#suTeamRow{margin:8px 0 2px}
#suTeamRow .fl{margin-bottom:6px}
.hint-inline{font-size:12px;color:var(--teal);margin-top:6px;font-weight:600}

/* 内容管理编辑器（超级管理员编辑培训内容） */
.cc-row{grid-column:1 / -1}
.form-row .fl small{display:block;font-weight:400;color:var(--muted);font-size:11px;margin-top:2px}
.cc-ctl{display:flex;flex-direction:column;gap:6px}
.cc-ta{width:100%;min-height:180px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;line-height:1.5;white-space:pre;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 12px;resize:vertical}
.cc-ta:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.08);outline:none}
.btn.xs{padding:3px 9px;font-size:11px;border-radius:6px}

/* 内容管理编辑器（仅文字内容，锁定代码） */
.cc-form{display:flex;flex-direction:column;gap:14px}
.cc-sec{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.cc-sec-h{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg-soft,#f6f8f9);border-bottom:1px solid var(--line);font-size:14px}
.cc-sec-h .pill{margin-left:auto}
.cc-sec>.cc-locked,.cc-sec>div:last-child{padding:12px 14px}
.cc-locked{background:#fff7f4;border:1px dashed #e4b9a8;border-radius:8px;padding:8px 10px}
.cc-lock-tag{display:inline-block;font-size:11px;color:#a8502a;font-weight:600;background:#fdeee6;padding:2px 8px;border-radius:6px}
.cc-code{margin:8px 0 0;max-height:140px;overflow:auto;white-space:pre-wrap;font-size:11px;line-height:1.5;color:#8a6d62;background:#fff;padding:6px 8px;border-radius:6px}
.cc-in{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;color:var(--ink);background:#fff;font-family:inherit}
.cc-in:focus,.cc-ta:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px rgba(15,118,110,.08)}
.cc-num{max-width:140px}
.cc-ta{width:100%;min-height:72px;font-size:13px;line-height:1.55;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 10px;resize:vertical;font-family:inherit}
.cc-ta-sm{min-height:52px}
.cc-muted{color:var(--muted,#9aa3ad);font-size:12px;padding:4px 0}
.cc-list,.cc-objlist,.cc-matrix{display:flex;flex-direction:column;gap:8px}
.cc-item{display:flex;gap:8px;align-items:flex-start}
.cc-item .cc-ta{flex:1}
.cc-row-mat{display:flex;gap:6px;align-items:center}
.cc-row-mat .cc-idx{width:22px;color:var(--muted);font-size:12px;text-align:right;flex:none}
.cc-row-mat .cc-in{flex:1;min-width:0}
.cc-obj{border:1px solid var(--line);border-radius:8px;padding:10px;background:#fcfdfd}
.cc-obj-h{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:6px}
.cc-sub{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.cc-sub label{font-size:12px;color:var(--muted);font-weight:500}
.cc-sub .cc-in,.cc-sub .cc-ta{width:100%}

/* ===== 我的团队：商务中心（BC）架构图 ===== */
.bct-wrap{max-width:920px;margin:0 auto}
.bct-crumb{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-bottom:10px}
.bct-crumb a{color:var(--teal);cursor:pointer;font-weight:600}
.bct-crumb a:hover{text-decoration:underline}
.bct-crumb .sep{color:#c3ccd2}
.bct-crumb .cur{color:var(--ink);font-weight:600}
.bct-src{font-size:12px;color:var(--muted);margin-bottom:16px}
.bct-src b{color:#1f2a32}

/* 根节点 + 下箭头 */
.bct-rootwrap{display:flex;flex-direction:column;align-items:center}
.bct-root{display:inline-flex;flex-direction:column;align-items:center;gap:1px;text-align:center;
  border:1.5px solid #a9cfc6;background:#fff;border-radius:10px;padding:10px 28px;
  box-shadow:0 1px 0 rgba(15,118,110,.06)}
.bct-root .rn{font-weight:700;font-size:15px;color:#123f3a}
.bct-root .rm{font-size:12px;color:var(--muted)}
.bct-arrow{width:2px;height:26px;background:#bfe0d6;position:relative}
.bct-arrow::after{content:"";position:absolute;left:50%;bottom:-1px;transform:translateX(-50%);
  border-left:5px solid transparent;border-right:5px solid transparent;border-top:8px solid #bfe0d6}

/* BC1 容器 */
.bct-bc1{background:linear-gradient(180deg,#eef8f3,#e7f4ee);border:1px solid #cfe6dc;
  border-radius:16px;padding:16px 18px 18px}
.bct-bc1-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.bct-bc1-h .t{font-weight:700;font-size:15px;color:#12433c}
.bct-bc1-h .legs{font-size:12.5px;color:#5c7b74;font-variant-numeric:tabular-nums}

/* 两条部门 */
.bct-legs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.bct-leg{display:flex;flex-direction:column;align-items:center;min-width:0}
.bct-leglab{font-size:12px;color:#5c7b74;margin-bottom:8px}
.bct-bc{background:#dcefe6;border:1px solid #b9dccd;border-radius:10px;padding:10px 16px;
  font-weight:700;font-size:13.5px;color:#12433c;text-align:center;min-width:170px}
.bct-fork{width:100%;height:34px;display:block;margin:-1px 0}
.bct-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%}

/* 叶子部门卡（A/B/C/D，可含多人列表） */
.bct-pcard{background:#fff;border:1px solid #dfe7e5;border-radius:10px;padding:10px 12px;text-align:center;min-width:0}
.bct-pcard.weak{background:#fdf6ee;border-color:#f0dcc0}
.bct-ph{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:2px}
.bct-pl{font-weight:700;font-size:15px;color:#1f2a33}
.bct-tag{font-size:11px;padding:1px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:#fff;white-space:nowrap}
.bct-tag.strong{color:#0f766e;border-color:#bfe0d6;background:#eef8f3}
.bct-tag.bottle{color:#a35a12;border-color:#f0dcc0;background:#fdf4ec}
.bct-tag.sub{color:#8a6d3b;border-color:#ecdfc8;background:#fbf7ef}
.bct-pcv{font-size:13px;color:#3d4954;font-weight:600;font-variant-numeric:tabular-nums}
.bct-list{display:flex;flex-direction:column;gap:4px;margin-top:8px;border-top:1px dashed var(--line);padding-top:8px}
.bct-m{display:flex;align-items:center;gap:8px;row-gap:3px;flex-wrap:wrap;font-size:12.5px;padding:4px 6px;border-radius:7px;
  cursor:pointer;text-align:left;transition:background .12s;min-width:0}
.bct-m:hover,.bct-m:focus{background:#f1f8f6;outline:none}
.bct-m .mn{flex:1;min-width:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:#243038}
.bct-m .mn .vip{font-style:normal;font-size:10px;color:#0f766e;background:#eef8f3;border:1px solid #bfe0d6;
  border-radius:999px;padding:0 5px;margin-left:5px;font-weight:600}
.bct-m .mc{color:var(--muted);font-variant-numeric:tabular-nums}
.bct-m .go{color:var(--teal);font-size:11.5px;font-weight:600;white-space:nowrap}
.bct-empty{font-size:12px;color:#9aa3ad;padding:6px 0;text-align:center}
/* 图示卡「缩略图 → 点开完整显示」：默认收起，只显示部门+成员名+CVP；点 .bct-ph-toggle 展开（同套 [data-collapse] 组件） */
.bct-ph-toggle{justify-content:flex-start;cursor:pointer;border-radius:6px;padding:2px 4px;margin:-2px -4px}
.bct-ph-toggle:hover{background:#f1f8f6}
.bct-ph-toggle:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.bct-ph .chev{margin-left:auto;font-size:12px;line-height:1;color:#5c7b74;transition:transform .18s ease}
.bct-pcard.open .bct-ph .chev{transform:rotate(180deg)}

/* 三张佣金卡 */
.bct-comm{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px}
.bct-cc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;text-align:center}
.bct-cc h4{margin:0 0 8px;font-size:13.5px;color:#243038}
.bct-cc .l{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.bct-cc .v{font-size:15px;font-weight:700;color:var(--teal);margin-top:4px;font-variant-numeric:tabular-nums}

/* 汇总条 */
.bct-sum{background:#123f38;color:#eaf6f1;border-radius:14px;padding:14px 18px;margin-top:16px}
.bct-sum .s1{font-size:16px;font-weight:700}
.bct-sum .s2{font-size:12.5px;color:#b9d8cf;margin-top:6px;line-height:1.7}

/* 窄屏保持架构图横向摆放：双部门并排、4 张部门卡同一行（缩略图只显示部门+姓名，点开的卡跨整部门展开）；
   三张佣金卡同样保持一行 3 列不折行（内容窄屏自动紧凑） */
@media (max-width:760px){
  .bct-bc{min-width:0;font-size:12px;padding:8px 10px}
  .bct-leglab{font-size:11px}
}

/* CVP 手动录入 */
.bct-m .mc{cursor:pointer;border-bottom:1px dashed #c9d6d2;min-width:46px;text-align:right;padding:0 2px}
.bct-m .mc:hover{color:var(--teal);border-bottom-color:var(--teal)}
.bct-m .mc.manual{color:#0f766e;border-bottom-color:#7fc8b8;font-weight:600}
.bct-pen{font-style:normal;font-size:10px;color:#0f766e;margin-left:2px}
.bct-cvp-input{width:66px;font-size:12.5px;padding:2px 4px;border:1px solid var(--teal);border-radius:6px;text-align:right;font-variant-numeric:tabular-nums;outline:none}
.bct-src .lnk{color:var(--teal);cursor:pointer;font-weight:600;text-decoration:underline}
.bct-src .lnk:hover{opacity:.85}

/* 图示中：单成员卡 */
.bct-pcard .bct-m.active{border-top:1px dashed var(--line);margin-top:8px;padding-top:8px}
.bct-pcard .bct-alt{font-size:11px;color:#7c8a93;margin-top:8px;padding-top:6px;border-top:1px dashed var(--line);line-height:1.5}
.bct-pcard .bct-alt b{color:#0f766e}

/* 底部团队伙伴表 */
.bct-roster{margin-top:18px;background:#f7faf9;border:1px solid #e1eae8;border-radius:14px;padding:14px 16px}
.bct-rtitle{font-size:12.5px;color:#5c7b74;margin-bottom:12px;line-height:1.6}
.bct-rcols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.bct-rcol{background:#fff;border:1px solid #e6edeb;border-radius:10px;padding:8px;min-width:0}
.bct-rh{display:flex;align-items:center;gap:6px;font-size:12px;color:#5c7b74;margin-bottom:8px;padding-bottom:6px;border-bottom:1px dashed var(--line)}
.bct-rh .cnt{margin-left:auto;background:#eef8f3;color:#0f766e;border:1px solid #bfe0d6;border-radius:999px;padding:0 7px;font-size:11px;font-weight:700}
.bct-rrow{display:flex;align-items:center;gap:6px;row-gap:2px;flex-wrap:wrap;font-size:12.5px;padding:6px 6px;border-radius:8px;cursor:pointer;transition:background .12s;min-width:0}
.bct-rrow:hover{background:#eef6f3}
.bct-rrow .rdot{width:7px;height:7px;border-radius:50%;background:#cdd9d5;flex:none}
.bct-rrow.on{background:#eef8f3;cursor:default}
.bct-rrow.on .rdot{background:#0f766e}
.bct-rrow.on:hover{background:#eef8f3}
.bct-rrow .rn{flex:1;min-width:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:#243038}
.bct-rrow .rn .vip{font-style:normal;font-size:10px;color:#0f766e;background:#eef8f3;border:1px solid #bfe0d6;border-radius:4px;padding:0 3px;margin-left:3px}
.bct-rrow .ract{font-size:11px;color:#0f766e;font-weight:600;white-space:nowrap}
.bct-rrow .rbadge{font-size:10.5px;color:#0f766e;background:#dcefe6;border:1px solid #bfe0d6;border-radius:999px;padding:1px 7px;font-weight:700;white-space:nowrap}
.bct-rrow .rc{font-variant-numeric:tabular-nums;color:#3d4954;font-weight:600;min-width:46px;text-align:right}
.bct-rrow .rc.manual{color:#0f766e}
/* 事业伙伴并入团队架构：待注册 / 已升级徽标与操作 */
.bct-m.pending{background:#fff7ed;border:1px dashed #f0c393}
.bct-m.pending .mn .pend{font-style:normal;font-size:10px;color:#b45309;background:#fef3c7;border:1px solid #f0c393;border-radius:4px;padding:0 3px;margin-left:3px}
.bct-pend-inv{margin-left:auto;border:1px solid #f0c393;background:#fff;color:#b45309;border-radius:7px;font-size:11px;padding:3px 8px;cursor:pointer;white-space:nowrap}
.bct-pend-inv:hover{background:#fff7ed}
.vip.partner{color:#7c3aed!important;background:#f3ebfd!important;border-color:#d8c4f5!important}
/* v=259：团队架构中「共享纳入」伙伴的标识，暖色与伙伴表主表 共享 标签一致 */
.vip.shared{color:#7a5a16!important;background:#fff7ec!important;border-color:#f0d9b0!important}
.bct-rrow.pending{background:#fff7ed}
.bct-rrow .rbadge.pend{color:#b45309;background:#fef3c7;border-color:#f0c393}
.bct-ract-btn{margin-left:8px;border:1px solid #0f766e;background:#fff;color:#0f766e;border-radius:7px;font-size:11px;padding:3px 9px;cursor:pointer;white-space:nowrap}
.bct-ract-btn:hover{background:#eef8f3}
.bct-ract-btn.ghost{border-color:#d8c4f5;color:#7c3aed}
.bct-ract-btn.ghost:hover{background:#f3ebfd}
.bct-rrow .racts{margin-left:auto;display:flex;gap:6px}
/* 伙伴表 A/B/C/D 四部门列所有屏宽保持一行 4 列（同佣金卡口径：同类卡片组窄屏横向摆放）；
   手机（≤560）收起态行改竖排（姓名/CVP 各一行），徽标/按钮已由 col-extra 收起态隐藏 */
@media (max-width:560px){
  .bct-legs{gap:10px}
  .bct-cards{gap:8px}
  .bct-pcard{padding:6px 4px}
  .bct-pcard .bct-ph{gap:4px}
  .bct-pcard .bct-m.active{margin-top:4px;padding-top:4px}
  .bct-m{font-size:12px}
  /* 点开的卡跨整部门两列展开，按钮/数字不挤在窄缩略图里 */
  .bct-pcard.open{grid-column:1 / -1}
  /* 三张佣金卡保持一行 3 列，内容紧凑 */
  .bct-comm{gap:8px}
  .bct-cc{padding:10px 4px}
  .bct-cc h4{font-size:12px}
  .bct-cc .l{font-size:10.5px}
  .bct-cc .v{font-size:12.5px}
  /* 伙伴表窄列：收起态行竖排（姓名/CVP 各一行），圆点省略 */
  .bct-rrow{flex-direction:column;align-items:flex-start;gap:2px}
  .bct-rrow .rdot{display:none}
  .bct-rrow .rn{flex:none;max-width:100%}
  .bct-rrow .rc{min-width:0;text-align:left}
  .bct-rrow .racts{margin-left:0;flex-wrap:wrap}
}

/* ===== 通用「缩略 / 展开」组件（默认收起，点 .col-more 展开；电脑/手机/平板一致） ===== */
[data-collapse]:not(.open) .col-extra{display:none}
[data-collapse] .col-more{display:flex;align-items:center;justify-content:center;gap:5px;
  margin-top:8px;padding-top:7px;border-top:1px dashed var(--line);
  font-size:11.5px;color:#0f766e;cursor:pointer;user-select:none}
[data-collapse] .col-more:hover{opacity:.78}
[data-collapse] .col-more .chev{display:inline-block;transition:transform .15s;font-size:10px;line-height:1}
[data-collapse].open .col-more .chev{transform:rotate(180deg)}
[data-collapse].open .col-more .m-more{display:none}
[data-collapse]:not(.open) .col-more .m-less{display:none}

/* 团队架构底部：邀请伙伴生成链接 */
.bct-invite{margin-top:18px;background:linear-gradient(180deg,#f3faf7 0%,#eef6f2 100%);border:1px solid #d8ebe3;border-radius:14px;padding:16px 18px}
.bct-invite-locked{background:#f7faf9;border-style:dashed}
.bct-invite-h{font-size:15px;font-weight:700;color:#0f766e;margin-bottom:6px}
.bct-invite-desc{font-size:12.5px;color:#5c7b74;line-height:1.6;margin:0 0 14px}
.bct-invite-warn{margin:0 0 12px;font-size:12.5px;color:#8a6100;background:#fff8e6;border:1px solid #f1e0b2;border-radius:9px;padding:8px 11px;line-height:1.6}
.bct-invite-btns{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.bct-invite-locked .bct-invite-btns{grid-template-columns:auto;justify-content:start}
.bct-invite-locked .bct-invite-btns .btn{width:auto;justify-self:start}
.inv-slot{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  border:1px solid #cfe6dd;background:#fff;color:#0f766e;
  border-radius:11px;padding:12px 6px;cursor:pointer;font-weight:700;transition:.15s;
}
.inv-slot b{font-size:18px;line-height:1}
.inv-slot span{font-size:11px;color:#5c7b74;font-weight:600}
.inv-slot:hover{background:#0f766e;border-color:#0f766e;color:#fff}
.inv-slot:hover span{color:#d6efe7}
.inv-slot:disabled{opacity:.6;cursor:default}
.bct-invite-list{margin-top:14px;display:flex;flex-direction:column;gap:10px}
.inv-card{border:1px solid #dcebe6;background:#fff;border-radius:11px;padding:12px 14px}
.inv-card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.inv-slot-tag{font-size:12px;font-weight:700;color:#fff;background:#0f766e;border-radius:6px;padding:2px 8px}
.inv-code{font-size:11.5px;color:#5c7b74;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.inv-link{display:flex}
.inv-link-input{width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:11.5px;color:#3d4954;background:#f8faf9;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.inv-card-acts{display:flex;gap:8px;margin-top:9px}
.inv-card-acts .btn{width:auto}
.bct-invite-rec{margin-top:16px;border-top:1px dashed #d8ebe3;padding-top:12px}
.bct-invite-rec-h{font-size:12.5px;font-weight:700;color:#3d4954;margin-bottom:8px}
.bct-invite-rec-body{display:flex;flex-direction:column;gap:6px}
.inv-row{display:flex;align-items:center;gap:10px;font-size:12px;background:#fff;border:1px solid #e6efeb;border-radius:8px;padding:7px 10px}
.inv-row-slot{font-weight:700;color:#0f766e;width:22px}
.inv-row-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#3d4954;flex:1}
.inv-used{margin-left:auto;font-size:10.5px;color:#0f766e;background:#dcefe6;border:1px solid #bfe0d6;border-radius:999px;padding:1px 7px;font-weight:700}
.inv-pending{margin-left:auto;font-size:10.5px;color:#b4791e;background:#fdf3e0;border:1px solid #f3e1b8;border-radius:999px;padding:1px 7px;font-weight:700}
/* 邀请区 A/B/C/D 按钮窄屏也保持一行 4 列（同佣金卡口径：同类卡片组窄屏横向摆放） */

/* ===================== 团队架构 · 发展诊断面板 ===================== */
.bct-diag{margin-top:18px;background:#fff;border:1px solid #d8ebe3;border-radius:14px;padding:15px 17px;box-shadow:0 1px 0 #eef6f2}
.bct-diag-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:15px;font-weight:700;color:#0f766e;margin-bottom:12px}
.bct-diag-ic{font-size:16px}
.bct-diag-sub{margin-left:auto;font-size:11px;font-weight:600;color:#5c7b74;background:#eef6f2;border:1px solid #d8ebe3;border-radius:999px;padding:2px 9px}
/* 视角标识：架构图下钻后，诊断跟随该伙伴 ⇒ 标题旁标明当前在看谁的团队 */
.bct-diag-view{font-size:11.5px;font-weight:700;color:#0b5c55;background:#dff2ec;border:1px solid #b6e0d3;border-radius:999px;padding:2px 9px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.bct-dg-sec{margin-bottom:13px}
.bct-dg-sect{font-size:12px;font-weight:700;color:#3d4954;margin-bottom:7px;display:flex;align-items:center}
.bct-dg-sect::before{content:"";width:3px;height:11px;background:#0f766e;border-radius:2px;margin-right:6px}
.bct-dg-legs{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.bct-dg-cell{background:#f7faf9;border:1px solid #e1eae8;border-radius:10px;padding:9px 6px;text-align:center}
.bct-dg-cell.bct-dg-zero{background:#fef4f0;border-color:#f6d9cd}
.bct-dg-cell.bct-dg-zero .bct-dg-n{color:#c0532b}
.bct-dg-p{display:block;font-size:12px;font-weight:700;color:#0f766e}
.bct-dg-n{display:block;font-size:20px;font-weight:800;color:#123f38;line-height:1.2;margin-top:1px}
.bct-dg-cap{display:block;font-size:10px;color:#9bb3ad}
/* 部门负责人姓名（该部门图示位那一位）—— 只算他/她这一支的裂变 */
.bct-dg-nm{display:block;font-size:10.5px;color:#4a5b66;line-height:1.35;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bct-dg-cell.bct-dg-zero .bct-dg-nm{color:#b8a79f}
/* v=121 裂变矩阵：行 = ABCD 四个部门（从四个第一层向下），列 = 部门内第1~4层（目标 1/4/16/64）
   单元格 = 实际/目标；末行「合计」= 全树 4→16→64→256。 */
.bct-dg-mat{font-size:12px}
.bct-dg-matr{display:grid;grid-template-columns:34px repeat(4,1fr) 60px;gap:5px;align-items:center;padding:4px 0;border-bottom:1px dashed #eef2f0}
.bct-dg-matr:last-child{border-bottom:0}
.bct-dg-matr.hd{padding-bottom:2px}
.bct-dg-matr.hd .bct-dg-mh{font-size:11px;font-weight:700;color:#9bb3ad;text-align:center}
.bct-dg-matr.hd .bct-dg-matl,.bct-dg-matr.hd .bct-dg-msum{font-size:11px;font-weight:700;color:#9bb3ad}
.bct-dg-matr.tot{border-top:1px solid #e3ebe8;border-bottom:0;padding-top:5px}
.bct-dg-matr.tot .bct-dg-matl{color:#123f38}
.bct-dg-matl{font-weight:800;color:#0f766e;text-align:center}
.bct-dg-mc{display:block;box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;font-weight:700;text-align:center;padding:3px 0;border-radius:6px;background:#f2f7f5;color:#123f38;line-height:1.3}
.bct-dg-mc.ok{background:#e7f4ee;color:#0f766e}
.bct-dg-mc.gap{background:#fef4f0;color:#c0532b}
.bct-dg-mc.gap.zero{background:#fdf1eb;color:#a8431f}
.bct-dg-mc.na{background:#f7f9f8;color:#9bb3ad;font-weight:400}
.bct-dg-msum{font-size:11px;color:#7c8b93;text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.bct-dg-msum b{color:#123f38;font-size:12px}
.bct-dg-msum.ok b{color:#0f766e}
.bct-dg-msum.gap b{color:#c0532b}
.bct-dg-matnote{font-size:11px;line-height:1.65;color:#7c8b93;margin-top:8px}
.bct-dg-matnote b{color:#123f38}
.bct-dg-stat{font-size:13px;color:#3d4954}
.bct-dg-stat b{font-size:18px;color:#123f38;margin:0 3px}
.bct-dg-sugs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.bct-dg-sug{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;line-height:1.55;color:#2f3a42;background:#f7faf9;border:1px solid #e6efeb;border-radius:9px;padding:8px 11px}
.bct-dg-tag{flex:0 0 auto;font-size:10.5px;font-weight:700;border-radius:6px;padding:2px 7px;margin-top:1px}
.bct-dg-sug.lack .bct-dg-tag{color:#fff;background:#c0532b}
.bct-dg-sug.lack{background:#fef4f0;border-color:#f6d9cd}
.bct-dg-sug.weak .bct-dg-tag{color:#fff;background:#c77a00}
.bct-dg-sug.weak{background:#fef8ec;border-color:#f3e1b8}
.bct-dg-sug.todo .bct-dg-tag{color:#0f766e;background:#dcefe6}
.bct-dg-sug.tip .bct-dg-tag{color:#3d4954;background:#e6efeb}
/* 逐层裂变检查（每人带出 4 个）：层头行 + 每位成员的 ABCD 四位占用胶囊 */
.bct-dg-fan{display:flex;flex-direction:column;gap:8px}
.bct-dg-flv{display:grid;grid-template-columns:52px 62px 1fr 58px;gap:7px;align-items:center;font-size:12px;padding:5px 9px;border-radius:8px;background:#f2f7f5}
.bct-dg-flv.gap{background:#fdf5f1}
/* 上一层还没有伙伴 ⇒ 该层暂无待带出对象（中性灰，不误报「缺」/「已带满」） */
.bct-dg-flv.none{background:#f4f6f7}
.bct-dg-flv.none .bct-dg-flvp b,.bct-dg-flv.none .bct-dg-flvg{color:#9bb3ad}
.bct-dg-flvn{font-weight:800;color:#123f38;white-space:nowrap}
.bct-dg-flvp{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:#5a6b73;white-space:nowrap}
.bct-dg-flvp b{font-size:13.5px;color:#0f766e}
.bct-dg-flv.gap .bct-dg-flvp b{color:#c0532b}
.bct-dg-flvbar{height:6px;background:#e6efeb;border-radius:4px;overflow:hidden}
.bct-dg-flvbar i{display:block;height:100%;background:linear-gradient(90deg,#0f766e,#3aa394);border-radius:4px}
.bct-dg-flv.gap .bct-dg-flvbar i{background:linear-gradient(90deg,#c0532b,#e08a5f)}
.bct-dg-flvg{font-size:10.5px;font-weight:700;text-align:right;color:#0f766e;white-space:nowrap}
.bct-dg-flv.gap .bct-dg-flvg{color:#c0532b}
.bct-dg-fnodes{display:flex;flex-direction:column;gap:6px;padding:2px 0 4px 7px;margin-left:9px;border-left:2px solid #e6efeb}
.bct-dg-fnode{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.bct-dg-fnm{flex:0 0 auto;font-size:12px;font-weight:700;color:#2f3a42;max-width:118px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bct-dg-fnm em{font-style:normal;font-size:10px;font-weight:600;color:#8b9aa1;margin-left:3px}
.bct-dg-fslots{display:flex;flex-wrap:wrap;gap:4px;min-width:0}
.bct-dg-slot{display:inline-flex;align-items:center;gap:3px;box-sizing:border-box;font-size:10.5px;line-height:1;padding:3px 6px;border-radius:6px;border:1px solid transparent;max-width:132px}
.bct-dg-slot .bct-dg-sa{font-style:normal;font-weight:800;flex:0 0 auto}
.bct-dg-slot .bct-dg-sn{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bct-dg-slot.on{background:#e7f4ee;border-color:#cfe7db;color:#0f766e}
.bct-dg-slot.on .bct-dg-sa{color:#0b5b55}
.bct-dg-slot .bct-dg-sx{font-style:normal;flex:0 0 auto;font-size:9px;font-weight:800;color:#8aa39c;background:#f0f4f2;border-radius:4px;padding:1px 3px}
.bct-dg-slot.off{background:#fef4f0;border-color:#f6d9cd;color:#c0532b}
.bct-dg-slot.off .bct-dg-sn{font-weight:700}
.bct-dg-fmore{font-size:11px;line-height:1.6;color:#7c8b93;padding-left:2px}
@media (max-width:760px){
  /* 窄屏：部门名列与合计列收窄，单元格字号下调，保证「16/64」不换行 */
  .bct-dg-matr{grid-template-columns:28px repeat(4,1fr) 48px;gap:4px}
  .bct-dg-mc{font-size:11px;padding:2px 0}
  .bct-dg-matl,.bct-dg-msum{font-size:10.5px}
  .bct-dg-msum b{font-size:11px}
  .bct-dg-matr.hd .bct-dg-mh,.bct-dg-matr.hd .bct-dg-matl,.bct-dg-matr.hd .bct-dg-msum{font-size:10px}
  .bct-dg-cap{font-size:9.5px}
  /* 逐层检查：层头行收窄、节点行改为「姓名一行 + 四位一行」，避免挤压换行 */
  .bct-dg-flv{grid-template-columns:44px 52px 1fr 50px;gap:5px;font-size:11px;padding:4px 7px}
  .bct-dg-flvp{font-size:10px}
  .bct-dg-flvp b{font-size:12px}
  .bct-dg-flvg{font-size:10px}
  .bct-dg-fnode{gap:4px}
  .bct-dg-fnm{max-width:100%;font-size:11.5px}
  .bct-dg-slot{font-size:10px;padding:3px 5px;max-width:104px}
}

/* ===================== 我的团队 · 子页签 + 客户服务 ===================== */
.subtabs{display:flex;gap:8px;margin:0 0 16px}
.subtab{
  border:1px solid var(--line);background:#fff;color:var(--muted);
  padding:7px 16px;border-radius:9px;font-size:13.5px;font-weight:600;cursor:pointer;transition:.15s;
}
.subtab:hover{border-color:var(--teal-line)}
.subtab.active{background:var(--teal);color:#fff;border-color:var(--teal)}
.team-sub{animation:fade .2s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* 客户服务统计卡 */
.crm-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0}
/* 客户服务页统计卡只有 3 张：单独用 3 列，避免桌面/窄屏出现空列或 2+1 断行 */
.crm-stats.crm-stats-3{grid-template-columns:repeat(3,1fr)}
.crm-stats .card{padding:14px 16px}
.crm-stats .k{font-size:12px;color:var(--muted);margin-bottom:4px}
.crm-stats .v{font-size:26px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.crm-stats .card.accent{background:var(--teal);border-color:var(--teal)}
.crm-stats .card.accent .k{color:rgba(255,255,255,.8)}
.crm-stats .card.accent .v{color:#fff}

/* 筛选 chips */
.crm-chips{display:flex;gap:6px;flex-wrap:wrap}
.filter-chip{cursor:pointer;border:1px solid var(--teal-line);background:#fff;color:var(--teal)}
.filter-chip.active{background:var(--teal);color:#fff;border-color:var(--teal)}

/* 阶段标签配色 */
.tag.prospect{background:#eef2f7;color:#3b5566}
.tag.customer{background:#eaf5ec;color:#2f6b3c}
.tag.partner{background:#fdf0e8;color:#9a5a16}

/* 小按钮 */
.btn.sm{padding:5px 12px;font-size:12.5px;border-radius:8px}
.btn.sm.ghost{background:#f4f7f7}

/* 只读字段 */
.ro{padding:8px 10px;background:#f6f8f8;border-radius:8px;color:var(--ink);font-size:13.5px}

/* CRM 弹窗（独立前缀，避免与平台其它 .modal/.drawer 冲突） */
.crm-modal-mask{position:fixed;inset:0;background:rgba(20,28,34,.45);display:flex;align-items:center;justify-content:center;z-index:1000;padding:18px}
.crm-modal{background:#fff;border-radius:14px;width:100%;max-width:460px;max-height:88vh;overflow:auto;padding:22px 22px 18px;box-shadow:0 24px 60px rgba(0,0,0,.25)}
.crm-modal h2{margin:0 0 16px;font-size:17px;color:var(--ink)}
.crm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.crm-overlay{position:fixed;inset:0;background:rgba(20,28,34,.4);z-index:1000;display:flex;justify-content:flex-end}
.crm-drawer{background:#fff;width:min(420px,92vw);height:100%;overflow:auto;padding:22px 22px 30px;box-shadow:-12px 0 40px rgba(0,0,0,.18);animation:slidein .22s ease}
@keyframes slidein{from{transform:translateX(30px);opacity:.4}to{transform:translateX(0);opacity:1}}
.crm-close{position:absolute;top:12px;right:14px;width:30px;height:30px;border:none;background:#f1f4f4;border-radius:8px;font-size:20px;line-height:1;color:var(--muted);cursor:pointer}
.crm-drawer h2{margin:0 0 10px;font-size:18px}
.crm-kv{display:grid;grid-template-columns:74px 1fr;gap:6px 10px;margin:14px 0}
.crm-k{color:var(--muted);font-size:13px}
.crm-v{font-size:13.5px;color:var(--ink)}
.crm-tabs2{display:flex;gap:6px;margin:14px 0 10px;border-bottom:1px solid var(--line);padding-bottom:8px}
.crm-tabs2 button{border:none;background:none;color:var(--muted);font-size:13.5px;font-weight:600;padding:4px 10px;cursor:pointer;border-radius:7px}
.crm-tabs2 button.active{color:var(--teal);background:var(--teal-soft)}
.crm-tl{display:flex;flex-direction:column;gap:8px}
.crm-tl-item{border:1px solid var(--line);border-radius:10px;padding:9px 12px}
.crm-tl-item .date{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.crm-tl-item .body{font-size:13.5px;color:var(--ink);margin-top:3px}
.crm-tl-item .next{font-size:12.5px;color:var(--teal);margin-top:4px}
/* 每条跟进底部的「修改 / 删除」操作 */
.crm-tl-actions{display:flex;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.crm-tl-actions .btn{font-size:11.5px;padding:2px 10px;line-height:1.7}
/* 新增成交 · 产品明细多行（产品 / 单价 / CVP / 数量） */
.crm-modal.crm-modal-wide{max-width:580px}
.crm-deal-head,.crm-deal-row{display:grid;grid-template-columns:1fr 86px 60px 54px 30px;gap:6px}
.crm-deal-head{padding:0 2px;margin:2px 0 6px;font-size:11.5px;color:var(--muted)}
.crm-deal-row{align-items:center;margin-bottom:6px}
.crm-deal-row .input{padding:7px 8px;font-size:13px}
.crm-deal-row .dp-del{padding:3px 0;font-size:15px;line-height:1.1;text-align:center}
.crm-deal-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:6px;flex-wrap:wrap}
.crm-deal-sum{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap}
.crm-deal-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
/* 客户服务 · 产品库（成交录入过的产品自动沉淀：选一次即记住单价/CVP，并按产品累计汇总） */
.crm-head-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
/* v=309 客户服务 · 头部三个醒目大按钮（新增客户 / 产品库存 / 应收账款），取代原先的小按钮行。
   用不同色系区分三个高频动作；等宽并排，在窄屏可换行但仍保持醒目。 */
.crm-head-btns-lg{gap:12px;margin-top:14px}
.crm-big-btn{
  display:flex;align-items:center;justify-content:center;gap:9px;
  min-width:132px;padding:14px 20px;border-radius:13px;cursor:pointer;
  border:1px solid transparent;font-family:inherit;font-size:15px;font-weight:700;
  line-height:1.2;transition:transform .12s ease,box-shadow .12s ease;
}
.crm-big-btn .cb-ico{font-size:19px;line-height:1}
.crm-big-btn .cb-tx{white-space:nowrap}
.crm-big-btn:hover{transform:translateY(-1px)}
.crm-big-btn:active{transform:translateY(0)}
/* 新增客户：主色实心（最常用） */
.crm-big-new{background:var(--teal);color:#fff;box-shadow:0 2px 8px rgba(15,118,110,.22)}
.crm-big-new:hover{box-shadow:0 4px 14px rgba(15,118,110,.28)}
/* 产品库存：蓝（进货/库存动作） */
.crm-big-stock{background:#1d4ed8;color:#fff;box-shadow:0 2px 8px rgba(29,78,216,.22)}
.crm-big-stock:hover{box-shadow:0 4px 14px rgba(29,78,216,.28)}
/* 应收账款：琥珀（要钱的动作，醒目但不刺眼） */
.crm-big-ar{background:#b45309;color:#fff;box-shadow:0 2px 8px rgba(180,83,9,.22)}
.crm-big-ar:hover{box-shadow:0 4px 14px rgba(180,83,9,.28)}
@media (max-width:420px){
  /* 三个大按钮窄屏压成一行紧凑：图标在上、文字在下，等分宽度（不再竖排堆叠） */
  .crm-head-btns-lg{gap:8px;margin-top:12px}
  .crm-head-btns-lg .crm-big-btn{flex:1 1 0;min-width:0;flex-direction:column;gap:3px;padding:9px 4px;font-size:12px;border-radius:11px}
  .crm-head-btns-lg .crm-big-btn .cb-ico{font-size:17px}
}
.crm-modal.crm-modal-lib{max-width:700px}
/* v=310 图片扫描识别：入库弹窗顶部的上传条 */
.crm-scan{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 0 12px;padding:10px 12px;border-radius:10px;
  background:linear-gradient(180deg,#f5f8ff 0%,#eef3fc 100%);border:1px dashed #c7d6f0}
.crm-scan-btn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  padding:8px 14px;border-radius:9px;background:var(--teal);color:#fff;
  font-size:13px;font-weight:700;white-space:nowrap;transition:transform .12s ease}
.crm-scan-btn:hover{transform:translateY(-1px)}
.crm-scan-btn input{display:none}
.crm-scan-tip{font-size:12px;color:#5c7b74;line-height:1.5;flex:1;min-width:120px}
.crm-scan.scanning .crm-scan-btn{opacity:.6;pointer-events:none}
.crm-scan.scanning .crm-scan-tip{color:var(--teal);font-weight:600}
/* v=310 批量扫描入库清单：每行 = 勾选 + 名称 + 数量 + 成本价，全部可改 */
.crm-scan-batch{margin-bottom:14px}
#biList{max-height:340px;overflow:auto}
#biList .crm-ar-o{grid-template-columns:24px 1fr 82px 96px}
#biList .crm-ar-o input[type=checkbox]{width:16px;height:16px;accent-color:var(--teal)}
#biList .bi-name,#biList .bi-qty,#biList .bi-cost{min-width:0}
.crm-scan-btn[disabled]{opacity:.6;pointer-events:none}
/* v=309 应收账款（未收款订单总览）：按客户分组、账龄分档、逐单可收款/去跟进 */
.crm-modal.crm-modal-ar{max-width:720px}
.crm-ar-sum{padding:9px 12px;margin-bottom:10px;border-radius:9px;background:#fff7ed;border:1px solid #f5d9b8;font-size:12.5px;color:#7c4a12}
.crm-ar-sum strong{color:#b45309}
.crm-ar-list{max-height:440px;overflow:auto;display:flex;flex-direction:column;gap:10px}
.crm-ar-g{border:1px solid #eee2d2;background:#fff;border-radius:11px;padding:10px 12px}
.crm-ar-gh{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.crm-ar-name{font-size:13.5px;font-weight:700;color:#3d4954}
.crm-ar-amt{margin-left:auto;font-size:12.5px;color:#854F0B;font-weight:600}
.crm-ar-ords{display:flex;flex-direction:column;gap:6px}
.crm-ar-o{display:grid;grid-template-columns:96px 1fr 84px auto;gap:8px;align-items:center;
  padding:6px 8px;border-radius:8px;background:#fcfaf6;border:1px solid #f2ece0}
.crm-ar-ono{font-size:12px;color:#3d4954;font-weight:600}
.crm-ar-od{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted)}
.crm-ar-oamt{font-size:12.5px;font-weight:700;color:#b45309;text-align:right}
.crm-ar-oacts{display:flex;gap:6px}
.crm-ar-oacts .btn{width:auto;white-space:nowrap}
/* 账龄标签（独立配色，不依赖 .crm-ord 作用域）：30 天内 / 30+ 天 / 超 90 天 */
.crm-ar-o .tag,.crm-ar-gh .tag{font-size:11px;white-space:nowrap}
.crm-ar-gh .tag{background:#f0f4f3;color:#5F5E5A}
.crm-ar-gh .tag.ord-unpaid{background:#fdeaea;color:#b3261e}
.crm-ar-gh .tag.ord-warn{background:#fff4e0;color:#b45309}
.crm-lib-sum{padding:8px 11px;margin-bottom:9px;border-radius:9px;background:var(--teal-soft);font-size:12.5px;color:var(--ink)}
.crm-lib-head,.crm-lib-row{display:grid;grid-template-columns:1fr 92px 78px 74px 56px 124px 132px;gap:8px}
.crm-lib-head{padding:0 2px;margin:0 0 6px;font-size:11.5px;color:var(--muted)}
.crm-lib-list{max-height:330px;overflow:auto;padding-right:2px}
.crm-lib-row{align-items:center;padding:7px 2px;border-top:1px solid var(--line)}
.crm-lib-row .input{padding:6px 8px;font-size:13px}
/* 进销存：库存列（0 标红「缺货」）+ 分类筛选 chips + 两列并排表单 */
.crm-lib-st{font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums;text-align:center}
.crm-lib-st.zero{color:#C0392B;font-weight:700}
.crm-lib-st.bad{color:#8a5a00;font-weight:700;background:#FFF6E0;border:1px solid #E8C87A;border-radius:6px;padding:1px 4px;display:inline-block}
.crm-lib-warn{margin-left:3px;font-weight:800}
.crm-lib-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}
.crm-lib-chips .btn{font-size:11.5px;padding:2px 10px;line-height:1.8}
.crm-chip.on{background:var(--teal-soft);border-color:var(--teal);color:var(--teal)}
.crm-lib-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.crm-lib-tip{font-size:11.5px;color:var(--muted);align-self:center}
.crm-lib-nm input[type=checkbox]{width:15px;height:15px;margin:0 6px 0 0;vertical-align:-2px;accent-color:var(--teal)}
.crm-pk-row{display:grid;grid-template-columns:1fr 56px 62px 78px 70px;gap:8px;align-items:center;
  padding:7px 2px;border-top:1px solid var(--line)}
.crm-pk-row.on{background:var(--teal-soft);border-radius:7px}
.crm-pk-row .input{padding:6px 8px;font-size:13px}
.crm-lib-nm{font-size:13.5px;font-weight:600;color:var(--ink);word-break:break-word;line-height:1.4}
.crm-lib-p,.crm-lib-c{font-size:13px;color:var(--ink)}
.crm-lib-ag{font-size:12.5px;color:var(--ink);line-height:1.45}
.crm-lib-ops{display:flex;gap:6px;justify-content:flex-end}
.crm-lib-ops .btn{font-size:11.5px;padding:2px 9px;line-height:1.7;white-space:nowrap}
.crm-lib-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:11px;padding-top:11px;border-top:1px dashed var(--line)}
.crm-lib-add .input{padding:6px 8px;font-size:13px}
@media(max-width:760px){
  .crm-lib-head{display:none}
  .crm-lib-row{grid-template-columns:1fr 1fr;row-gap:7px}
  .crm-lib-nm,.crm-lib-ag,.crm-lib-ops{grid-column:1/-1}
  .crm-lib-ops{justify-content:flex-start}
  .crm-lib-add{grid-template-columns:1fr 1fr}
  .crm-lib-add .lib-nn{grid-column:1/-1}
  .crm-pk-row{grid-template-columns:1fr 50px 56px;row-gap:6px}
  .crm-pk-row .crm-lib-nm{grid-column:1/-1}
}
/* 产品分类管理（全局 · 仅管理员）：⚙ 管理分类弹层 + 可拖动排序列表 */
.crm-cat-mgr{margin-left:auto}
.crm-cat-mgr-box{display:flex;flex-direction:column;gap:12px}
.crm-cat-add{display:flex;gap:8px}
.crm-cat-add .input{flex:1}
.crm-cat-list{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow:auto;padding-right:2px}
.crm-cat-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff}
.crm-cat-row.dragging{opacity:.45}
.crm-cat-row.over{border-color:var(--teal);background:var(--teal-soft)}
.cm-grip{cursor:grab;color:var(--muted);font-size:15px;user-select:none}
.cm-name{flex:1;font-size:13.5px;font-weight:600;color:var(--ink)}
.cm-count{font-size:11.5px;color:var(--muted);white-space:nowrap}
.cm-ops{display:flex;gap:6px}
.cm-ops .btn{font-size:11.5px;padding:2px 9px;line-height:1.7}
/* 行内重命名输入框（替代原生 prompt，兼容 webview） */
.cm-rename-input{flex:1;min-width:0;font-size:13.5px}
/* 轻量确认弹层（替代原生 confirm，兼容 webview） */
.crm-cat-mini{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(15,23,42,.38);border-radius:12px;padding:16px;z-index:5}
.crm-cat-mini-card{background:#fff;border-radius:10px;padding:14px 16px;max-width:280px;box-shadow:0 6px 24px rgba(15,23,42,.18)}
.crm-cat-mini-msg{font-size:13px;line-height:1.6;color:var(--ink);margin-bottom:12px}
.crm-cat-mini-ops{display:flex;gap:8px;justify-content:flex-end}
@media(max-width:560px){
  .crm-cat-row{flex-wrap:wrap}
  .cm-count{order:3}
  .cm-ops{order:4;width:100%;justify-content:flex-end}
}

/* 客户服务 · 联系人表精简（v=198 起）：窄屏隐藏次要列保证详情按钮可见；宽屏按可用宽度显示全部列。
   v=327：窄屏优先保证「详情」按钮可见（用户反馈详情被裁）。
   v=328：宽屏也必须保证「详情」按钮可见——面板 overflow 改为 auto（按需横向滚动，绝不裁切详情）；
          次要列仅在 ≤560px 隐藏，宽屏照常显示、按可用宽度排布。 */
.crm-ct-panel{padding:0;overflow-x:auto}
@media(max-width:560px){
  /* 窄屏：隐藏最宽的「阶段 / 生命周期」列与次要列，压缩单元格内边距与按钮尺寸、禁止按钮/标签折行，
     让 姓名 / 状态 / 推进 / 详情 一行放下；容器允许横向滚动兜底，详情按钮永远可达。 */
  .crm-ct-sec,.crm-ct-life{display:none}
  .crm-ct-panel th,.crm-ct-panel td{padding:8px 5px}
  .crm-ct-panel .tag,.crm-ct-panel .btn{white-space:nowrap}
  .crm-ct-panel .tag{margin-right:0}
  .crm-ct-panel .btn.sm{padding:4px 7px;font-size:12px}
}
/* 客户服务 · 置顶（v=199）：姓名可点触发置顶/取消，已置顶显示 📌 */
.ct-name{cursor:pointer;color:var(--ink)}
.ct-name:hover{text-decoration:underline}
.pin-ic{margin-right:4px;font-size:12px}
/* 客户服务 · 成交订单（一笔成交＝一行订单，点开才看产品明细；每单可标已收款 / 删除） */
.crm-ord-list{display:flex;flex-direction:column;gap:8px}
.crm-ord{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:var(--card)}
.crm-ord-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;cursor:pointer}
.crm-ord-main{min-width:0}
.crm-ord-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.crm-ord-no{font-size:12px;font-weight:700;color:var(--ink);letter-spacing:.2px}
.crm-ord .tag.ord-unpaid{background:#F1EFE8;color:#5F5E5A}
.crm-ord .tag.ord-paid{background:#EAF3DE;color:#3B6D11}
.crm-ord .tag.ord-cloud{background:#E7F1FB;color:#1F6FB2}
.crm-ord-sum{font-size:12.5px;color:var(--ink);margin-top:4px;line-height:1.5}
.crm-ord-sum b{font-weight:700}
.crm-ord-meta{font-size:12px;color:var(--muted);margin-top:3px;word-break:break-word}
.crm-ord-caret{flex:none;font-size:12px;color:var(--teal);white-space:nowrap;padding-top:1px}
.crm-ord-detail{margin-top:9px;padding-top:9px;border-top:1px dashed var(--line)}
.crm-ord-tbl{font-size:12.5px}
.crm-ord-tbl th{font-weight:400;color:var(--muted);font-size:11.5px}
.crm-ord-tbl td{padding:5px 4px}
.crm-ord-ops{display:flex;gap:7px;justify-content:flex-end;margin-top:9px}
.crm-ord-ops .btn{font-size:11.5px;padding:2px 10px;line-height:1.7;white-space:nowrap}
/* 系统自动写入的跟进记录（本系统学习 / 小规模聚会）：浅底 + 左侧色条 + 小标，与人工辅导区分 */
.crm-tl-item.tl-auto{border-left:3px solid var(--teal);background:#fafcfb}
.crm-tl-item .tl-tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;font-size:11px;background:var(--teal-soft,#e9f4f2);color:var(--teal,#0f766e)}

/* 事业伙伴 · 系统自动记录（本系统学习 / 参加小规模聚会） */
.pt-auto{margin-top:14px;border:1px dashed var(--line);border-radius:10px;padding:10px 12px;background:#fafcfb}
.pt-auto-h{font-size:12.5px;font-weight:700;color:var(--teal);margin-bottom:8px}
.pt-auto-i{font-size:13px;color:var(--ink);line-height:1.6;padding:6px 0;border-top:1px dashed var(--line)}
.pt-auto-i:first-of-type{border-top:none;padding-top:0}
.pt-auto-l{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px}
.pt-auto-l .tag{background:var(--teal-soft,#e9f4f2);color:var(--teal,#0f766e)}

/* 里程碑：管理员可配置目录（增 / 改 / 删） */
.pt-ms-admin{margin-bottom:10px}
.pt-ms-admin .btn{font-size:12px}
.pt-ms .pt-ms-row{margin-bottom:8px}
.ms-admin-add{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.ms-admin-add .input{flex:1;min-width:150px}
.ms-admin-list{display:flex;flex-direction:column;gap:8px}
.ms-admin-row{display:flex;align-items:flex-start;gap:10px;justify-content:space-between;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}
.ms-admin-main{flex:1;min-width:0}
.ms-admin-main .tag{font-size:11px;margin-left:4px}
.ms-admin-ops{display:flex;gap:6px;flex-wrap:wrap;flex-shrink:0}
.ms-admin-ops .btn{font-size:12px}

/* 待注册伙伴（按部门分组） */
.inv-team-col{margin-top:10px}
.inv-team-h{font-size:13px;font-weight:700;color:var(--teal);margin:10px 0 6px}
.inv-rec-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;margin-bottom:6px;background:#fff}
.inv-rec-l{display:flex;align-items:center;gap:8px;min-width:0}
.inv-rec-name{font-weight:600;font-size:13.5px;color:var(--ink)}

/* CRM 轻提示 */
.crm-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(10px);background:#1f2430;color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;z-index:1200;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 8px 24px rgba(0,0,0,.2)}
.crm-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.crm-toast.ok{background:#16a34a}
.crm-toast.err{background:#dc2626}
.crm-toast .crm-toast-undo{margin-left:12px;padding:3px 12px;border:1px solid rgba(255,255,255,.75);background:transparent;color:#fff;border-radius:999px;font-size:12.5px;cursor:pointer;pointer-events:auto;font-family:inherit}
.crm-toast .crm-toast-undo:hover{background:rgba(255,255,255,.18)}
.crm-toast .crm-toast-undo:focus-visible{outline:2px solid #fff;outline-offset:1px}

/* 伙伴共享：把事业伙伴共享给本部门伙伴 / 上级领导人一起辅导 */
.pt-share-list{margin-top:12px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fafcfb}
.pt-share-h{font-size:12.5px;font-weight:700;color:var(--muted);margin-bottom:6px}
.pt-share-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:5px 0;border-top:1px dashed var(--line);font-size:13px}
.pt-share-row:first-of-type{border-top:none}
.pt-share-g{font-size:12px;font-weight:700;color:var(--teal);margin:10px 0 4px}
.pt-share-opt{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:9px;font-size:13.5px;cursor:pointer;background:#fff}
.pt-share-opt:hover{border-color:var(--teal)}
.pt-share-opt.is-shared{background:#f1faf8;border-color:var(--teal-line)}
.pt-share-opt input{margin:0}
/* v=257：共享接收方抽屉内的「权限受限」提示条（仅可辅导，其余修改归原推荐人） */
.pt-share-lock{background:#fff7ec;border:1px solid #f0d9b0;color:#7a5a16;padding:9px 12px;border-radius:10px;font-size:12.5px;line-height:1.7;margin:10px 0 4px}
.crm-shared-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:10px}
.crm-shared-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff}
.crm-shared-card .c-h{font-size:14px;margin-bottom:6px}
.crm-shared-card .c-tags{font-size:12px;margin-bottom:10px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}

/* 客户服务 · 共享 / 转让客户 */
.crm-share-banner{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-ink);padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.7;margin-top:14px}
.crm-sub-h{font-size:12.5px;font-weight:700;color:var(--muted);margin-bottom:6px}
.crm-xfer-list{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff}
.crm-xfer-opt{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;font-size:13.5px;cursor:pointer}
.crm-xfer-opt:hover{background:#f3f7f8}
.crm-xfer-opt input{margin:0}

/* 成员管理：团队管理员（团队根）的增删改 */
.adm-ops{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
/* 操作列按钮不参与收缩、文字不换行（否则窄屏会被压成竖排多行） */
.adm-ops .btn{flex:0 0 auto;white-space:nowrap}
/* v=120：底部「全部成员名单」折叠区已移除，原 .adm-all* 样式随之清理 */
.adm-tabs{display:flex;gap:14px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.adm-tab{background:none;border:none;padding:8px 2px;margin-bottom:-1px;font-size:13.5px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent}
.adm-tab.on{color:var(--teal);font-weight:700;border-bottom-color:var(--teal)}
.adm-field{margin-bottom:12px}
.adm-field label{display:block;font-size:12.5px;font-weight:700;color:var(--muted);margin-bottom:5px}
.adm-field label i{color:#dc2626;font-style:normal}
.adm-field input,.adm-field select{width:100%;box-sizing:border-box}
/* v=120：新增管理员 → 按「会员号 / 姓名」搜索现有成员（替换原下拉选择） */
.adm-pick-list{max-height:216px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
.adm-pick-hint{padding:12px;font-size:12.5px;color:var(--muted);line-height:1.6}
.adm-pick-item{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;background:none;border:none;border-bottom:1px solid #f0f2f4;padding:8px 12px;text-align:left;font:inherit;font-size:13px;line-height:1.35;color:var(--ink);cursor:pointer}
.adm-pick-item .pill{padding:1px 6px;font-size:11px;line-height:1.4}
.adm-pick-item:last-child{border-bottom:none}
.adm-pick-item:hover{background:#f7fafb}
.adm-pick-item.on{background:rgba(15,118,110,.08);box-shadow:inset 3px 0 0 var(--teal)}
.adm-pick-item b{font-family:ui-monospace,Menlo,monospace;font-weight:600;color:var(--muted);flex:0 0 auto;min-width:72px}
.adm-pick-item .pn{flex:1 1 auto;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-pick-item .muted{flex:0 0 auto;margin-left:auto;font-size:12px}
.adm-pick-sel{min-height:17px;margin-top:8px;font-size:12.5px;font-weight:700;color:var(--teal)}

@media (max-width:760px){
  /* 统计卡窄屏保持一行紧凑（不再 2+1 断行）；字号/内距收紧 */
  .crm-stats{gap:8px}
  .crm-stats .card{padding:10px 10px}
  .crm-stats .k{font-size:10.5px;line-height:1.25}
  .crm-stats .v{font-size:19px}
}

/* ==========================================================================
   个人 IP 设置区（侧栏卡片 + 编辑抽屉）
   侧栏「我的团队」下方的账号区块升级为个人 IP 卡片：形象照片 / 姓名 / 会员号 / 一句话简介
   ========================================================================== */

/* ---------- 侧栏卡片 ---------- */
.ip-card{
  display:flex;align-items:center;gap:10px;width:100%;text-align:left;font:inherit;color:inherit;
  background:linear-gradient(135deg,#f1faf8,#f9fcfb);border:1px solid var(--teal-line);
  border-radius:12px;padding:9px 10px;cursor:pointer;transition:.15s;
}
.ip-card:hover{border-color:var(--teal);box-shadow:0 4px 14px rgba(15,118,110,.13)}
.ip-card:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.ip-ava{
  flex:0 0 40px;width:40px;height:40px;border-radius:50%;overflow:hidden;background:var(--teal);
  color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;
}
.ip-ava img{width:100%;height:100%;object-fit:cover;display:block}
.ip-ava.lg{flex:0 0 72px;width:72px;height:72px;font-size:26px}
.ip-ava.xl{flex:0 0 60px;width:60px;height:60px;font-size:22px}
.ip-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.ip-nm{font-size:13px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ip-mn{font-size:11px;color:var(--teal);font-weight:600;font-variant-numeric:tabular-nums}
.ip-sg{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ip-pen{flex:0 0 auto;display:flex;color:var(--teal);opacity:.65}
.ip-set{width:100%;text-align:center;padding:6px 10px;font-size:12.5px;margin-top:8px}

/* ---------- 抽屉 ---------- */
body.ip-open{overflow:hidden}
.ip-mask{position:fixed;inset:0;background:rgba(15,23,32,.5);z-index:1300;display:flex;justify-content:flex-end}
.ip-panel{width:min(580px,100%);height:100%;background:#fff;display:flex;flex-direction:column;
  box-shadow:-10px 0 34px rgba(0,0,0,.18)}
.ip-p-head{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:16px 18px;border-bottom:1px solid var(--line)}
.ip-p-tt{font-size:15.5px;font-weight:700;color:var(--ink);line-height:1.4}
.ip-p-tt span{display:block;font-size:11.5px;color:var(--muted);font-weight:400;margin-top:2px}
.ip-p-x{flex:0 0 auto;width:30px;height:30px;border:1px solid var(--line);background:#fff;border-radius:8px;
  font-size:17px;line-height:1;color:var(--muted);cursor:pointer;padding:0}
.ip-p-x:hover{color:var(--ink);background:#f2f5f5}
.ip-p-body{flex:1;overflow-y:auto;padding:16px 18px 8px}
.ip-p-foot{flex:0 0 auto;border-top:1px solid var(--line);padding:12px 18px 14px;background:#fafcfc}
.ip-msg{min-height:16px;font-size:12.5px;color:var(--muted);margin-bottom:8px}
.ip-msg.ok{color:var(--teal);font-weight:600}
.ip-msg.err{color:#b42318;font-weight:600}

/* ---------- 注册后首次登录引导横幅 ---------- */
.ip-onb-banner{margin:-2px 0 16px;padding:12px 14px;border-radius:12px;
  background:linear-gradient(135deg,#e9f7f3,#e6f4ef);border:1px solid #cfe9e2}
.ip-onb-b{display:flex;gap:10px;align-items:flex-start}
.ip-onb-ic{font-size:22px;line-height:1.2;flex:0 0 auto}
.ip-onb-t{font-size:12.5px;color:#56616e;line-height:1.6}
.ip-onb-t b{display:block;color:var(--teal);font-size:13.5px;margin-bottom:3px}

/* ---------- 名片预览 ---------- */
.ip-preview{margin-bottom:16px}
.ip-prev-hint{margin-top:-10px}
.ipc{--ipc-accent:var(--teal);border:1px solid var(--teal-line);border-radius:14px;overflow:hidden;background:#fff}
.ipc--land{width:100%}
.ipc--port{width:320px;max-width:100%;margin:0 auto}
.ipc-head{display:flex;align-items:center;gap:12px;padding:16px}
.ipc-head .ip-ava{background:#fff;color:var(--ipc-accent);border:0}
.ipc-id{min-width:0;flex:1}
.ipc-nm{font-size:17px;font-weight:700;line-height:1.35;color:var(--ink)}
.ipc-tt{font-size:12.5px;color:var(--muted);margin-top:1px}
.ipc-mn{font-size:11.5px;color:var(--muted);margin-top:5px;font-variant-numeric:tabular-nums;
  display:inline-block;background:var(--teal-soft);border-radius:20px;padding:1px 9px}
/* band 风格：顶部色带 + 白字 */
.ipc--band .ipc-head{background:linear-gradient(135deg,var(--ipc-g0),var(--ipc-g1))}
.ipc--band .ipc-nm{color:#fff}
.ipc--band .ipc-tt{color:rgba(255,255,255,.88)}
.ipc--band .ipc-mn{color:#fff;background:rgba(255,255,255,.18)}
/* side 风格：左侧色条 + 深色字 */
.ipc--side{border-left:6px solid var(--ipc-accent)}
.ipc--side .ipc-nm{color:var(--ipc-accent)}
.ipc-sg{font-size:13.5px;color:var(--ink);line-height:1.65}
.ipc-ct{display:flex;flex-wrap:wrap;gap:6px;padding:12px 16px 0}
.ipc-chip{font-size:11.5px;color:var(--ipc-accent);background:#f1f5f4;border-radius:20px;padding:2px 10px}
.ipc-hl{padding:14px 16px 0;display:flex;flex-direction:column;gap:7px}
.ipc-hl-i{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;font-size:13px;
  border-left:3px solid var(--ipc-accent);padding-left:9px}
.ipc-hl-i b{color:var(--ink);font-weight:600}
.ipc-hl-i span{color:var(--muted);font-size:12.5px}
.ipc-foot{border-top:1px dashed var(--line);margin-top:14px;padding:9px 16px;font-size:11px;
  color:#9aa3ad;text-align:center;background:#fbfdfd}
/* 名片底部区：左口号 + 右二维码（二维码贴卡片右下角；无口号时自行靠右） */
.ipc-bot{display:flex;gap:14px;align-items:flex-start;padding:14px 16px 0}
.ipc-bot .ipc-sg{flex:1;min-width:0}
.ipc-bot .ipc-qr{flex:0 0 116px;margin-left:auto}
.ipc-qr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  background:#f7faf9;border:1px solid #d8e3e0;border-radius:10px;padding:10px 8px}
.ipc-qr img{width:94px;height:94px;object-fit:contain;border-radius:4px;background:#fff;display:block}
.ipc-qr-cap{font-size:11px;color:var(--ipc-accent);font-weight:600}

/* 微信二维码上传器（设置面板内） */
.ip-wxqr-box{width:88px;height:88px;border:1px dashed var(--line);border-radius:10px;background:#fbfdfd;
  display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:8px}
.ip-wxqr-box .ip-wxqr-img{display:block;width:100%;height:100%}
.ip-wxqr-box .ip-wxqr-img img{width:100%;height:100%;object-fit:contain;display:block}
.ip-wxqr-box .ip-wxqr-ph{font-size:11.5px;color:var(--muted);text-align:center;padding:0 6px}

/* ---------- 名片模板选择 ---------- */
.ip-tpls{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.ip-tpl{border:1px solid var(--line);border-radius:10px;padding:8px 5px 6px;background:#fff;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:5px;transition:.15s}
.ip-tpl:hover{border-color:var(--teal)}
.ip-tpl.on{border-color:var(--teal);box-shadow:0 0 0 2px rgba(15,118,110,.18);background:var(--teal-soft)}
.ip-tpl-th{width:100%;height:40px;border-radius:6px;background:#f4f7f7;position:relative;overflow:hidden;
  display:flex;align-items:center;gap:5px;padding:0 8px}
.ip-tpl-th.band::before{content:"";position:absolute;left:0;right:0;top:0;height:8px;background:var(--ta)}
.ip-tpl-th.side::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--ta)}
.ip-tpl-av{flex:0 0 auto;width:14px;height:14px;border-radius:50%;background:var(--ta);opacity:.85;z-index:1}
.ip-tpl-l1{flex:1;height:4px;border-radius:2px;background:#cfd8d8;z-index:1}
.ip-tpl-l2{flex:1;height:4px;width:55%;border-radius:2px;background:#cfd8d8;z-index:1}
.ip-tpl-nm{font-size:11px;color:var(--ink);font-weight:600;line-height:1.2;text-align:center}
.ip-tpl-or{font-size:10px;color:var(--muted)}
@media (max-width:420px){.ip-tpls{grid-template-columns:repeat(3,1fr)}}

/* ---------- 分区 / 表单 ---------- */
.ip-sec{padding:14px 0;border-top:1px solid var(--line)}
.ip-sec:first-of-type{border-top:0;padding-top:2px}
.ip-sec-t{font-size:13.5px;font-weight:700;color:var(--ink);margin:0 0 10px;
  display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ip-sec-sub{font-size:11.5px;color:var(--muted);font-weight:400}
.ip-f{margin-bottom:10px;min-width:0}
.ip-f input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13.5px;
  font-family:inherit;color:var(--ink);background:#fff;outline:none;box-sizing:border-box}
.ip-f input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.08)}
.ip-f input.ro{background:#f6f8f8;color:var(--muted);cursor:default}
.ip-f select{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13.5px;
  font-family:inherit;color:var(--ink);background:#fff;outline:none;box-sizing:border-box;cursor:pointer;
  appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%236b7785' stroke-width='1.6' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:30px}
.ip-f select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.08)}
.ip-f select.ro{background:#f6f8f8;color:var(--muted);cursor:default}
.ip-hint{font-size:11.5px;color:var(--muted);line-height:1.65;margin-top:6px}
.ip-hint b{color:var(--teal)}

/* ---------- 自由布局（v=270） ---------- */
.ipc-surface{position:relative;background:#fff;border:1px solid var(--teal-line);border-radius:14px;overflow:visible;transform-origin:top left}
.ipc-surface-wrap{overflow:hidden;border-radius:14px}
.ipc-surface .ipc-foot{position:absolute;left:0;right:0;bottom:0;margin-top:0}
.ipc-el{position:absolute;box-sizing:border-box}
.ipc-surface .ip-ava.xl{position:static}
.ipc-el-edit{cursor:move;outline:1px dashed var(--ipc-accent,#0b6e68);outline-offset:2px;border-radius:6px}
.ipc-el-bar{position:absolute;top:-13px;right:-8px;display:none;gap:2px;z-index:3}
.ipc-el-edit .ipc-el-bar{display:flex}
.ipc-el-bar button{width:20px;height:20px;border:0;border-radius:50%;background:var(--ipc-accent,#0b6e68);color:#fff;font-size:11px;line-height:20px;cursor:pointer;padding:0;font-family:inherit}
.ipc-el-rs{position:absolute;right:-5px;bottom:-5px;width:13px;height:13px;border-radius:3px;background:var(--ipc-accent,#0b6e68);cursor:nwse-resize;display:none;z-index:3}
.ipc-el-edit .ipc-el-rs{display:block}
.ipc-custom{font-size:13px;color:var(--ink);line-height:1.5;background:rgba(255,255,255,.65);padding:2px 4px;border-radius:4px}
/* v=272：自由布局下 chip 类要素（手机/邮箱/城市/公司/会员号）单行显示，不随盒子宽度换行（宽度由 freeBox 按文本量算） */
.ipc-el .ipc-chip{white-space:nowrap;display:inline-block}
/* v=273：自由布局内亮点块中和内边距 ⇒「盒宽 = 内容宽」，与画布导出对齐并消除误换行 */
.ipc-el .ipc-hl{padding:0}
/* v=273：宽度手柄（拉宽）——拖动只改盒宽，双击恢复自动宽度；仅可换行文本块显示 */
.ipc-el-wh{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);width:26px;height:11px;border-radius:6px;
  background:var(--ipc-accent,#0b6e68);cursor:ew-resize;display:none;z-index:3}
.ipc-el-wh::after{content:"↔";position:absolute;left:0;right:0;top:0;color:#fff;font-size:10px;line-height:11px;text-align:center}
.ipc-el-edit .ipc-el-wh{display:block}
/* 自由布局控制区 */
.ip-free{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.ip-free-tg{font-weight:600}
.ip-free-ctrls{margin-top:8px}
.ip-free-btns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.ip-free-btns .btn.on{border-color:var(--teal);background:var(--teal-soft);color:var(--teal)}
.ip-el-list{display:flex;flex-wrap:wrap;gap:6px 12px}
.ip-fl{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--ink)}
.ip-fl-cu{color:var(--teal)}
.ip-pwd{margin-top:10px}

/* ---------- 照片 ---------- */
.ip-photo{display:flex;gap:14px;align-items:flex-start}
.ip-photo-box{flex:0 0 auto;display:flex}
.ip-photo-r{flex:1;min-width:0}

/* ---------- 亮点展示 ---------- */
.ip-hls{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.ip-hl{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;
  padding:8px 8px 8px 10px;background:#fbfdfd}
.ip-hl-in{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.ip-hl-in input{width:100%;border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:13px;
  font-family:inherit;color:var(--ink);background:#fff;outline:none;box-sizing:border-box}
.ip-hl-in input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.08)}
.ip-hl-t{font-weight:600}
.ip-hl-x{flex:0 0 auto;width:26px;height:26px;border:1px solid var(--line);background:#fff;border-radius:7px;
  color:var(--muted);font-size:15px;line-height:1;cursor:pointer;padding:0}
.ip-hl-x:hover{color:#b42318;border-color:#f0c2bc;background:#fdecea}

/* ---------- 居中横条布局：卡片压缩为头像 + 姓名 ----------
   注意作用域限定在侧栏 #meBox 内：抽屉虽挂在 body 下，
   但同处 layout-center 页面，若不限定会把抽屉里的大头像一起压小。 */
body.layout-center #meBox .ip-card{background:transparent;border:0;padding:0;gap:8px;width:auto}
body.layout-center #meBox .ip-card:hover{box-shadow:none}
body.layout-center #meBox .ip-ava{flex:0 0 30px;width:30px;height:30px;font-size:12px}
body.layout-center #meBox .ip-mn,
body.layout-center #meBox .ip-sg,
body.layout-center #meBox .ip-pen{display:none}
body.layout-center #meBox .ip-nm{font-size:13px}
body.layout-center #meBox .ip-set{margin-top:0;width:auto;padding:5px 10px;font-size:12px}

/* ---------- 身份管理（v=191） ---------- */
.ip-sec-id .ip-id-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ip-sec-id .ip-id-row .fl{flex:0 0 auto;margin:0;color:var(--muted);font-size:13px}
.ip-sec-id .ip-sel{flex:1;min-width:0}
.ip-sec-id .ip-id-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.ip-sec-id .ip-rm-slot{color:#b42318;border-color:#f0c2bc;background:#fff}
.ip-sec-id .ip-rm-slot:hover{background:#fdecea}
.ip-pin{border:1px solid var(--line);border-radius:10px;background:#fbfdfd;padding:12px;margin-top:10px}
.ip-pin[hidden]{display:none}
.ip-pin .ip-f{margin-bottom:8px}
.ip-pin .btn-row{margin-top:8px}

/* ---------- 窄屏 ---------- */
@media (max-width:760px){
  .ip-panel{width:100%}
  .ip-p-head{padding:14px 14px}
  .ip-p-body{padding:14px 14px 6px}
  .ip-p-foot{padding:10px 14px 12px}
  .ip-photo{gap:10px}
  .ip-ava.lg{flex:0 0 60px;width:60px;height:60px;font-size:22px}
  .ip-panel .row2{flex-direction:column;gap:0}
  .ip-p-foot .btn-row .btn{flex:1 1 auto}
}

/* ================= 小规模聚会 · 活动工作台 ================= */
.mtg-wrap{max-width:1000px;margin:0 auto}
.mtg-tabs{display:flex;gap:6px;margin:18px 0 4px}
.mtg-tab{appearance:none;border:1px solid var(--line);background:#fff;color:var(--muted);padding:7px 16px;border-radius:9px;font-size:13.5px;cursor:pointer;font-weight:600}
.mtg-tab.on{background:var(--teal);color:#fff;border-color:var(--teal)}
.mtg-sub{margin-top:14px}
.mtg-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.mtg-stats .card .k{font-size:12.5px;color:var(--muted)}
.mtg-stats .card .v{font-size:26px;font-weight:700;margin:4px 0 2px;color:var(--ink)}
.mtg-stats .card .sub{font-size:11.5px;color:var(--muted)}
.mtg-chips{display:flex;flex-wrap:wrap;gap:8px}
.mtg-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;border:1px solid var(--line);background:#fff;padding:5px 10px;border-radius:8px;cursor:pointer}
.mtg-chip input{margin:0}
.mtg-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:14px 16px;margin-bottom:12px}
.mtg-card.mtg-team{background:#fbfbfa}
.mtg-card-top{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.mtg-title{font-weight:700;font-size:15px}
.mtg-card-meta{display:flex;flex-wrap:wrap;gap:10px 22px;margin-bottom:12px}
.mtg-kv{display:flex;flex-direction:column;font-size:12px}
.mtg-kv span{color:var(--muted)}
.mtg-kv b{font-weight:600;font-size:13px;margin-top:2px}
.mtg-card-acts{display:flex;gap:8px;flex-wrap:wrap}
.mtg-sec{border-top:1px solid #f0f0f0;padding:16px 0 4px}
.mtg-sec:first-of-type{border-top:none;padding-top:4px}
.mtg-sec h3{margin:0 0 10px;font-size:14.5px}
.mtg-sec-h{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.mtg-sec-h h3{margin:0}
.mtg-count{font-size:12px;color:var(--muted);margin-left:auto}
.mtg-type-badge{margin-bottom:8px;display:inline-block}
.mtg-rrow,.mtg-trow,.mtg-frow{display:flex;gap:8px;margin-bottom:8px}
.mtg-rrow .input,.mtg-trow .input,.mtg-frow .input{flex:1}
.mtg-rrow .btn,.mtg-trow .btn,.mtg-frow .btn{flex:0 0 auto}
.mtg-flow{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.mtg-step{display:flex;gap:12px;border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:#fff}
.mtg-step.on{border-color:var(--teal);background:var(--teal-soft);box-shadow:0 0 0 2px rgba(15,118,110,.12)}
.mtg-step-t{font-size:12px;font-weight:700;color:var(--teal);min-width:64px}
.mtg-step-body{flex:1}
.mtg-step-name{font-weight:600;font-size:13.5px}
.mtg-step-goal{font-size:12.5px;color:var(--muted);margin-top:2px}
.mtg-timer-bar{display:flex;align-items:center;gap:12px;margin-top:8px}
.mtg-time{font-variant-numeric:tabular-nums;font-weight:700;font-size:15px;color:var(--ink)}
.mtg-timer-btns{margin-left:auto;display:flex;gap:6px}
.mtg-type-pick{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mtg-type-card{border:1px solid var(--line);border-radius:12px;padding:16px;cursor:pointer;background:#fff;transition:.15s}
.mtg-type-card:hover{border-color:var(--teal);box-shadow:0 8px 20px rgba(0,0,0,.08)}
.mtg-type-card.blue{border-top:3px solid #1f5fb0}
.mtg-type-card.purple{border-top:3px solid #7a3cc0}
.mtg-tc-badge{margin-bottom:10px;display:inline-block}
.mtg-tc-desc{font-size:13.5px;line-height:1.7;color:var(--ink);margin-bottom:10px}
.mtg-tc-flow{font-size:12px;color:var(--muted)}
.tag.blue{background:#e7f0fe;color:#1f5fb0}
.tag.purple{background:#f1e9fc;color:#7a3cc0}
.pill.blue{background:#e7f0fe;color:#1f5fb0;border-color:#cfe0fb}
.pill.purple{background:#f1e9fc;color:#7a3cc0;border-color:#e2d2f5}
/* 弹窗 */
.mtg-modal-mask{position:fixed;inset:0;background:rgba(20,28,34,.45);display:flex;align-items:center;justify-content:center;z-index:1000;padding:18px}
.mtg-modal{background:#fff;border-radius:14px;width:100%;max-width:560px;max-height:90vh;overflow:auto;padding:22px 22px 18px;box-shadow:0 24px 60px rgba(0,0,0,.25)}
.mtg-modal.wide{max-width:780px}
.mtg-modal h2{margin:0 0 16px;font-size:17px;color:var(--ink)}
.mtg-modal-body{padding-bottom:6px}

/* ===== 内容管理 · 栏目速览（cmgr 列表展开） ===== */
.cmgr-detail td{background:#fafcfc;padding:0;border-top:1px dashed var(--line)}
.cmgr-ov{padding:14px 16px}
.cmgr-ov-legend{font-size:12.5px;color:var(--muted);margin-bottom:10px}
.cmgr-ov-legend .t-lock{color:#a8502a;font-weight:600}
.cmgr-ov-legend .t-edit{color:#0f766e;font-weight:600}
.cmgr-ov-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.cmgr-ov-cell{border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:#fff}
.cmgr-ov-cell.locked{background:#fff7f4;border-color:#f0cdbd}
.cmgr-ov-top{display:flex;align-items:center;justify-content:space-between;gap:6px}
.cmgr-ov-name{font-size:13px;font-weight:600;color:var(--ink)}
.cmgr-ov-cell.locked .cmgr-ov-name{color:#a8502a}
.cmgr-ov-count{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.5}
.cmgr-toggle{font-variant-numeric:tabular-nums}
@media(max-width:760px){.cmgr-ov-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.cmgr-ov-grid{grid-template-columns:1fr}}
.mtg-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid #f0f0f0}
.mtg-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:10px;font-size:13.5px;z-index:2000;opacity:0;transition:.2s;pointer-events:none}
.mtg-toast.show{opacity:1}
.mtg-toast.ok{background:#2f6b3c}
.mtg-toast.err{background:#b42318}
@media(max-width:640px){.mtg-stats{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}.mtg-stats .card{padding:10px 8px}.mtg-stats .card .k{font-size:10px;line-height:1.2}.mtg-stats .card .v{font-size:18px;margin:2px 0 1px}.mtg-stats .card .sub{font-size:9.5px;line-height:1.25}.mtg-type-pick{grid-template-columns:1fr}}

/* ===== 消息中心 msg ===== */
.msg-wrap{padding:2px}
.msg-list{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.msg-item{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 14px;cursor:pointer;transition:.15s}
.msg-item:hover{border-color:var(--teal);box-shadow:0 4px 14px rgba(15,118,110,.08)}
.msg-item.unread{background:#f3fbfa;border-color:#bfe6e0}
.msg-ic{flex:0 0 auto;width:34px;height:34px;border-radius:9px;background:var(--teal-soft);display:flex;align-items:center;justify-content:center;font-size:17px}
.msg-main{flex:1 1 auto;min-width:0}
.msg-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.msg-title{font-size:14.5px;font-weight:600;color:var(--ink)}
.msg-unread{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--teal)}
.msg-st{font-size:11.5px;padding:1px 8px;border-radius:20px}
.msg-st.open{background:#fff4e5;color:#a8502a}
.msg-st.done{background:#e7f5ec;color:#2f6b3c}
.msg-due{font-size:11.5px;color:var(--muted)}
.msg-sub{font-size:12px;color:var(--muted);margin-top:3px}
.msg-fld{display:flex;flex-direction:column;gap:5px;margin-bottom:13px}
.msg-fld .fk{font-size:12.5px;color:var(--muted)}
.msg-sel,.msg-input{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-size:14px;font-family:inherit;color:var(--ink);background:#fff}
.msg-sel:focus,.msg-input:focus{outline:none;border-color:var(--teal)}
/* 范围 · 可多选勾选组 */
.msg-scope-bar{display:flex;flex-wrap:wrap;gap:6px}
.msg-scope-bar .filter-chip{border:1px solid var(--line);background:#fff;color:#5b6670;cursor:pointer;padding:6px 12px;font-size:13px}
/* 选中态：白底灰字，用更深的灰描边 + 更深灰文字区分（⚠️ 必须比 .filter-chip.active 更具体，否则青绿实底会盖住底/字导致白底白字不可见） */
.msg-scope-bar .filter-chip.active{border-color:#4a5560;color:#2f3a42;background:#fff;box-shadow:inset 0 0 0 1px #4a5560}
.msg-scope-tip{font-style:normal;font-size:11.5px;color:var(--teal);background:var(--teal-soft);border-radius:20px;padding:1px 7px;margin-left:5px}
.msg-dt-title{margin:0 0 8px;font-size:16px;color:var(--ink)}
.msg-dt-sub{font-size:12.5px;color:var(--muted);line-height:1.6;margin-bottom:10px}
.msg-dt-due{font-size:13px;color:#a8502a;margin-bottom:8px}
.msg-dt-body{font-size:14px;line-height:1.7;color:var(--ink);white-space:pre-wrap;word-break:break-word;background:#fafcfc;border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.msg-dt-st{margin-top:12px;font-size:13.5px;color:var(--muted)}
.msg-dt-st b.done{color:#2f6b3c}
.msg-dt-st b.open{color:#a8502a}
/* 消息 · 收件人勾选器（从团队架构选择） */
.msg-pick-cnt{font-style:normal;color:var(--teal);font-weight:600}
.msg-pick-bar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.msg-pick-bar .filter-chip{border:1px solid var(--line);background:#fff;cursor:pointer}
.msg-pick-bar .filter-chip[disabled]{opacity:.4;cursor:not-allowed}
/* ⚠️「按城市」选中态：必须比上面的 .msg-pick-bar .filter-chip(白底) 更具体，否则 .filter-chip.active 的白字压在白底上 → 选中后整块变空白（v=210 修复；与 .msg-scope-bar 选中态同款：白底 + 深字 + 深描边，保持模态内一致且文字对比度达标） */
.msg-pick-bar .filter-chip.active{border-color:#4a5560;color:#2f3a42;background:#fff;box-shadow:inset 0 0 0 1px #4a5560;font-weight:600}
.msg-pick-q{margin-bottom:8px}
.msg-pick-list{max-height:230px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
.msg-pk{display:flex;align-items:center;gap:8px;padding:8px 11px;border-bottom:1px solid #f0f4f4;cursor:pointer;font-size:13.5px}
.msg-pk:last-child{border-bottom:none}
.msg-pk:hover{background:#f7fbfa}
.msg-pk.on{background:#f3fbfa}
.msg-pk input{flex:0 0 auto;width:15px;height:15px;accent-color:var(--teal)}
.msg-pk-nm{flex:1 1 auto;min-width:0;color:var(--ink);font-weight:500}
.msg-pk-nm .vip{font-style:normal;font-size:10px;color:#a8502a;background:#fff4e5;border-radius:4px;padding:0 4px;margin-left:5px}
.msg-pk-no{color:var(--muted);font-size:12px}
.msg-pick-tag{font-size:11px;padding:1px 7px;border-radius:20px;background:var(--teal-soft);color:var(--teal);white-space:nowrap}
.msg-pick-tag.ext{background:#eef2f2;color:var(--muted)}
.msg-pick-tag.up{background:#fff4e5;color:#a8502a}
.msg-pick-hint{font-size:12px;color:var(--muted);margin-top:7px}
/* 消息 · 过期灰化 / 转发 / 插入图片 */
.msg-title.expired,.msg-dt-title.expired{color:var(--muted);text-decoration:line-through}
.msg-title.archived{color:var(--muted)}
.is-expired{opacity:.72}
.msg-expired-tag{font-size:11px;color:#b23b3b;background:#fdeaea;border:1px solid #f3c9c9;border-radius:20px;padding:1px 8px;margin-left:6px;white-space:nowrap}
.msg-img-tag{font-size:12px;margin-left:6px}
.msg-img{max-width:100%;border-radius:8px;margin:6px 0;display:block;border:1px solid var(--line)}
.msg-img-actions{display:flex;align-items:center;gap:10px;margin:-4px 0 12px}
.btn.sm{font-size:12.5px;padding:5px 12px}
.msg-img-hint{font-size:12px;color:var(--teal)}
/* 写消息 · 图片作附件：正文只放纯文本，图以缩略图附件形式可视化（可单独删除） */
.msg-img-preview{display:flex;flex-wrap:wrap;gap:8px;margin:-6px 0 12px}
.msg-img-preview img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
/* v=243 · 跟进记录图片（与消息中心同款令牌方案）+ 工作台语音输入 */
.crm-fu-img{max-width:120px;max-height:90px;object-fit:cover;border-radius:8px;border:1px solid var(--line);margin:6px 8px 2px 0;display:inline-block;cursor:zoom-in}
.fu-attach-row{display:flex;align-items:center;gap:10px;margin-top:4px}
.fu-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.fu-thumb{position:relative}
.fu-thumb img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line);cursor:zoom-in}
.fu-thumb-del{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);background:#fff;color:#a32d2d;font-size:12px;line-height:16px;padding:0;cursor:pointer}
.wb-mic{flex:none}
.wb-mic-on{background:#a32d2d !important;border-color:#a32d2d !important;color:#fff !important;animation:wbMicPulse 1.2s ease-in-out infinite}
@keyframes wbMicPulse{0%,100%{opacity:1}50%{opacity:.65}}
.msg-img-thumb{position:relative;width:64px;height:64px}
.msg-img-del{position:absolute;top:-6px;right:-6px;width:18px;height:18px;line-height:16px;text-align:center;border-radius:50%;background:#e5484d;color:#fff;border:none;cursor:pointer;font-size:12px;padding:0}
.msg-img-hint{font-size:12px;color:var(--teal)}
/* 消息 · 分组栏目（当前 / 历史）与未读醒目标识 */
.msg-sec{margin-top:6px}
.msg-sec-h{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--muted);font-weight:600;margin:16px 2px 10px}
.msg-sec:first-child .msg-sec-h{margin-top:2px}
.msg-sec-cnt{font-size:11.5px;color:#fff;background:var(--teal);border-radius:20px;padding:0 8px;font-weight:600;line-height:1.7}
.msg-unread-badge{display:inline-block;font-size:11px;font-weight:700;color:#fff;background:#d6453b;border-radius:20px;padding:1px 8px;margin-left:2px;vertical-align:1px}
/* 消息 · v=154 已读回执 + 私密反馈面板（发布者 / 收件人共用） */
.msg-dt-extra{margin-top:14px;display:flex;flex-direction:column;gap:14px}
.msg-fb-loading{font-size:12.5px;color:var(--muted)}
.mrc-h{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.mrc-empty{font-size:12.5px;color:var(--muted);background:#f6f8f8;border:1px dashed var(--line);border-radius:8px;padding:8px 11px}
.msg-receipt,.msg-reply-views{background:#fafcfc;border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.mrc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.mrc-list li{display:flex;align-items:baseline;gap:8px;font-size:13px;color:var(--ink)}
.mrc-name{font-weight:600;min-width:0}
.mrc-body{flex:1 1 auto;min-width:0;color:var(--ink-2);word-break:break-word}
.mrc-time{color:var(--muted);font-size:11.5px;white-space:nowrap;margin-left:auto}
.msg-reply-box{background:#fafcfc;border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.mrb-h{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.mrb-mine{font-size:12.5px;color:#2f6b3c;background:#eef6f0;border:1px solid #cfe6d6;border-radius:8px;padding:7px 11px;margin-bottom:9px}
.msg-reply-box textarea{margin-bottom:8px;resize:vertical}
.msg-reply-box .btn{width:auto}
/* 会议 · 从客户服务添加成员 选择器 */
.mtg-addrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.mtg-intake-hint{margin-top:10px}
.mtg-intake-hint a{color:var(--teal);font-weight:600;cursor:pointer}
.mtg-pick{max-height:54vh;overflow:auto;display:flex;flex-direction:column;gap:14px;padding-right:2px}
.mtg-pick-g{}
.mtg-pick-h{font-size:13px;font-weight:700;color:var(--ink-2);margin-bottom:8px;padding-bottom:6px;border-bottom:1px dashed var(--line)}
.mtg-pick-i{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;margin-bottom:7px;cursor:pointer;font-size:13.5px;transition:.15s}
.mtg-pick-i:hover{border-color:var(--teal);background:#f6fbfa}
.mtg-pick-i.on{background:#eef6f3;border-color:#bfe0d6}
.mtg-pick-i input{accent-color:var(--teal);width:15px;height:15px}
.mtg-pick-n{font-weight:600;color:var(--ink)}
.mtg-pick-m{margin-left:auto;font-size:11.5px;color:var(--ink-3)}

/* ---------- 客户服务 · 跟进看板 / 状态（防漏跟优化） ---------- */
.crm-board{background:linear-gradient(180deg,#fff,#fbfdfd);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px}
.crm-board-h{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:10px;letter-spacing:.3px}
.crm-board-h::before{content:"●";color:var(--teal);margin-right:6px;font-size:10px;vertical-align:1px}
.crm-board-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.crm-board-item{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff;cursor:pointer;transition:.15s;text-align:center}
.crm-board-item:hover{border-color:var(--teal);box-shadow:0 2px 8px rgba(15,118,110,.08)}
.crm-board-item .n{font-size:22px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.1}
.crm-board-item .l{font-size:12px;color:var(--muted);margin-top:4px}
.crm-board-item.pending .n{color:var(--teal)}
.crm-board-item.overdue{border-color:var(--danger-line);background:var(--danger-bg)}
.crm-board-item.overdue .n{color:var(--danger-ink)}
.crm-board-item.risk{border-color:var(--warn-line);background:var(--warn-bg)}
.crm-board-item.risk .n{color:var(--warn-ink)}
.crm-board-item.lost .n{color:var(--muted)}
.crm-chips-status{margin-top:8px}
.crm-chips-label{font-size:12px;color:var(--muted);margin-right:2px;align-self:center}
.sfilter-chip{cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;padding:3px 11px;font-size:12px}
.sfilter-chip.active{background:var(--ink);color:#fff;border-color:var(--ink)}
/* 生命周期 / 标签 筛选 chip（复用 .crm-chips 容器） */
.lfchip,.tagchip{cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;padding:3px 11px;font-size:12px}
.lfchip.active,.tagchip.active{background:var(--teal);color:#fff;border-color:var(--teal)}
.crm-chips-life{margin-top:8px}
.crm-chips-tag{margin-top:8px}
/* 生命周期阶段徽章（表格 / 行动清单 / 抽屉通用） */
.tag.lf-prospect{background:#eef1f3;color:#5b6b75}
.tag.lf-new{background:var(--teal-soft);color:var(--teal)}
.tag.lf-active{background:#e7f0fb;color:#2356a8}
.tag.lf-repurchase{background:#f6ecfb;color:#8a3bb0}
.tag.lf-silent{background:#fdf3e3;color:#9a6b1f}
.tag.lf-lost{background:var(--danger-bg);color:var(--danger-ink)}
.tag.lf-partner{background:#fff4e0;color:#a9760a}
.tag.lf-unknown{background:#eef1f3;color:#9aa3ad}
.cali-lf{margin-left:0;font-size:11px;padding:0 6px}
/* 标签多选器（建档弹窗） */
.tag-picker{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.tp-chip{cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;padding:3px 11px;font-size:12.5px;transition:.12s}
.tp-chip:hover{border-color:var(--teal-line)}
.tp-chip.on{background:var(--teal-soft);border-color:var(--teal);color:var(--teal);font-weight:600}
.crm-tag-cell .tag{margin-bottom:3px}
.crm-tags{display:flex;flex-wrap:wrap;gap:4px}
/* 跟进状态标签 */
.tag.fstatus-pending{background:#eef1f3;color:#5b6670}
.tag.fstatus-active{background:var(--teal-soft);color:var(--teal)}
.tag.fstatus-lost{background:var(--danger-bg);color:var(--danger-ink)}
/* 批量操作：列表勾选列 + 批量工具栏（P2） */
.ct-sel-h,.ct-sel-cell{width:30px;text-align:center;padding-left:6px;padding-right:6px}
.ct-sel-cell input[type=checkbox],.ct-sel-h input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--teal)}
.crm-batch-bar{position:sticky;bottom:8px;z-index:6;display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;padding:10px 14px;background:var(--card,#fff);border:1px solid var(--line,#e3e8ef);border-radius:12px;box-shadow:0 8px 24px rgba(15,23,42,.10)}
.crm-batch-bar.hidden{display:none}
.bb-count{font-size:13px;color:var(--muted,#64748b)}
.bb-count b{color:var(--text,#0f172a)}
/* 逾期高亮 */
.row-overdue{background:var(--danger-bg)}
.row-overdue:hover{background:#fbe9e7}
td.overdue{color:var(--danger-ink);font-weight:700}
@media(max-width:760px){
  /* 看板 4 项窄屏压成一行紧凑 */
  .crm-board-row{grid-template-columns:repeat(4,1fr);gap:7px}
  .crm-board-item{padding:9px 6px;border-radius:9px}
  .crm-board-item .n{font-size:17px}
  .crm-board-item .l{font-size:10.5px;line-height:1.25;margin-top:3px}
}
/* 行动清单（P0 规模化：Top N 必做） */
.crm-action-list{margin-bottom:14px}
.crm-al-h{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:8px;letter-spacing:.3px}
.crm-al-h::before{content:"✓";color:var(--teal);margin-right:6px;font-weight:800}
.crm-al-sub{font-size:11px;font-weight:600;color:var(--teal);background:var(--teal-soft);padding:2px 8px;border-radius:999px;margin-left:6px}
.cali-panel{padding:6px 4px}
.cali-list{list-style:none;margin:0;padding:0}
.cali-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-bottom:1px solid var(--line);cursor:pointer;transition:.12s}
.cali-row:last-child{border-bottom:none}
.cali-row:hover{background:var(--teal-soft)}
.cali-row.cali-od{background:var(--danger-bg)}
.cali-row.cali-od:hover{background:#fbe9e7}
.cali-rank{font-size:12px;font-weight:800;color:var(--muted);width:18px;text-align:center;font-variant-numeric:tabular-nums}
.cali-name{font-size:14px;color:var(--ink);min-width:84px}
.cali-ct{font-size:11px}
.cali-reason{font-size:12.5px;color:var(--muted);flex:1}
.cali-od .cali-reason{color:var(--danger-ink);font-weight:600}
.cali-score{font-size:12px;font-weight:800;color:var(--teal);font-variant-numeric:tabular-nums;background:var(--teal-soft);border-radius:6px;padding:1px 7px}
.cali-pool{margin-top:8px}
.cali-rest{margin-top:6px}
@media(max-width:760px){.cali-name{min-width:64px}.cali-reason{font-size:11.5px}}

/* ===== 白泽 AI 健康专区 ===== */
.baize{padding:2px}
.baize-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.baize-brand{display:flex;align-items:center;gap:12px}
.bz-logo{flex:0 0 auto;width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,#0f766e,#14b8a6);color:#fff;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;box-shadow:0 4px 12px rgba(15,118,110,.22)}
.bz-title{font-size:17px;font-weight:700;color:var(--ink)}
.bz-sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.baize-actions{display:flex;gap:8px}
.baize-note{background:#fff7ed;border:1px solid #fed7aa;color:#9a5510;border-radius:11px;padding:11px 14px;font-size:13px;line-height:1.6;margin-bottom:14px}
.baize-note strong{color:#7c3a06}
.baize-tabs{display:flex;gap:8px;margin-bottom:10px}
.bz-tab{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:9px;padding:7px 16px;font-size:13.5px;cursor:pointer;transition:.15s}
.bz-tab:hover{border-color:var(--teal)}
.bz-tab.on{background:var(--teal);color:#fff;border-color:var(--teal)}
.bz-hint{font-size:12.5px;color:var(--muted);background:#f6f9f8;border:1px dashed var(--line);border-radius:9px;padding:9px 12px;margin:0 0 10px;line-height:1.65}
.bz-hint strong{color:var(--ink)}
.baize-frame-wrap{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(15,23,42,.05);overscroll-behavior:contain}
/* 白泽 /wedo/ 用 100dvh 整屏排版 + 底部固定导航（z-index:2500）；iframe 太矮会把「登录」按钮压住且无法滚动 */
.bz-frame{display:block;width:100%;height:calc(100vh - 210px);height:calc(100dvh - 210px);min-height:600px;border:0;background:#fff}
/* 全屏：iframe 占满整个视口，白泽按真实屏幕尺寸排版 */
.baize.bz-full .baize-frame-wrap{position:fixed;left:0;right:0;top:0;bottom:0;z-index:2000;border:0;border-radius:0;box-shadow:none}
.baize.bz-full .bz-frame{height:100vh;height:100dvh;min-height:0}
.bz-exit{display:none}
.baize.bz-full .bz-exit{display:inline-flex;align-items:center;gap:6px;position:absolute;right:12px;top:12px;z-index:2001;border:0;border-radius:999px;padding:8px 14px;font-size:13px;color:#fff;background:rgba(33,42,51,.86);box-shadow:0 4px 14px rgba(0,0,0,.25);cursor:pointer}
.baize-caps{margin-top:16px}
.bz-cap-title{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:10px}
.bz-cap-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.bz-cap{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;transition:.15s}
.bz-cap:hover{border-color:var(--teal);box-shadow:0 4px 14px rgba(15,118,110,.07)}
.bz-cap-ic{font-size:22px;margin-bottom:8px}
.bz-cap-name{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:5px}
.bz-cap-desc{font-size:12px;color:var(--muted);line-height:1.55}
@media(max-width:760px){.bz-cap-grid{grid-template-columns:repeat(2,1fr)}.bz-frame{height:calc(100vh - 140px);height:calc(100dvh - 140px);min-height:700px}}
/* ===== 首页 AI 智能工作台（v=63） ===== */
.wb-hero{padding:22px 26px;border-bottom:1px solid var(--line,#e5e7eb);background:linear-gradient(120deg,#eff6ff,#f8fafc)}
.wb-hero-title{font-size:22px;font-weight:800;color:var(--ink,#0f172a);letter-spacing:.5px}
.wb-hero-sub{margin-top:6px;font-size:13px;color:var(--muted,#64748b)}
/* 首页头部「每日金句」（《钻石种子》系列，按日轮换） */
.wb-hero-quote{padding:20px 26px 22px;background:linear-gradient(120deg,#eff6ff,#f8fafc)}
.wb-hero-badge{display:inline-block;font-size:11px;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #dbeafe;padding:3px 10px;border-radius:999px;letter-spacing:.6px}
.wb-hero-quote-text{margin-top:12px;font-size:20px;font-weight:700;color:var(--ink,#0f172a);line-height:1.6;letter-spacing:.2px;max-width:900px}
.wb-hero-quote-src{margin-top:8px;font-size:12.5px;color:var(--muted,#64748b);letter-spacing:.3px}
.wb-hero-quote-src.wb-link{cursor:pointer;color:#2563eb;display:inline-block;transition:color .15s}
.wb-hero-quote-src.wb-link:hover{color:#1d4ed8;text-decoration:underline}
.wb-hero-quote-src.wb-link:focus{outline:none;color:#1d4ed8;text-decoration:underline}
@media(max-width:860px){.wb-hero-quote-text{font-size:17px;line-height:1.65}}
.wb-grid{display:grid;grid-template-columns:1fr 320px;gap:18px;padding:20px;align-items:start}
.wb-card{background:#fff;border:1px solid var(--line,#e5e7eb);border-radius:16px;box-shadow:0 6px 20px rgba(15,23,42,.05);overflow:hidden}
.wb-card-h{padding:14px 16px;font-weight:700;font-size:15px;color:var(--ink,#0f172a);border-bottom:1px solid var(--line,#e5e7eb);display:flex;align-items:center;justify-content:space-between}
.wb-tag{font-size:11px;font-weight:500;color:#2563eb;background:#eff6ff;padding:3px 8px;border-radius:999px}
.wb-chat{padding-bottom:14px}
.wb-chat-log{max-height:360px;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.wb-msg{max-width:88%;padding:10px 13px;border-radius:12px;font-size:14px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.wb-a{align-self:flex-start;background:#f1f5f9;color:#0f172a;border-bottom-left-radius:4px}
.wb-u{align-self:flex-end;background:#2563eb;color:#fff;border-bottom-right-radius:4px}
.wb-think{color:#94a3b8;font-size:12.5px;font-style:italic}
.wb-quick{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 12px}
.wb-q{font-size:12px;color:#334155;background:#f8fafc;border:1px solid var(--line,#e5e7eb);padding:6px 10px;border-radius:999px;cursor:pointer}
.wb-q:hover{border-color:#2563eb;color:#2563eb}
.wb-input-row{display:flex;gap:10px;padding:0 16px;align-items:flex-end}
.wb-input{flex:1;resize:none;border:1px solid var(--line,#e5e7eb);border-radius:10px;padding:10px 12px;font-size:14px;font-family:inherit;outline:none}
.wb-input:focus{border-color:#2563eb}
.wb-chat-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:6px 16px 14px}
.wb-chat-foot .btn{padding:5px 12px;font-size:12px}
.wb-chat-hint{font-size:12px;color:var(--teal,#0f766e);min-height:16px}
.wb-side{display:flex;flex-direction:column;gap:14px}
/* 伙伴积分榜（工作台侧栏卡片） */
.wbs-head{display:flex;justify-content:flex-end;margin-bottom:8px}
.wbs-tabs{display:inline-flex;border:0.5px solid var(--line);border-radius:8px;overflow:hidden}
.wbs-tab{font-size:12px;padding:2px 10px;background:transparent;border:none;color:var(--muted);cursor:pointer}
.wbs-tab.on{background:var(--teal-soft,#e9f4f2);color:var(--teal,#0f766e);font-weight:500}
.wbs-row{display:flex;align-items:center;gap:9px;padding:6px 0;cursor:pointer}
.wbs-row + .wbs-row{border-top:1px dashed var(--line)}
.wbs-row:hover{background:#fafcfb}
.wbs-rank{flex:0 0 20px;height:20px;line-height:20px;text-align:center;border-radius:6px;font-size:11.5px;background:#f1efea;color:var(--muted);font-variant-numeric:tabular-nums}
.wbs-nm{flex:1;min-width:0}
.wbs-n{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wbs-s{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wbs-pt{flex:0 0 auto;font-size:13px;color:var(--teal,#0f766e);font-variant-numeric:tabular-nums}
.wb-mini{padding:12px 16px;font-size:13px;color:#334155;line-height:1.7}
/* v=187：「白泽健康」工作台卡已移除，原 .wb-baize 样式随之删除 */
/* 工作台侧栏卡片：每条可点击进入对应工作界面 */
.wb-link{color:#2563eb;text-decoration:none;cursor:pointer}
.wb-link:hover{text-decoration:underline}
.wb-crm-item{padding:5px 6px;border-radius:7px;cursor:pointer;color:#334155}
.wb-crm-item:hover{background:#f1f5f9;color:#0f172a}
.wb-slot{display:inline-block;margin-left:4px;padding:1px 7px;border-radius:999px;background:#eef2ff;color:#4338ca;font-size:11px;font-weight:600;vertical-align:middle}
.wb-chip{display:inline-block;margin:3px 6px 3px 0;padding:4px 10px;border:1px solid var(--teal-line,#c9d8d5);border-radius:999px;background:var(--teal-soft,#e9f4f2);color:var(--teal,#0f766e);font-size:12px}
.wb-chip:hover{background:#d8ece8;text-decoration:none}
.wb-team-item{display:block;padding:5px 6px;border-radius:7px;color:#334155}
.wb-team-item:hover{background:#f1f5f9;color:#0f172a;text-decoration:none}
.wb-team-time{margin-left:6px;font-size:11px;font-weight:400;color:var(--muted);white-space:nowrap}
.wb-foot{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line,#e5e7eb);font-size:12px}
.wb-crm-item .wb-slot{margin-left:0;margin-right:2px;min-width:14px;text-align:center}
.wb-mno{margin-left:6px;color:#94a3b8;font-size:11px;font-variant-numeric:tabular-nums}
@media(max-width:860px){.wb-grid{grid-template-columns:1fr}.wb-side{margin-top:4px}}
/* 工作台卡片自由拖拽布局（v=110）：统一 12 列网格墙，各卡带列跨度，可拖拽重排 */
.wb-cards{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;padding:20px;grid-auto-flow:row dense;align-items:start}
.wb-card--chat{grid-column:span 12}
.wb-card--wide{grid-column:span 12}
.wb-card--mini{grid-column:span 4}
.wb-dnd-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px;margin-top:4px}
.wb-dnd-tip{font-size:12.5px;color:var(--muted,#64748b)}
.wb-dnd-reset{font-size:12px;color:var(--muted,#64748b);background:#fff;border:1px solid var(--line,#e5e7eb);border-radius:999px;padding:5px 14px;cursor:pointer;font-family:inherit}
.wb-dnd-reset:hover{border-color:#2563eb;color:#2563eb}
.wb-drag-handle{cursor:grab;color:#cbd5e1;font-size:15px;line-height:1;margin-right:8px;user-select:none;touch-action:none;flex:0 0 auto;transition:color .15s}
.wb-drag-handle:hover{color:#94a3b8}
.wb-drag-handle:active{cursor:grabbing}
.wb-card.wb-draggable{cursor:default}
.wb-card.dragging{opacity:.4;box-shadow:0 12px 30px rgba(15,23,42,.18)}
.wb-card--ghost{position:fixed;z-index:9999;pointer-events:none;opacity:.92;box-shadow:0 18px 44px rgba(15,23,42,.28);margin:0}
/* 工作台 · 卡片收起 + 显示设置（v=200）：除 AI 助理外所有台卡可收起、可隐藏 */
.wb-col-btn{flex:none;margin-left:auto;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--muted,#64748b);cursor:pointer;font-size:12px;line-height:1;border-radius:6px;transition:transform .15s,background .15s,color .15s}
.wb-col-btn:hover{background:var(--line,#e5e7eb);color:var(--ink,#0f172a)}
.wb-card.wb-collapsed .wb-col-btn{transform:rotate(-90deg)}
.wb-card.wb-collapsed .wb-card-h ~ *{display:none}
.wb-card.wb-hidden{display:none}
.wb-dnd-set{flex:none;font-size:12.5px;padding:5px 12px;border:1px solid var(--line,#e5e7eb);border-radius:8px;background:var(--card,#fff);color:var(--ink,#0f172a);cursor:pointer}
.wb-dnd-set:hover{background:var(--line,#e5e7eb)}
.wb-modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.42);display:flex;align-items:center;justify-content:center;z-index:1200}
.wb-modal{background:var(--card,#fff);color:var(--ink,#0f172a);border-radius:14px;padding:18px 20px;width:min(420px,92vw);box-shadow:0 12px 44px rgba(0,0,0,.2)}
.wb-modal h2{margin:0 0 6px;font-size:16px}
.wb-modal .hint{margin:0 0 12px;font-size:12.5px;color:var(--muted,#64748b);line-height:1.5}
.wb-set-list{display:flex;flex-direction:column;gap:8px;max-height:54vh;overflow:auto}
.wb-set-row{display:flex;align-items:center;gap:8px;font-size:14px;padding:8px 10px;border:1px solid var(--line,#e5e7eb);border-radius:9px;cursor:pointer}
.wb-set-row input{width:16px;height:16px}
@media(max-width:1100px){
  .wb-card--chat{grid-column:span 12}
  .wb-card--mini{grid-column:span 6}
}
@media(max-width:680px){
  .wb-card--mini{grid-column:span 12}
}

/* ---------- 事业目标规划器卡片 ---------- */
.wb-planner{margin:0 20px 22px}
.wb-planner-sub{font-size:12px;font-weight:400;color:var(--muted)}
.wb-planner-body{padding:16px 18px 18px}
.wb-planner-input{margin-bottom:6px}
.wb-planner-lab{display:block;font-size:12.5px;color:var(--muted);margin-bottom:6px}
.wb-planner-trow{display:flex;align-items:center;gap:10px;flex-wrap:nowrap}
/* 目标年限：横向拖拉滑块（1–20 年）。滑块盒子高度给足，保证手指好点；
   轨道细线用伪元素画，不改命中区。 */
.wb-plan-range{-webkit-appearance:none;appearance:none;flex:1 1 auto;min-width:120px;height:30px;margin:0;background:transparent;outline:none;cursor:pointer}
.wb-plan-range::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:var(--teal-soft);border:1px solid var(--teal-line)}
.wb-plan-range::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-9px;border-radius:50%;background:#fff;border:3px solid var(--teal);box-shadow:0 1px 4px rgba(0,0,0,.18);cursor:pointer}
.wb-plan-range::-moz-range-track{height:6px;border-radius:999px;background:var(--teal-soft);border:1px solid var(--teal-line)}
.wb-plan-range::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--teal);box-shadow:0 1px 4px rgba(0,0,0,.18);cursor:pointer}
.wb-plan-range:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:999px}
.wb-plan-tval{flex:0 0 auto;min-width:54px;text-align:right;font-size:15px;font-weight:700;color:var(--teal)}
.wb-plan-hintline{font-size:12.5px;color:var(--muted);margin-top:4px}
.wb-plan-hintline b{color:var(--ink)}
.wb-plan-scale{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin:0 0 6px;padding:0 1px}
.wb-planner-unit{font-size:12.5px;color:var(--muted)}
.wb-planner-unit b{color:var(--ink)}
.wb-planner-presets{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.wb-pchip{padding:5px 13px;font-size:12.5px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);cursor:pointer;font-family:inherit;transition:.15s;flex:0 0 auto;white-space:nowrap}
.wb-pchip:hover{border-color:var(--teal)}
.wb-pchip.on{background:var(--teal);border-color:var(--teal);color:#fff}
/* 目标年限锁定（设定后不变，修改需确认） */
.wb-planner-lab-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wb-planner-lab{flex:1 1 auto}
.wb-plan-edit{flex:0 0 auto;padding:2px 12px;font-size:12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--teal);cursor:pointer;font-family:inherit;transition:.15s;white-space:nowrap}
.wb-plan-edit:hover{background:var(--teal-soft);border-color:var(--teal)}
.wb-planner-presets.locked{pointer-events:none;opacity:.55}
.wb-plan-lockline{font-size:11.5px;color:var(--teal);margin-top:6px}
.wb-plan-range:disabled{opacity:.55;cursor:not-allowed}
.wb-planner-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:14px 0 12px}
.wb-stat{background:var(--teal-soft);border:1px solid var(--teal-line);border-radius:10px;padding:9px 4px;text-align:center}
.wb-stat-v{font-size:17px;font-weight:800;color:var(--teal);line-height:1.1}
.wb-stat-u{font-size:10px;font-weight:600;color:var(--muted);margin-left:2px}
.wb-stat-k{font-size:11px;color:var(--muted);margin-top:3px}
/* 三个 BC 同时启动：三张并行卡（左/右部门位置进度 + 小边缺口 + 弱侧部门名） */
.wb-planner-bc{margin-bottom:12px}
.wb-bc-head{font-size:12px;color:var(--muted);margin-bottom:7px;line-height:1.6}
.wb-bc-head b{color:var(--teal)}
.wb-bc-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.wb-bcc{background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px;min-width:0}
.wb-bcc.ready{border-color:var(--teal);background:var(--teal-soft)}
.wb-bcc-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.wb-bcc-h b{font-size:13px;color:var(--teal)}
.wb-bcc-h span{font-size:11px;color:var(--muted)}
.wb-bcc-live{font-style:normal;margin-left:auto;font-size:9.5px;font-weight:800;color:#8aa39c;background:#f0f4f2;border-radius:4px;padding:1px 4px;white-space:nowrap}
.wb-bcc-row{display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:6px;margin:4px 0}
.wb-bcc-sd{font-size:10.5px;color:var(--muted)}
.wb-bcc-bar{height:6px;border-radius:3px;background:#eef2f2;overflow:hidden}
.wb-bcc-bar i{display:block;height:100%;background:var(--teal);border-radius:3px}
.wb-bcc-v{font-size:10.5px;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.wb-bcc-f{font-size:10.5px;color:var(--muted);margin-top:5px;line-height:1.55;border-top:1px dashed var(--line);padding-top:5px}
.wb-bcc-f b{color:#b4544d}
.wb-bcc.ready .wb-bcc-f b{color:var(--teal)}
.wb-bc-sum{font-size:11.5px;color:var(--ink);margin-top:8px;padding:7px 10px;border-radius:8px;background:#fafcfb;border:1px dashed var(--line);line-height:1.6}
.wb-bc-sum b{color:#b4544d}
.wb-bc-cvp{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.6}
.wb-bc-cvp b{color:var(--teal)}
.wb-planner-chart-note{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.6}
.wb-planner-chart-note b{color:var(--teal)}
.wb-planner-chartwrap{margin-bottom:10px}
.wb-planner-chart-h{font-size:12.5px;color:var(--muted);margin-bottom:6px}
.wb-planner-chart{width:100%}
.wb-ch-svg{width:100%;height:auto;display:block}
.wb-ch-grid{stroke:#eef2f2;stroke-width:1}
.wb-ch-line{fill:none;stroke:var(--teal);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}
.wb-ch-cap{stroke:#cbd5d0;stroke-width:1;stroke-dasharray:4 3}
.wb-ch-bc{stroke:#f0c9c4;stroke-width:1;stroke-dasharray:3 3}
.wb-ch-yl{fill:var(--muted);font-size:10px;text-anchor:end}
.wb-ch-xl{fill:var(--muted);font-size:10px;text-anchor:middle}
.wb-ch-bct{fill:#b4544d;font-size:9.5px;text-anchor:start;font-weight:700}
.wb-planner-detail{margin-top:6px}
.wb-planner-toggle{width:100%;text-align:left;background:#f5f9f8;border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;font-family:inherit;margin-top:8px}
.wb-planner-toggle:hover{background:var(--teal-soft)}
.wb-m-scroll{max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:9px;margin-top:8px}
.wb-m-table{width:100%;border-collapse:collapse;font-size:11.5px}
.wb-m-table th{position:sticky;top:0;background:var(--teal);color:#fff;font-weight:600;padding:6px 8px;text-align:left;white-space:nowrap}
.wb-m-table td{padding:5px 8px;border-top:1px solid var(--line);color:var(--ink);vertical-align:top}
.wb-m-net{color:var(--teal);font-weight:700;white-space:nowrap}
.wb-m-task{color:var(--muted);min-width:180px}
.wb-act-block{margin-top:8px}
.wb-act-title{font-size:12.5px;font-weight:700;color:var(--ink);margin:10px 0 6px}
.wb-act-q{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);padding:3px 0;border-bottom:1px dashed var(--line)}
.wb-act-q b{color:var(--teal)}
.wb-act-row{display:grid;grid-template-columns:74px 1fr;gap:4px 10px;font-size:11.5px;padding:5px 0;border-bottom:1px dashed var(--line)}
.wb-act-f{color:var(--teal);font-weight:700;white-space:nowrap}
.wb-act-a{color:var(--ink)}
.wb-act-n{color:var(--muted);grid-column:2}
.wb-planner-note{margin-top:14px;font-size:11px;color:var(--warn-ink);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:9px;padding:8px 10px;line-height:1.6}
.wb-planner-anchor{font-size:12px;color:var(--muted);margin-top:9px;padding:7px 10px;border:1px dashed var(--line);border-radius:8px;background:#fafcfb;line-height:1.55}
.wb-planner-anchor.on{border-style:solid;border-color:var(--teal-soft);background:var(--teal-soft);color:var(--ink)}
.wb-planner-anchor b{color:var(--teal)}

/* ---------- 台历卡片（跟进提醒，2026-09-21 新增） ----------
   设计目标 = 「一眼看到」，所以标识叠了四层（徽标 / 红色警示条 / 逾期格底纹 / 明细色条），
   而不是只在一个小圆点上做文章。 */
.wb-cal-badge{font-size:11.5px;font-weight:700;color:var(--teal);background:var(--teal-soft);border:1px solid var(--teal-line);border-radius:999px;padding:3px 10px;white-space:nowrap}
.wb-cal-badge.danger{color:#fff;background:#c0392b;border-color:#c0392b}
.wb-cal-badge.ok{color:var(--muted);background:#f3f4f6;border-color:var(--line)}
.wb-cal-body{padding:14px 16px 16px}
.wb-cal-alert{display:block;width:100%;text-align:left;font-family:inherit;cursor:pointer;font-size:13px;font-weight:600;color:var(--danger-ink);background:var(--danger-bg);border:1px solid var(--danger-line);border-radius:10px;padding:9px 12px;margin-bottom:12px;line-height:1.5}
.wb-cal-alert b{color:#c0392b;font-size:14px}
.wb-cal-alert:hover{border-color:#c0392b;background:#fbe9e7}
.wb-cal-main{display:grid;grid-template-columns:minmax(268px,1fr) minmax(268px,1.02fr);gap:18px;align-items:start}
/* v=279：明细主文本改为省略号截断后，grid 子项须允许收缩（否则 auto 最小宽被长文本撑破轨道） */
.wb-cal-main>*{min-width:0}
.wb-cal-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.wb-cal-title{font-size:15px;font-weight:700;color:var(--ink)}
.wb-cal-nav{width:26px;height:26px;line-height:1;font-size:16px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:8px;cursor:pointer;padding:0}
.wb-cal-nav:hover{border-color:var(--teal);color:var(--teal)}
.wb-cal-todaybtn{margin-left:auto;font-size:12px;color:var(--teal);background:var(--teal-soft);border:1px solid var(--teal-line);border-radius:999px;padding:4px 12px;cursor:pointer;font-family:inherit}
.wb-cal-todaybtn:hover{background:#dff0ec}
/* v=281 手机日历同步面板（把跟进/聚会/待办同步到 iPhone / Google 日历） */
.wb-cal-syncbtn{margin-left:6px;font-size:12px;color:#1d6a52;background:#eef8f3;border:1px solid #bfe0d4;border-radius:999px;padding:4px 12px;cursor:pointer;font-family:inherit;white-space:nowrap}
.wb-cal-syncbtn:hover{background:#dff0ec}
.wb-calsync{margin-bottom:12px;border:1px solid var(--teal-line);border-radius:12px;background:var(--teal-soft);padding:12px 14px;line-height:1.65}
.wb-calsync-h{font-size:14px;font-weight:700;color:#1d6a52;margin-bottom:6px}
.wb-calsync-tip{font-size:12px;color:var(--muted);margin-bottom:10px}
.wb-calsync-tip b{color:#1d6a52}
.wb-calsync-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wb-calsync-url{flex:1 1 240px;min-width:0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 9px;overflow-x:auto;white-space:nowrap}
.wb-calsync-nourl{font-size:12px;color:var(--danger-ink)}
.wb-calsync-btn{flex:0 0 auto;font-size:12px;font-weight:600;color:#1d6a52;background:#fff;border:1px solid var(--teal-line);border-radius:9px;padding:6px 12px;cursor:pointer;font-family:inherit;white-space:nowrap}
.wb-calsync-btn:hover{background:#dff0ec}
.wb-calsync-btn.ghost{color:var(--muted);border-color:var(--line)}
.wb-calsync-btn.ghost:hover{background:#eff2f4}
.wb-calsync-steps{margin:10px 0 0;padding-left:18px;font-size:12px;color:var(--muted)}
.wb-calsync-steps li{margin:3px 0}
.wb-calsync-steps b{color:#1d6a52}
.wb-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.wb-cal-dow{font-size:11.5px;color:var(--muted);text-align:center;padding:2px 0 4px}
.wb-cal-d{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:50px;padding:6px 2px 5px;background:#fff;border:1px solid transparent;border-radius:10px;cursor:pointer;font-family:inherit}
.wb-cal-d:hover{background:var(--teal-soft)}
.wb-cal-d.outside .wb-cal-num{color:#c3cbd3}
.wb-cal-d.outside{opacity:.55}
.wb-cal-d.today{border-color:var(--teal)}
.wb-cal-d.today .wb-cal-num{color:var(--teal);font-weight:800}
.wb-cal-d.overdue{background:var(--danger-bg)}
.wb-cal-d.overdue .wb-cal-num{color:var(--danger-ink);font-weight:800}
.wb-cal-d.sel{background:var(--teal);border-color:var(--teal)}
.wb-cal-d.sel .wb-cal-num{color:#fff}
.wb-cal-num{font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.15}
.wb-cal-dots{display:flex;align-items:center;gap:2px;height:6px}
.wb-cal-dot{width:5px;height:5px;border-radius:50%;display:inline-block;background:#cbd5e1;flex:0 0 auto}
.wb-cal-dot.red{background:#c0392b}
.wb-cal-dot.amber{background:#d97706}
.wb-cal-dot.blue{background:#2563eb}
.wb-cal-dot.purple{background:#7c3aed}
.wb-cal-dot.teal{background:#0f766e}
.wb-cal-dot.gray{background:#94a3b8}
.wb-cal-dot.green{background:#16a34a}
.wb-cal-more{font-size:9px;color:var(--muted);line-height:1}
.wb-cal-legend{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:10px;font-size:11.5px;color:var(--muted)}
.wb-cal-legend span{display:inline-flex;align-items:center;gap:4px}
.wb-cal-dayh{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.wb-cal-dayh b{font-size:15px;color:var(--ink)}
.wb-cal-wd{font-size:12px;color:var(--muted)}
.wb-cal-cnt{margin-left:auto;font-size:11.5px;color:var(--muted);background:#f3f4f6;border-radius:999px;padding:2px 9px}
.wb-cal-list{display:flex;flex-direction:column;gap:6px}
.wb-cal-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;font-family:inherit;cursor:pointer;background:#fff;border:1px solid var(--line);border-left:4px solid #cbd5e1;border-radius:9px;padding:8px 10px}
.wb-cal-item:hover{background:var(--teal-soft)}
.wb-cal-item.t-red{border-left-color:#c0392b}
.wb-cal-item.t-amber{border-left-color:#d97706}
.wb-cal-item.t-blue{border-left-color:#2563eb}
.wb-cal-item.t-purple{border-left-color:#7c3aed}
.wb-cal-item.t-teal{border-left-color:#0f766e}
.wb-cal-item.t-gray{border-left-color:#94a3b8}
.wb-cal-item.t-green{border-left-color:#16a34a}
.wb-cal-lb{flex:0 0 auto;font-size:10.5px;font-weight:700;color:#fff;background:#94a3b8;border-radius:999px;padding:2px 7px;white-space:nowrap}
.wb-cal-item.t-red .wb-cal-lb{background:#c0392b}
.wb-cal-item.t-amber .wb-cal-lb{background:#d97706}
.wb-cal-item.t-blue .wb-cal-lb{background:#2563eb}
.wb-cal-item.t-purple .wb-cal-lb{background:#7c3aed}
.wb-cal-item.t-teal .wb-cal-lb{background:#0f766e}
.wb-cal-item.t-green .wb-cal-lb{background:#16a34a}
.wb-cal-tx{flex:1 1 auto;min-width:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
/* v=279：主文本超长用省略号截断（不再向下折行挤高条目；预览页长名字条目即为此设计） */
.wb-cal-tx b{font-size:13.5px;color:var(--ink);flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wb-cal-sub{font-size:11.5px;color:var(--muted)}
.wb-cal-go{flex:0 0 auto;color:#cbd5e1}
/* v=279 跟进项「忽略」按钮：与条目按钮同行（外层 .wb-cal-row 包裹，避免 button 嵌套） */
.wb-cal-row{display:flex;align-items:stretch;gap:6px}
.wb-cal-row .wb-cal-item{flex:1 1 auto;min-width:0}
.wb-cal-ig{flex:0 0 auto;font-family:inherit;font-size:10.5px;font-weight:600;color:var(--muted);background:#fff;border:1px dashed var(--line);border-radius:9px;padding:0 7px;cursor:pointer;white-space:nowrap}
.wb-cal-ig:hover{color:#c0392b;border-color:#c0392b;background:#fdf3f2}
.wb-cal-empty{font-size:12.5px;color:var(--muted);padding:8px 2px}
@media(max-width:900px){
  .wb-cal-main{grid-template-columns:1fr;gap:14px}
}
.wb-ch-dot{fill:var(--teal);stroke:#fff;stroke-width:1.5}
.wb-ch-dot-t{fill:var(--ink);font-size:9.5px;font-weight:700}
.wb-m-check{color:var(--muted);min-width:170px;font-size:11.5px}
.wb-act-dyns{list-style:none;margin:0 0 2px;padding:0}
.wb-act-dyn{display:flex;gap:8px;align-items:flex-start;font-size:12px;color:var(--ink);padding:7px 9px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;line-height:1.5}
.wb-act-dyn-tag{flex:0 0 auto;font-size:10.5px;font-weight:700;border-radius:6px;padding:2px 7px;margin-top:1px}
.wb-act-dyn.lack .wb-act-dyn-tag{color:#fff;background:#c0532b}
.wb-act-dyn.lack{background:#fef4f0;border-color:#f6d9cd}
.wb-act-dyn.weak .wb-act-dyn-tag{color:#fff;background:#c77a00}
.wb-act-dyn.weak{background:#fef8ec;border-color:#f3e1b8}
.wb-act-dyn.todo .wb-act-dyn-tag{color:#0f766e;background:#dcefe6}
.wb-act-dyn.todo{background:#f1faf6;border-color:#cfe9df}
.wb-act-dyn.tip .wb-act-dyn-tag{color:#3d4954;background:#e6efeb}
.wb-act-dyn.tip{background:#f4f8f6}
@media(max-width:860px){.wb-planner-stats{grid-template-columns:repeat(3,1fr)}.wb-bc-cards{grid-template-columns:1fr}}
@media(max-width:560px){.wb-planner-stats{grid-template-columns:repeat(2,1fr)}}
/* ---------- 今日学习卡（daily-learn.js） ---------- */
.dl-head{font-size:12px;color:var(--muted);margin-bottom:8px}
.dl-sec{margin-bottom:12px}
.dl-sec-h{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--teal);margin-bottom:3px}
.dl-badge{font-size:11px;font-weight:400;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 7px;line-height:16px}
.dl-prog{font-size:11px;color:var(--muted);margin:2px 0 4px}
.dl-src{font-size:11px;color:var(--muted);margin:7px 0 2px}
.dl-item{display:flex;align-items:flex-start;gap:7px;padding:4px 6px;border-radius:8px;cursor:pointer;line-height:1.55;text-decoration:none}
.dl-item:hover{background:#f2f8f7;text-decoration:none}
.dl-t{flex:1;min-width:0;color:#0f172a}
.dl-item:hover .dl-t{color:var(--teal)}
.dl-c{flex:0 0 auto;font-size:11px;color:var(--muted);margin-top:3px;white-space:nowrap}
.dl-dot{flex:0 0 auto;width:5px;height:5px;border-radius:50%;background:var(--teal);margin-top:8px}
.dl-done{flex:0 0 auto;width:16px;height:16px;margin-top:3px;padding:0;border:1px solid var(--teal-line);background:#fff;color:var(--teal);border-radius:50%;font-size:10px;line-height:1;cursor:pointer}
.dl-done:hover{background:var(--teal-soft)}
.dl-empty{color:var(--muted);font-size:12px;line-height:1.9}
.dl-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 8px;margin-top:6px;padding-top:8px;border-top:1px dashed var(--line);font-size:12px}
.dl-drawer h2{margin:8px 0 10px;font-size:17px;line-height:1.55}
.dl-abs{font-size:13px;color:#334155;line-height:1.85;margin-bottom:18px}
.dl-tip{font-size:11px;color:var(--muted);line-height:1.7;margin-top:10px}
/* 文章阅读抽屉：正文内置直读（替代原先「跳资料库 + 扫码登录」） */
.dl-drawer{width:min(560px,94vw)}
.dl-cat{display:inline-block;font-size:11px;color:var(--teal);background:var(--teal-soft);border-radius:999px;padding:1px 9px}
.dl-from{font-size:11px;color:var(--muted);margin:-3px 0 10px}
.dl-body{font-size:14px;line-height:1.95;color:#334155;padding-bottom:6px}
.dl-body p{margin:0 0 11px}
.dl-body p:last-child{margin-bottom:0}
.dl-sep{height:1px;background:var(--line);margin:16px 0}
.dl-load{font-size:12px;color:var(--muted)}
.dl-note{font-size:12px;color:var(--muted);line-height:1.8}
.dl-extrow{margin-top:16px;padding-top:12px;border-top:1px dashed var(--line)}
.dl-ext{font-size:12px;color:var(--muted);text-decoration:none}
.dl-ext:hover{color:var(--teal);text-decoration:underline}
h3.dl-hl{background:#E1F5EE;box-shadow:0 0 0 6px #E1F5EE;border-radius:4px;transition:background .5s}

/* 性别标记（列表/卡片）：仅供人眼核对标注是否存对（AI 人称依据同一字段）。
   未填不渲染、不占位；配色克制，不与「阶段 / 状态」标签抢注意力。 */
.gchip{display:inline-block;font-size:10.5px;line-height:15px;padding:0 5px;border-radius:4px;
  font-weight:600;vertical-align:1.5px;margin-left:6px;letter-spacing:.5px}
.gchip.gm{background:#eef4fa;color:#4a6b8a}
.gchip.gf{background:#fbeef4;color:#9c5b78}

/* 年龄：建档/编辑表单里的横条滑块（0~120 岁），拖动即时显示岁数；列表里的年龄胶囊。
   配色只动主色 teal + 中性轨道，保持极简双主色基调。 */
.field-age .age-slider-row{display:flex;align-items:center;gap:14px}
.field-age .age-range{flex:1 1 auto;min-width:0;-webkit-appearance:none;appearance:none;height:6px;border-radius:999px;
  background:var(--line);outline:none;cursor:pointer}
.field-age .age-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;
  background:var(--teal);border:2px solid #fff;box-shadow:0 1px 4px rgba(15,118,110,.35);cursor:pointer;transition:transform .08s}
.field-age .age-range::-webkit-slider-thumb:active{transform:scale(1.12)}
.field-age .age-range::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--teal);
  border:2px solid #fff;box-shadow:0 1px 4px rgba(15,118,110,.35);cursor:pointer}
.field-age .age-val{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink);min-width:52px;text-align:right;font-size:14px}
.agechip{display:inline-block;margin-left:6px;padding:0 7px;border-radius:999px;background:var(--teal-soft);color:var(--teal);
  font-size:11px;font-weight:600;vertical-align:1.5px;letter-spacing:.3px}
/* 生日提醒（v=314）：列表徽标 + 顶部面板 */
.bdaychip{display:inline-block;margin-left:6px;font-size:13px;vertical-align:1px;cursor:default}
.crm-bday-panel{margin-bottom:14px;border-left:4px solid var(--pink,#ff8fb3);background:linear-gradient(180deg,#fff,#fff6fa)}
.crm-bday-h{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:10px;letter-spacing:.3px}
.crm-bday-h::before{content:"●";color:var(--pink,#ff8fb3);margin-right:6px;font-size:10px;vertical-align:1px}
.crm-bday-empty{padding:6px 2px;color:var(--muted);font-size:13px}
.crm-bday-list{display:flex;flex-direction:column;gap:8px}
.crm-bday-item{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;
  border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:#fff;cursor:pointer;transition:.15s}
.crm-bday-item:hover{border-color:var(--pink,#ff8fb3);box-shadow:0 2px 8px rgba(255,105,160,.1)}
.crm-bday-name{font-weight:700;color:var(--ink)}
.crm-bday-date{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.crm-bday-days{color:var(--pink,#ff5b9c);font-weight:700;font-size:13px;white-space:nowrap}

/* AI 回答下方标注——本轮真正引用到的资料库文章（让"AI 调了资料库"可见、可回查） */
.wb-src{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);
  font-size:11.5px;line-height:17px;color:var(--muted)}
.wb-src-label{color:var(--muted)}
.wb-src-sep{color:var(--muted)}
.wb-src-item{color:#2563eb;cursor:pointer;border-bottom:1px dotted #93c5fd;
  transition:color .15s,border-color .15s}
.wb-src-item:hover{color:#1d4ed8;border-bottom-color:#2563eb}

/* ===== 伙伴积分榜（#/rank 视图） ===== */
.rank-view{max-width:920px;margin:0 auto;padding:4px 0}
.rank-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px}
.rank-tabs{display:inline-flex;border:0.5px solid var(--line);border-radius:8px;overflow:hidden}
.rank-tab{font-size:13px;padding:5px 16px;background:transparent;border:none;color:var(--muted);cursor:pointer}
.rank-tab.on{background:var(--teal-soft,#e9f4f2);color:var(--teal,#0f766e);font-weight:600}
.rank-tip{font-size:12px;flex:1;min-width:220px}
.rank-board{display:flex;flex-direction:column;gap:10px}
.rank-my{background:var(--teal-soft,#e9f4f2);border:1px solid var(--teal,#0f766e);border-radius:12px;padding:12px 16px;font-size:14px;color:var(--ink)}
.rank-my b{color:var(--teal,#0f766e);font-size:17px;margin:0 2px}
.rank-hint{font-size:12px;margin:2px 0 2px}
.rank-row{display:flex;align-items:center;gap:12px;padding:11px 14px;background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:box-shadow .15s,border-color .15s}
.rank-row:hover{box-shadow:0 2px 10px rgba(15,118,110,.10);border-color:var(--teal,#0f766e)}
.rank-row.me{background:var(--teal-soft,#e9f4f2);border-color:var(--teal,#0f766e)}
.rank-rk{flex:0 0 26px;height:26px;line-height:26px;text-align:center;border-radius:8px;font-size:13px;background:#f1efea;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600}
.rank-nm{flex:1;min-width:0}
.rank-n{font-size:15px;color:var(--ink);font-weight:500;display:flex;align-items:center;gap:6px}
.rank-s{font-size:12px;color:var(--muted);margin-top:1px}
.rank-pt{flex:0 0 auto;text-align:right;font-variant-numeric:tabular-nums}
.rank-pt b{font-size:20px;color:var(--teal,#0f766e)}
.rank-pt span{font-size:12px;color:var(--muted);margin-left:2px}
.rank-me-tag{font-size:11px;background:var(--teal,#0f766e);color:#fff;padding:1px 7px;border-radius:999px;font-weight:600}
.rank-empty{font-size:13px;padding:18px;background:var(--card,#fff);border:1px solid var(--line);border-radius:12px}

/* 积分来源弹窗 */
.rank-modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;inset:0;background:rgba(20,28,34,.45);display:flex;align-items:center;justify-content:center;z-index:2000;padding:18px}
.rank-modal{width:min(560px,100%);max-height:88vh;overflow:auto;background:#ffffff;color:#1f2937;border-radius:16px;box-shadow:0 18px 50px rgba(0,0,0,.22);padding:20px 22px}
.rank-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.rank-modal-name{font-size:18px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px}
.rank-modal-sub{font-size:12.5px;color:var(--muted);margin-top:3px}
.rank-modal-close{width:30px;height:30px;border:none;background:var(--bg,#f7f9f9);border-radius:8px;font-size:20px;color:var(--muted);cursor:pointer;flex:0 0 auto}
.rank-modal-close:hover{background:#eef1f2;color:var(--ink)}
.rank-modal-score{margin:14px 0 6px;font-size:14px;color:var(--ink)}
.rank-modal-score b{font-size:26px;color:var(--teal,#0f766e);margin:0 4px}
.rank-modal-month{font-size:12.5px;color:var(--muted);margin-left:8px}
.rank-modal-chart-title{font-size:13px;font-weight:600;color:var(--ink);margin:14px 0 8px}
.rank-chart{display:flex;flex-direction:column;gap:9px}
.rank-bar-row{display:flex;align-items:center;gap:10px}
.rank-bar-label{flex:0 0 52px;font-size:12.5px;color:var(--muted);text-align:right}
.rank-bar-track{flex:1;height:14px;background:var(--bg,#f1f3f4);border-radius:7px;overflow:hidden}
.rank-bar-fill{height:100%;border-radius:7px;min-width:2px;transition:width .25s}
.rank-bar-val{flex:0 0 34px;text-align:right;font-size:13px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.rank-modal-chart-legend{display:flex;flex-wrap:wrap;gap:14px;margin:12px 0 4px;font-size:12px;color:var(--muted)}
.rank-legend{display:inline-flex;align-items:center;gap:5px}
.rank-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.rank-modal-detail-title{font-size:13px;font-weight:600;color:var(--ink);margin:16px 0 8px}
.rank-detail-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.rank-detail-list li{font-size:13px;color:var(--ink);display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.rank-detail-list .rd-n{font-weight:700;color:var(--teal,#0f766e)}
.rank-detail-list b{color:var(--ink)}
.rank-detail-list .rd-label{margin-left:auto;color:var(--muted);font-size:12px}
.rank-modal-actions{margin-top:16px;padding-top:14px;border-top:1px solid var(--line,#e5e9ec)}
.rank-go-follow{display:inline-block;font-size:13px;color:#0f766e;font-weight:600;cursor:pointer;text-decoration:none}
.rank-go-follow:hover{text-decoration:underline}
/* 「积分来源图表」标题行 + 右上角「积分说明」入口 */
.rank-modal-chart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 8px}
.rank-modal-chart-head .rank-modal-chart-title{margin:0}
.rank-chart-help{flex:0 0 auto;border:1px solid var(--line,#e5e9ec);background:var(--bg,#f7f9f9);color:var(--teal,#0f766e);font-size:12px;font-weight:600;padding:3px 11px;border-radius:999px;cursor:pointer;line-height:1.6;white-space:nowrap;text-decoration:none}
.rank-chart-help:hover{background:var(--teal-soft,#e9f4f2);border-color:var(--teal,#0f766e)}

/* 团队活力速览（奖励 / 提醒弹窗） */
.digest-modal{max-width:440px}
.dg-me{display:flex;gap:12px;align-items:center;padding:12px;background:var(--teal-soft,#e6f4ef);border-radius:12px;margin:14px 0 4px}
.dg-me-ava{width:42px;height:42px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px;flex:0 0 auto}
.dg-me-info{flex:1;min-width:0}
.dg-me-name{font-weight:600;font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dg-me-sub{font-size:12.5px;color:var(--muted,#64748b);margin-top:3px}
.dg-tier{color:#fff;font-size:11px;padding:2px 9px;border-radius:999px;white-space:nowrap;font-weight:600}
.dg-tier.sm{padding:1px 6px;font-size:12px}
.dg-sec-title{font-size:13px;font-weight:700;margin:16px 0 8px;color:var(--ink-2,#5b6472)}
.dg-list{display:flex;flex-direction:column;gap:6px}
.dg-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line,#e7ebef);border-radius:10px;font-size:13.5px;background:#fff}
.dg-item.top{background:linear-gradient(90deg,#fff7e6,#fff);border-color:#f3d27a}
.dg-item.rem{background:#fff8f3;border-color:#f3d9c4}
.dg-rank{font-weight:700;width:26px;text-align:center;flex:0 0 auto}
.dg-nm{flex:1;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dg-pt{color:var(--muted,#64748b);font-size:12px;flex:0 0 auto}
.dg-why{color:#b45309;font-size:12px;flex:1;min-width:0}
.dg-go{margin-left:auto;flex:0 0 auto}
.dg-empty{padding:8px 2px;font-size:12.5px;line-height:1.5}
.dg-vibe{margin:10px 0 2px;padding:10px 12px;border-radius:10px;font-size:13.5px;line-height:1.5;font-weight:500}
.dg-vibe.good{background:#eafaf1;color:#0f7a4d;border:1px solid #bfe6cf}
.dg-vibe.mid{background:#eef4ff;color:#2b5fb0;border:1px solid #cfe0fb}
.dg-vibe.warn{background:#fff6ec;color:#b06a16;border:1px solid #f3d9b6}
.rank-filters .rank-dg{flex:0 0 auto;white-space:nowrap}

/* 积分榜：搜索 / 层级筛选 / 层级角标 / 前 N 名 */
.rank-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
.rank-filters .rank-search{flex:1 1 180px;min-width:140px;max-width:300px}
.rank-filters .rank-lvsel{flex:0 0 auto;width:auto;min-width:118px}
.rank-filters .rank-cfg{flex:0 0 auto}
.rank-list{display:flex;flex-direction:column;gap:10px}
.rank-lv{font-size:11px;padding:1px 7px;border-radius:999px;background:#eef1f2;color:var(--muted);font-weight:600;white-space:nowrap}
.rank-sep{height:1px;background:var(--line,#e5e9ec);margin:2px 0}
.rank-more{font-size:12px;text-align:center;padding:6px 0 2px}
.rank-toast{position:fixed;left:50%;transform:translateX(-50%);bottom:48px;z-index:2600;background:#1f2937;color:#fff;font-size:13px;padding:9px 16px;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.2)}

/* 积分表设置（管理员） */
.rank-modal.sc-admin{width:min(880px,100%)}
.sc-admin-limit{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 4px;padding:10px 12px;background:var(--bg,#f7f9f9);border-radius:10px;font-size:13px;color:var(--ink)}
.sc-admin-limit label{font-weight:600}
.sc-admin-limit .input{width:96px}
.sc-admin-head,.sc-admin-row{display:grid;grid-template-columns:1.6fr 1.5fr .8fr .6fr .6fr .6fr auto;gap:8px;align-items:center}
.sc-admin-head{margin:14px 0 6px;font-size:11.5px;color:var(--muted);padding:0 2px}
.sc-admin-list{display:flex;flex-direction:column;gap:6px}
.sc-admin-row{padding:6px;border:1px solid var(--line,#e5e9ec);border-radius:10px}
.sc-admin-row.off{opacity:.55;background:var(--bg,#f7f9f9)}
.sc-admin-row .input,.sc-admin-row .select{font-size:12.5px;padding:5px 7px;min-width:0}
.sc-admin-ops{display:flex;gap:6px;justify-content:flex-end}
.sc-admin-ops .btn{font-size:11.5px;padding:3px 9px;line-height:1.6;white-space:nowrap}
.sc-admin-foot{font-size:12px;margin-top:12px;line-height:1.6}
@media (max-width:760px){
  .rank-modal.sc-admin{width:100%}
  .sc-admin-head{display:none}
  .sc-admin-row{grid-template-columns:1fr 1fr;gap:6px}
  .sc-admin-row .sc-name{grid-column:1/-1}
  .sc-admin-ops{grid-column:1/-1;justify-content:flex-start}
}


/* ---------- 健康档案（P0）：客户/伙伴抽屉「健康档案」页签 + 白泽报告导入 ---------- */
.hx-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(10px);background:#22303a;color:#fff;padding:9px 16px;border-radius:9px;font-size:13.5px;line-height:1.5;max-width:86vw;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:1400;box-shadow:0 10px 26px rgba(0,0,0,.22)}
.hx-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.hx-toast.ok{background:#17745f}
.hx-toast.err{background:#a33a3a}
.hx-top{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.hx-stats{display:flex;flex-wrap:wrap;gap:6px}
.hx-stat{background:var(--teal-soft);border:1px solid var(--teal-line);border-radius:9px;padding:3px 9px;font-size:12.5px;color:#28605a}
.hx-stat b{color:#0f5a52;font-weight:700}
.hx-act{display:flex;gap:8px;flex-wrap:wrap}
.hx-empty{background:#f3f7f8;border:1px dashed #cfdedd;border-radius:10px;padding:11px 13px;color:#4b635f;font-size:13px;line-height:1.7}
.hx-sec{font-size:13.5px;font-weight:700;color:var(--ink);margin:16px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.hx-mini{font-size:11.5px;color:var(--muted);font-weight:400}
.hx-list{display:flex;flex-direction:column;gap:6px}
.hx-li{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff}
.hx-li-h{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.hx-li-n{font-size:13.5px;color:var(--ink);font-weight:600;min-width:0;flex:1 1 auto;word-break:break-word}
.hx-v{font-size:14px;font-weight:700;white-space:nowrap;flex:none}
.hx-v-long{display:block;white-space:normal;flex:none;margin-top:4px;text-align:left;line-height:1.45;word-break:break-word}
.hx-li-d{font-size:11.5px;color:#5a6b67;line-height:1.55;margin-top:4px;padding:3px 8px;background:#f5fafa;border-left:2px solid var(--teal-line);border-radius:0 6px 6px 0}
.hx-f-high{color:#b3352f}
.hx-f-low{color:#1f5fb0}
.hx-f-border{color:#8a5a12}
.hx-rep{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;overflow:hidden}
.hx-rep-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;background:#f8fbfb}
.hx-rep-h b{font-size:13.5px}
.hx-fold{margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:6px;font-size:11.5px;padding:2px 9px;cursor:pointer;color:var(--teal);font-weight:600}
.hx-del-rep{margin-left:6px;border:1px solid #f0c9c4;background:#fff;border-radius:6px;font-size:11.5px;padding:2px 9px;cursor:pointer;color:var(--danger-ink,#b3352f);font-weight:600}
.hx-del-rep:hover{background:var(--danger-bg,#fdecea)}
.hx-rep-b{padding:8px 10px}
.hx-risk{font-size:11.5px;font-weight:700;border-radius:5px;padding:1px 7px}
.hx-r-high{background:var(--danger-bg);color:var(--danger-ink)}
.hx-r-mid{background:var(--warn-bg);color:var(--warn-ink)}
.hx-r-low{background:#eaf5ec;color:#2f6b3c}
.hx-plan{margin-top:8px;line-height:1.7}
.hx-plan ul{margin:4px 0 0;padding-left:18px}
.hx-raw{margin-top:8px;font-size:12px}
.hx-raw summary{cursor:pointer;color:var(--teal);font-weight:600}
.hx-raw pre{white-space:pre-wrap;word-break:break-all;background:#f7f9f9;border:1px solid var(--line);border-radius:8px;padding:9px;max-height:260px;overflow:auto;font-size:11.5px;line-height:1.6}
.hx-foot{margin-top:14px;font-size:11.5px;color:var(--muted);line-height:1.7;border-top:1px solid var(--line);padding-top:9px}
.crm-modal.hx-modal{max-width:760px}
.hx-step{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:700;color:var(--ink);margin:16px 0 8px}
.hx-n{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:50%;background:var(--teal);color:#fff;font-size:11.5px;font-weight:700;flex:none}

/* 风险总览卡（v=180）：体检指标 + 生活方式风险一屏概览 */
.hx-risk-ov{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 2px}
.hx-ov-tile{display:flex;flex-direction:column;gap:2px;background:#f7f9f9;border:1px solid var(--line);border-radius:9px;padding:7px 11px;min-width:118px;cursor:default}
.hx-ov-tile[data-goto]{cursor:pointer}
.hx-ov-tile[data-goto]:hover{border-color:var(--teal)}
.hx-ov-tile.hx-ov-warn{background:var(--warn-bg);border-color:var(--warn-ink)}
.hx-ov-k{font-size:11px;color:var(--muted)}
.hx-ov-tile span:last-child{font-size:13px;font-weight:700;color:var(--ink)}

/* 生活方式与风险因素（v=180） */
.hx-life{display:flex;flex-direction:column;gap:1px;padding:4px 0}
.hx-lf{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:7px}
.hx-lf:nth-child(odd){background:#f7f9f9}
.hx-lf-k{flex:0 0 auto;min-width:64px;font-size:13px;font-weight:600;color:var(--ink)}
.hx-lf-v{flex:1 1 auto;min-width:0;font-size:12.5px;color:var(--ink-2);word-break:break-word;line-height:1.4}
.hx-lf-c{flex:none;font-size:11px;font-weight:700;border-radius:5px;padding:1px 8px}
.hx-l-ok .hx-lf-c, .hx-l-ok.hx-lf-c{background:#eaf5ec;color:#2f6b3c}
.hx-l-warn .hx-lf-c, .hx-l-warn.hx-lf-c{background:var(--warn-bg);color:var(--warn-ink)}
.hx-l-risk .hx-lf-c, .hx-l-risk.hx-lf-c{background:var(--danger-bg);color:var(--danger-ink)}
.hx-lf.hx-l-warn{background:#fff8ec}
.hx-lf.hx-l-risk{background:#fdecea}
.hx-lf-mini{color:var(--warn-ink);font-weight:600}
.hx-hint{font-size:12.5px;color:#4b635f;background:#f3f7f8;border:1px solid #d8e6e4;border-radius:9px;padding:9px 12px;line-height:1.65;margin-bottom:8px}
.hx-ta{width:100%;min-height:120px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6}
.hx-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 4px}
.hx-who{display:flex;align-items:center;gap:8px}
.hx-picked{font-weight:700;color:var(--ink)}
.hx-who select{font-family:inherit;font-size:13.5px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);max-width:100%}
.hx-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}
.hx-f{display:flex;flex-direction:column;gap:3px;min-width:0}
.hx-f label{font-size:11.5px;color:var(--muted)}
.hx-f input{font-family:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);min-width:0;width:100%}

/* 主要问题（v=226）：档案级单条、可就地编辑 */
.hx-issue{display:flex;flex-direction:column;gap:8px;background:#f7fbfb;border:1px solid var(--teal-line);border-radius:10px;padding:10px 12px}
.hx-issue-txt{font-size:13px;line-height:1.65;color:var(--ink-2);white-space:pre-wrap;word-break:break-word}
.hx-issue-empty{color:#4b635f}
[data-issue-display][hidden]{display:none}
.hx-issue-edit[hidden]{display:none}
.hx-issue-ta{width:100%;min-height:84px;font-family:inherit;font-size:13px;line-height:1.6;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);resize:vertical}
.hx-issue-ta:focus{outline:none;border-color:var(--teal)}
.hx-issue-act{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.hx-tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.hx-tbl{border-collapse:collapse;width:100%;font-size:12.5px}
.hx-tbl th{background:#f8fbfb;text-align:left;font-weight:600;color:var(--muted);padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.hx-tbl td{padding:4px 6px;border-bottom:1px solid var(--line);vertical-align:middle}
.hx-tbl-edit td input,.hx-tbl-edit td select{font-family:inherit;font-size:12.5px;padding:5px 6px;border:1px solid var(--line);border-radius:7px;width:100%;min-width:88px;background:#fff;color:var(--ink)}
.hx-tbl-edit td input.hx-w-s{min-width:56px}
.hx-del{border:none;background:var(--danger-bg);color:var(--danger-ink);border-radius:6px;width:22px;height:22px;cursor:pointer;font-size:14px;line-height:1;font-weight:700}
.hx-consent{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.7;background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-ink);border-radius:10px;padding:10px 12px;margin-top:8px;cursor:pointer}
.hx-consent input{margin-top:3px;flex:none}
.hx-consent strong{color:#7c3a06}
.hx-unparsed{margin-top:10px;font-size:12px;color:var(--muted);background:#f7f9f9;border:1px solid var(--line);border-radius:9px;padding:9px 12px;line-height:1.7}
.hx-unparsed b{color:var(--ink)}
.hx-unparsed ul{margin:6px 0 0;padding-left:18px}
.hx-unparsed li{margin-bottom:2px}
/* 指标趋势（P1） */
.hx-trend{display:flex;flex-direction:column;gap:10px}
.hx-tcard{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fff}
.hx-tc-h{display:flex;align-items:baseline;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.hx-tc-n{font-size:13.5px;font-weight:600;color:var(--ink)}
.hx-tc-f{font-size:11.5px;font-weight:700}
.hx-line{display:block;width:100%;height:auto}
.hx-band{fill:#eef5ef;stroke:none}
.hx-poly{fill:none;stroke:var(--teal);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.hx-dot{stroke:#fff;stroke-width:1.2}
.hx-dot.hx-f-high{fill:#b3352f}
.hx-dot.hx-f-low{fill:#1f5fb0}
.hx-dot.hx-f-border{fill:#8a5a12}
.hx-dot.hx-f-normal{fill:#9aa3ad}
.hx-xl{font-size:9.5px;fill:var(--muted)}
.hx-yl{font-size:9.5px;fill:var(--muted)}
.hx-qual{display:flex;flex-wrap:wrap;gap:6px}
.hx-ql-i{display:flex;flex-direction:column;gap:2px;align-items:center;background:#f8fbfb;border:1px solid var(--line);border-radius:8px;padding:5px 9px;min-width:56px}
.hx-ql-d{font-size:12.5px;font-weight:700}
.hx-note{margin-top:2px}
/* 报告年龄同步提示（v=238）：报告年龄 ≠ 客户资料时显示「年龄将被更新 55 → 41」 */
.hx-age-sync{font-size:12px;line-height:1.5;color:var(--teal,#0f766e);background:#f7fbfb;border:1px solid var(--teal-line,#bfe0db);border-radius:8px;padding:5px 9px;margin:-3px 0 8px}

/* 趋势手动记录（v=207） */
.hx-trend-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.hx-tadd{border:1px solid #bfe0db;background:#fff;border-radius:6px;font-size:11.5px;padding:2px 9px;cursor:pointer;color:var(--teal,#0f766e);font-weight:600}
.hx-tadd:hover{background:#f0f9f7}
.hx-tadd-one{margin-right:auto}
.hx-addform{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;padding:8px 10px;background:#f7fbfb;border:1px solid var(--line);border-radius:9px}
.hx-t-date,.hx-t-val,.hx-t-sel{font-family:inherit;font-size:12.5px;padding:5px 7px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}
.hx-t-val{width:84px}
.hx-t-save{border:1px solid #bfe0db;background:var(--teal,#0f766e);color:#fff;border-radius:6px;font-size:11.5px;padding:3px 11px;cursor:pointer;font-weight:600}
.hx-t-save:hover{filter:brightness(.97)}
.hx-t-cancel{border:1px solid var(--line);background:#fff;border-radius:6px;font-size:11.5px;padding:3px 11px;cursor:pointer;color:var(--muted)}

/* 历次报告整段收放 + 明细限高滚动（v=171） */
.hx-sec-toggle{position:relative;display:flex;align-items:center;cursor:pointer;user-select:none;padding-right:18px}
.hx-sec-toggle:hover{color:var(--teal)}
.hx-sec-toggle:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:4px}
.hx-chev{position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:11px;line-height:1;color:var(--muted)}
#hxReps[hidden]{display:none}
#hxFocus[hidden]{display:none}
#hxTrend[hidden]{display:none}
.hx-rep-scroll{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:8px;margin-bottom:6px}
.hx-rep-scroll .hx-list{padding:4px}
.hx-plan summary{cursor:pointer;color:var(--teal);font-weight:600;font-size:12.5px}
.hx-plan[open] summary{margin-bottom:4px}

/* 白泽专区：导入动线提示 */
.bz-flow{background:#f0f9f7;border:1px solid #cbe6e1;border-radius:10px;padding:10px 14px;font-size:12.5px;color:#2f5f5a;line-height:1.75;margin-bottom:10px}
.bz-flow b,.bz-flow strong{color:#0f5a52}
@media (max-width:640px){
  .hx-grid{grid-template-columns:1fr 1fr}
  .hx-stats{gap:5px}
  /* 窄屏：步骤标题与说明**分行**。否则长说明会把标题挤断成「解析预 / 览」。 */
  .hx-step{flex-wrap:wrap}
  .hx-step>.hx-mini{flex:0 0 100%;margin-top:2px}
}

/* ================= 家庭安全体系（#/defense，v=188） ================= */
.df-view{max-width:920px;margin:0 auto;padding:4px 0;display:flex;flex-direction:column;gap:14px}
.df-intro{font-size:12.5px;line-height:1.7;background:#f7f9f9;border:1px solid var(--line);border-radius:10px;padding:9px 13px}
.df-intro b{color:var(--teal,#0f766e)}
.df-sec{background:var(--card,#fff);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.df-sec-h{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.df-sec-t{font-size:15.5px;font-weight:700;color:var(--ink)}
.df-sec-s{font-size:12px;color:var(--muted)}
.df-sec-b{min-height:24px}
.df-muted{font-size:12.5px;padding:6px 0}
.df-empty{font-size:12.5px;color:var(--muted);padding:8px 0;line-height:1.7}
.df-acts{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}

/* 摘要 tile（健康 / 能力共用） */
.df-tiles{display:flex;gap:8px;flex-wrap:wrap}
.df-tile{display:flex;flex-direction:column;gap:2px;background:#f7f9f9;border:1px solid var(--line);border-radius:9px;padding:7px 11px;min-width:104px}
.df-t-k{font-size:11px;color:var(--muted)}
.df-t-v{font-size:13.5px;font-weight:700;color:var(--ink)}
.df-tile.ok .df-t-v{color:var(--teal,#0f766e)}
.df-tile.warn{background:var(--warn-bg,#fdf3ee);border-color:var(--warn-ink,#c2622b)}
.df-tile.warn .df-t-v{color:var(--warn-ink,#c2622b)}
.df-tile.up .df-t-v{color:var(--teal,#0f766e)}
.df-cats{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.df-cats .df-tile{min-width:78px}

/* 财务：周选择 + 录入条 */
.df-entry{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#fbfdfd}
.df-weeknav{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.df-wk-btn{width:26px;height:26px;border-radius:7px;border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);font-size:14px;cursor:pointer;line-height:1}
.df-wk-btn:hover{border-color:var(--teal,#0f766e)}
.df-wk-lab{font-size:13px;font-weight:600;color:var(--ink)}
.df-wk-back{font-size:12px;border:none;background:none;color:var(--teal,#0f766e);cursor:pointer;padding:2px 4px}
.df-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* 三块横向同行：录入条 / 目标基线 / 往年总收入 */
.df-money-cols{display:flex;gap:12px;align-items:flex-start;margin-top:4px;margin-bottom:10px}
.df-money-cols > *{flex:1 1 0;min-width:0;margin-bottom:0}
@media (max-width:760px){
  .df-money-cols{flex-direction:column}
  .df-money-cols > *{margin-bottom:10px}
}

/* 币种控件（预设下拉 + 自定义输入，仅影响显示符号，不做汇率换算） */
.df-cur-sel{font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--card,#fff);max-width:150px}
.df-cur-sel:focus{outline:none;border-color:var(--teal,#0f766e)}
.df-cur-custom{width:96px;font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--card,#fff)}
.df-cur-custom:focus{outline:none;border-color:var(--teal,#0f766e)}
.df-amt{width:150px;font-size:14px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--card,#fff)}
.df-amt:focus{outline:none;border-color:var(--teal,#0f766e)}
.df-note{flex:1;min-width:140px;font-size:13px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--card,#fff)}
.df-note:focus{outline:none;border-color:var(--teal,#0f766e)}
.df-saved{font-size:12px;margin-top:7px;color:var(--ink)}
.df-saved b{color:var(--teal,#0f766e)}
.df-saved.muted{color:var(--muted)}
.df-mom{font-size:12px;margin-left:2px;font-weight:600}
.df-mom.up{color:var(--teal,#0f766e)}
.df-mom.down{color:#c0392b}
.df-mom.muted{color:var(--muted)}
.df-del{margin-left:4px;font-size:13px;padding:6px 10px;border:1px solid rgba(192,57,43,.4);background:var(--card,#fff);border-radius:8px;color:#c0392b;cursor:pointer}
.df-del:hover{background:#c0392b;color:#fff}
.df-del:disabled{opacity:.5;cursor:default}

/* 目标基线（第二收入曲线 vs 主业） */
.df-target{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#fbfdff}
.df-target-empty{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.df-tg-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.df-tg-title{font-size:13px;font-weight:700;color:var(--ink)}
.df-tg-label{font-size:13px;color:var(--ink)}
.df-tg-edit{margin-left:auto;font-size:12px;border:1px solid var(--line);background:var(--card,#fff);border-radius:6px;padding:3px 10px;cursor:pointer;color:var(--teal,#0f766e)}
.df-tg-edit:hover{border-color:var(--teal,#0f766e)}
.df-tg-cancel{font-size:12px;border:none;background:none;color:var(--muted);cursor:pointer;padding:3px 4px}
.df-tg-stats{display:flex;flex-wrap:wrap;gap:8px}
.df-stat{display:flex;flex-direction:column;background:var(--card,#fff);border:1px solid var(--line);border-radius:8px;padding:5px 10px;min-width:74px}
.df-stat-k{font-size:11px;color:var(--muted)}
.df-stat-v{font-size:14px;font-weight:700;color:var(--ink)}
.df-tag{display:inline-block;font-size:10.5px;background:var(--teal-soft,#e9f4f2);color:var(--teal,#0f766e);border-radius:5px;padding:1px 5px;margin-left:4px;font-weight:600}

/* 明细列表 */
.df-list{display:flex;flex-direction:column;gap:4px;margin-top:10px}
.df-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;font-size:13px}
.df-row:nth-child(odd){background:#f7f9f9}
.df-row-wk{flex:0 0 auto;color:var(--ink);font-weight:600}
.df-row-amt{flex:0 0 auto;font-weight:700;color:var(--teal,#0f766e);min-width:88px;text-align:right}
.df-row-note{flex:1;min-width:0;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.df-row-edit,.df-row-del{flex:0 0 auto;font-size:11.5px;border:1px solid var(--line);background:var(--card,#fff);border-radius:6px;padding:3px 8px;cursor:pointer;color:var(--ink)}
.df-row-edit:hover{border-color:var(--teal,#0f766e);color:var(--teal,#0f766e)}
.df-row-del:hover{border-color:#c0392b;color:#c0392b}

/* SVG 图表 */
.df-chart{margin-top:6px}
.df-chart svg{width:100%;height:auto;display:block}
.df-grid{stroke:var(--line,#e5e7e5);stroke-width:0.6}
.df-bar{fill:var(--teal,#0f766e);opacity:0.55}
.df-line{fill:none;stroke:var(--teal,#0f766e);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.df-dot{fill:var(--teal,#0f766e)}
.df-line2{fill:none;stroke:#7a5af5;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.df-dot2{fill:#7a5af5}
.df-xl{font-size:9px;fill:var(--muted,#8a9490);text-anchor:middle}
.df-yl{font-size:9px;fill:var(--muted,#8a9490);text-anchor:end}
.df-legend{font-size:10px;fill:var(--muted,#8a9490)}
.df-nodata{font-size:12px;fill:var(--muted,#8a9490);text-anchor:middle}

/* 季度导航（财务折线按 13 周一季，左右切换） */
.df-qnav{display:flex;align-items:center;justify-content:center;gap:10px;margin:8px 0 4px;flex-wrap:wrap}
.df-q-btn{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);font-size:16px;cursor:pointer;line-height:1}
.df-q-btn:hover:not([disabled]){border-color:var(--teal,#0f766e);color:var(--teal,#0f766e)}
.df-q-btn[disabled]{opacity:.35;cursor:not-allowed}
.df-q-lab{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap}

/* 柱子可点选（仅周视图带 data-week 的柱可点） */
.df-bar{transition:opacity .12s}
.df-bar[data-week]{cursor:pointer}
.df-bar:hover{opacity:.85}
.df-bar.g-up{fill:#0f9d6b;opacity:.85}
.df-bar.g-down{fill:#d6453f;opacity:.85}
.df-bar.g-zero{fill:var(--line,#e5e7e5);opacity:.8}

/* 增长%标签（绿涨/红跌） */
.df-g{font-size:9px;font-weight:700}
.df-g.up{fill:#0f9d6b}
.df-g.down{fill:#d6453f}

/* 视图切换 tab：周/月/季/年 */
.df-viewtabs{display:flex;gap:6px;margin:10px 0 4px;flex-wrap:wrap}
.df-vtab{font-size:13px;border:1px solid var(--line);background:var(--card,#fff);border-radius:8px;padding:5px 16px;cursor:pointer;color:var(--ink)}
.df-vtab:hover{border-color:var(--teal,#0f766e)}
.df-vtab.on{background:var(--teal,#0f766e);color:#fff;border-color:var(--teal,#0f766e)}

/* 往年总收入录入块 */
.df-history{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#fffdf7}
.df-hist-rows{display:flex;flex-direction:column;gap:6px;margin:4px 0 2px}
.df-hist-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.df-hist-yr{width:84px;font-size:14px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--card,#fff)}
.df-hist-amt{width:140px;font-size:14px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--card,#fff)}
.df-hist-sep{font-size:13px;color:var(--ink)}
.df-hist-yr:focus,.df-hist-amt:focus{outline:none;border-color:var(--teal,#0f766e)}
.df-hist-del{margin-left:2px;font-size:15px;width:28px;height:28px;border:1px solid var(--line);background:var(--card,#fff);border-radius:7px;cursor:pointer;color:#c0392b;line-height:1}
.df-hist-del:hover{background:#c0392b;color:#fff}
.df-hist-acts{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.df-hist-add{font-size:12px;border:1px solid var(--line);background:var(--card,#fff);border-radius:6px;padding:5px 12px;cursor:pointer;color:var(--teal,#0f766e)}
.df-hist-add:hover{border-color:var(--teal,#0f766e)}
.df-hist-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.df-hist-chip{font-size:13px;background:var(--card,#fff);border:1px solid var(--line);border-radius:8px;padding:4px 10px;color:var(--ink)}

/* 侧栏账号区：家庭安全体系按钮（夹在「个人 IP 设置」与「退出登录」之间） */
.ip-defense{margin-top:6px}
/* v=366：全局身份切换器（侧栏账号卡下方），一家人共用账户时随手切换名片身份 */
.ip-switch{display:flex;align-items:center;gap:8px;margin-top:8px;padding:6px 10px;border:1px solid var(--teal-line);background:var(--teal-soft);border-radius:9px}
.ip-switch-lb{font-size:12px;color:#5c7b74;flex:none;line-height:1.2}
.ip-switch .ip-sel{flex:1;min-width:0;font-size:12.5px;padding:3px 6px;border:1px solid var(--teal-line);border-radius:7px;background:#fff;color:var(--ink)}
.ip-switch .ip-sel:focus-visible{outline:2px solid var(--teal);outline-offset:1px}

@media (max-width:640px){
  .df-tile{min-width:88px}
  .df-row{flex-wrap:wrap}
  .df-row-note{flex-basis:100%;order:5}
}

/* ================= 家庭健康档案 + 侧栏对齐（v=189） =================
   侧栏账号区三按钮统一同宽对齐（.ip-set 同款）：个人 IP 设置 / 家庭安全体系 / 退出登录 */
.ip-defense{width:100%;text-align:center;padding:6px 10px;font-size:12.5px;margin-top:8px}
.me-out{margin-top:8px}
body.layout-center .ip-defense{margin-top:0;width:auto;padding:5px 10px;font-size:12px}

/* 家庭健康档案弹窗：成员 chips 一排，点谁看谁；「＋ 添加成员」为虚线加号 */
.hx-chips{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
.hx-chip{font-size:12.5px;padding:5px 12px;border-radius:999px;border:1px solid var(--line,#e5e7e5);background:var(--card,#fff);color:var(--ink);cursor:pointer;line-height:1.3}
.hx-chip:hover{border-color:var(--teal,#0f766e);color:var(--teal,#0f766e)}
.hx-chip.on{background:var(--teal-soft,#e9f4f2);border-color:var(--teal,#0f766e);color:var(--teal,#0f766e);font-weight:600}
.hx-chip-add{border-style:dashed;color:var(--muted,#8a9490)}
.hx-chip-add:hover{color:var(--teal,#0f766e);border-color:var(--teal,#0f766e)}
.hx-chip-add:disabled{opacity:.5;cursor:default}

/* ================= 名片个性化：主题色 + 内容开关（v=190） ================= */
.ip-cfg-t{font-size:12px;font-weight:700;color:var(--ink);margin:12px 0 6px}
.ip-cfg-t .ip-cfg-sub{font-weight:400;color:var(--muted);margin-left:6px}
.ip-colors{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ip-csw{display:inline-flex;width:26px;height:26px;border-radius:50%;background:var(--sw,#eee);border:2px solid #fff;box-shadow:0 0 0 1px var(--line,#e5e7e5);cursor:pointer;padding:0}
.ip-csw:hover{box-shadow:0 0 0 2px var(--teal,#0f766e)}
.ip-csw.on{box-shadow:0 0 0 2px var(--teal,#0f766e)}
.ip-csw-custom{position:relative;overflow:hidden;background:conic-gradient(#e5484d,#e0a52f,#3ba55d,#3b82f6,#8b5cf6,#e5484d)}
.ip-csw-custom input{position:absolute;inset:-6px;opacity:0;cursor:pointer;width:40px;height:40px}
.ip-shows{display:flex;flex-wrap:wrap;gap:6px 14px}
.ip-sh{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink);cursor:pointer}
.ip-sh input{accent-color:var(--teal,#0f766e)}

/* 健康档案·趋势区单条指标点 明细/改删（v=222） */
.hx-t-detail{margin-left:8px;font-size:11.5px;color:var(--teal,#0f766e);background:#eef7f5;border:1px solid var(--teal-line,#cfe9e3);border-radius:7px;padding:2px 9px;cursor:pointer}
.hx-mlist{margin-top:8px;border:1px solid var(--line,#e5e7eb);border-radius:9px;padding:6px 8px;background:#fafcfc}
.hx-m-row{display:flex;align-items:center;gap:8px;padding:3px 2px;border-bottom:1px dashed #eef1f2}
.hx-m-row:last-child{border-bottom:0}
.hx-m-d{font-size:11.5px;color:var(--muted,#6b7785);min-width:74px;flex:0 0 auto}
.hx-m-v{font-weight:600;color:var(--ink,#243038)}
.hx-m-v.hx-f-high{color:#d23b3b}
.hx-m-v.hx-f-low{color:#2f7dd1}
.hx-m-v.hx-f-border{color:#c9892f}
.hx-m-tag{font-size:10.5px;padding:1px 6px;border-radius:999px;flex:0 0 auto}
.hx-m-manual{background:#eef7f5;color:#0f766e}
.hx-m-imp{background:#f1f3f4;color:#6b7785}
.hx-m-btn{font-size:11px;padding:1px 8px;border-radius:6px;border:1px solid var(--line,#e5e7eb);background:#fff;color:var(--ink,#243038);cursor:pointer}
.hx-m-btn:hover{background:#f4f7f7}
.hx-m-del{color:#d23b3b;border-color:#f0caca}
.hx-m-edate,.hx-m-eval{font-size:12px;padding:2px 6px;border:1px solid var(--line,#e5e7eb);border-radius:6px}
.hx-m-edate{width:128px}
.hx-m-eval{width:84px}
.hx-m-eflag{font-size:12px;padding:2px 4px;border:1px solid var(--line,#e5e7eb);border-radius:6px}

/* ===== 培训演示模式：顶栏开关 & 横幅（仅团队管理员/超管可见） ===== */
.demo-switch-wrap{margin-left:auto;flex:0 0 auto;display:flex;align-items:center}
.demo-switch-wrap + .demo-switch-wrap{margin-left:10px}
.demo-switch{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none}
.demo-switch input{position:absolute;opacity:0;width:0;height:0}
.ds-track{position:relative;width:38px;height:20px;border-radius:999px;background:#d7dde1;transition:background .18s ease;flex:0 0 auto}
.ds-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.22);transition:left .18s ease}
.demo-switch input:checked + .ds-track{background:var(--teal,#0f766e)}
.demo-switch input:checked + .ds-track .ds-knob{left:20px}
.ds-label{font-size:12.5px;color:var(--muted,#6b7785);white-space:nowrap}
.demo-switch input:checked ~ .ds-label{color:var(--teal,#0f766e);font-weight:600}
.demo-banner{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff7e6;border-bottom:1px solid #f3dca0;color:#8a5a00;font-size:12.5px}
.demo-banner .db-ico{font-size:14px}
.demo-banner .db-txt{flex:1}
.demo-banner .db-exit{margin-left:auto;flex:0 0 auto;border:1px solid #e0b863;background:#fff;color:#8a5a00;border-radius:7px;padding:3px 12px;font-size:12px;cursor:pointer}
.demo-banner .db-exit:hover{background:#fdeccb}

/* ===== 家庭绑定（households） ===== */
.crm-house-panel{padding:14px 16px;margin-top:14px}
.crm-house-panel .crm-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.crm-house-panel .crm-panel-head h2{font-size:15px;margin:0;font-weight:700}
.house-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.house-card{border:1px solid var(--border,#e8ecf0);border-radius:12px;padding:12px 13px;background:#fff;display:flex;flex-direction:column;gap:8px}
.house-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.house-name{font-size:14.5px;font-weight:700}
.house-meta{font-size:11.5px;color:var(--muted,#6b7785);white-space:nowrap}
.house-stats{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted,#6b7785)}
.house-stats b{color:var(--ink,#1f2a30);font-weight:700;margin-left:3px}
.house-stats .over{color:#c0392b}
.house-actions{display:flex;gap:8px;margin-top:2px}
.crm-chips-house{margin-top:10px}
.hfilter-chip{cursor:pointer}
.hfilter-chip.active{background:var(--teal,#0f766e);color:#fff;border-color:var(--teal,#0f766e)}
.hbadge{background:#eef7f5;color:#0f766e;border-color:#cfe9e4;font-size:11px;padding:1px 7px}
.hh-badge-collective{background:#eaf5ec;color:#2f6b3c;border:1px solid #cfe9d6}
.hh-collective{color:#2f6b3c;font-weight:600}
.hm-members{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.hm-member{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hm-member .ct-name{font-weight:600}
.hm-timeline{list-style:none;margin:6px 0 0;padding:0;max-height:260px;overflow:auto}
.hm-timeline li{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed #eef1f3;font-size:12.5px;flex-wrap:wrap}
.hm-timeline .tl-date{color:var(--muted,#6b7785);font-variant-numeric:tabular-nums;min-width:84px}
.hm-timeline .tl-kind{font-size:11px;padding:1px 7px;border-radius:999px}
.hm-timeline .tl-fu{background:#eef2f5;color:#41566b}
.hm-timeline .tl-deal{background:#eafaf1;color:#0a7a45}
.hm-timeline .tl-who{font-weight:600}
.hm-timeline .tl-text{color:var(--muted,#6b7785);flex:1;min-width:120px}
/* 家庭添加成员：可勾选客户列表 */
.pick-list{max-height:320px;overflow:auto;border:1px solid var(--line,#e6eaee);border-radius:10px;padding:6px;margin-top:4px}
.pick-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer}
.pick-row:hover{background:#f5f8fa}
.pick-row .ct-name{font-weight:600;flex:1}
.pick-row .pick-sel{width:16px;height:16px;flex:none}
/* 标签管理弹窗 */
.tag-mgr-btn{margin-left:8px}
.tag-manage-list{display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow:auto}
.tag-manage-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line,#e6eaee);border-radius:10px}
.tag-manage-row .tm-name{font-weight:600;min-width:84px}
.tag-manage-row .tm-count{color:var(--muted,#6b7785);font-size:12px;flex:1}
.tag-manage-row .tm-actions{display:flex;gap:6px;flex:none}

/* ============ 展业版 ============ */
.zhanve{padding:2px}
.zhanve-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:start}
@media(max-width:980px){.zhanve-grid{grid-template-columns:1fr}}

/* 播放器 */
.zy-player-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}
.zy-player-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}
.zy-player-title{font-weight:700;font-size:15px}
.zy-player-hint{font-size:12px;color:var(--muted)}
.zy-stage{flex:1;min-height:420px;max-height:62vh;overflow:auto;padding:22px;background:linear-gradient(180deg,#fbfdfd,#f4f8f8);display:flex;align-items:flex-start}
.zy-stage>*{margin:0 auto}
.zy-img-wrap{max-width:100%}
.zy-img{max-width:100%;border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.12)}
.zy-controls{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid var(--line);flex-wrap:wrap}
.zy-counter{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px;min-width:54px;text-align:center}
.zy-btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:9px;padding:7px 12px;font-size:13px;cursor:pointer;transition:.15s}
.zy-btn:hover{border-color:var(--teal);color:var(--teal)}
.zy-btn-ghost{background:transparent;color:var(--muted)}
.zy-btn.active{background:var(--teal-soft);border-color:var(--teal);color:var(--teal)}
.zy-notes{padding:12px 16px;border-top:1px dashed var(--line);background:var(--teal-soft);color:#33524d;font-size:13px;line-height:1.7}
.zy-player-card:fullscreen,.zy-player-card:-webkit-full-screen{flex:1;width:100vw;height:100vh;background:var(--card)}
.zy-player-card:fullscreen .zy-stage,.zy-player-card:-webkit-full-screen .zy-stage{max-height:none;min-height:0;flex:1;font-size:1.15em}

/* 幻灯片内容 */
.zy-slide{width:100%;max-width:680px;margin:0 auto;color:var(--ink);line-height:1.75}
.zy-h2{font-size:20px;margin:0 0 14px;color:var(--teal)}
.zy-lead{font-size:15px;margin:0 0 12px}
.zy-muted{color:var(--muted);font-size:13px}
.zy-list{margin:6px 0;padding-left:20px}
.zy-list li{margin:7px 0}
.zy-quote,.zy-note-inline{margin-top:14px;padding:10px 14px;border-left:3px solid var(--teal);background:var(--teal-soft);border-radius:0 8px 8px 0;font-size:13.5px;color:#33524d}
.zy-formula{margin:10px 0;padding:10px 14px;background:#fff;border:1px dashed var(--teal-line);border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;color:var(--teal)}
.zy-steps{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:8px 0}
.zy-step{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:13.5px}
.zy-step-no{width:24px;height:24px;flex:none;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}
.zy-three{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:8px 0}
.zy-three-card{border-radius:12px;padding:16px 12px;text-align:center;color:#fff}
.zy-three-pct{font-size:30px;font-weight:800;line-height:1}
.zy-three-name{margin-top:8px;font-weight:700;font-size:14px}
.zy-three-desc{margin-top:4px;font-size:12px;opacity:.92}
.zy-three-card.zy-c1{background:var(--teal)}
.zy-three-card.zy-c2{background:#1d4ed8}
.zy-three-card.zy-c3{background:#9a6a12}
.zy-cover{text-align:center;padding:18px 8px}
.zy-cover-kicker{font-size:13px;color:var(--muted);letter-spacing:.5px}
.zy-cover-title{font-size:46px;margin:8px 0 4px;color:var(--teal);font-weight:800}
.zy-cover-sub{font-size:16px;color:var(--ink);margin-bottom:18px}
.zy-cover-list{list-style:none;padding:0;margin:0 auto;max-width:420px;text-align:left;display:inline-block}
.zy-cover-list li{padding:8px 0 8px 26px;position:relative;font-size:14px;border-bottom:1px solid var(--line)}
.zy-cover-list li:before{content:"▸";position:absolute;left:4px;color:var(--teal)}
.zy-compliance .zy-warn{margin-top:10px}
.zy-call{margin-top:14px;padding:12px 14px;border-radius:10px;background:#eef6f4;color:#2f554f;font-size:14px;border:1px solid var(--teal-line)}

/* 商业模式卡片 + 测算器 */
.zy-model-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.zy-model-h{font-size:15px;margin:0 0 10px}
.zy-model-sum{text-align:right;font-size:14px;font-weight:700;margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.zy-model-sum b{color:var(--teal);font-size:16px;font-variant-numeric:tabular-nums}

/* v=350 讲解模式整幅展开：架构图需 ~900px，半栏会压扁（卡片重叠/文字竖排/横向滚动条） */
.zhanve-grid.zy-bizmode{grid-template-columns:1fr}
.zhanve-grid.zy-bizmode>.zy-model-card{display:none}
.zy-biz-picks{display:inline-flex;gap:6px;margin-left:6px}
.zy-biz-picks .zy-mtab{min-width:50px;padding:5px 10px}
.zy-biz-picks .zy-mtab b{font-size:15px}
/* 图在上、算在下：给图整幅宽度 */
.zy-biz-body.zy-biz-body-1col{grid-template-columns:1fr}
.zy-biz{overflow-x:hidden}
.zy-biz-arch{max-width:100%;overflow:hidden}
.zy-biz-arch .bct-wrap{max-width:100%}
.zy-biz-arch .bct-leglab{white-space:nowrap}
.zy-biz-arch .bct-m{justify-content:flex-start}

/* v=346 三笔钱：3 个按钮一行排布（窄屏也不换行），点选＝主显示区讲解，可多选叠加 */
.zy-biz-left{min-width:0}
.zy-biz-tree-demo{display:flex;flex-direction:column;gap:4px}
.zy-biz-treep{font-size:11px;color:var(--muted);margin:8px 0 0;line-height:1.6}
.zy-biz-arch .bct-src{margin-bottom:8px}
/* v=359-fix：BC1 放进根节点；左右部门与分数分列两侧。
   样式刻意保持**低调**（沿用原 .bct-bc1-h .legs 的观感：12.5px 灰字），不做成抢眼的大数字卡片。 */
.zy-biz-arch .bct-root .rm{font-size:12.5px;color:var(--muted)}
.bct-sides{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 12px}
.bct-side{text-align:center;line-height:1.5}
.bct-side .t{font-size:12.5px;color:#5c7b74}
.bct-side .v{font-size:12.5px;color:#5c7b74;font-variant-numeric:tabular-nums}
.bct-side .u{font-size:12.5px;color:#5c7b74}
.bct-side .v::before{content:"　"}
@media(max-width:520px){.bct-sides{gap:8px}}
.zy-biz-in{margin-left:auto;font-size:10.5px;color:var(--teal);background:var(--teal-soft);border-radius:999px;padding:0 7px}
.bct-pcard.drilled{border-color:var(--teal)}
.bct-pcard.bc{box-shadow:0 0 0 2px rgba(0,0,0,.06)}
.zy-biz-sub{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}
.zy-biz-sublab{font-size:10.5px;color:var(--muted);flex:none;width:100%}
/* v=353 腿位行：K 位 · 姓名 · CVP · 该成员自己的 20% · 下钻按钮 */
.zy-biz-slot{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:1px 5px;font-size:11px}
.zy-biz-slot.empty{color:#a8a29e;border-style:dashed;background:transparent}
.zy-biz-slot.open{border-color:var(--teal);background:var(--teal-soft)}
.zy-biz-slot-k{font-size:10px;color:var(--muted);flex:none;width:11px}
.zy-biz-slot-n{white-space:nowrap}
.zy-biz-slot-v{font-variant-numeric:tabular-nums;cursor:pointer;border-left:1px dashed var(--line);padding-left:4px;min-width:34px;text-align:right}
.zy-biz-slot-f{font-variant-numeric:tabular-nums;color:var(--teal);font-weight:700;border-left:1px dashed var(--line);padding-left:4px;min-width:30px;text-align:right}
.zy-biz-more{border:none;background:transparent;color:var(--teal);font-size:10.5px;cursor:pointer;padding:0 2px;font-family:inherit}
/* v=380：下级腿位由「紧凑小标签」改为与顶层 A/B/C/D 同款的卡片，四个横向并排 */
/* v=381：展开的下级**向两侧延伸出父部门方框**，不再挤在里面（用户截图反馈）。
   ① 有展开卡的一列由 JS 打上 .zy-open-a / .zy-open-b，整列加宽；
   ② .zy-biz-sub 用负外边距横向溢出卡片边框，并保留等量内边距，内容仍对齐；
   ③ 禁止竖排（nowrap），避免「空缺」被挤成两行竖字。 */
.bct-cards.zy-open-a{grid-template-columns:minmax(0,2.1fr) minmax(0,1fr)}
.bct-cards.zy-open-b{grid-template-columns:minmax(0,1fr) minmax(0,2.1fr)}
.bct-pcard .zy-biz-sub{display:block;margin:8px -14px -10px;padding:2px 14px 10px}
.bct-pcard .zy-biz-sublab{display:block;margin:0 0 6px;font-size:10.5px;color:var(--muted)}
.zy-biz-ncard .bct-ph,.zy-biz-ncard .bct-pcv,.zy-biz-ncard .mn,.zy-biz-ncard .mc,.zy-biz-ncard .mf,.zy-biz-ncard .go,.zy-biz-nempty{white-space:nowrap}
.zy-biz-ncards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.zy-biz-ncards.deep{gap:6px;margin-top:6px;padding-top:6px}
.zy-biz-ncard{background:#fff;border:1px solid #dfe7e5;border-radius:10px;padding:8px 6px;text-align:center;min-width:0}
.zy-biz-ncard.empty{background:transparent;border-style:dashed;border-color:var(--line)}
.zy-biz-ncard.drilled{border-color:var(--teal);box-shadow:0 0 0 2px var(--teal-soft) inset}
.zy-biz-ncard .bct-ph{justify-content:center;gap:4px}
.zy-biz-ncard .bct-pl{font-size:12px;color:var(--muted);font-weight:700}
.zy-biz-ncard .bct-pcv{font-size:12px;margin-top:2px}
.zy-biz-ncard .bct-m.active{border-top:1px dashed var(--line);margin-top:6px;padding-top:6px;cursor:pointer}
.zy-biz-ncard .bct-m .mn{display:block;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zy-biz-ncard .bct-m .mc{display:inline-block;margin-top:3px;font-size:12px;color:#3d4954;font-variant-numeric:tabular-nums;cursor:pointer}
.zy-biz-ncard .bct-m .mf{display:block;font-size:12px;color:var(--teal);font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}
.zy-biz-ncard .bct-m .go{display:block;margin-top:4px;font-size:11px;color:var(--teal);cursor:pointer}
.zy-biz-ncard .zy-biz-in{font-size:10px}
.zy-biz-nempty{font-size:12px;color:#a8a29e;padding:10px 0 6px}
@media (max-width:640px){
  .zy-biz-ncards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.zy-biz-slot-sub{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px;padding:4px 0 2px 10px;border-left:2px solid var(--teal-soft);margin:2px 0 2px 4px}
.bct-m .mf{font-variant-numeric:tabular-nums;color:var(--teal);font-weight:700;border-left:1px dashed var(--line);padding-left:6px;min-width:34px;text-align:right}
.zy-mtabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
/* v=357：三笔钱改成**实心按钮**——三种不同颜色，一眼可点，不再像只读卡片 */
.zy-mtab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  border:1px solid transparent;border-radius:10px;padding:9px 4px;cursor:pointer;font-family:inherit;
  transition:transform .12s,box-shadow .12s,filter .12s;min-width:0;color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.14)}
.zy-mtab b{font-size:18px;line-height:1.15;font-weight:800}
.zy-mtab span{font-size:11px;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.zy-mtab.zy-c1{background:linear-gradient(180deg,#12907f,var(--teal));border-color:#0b5c55}
.zy-mtab.zy-c2{background:linear-gradient(180deg,#2f6ae0,#1d4ed8);border-color:#1739a8}
.zy-mtab.zy-c3{background:linear-gradient(180deg,#b87515,#9a6a12);border-color:#7a530e}
.zy-mtab:hover{filter:brightness(1.07);transform:translateY(-1px);box-shadow:0 3px 8px rgba(0,0,0,.2)}
.zy-mtab:active{transform:translateY(0);box-shadow:0 1px 2px rgba(0,0,0,.16)}
/* v=357-fix：选中态原来用 `color:` + `currentColor` 取光环色，
   但 color 会被子元素继承 ⇒ 白色文字在选中后变成深色压在同色底上，几乎看不见。
   改为**每类各自写死光环色**，文字颜色不受影响。 */
.zy-mtab b,.zy-mtab span{color:#fff}
.zy-mtab.on{box-shadow:0 0 0 3px #fff,0 3px 10px rgba(0,0,0,.24);transform:translateY(-1px)}
.zy-mtab.zy-c1.on{box-shadow:0 0 0 3px #fff,0 0 0 5px #0f766e,0 3px 10px rgba(0,0,0,.24)}
.zy-mtab.zy-c2.on{box-shadow:0 0 0 3px #fff,0 0 0 5px #1d4ed8,0 3px 10px rgba(0,0,0,.24)}
.zy-mtab.zy-c3.on{box-shadow:0 0 0 3px #fff,0 0 0 5px #9a6a12,0 3px 10px rgba(0,0,0,.24)}
.zy-mtab:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media(max-width:400px){
  .zy-mtabs{gap:6px}
  .zy-mtab{padding:8px 2px;border-radius:9px}
  .zy-mtab b{font-size:16px}
  .zy-mtab span{font-size:10px}
}
.zy-mtabs-tip{font-size:11.5px;color:var(--muted);margin:8px 0 0;line-height:1.6}

/* v=346 商业模式讲解：覆盖主显示区 */
.zy-biz{flex:1;min-height:420px;max-height:62vh;overflow:auto;padding:12px;background:linear-gradient(180deg,#fbfdfd,#f4f8f8);display:flex;flex-direction:column}
.zy-player-card:fullscreen .zy-biz,.zy-player-card:-webkit-full-screen .zy-biz{max-height:none;min-height:0;flex:1}
.zy-biz-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:9px;border-bottom:1px dashed var(--line);margin-bottom:10px}
.zy-biz-title{font-weight:700;font-size:14px;color:var(--teal)}
.zy-biz-bcs{display:flex;gap:5px;margin-left:auto}
.zy-biz-bcs .zy-btn{padding:3px 9px;font-size:11.5px}
.zy-biz-bcs .zy-btn.on{background:var(--teal);border-color:var(--teal);color:#fff}
.zy-biz-body{display:grid;grid-template-columns:1.15fr .85fr;gap:12px;align-items:start;flex:1;min-height:0}
/* v=350：算式区在图下方整幅排布，每笔钱仍是一行 */
.zy-biz-body .zy-biz-calc{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:6px 10px;align-items:start}
.zy-biz-body .zy-biz-neu{grid-column:1/-1;margin-bottom:0}
.zy-biz-body .zy-biz-ctotal{grid-column:1/-1}
.zy-biz-body .zy-biz-talk{grid-column:1/-1}
@media(max-width:860px){.zy-biz-body{grid-template-columns:1fr}}
.zy-biz-center-note{margin-top:10px;padding:8px 11px;border-radius:8px;background:#eef6f4;border:1px solid var(--teal-line);color:#2f554f;font-size:12.5px;line-height:1.7}
.zy-biz-center-note b{color:var(--teal)}

/* 团队结构图 */
.zy-biz-root{display:flex;align-items:baseline;gap:8px;margin-bottom:9px}
.zy-biz-root-tag{display:inline-grid;place-items:center;width:34px;height:26px;border-radius:8px;background:var(--teal);color:#fff;font-weight:700;font-size:13px}
.zy-biz-root-sub{font-size:11.5px;color:var(--muted)}
.zy-biz-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px;border-radius:9px;margin-bottom:5px;border:1px solid transparent;transition:.15s}
.zy-biz-row.on{background:#fff;border-color:var(--teal-line)}
.zy-biz-rowlab{flex:none;width:30px;font-size:11px;color:var(--muted)}
.zy-node{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:2px 4px;transition:.15s}
.zy-node-tag{font-size:11px;color:var(--muted);flex:none;min-width:20px;text-align:center}
.zy-node-in{width:58px;border:none;border-left:1px dashed var(--line);padding:1px 3px;font-size:12.5px;text-align:right;font-variant-numeric:tabular-nums;background:transparent;color:var(--ink)}
.zy-node-in:focus{outline:none;background:var(--teal-soft);border-radius:4px}
.zy-node.bc{border-color:var(--teal);background:var(--teal-soft)}
.zy-node.bc .zy-node-in{font-weight:700;color:var(--teal)}

/* 佣金演算器：每笔钱一行，尽量挤进一行 */
.zy-biz-neu{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;margin-bottom:7px;background:#fff}
.zy-biz-neu.on{border-color:var(--teal);background:var(--teal-soft)}
.zy-biz-neu label{flex:1;font-size:12px;color:var(--muted)}
.zy-biz-neu input{width:74px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;font-size:13px;text-align:right;font-variant-numeric:tabular-nums}
.zy-biz-crow{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;margin-bottom:5px;background:#fafdfc;opacity:.5;transition:.15s}
.zy-biz-crow.on{opacity:1;background:#fff}
.zy-biz-crow.on.zy-c1{border-color:var(--teal)}
.zy-biz-crow.on.zy-c2{border-color:#1d4ed8}
.zy-biz-crow.on.zy-c3{border-color:#9a6a12}
.zy-biz-cname{flex:none;display:flex;align-items:baseline;gap:4px;font-size:11.5px;color:var(--muted);min-width:104px}
.zy-biz-cname b{font-size:14px}
.zy-biz-crow.zy-c1 .zy-biz-cname b{color:var(--teal)}
.zy-biz-crow.zy-c2 .zy-biz-cname b{color:#1d4ed8}
.zy-biz-crow.zy-c3 .zy-biz-cname b{color:#9a6a12}
.zy-biz-cf{flex:1;font-size:11.5px;color:var(--ink);font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zy-biz-cres{flex:none;font-size:12px;color:var(--muted)}
.zy-biz-cres b{font-size:15px;font-variant-numeric:tabular-nums}
.zy-biz-ctotal{text-align:right;font-size:13.5px;font-weight:700;padding:7px 4px 0;border-top:1px dashed var(--line);margin-top:4px}
.zy-biz-ctotal b{color:var(--teal);font-size:17px;font-variant-numeric:tabular-nums}
.zy-biz-talk{font-size:11.5px;color:var(--muted);line-height:1.7;margin:8px 0 0}
.zy-biz-talk span{display:block}
@media(max-width:520px){
  .zy-biz-cname{min-width:auto}
  .zy-biz-crow{flex-wrap:wrap}
  .zy-biz-cf{flex-basis:100%;order:3;white-space:normal}
}
.zy-warn{margin-top:6px;padding:10px 13px;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:8px;color:var(--warn-ink);font-size:12.5px;line-height:1.7}

/* 课件库（云端） */
.zy-lib{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:16px}
.zy-lib-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.zy-lib-title{font-weight:700;font-size:15px}
.zy-lib-sub{font-size:12px;color:var(--muted)}
.zy-lib-list{display:flex;flex-wrap:wrap;gap:8px}
.zy-chip{display:inline-flex;align-items:center;gap:6px;max-width:240px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;transition:.15s}
.zy-chip:hover{border-color:var(--teal)}
.zy-chip.active{border-color:var(--teal);background:var(--teal-soft);color:var(--teal);font-weight:600}
.zy-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zy-chip-shared{font-size:10.5px;background:var(--teal);color:#fff;border-radius:999px;padding:1px 7px;flex:none}
.zy-chip-gear{margin-left:2px;color:var(--muted);font-size:13px;flex:none}
.zy-chip-gear:hover{color:var(--teal)}
.zy-lib-actions{display:flex;gap:8px;margin-top:12px}

/* 管理弹窗 */
.zy-mask{position:fixed;inset:0;background:rgba(15,30,28,.45);display:flex;align-items:center;justify-content:center;z-index:60;padding:20px}
.zy-modal{background:var(--card);border:1px solid var(--line);border-radius:14px;width:min(760px,100%);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.zy-modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-weight:700;font-size:15px}
.zy-modal-x{border:none;background:transparent;font-size:22px;line-height:1;color:var(--muted);cursor:pointer}
.zy-modal-x:hover{color:var(--ink)}
.zy-modal-body{padding:16px 18px;overflow:auto}
.zy-m-readonly{font-size:13px;color:var(--muted);line-height:1.7}
.zy-m-meta{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;padding-bottom:14px;border-bottom:1px dashed var(--line)}
.zy-m-field{display:flex;flex-direction:column;gap:4px;flex:1;min-width:160px}
.zy-m-field-sm{flex:0 0 90px}
.zy-m-field label{font-size:12px;color:var(--muted)}
.zy-m-field input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px}
.zy-m-field input:focus{outline:none;border-color:var(--teal)}
.zy-m-shared{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);align-self:center}
.zy-m-upload{margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fafdfc}
.zy-m-upload-hint{font-size:12.5px;color:var(--muted);margin-bottom:8px}
.zy-m-upload-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.zy-m-upload-row input[type=file]{font-size:12px;max-width:220px}
.zy-m-prog{font-size:12px;color:var(--teal)}
.zy-m-slides{display:flex;flex-direction:column;gap:10px}
.zy-m-empty{font-size:13px;color:var(--muted)}
.zy-m-slide{display:grid;grid-template-columns:28px 120px 1fr auto;gap:10px;align-items:start;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff}
.zy-m-idx{font-weight:700;color:var(--muted);text-align:center;padding-top:6px}
.zy-m-thumb{width:120px;height:68px;object-fit:contain;background:#f1f5f5;border-radius:6px}
.zy-m-note{width:100%;min-height:64px;resize:vertical;padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:13px;line-height:1.5}
.zy-m-note:focus{outline:none;border-color:var(--teal)}
.zy-m-ops{display:flex;flex-direction:column;gap:6px}
.zy-btn-danger{background:#fff;color:#c0392b;border:1px solid #e7b7b0}
.zy-btn-danger:hover{background:#fdecea}
.zy-m-ops .zy-btn:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:600px){.zy-m-slide{grid-template-columns:1fr}.zy-m-thumb{max-width:160px}}

/* 文字稿（讲稿）区 */
.zy-m-script{margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fafdfc}
.zy-m-script-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.zy-m-script-title{font-weight:700;font-size:14px;color:var(--ink)}
.zy-m-script-sub{font-size:12px;color:var(--muted)}
.zy-m-script-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.zy-m-script-row input[type=file]{font-size:12px;max-width:240px}
.zy-m-script-area{width:100%;min-height:140px;resize:vertical;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:13.5px;line-height:1.6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.zy-m-script-area:focus{outline:none;border-color:var(--teal)}
.zy-m-script-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.zy-btn-primary{background:var(--teal);color:#fff;border:1px solid var(--teal)}
.zy-btn-primary:hover{filter:brightness(.94);color:#fff}

/* 文字稿学习弹窗 */
.zy-script-modal{width:min(720px,100%)}
.zy-script-body{padding:16px 20px;font-size:14.5px;line-height:1.8;color:var(--ink)}
.zy-script-body .zy-script-h{font-size:19px;margin:14px 0 8px;color:var(--teal);border-left:4px solid var(--teal);padding-left:10px}
.zy-script-body .zy-script-h:first-child{margin-top:0}
.zy-script-body .zy-script-p{margin:0 0 12px}
.zy-script-body .zy-script-ul{margin:0 0 12px;padding-left:22px}
.zy-script-body .zy-script-ul li{margin:6px 0}
