/* ============================================================
   三秋 · 设计系统（高级质感版）
   设计语言：抖音红粉为唯一英雄色，冷调中性灰阶，分层柔和阴影，
   统一圆角与 8pt 间距节奏；保留全部原有 class 名，仅升级视觉。
   ============================================================ */
:root{
  /* —— 品牌 / 语义色 —— */
  --pink:#6C5CE7;        /* 主色 抖音红粉（英雄色） */
  --pink-d:#5848d6;
  --pink-soft:#fff1f4;
  --violet:#7c4dff;
  --violet-soft:#f1ecff;
  --cyan:#06b6d4;
  --cyan-soft:#e6f6fa;
  --mint:#10b981;
  --mint-soft:#e7f7f1;
  --amber:#f59e0b;
  --amber-soft:#fdf3e2;
  --blue:#3b82f6;
  --blue-soft:#eaf1ff;
  --red:#ef4444;
  --red-soft:#fdecee;
  --yellow:#f5c518;
  --brand:#6C5CE7;       /* 主色 深空科技紫 */
  --brand-d:#5848d6;
  --brand-soft:#efecff;
  --brand-2:#22d3ee;     /* 辅助色 科技青 */
  --brand-2-d:#0bbbd6;
  --brand-2-soft:#e6f9fe;

  /* 双色填充图标：主色 + 辅助青 */
  --ic-main:var(--brand);
  --ic-accent:var(--brand-2);


  /* —— 中性色（冷调、克制）—— */
  --ink:#1f2233;
  --ink-1:#3a3f55;
  --ink-2:#5b6178;
  --ink-3:#9197ad;
  --line:#edeff5;
  --line-2:#e2e5ef;
  --bg:#f5f6fb;
  --surface:#ffffff;
  --surface-2:#fafbff;
  --surface-3:#f2f4fa;

  /* —— 跟进中心(Kanban) 历史变量映射（修复未定义导致透明）—— */
  --brand-1:var(--brand);
  --brand-2:var(--brand-soft);
  --paper:var(--surface);
  --paper-2:var(--surface-2);
  --cc:var(--ink-3);

  /* —— 阴影（分层、低透明度）—— */
  --shadow-sm:0 1px 2px rgba(22,27,45,.04), 0 2px 6px rgba(22,27,45,.05);
  --shadow:0 2px 4px rgba(22,27,45,.04), 0 8px 24px rgba(22,27,45,.07);
  --shadow-lg:0 8px 24px rgba(22,27,45,.10), 0 18px 50px rgba(22,27,45,.14);
  --shadow-press:0 1px 2px rgba(22,27,45,.06);

  /* —— 圆角 —— */
  --radius:18px;
  --radius-sm:12px;
  --radius-xs:9px;
  --r-pill:999px;

  /* —— 动效 —— */
  --ease:cubic-bezier(.2,0,0,1);
  --ease-spring:cubic-bezier(.34,1.4,.5,1);
  --dur:.18s;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;
  background:
    radial-gradient(900px 480px at 100% -10%, rgba(108,92,231,.04), transparent 60%),
    radial-gradient(820px 460px at -5% 110%, rgba(124,77,255,.045), transparent 60%),
    var(--bg);
  color:var(--ink);font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:14px}
::selection{background:rgba(108,92,231,.14);color:var(--ink)}
:focus-visible{outline:2px solid rgba(108,92,231,.45);outline-offset:2px;border-radius:6px}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#d3d6e4;border-radius:9px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:#b9bdce;background-clip:padding-box}

/* ============ 通用 ============ */
.brand-mark{
  width:46px;height:46px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand),#8b7bf0);color:#fff;font-weight:800;font-size:23px;letter-spacing:-.5px;
  box-shadow:0 6px 16px rgba(108,92,231,.34);
}
.brand-mark.sm{width:38px;height:38px;border-radius:11px;font-size:19px}
.brand-mark img{width:100%;height:100%;object-fit:contain;border-radius:inherit;display:block}

.file-link{display:inline-flex;align-items:center;gap:6px;max-width:260px;color:var(--brand);text-decoration:none;font-size:13px;line-height:1.4;vertical-align:middle}
.file-link:hover{text-decoration:underline}
.file-link .fl-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-link svg{width:15px;height:15px;flex:0 0 auto}
.file-link.fn-only .fl-name{color:var(--brand)}
.brief-cell{display:flex;align-items:center;gap:6px;flex-wrap:wrap;max-width:340px}
.brief-cell .muted{font-size:13px}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 auto;box-shadow:0 0 0 3px rgba(0,0,0,.03)}
.c-pink{background:var(--brand)}.c-cyan{background:var(--cyan)}.c-amber{background:var(--amber)}
.c-violet{background:var(--violet)}.c-mint{background:var(--mint)}.c-blue{background:var(--blue)}
.c-red{background:var(--red)}.c-yellow{background:var(--yellow)}
.hidden,[hidden]{display:none!important}
.muted{color:var(--ink-3)}
.right{text-align:right}
.nowrap{white-space:nowrap}

/* 按钮 */
.btn{
  display:inline-flex;align-items:center;gap:7px;justify-content:center;
  padding:9px 16px;border-radius:11px;font-weight:600;font-size:13.5px;
  background:var(--surface);color:var(--ink);border:1px solid var(--line-2);transition:all var(--dur) var(--ease);
}
.btn:hover{border-color:#c9cce0;transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.btn:active{transform:translateY(0) scale(.98)}
.btn-sm{padding:6px 11px;font-size:12.5px;border-radius:9px}
.btn-block{width:100%}
.btn-lg{padding:12px 18px;font-size:15px;border-radius:12px}
.btn-primary{background:linear-gradient(135deg,var(--brand),#7c6cf0);color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(108,92,231,.28)}
.btn-primary:hover{filter:brightness(1.04);border-color:transparent;box-shadow:0 8px 22px rgba(108,92,231,.36)}
.btn-primary:active{filter:brightness(.97)}
.btn-violet{background:linear-gradient(135deg,var(--violet),#9d7bff);color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(124,77,255,.28)}
.btn-violet:hover{filter:brightness(1.05);border-color:transparent}
.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-2)}
.btn-ghost:hover{background:var(--surface-2);color:var(--ink)}
.btn-danger{background:#fff;color:var(--red);border-color:#f3c2c9}
.btn-danger:hover{background:var(--red-soft);border-color:#f3c2c9}
.icon-btn{
  width:40px;height:40px;border-radius:11px;display:grid;place-items:center;color:var(--ink-2);
  background:var(--surface);border:1px solid var(--line-2);position:relative;transition:all var(--dur) var(--ease);
}
.icon-btn:hover{border-color:#c9cce0;color:var(--ink);transform:translateY(-1px)}
.icon-btn:active{transform:translateY(0) scale(.96)}
.icon-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.badge-dot{position:absolute;top:8px;right:9px;width:8px;height:8px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 2px #fff}
.only-mobile{display:none}

/* 标签 / 徽章 */
.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 11px;border-radius:var(--r-pill);font-size:12px;font-weight:600;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line)}
.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--r-pill);font-size:11.5px;font-weight:700}
.chip.pink{background:var(--brand-soft);color:var(--brand-d)}
.chip.violet{background:var(--violet-soft);color:#6b3df0}
.chip.cyan{background:var(--cyan-soft);color:#0891b2}
.chip.mint{background:var(--mint-soft);color:#0a8a64}
.chip.amber{background:var(--amber-soft);color:#b7791f}
.chip.blue{background:var(--blue-soft);color:#2563eb}
.chip.gray{background:var(--surface-3);color:var(--ink-3)}
.chip.green{background:var(--mint-soft);color:#0a8a64}
.lvl{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:7px;font-size:12px;font-weight:800;color:var(--ink-2);background:var(--surface-3)}
.lvl-num{font-weight:800}
.lvl-num.g6{background:linear-gradient(135deg,var(--brand),#8b7bf0);color:#fff}
.lvl-num.g5{background:linear-gradient(135deg,var(--amber),#ff7a45);color:#fff}
.lvl-num.g4{background:linear-gradient(135deg,var(--violet),#9d7bff);color:#fff}
.lvl-num.g3{background:linear-gradient(135deg,var(--cyan),var(--blue));color:#fff}
.lvl-num.g2{background:linear-gradient(135deg,var(--mint),#34cda9);color:#fff}
.lvl-num.g1,.lvl-num.g0{background:var(--surface-3);color:var(--ink-3)}
.lvl.S{background:linear-gradient(135deg,var(--brand),#7c6cf0)}
.lvl.A{background:linear-gradient(135deg,var(--amber),#ff7a45)}
.lvl.B{background:linear-gradient(135deg,var(--violet),#9d7bff)}
.lvl.C{background:linear-gradient(135deg,var(--ink-3),#b0b0c4)}
/* 产出分级（S/A/B/C）pill —— 与「带货等级 1-6」方形渐变区分 */
.tier-chip{display:inline-flex;align-items:center;justify-content:center;height:22px;padding:0 11px;border-radius:999px;font-size:12px;font-weight:800;color:#fff;box-shadow:0 0 0 2px #fff,0 2px 8px rgba(0,0,0,.12)}
.tier-S{background:linear-gradient(135deg,var(--brand),#7c6cf0)}
.tier-A{background:linear-gradient(135deg,var(--amber),#ff7a45)}
.tier-B{background:linear-gradient(135deg,var(--violet),#9d7bff)}
.tier-C{background:linear-gradient(135deg,var(--ink-3),#b0b0c4)}
.tier-legend-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line)}
.tier-legend-row b{margin-left:auto;font-size:13px;color:var(--ink)}
.tier-legend-row .muted{font-size:12px}

/* 微信号芯片（点击复制并打开微信）—— 与 chip/btn 协调 */
.wx-chip{
  display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--r-pill);
  font-size:12.5px;font-weight:700;color:var(--brand-d);background:var(--brand-soft);
  border:1px solid #dcd4ff;cursor:pointer;transition:all var(--dur) var(--ease);
}
.wx-chip:hover{background:#ece6ff;transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.wx-chip:active{transform:translateY(0) scale(.97)}
.wx-chip svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ============ 登录页 ============ */
.login-screen{position:fixed;inset:0;display:grid;place-items:center;overflow:auto;padding:24px;
  background:
    radial-gradient(1100px 560px at 8% -10%, rgba(108,92,231,.08), transparent 55%),
    radial-gradient(1000px 600px at 112% 112%, rgba(124,77,255,.10), transparent 55%),
    var(--bg);}
.login-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.blob{position:absolute;border-radius:50%;filter:blur(54px);opacity:.5}
.b1{width:340px;height:340px;background:#8b7bf0;left:-60px;top:-40px}
.b2{width:300px;height:300px;background:#b39bff;right:-40px;bottom:-30px}
.b3{width:240px;height:240px;background:#9be9ff;left:40%;top:60%}
.login-wrap{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:0;width:min(940px,96vw);
  background:var(--surface);border-radius:26px;overflow:hidden;box-shadow:var(--shadow-lg);border:1px solid rgba(255,255,255,.6)}
.login-intro{padding:44px 42px;color:#fff;position:relative;
  background:linear-gradient(155deg,#6C5CE7 0%,#7c6cf0 42%,#7c4dff 115%);}
.login-intro::after{content:"";position:absolute;right:-40px;top:-40px;width:200px;height:200px;border-radius:50%;background:rgba(255,255,255,.10);filter:blur(10px)}
.login-intro .brand-lg{display:flex;gap:14px;align-items:center;margin-bottom:34px}
.login-intro .brand-mark{background:rgba(255,255,255,.22);box-shadow:none;backdrop-filter:blur(4px)}
.login-intro h1{font-size:25px;letter-spacing:.4px;font-weight:800}
.login-intro p{font-size:13px;opacity:.9}
.intro-list{list-style:none;display:flex;flex-direction:column;gap:18px}
.intro-list li{display:flex;gap:13px;align-items:flex-start}
.intro-list .dot{margin-top:6px;box-shadow:0 0 0 4px rgba(255,255,255,.18)}
.intro-list strong{display:block;font-size:15px}
.intro-list span{font-size:12.5px;opacity:.82}
.login-card{padding:44px 42px;display:flex;flex-direction:column;justify-content:center}
.login-card h2{font-size:23px;font-weight:800;letter-spacing:-.2px}
.login-sub{color:var(--ink-3);font-size:13px;margin:6px 0 22px}
.field{display:block;margin-bottom:16px}
.field>span{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:7px}
.field input,.field select,.field textarea{
  width:100%;padding:11px 13px;border-radius:11px;border:1.5px solid var(--line-2);background:var(--surface-2);
  color:var(--ink);transition:all var(--dur) var(--ease);outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 4px rgba(108,92,231,.10)}
.pw-box{position:relative}
.pw-box input{padding-right:60px}
.pw-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:12.5px;color:var(--brand);font-weight:600;padding:5px 8px}
.login-row{display:flex;justify-content:space-between;align-items:center;margin:-2px 0 16px;font-size:12.5px}
.check{display:flex;align-items:center;gap:7px;color:var(--ink-2);cursor:pointer}
.check input{width:16px;height:16px;accent-color:var(--brand)}
.link-muted{color:var(--ink-3)}
.login-error{background:var(--red-soft);color:var(--red);border:1px solid #f3c2c9;padding:10px 13px;border-radius:11px;font-size:13px;margin-bottom:14px}
.login-foot{position:relative;margin-top:18px;font-size:12px;color:var(--ink-3);text-align:center}

/* ============ 应用外壳 ============ */
.app-shell{display:flex;min-height:100vh}
.scrim{position:fixed;inset:0;background:rgba(18,14,42,.42);z-index:40;display:none;backdrop-filter:blur(2px)}
.scrim.show{display:block}
.sidebar{
  width:248px;flex:0 0 248px;color:#cfcae6;
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:50;transition:.25s;
  background:
    radial-gradient(420px 320px at 20% -5%, rgba(108,92,231,.20), transparent 60%),
    linear-gradient(180deg,#1a1638 0%,#221a4e 100%);
  border-right:1px solid rgba(255,255,255,.06);
}
.sb-brand{display:flex;align-items:center;gap:12px;padding:22px 20px 16px}
.sb-brand .brand-mark{background:linear-gradient(135deg,var(--brand),#8b7bf0);box-shadow:0 4px 12px rgba(108,92,231,.4)}
.sb-brand-txt strong{color:#fff;font-size:16px;display:block;letter-spacing:.3px}
.sb-brand-txt span{font-size:11.5px;color:#9b96c4;letter-spacing:.3px}
.sb-nav{padding:8px 12px;display:flex;flex-direction:column;gap:3px;overflow-y:auto;flex:1}
.sb-nav a{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:11px;color:#b3aed4;font-weight:600;font-size:13.5px;transition:all var(--dur) var(--ease);position:relative}
.sb-nav a svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sb-nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.sb-nav a.active{background:linear-gradient(90deg,var(--brand),#7c6cf0);color:#fff;box-shadow:0 6px 16px rgba(108,92,231,.35)}
.sb-nav a.active::before{content:"";position:absolute;left:-12px;top:50%;transform:translateY(-50%);width:4px;height:22px;border-radius:0 4px 4px 0;background:#fff}
.sb-nav a .nav-tag{margin-left:auto;font-size:10px;background:var(--violet);color:#fff;padding:1px 7px;border-radius:99px}
.sb-foot{padding:16px}
.quota{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:13px;backdrop-filter:blur(4px)}
.quota-top{display:flex;justify-content:space-between;font-size:12px;color:#cfcae6;margin-bottom:8px}
.quota-top b{color:#fff}
.bar{height:8px;border-radius:99px;background:rgba(255,255,255,.12);overflow:hidden}
.bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--cyan),var(--mint))}
.quota-sub{display:flex;justify-content:space-between;font-size:11.5px;color:#9b96c4;margin-top:7px}
.quota-sub span:first-child{color:#fff;font-weight:700}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:16px;padding:13px 26px;
  background:rgba(255,255,255,.82);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line)}
.page-title h2{font-size:18px;font-weight:800;letter-spacing:-.2px}
.page-title p{font-size:12px;color:var(--ink-3);margin-top:1px}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:11px}
.global-search{position:relative;display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:11px;padding:0 12px;width:280px;transition:all var(--dur) var(--ease)}
.global-search:focus-within{border-color:#c9cce0;background:#fff;box-shadow:var(--shadow-sm)}
.global-search svg{width:17px;height:17px;fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round}
.global-search input{border:none;background:none;outline:none;padding:10px 0;width:100%}
.gs-panel{position:absolute;top:48px;left:0;right:0;background:#fff;border:1px solid var(--line-2);border-radius:13px;box-shadow:var(--shadow-lg);padding:8px;max-height:360px;overflow:auto;z-index:60}
.gs-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;cursor:pointer;transition:background var(--dur)}
.gs-item:hover{background:var(--surface-2)}
.gs-item small{color:var(--ink-3);margin-left:auto}
.user-chip{position:relative;display:flex;align-items:center;gap:9px;padding:5px 8px 5px 5px;border-radius:99px;border:1px solid var(--line-2);background:#fff;cursor:pointer;transition:all var(--dur) var(--ease)}
.user-chip:hover{border-color:#c9cce0;box-shadow:var(--shadow-sm)}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px;flex:0 0 auto;box-shadow:var(--shadow-sm)}
.avatar.sm{width:28px;height:28px;font-size:12px}
.uc-txt strong{font-size:13px;display:block;line-height:1.2}
.uc-txt span{font-size:11px;color:var(--ink-3)}
.caret{width:16px;height:16px;fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.uc-menu{position:absolute;top:48px;right:0;background:#fff;border:1px solid var(--line-2);border-radius:13px;box-shadow:var(--shadow-lg);padding:7px;min-width:160px;z-index:60}
.uc-menu button{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:9px;font-size:13px;color:var(--ink-2);font-weight:600;transition:background var(--dur)}
.uc-menu button:hover{background:var(--surface-2)}
.uc-menu button.danger{color:var(--red)}

.content{padding:24px 26px 40px;flex:1}

/* ============ 卡片 / 网格 ============ */
.row{display:flex;gap:16px;flex-wrap:wrap}
.grid{display:grid;gap:16px}
.kpi-grid{grid-template-columns:repeat(4,1fr)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.panel:hover{box-shadow:var(--shadow-lg)}
.panel.headless{padding:0;overflow:hidden}
.panel-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.panel-h h3{font-size:15px;font-weight:700}
.panel-h .sub{font-size:12px;color:var(--ink-3)}
.kpi{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;min-height:112px;transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.kpi:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}
.kpi::after{content:"";position:absolute;left:0;top:16px;bottom:16px;width:4px;border-radius:0 4px 4px 0;background:var(--accent,var(--brand))}
.kpi.pink{--accent:var(--brand)} .kpi.violet{--accent:var(--violet)} .kpi.cyan{--accent:var(--cyan)} .kpi.amber{--accent:var(--amber)} .kpi.mint{--accent:var(--mint)}
.kpi .k-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.kpi .k-ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:21px}
.kpi .k-ic svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.kpi .k-tag{font-size:12.5px;font-weight:700;padding:3px 11px;border-radius:99px;white-space:nowrap}
.kpi .k-val{font-size:30px;font-weight:800;letter-spacing:-.8px;line-height:1.1}
.kpi .k-val small{font-size:15px;font-weight:700;color:var(--ink-2);margin-left:3px}
.kpi .k-foot{display:flex;align-items:center;gap:8px;margin-top:auto}
.kpi .k-trend{font-size:12.5px;font-weight:700;display:inline-flex;align-items:center;gap:4px}
.kpi .k-trend.up{color:var(--mint)}
.kpi .k-trend.down{color:var(--red)}
.kpi .k-spark{display:none}
.kpi.pink .k-ic{background:var(--brand-soft);color:var(--brand-d)} .kpi.pink .k-tag{background:var(--brand-soft);color:var(--brand-d)}
.kpi.violet .k-ic{background:var(--violet-soft);color:#6b3df0} .kpi.violet .k-tag{background:var(--violet-soft);color:#6b3df0}
.kpi.cyan .k-ic{background:var(--cyan-soft);color:#0891b2} .kpi.cyan .k-tag{background:var(--cyan-soft);color:#0891b2}
.kpi.amber .k-ic{background:var(--amber-soft);color:#b7791f} .kpi.amber .k-tag{background:var(--amber-soft);color:#b7791f}
.kpi.mint .k-ic{background:var(--mint-soft);color:#0a8a64} .kpi.mint .k-tag{background:var(--mint-soft);color:#0a8a64}

/* 数据范围提示条 */
.scope-banner{display:inline-flex;align-items:center;gap:9px;background:linear-gradient(90deg,#f4f2ff,#efeaff);border:1px solid #d9d2ff;border-radius:12px;padding:10px 16px;font-size:13px;color:var(--ink-2)}
.scope-banner b{color:var(--brand-d)}
.scope-banner .dot{box-shadow:0 0 0 4px rgba(108,92,231,.15)}

/* 我的业绩（成员视角） */
.my-perf{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.my-row{display:flex;flex-direction:column;gap:5px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:13px 14px;transition:background var(--dur)}
.my-row:hover{background:var(--surface-3)}
.my-label{font-size:12.5px;color:var(--ink-3);font-weight:600}
.my-val{font-size:19px;font-weight:800;letter-spacing:-.3px}
.my-val.cyan{color:#0891b2}.my-val.amber{color:#b7791f}.my-val.violet{color:#6b3df0}.my-val.pink{color:var(--brand-d)}.my-val.blue{color:#2563eb}

/* 表格 */
.table-wrap{overflow-x:auto;border-radius:var(--radius)}
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px;min-width:760px}
.tbl thead th{text-align:left;padding:10px 13px;background:var(--surface-2);color:var(--ink-2);font-size:12px;font-weight:700;
  position:sticky;top:0;border-bottom:1px solid var(--line-2);white-space:nowrap;letter-spacing:.2px}
/* 排序列头 */
.th-sort{cursor:pointer;user-select:none;transition:color .15s,color var(--dur)}
.th-sort:hover{color:var(--ink-1);background:rgba(124,77,255,.06)}
.th-sort.active{color:var(--violet)}
.th-sort .sort-arrow{font-size:10px;margin-left:4px;opacity:.5}
.th-sort.active .sort-arrow{opacity:1}
.tbl tbody td{padding:10px 13px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tbody tr{transition:background var(--dur)}
.tbl tbody tr:hover{background:var(--surface-2)}
.tbl tbody tr:last-child td{border-bottom:none}
.tbl .t-name{display:flex;align-items:center;gap:11px}
.tbl .t-name b{font-size:13.5px;font-weight:700}
.tbl .t-name small{color:var(--ink-3);font-size:11.5px}
.cell-actions{display:flex;gap:6px;justify-content:flex-end}
.checkbox{width:17px;height:17px;accent-color:var(--brand);cursor:pointer}

/* 筛选栏 / 工具条 */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;overflow-x:auto;margin-bottom:16px;padding-bottom:2px}
.filters{display:flex;gap:9px;flex-wrap:nowrap;align-items:center;flex:1 1 auto;min-width:0}
.toolbar-actions{display:flex;gap:8px;flex:0 0 auto;align-items:center}
.filt{position:relative}
.filt select,.input,.select{padding:9px 12px;border:1.5px solid var(--line-2);border-radius:10px;background:var(--surface-2);color:var(--ink);outline:none;font-size:13px;transition:all var(--dur) var(--ease)}
.filt select:focus,.input:focus,.select:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(108,92,231,.08)}
.search-inline{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1.5px solid var(--line-2);border-radius:10px;padding:0 11px;transition:all var(--dur) var(--ease)}
.search-inline:focus-within{border-color:#c9cce0;background:#fff;box-shadow:var(--shadow-sm)}
.search-inline svg{width:16px;height:16px;fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round}
.search-inline input{border:none;background:none;outline:none;padding:9px 0;width:200px}
.active-filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}
.af{display:inline-flex;align-items:center;gap:6px;background:var(--brand-soft);color:var(--brand-d);border:1px solid #d9d2ff;padding:4px 10px;border-radius:99px;font-size:12px;font-weight:600}
.af button{color:var(--brand-d);font-weight:800}
.bulk-bar{display:flex;align-items:center;gap:10px;background:linear-gradient(90deg,#f4f2ff,#efeaff);border:1px solid #d9d2ff;border-radius:12px;padding:11px 14px;margin-bottom:14px;flex-wrap:wrap;box-shadow:var(--shadow-sm)}
.bulk-bar b{color:var(--brand-d)}
.pagination{display:flex;align-items:center;gap:8px;justify-content:flex-end;margin-top:16px;font-size:13px;color:var(--ink-2)}
.pagination button{padding:7px 12px;border-radius:9px;border:1px solid var(--line-2);background:#fff;font-weight:600;transition:all var(--dur) var(--ease)}
.pagination button:hover{border-color:var(--brand);color:var(--brand)}
.pagination button:disabled{opacity:.4;cursor:not-allowed}

/* 空状态 */
.empty{padding:60px 20px;text-align:center;color:var(--ink-3)}
.empty .e-ic{font-size:46px;margin-bottom:10px}
.empty b{display:block;color:var(--ink-2);font-size:15px;margin-bottom:4px}

/* ============ 抽屉 ============ */
.drawer{position:fixed;top:0;right:0;height:100vh;width:min(560px,94vw);background:#fff;z-index:70;
  box-shadow:var(--shadow-lg);transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column}
.drawer.show{transform:translateX(0)}
.drawer-head{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line)}
.drawer-head h3{font-size:17px;font-weight:800;flex:1}
.drawer-head .sub{font-size:12px;color:var(--ink-3)}
.drawer-body{flex:1;overflow-y:auto;padding:22px}
.drawer-foot{display:flex;gap:10px;padding:16px 22px;border-top:1px solid var(--line);background:var(--surface-2)}
.drawer-foot .btn{flex:1}
.close-x{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--ink-3);background:var(--surface-2);transition:all var(--dur) var(--ease)}
.close-x:hover{color:var(--ink);background:var(--surface-3)}
.close-x svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(18,14,42,.45);z-index:80;display:grid;place-items:center;padding:20px;animation:fade .2s;backdrop-filter:blur(2px)}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{background:#fff;border-radius:20px;width:min(520px,96vw);max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg);animation:pop .22s;border:1px solid rgba(255,255,255,.6)}
@keyframes pop{from{transform:translateY(12px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.modal-h{padding:22px 24px 0}
.modal-h h3{font-size:17px;font-weight:800}
.modal-b{padding:16px 24px}
.modal-f{display:flex;gap:10px;padding:16px 24px;border-top:1px solid var(--line)}
.modal-f .btn{flex:1}

/* Toast */
.toast-root{position:fixed;top:22px;left:50%;transform:translateX(-50%);z-index:120;display:flex;flex-direction:column;gap:10px;align-items:center}
.toast{background:var(--ink);color:#fff;padding:11px 18px;border-radius:12px;font-size:13.5px;font-weight:600;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:9px;animation:pop .22s}
.toast.ok{background:linear-gradient(90deg,var(--mint),#0bbf8a)}
.toast.err{background:linear-gradient(90deg,var(--red),#8b7bf0)}
.toast.info{background:linear-gradient(90deg,var(--violet),#9d7bff)}
.toast.warn{background:linear-gradient(90deg,var(--amber),#ffb84d)}
.toast .ti{width:18px;height:18px}

/* 表单分组 / Tab */
.form-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:-4px -24px 18px;padding:0 24px;overflow-x:auto}
.form-tabs button{padding:11px 4px;margin-right:16px;font-size:13.5px;font-weight:600;color:var(--ink-3);border-bottom:2px solid transparent;white-space:nowrap;transition:color var(--dur)}
.form-tabs button.active{color:var(--brand);border-color:var(--brand)}
.fgroup{margin-bottom:20px}
.fgroup>h4{font-size:13px;color:#6b3df0;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:7px}
.fgroup>h4::before{content:"";width:4px;height:14px;border-radius:3px;background:linear-gradient(180deg,var(--violet),#9d7bff)}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.fgrid .full{grid-column:1/-1}

/* ---- 达人只读详情 ---- */
.avatar.lg{width:54px;height:54px;font-size:22px}
.detail-hero{display:flex;align-items:center;gap:14px;padding:16px;margin-bottom:18px;border:1.5px solid var(--line-2);border-radius:var(--radius);background:linear-gradient(135deg,#f4f2ff 0%,#f6f4ff 100%);flex-wrap:wrap}
.detail-hero .dh-main{flex:1;min-width:180px}
.detail-hero .dh-main>b{font-size:17px;color:var(--ink);font-weight:800}
.detail-hero .dh-sub{font-size:12.5px;color:var(--ink-3);margin:3px 0 7px}
.detail-hero .dh-chips{display:flex;gap:6px;flex-wrap:wrap}
.detail-hero .dh-kpi{display:flex;gap:18px;flex-wrap:wrap}
.detail-hero .dh-kpi>div{text-align:right}
.detail-hero .dh-kpi small{display:block;font-size:11.5px;color:var(--ink-3);margin-bottom:2px}
.detail-hero .dh-kpi b{font-size:15px;color:var(--ink);font-weight:800}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px 13px}
.dg-item{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 11px;min-width:0}
.dg-item>small{display:block;font-size:11.5px;color:var(--ink-3);margin-bottom:4px}
.dg-val{font-size:13.5px;color:var(--ink);font-weight:600;word-break:break-word;display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:20px}
a.lnk{display:inline-flex;align-items:center;gap:5px;color:var(--blue);text-decoration:none;font-weight:600}
a.lnk:hover{text-decoration:underline}
a.lnk svg{width:15px;height:15px}
@media(max-width:760px){.detail-grid{grid-template-columns:1fr}.detail-hero .dh-kpi>div{text-align:left}}

.field-row{display:block}
.field-row>label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:7px}
.field-row .req{color:var(--red);margin-left:2px}
.field-row input,.field-row select,.field-row textarea{width:100%;padding:10px 12px;border-radius:10px;border:1.5px solid var(--line-2);background:var(--surface-2);color:var(--ink);outline:none;transition:all var(--dur) var(--ease)}
.field-row input:focus,.field-row select:focus,.field-row textarea:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(108,92,231,.10)}
.tag-input{display:flex;flex-wrap:wrap;gap:7px;padding:8px;border:1.5px solid var(--line-2);border-radius:10px;background:var(--surface-2);transition:all var(--dur) var(--ease)}
.tag-input:focus-within{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(108,92,231,.08)}
.tag-input .ti{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line-2);padding:3px 9px;border-radius:99px;font-size:12px}
.tag-input .ti b{color:var(--red);cursor:pointer;font-weight:800}
.tag-input input{border:none;background:none;outline:none;flex:1;min-width:90px;padding:4px}

/* 变更预览条 */
.change-note{background:linear-gradient(90deg,#fff7e6,#fff);border:1px solid #ffe0a3;border-radius:11px;padding:11px 13px;font-size:12.5px;color:#8a5b00;margin-bottom:16px;display:flex;gap:8px;align-items:flex-start}
.change-note b{color:var(--amber)}
.change-note .arrow{color:var(--brand);font-weight:800}

/* 导入弹窗（修复此前无样式） */
.imp-step{margin-bottom:18px;padding:15px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2)}
.imp-step b{display:block;font-size:13.5px;color:var(--ink);margin-bottom:6px}
.imp-step p{font-size:12.5px;color:var(--ink-2);line-height:1.65;margin:2px 0}
.imp-step .sub{color:var(--ink-3);font-size:12px;display:block;margin-top:6px}
.imp-file{display:block;width:100%;margin-top:10px;padding:11px 13px;border:1.5px dashed var(--line-2);border-radius:var(--radius-xs);background:#fff;color:var(--ink-2);font-size:13px;cursor:pointer;transition:all var(--dur) var(--ease)}
.imp-file:hover{border-color:var(--brand);background:var(--brand-soft)}
.imp-ok{color:#0a8a64;background:var(--mint-soft);border:1px solid #bfe9d6;padding:9px 12px;border-radius:var(--radius-xs);font-size:12.5px;margin-top:10px;line-height:1.55}
.imp-warn{color:#b7791f;background:var(--amber-soft);border:1px solid #f3dca8;padding:9px 12px;border-radius:var(--radius-xs);font-size:12.5px;margin-top:10px;line-height:1.55}
.imp-err{color:var(--red);background:var(--red-soft);border:1px solid #f3c2c9;padding:9px 12px;border-radius:var(--radius-xs);font-size:12.5px;margin-top:10px;line-height:1.55}
.imp-result{margin-top:14px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2)}
.imp-result h4{font-size:13.5px;font-weight:700;margin-bottom:8px}

/* ============================================================
   看板新版（时间筛选 + 多区块 + 右侧栏）
   ============================================================ */
.dash-layout{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:flex-start}
.dash-main{display:flex;flex-direction:column;gap:16px}
.dash-side{display:flex;flex-direction:column;gap:16px;position:sticky;top:74px}

/* 时间筛选条 */
.time-bar{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 16px;box-shadow:var(--shadow);flex-wrap:wrap}
.time-tabs{display:flex;gap:4px;background:var(--surface-2);border-radius:10px;padding:3px}
.time-tab{padding:7px 16px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink-2);transition:all var(--dur) var(--ease)}
.time-tab:hover{color:var(--ink)}
.time-tab.active{background:var(--brand);color:#fff;box-shadow:0 4px 10px rgba(108,92,231,.25)}
.time-custom{display:flex;align-items:center;gap:8px;margin-left:auto;color:var(--ink-3);font-size:12.5px}
.time-custom input{padding:6px 10px;border:1.5px solid var(--line-2);border-radius:8px;background:#fff;font-size:12.5px;color:var(--ink);outline:none;transition:all var(--dur) var(--ease)}
.time-custom input:focus{border-color:var(--brand)}
.time-custom input:disabled{background:var(--surface-2);color:var(--ink-3)}

/* 横向 KPI 行（4-6 列自适应）*/
.kpi-row{display:grid;gap:10px}
.kpi-row-2{grid-template-columns:1fr 1fr}
.kpi-row-3{grid-template-columns:repeat(3,1fr)}
.kpi-row-4{grid-template-columns:repeat(4,1fr)}
.kpi-row-5{grid-template-columns:repeat(5,1fr)}
.kpi-row-6{grid-template-columns:repeat(6,1fr)}
.mini-kpi{position:relative;background:linear-gradient(135deg,#fff,#fafbff);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;gap:12px;align-items:flex-start;min-height:88px;box-shadow:var(--shadow);transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.mini-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.mini-kpi::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 3px 3px 0;background:var(--accent,var(--brand))}
.mini-kpi.pink{--accent:var(--brand)}.mini-kpi.violet{--accent:var(--violet)}.mini-kpi.cyan{--accent:var(--cyan)}.mini-kpi.amber{--accent:var(--amber)}.mini-kpi.mint{--accent:var(--mint)}.mini-kpi.blue{--accent:var(--blue)}.mini-kpi.gray{--accent:var(--ink-3)}
.mk-ic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;font-size:18px;flex:0 0 auto;background:var(--surface-3)}
.mk-body{flex:1;min-width:0}
.mk-label{font-size:12px;color:var(--ink-3);font-weight:600;display:flex;align-items:baseline;gap:4px}
.mk-label small{font-size:10.5px;color:var(--ink-3);font-weight:500}
.mk-val{font-size:22px;font-weight:800;letter-spacing:-.6px;line-height:1.15;margin:2px 0 4px}
.mk-foot{font-size:11.5px;color:var(--ink-3);line-height:1.4}

/* 看板：状态分布图例 / 业绩排行 / 动态表格 */
.mini-kpi.orange{--accent:#ff7a45}
.status-legend{display:flex;flex-direction:column;gap:8px}
.status-legend-row{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:13px}
.status-dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.status-name{flex:1;color:var(--ink-2);font-weight:600}
.status-val{font-weight:800;color:var(--ink);min-width:24px;text-align:right}
.status-pct{font-size:12px;color:var(--ink-3);min-width:38px;text-align:right}
.rank-list{display:flex;flex-direction:column;gap:10px;padding:4px 0}
.rank-row{display:grid;grid-template-columns:28px 90px 1fr 110px 240px;align-items:center;gap:12px;padding:6px 0;font-size:13px}
.rank-no{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;color:#fff;font-weight:800;font-size:12px}
.rank-name{font-weight:700;color:var(--ink-2)}
.rank-bar{position:relative;height:10px;background:var(--surface-2);border-radius:5px;overflow:hidden}
.rank-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:5px;transition:width .3s}
.rank-val{font-weight:800;color:var(--ink);text-align:right}
.rank-meta{font-size:11.5px;color:var(--ink-3);text-align:right}
@media (max-width:960px){
  .rank-row{grid-template-columns:24px 70px 1fr 90px;gap:8px}
  .rank-meta{grid-column:2/6;font-size:11px;text-align:left}
}

/* 右侧栏：待办 / 播种 / 流量 / banner */
.todo-panel .panel-h h3{font-size:14px}
.todo-mini{display:flex;align-items:center;gap:9px;padding:10px 0;border-bottom:1px dashed var(--line)}
.todo-mini:last-child{border-bottom:none}
.todo-mini .dot{box-shadow:0 0 0 3px rgba(108,92,231,.1)}
.todo-mini .todo-label{flex:1;font-size:12.5px;color:var(--ink-2);font-weight:600}
.todo-mini .todo-val{font-size:18px;font-weight:800;color:var(--ink)}

.seeding-panel .panel-h h3{font-size:14px}
.traffic-panel .panel-h h3{font-size:14px}
.traffic-row{display:flex;gap:14px;align-items:center}
.traffic-legend{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.traffic-item{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
.traffic-dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto}
.traffic-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.traffic-item b{color:var(--ink);font-weight:800}

/* 商品单元格：缩略图 */
.pro-thumb{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#ffe3ea,#ece4ff);display:grid;place-items:center;font-size:16px;overflow:hidden;flex:0 0 auto}
.pro-thumb img{width:100%;height:100%;object-fit:cover}

/* 时间线（变更日志） */
.timeline{position:relative;padding-left:26px}
.timeline::before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:var(--line-2)}
.tl-item{position:relative;padding:0 0 20px}
.tl-item::before{content:"";position:absolute;left:-22px;top:4px;width:14px;height:14px;border-radius:50%;background:var(--brand);border:3px solid #fff;box-shadow:0 0 0 1px var(--line-2)}
.tl-item.violet::before{background:var(--violet)}
.tl-item.cyan::before{background:var(--cyan)}
.tl-item.mint::before{background:var(--mint)}
.tl-item.amber::before{background:var(--amber)}
.tl-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.tl-head b{font-size:13.5px}
.tl-time{font-size:11.5px;color:var(--ink-3);margin-left:auto}
.tl-meta{font-size:12.5px;color:var(--ink-2);margin-top:4px}
.tl-meta .arrow{color:var(--brand);font-weight:800;margin:0 5px}

/* 排行条（通用） */
.rank-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.rank-row:last-child{border:none}
.rank-no{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-weight:800;font-size:13px;background:var(--surface-3);color:var(--ink-2)}
.rank-no.top{background:linear-gradient(135deg,var(--amber),#ff7a45);color:#fff}
.rank-name{flex:1;font-weight:600;font-size:13.5px}
.rank-name small{display:block;color:var(--ink-3);font-weight:400;font-size:11.5px}
.rank-val{font-weight:800;font-size:14px}
.rank-bar{height:7px;border-radius:99px;background:var(--surface-2);overflow:hidden;width:120px}
.rank-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--violet),var(--brand))}

/* 待跟进提醒 */
.follow-item{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}
.follow-item:last-child{border:none}
.follow-item .fi-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand-d)}
.follow-item b{font-size:13.5px}
.follow-item small{color:var(--ink-3);font-size:11.5px}

/* 进度环（业绩） */
.perf-head{display:flex;gap:18px;flex-wrap:wrap;align-items:stretch}
.perf-card{flex:1;min-width:180px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.perf-card .pc-label{font-size:12.5px;color:var(--ink-3);font-weight:600}
.perf-card .pc-val{font-size:26px;font-weight:800;margin-top:6px;letter-spacing:-.4px}

/* ============ 设置（管理员引擎） ============ */
.set-tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}
.set-tab{padding:9px 16px;border-radius:11px;font-weight:600;font-size:13px;background:var(--surface);border:1px solid var(--line-2);color:var(--ink-2);transition:all var(--dur) var(--ease)}
.set-tab:hover{border-color:#c9cce0}
.set-tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.set-section{margin-bottom:26px}
.set-section>h4{font-size:15px;margin-bottom:4px;font-weight:800}
.set-section>.desc{font-size:12.5px;color:var(--ink-3);margin-bottom:14px}
.config-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px;box-shadow:var(--shadow)}
.config-card .cc-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.config-card .cc-h b{font-size:14px;font-weight:700}
.config-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;margin-bottom:9px;background:var(--surface-2);transition:background var(--dur)}
.config-row:hover{background:var(--surface-3)}
.config-row .drag{color:var(--ink-3);cursor:grab;font-size:16px;user-select:none}
.config-row .cfg-name{font-weight:600;font-size:13.5px;flex:1}
.config-row .cfg-name small{display:block;color:var(--ink-3);font-weight:400;font-size:11.5px}
.config-row .cfg-ctl{display:flex;align-items:center;gap:8px}
.config-row input[type=text]{padding:7px 10px;border:1.5px solid var(--line-2);border-radius:9px;background:#fff;outline:none;width:150px;transition:all var(--dur) var(--ease)}
.config-row input[type=text]:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(108,92,231,.08)}
.config-row select{padding:7px 10px;border:1.5px solid var(--line-2);border-radius:9px;background:#fff;outline:none;transition:all var(--dur) var(--ease)}
.config-row select:focus{border-color:var(--brand)}
/* switch */
.switch{position:relative;width:44px;height:24px;flex:0 0 auto}
.switch input{opacity:0;width:0;height:0}
.switch .sl{position:absolute;inset:0;background:#d8d8e8;border-radius:99px;transition:.2s;cursor:pointer}
.switch .sl::before{content:"";position:absolute;width:18px;height:18px;background:#fff;border-radius:50%;top:3px;left:3px;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch input:checked+.sl{background:linear-gradient(90deg,var(--mint),#0bbf8a)}
.switch input:checked+.sl::before{transform:translateX(20px)}
/* 选项标签编辑 */
.opt-edit{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}
.opt-chip{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line-2);padding:3px 9px;border-radius:99px;font-size:12px}
.opt-chip b{color:var(--red);cursor:pointer;font-weight:800}
.dict-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.dict-box{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:13px}
.dict-box b{font-size:13px;display:block;margin-bottom:9px;color:var(--ink-2)}
.dict-box .opt-edit{margin-top:0}
.hint{font-size:12px;color:var(--ink-3);background:var(--surface-2);border:1px dashed var(--line-2);border-radius:10px;padding:10px 12px;margin-top:8px}
.kbd{font-family:monospace;background:#fff;border:1px solid var(--line-2);border-radius:6px;padding:1px 6px;font-size:12px}
.locked{opacity:.5;pointer-events:none}

/* 角色徽标 */
.role-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;font-size:11.5px;font-weight:700}
.role-badge.admin{background:linear-gradient(90deg,var(--brand),#8b7bf0);color:#fff}
.role-badge.lead{background:var(--violet-soft);color:#6b3df0}
.role-badge.member{background:var(--cyan-soft);color:#0891b2}

/* ============ 响应式 ============ */
@media(max-width:1080px){
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .perf-head{gap:12px}
  .dash-layout{grid-template-columns:1fr}
  .dash-side{position:static}
  .kpi-row-5{grid-template-columns:repeat(3,1fr)}
  .kpi-row-6{grid-template-columns:repeat(3,1fr)}
}
/* ============ 样品子模块 / 预警 / 健康度 ============ */
.samples-field{display:flex;flex-direction:column;gap:8px}
.smp-rows{display:flex;flex-direction:column;gap:8px}
.smp-row{display:grid;grid-template-columns:1.4fr 1fr .9fr .8fr .8fr 30px;gap:8px;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:7px 9px}
.smp-in{width:100%;padding:7px 9px;border:1.5px solid var(--line-2);border-radius:8px;font-size:13px;background:#fff;color:var(--ink);outline:none;transition:all var(--dur) var(--ease)}
.smp-in:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(108,92,231,.08)}
.smp-rm{border:none;background:transparent;color:var(--ink-3);cursor:pointer;font-size:15px;line-height:1;padding:4px;border-radius:6px;transition:all var(--dur) var(--ease)}
.smp-rm:hover{background:var(--brand-soft);color:var(--brand-d)}
.smp-add{align-self:flex-start}
.smp-view{display:flex;flex-direction:column;gap:8px}
.smp-vrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.smp-vrow b{min-width:120px}
.smp-vrow.pending{border-color:#ffd0a8;background:#fff6ec}
.smp-vrow .muted{font-size:12px}
.t-alerts{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.alert-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;background:var(--amber-soft);color:#b7791f}
.alert-chip.warn{background:var(--red-soft);color:var(--brand-d)}
.alert-list{display:flex;flex-direction:column;gap:8px}
.alert-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
.alert-item.warn{border-color:#ffd0a8;background:#fff6ec}
.alert-ic{font-size:16px}
.alert-main{flex:1;font-size:13.5px;color:var(--ink)}
.alert-owner{font-size:12px;color:var(--ink-3);white-space:nowrap}
.row-risk{background:#f4f2ff}
.row-risk td{color:var(--ink)}
.risk-num{color:#dc2626;font-weight:800}

@media(max-width:860px){
  .login-wrap{grid-template-columns:1fr}
  .login-intro{display:none}
  .only-mobile{display:grid}
  .sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);box-shadow:var(--shadow-lg)}
  .sidebar.open{transform:translateX(0);box-shadow:var(--shadow-lg)}
  .global-search{width:170px}
  .uc-txt{display:none}
  .content{padding:18px 14px 36px}
  .topbar{padding:12px 14px}
  .fgrid{grid-template-columns:1fr}
  /* 列表降级为卡片流 */
  .tbl thead{display:none}
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%}
  .tbl tbody tr{border:1px solid var(--line);border-radius:13px;margin-bottom:12px;padding:6px 4px;box-shadow:var(--shadow)}
  .tbl tbody td{border:none;padding:9px 14px;display:flex;justify-content:space-between;align-items:center;gap:12px}
  .tbl tbody td::before{content:attr(data-label);font-size:12px;color:var(--ink-3);font-weight:600}
  .tbl .t-name::before{display:none}
  .tbl .t-name{justify-content:flex-start}
  .cell-actions{justify-content:flex-end}
  .kpi-grid{grid-template-columns:1fr 1fr}
}
  @media(max-width:520px){
  .kpi-grid{grid-template-columns:1fr}
  .global-search{display:none}
  .demo-grid{grid-template-columns:1fr}
  .kpi-row-2,.kpi-row-3,.kpi-row-4,.kpi-row-5,.kpi-row-6{grid-template-columns:1fr 1fr}
  .time-bar{flex-direction:column;align-items:flex-start}
  .time-custom{margin-left:0;width:100%}
  .fc-board{grid-template-columns:1fr}
  .fc-top{flex-direction:column;align-items:flex-start;gap:10px}
}

/* ============================================================
   跟进中心（Kanban / 内联编辑）
   ============================================================ */
.fc-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.fc-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.fc-filters label{font-size:12px;color:var(--ink-3);font-weight:600}
.fc-filters select{height:34px;padding:0 28px 0 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font:inherit;color:var(--ink);cursor:pointer;transition:all var(--dur) var(--ease)}
.fc-filters select:focus{outline:2px solid rgba(108,92,231,.4);outline-offset:1px}
.fc-check{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}
.fc-check input{accent-color:var(--brand)}
.fc-hint{font-size:12px;color:var(--ink-3);background:var(--surface-2);padding:5px 10px;border-radius:8px}
.fc-online{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);background:var(--surface);padding:6px 14px;border-radius:99px;box-shadow:var(--shadow-sm);border:1px solid var(--line)}
.fc-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 4px rgba(34,197,94,.2);animation:fcPulse 2s infinite}
@keyframes fcPulse{0%,100%{box-shadow:0 0 0 4px rgba(34,197,94,.2)}50%{box-shadow:0 0 0 8px rgba(34,197,94,0)}}

.fc-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;align-items:start;overflow-x:auto}
.fc-col{background:var(--surface-3);border-radius:14px;padding:10px;min-height:200px;display:flex;flex-direction:column;gap:8px;border-top:3px solid var(--cc,#94a3b8)}
.fc-col-h{display:flex;align-items:center;gap:6px;padding:4px 6px 8px;border-bottom:1px dashed var(--line);font-size:13px;font-weight:600;color:var(--cc,#475569)}
.fc-col-dot{font-size:14px;line-height:1}
.fc-col-label{flex:1}
.fc-col-count{background:var(--surface);padding:1px 8px;border-radius:99px;font-size:11px;color:var(--ink-3);min-width:22px;text-align:center}
.fc-col-urgent{background:var(--red-soft);color:var(--red);padding:1px 8px;border-radius:99px;font-size:11px;font-weight:600}
.fc-col-body{flex:1;display:flex;flex-direction:column;gap:8px;min-height:60px;padding:4px 0}
.fc-col-body.fc-drop{background:var(--brand-soft);outline:2px dashed var(--brand);outline-offset:-4px;border-radius:10px}

.fc-card{background:var(--surface);border-radius:12px;padding:12px;box-shadow:var(--shadow);border:1px solid var(--line);cursor:grab;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.fc-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.fc-card.dragging{opacity:.4;cursor:grabbing}
.fc-card.is-urgent{border-left:3px solid #f59e0b}
.fc-card[data-has-warn="sleep"]{border-left:3px solid #ef4444}
.fc-card-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}
.fc-name{display:flex;gap:8px;align-items:center;min-width:0;flex:1}
.fc-name b{font-size:14px;line-height:1.2;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.fc-name small{font-size:11px;color:var(--ink-3)}
.fc-statusbtn{font-size:11px;padding:3px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--ink-2);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:all var(--dur) var(--ease)}
.fc-statusbtn:hover{background:var(--surface-3);color:var(--ink)}
.fc-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-bottom:6px}
.fc-fans{color:var(--ink-1)}
.fc-price{color:var(--brand-d);font-weight:600}
.fc-sample{margin-bottom:6px}
.fc-chip-sample{font-size:11px;display:inline-flex;gap:4px;align-items:center}
.fc-alerts{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.fc-alert{font-size:11px;padding:2px 8px;border-radius:99px;display:inline-flex;gap:3px;align-items:center}
.fc-alert.warn{background:var(--amber-soft);color:#92400e;font-weight:600}
.fc-alert.info{background:var(--blue-soft);color:#1e40af}
.fc-note{font-size:12px;color:var(--ink-2);padding:6px 8px;background:var(--surface-2);border-radius:8px;margin-bottom:8px;cursor:pointer;line-height:1.45;min-height:30px;transition:all var(--dur) var(--ease)}
.fc-note:hover{background:var(--surface-3);border:1px dashed var(--brand)}
.fc-card .fc-note{border:1px dashed transparent}
.fc-card-f{display:flex;align-items:center;gap:6px;padding-top:6px;border-top:1px dashed var(--line)}
.fc-owner{display:flex;gap:4px;align-items:center;font-size:11px;color:var(--ink-3);min-width:0;flex:1;overflow:hidden}
.fc-owner-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60px}
.fc-date{font-size:11px;color:var(--ink-3);cursor:pointer;padding:2px 6px;border-radius:6px;white-space:nowrap;transition:all var(--dur) var(--ease)}
.fc-date:hover{background:var(--surface-3);color:var(--brand-d)}
.fc-follow-btn{font-size:11px;padding:4px 10px;background:var(--brand);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:600;transition:filter var(--dur)}
.fc-follow-btn:hover{filter:brightness(1.08)}
.fc-card-actions{display:flex;gap:6px;padding-top:6px;border-top:1px dashed var(--line)}
.fc-edit-btn{font-size:11px;padding:4px 10px;background:var(--surface);color:var(--ink-2);border:1px solid var(--line);border-radius:8px;cursor:pointer;font-weight:600;flex:1;transition:all var(--dur) var(--ease)}
.fc-edit-btn:hover{background:var(--surface-3);color:var(--brand-d)}

/* 顶部快捷筛选 chip */
.fc-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0}
.fc-chips-label{font-size:12px;color:var(--ink-3);margin-right:2px}
.fc-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:5px 12px;border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink-2);cursor:pointer;font-weight:600;transition:all var(--dur) var(--ease)}
.fc-chip:hover{border-color:var(--brand);color:var(--brand-d)}
.fc-chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.fc-chip-n{font-size:11px;background:rgba(255,255,255,.25);padding:0 6px;border-radius:99px;min-width:18px;text-align:center}
.fc-chip:not(.active) .fc-chip-n{background:var(--surface-3);color:var(--ink-3)}
.fc-chip.has-alert{color:var(--red);border-color:#fecaca}
.fc-chip.has-alert .fc-chip-n{background:var(--red-soft);color:var(--red)}
.fc-chip.has-alert.active{background:var(--red);border-color:var(--red);color:#fff}
.fc-chip.has-alert.active .fc-chip-n{background:rgba(255,255,255,.3);color:#fff}
.fc-manage-btn{font-size:12px;padding:5px 12px;background:var(--surface);color:var(--ink-2);border:1px solid var(--line);border-radius:8px;cursor:pointer;font-weight:600;transition:all var(--dur) var(--ease)}
.fc-manage-btn:hover{background:var(--surface-3);color:var(--brand-d)}

/* 管理员：看板列管理 */
.fc-cols-list{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.fc-col-row{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface-2);border-radius:10px;font-size:13px}
.fc-sw{width:12px;height:12px;border-radius:4px;flex-shrink:0}
.fc-col-name{font-weight:600;color:var(--ink)}
.fc-col-swid{flex:1;font-size:11px}
.fc-col-del{font-size:11px;padding:3px 10px;border:1px solid var(--line);background:var(--surface);color:var(--red);border-radius:7px;cursor:pointer;transition:all var(--dur) var(--ease)}
.fc-col-del:hover:not(:disabled){background:var(--red-soft)}
.fc-col-del:disabled{color:var(--ink-3);cursor:not-allowed;opacity:.6}
.fc-col-add{display:flex;gap:8px;align-items:center}

.fc-menu{position:absolute;background:var(--surface);border:1px solid var(--line-2);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px;z-index:999;min-width:120px}
.fc-menu button{display:block;width:100%;padding:7px 12px;border:none;background:transparent;text-align:left;font:inherit;cursor:pointer;border-radius:6px;color:var(--ink);transition:background var(--dur)}
.fc-menu button:hover{background:var(--brand-soft)}
.fc-menu button.cur{color:var(--brand-d);font-weight:600;background:var(--brand-soft)}

@media(max-width:1180px){.fc-board{grid-template-columns:repeat(3,minmax(220px,1fr));overflow-x:auto}}
@media(max-width:760px){.fc-board{grid-template-columns:repeat(2,minmax(220px,1fr))}}

/* ============================================================
   深空科技 · 双色填充图标容器配色
   ============================================================ */
.ic{display:block}
.sidebar{--ic-main:#c9c3ee;--ic-accent:#9d7bff}
.sb-nav a.active{--ic-main:#fff;--ic-accent:rgba(255,255,255,.65)}
.icon-btn{--ic-main:var(--brand);--ic-accent:var(--brand-2)}
.icon-btn.danger{--ic-main:var(--red);--ic-accent:#ffb4b4}
.btn-primary .ic,.btn-violet .ic{--ic-main:#fff;--ic-accent:rgba(255,255,255,.6)}
.kpi .k-ic{--ic-main:var(--brand);--ic-accent:var(--brand-2)}
.mini-kpi .mk-ic{--ic-main:var(--brand);--ic-accent:var(--brand-2)}
.file-link{--ic-main:var(--brand);--ic-accent:var(--brand-2)}
.wx-chip{--ic-main:var(--brand);--ic-accent:var(--brand-2)}
.toast .ti{--ic-main:#fff;--ic-accent:rgba(255,255,255,.6)}
.role-badge{--ic-main:#fff;--ic-accent:rgba(255,255,255,.6)}

/* ============================================================
   组件尺寸 / 形状 / 位置 配套精修
   ============================================================ */
.icon-btn{width:42px;height:42px;border-radius:12px}
.icon-btn svg{width:21px;height:21px}
.sb-nav a svg{width:20px;height:20px}
.kpi .k-ic{width:46px;height:46px;border-radius:13px}
.kpi{min-height:116px}
.btn{border-radius:12px}
.btn-sm{border-radius:10px}
.sidebar{width:252px;flex:0 0 252px}
.sb-brand{padding:24px 20px 18px}
.topbar{padding:14px 28px}
.content{padding:26px 28px 44px}
.brand-mark{width:48px;height:48px;border-radius:15px;font-size:24px}
.brand-mark.sm{width:40px;height:40px;border-radius:12px;font-size:20px}
.tag,.chip{border-radius:var(--r-pill)}
.mk-ic svg{width:20px;height:20px}
.ic{width:22px;height:22px}
.mini-kpi.orange{--accent:var(--brand-2)}
