  /* ============================================================
     设计令牌（shadcn/ui 设计语言 · zinc 中性色 + 品牌绿主色）
     ============================================================ */
  :root{
    /* 中性色（zinc） */
    --background:#f7f9f8;        /* 页面底 */
    --foreground:#142019;        /* 主文字 */
    --card:#ffffff;              /* 卡片 */
    --muted:#f0f4f1;             /* 弱底色 */
    --muted-fg:#526158;          /* 次级文字 */
    --subtle-fg:#6b7a70;         /* 三级文字 */
    --border:#dfe7e2;            /* 常规边框 */
    --border-strong:#c9d5ce;     /* 控件边框 */
    /* 主色（品牌绿） */
    --green:#16a34a;
    --green-hover:#15803d;
    --green-soft:#f0fdf4;
    --green-soft-border:#bbf7d0;
    --green-fg:#15803d;
    --blue:#2563eb;
    --amber:#b45309;
    --red:#dc2626;
    /* 形状与阴影 */
    --radius:12px;
    --radius-sm:8px;
    --shadow-sm:0 1px 2px rgba(20,32,25,.05);
    --shadow-md:0 2px 4px rgba(20,32,25,.04),0 6px 16px rgba(20,32,25,.05);
    --shadow-lg:0 18px 45px rgba(20,32,25,.16),0 4px 12px rgba(20,32,25,.08);
  }
  *{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit}
  html{-webkit-text-size-adjust:100%}
  body{
    font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
    background:#e9e9ec;
    color:var(--foreground);
    font-size:14px;
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
    font-variant-numeric:tabular-nums;
  }
  /* shadcn 式焦点环 */
  button:focus-visible,a:focus-visible,textarea:focus-visible,input:focus-visible,select:focus-visible{
    outline:2px solid var(--green);outline-offset:2px;
  }
  input:focus-visible{outline:none}

  .app{
    max-width:414px;
    margin:0 auto;
    min-height:100vh;
    background:var(--background);
    position:relative;
    border-left:1px solid var(--border);
    border-right:1px solid var(--border);
  }

  /* ===== 顶栏（白底 + 细分割线，替代渐变横幅） ===== */
  .topbar{
    position:relative;
    background:var(--card);
    border-bottom:1px solid var(--border);
    padding:13px 14px 14px;
    color:var(--foreground);
  }
  .brand-row{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}
  .brand{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;letter-spacing:-.2px;color:var(--foreground)}
  .brand-logo{
    width:28px;height:28px;border-radius:var(--radius-sm);
    padding:2px;background:#fff;color:var(--foreground);
    border:1px solid var(--border);
    display:flex;align-items:center;justify-content:center;
    box-shadow:var(--shadow-sm);
    overflow:hidden;
  }
  .brand-logo img{display:block;width:100%;height:100%;object-fit:contain}
  .conn-pill{
    font-size:11px;background:var(--muted);color:var(--muted-fg);
    padding:3px 10px;border-radius:999px;font-weight:500;
    border:1px solid var(--border);white-space:nowrap;
  }
  .conn-pill.live{background:var(--green-soft);color:var(--green-fg);border-color:var(--green-soft-border);font-weight:600}
  .conn-pill.demo{background:#fffbeb;color:var(--amber);border-color:#fde68a}
  .switcher{
    display:flex;gap:8px;margin-top:12px;position:relative;z-index:1;
    overflow-x:auto;padding-bottom:2px;scrollbar-width:none;
  }
  .switcher::-webkit-scrollbar{display:none}
  .sw-chip{
    display:flex;align-items:center;gap:6px;flex-shrink:0;
    padding:4px 13px 4px 5px;border-radius:999px;
    background:var(--card);color:var(--muted-fg);font-size:12.5px;
    border:1px solid var(--border);white-space:nowrap;transition:.15s;
  }
  .sw-chip .sw-ava{
    width:24px;height:24px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-size:11px;font-weight:600;
  }
  .sw-chip.active{
    background:var(--foreground);color:#fff;font-weight:500;
    border-color:var(--foreground);
  }

  /* ===== 客户信息卡片 ===== */
  .profile-card{
    position:relative;z-index:2;
    margin:12px 12px 0;
    background:var(--card);
    border:1px solid var(--border);
    border-radius:var(--radius);
    padding:14px;
    box-shadow:var(--shadow-sm);
  }
  .pc-top{display:flex;gap:12px}
  .pc-avatar{
    width:52px;height:52px;border-radius:var(--radius);flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    font-size:20px;font-weight:600;
  }
  .pc-main{flex:1;min-width:0}
  .pc-name-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .pc-name{font-size:17px;font-weight:700;letter-spacing:-.2px}
  .pc-type{font-size:11.5px;color:var(--muted-fg);background:var(--muted);padding:2px 8px;border-radius:999px;border:1px solid var(--border)}

  /* 软色徽章（shadcn badge 风格） */
  .lc{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}
  .lc.potential{background:var(--muted);color:var(--muted-fg);border-color:var(--border)}
  .lc.trial{background:#eff6ff;color:#1d4ed8;border-color:#dbeafe}
  .lc.stable{background:var(--green-soft);color:var(--green-fg);border-color:var(--green-soft-border)}
  .lc.sleep{background:#fffbeb;color:var(--amber);border-color:#fde68a}
  .lc.lost{background:#fef2f2;color:#b91c1c;border-color:#fecaca}
  .intent{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}
  .intent.high{background:var(--green-soft);color:var(--green-fg);border-color:var(--green-soft-border)}
  .intent.mid{background:#fffbeb;color:var(--amber);border-color:#fde68a}
  .intent.low{background:var(--muted);color:var(--muted-fg);border-color:var(--border)}
  .pc-meta{font-size:12px;color:var(--subtle-fg);margin-top:4px}
  .pc-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
  .tag-chip{font-size:11px;color:var(--green-fg);background:var(--green-soft);border:1px solid var(--green-soft-border);padding:2px 8px;border-radius:6px}
  .tag-chip.more{background:var(--muted);color:var(--muted-fg);border-color:var(--border);cursor:pointer}

  .stats3{display:flex;margin-top:14px;padding-top:13px;border-top:1px solid var(--border)}
  .stats3 .st{flex:1;text-align:center}
  .stats3 .st + .st{border-left:1px solid var(--muted)}
  .stats3 .st b{display:block;font-size:16px;color:var(--green-fg);line-height:1.3;font-weight:700}
  .stats3 .st b i{font-style:normal;font-size:10px;font-weight:400;color:var(--subtle-fg);margin-left:2px}
  .stats3 .st span{font-size:11px;color:var(--subtle-fg)}

  .pc-follower{
    display:flex;align-items:center;justify-content:space-between;
    margin-top:12px;background:var(--muted);border-radius:var(--radius-sm);padding:9px 11px;
  }
  .fl-left{display:flex;align-items:center;gap:9px;min-width:0}
  .fl-ava{
    width:34px;height:34px;border-radius:50%;flex-shrink:0;
    background:var(--green);color:#fff;
    display:flex;align-items:center;justify-content:center;
    font-size:13px;font-weight:600;
  }
  .fl-label{font-size:10px;color:var(--subtle-fg)}
  .fl-name{font-size:13px;font-weight:600;color:var(--foreground)}
  .fl-right{text-align:right;flex-shrink:0;margin-left:8px}
  .fl-date{font-size:13px;font-weight:600;color:var(--foreground)}
  .sync-badge{font-size:11px;padding:2px 9px;border-radius:999px;font-weight:500;white-space:nowrap;border:1px solid transparent}
  .sync-badge.ok{background:var(--green-soft);color:var(--green-fg);border-color:var(--green-soft-border)}
  .sync-badge.wait{background:#fffbeb;color:var(--amber);border-color:#fde68a}
  .sync-badge.warn{background:#fef2f2;color:#b91c1c;border-color:#fecaca}

  /* ===== 选项卡（shadcn tabs 胶囊式） ===== */
  .tabs{
    position:sticky;top:0;z-index:20;
    background:var(--background);
    padding:13px 12px 9px;
    box-shadow:0 1px 0 var(--border);
  }
  .seg{display:flex;background:var(--muted);border-radius:var(--radius-sm);padding:3px;gap:3px}
  .tab{
    flex:1;padding:7px 0;border-radius:6px;
    font-size:13px;color:var(--muted-fg);font-weight:500;transition:.15s;
  }
  .tab.active{background:var(--card);color:var(--foreground);font-weight:600;box-shadow:var(--shadow-sm)}

  .panel{display:none;padding:0 12px;animation:fadeIn .2s ease}
  .panel.show{display:block}
  @keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

  .card{
    background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
    padding:14px;margin-bottom:11px;box-shadow:var(--shadow-sm);
  }
  .card-title{
    font-size:13.5px;font-weight:600;color:var(--foreground);margin-bottom:11px;
    display:flex;align-items:center;justify-content:space-between;
  }

  /* ===== 时间轴 ===== */
  .next-banner{
    display:flex;gap:10px;align-items:center;
    background:var(--green-soft);
    border:1px solid var(--green-soft-border);border-radius:var(--radius);
    padding:10px 12px;margin-bottom:11px;
  }
  .nb-icon{
    width:30px;height:30px;border-radius:var(--radius-sm);background:var(--green);color:#fff;
    flex-shrink:0;display:flex;align-items:center;justify-content:center;
  }
  .nb-icon svg{width:15px;height:15px}
  .nb-title{font-size:10.5px;color:#65a97f}
  .nb-text{font-size:12.5px;font-weight:600;color:#14532d}
  .nb-main{flex:1;min-width:0}
  .nb-edit{
    width:30px;height:30px;border-radius:var(--radius-sm);flex-shrink:0;
    background:transparent;color:var(--green-fg);border:1px solid var(--green-soft-border);
    display:flex;align-items:center;justify-content:center;
  }
  .nb-edit svg{width:13px;height:13px}
  .next-banner.overdue{background:#fef2f2;border-color:#fecaca}
  .next-banner.overdue .nb-icon{background:var(--red)}
  .next-banner.overdue .nb-title{color:#dc9a94}
  .next-banner.overdue .nb-text{color:#7f1d1d}

  .filter-row{
    display:flex;gap:7px;overflow-x:auto;margin-bottom:12px;
    scrollbar-width:none;
  }
  .filter-row::-webkit-scrollbar{display:none}
  .f-chip{
    flex-shrink:0;font-size:12px;color:var(--muted-fg);
    background:var(--card);border:1px solid var(--border);
    padding:4px 12px;border-radius:999px;transition:.15s;font-weight:500;
  }
  .f-chip:hover{border-color:var(--border-strong);color:var(--foreground)}
  .f-chip.active{background:var(--foreground);border-color:var(--foreground);color:#fff}
  .f-chip .cnt{opacity:.55;font-size:11px;margin-left:2px}

  .tl-hint{font-size:11px;color:var(--subtle-fg);margin:-3px 0 10px}
  .tl-item{display:flex;padding-bottom:12px}
  .tl-rail{width:30px;flex-shrink:0;display:flex;flex-direction:column;align-items:center}
  .tl-rail::before{content:"";flex:1;width:2px;background:var(--border);margin:3px 0}
  .tl-item:last-child .tl-rail::before{background:transparent}
  .tl-dot{
    width:26px;height:26px;border-radius:50%;color:#fff;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 0 0 3px var(--background);
  }
  .tl-dot svg{width:13px;height:13px}
  .tl-card{
    flex:1;min-width:0;margin-left:6px;
    background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
    padding:10px 12px;box-shadow:var(--shadow-sm);
    cursor:pointer;transition:.15s;
  }
  .tl-card:hover{border-color:var(--border-strong)}
  .tl-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
  .tl-date{font-size:13px;font-weight:600;color:var(--foreground)}
  .tl-pill{font-size:10.5px;padding:2px 8px;border-radius:999px;font-weight:500;white-space:nowrap;border:1px solid transparent}
  .tl-pill svg{width:11px;height:11px;vertical-align:-1.5px;margin-right:3px}
  .tl-person{margin-left:auto;font-size:11px;color:var(--subtle-fg);display:flex;align-items:center;gap:3px;white-space:nowrap}
  .tl-person svg{width:11px;height:11px}
  .tl-summary{font-size:13px;color:#3f3f46;margin-top:6px;line-height:1.6}
  .tl-detail{
    display:none;margin-top:9px;padding-top:9px;
    border-top:1px solid var(--border);
    font-size:12px;color:var(--muted-fg);line-height:1.75;
  }
  .tl-item.open .tl-detail{display:block;animation:fadeIn .2s}
  .tl-note{
    margin-top:8px;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius-sm);
    padding:7px 10px;font-size:12px;color:var(--amber);line-height:1.6;
  }
  .tl-note b{font-weight:600;margin-right:5px}
  .tl-toggle{
    margin-top:8px;font-size:11.5px;color:var(--green-fg);
    display:inline-flex;align-items:center;gap:3px;font-weight:500;
  }
  .tl-toggle svg{width:12px;height:12px;transition:transform .2s}
  .tl-item.open .tl-toggle svg{transform:rotate(180deg)}
  .tl-static{cursor:default}
  .tl-static:hover{border-color:var(--border)}
  .tl-title{font-size:13px;font-weight:600;color:var(--foreground);margin-top:6px;line-height:1.55}
  .tl-sub{font-size:12px;color:var(--subtle-fg);margin-top:3px;line-height:1.6}
  .tl-empty{text-align:center;color:var(--subtle-fg);font-size:13px;padding:30px 0 18px;background:var(--card);border:1px dashed var(--border-strong);border-radius:var(--radius)}

  /* ===== 档案 KV ===== */
  .kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--muted);font-size:13px}
  .kv:last-child{border-bottom:none}
  .kv > span{color:var(--subtle-fg);flex-shrink:0}
  .kv > b{
    font-weight:500;color:var(--foreground);text-align:right;min-width:0;
    display:flex;align-items:center;justify-content:flex-end;
    gap:4px;flex-wrap:wrap;line-height:1.5;
  }
  .badge{font-size:11px;padding:2px 8px;border-radius:999px;font-weight:500;white-space:nowrap;border:1px solid transparent}
  .b-green{background:var(--green-soft);color:var(--green-fg);border-color:var(--green-soft-border)}
  .b-blue{background:#eff6ff;color:#1d4ed8;border-color:#dbeafe}
  .b-gray{background:var(--muted);color:var(--muted-fg);border-color:var(--border)}
  .b-orange{background:#fffbeb;color:var(--amber);border-color:#fde68a}
  .b-red{background:#fef2f2;color:#b91c1c;border-color:#fecaca}

  /* 按钮（shadcn button：实底主按钮 / 幽灵次按钮） */
  .mini-btn{
    display:inline-flex;align-items:center;gap:4px;
    font-size:12px;color:var(--green-fg);background:var(--green-soft);
    border:1px solid var(--green-soft-border);
    border-radius:var(--radius-sm);padding:4px 10px;font-weight:500;transition:.15s;
  }
  .mini-btn:hover{background:#dcfce7}
  .mini-btn svg{width:12px;height:12px}
  .mini-btn.solid{background:var(--green);border-color:var(--green);color:#fff;padding:0 14px;height:40px;box-shadow:var(--shadow-sm)}
  .mini-btn.solid:hover{background:var(--green-hover)}
  .mini-btn:active{transform:scale(.97)}

  .tag-cloud{display:flex;flex-wrap:wrap;gap:8px}
  .tc{
    display:inline-flex;align-items:center;gap:5px;
    font-size:12px;color:var(--green-fg);background:var(--green-soft);border:1px solid var(--green-soft-border);
    padding:4px 6px 4px 10px;border-radius:var(--radius-sm);line-height:1.4;font-weight:500;
  }
  .tc-x{
    width:16px;height:16px;border-radius:50%;flex-shrink:0;
    background:rgba(22,163,74,.12);color:var(--green-fg);
    display:flex;align-items:center;justify-content:center;
  }
  .tc-x svg{width:8px;height:8px}
  .tc-x:active{background:rgba(22,163,74,.3)}
  .tc-add{
    border:1px dashed var(--border-strong);color:var(--muted-fg);background:var(--card);
    padding:4px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;
    display:inline-flex;align-items:center;gap:3px;
  }
  .tc-add svg{width:12px;height:12px}

  /* 标签分组行 */
  .tg-row{padding:9px 0;border-bottom:1px solid var(--muted)}
  .tg-row:last-child{border-bottom:none}
  .tg-head{display:flex;align-items:center;gap:6px;margin-bottom:7px}
  .tg-name{font-size:12.5px;font-weight:600;color:#3f3f46}
  .tg-method{font-size:10px;color:var(--muted-fg);background:var(--muted);border:1px solid var(--border);padding:1px 7px;border-radius:999px}
  .tg-chips{display:flex;flex-wrap:wrap;gap:6px}

  /* 同步日志 */
  .log-item{display:flex;gap:9px;padding:9px 0;border-bottom:1px solid var(--muted)}
  .log-item:last-child{border-bottom:none}
  .log-dot{
    width:24px;height:24px;border-radius:var(--radius-sm);flex-shrink:0;margin-top:1px;
    display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;
  }
  .log-dot.add{background:var(--green-soft);color:var(--green-fg)}
  .log-dot.rm{background:#fef2f2;color:#b91c1c}
  .log-main{flex:1;min-width:0}
  .log-line1{font-size:12.5px;color:var(--foreground);line-height:1.5}
  .log-line1 b{font-weight:600}
  .log-line2{font-size:11px;color:var(--subtle-fg);margin-top:2px;line-height:1.5}

  /* 触达计划卡片 */
  .cp-card{margin-bottom:11px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow-sm)}
  .cp-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
  .cp-name{font-size:13.5px;font-weight:600;color:var(--foreground);flex:1;min-width:100%;line-height:1.4}
  .cp-meta{font-size:11.5px;color:var(--subtle-fg);margin-top:5px;line-height:1.6}
  .cp-content{
    margin-top:8px;background:var(--muted);border-radius:var(--radius-sm);padding:8px 10px;
    font-size:12px;color:var(--muted-fg);line-height:1.6;
  }
  .cp-stats{display:flex;margin-top:9px;padding-top:9px;border-top:1px solid var(--border)}
  .cp-stats .st{flex:1;text-align:center}
  .cp-stats .st b{display:block;font-size:14px;color:var(--green-fg);line-height:1.3;font-weight:700}
  .cp-stats .st span{font-size:10.5px;color:var(--subtle-fg)}

  .empty-box{text-align:center;padding:32px 12px}
  .eb-icon{
    width:52px;height:52px;border-radius:var(--radius);background:var(--muted);color:var(--subtle-fg);
    display:flex;align-items:center;justify-content:center;margin:0 auto 12px;
  }
  .eb-icon svg{width:24px;height:24px}
  .empty-box .t1{font-size:14px;font-weight:600;color:var(--muted-fg)}
  .empty-box .t2{font-size:12px;color:var(--subtle-fg);margin-top:5px;line-height:1.6}

  .foot-note{
    text-align:center;color:var(--subtle-fg);font-size:11px;
    padding:14px 16px 96px;
  }

  /* ===== 悬浮按钮 ===== */
  .fab{
    position:fixed;
    right:max(14px,calc(50vw - 193px));
    bottom:calc(22px + env(safe-area-inset-bottom));
    z-index:40;
    display:flex;align-items:center;gap:6px;
    background:var(--green);color:#fff;
    font-size:13.5px;font-weight:600;
    padding:0 18px;height:44px;border-radius:999px;
    box-shadow:0 6px 16px rgba(22,163,74,.35);
    transition:transform .15s,background .15s;
  }
  .fab:hover{background:var(--green-hover)}
  .fab:active{transform:scale(.96)}
  .fab svg{width:15px;height:15px}

  /* ===== 底部弹层 ===== */
  .mask{
    position:fixed;inset:0;background:rgba(24,24,27,.45);
    backdrop-filter:blur(2px);
    opacity:0;pointer-events:none;transition:opacity .2s;
    z-index:50;display:flex;align-items:flex-end;justify-content:center;
  }
  .mask.show{opacity:1;pointer-events:auto}
  .sheet{
    width:100%;max-width:414px;background:var(--card);
    border-radius:16px 16px 0 0;
    border-top:1px solid var(--border);
    transform:translateY(100%);
    transition:transform .28s cubic-bezier(.32,.72,.35,1);
    max-height:84vh;display:flex;flex-direction:column;
    padding-bottom:env(safe-area-inset-bottom);
    box-shadow:var(--shadow-lg);
  }
  .mask.show .sheet{transform:none}
  .sheet-grip{width:38px;height:4px;background:var(--border-strong);border-radius:2px;margin:10px auto 2px;flex-shrink:0}
  .sheet-head{display:flex;align-items:center;justify-content:space-between;padding:6px 16px 10px;flex-shrink:0}
  .sheet-title{font-size:16px;font-weight:600;letter-spacing:-.2px}
  .sheet-sub{font-size:11px;color:var(--subtle-fg);margin-top:2px}
  .sheet-close{
    width:30px;height:30px;border-radius:var(--radius-sm);background:var(--muted);color:var(--muted-fg);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:.15s;
  }
  .sheet-close:hover{background:#e4e4e7;color:var(--foreground)}
  .sheet-close svg{width:14px;height:14px}
  .sheet-body{padding:0 16px 12px;overflow-y:auto}
  .field-label{font-size:12px;color:var(--muted-fg);margin:13px 0 8px;font-weight:500}
  .field-label small{color:var(--subtle-fg);font-weight:400;margin-left:4px}
  .m-picker{display:flex;gap:8px;flex-wrap:wrap}
  textarea{
    width:100%;min-height:88px;
    border:1px solid var(--border-strong);border-radius:var(--radius-sm);
    padding:10px 12px;font-size:13px;font-family:inherit;
    resize:none;outline:none;transition:border-color .15s,box-shadow .15s;line-height:1.6;
    background:var(--card);color:var(--foreground);
  }
  textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(22,163,74,.12)}
  textarea::placeholder{color:var(--subtle-fg)}
  .form-input{
    width:100%;height:42px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);
    padding:0 12px;font-size:14px;font-family:inherit;outline:none;background:var(--card);color:var(--foreground);
    transition:border-color .15s,box-shadow .15s;
  }
  .form-input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(22,163,74,.12)}
  .form-input::placeholder{color:var(--subtle-fg)}
  .date-input{
    width:100%;height:42px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);
    padding:0 12px;font-size:14px;font-family:inherit;outline:none;background:var(--card);color:var(--foreground);
    transition:border-color .15s,box-shadow .15s;
  }
  .date-input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(22,163,74,.12)}
  .sheet-foot{
    display:flex;gap:10px;padding:10px 16px 14px;
    border-top:1px solid var(--border);flex-shrink:0;
  }
  .btn{flex:1;height:44px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;transition:.15s}
  .btn.ghost{background:var(--muted);color:var(--foreground)}
  .btn.ghost:hover{background:#e4e4e7}
  .btn.primary{background:var(--green);color:#fff;box-shadow:var(--shadow-sm)}
  .btn.primary:hover{background:var(--green-hover)}
  .btn:active{transform:scale(.98)}
  .btn:disabled{cursor:not-allowed;opacity:.48;box-shadow:none}

  /* ===== 批量打标工作台入口 ===== */
  .batch-entry{
    display:flex;align-items:center;gap:4px;
    font-size:11.5px;color:var(--muted-fg);font-weight:500;
    background:var(--muted);border:1px solid var(--border);
    padding:4px 11px;border-radius:999px;transition:.15s;
  }
  .batch-entry:hover{color:var(--foreground);border-color:var(--border-strong)}
  .batch-entry svg{width:11px;height:11px}
  .batch-entry:active{transform:scale(.96)}
  .brand-right{display:flex;align-items:center;gap:7px;position:relative;z-index:1}

  .batch-customer-list{
    max-height:230px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-sm);
    margin-top:8px;background:var(--card);-webkit-overflow-scrolling:touch;
  }
  .bc-item{
    display:flex;align-items:center;gap:9px;padding:9px 11px;
    border-bottom:1px solid var(--muted);cursor:pointer;transition:background .12s;
  }
  .bc-item:last-child{border-bottom:none}
  .bc-item:hover{background:var(--muted)}
  .bc-check{
    width:18px;height:18px;border-radius:5px;border:1.5px solid var(--border-strong);flex-shrink:0;
    display:flex;align-items:center;justify-content:center;color:#fff;transition:.12s;background:var(--card);
  }
  .bc-item.sel .bc-check{background:var(--green);border-color:var(--green)}
  .bc-check svg{width:11px;height:11px;display:none}
  .bc-item.sel .bc-check svg{display:block}
  .bc-ava{
    width:26px;height:26px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
  }
  .bc-info{flex:1;min-width:0}
  .bc-name{font-size:13px;color:var(--foreground);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .bc-meta{font-size:10.5px;color:var(--subtle-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .batch-bar{display:flex;align-items:center;gap:8px;margin-top:9px}
  .batch-bar .cnt{font-size:12px;color:var(--green-fg);font-weight:600;flex:1}

  .bt-group{padding:10px 0;border-bottom:1px solid var(--muted)}
  .bt-group:last-child{border-bottom:none}
  .bt-head{display:flex;align-items:center;gap:8px;cursor:pointer}
  .bt-check{
    width:18px;height:18px;border-radius:5px;border:1.5px solid var(--border-strong);flex-shrink:0;
    display:flex;align-items:center;justify-content:center;color:#fff;transition:.12s;cursor:pointer;background:var(--card);
  }
  .bt-group.on .bt-check{background:var(--green);border-color:var(--green)}
  .bt-check svg{width:11px;height:11px;display:none}
  .bt-group.on .bt-check svg{display:block}
  .bt-name{font-size:12.5px;font-weight:600;color:#3f3f46;flex:1}
  .bt-mode{font-size:10px;color:var(--muted-fg);background:var(--muted);border:1px solid var(--border);padding:1px 7px;border-radius:999px}
  .bt-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;transition:opacity .15s}

  /* 规则打标 */
  .rule-list{max-height:250px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:8px;background:var(--card)}
  .rule-row{display:flex;align-items:center;gap:9px;padding:9px 11px;border-bottom:1px solid var(--muted);cursor:pointer;transition:background .12s}
  .rule-row:last-child{border-bottom:none}
  .rule-row:hover{background:var(--muted)}
  .rule-row.sel .bc-check{background:var(--green);border-color:var(--green)}
  .rule-row .bc-check svg{width:11px;height:11px;display:none}
  .rule-row.sel .bc-check svg{display:block}
  .rr-main{flex:1;min-width:0}
  .rr-line1{font-size:13px;color:var(--foreground);font-weight:500;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .rr-tag{font-size:11px;padding:1px 8px;border-radius:999px}
  .rr-arrow{color:var(--subtle-fg);font-size:12px}
  .rr-reason{font-size:10.5px;color:var(--subtle-fg);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .rule-summary{font-size:12px;color:#3f3f46;background:var(--muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;line-height:1.5}
  .rule-summary b{color:var(--green-fg)}
  .rule-empty{padding:22px 0;text-align:center;color:var(--subtle-fg);font-size:12px}
  .rule-legend{font-size:10.5px;color:var(--subtle-fg);line-height:1.6;margin-top:14px;padding-top:10px;border-top:1px solid var(--border)}

  /* 打标任务台账 */
  .task-item{display:flex;gap:9px;padding:9px 0;border-bottom:1px solid var(--muted)}
  .task-item:last-child{border-bottom:none}
  .task-main{flex:1;min-width:0}
  .task-line1{font-size:12.5px;font-weight:600;color:var(--foreground);line-height:1.5}
  .task-line2{font-size:11px;color:var(--subtle-fg);margin-top:2px;line-height:1.5}

  /* ===== 轻提示 ===== */
  .toast{
    position:fixed;left:50%;bottom:96px;z-index:60;
    transform:translateX(-50%) translateY(8px);
    background:rgba(24,24,27,.92);color:#fff;
    padding:9px 18px;border-radius:10px;font-size:13px;font-weight:500;
    opacity:0;pointer-events:none;transition:.2s;white-space:nowrap;
    max-width:86vw;overflow:hidden;text-overflow:ellipsis;
    box-shadow:var(--shadow-lg);
  }
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 工作台入口为 <a> 锚点时的显示修正 */
a.batch-entry{text-decoration:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
