:root{
  /* ── 骨相（2026-09-07）：扩现网变量，旧名当别名；禁止另起第二套主题 ── */
  --bg:#F5F7FA;/* was #EEF1F6 试亮一档 */--card:#FFFFFF;--panel:#FFFFFF;
  --subtle:#E8EDF4;--hover:#DDE5F0;--panel2:var(--subtle);
  --ink:#0B1220;--ink2:#1E293B;--ink3:#475569;--muted:#6B7280;--soft:#9CA3AF;
  --accent:#1D4ED8;--accent2:#1E40AF;--accent-soft:#DBEAFE;--accent3:var(--accent-soft);
  --mint:#10B981;--mint2:#059669;--mint3:#D1FAE5;  /* 翡翠绿 绿系 */
  --peach:#E8723A;--peach2:#D4622B;--peach3:#FFF4ED;  /* 蜜橙 暖橙系 */
  --mauve:#8B5CF6;--mauve2:#7C3AED;--mauve3:#EDE9FE;  /* 薰紫 紫系 */
  --line:rgba(15,23,42,.10);--line2:rgba(15,23,42,.14);--border:var(--line);
  --ok:#059669;--danger:#DC2626;
  --warn:#F59E0B;--warn-light:#FEF3C7;
  --destructive-light:#FEF2F2;
  --radius-sm:8px;--radius:12px;--radius-card:12px;--radius-chip:8px;
  --shadow:0 1px 2px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.05);
  --stroke-inset-neutral:inset 0 0 0 1px rgba(15,23,42,.06);
  --stroke-inset:inset 0 0 0 1px rgba(15,23,42,.12);
  --focus-ring:none;--cfu-select-focus-ring:none;
  /* 2026-07-27 全站去楷体：--serif 变量名保留（几十处引用不动），值改为无衬线栈，与正文 --sans 同族 */
  --serif:"IBM Plex Sans","PingFang SC","Hiragino Sans GB","Microsoft YaHei",-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;

  /* ── 侧边栏（壳 B：白底 + 浅灰选中块） ── */
  --sidebar-bg:#FFFFFF;
  --sidebar-fg:var(--ink);
  --sidebar-muted:#9CA3AF;
  --sidebar-accent:var(--accent);
  --sidebar-hover:var(--hover);
  --sidebar-active:var(--subtle);
  --sidebar-border:var(--line);

  /* ── 语义标签色（冷调清透） ── */
  --tag-active-bg:#D1FAE5; --tag-active-fg:#059669; --tag-active-bd:#A7F3D0;
  --tag-pending-bg:#FFF4ED;--tag-pending-fg:#C2410C;--tag-pending-bd:#FED7AA;
  --tag-quote-bg:#FFF4ED;  --tag-quote-fg:#C2410C;  --tag-quote-bd:#FED7AA;
  --tag-won-bg:#D1FAE5;   --tag-won-fg:#047857;   --tag-won-bd:#6EE7B7;
  --tag-lost-bg:#F3F4F6;  --tag-lost-fg:#6B7280;  --tag-lost-bd:#D1D5DB;
  --tag-cold-bg:#EDE9FE;  --tag-cold-fg:#6D28D9;  --tag-cold-bd:#C4B5FD;
  --tag-hot-bg:#FEE2E2;   --tag-hot-fg:#DC2626;   --tag-hot-bd:#FECACA;
  --tag-deal-bg:#FEF3C7;  --tag-deal-fg:#A16207;  --tag-deal-bd:#FDE68A;
  --tag-default-bg:var(--accent-soft);--tag-default-fg:var(--accent);--tag-default-bd:var(--line);

  /* ── 语义四态（2026-09-07 1124）：只服务台阶／异议／状态芯片；禁止刷列表行／KPI／侧栏 ── */
  --state-resolved-fg:#047857;--state-resolved-bg:#ECFDF5;--state-resolved-bd:rgba(4,120,87,.12);
  --state-walking-fg:#1D4ED8; --state-walking-bg:#EFF6FF; --state-walking-bd:rgba(29,78,216,.12);
  --state-blocked-fg:#C2410C; --state-blocked-bg:#FFF7ED; --state-blocked-bd:rgba(194,65,12,.12);
  --state-reverted-fg:#BE123C;--state-reverted-bg:#FFF1F2;--state-reverted-bd:rgba(190,18,60,.12);
  --state-none-fg:var(--ink);--state-none-bg:var(--subtle);--state-none-bd:rgba(15,23,42,.06);

  /* ── 结构色 ── */
  --thead-bg:var(--ink);   --thead-fg:var(--card);
  --group-bg:var(--accent-soft);--group-fg:var(--accent);
  --hover-border:var(--accent);
  --required:var(--danger);

  /* ── 骨相字阶／字重一层；旧 --fs-* 当别名。页标题字号 --fs-2xl 本卡不收口，字重收为 600 ── */
  --fs-page:18px;
  --fs-section:14px;
  --fs-body:14px;
  --fs-control:13px;
  --fs-label:12px;
  --fs-meta:12px;
  --fs-micro:10.5px;
  --fw-regular:400;--fw-title:500;--fw-page:600;--fw-kpi:700;
  --fs-2xs:var(--fs-label);
  --fs-xs:var(--fs-control);
  --fs-sm:var(--fs-body);
  --fs-md:15px;
  --fs-base:var(--fs-body);
  --fs-lg:16px;
  --fs-xl:20px;
  --fs-2xl:24px;

  /* ── 暖橙点缀色（呼应登录页品牌识别，仅作点缀不作主色） ── */
  --brand-warm:#C2410C;       /* 加深版，对比度 5.2:1，色弱友好；与登录页同源暖橙系 */
  --brand-warm-soft:#FFF4ED;  /* 暖橙浅底 */
  --brand-warm-bd:#FED7AA;    /* 暖橙边框 */
  --sysnav-w:200px;
  --sysnav-rail-w:52px;
  --sysnav-font:"IBM Plex Sans","PingFang SC","Hiragino Sans GB","Microsoft YaHei",-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;  /* 2026-07-27 由霞鹜文楷改为无衬线 */
}
/* ── 全局 [hidden] 兜底（1659 批6D｜UI-01）：作者样式里的 display:flex/grid 会盖掉
   浏览器默认的 [hidden]{display:none}（作者规则优先于 UA 规则，与选择器权重无关），
   导致任何用 hidden 属性控制显隐的元素照常显示。此处加最小一条兜底。
   全仓页面级 [hidden] 特例方向一致（均为 display:none / :not([hidden])），不冲突。
   必须落在本文件：tokens.css 是被全部 24 个页面模板引用的骨相基座，且 !important 使
   其不受加载顺序影响；不新建第二套变量或样式体系。 ── */
[hidden]{display:none!important}

/* 骨相焦点：边色换 accent 的 1px 实线；:where 零特异性，页级规则仍可覆盖 */
:where(a,button,[href],[tabindex]:not([tabindex="-1"])):focus-visible{
  outline:1px solid var(--accent);outline-offset:0;
}
:where(input[type="checkbox"],input[type="radio"]):focus-visible{
  outline:1px solid var(--accent);outline-offset:0;
}
:where(input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]),select,textarea):focus,
:where(input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]),select,textarea):focus-visible{
  outline:none;border-color:var(--accent);box-shadow:none;
}
/* ── 主页面滚动条：细而淡，不抢视线（仅 html 主滚动条，不影响内部容器） ── */
html::-webkit-scrollbar{width:8px;height:8px}
html::-webkit-scrollbar-track{background:transparent}
html::-webkit-scrollbar-thumb{background:rgba(120,113,108,.25);border-radius:8px;border:2px solid transparent;background-clip:padding-box}
html::-webkit-scrollbar-thumb:hover{background:rgba(120,113,108,.45);background-clip:padding-box}
/* Firefox */
html{scrollbar-width:thin;scrollbar-color:rgba(120,113,108,.3) transparent}

/* ── 全局：隐藏 number 输入框的上下箭头（spinner） ── */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
input[type="number"]{-moz-appearance:textfield;appearance:textfield}

/* ── 全局：数字输入框聚焦时全选内容（二次输入自动清零） ── */
input[type="number"]:focus{cursor:text}

/* ── 普通侧边栏页面统一标题；作战台、报价工作台使用各自专用头部。 ── */
html h1.sysnav-page-title{position:static;margin:0;padding:0;color:var(--ink);font-family:var(--sysnav-font);font-size:var(--fs-2xl);font-weight:var(--fw-page);line-height:1.25;letter-spacing:-.02em}
html h1.sysnav-page-title::before{content:none;display:none}

/* ── 语义四态工具类（2026-09-07 1124）────────────────────────────
   只服务台阶／异议／同类状态芯片；禁止刷普通列表行、KPI、侧栏。
   态：is-resolved 已解决／is-walking 正在走／is-blocked 卡住／is-reverted 已回退／is-none 空·未标记。
   字重一律 400；状态小字 .st 小于主标签；有状态的台阶左侧 4px 色条取当前字色。 */
.state-chip{
  display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:3px 9px;
  border:0;border-radius:var(--radius-chip);
  background:var(--state-none-bg);color:var(--state-none-fg);box-shadow:inset 0 0 0 1px var(--state-none-bd);
  font-size:var(--fs-control);font-weight:var(--fw-regular);line-height:1.3;
}
.state-step{
  position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  min-height:46px;padding:7px 10px 6px 14px;
  border:0;border-radius:var(--radius-chip);
  background:var(--state-none-bg);color:var(--state-none-fg);box-shadow:inset 0 0 0 1px var(--state-none-bd);
  font-size:var(--fs-control);font-weight:var(--fw-regular);line-height:1.25;text-align:center;
}
.state-step::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:currentColor}
.state-step.is-none::before{content:none;display:none}
.state-chip .st,.state-step .st{
  font-size:var(--fs-micro);font-weight:var(--fw-regular);line-height:1.15;color:currentColor;opacity:.85;
}
.state-chip.is-resolved,.state-step.is-resolved{color:var(--state-resolved-fg);background:var(--state-resolved-bg);box-shadow:inset 0 0 0 1px var(--state-resolved-bd)}
.state-chip.is-walking,.state-step.is-walking{color:var(--state-walking-fg);background:var(--state-walking-bg);box-shadow:inset 0 0 0 1px var(--state-walking-bd)}
.state-chip.is-blocked,.state-step.is-blocked{color:var(--state-blocked-fg);background:var(--state-blocked-bg);box-shadow:inset 0 0 0 1px var(--state-blocked-bd)}
.state-chip.is-reverted,.state-step.is-reverted{color:var(--state-reverted-fg);background:var(--state-reverted-bg);box-shadow:inset 0 0 0 1px var(--state-reverted-bd)}
.state-chip.is-none,.state-step.is-none{color:var(--state-none-fg);background:var(--state-none-bg);box-shadow:inset 0 0 0 1px var(--state-none-bd)}

/* ── 全站统一态 A–G（2026-09-07 1129）：与客户列表页底内联样例同构 ──
   只用骨相令牌；焦点 1px accent 实线；芯片／条幅 inset 发丝；禁 soft glow、禁 999 胶囊。 */

/* A · 空态：无图标占位；短中文；可选一个次要动作 */
.empty-state{padding:28px 16px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--ink2);font-size:var(--fs-body);font-weight:var(--fw-regular);line-height:1.5}
.empty-state .es-icon{display:none}
.empty-state .es-text{font-size:var(--fs-body);line-height:1.5;color:var(--ink2);font-weight:var(--fw-regular)}
.empty-state .es-action,.empty-state .sec-act,.empty-state>button{
  height:32px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-chip);
  background:var(--card);font-size:var(--fs-control);font-weight:var(--fw-regular);color:var(--ink3);
  cursor:pointer;font-family:inherit;
}
.empty-state .es-action:hover,.empty-state .sec-act:hover,.empty-state>button:hover{border-color:var(--accent);color:var(--accent)}
.empty-state .es-action:focus,.empty-state .sec-act:focus,.empty-state>button:focus,
.empty-state .es-action:focus-visible,.empty-state .sec-act:focus-visible,.empty-state>button:focus-visible{
  outline:none;border-color:var(--accent);box-shadow:none;
}

/* B · 加载：3–4 条骨架，--subtle 脉冲 */
.skel{display:flex;flex-direction:column;gap:10px;padding:8px 0}
.skel i,.skel-line{
  display:block;height:12px;border-radius:4px;background:var(--subtle);
  animation:jx-skel-pulse 1.4s ease-in-out infinite;
}
.skel i.block,.skel-line.block{height:56px}
.skel i:nth-child(1),.skel-line:nth-child(1){width:40%}
.skel i:nth-child(2),.skel-line:nth-child(2){width:100%}
.skel i:nth-child(3),.skel-line:nth-child(3){width:78%}
.skel i:nth-child(4),.skel-line:nth-child(4){width:62%}
@keyframes jx-skel-pulse{0%,100%{opacity:1}50%{opacity:.42}}
@media(prefers-reduced-motion:reduce){.skel i,.skel-line{animation:none}}

/* C · 错误 / fail-closed：inset 发丝、冷静措辞位、次要重试，不硬饱和描边 */
.inline-error{
  display:flex;flex-direction:column;align-items:flex-start;gap:10px;
  padding:14px;border:0;border-radius:var(--radius-chip);
  background:var(--state-reverted-bg);color:var(--ink2);
  box-shadow:inset 0 0 0 1px var(--state-reverted-bd);
  font-size:13.5px;font-weight:var(--fw-regular);line-height:1.5;
}
.inline-error .ie-retry{
  align-self:flex-start;height:32px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-chip);
  background:var(--card);color:var(--ink2);font-size:var(--fs-control);font-weight:var(--fw-regular);
  cursor:pointer;font-family:inherit;
}
.inline-error .ie-retry:hover{border-color:var(--accent);color:var(--accent);background:var(--card)}
.inline-error .ie-retry:focus,.inline-error .ie-retry:focus-visible{outline:none;border-color:var(--accent);box-shadow:none}

/* F · 表单控件密度：标签 12／400／ink3；控件 13；高 36；浅灰底 */
.jx-field{margin-bottom:12px}
.jx-field>label{display:block;font-size:var(--fs-label);font-weight:var(--fw-regular);color:var(--ink3);margin-bottom:5px}
.jx-field input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]),
.jx-field select{
  width:100%;height:36px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-chip);
  background:var(--subtle);color:var(--ink);font-size:var(--fs-control);font-weight:var(--fw-regular);font-family:inherit;
}
.jx-field textarea{
  width:100%;min-height:64px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-chip);
  background:var(--subtle);color:var(--ink);font-size:var(--fs-control);font-weight:var(--fw-regular);font-family:inherit;
  resize:vertical;line-height:1.5;
}
.jx-field input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):focus,
.jx-field input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):focus-visible,
.jx-field select:focus,.jx-field select:focus-visible,
.jx-field textarea:focus,.jx-field textarea:focus-visible{
  outline:none;background:var(--card);border-color:var(--accent);box-shadow:none;
}
