
@font-face{font-family:JetBrainsMono;src:url("https://cdn.jsdelivr.net/gh/tw93/Kami@main/assets/fonts/JetBrainsMono.woff2") format("woff2");font-display:swap}


:root {
  /* ── Paper · 暖纸张 ─────────────────────────────────────────── */
  --parchment:   #f5f4ed;
  --canvas:      #f5f4ed;    /* alias · IFR 用 */
  --ivory:       #faf9f5;
  --paper:       #faf9f5;    /* alias · IFR 用 */
  --paper-2:     #f2f0e8;    /* IFR 第三层 paper */
  --warm-sand:   #e8e6dc;
  --border:      #e8e6dc;
  --border-soft: #e5e3d8;
  --line:        #e5e3d8;
  --line-soft:   #eceadf;

  /* ── Ink · 暖中性灰 ────────────────────────────────────────── */
  --deep-dark:    #141413;
  --near-black:   #141413;
  --ink:          #141413;    /* alias · IFR 用 */
  --dark-warm:    #3d3d3a;
  --ink-2:        #3d3d3a;    /* alias */
  --olive:        #504e49;
  --muted:        #504e49;    /* alias */
  --stone:        #6b6a64;
  --faint:        #6b6a64;    /* alias */
  --dark-surface: #30302e;

  /* ── Brand · ink-blue 唯一品牌色 ─────────────────────────── */
  --brand:       #1B365D;
  --brand-light: #2D5A8A;
  --navy:        #1B365D;    /* alias · IFR 用 */
  --navy-bg:     #e8edf4;
  --accent:      #1B365D;    /* alias */
  --green:       #1B365D;    /* legacy alias · 旧 surface 仍用 */
  --green-dark:  #2D5A8A;
  --green-soft:  rgba(27, 54, 93, 0.10);
  --china:       #1B365D;    /* 中国数据色 · IFR 用 */
  --mr-primary:  #1B365D;    /* market report alias */

  /* ── 数据语义色（IFR 用 · 仅数据 tag · 不做 UI chrome）─── */
  --amber:  #b45309;
  --rose:   #9f1239;
  --blue:   #0369a1;
  --sage:   #047857;
  --purple: #6d28d9;
  --tag-red:    #dc2626;
  --tag-amber:  #b45309;
  --tag-yellow: #facc15;
  --tag-green:  #16803c;

  /* ── 实/虚 tag bg+txt（IFR signal pill） ─────────────────── */
  --real-bg: #d1fae5; --real-txt: #065f46;
  --syn-bg:  #ede9fe; --syn-txt:  #4c1d95;

  /* ── 图表辅助色 ─────────────────────────────────────────── */
  --chart-grid:      #eee8dc;
  --chart-secondary: #8f8a80;

  /* ── 字体堆栈 · 真 KAMI ──────────────────────────────────── */
  /* KAMI 原版：Charter 拉丁衬线 + TsangerJinKai02 中文衬线 + JetBrains Mono */
  --serif: Charter, "Songti SC", "Noto Serif SC", "Source Han Serif SC", Georgia, Palatino, serif;
  /* KAMI 全站 sans = serif（衬线即正文）· 但 IFR 把 sans 单独定义为同源中文衬线 stack */
  --sans:  -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", Arial, sans-serif;
  --mono:  "JetBrainsMono", "SF Mono", Consolas, Monaco, monospace;
  /* 历史 fengtalk-marketing alias · 保留兼容已 deploy surface */
  --font-sans:  var(--sans);
  --font-zh:    var(--sans);
  --font-serif: var(--serif);
  --font-mono:  var(--mono);

  /* ── 字号 · IFR 配比 ────────────────────────────────────── */
  --fs-section: clamp(28px, 3.4vw, 44px);
  --fs-page-title: clamp(38px, 4.3vw, 58px);
  --fs-entity-title: clamp(34px, 3.8vw, 52px);
  --fs-page-title-mobile: clamp(34px, 10vw, 48px);
  --fs-card:    clamp(22px, 2.6vw, 32px);
  --fs-block:   20px;
  --fs-faq:     17px;
  --fs-lead:    18px;
  --fs-body:    14px;
  --fs-micro:   12px;
  --fs-kicker:  12px;

  /* ── 行高 · 永远 ≤ 1.55 ────────────────────────────────── */
  --lh-tight:   1.15;
  --lh-snug:    1.3;
  --lh-normal:  1.45;
  --lh-relaxed: 1.55;

  /* ── 间距 ─────────────────────────────────────────────────── */
  --max-content:      72rem;
  --content-max:       940px;     /* IFR 用 */
  --sidebar-w:         252px;     /* IFR 用 */
  --slide-pad:         80px;      /* KAMI 用 */
  --space-section-y:   96px;
  --space-section-x:   24px;
  --space-card:        36px;
  --space-card-sm:     28px;
  --space-stack:       40px;
  --space-row:         16px;
  --space-tight:       8px;
  --space-x-tight:     4px;

  /* ── 圆角 ─────────────────────────────────────────────────── */
  --radius-card:    24px;
  --radius-card-sm: 20px;
  --radius-panel:   16px;
  --radius-input:   10px;
  --radius-pill:    9999px;

  /* ── 阴影 · 克制 ───────────────────────────────────────── */
  --shadow-1: 0 1px 3px rgba(20, 20, 19, 0.06), 0 4px 16px rgba(20, 20, 19, 0.04);
  --shadow-2: 0 2px 6px rgba(20, 20, 19, 0.08), 0 12px 36px rgba(20, 20, 19, 0.06);
  --shadow:   var(--shadow-1);

  /* ── 描边 ─────────────────────────────────────────────────── */
  --border-hair:  1px solid var(--warm-sand);
  --border-firm:  1px solid var(--line);

  /* ── Motion ────────────────────────────────────────────── */
  --dur-short:    160ms;
  --dur-medium:   320ms;
  --ease-default: cubic-bezier(0.4, 0, 0.2, 1);

  /* ── tracking ────────────────────────────────────────────── */
  --track-tight:   -0.02em;
  --track-display: -0.025em;
  --track-kicker:  0.14em;
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-short: 0.01ms; --dur-medium: 0.01ms; }
}

/* 全局 baseline · 所有 surface 共用 · KAMI 全站衬线 */
* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: var(--serif);
  font-size: var(--fs-body);
  line-height: var(--lh-relaxed);
  color: var(--near-black);
  background: var(--parchment);
  letter-spacing: 0.1px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "tnum" 1, "lnum" 1;
}
a { color: inherit; text-decoration: none; }
code, pre, .mono { font-family: var(--mono); }


/* ── 标题 · 默认走 zh 字体（含中文显示） ─────────────────────── */
h1, h2, h3, h4 {
  font-family: var(--font-zh);
  font-weight: 500;
  letter-spacing: var(--track-tight);
  color: var(--near-black);
  margin: 0;
}
h1 { font-size: var(--fs-section); line-height: var(--lh-tight); font-weight: 700; }
h2 { font-size: var(--fs-card);    line-height: var(--lh-snug); }
h3 { font-size: var(--fs-block);   line-height: var(--lh-snug); }
h4 { font-size: 16px;              line-height: var(--lh-normal); font-weight: 700; }

/* ── 拉丁数字 / 单位用 serif（KPI 数字脸） ─────────────────────── */
.num, .stage-num, .kpi-num {
  font-family: var(--font-serif);
  font-weight: 400;
  letter-spacing: var(--track-tight);
  font-feature-settings: "tnum" 1, "lnum" 1;
}

/* ── kicker · 章节小标签（// 项目工作台） ───────────────────── */
.kicker {
  font-family: var(--font-mono);
  font-size: var(--fs-kicker);
  font-weight: 600;
  letter-spacing: var(--track-kicker);
  text-transform: uppercase;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.kicker::before { content: '// '; }

/* ── 按钮 · 一份正式态 + 一份次态 ─────────────────────────── */
.btn-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 13px 28px;
  border: none;
  border-radius: var(--radius-pill);
  background: var(--near-black);
  color: var(--parchment);
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  transition: opacity var(--dur-short) var(--ease-default);
  text-decoration: none;
}
.btn-pill:hover { opacity: 0.82; }
.btn-pill:disabled { opacity: 0.4; cursor: not-allowed; }

.btn-pill-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 12px 28px;
  border: 1.5px solid var(--near-black);
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--near-black);
  font-family: var(--font-sans);
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--dur-short) var(--ease-default), color var(--dur-short) var(--ease-default);
  text-decoration: none;
}
.btn-pill-outline:hover { background: var(--near-black); color: var(--parchment); }

/* ── 卡片 · ivory 填充 + warm-sand 描边 ──────────────────────── */
.card {
  background: var(--ivory);
  border: var(--border-hair);
  border-radius: var(--radius-card);
  padding: var(--space-card);
}
.card-sm {
  background: var(--ivory);
  border: var(--border-hair);
  border-radius: var(--radius-card-sm);
  padding: var(--space-card-sm);
}

/* ── pill 标签 · 数据 chip ─────────────────────────────────── */
.pill-tag {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border-radius: var(--radius-pill);
  font-size: var(--fs-kicker);
  font-weight: 600;
  border: 1px solid var(--accent);
  background: transparent;
  color: var(--accent);
  letter-spacing: 0;
}
.pill-tag--dark {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.1);
  color: var(--accent-soft);
}
.pill-tag--red    { border-color: var(--tag-red);    color: var(--tag-red); }
.pill-tag--amber  { border-color: var(--tag-amber);  color: var(--tag-amber); }
.pill-tag--green  { border-color: var(--tag-green);  color: var(--tag-green); }

/* ── 阶段编号大字 · 01 / 02 ───────────────────────────────── */
.stage-num {
  font-family: var(--font-serif);
  font-size: 42px;
  font-weight: 400;
  color: var(--accent);
  line-height: 1;
  letter-spacing: var(--track-tight);
}

/* ── 分割线 ────────────────────────────────────────────────── */
.section-divider {
  border: 0;
  border-top: var(--border-hair);
  margin: var(--space-stack) 0;
}

/* ── 容器 · 居中 + max-width ──────────────────────────────── */
.container {
  width: 100%;
  max-width: var(--max-content);
  margin: 0 auto;
  padding: 0 var(--space-section-x);
}

/* ── 段落 · body 默认 ─────────────────────────────────────── */
p { margin: 0 0 12px; line-height: var(--lh-relaxed); color: var(--charcoal-warm); }
p.lead { font-size: var(--fs-lead); color: var(--charcoal-warm); }
p.muted { color: var(--olive); }

/* ── 链接强调态 · em 走 accent italic（BRAND signature） ─── */
em { font-style: italic; color: var(--accent); font-weight: inherit; }
strong { color: var(--near-black); font-weight: 600; }

/* ── 表格 baseline · 数据表通用 ──────────────────────────── */
table.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-body);
}
table.data-table th,
table.data-table td {
  padding: 10px 12px;
  border-bottom: var(--border-soft);
  text-align: left;
}
table.data-table th {
  font-weight: 600;
  color: var(--olive);
  font-size: var(--fs-micro);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  background: var(--parchment);
}
table.data-table td.num,
table.data-table th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* ── KPI strip · 报告里高频 ─────────────────────────────── */
.kpi-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--space-row);
}
.kpi {
  background: var(--ivory);
  border: var(--border-hair);
  border-radius: var(--radius-card-sm);
  padding: 20px 24px;
}
.kpi-label {
  display: block;
  font-size: var(--fs-micro);
  color: var(--olive);
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}
.kpi-num,
.kpi strong {
  display: block;
  font-family: var(--font-serif);
  font-size: 28px;
  color: var(--near-black);
  font-feature-settings: "tnum" 1, "lnum" 1;
}
.kpi-foot {
  display: block;
  margin-top: 6px;
  font-size: var(--fs-micro);
  color: var(--stone);
}

/* ── 降级提示 · 数据降级 / 本章不可用 ─────────────────────── */
.fallback-frame {
  background: var(--parchment);
  border: 1px dashed var(--line);
  border-radius: var(--radius-card-sm);
  padding: 28px 32px;
  color: var(--olive);
  font-size: var(--fs-body);
  line-height: var(--lh-relaxed);
}
.fallback-frame .fallback-label {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: var(--fs-kicker);
  font-weight: 600;
  letter-spacing: var(--track-kicker);
  text-transform: uppercase;
  color: var(--olive);
  margin-bottom: 8px;
}

/* ── 反 AI slop · 兜底禁令 ─────────────────────────────── */
/* 这些样式不该存在，但万一 surface 注入了，强制覆盖 */
[style*="linear-gradient"][style*="purple"],
[style*="linear-gradient"][style*="violet"] {
  background: var(--parchment) !important;
}
