/* ══════════════════════════════════════════════════════════════
   KEMUU 工作台 · 全站一套设计 token
   来源：产出/15-视觉方向样张/token表.css 的 :root 整块替换（派工单 22 第 1 片）。
   颜色全部跑过 dataviz/scripts/validate_palette.js，非目测；改任何颜色前重跑一次。

   token + 基础排版 + 六页共用骨架（派工单 14 段 A 抽上来）。
   页特有的组件仍按铁律 7：出现第二个使用者才往这里搬。
   ══════════════════════════════════════════════════════════════ */
:root{
  /* ── 面与材质：铝机身 + 阳极银面板 ────────────────────────────────
     明度阶（浅→深）：surface > panel > ground。三者关系不许颠倒。 */
  --ground:#EDEFF2;      /* 铝机身。页面底 + 会话区底 + 筛选条底 */
  --surface:#FFFFFF;     /* 白面。列表栏 / 气泡 / 输入框 / 卡片 */
  --panel:#FBFBFC;       /* 阳极银面板。详情头 / 标签条 / 输入区 */
  --surface-2:#F7F8FA;   /* 次级面。表头 / 折叠区底 */

  /* ── 边框三级（白面板方向的命门，别再合并回两级）────────────────── */
  --seam:#BDC4CE;        /* 结构槽，只配 2px。对 panel 1.70:1 · 对 ground 1.53:1 */
  --line:#D3D8DF;        /* 发丝边，1px。对 surface 1.43:1 */
  --line-2:#E6E9ED;      /* 行线，1px，最轻 */

  /* ── 墨：产品黑色触控面板的那个黑，只做文字不做大面积底 ──────── */
  --ink:#0B0B0C;         /* 对 surface 19.67 · 对 panel 19.02 · 对 ground 17.08 */
  --ink-2:#414651;       /* 对 surface 9.46 · 对 panel 9.15 · 对 ground 8.21 */
  --ink-3:#5B6472;       /* 对 surface 5.98 · 对 panel 5.78 · 对 ground 5.19 */

  /* ── 状态＝锁的 LED 语言 ──────────────────────────────────────
     -x     ＝ 灯本身（小圆点、状态条，不承载文字）
     -ink   ＝ 该状态的文字色（承载文字，必须过 4.5:1）
     -bg    ＝ 该状态的浅底（徽章、气泡） */
  --signal:#1FBF5A;      /* 通行绿：灯 + 发送键底。签名色 */
  --signal-ink:#0E7A38;  /* 对 ground 4.72 · 对 surface 5.44 */
  --signal-bg:#E8F8EE;   /* 我方气泡底 */
  --signal-edge:#199B49; /* 发送键描边。绿键落在近白面板上，没描边会飘 */

  --warn:#F5A623;        /* 等待琥珀：灯 */
  --warn-ink:#8A6100;    /* 对 ground 4.81 · 对 surface 5.54 */
  --warn-bg:#FDF3E2;

  --danger:#B3261E;      /* 故障红：灯 */
  --danger-ink:#B3261E;  /* 对 ground 5.67 · 对 surface 6.54 */
  --danger-bg:#FBEDEC;

  --idle:#A8AEB8;        /* 灯灭。不是「没数据」 */
  --idle-bg:#EEF0F3;

  /* ── 评级序数阶 A→D（第 3 层 dataviz 重定）─────────────────── */
  --grade-a:#193A62; --grade-b:#214B7E; --grade-c:#285C9B; --grade-d:#306DB8;
  --grade-track:#F0F3F8;

  /* 顺序阶（量级 / 漏斗）：搬运值 */
  --seq-1:#86b6ef; --seq-2:#5598e7; --seq-3:#2a78d6; --seq-4:#1c5cab; --seq-5:#0d366b;
  --seq-track:#EDF1F7;

  /* ── 字号：只许这五级 ──────────────────────────────────────── */
  --t1:24px;   /* 页面主标题，一页一个 */
  --t2:19px;   /* 区块标题 */
  --t3:15px;   /* 详情栏客户名 */
  --t4:13px;   /* 正文（列表 / 表格 / 气泡）*/
  --t5:11px;   /* 辅助（电话 / 时间 / 沉默文案）*/

  /* ── 字重：本方向靠字重分层，不靠字号大 ────────────────────── */
  --w-med:500;   /* 客户名、可点的东西 */
  --w-bold:600;  /* 标题、选中项 */

  /* ── 间距：4px 基数 ───────────────────────────────────────── */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px;
  --row:34px;

  /* ── 圆角：机加工件是硬边，气泡是软的 ──────────────────────── */
  --radius:3px;        /* 控件 / 输入框 / 按钮 / 徽章 */
  --radius-lg:12px;    /* 聊天气泡 */
  --radius-pill:999px; /* 筛选 chip */

  /* ── 字族：中文界面 + 本机跑 ⇒ 锁死系统字体 ───────────────── */
  --sans:-apple-system,"PingFang SC",system-ui,"Microsoft YaHei",sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){
  :root{
    --ground:#1A1D21; --panel:#22262B; --surface:#272B31; --surface-2:#1E2126;

    --seam:#454C56;
    --line:#363C44;
    --line-2:#2C3138;

    --ink:#E6E8EC;
    --ink-2:#C2C8D2;
    --ink-3:#9AA3B2;

    --signal-ink:#3DDC70;
    --signal-bg:#16291F;
    --signal-edge:#2FA757;

    --warn-ink:#F5C15A;
    --warn-bg:#2A2317;

    --danger:#E8867C;
    --danger-ink:#E8867C;
    --danger-bg:#2C1D1C;

    --idle:#6B727C; --idle-bg:#22262D;

    --grade-a:#AECFF8; --grade-b:#9DBBE0; --grade-c:#8CA7C8; --grade-d:#7C94B1;
    --grade-track:#232830;

    --seq-1:#1c5cab; --seq-2:#3987e5; --seq-3:#6da7ec; --seq-4:#9ec5f4; --seq-5:#cde2fb;
    --seq-track:#242A34;
  }
}

/* ── 基础排版 ────────────────────────────────────────── */
*{box-sizing:border-box}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);
     font-size:var(--t4);line-height:1.55;-webkit-font-smoothing:antialiased}

/* 数字一律等宽对齐——表里全是金额/天数/CPL，不对齐没法竖着扫 */
.num{font-variant-numeric:tabular-nums;letter-spacing:-.01em}
/* 标识与时间戳：等宽让「机器的东西」视觉上退后。break-all 是为了 320px 不被长 id 撑出横向滚动 */
.mono{font-family:var(--mono);font-size:var(--t5);color:var(--ink-3);
      word-break:break-all}

/* 焦点框必须看得见——不用框架时最容易漏，漏了键盘就走不到那个元素 */
:focus-visible{outline:2px solid var(--signal-ink);outline-offset:2px}

/* 可点的东西一律是真的 <button>/<a>，所以这里只做最低限度的还原 */
button{font:inherit;color:inherit}
a{color:var(--signal-ink)}

/* ── 评级徽章（①② 共用，铁律 7）────────────────────────
   不用 color:#fff 配翻转后的 --seq-*：深色下 A 级会变成浅底白字（1.32:1）。
   字走顺序阶、底走 --seq-track，两个模式锚点一起翻，对比度两边都在。 */
.评级{display:inline-flex;align-items:center;justify-content:center;
      min-width:20px;height:20px;padding:0 var(--s1);border-radius:5px;
      font-size:var(--t5);font-weight:700;background:var(--seq-track);color:var(--ink)}
.评级-A{color:var(--grade-a)}.评级-B{color:var(--grade-b)}
.评级-C{color:var(--grade-c)}.评级-D{color:var(--grade-d)}
.评级-未评{color:var(--ink-3);background:var(--idle-bg)}

/* ── 原生 <dialog> 弹层（①② 共用，铁律 7 / 补审 9）──────
   showModal() 自带焦点陷阱、Esc、inert 背景，零依赖。不许阴影。 */
dialog.弹层{
  border:1px solid var(--line);border-radius:var(--radius);
  padding:var(--s4);max-width:420px;width:calc(100% - var(--s6));
  max-height:80vh;overflow:auto;background:var(--surface);color:var(--ink);
}
dialog.弹层::backdrop{background:rgba(0,0,0,.45)}
dialog.弹层 h2{font-size:var(--t3);margin:0 0 var(--s3)}
dialog.弹层 table{width:100%;font-size:var(--t4);border-collapse:collapse}
dialog.弹层 td{padding:var(--s1) 0;border-bottom:1px solid var(--line-2)}
dialog.弹层 td:first-child{width:90px;color:var(--ink-2)}
dialog.弹层 kbd{font-family:var(--mono);font-size:var(--t5);background:var(--surface-2);
  border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;
  padding:1px var(--s2)}
dialog.弹层 .关闭{margin-top:var(--s3)}
dialog.弹层 .说明{font-size:var(--t5);color:var(--ink-3);margin:var(--s3) 0 0;line-height:1.5}

/* 沉默条 —— ① 今日跟进 与 ④ 客户详情 共用（铁律 7：第二个使用者出现才提升）。
   颜色只加速扫读，含义永远写在字里：色盲 / 深色模式 / 转发截图都要读得懂。
   四档照 knowledge/customer-intelligence知识库/线索跟进手册.md §4：
   D+2 轻推 · D+7 换角度 · D+14 最后一推 + 留门。 */
.沉默行{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.沉默标签{font-size:var(--t5);font-weight:650;padding:1px var(--s2);border-radius:10px;white-space:nowrap}
.沉默标签.沉-活的{background:var(--signal-bg);color:var(--signal-ink)}
.沉默标签.沉-转凉{background:var(--warn-bg);color:var(--warn-ink)}
.沉默标签.沉-凉了{background:var(--warn-bg);color:var(--warn-ink)}
.沉默标签.沉-走完阶梯{background:var(--danger-bg);color:var(--danger-ink)}
.沉默标签.沉-没回过{background:var(--danger-bg);color:var(--danger-ink)}
.沉默标签.沉-无记录{background:var(--idle-bg);color:var(--ink-3)}

/* ── 六页共用骨架（派工单 14 段 A）────────────────────────
   判据：≥4 页逐字相同才抽。观感必须零变化。
   K4：.app 的 max-width 留在各页（1180 / 1100 / 820 不许统一）。
   K5：index 灯条卡用 .card.lamp 压 padding，别把 signature 弄没了。
   .btn:disabled / .btn.主 各页不同，留在页内。 */
.app{margin:0 auto;padding:var(--s5) var(--s4) var(--s6)}

.topbar{display:flex;align-items:baseline;gap:var(--s3);flex-wrap:wrap;
        padding-bottom:var(--s3);border-bottom:1px solid var(--line);margin-bottom:var(--s4)}
.topbar h1{font-size:var(--t2);margin:0;letter-spacing:-.01em}
.topbar a.back{font-size:var(--t5);color:var(--ink-3);text-decoration:none;margin-left:auto}
.topbar a.back:hover{color:var(--ink)}

.hint{font-size:var(--t5);color:var(--ink-3)}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
      padding:var(--s4)}

.btn{font:inherit;font-size:var(--t4);line-height:1;padding:var(--s2) var(--s3);border-radius:var(--radius);
     border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.btn:hover:not(:disabled):not([aria-disabled="true"]){border-color:var(--ink-3)}

.toast{position:fixed;left:50%;bottom:var(--s5);transform:translateX(-50%) translateY(var(--s3));
       background:var(--ink);color:var(--ground);font-size:var(--t4);padding:var(--s3) var(--s4);border-radius:var(--radius);
       opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;max-width:90vw;text-align:center;z-index:50}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.skel{height:12px;border-radius:3px;background:var(--line-2);animation:呼吸 1.2s ease-in-out infinite}
.skel.w30{width:30%}.skel.w60{width:60%;margin-top:var(--s2)}.skel.w90{width:90%;margin-top:var(--s2)}
@keyframes 呼吸{0%,100%{opacity:.55}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){
  .toast{transition:none}
  .skel{animation:none}
}

/* index 的可折叠区块（带 summary）。今日跟进同名不同义，那边改叫 .节（K6）。 */
.段{margin:var(--s4) 0 var(--s5)}
.段 > summary{font-size:var(--t3);font-weight:650;margin:0 0 var(--s3);
    display:flex;align-items:baseline;gap:var(--s2);list-style:none;cursor:pointer}
.段 > summary::-webkit-details-marker{display:none}
.段 > summary::before{content:"▾";color:var(--ink-3);font-size:var(--t5)}
.段 > summary:focus-visible{outline:2px solid var(--signal-ink);outline-offset:2px;border-radius:3px}
details.段:not([open]) > summary::before{content:"▸"}

/* 第 6b 片：单页壳打印只留话术区。侧栏 / 列表栏外壳 / 顶栏靠 visibility 藏，
   不能 display:none 列表栏——话术区住在它里面，父级一藏子级也没了。 */
@media print{
  body *{visibility:hidden}
  .话术区,.话术区 *{visibility:visible}
  .话术区{position:absolute;left:0;top:0;width:100%;padding:0}
  .话术区 .话术动作,.话术区 button,.话术区 .筛{display:none !important}
  html,body,.壳,.列表栏{height:auto !important;overflow:visible !important;background:#fff}
}
