/* ====================================
   INSIGHT · Wefluens 流量金融洞察台
   苹果风 · 深炭 + 米白 + 香槟金
   ==================================== */

* { box-sizing: border-box; }
:root {
  --bg: #faf8f3;
  --bg-soft: #f3f0e8;
  --paper: #ffffff;
  --ink: #0e0e10;
  --ink-soft: #5a5a60;
  --ink-mute: #9a9a9f;
  --line: #e8e4d8;
  --line-soft: #efece3;
  --gold: #b8924c;
  --gold-soft: #d9be8a;
  --gold-bg: #f5ecd9;
  --good: #2f7a52;
  --good-bg: #e6f1eb;
  --warn: #a87a2f;
  --warn-bg: #f7eed8;
  --bad: #a83232;
  --bad-bg: #f4dedc;
  --shadow-xs: 0 1px 2px rgba(15, 15, 18, 0.04);
  --shadow-sm: 0 2px 12px rgba(15, 15, 18, 0.05);
  --shadow-md: 0 12px 36px rgba(15, 15, 18, 0.08);
  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 20px;
  --r-xl: 28px;
  --font-en: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --font-zh: -apple-system, BlinkMacSystemFont, 'PingFang SC', system-ui, 'Helvetica Neue', sans-serif;
  --font-serif: 'Noto Serif SC', 'Songti SC', serif;
}

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-zh);
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a { color: var(--gold); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ====================================
   Topbar
   ==================================== */
.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 32px;
  background: rgba(250, 248, 243, 0.86);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid var(--line-soft);
}
.brand {
  display: flex;
  align-items: baseline;
  gap: 14px;
}
.brand-mark {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 18px;
  letter-spacing: 0.18em;
  color: var(--ink);
}
.brand-sub {
  font-size: 12px;
  letter-spacing: 0.08em;
  color: var(--ink-mute);
}
.top-right {
  display: flex;
  align-items: center;
  gap: 12px;
}
.key-chip {
  font-size: 12px;
  padding: 6px 12px;
  border-radius: 999px;
  background: var(--warn-bg);
  color: var(--warn);
  letter-spacing: 0.04em;
}
.key-chip.ok {
  background: var(--good-bg);
  color: var(--good);
}
.cost-chip {
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  border: 0;
  background: var(--bg-soft);
  color: var(--ink-soft);
  transition: all .15s;
  font-family: var(--font-en);
  letter-spacing: 0.02em;
}
.cost-chip:hover {
  background: var(--gold-bg);
  color: var(--gold);
}
.cost-chip.warn {
  background: var(--bad-bg);
  color: var(--bad);
}

/* === Usage modal === */
.usage-modal-box {
  width: 720px;
  max-width: 92%;
}
.usage-modal-body {
  max-height: 70vh;
  overflow-y: auto;
}
.usage-stat-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 18px;
}
.usage-stat-block {
  padding: 14px 16px;
  background: var(--bg-soft);
  border-radius: var(--r-sm);
}
.usage-stat-block:first-child {
  background: linear-gradient(135deg, var(--ink), #2c2c30);
  color: #fff;
}
.usage-stat-block:first-child .usage-stat-label { color: rgba(255,255,255,0.65); }
.usage-stat-block:first-child .usage-stat-val { color: var(--gold-soft); }
.usage-stat-label {
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  margin-bottom: 6px;
}
.usage-stat-val {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 22px;
  color: var(--ink);
  letter-spacing: -0.02em;
}
.usage-stat-val.small { font-size: 16px; }
.usage-note {
  margin: 0 0 14px;
  font-size: 11px;
  color: var(--ink-mute);
  line-height: 1.6;
}
.usage-list { margin-top: 8px; }
.usage-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
}
.usage-table th {
  padding: 8px 10px;
  background: var(--bg-soft);
  font-weight: 600;
  text-align: left;
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.usage-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--line-soft);
  color: var(--ink-soft);
}
.usage-table td.num { text-align: right; font-family: var(--font-en); }
.usage-table td.strong { color: var(--ink); font-weight: 600; }
.usage-table .kind-pill {
  display: inline-block;
  padding: 2px 6px;
  background: var(--gold-bg);
  color: var(--gold);
  border-radius: 3px;
  font-size: 10px;
  font-weight: 600;
}
.usage-subject {
  max-width: 180px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.usage-model { font-family: var(--font-en); font-size: 10px; color: var(--ink-mute); }
.ghost-btn {
  font: inherit;
  font-size: 13px;
  padding: 7px 16px;
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink);
  cursor: pointer;
  transition: all .18s ease;
}
.ghost-btn:hover { background: var(--bg-soft); border-color: var(--ink-mute); }

/* ====================================
   Hero
   ==================================== */
.hero {
  position: relative;
  padding: 80px 32px 60px;
  overflow: hidden;
}
.hero-inner {
  max-width: 1180px;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}
.hero-eyebrow {
  font-family: var(--font-en);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.24em;
  color: var(--gold);
  text-transform: uppercase;
  margin-bottom: 28px;
}
.hero-title {
  font-family: var(--font-serif);
  font-size: clamp(40px, 6vw, 72px);
  line-height: 1.15;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin: 0 0 28px;
  color: var(--ink);
}
.hero-title .gold {
  color: var(--gold);
  font-style: italic;
}
.hero-sub {
  max-width: 640px;
  font-size: 18px;
  color: var(--ink-soft);
  line-height: 1.7;
  margin: 0;
}
.hero-deco {
  position: absolute;
  top: -10%;
  right: -10%;
  width: 720px;
  height: 720px;
  background: radial-gradient(circle at center, rgba(184, 146, 76, 0.16), transparent 60%);
  pointer-events: none;
  z-index: 1;
}

/* ====================================
   Tabs
   ==================================== */
.tabs {
  position: sticky;
  top: 60px;
  z-index: 40;
  display: flex;
  gap: 4px;
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 32px 0;
  border-bottom: 1px solid var(--line-soft);
  background: rgba(250, 248, 243, 0.92);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}
.tab {
  font: inherit;
  font-size: 14px;
  padding: 16px 18px;
  background: transparent;
  border: none;
  color: var(--ink-mute);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color .18s ease, border-color .18s ease;
}
.tab:hover { color: var(--ink-soft); }
.tab.active {
  color: var(--ink);
  border-bottom-color: var(--gold);
  font-weight: 500;
}

/* ====================================
   Main / Panel
   ==================================== */
main {
  max-width: 1180px;
  margin: 0 auto;
  padding: 36px 32px 120px;
}
.panel { display: none; animation: fadeIn .35s ease; }
.panel.active { display: block; }
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ====================================
   Input Card
   ==================================== */
.input-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
  margin-bottom: 28px;
}
.input-card.alt {
  background: linear-gradient(180deg, #fff 0%, #fbf6ea 100%);
}

/* === 模式 A/B 双列网格 === */
.mode-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 28px;
}
@media (max-width: 880px) {
  .mode-grid { grid-template-columns: 1fr; gap: 16px; }
}
.mode-card { margin-bottom: 0; padding: 24px; }
.mode-card.alt-soft {
  background: linear-gradient(180deg, #fff 0%, #f6fbf5 100%);
}
.mode-tag {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  padding: 4px 10px;
  border-radius: 999px;
  margin-bottom: 12px;
}
.mode-tag-b { background: var(--gold-bg); color: var(--gold); }
.mode-tag-a { background: var(--good-bg); color: var(--good); }
.mode-tag-c { background: var(--warn-bg); color: var(--warn); }
.mode-tag-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.mode-tag-row .mode-tag { margin-bottom: 0; }
.mode-tag-or {
  font-size: 13px;
  color: var(--ink-mute);
}
.mode-tag-auto {
  font-size: 11px;
  color: var(--ink-mute);
  letter-spacing: 0.08em;
  margin-left: 4px;
  padding: 4px 10px;
  border: 1px dashed var(--line);
  border-radius: 999px;
}
.mode-h {
  margin: 0 0 10px;
  font-family: var(--font-serif);
  font-size: 22px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.3;
}
.mode-desc {
  margin: 0 0 16px;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.7;
}
.mode-desc strong { color: var(--ink); font-weight: 600; }

/* === FileUploader === */
.file-uploader {
  margin-top: 12px;
}
.file-drop {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 14px;
  background: rgba(184, 146, 76, 0.04);
  border: 1.5px dashed var(--line);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: all .18s ease;
  text-align: center;
}
.file-drop:hover { border-color: var(--gold-soft); background: rgba(184, 146, 76, 0.08); }
.file-drop.drag {
  border-color: var(--gold);
  background: var(--gold-bg);
  transform: scale(1.005);
}
.file-input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
}
.file-drop-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--ink-soft);
  pointer-events: none;
  flex-wrap: wrap;
  justify-content: center;
}
.file-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--gold-bg);
  color: var(--gold);
  font-weight: 600;
  font-size: 16px;
  line-height: 1;
}
.file-hint {
  font-size: 11px;
  color: var(--ink-mute);
  letter-spacing: 0.02em;
}
.file-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.file-list:empty { display: none; }
.file-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px 6px 6px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 12px;
  color: var(--ink);
  max-width: 280px;
}
.file-chip-ext {
  display: inline-block;
  padding: 2px 8px;
  background: var(--ink);
  color: #fff;
  border-radius: 999px;
  font-family: var(--font-en);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.file-chip-name {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 160px;
}
.file-chip-size {
  color: var(--ink-mute);
  font-size: 11px;
  font-family: var(--font-en);
}
.file-remove {
  font: inherit;
  font-size: 16px;
  line-height: 1;
  width: 18px;
  height: 18px;
  background: var(--line-soft);
  border: none;
  border-radius: 50%;
  color: var(--ink-soft);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.file-remove:hover { background: var(--bad-bg); color: var(--bad); }

/* ====================================
   Talent Roster
   ==================================== */
.roster-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 24px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}
.roster-sub {
  margin: 12px 0 0;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.7;
  max-width: 640px;
}
.roster-sub strong { color: var(--ink); }
.roster-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.roster-actions .danger-btn {
  color: var(--bad);
  border-color: var(--bad-bg);
}
.roster-actions .danger-btn:hover {
  background: var(--bad-bg);
  border-color: var(--bad);
}
.roster-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
.talent-card {
  background: linear-gradient(180deg, #fff, #fbf7ec);
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 16px;
  transition: transform .15s, box-shadow .15s;
}
.talent-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
.talent-card-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}
.talent-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--ink);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 18px;
}
.talent-meta { flex: 1; min-width: 0; }
.talent-name {
  font-weight: 600;
  font-size: 14px;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.talent-handle {
  font-size: 12px;
  color: var(--ink-mute);
  font-family: var(--font-en);
}
.talent-tier {
  font-size: 10px;
  padding: 3px 8px;
  background: var(--gold-bg);
  color: var(--gold);
  border-radius: 4px;
  font-weight: 600;
  letter-spacing: 0.04em;
  white-space: nowrap;
}
.talent-stats {
  display: flex;
  justify-content: space-between;
  padding: 12px 0;
  border-top: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
}
.talent-stats .stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1;
}
.talent-stats .stat-num {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 16px;
  color: var(--ink);
}
.talent-stats .stat-label {
  font-size: 10px;
  color: var(--ink-mute);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-top: 2px;
}
.talent-niche {
  margin-top: 12px;
  font-size: 12px;
  color: var(--gold);
  letter-spacing: 0.02em;
}
.talent-past {
  margin-top: 8px;
  font-size: 11px;
  color: var(--ink-soft);
}
.talent-actions {
  display: flex;
  gap: 12px;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px dashed var(--line-soft);
}

/* Roster modal — form */
.roster-modal-box { width: 600px; }
.roster-form { max-height: 64vh; overflow-y: auto; }
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.form-field { display: flex; flex-direction: column; gap: 6px; }
.form-field span {
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
}
.form-field input, .form-field select, .form-field textarea {
  font: inherit;
  font-size: 14px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: var(--bg);
  color: var(--ink);
}
.form-field input:focus, .form-field select:focus, .form-field textarea:focus {
  outline: none;
  border-color: var(--gold);
  background: #fff;
}
.form-field-wide { grid-column: 1 / -1; }

/* ====================================
   Sandbox · 流量金融反向计算器
   ==================================== */
.sandbox-card {
  background: linear-gradient(180deg, #fff 0%, #fbf6e8 100%);
}
.sandbox-intro {
  margin: 0 0 24px;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.75;
  max-width: 760px;
}
.sandbox-intro strong { color: var(--ink); }
.sandbox-body {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 32px;
}
@media (max-width: 760px) {
  .sandbox-body { grid-template-columns: 1fr; }
}
.sandbox-sliders {
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.slider-row { display: flex; flex-direction: column; gap: 8px; }
.slider-meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.slider-label {
  font-size: 13px;
  color: var(--ink-soft);
}
.slider-val {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 18px;
  color: var(--gold);
}
.sandbox-input {
  width: 100%;
  -webkit-appearance: none;
  appearance: none;
  height: 6px;
  background: linear-gradient(90deg, var(--gold-soft), var(--gold));
  border-radius: 3px;
  outline: none;
}
.sandbox-input::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--gold);
  cursor: grab;
  box-shadow: 0 2px 8px rgba(184, 146, 76, 0.4);
  transition: transform .15s;
}
.sandbox-input::-webkit-slider-thumb:hover { transform: scale(1.15); }
.sandbox-input::-webkit-slider-thumb:active { cursor: grabbing; }
.sandbox-input::-moz-range-thumb {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--gold);
  cursor: grab;
}
.slider-bounds {
  display: flex;
  justify-content: space-between;
  font-size: 11px;
  color: var(--ink-mute);
  font-family: var(--font-en);
}
.sandbox-output {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 20px;
  background: var(--paper);
  border-radius: var(--r-md);
  border: 1px solid var(--line);
}
.output-block {
  flex: 1;
  padding: 12px 16px;
  background: var(--bg-soft);
  border-radius: var(--r-sm);
}
.primary-block {
  background: linear-gradient(135deg, var(--ink) 0%, #2c2c30 100%);
  color: #fff;
  padding: 20px;
}
.primary-block .output-label { color: rgba(255,255,255,0.7); }
.primary-block .output-val {
  color: var(--gold-soft);
  font-size: 42px;
  font-weight: 700;
}
.output-label {
  font-size: 11px;
  color: var(--ink-mute);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 500;
  margin-bottom: 4px;
}
.output-val {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 24px;
  color: var(--ink);
  letter-spacing: -0.02em;
}
.output-val.small { font-size: 18px; }
.output-val.tiny { font-size: 14px; }
.output-hint {
  font-size: 11px;
  color: rgba(255,255,255,0.65);
  margin-top: 8px;
  font-style: italic;
}
.output-row {
  display: flex;
  gap: 10px;
}
.ai-hint {
  margin-top: 4px;
  padding: 12px;
  background: var(--gold-bg);
  border-radius: var(--r-sm);
  font-size: 12px;
  color: var(--ink);
  line-height: 1.6;
}
.ai-hint-tag {
  display: inline-block;
  background: var(--gold);
  color: #fff;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  margin-bottom: 6px;
}
.scenario-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.scenario-btn {
  font-size: 11px;
  padding: 6px 10px;
}
.sandbox-foot {
  margin-top: 20px;
  padding-top: 14px;
  border-top: 1px dashed var(--line-soft);
}
.formula {
  font-size: 11px;
  color: var(--ink-mute);
  line-height: 1.6;
}

/* ====================================
   Talent Match cards
   ==================================== */
.talent-match-card {
  background: linear-gradient(180deg, #fff 0%, #f5f8f7 100%);
}
.match-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
  margin-top: 8px;
}
.match-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 18px;
  transition: transform .15s;
}
.match-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.match-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}
.match-idx {
  font-family: var(--font-en);
  font-size: 11px;
  color: var(--ink-mute);
  background: var(--bg-soft);
  padding: 3px 8px;
  border-radius: 4px;
  font-weight: 600;
}
.match-name { flex: 1; min-width: 0; }
.match-name strong {
  display: block;
  font-size: 14px;
  color: var(--ink);
}
.match-handle {
  font-size: 11px;
  color: var(--ink-mute);
  font-family: var(--font-en);
}
.match-score {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 22px;
}
.match-score span { font-size: 11px; color: var(--ink-mute); font-weight: 400; }
.match-score-gold { color: var(--gold); }
.match-score-good { color: var(--good); }
.match-score-warn { color: var(--warn); }
.match-reason {
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.6;
  margin-bottom: 10px;
}
.match-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
}
.match-risk {
  font-size: 11px;
  color: var(--bad);
  padding: 6px 8px;
  background: var(--bad-bg);
  border-radius: 4px;
  margin-top: 8px;
}
.match-combo {
  margin-top: 18px;
  padding: 16px 20px;
  background: var(--good-bg);
  border-left: 3px solid var(--good);
  border-radius: 4px;
  font-size: 14px;
  color: var(--ink);
  line-height: 1.7;
}
.combo-label {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  color: var(--good);
  margin-right: 10px;
  text-transform: uppercase;
}
.input-label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 12px;
}
#insight-input, #ws-input {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 14px 16px;
  font-family: var(--font-zh);
  font-size: 15px;
  line-height: 1.7;
  color: var(--ink);
  background: var(--bg);
  resize: none;
  height: 140px;
  box-sizing: border-box;
  overflow-y: auto;
  word-break: break-word;
  overflow-wrap: break-word;
  transition: border-color .18s ease, background .18s ease;
}
#insight-input-a:focus, #insight-input-b:focus, #ws-input:focus {
  outline: none;
  border-color: var(--gold);
  background: #fff;
}
#insight-input-a::placeholder, #insight-input-b::placeholder, #ws-input::placeholder {
  color: var(--ink-mute);
  opacity: 0.7;
  font-size: 14px;
  line-height: 1.75;
}
.example-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-top: 14px;
}
.ex-label {
  font-size: 12px;
  color: var(--ink-mute);
  margin-right: 4px;
}
.example-chip {
  font: inherit;
  font-size: 12px;
  padding: 6px 12px;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink-soft);
  cursor: pointer;
  transition: all .15s ease;
}
.example-chip:hover {
  background: var(--gold-bg);
  border-color: var(--gold-soft);
  color: var(--ink);
}
.action-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 22px;
  gap: 16px;
}
.hint {
  font-size: 12px;
  color: var(--ink-mute);
}
.primary-btn {
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  padding: 12px 28px;
  background: var(--ink);
  color: #fff;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  transition: all .18s ease;
  letter-spacing: 0.04em;
}
.primary-btn:hover:not(:disabled) {
  background: var(--gold);
  transform: translateY(-1px);
  box-shadow: 0 8px 24px rgba(184, 146, 76, 0.3);
}
.primary-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ====================================
   Results
   ==================================== */
.results {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
}
.card-label {
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 8px;
  font-weight: 600;
}
.card-title {
  margin: 0 0 18px;
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: 24px;
  line-height: 1.3;
  color: var(--ink);
}
.card-head {
  display: flex;
  justify-content: space-between;
  align-items: start;
  margin-bottom: 8px;
  gap: 16px;
}
.redline-tag {
  background: var(--bad-bg);
  color: var(--bad);
  padding: 6px 12px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

/* ====================================
   Scorecard - 决策栏
   ==================================== */
.decision-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 14px;
  margin: 20px 0 18px;
  padding: 20px;
  background: var(--bg-soft);
  border-radius: var(--r-md);
}
.decision {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.decision-label {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
}
.badge {
  display: inline-block;
  font-size: 13px;
  font-weight: 500;
  padding: 5px 10px;
  border-radius: 6px;
  width: fit-content;
}
.badge-gold { background: var(--gold-bg); color: var(--gold); }
.badge-good { background: var(--good-bg); color: var(--good); }
.badge-warn { background: var(--warn-bg); color: var(--warn); }
.badge-bad { background: var(--bad-bg); color: var(--bad); }
.badge-neutral { background: var(--line-soft); color: var(--ink-soft); }
.metric-strong {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 22px;
  color: var(--ink);
  letter-spacing: -0.02em;
}
.reason {
  padding: 14px 0 0;
  border-top: 1px solid var(--line-soft);
}
.reason-line {
  font-size: 16px;
  color: var(--ink);
  line-height: 1.6;
}
.deal-breaker {
  margin-top: 10px;
  font-size: 13px;
  color: var(--bad);
  padding: 8px 12px;
  background: var(--bad-bg);
  border-left: 3px solid var(--bad);
  border-radius: 4px;
}

/* ====================================
   Score grid & radar
   ==================================== */
.score-grid {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 32px;
  margin-top: 24px;
  padding-top: 24px;
  border-top: 1px solid var(--line-soft);
}
@media (max-width: 720px) {
  .score-grid { grid-template-columns: 1fr; }
  .radar-section { display: flex; flex-direction: column; align-items: center; }
}
.section-label {
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  margin-bottom: 14px;
}
.score-row {
  display: grid;
  grid-template-columns: 90px 1fr 60px;
  gap: 14px;
  align-items: center;
  margin-bottom: 12px;
}
.score-label {
  font-size: 13px;
  color: var(--ink-soft);
}
.score-track {
  height: 8px;
  background: var(--line-soft);
  border-radius: 4px;
  overflow: hidden;
}
.score-fill {
  height: 100%;
  border-radius: 4px;
  transition: width .6s cubic-bezier(0.16, 1, 0.3, 1);
}
.score-fill.gold { background: linear-gradient(90deg, var(--gold-soft), var(--gold)); }
.score-fill.good { background: linear-gradient(90deg, #6ba382, var(--good)); }
.score-fill.warn { background: linear-gradient(90deg, #d9b87a, var(--warn)); }
.score-fill.bad { background: linear-gradient(90deg, #d97070, var(--bad)); }
.score-val {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 15px;
  color: var(--ink);
  text-align: right;
}
.score-max {
  font-weight: 400;
  color: var(--ink-mute);
  font-size: 12px;
}
.radar-svg {
  display: block;
  margin: 0 auto;
}
.radar-legend {
  margin-top: 12px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
}
.risk-dot-row {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--ink-soft);
}
.dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}
.dot-good { background: var(--good); }
.dot-warn { background: var(--gold); }
.dot-bad { background: var(--bad); }

/* ====================================
   Batch card
   ==================================== */
.batch-card .table-wrap {
  overflow-x: auto;
  border-radius: var(--r-md);
  border: 1px solid var(--line-soft);
}
.batch-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.batch-table th, .batch-table td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid var(--line-soft);
}
.batch-table th {
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  background: var(--bg-soft);
}
.batch-table tr:last-child td { border-bottom: none; }
.batch-table .idx {
  color: var(--gold);
  font-family: var(--font-en);
  font-weight: 600;
  width: 32px;
}
.batch-table .subj { font-weight: 500; color: var(--ink); }
.batch-table .reason-cell {
  color: var(--ink-soft);
  font-size: 12px;
  max-width: 280px;
}

/* ====================================
   Whitespace card
   ==================================== */
.ws-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 16px;
  margin-top: 8px;
}
.ws-item {
  background: linear-gradient(180deg, #fff, #fbf7ec);
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 20px;
  transition: transform .2s, box-shadow .2s;
}
.ws-item:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
.ws-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}
.ws-idx {
  font-family: var(--font-en);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  font-weight: 500;
}
.ws-score {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 24px;
}
.ws-score span {
  font-size: 12px;
  color: var(--ink-mute);
  font-weight: 400;
}
.ws-score-gold { color: var(--gold); }
.ws-score-good { color: var(--good); }
.ws-score-warn { color: var(--warn); }
.ws-name {
  margin: 0 0 8px;
  font-family: var(--font-serif);
  font-size: 18px;
  font-weight: 600;
  color: var(--ink);
}
.ws-line {
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.6;
  margin-bottom: 12px;
}
.ws-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 14px;
}
.meta-chip {
  font-size: 11px;
  padding: 3px 8px;
  background: var(--bg-soft);
  border-radius: 4px;
  color: var(--ink-soft);
}
.ws-section {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line-soft);
  font-size: 13px;
  color: var(--ink-soft);
}
.ws-section-label {
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 6px;
  font-weight: 600;
}
.ws-section ul {
  margin: 4px 0 0;
  padding-left: 18px;
}
.ws-section li {
  margin-bottom: 4px;
}

/* ====================================
   Stream (during generation)
   ==================================== */
.stream {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12.5px;
  line-height: 1.65;
  color: var(--ink-soft);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 18px;
  max-height: 360px;
  overflow-y: auto;
  white-space: pre-wrap;
  word-break: break-word;
  display: none;
}
.stream.streaming { display: block; }
.stream:empty { display: none; }

/* ====================================
   Rendered markdown
   ==================================== */
.rendered { display: contents; }
.rendered:empty { display: none; }
.md-h1, .md-h2, .md-h3, .md-h4 {
  font-family: var(--font-serif);
  font-weight: 600;
  color: var(--ink);
  margin: 28px 0 14px;
  line-height: 1.35;
}
.md-h1 { font-size: 28px; padding-bottom: 12px; border-bottom: 2px solid var(--line); }
.md-h2 { font-size: 22px; padding-left: 14px; border-left: 3px solid var(--gold); }
.md-h3 { font-size: 18px; color: var(--gold); }
.md-h4 { font-size: 15px; color: var(--ink-soft); }
.md-p { margin: 10px 0; color: var(--ink); }
.md-ul, .md-ol { margin: 10px 0; padding-left: 22px; }
.md-ul li, .md-ol li { margin-bottom: 6px; }
.md-quote {
  margin: 14px 0;
  padding: 14px 20px;
  background: var(--bg-soft);
  border-left: 3px solid var(--gold-soft);
  border-radius: 4px;
}
.md-quote p { margin: 4px 0; color: var(--ink-soft); font-size: 14px; }
.md-tablewrap {
  overflow-x: auto;
  margin: 16px 0;
  border-radius: var(--r-md);
  border: 1px solid var(--line);
}
.md-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.md-table th, .md-table td {
  padding: 10px 14px;
  text-align: left;
  border-bottom: 1px solid var(--line-soft);
}
.md-table th {
  background: var(--bg-soft);
  font-weight: 600;
  color: var(--ink);
  font-size: 12px;
}
.md-table tr:last-child td { border-bottom: none; }
.md-hr { border: none; border-top: 1px solid var(--line); margin: 24px 0; }
.md-code {
  background: #1c1c1f;
  color: #f5ecd9;
  padding: 14px 18px;
  border-radius: var(--r-md);
  font-size: 12.5px;
  overflow-x: auto;
}
.md-p code, .md-quote code {
  background: var(--gold-bg);
  color: var(--gold);
  padding: 2px 6px;
  border-radius: 4px;
  font-family: ui-monospace, monospace;
  font-size: 0.92em;
}

/* marked + DOMPurify 输出的裸标签美化（无 .md- 前缀） */
.rendered h1, .chat-msg-text h1,
.rendered h2, .chat-msg-text h2,
.rendered h3, .chat-msg-text h3,
.rendered h4, .chat-msg-text h4 {
  font-family: var(--font-serif);
  font-weight: 600;
  color: var(--ink);
  margin: 22px 0 12px;
  line-height: 1.35;
}
.rendered h1 { font-size: 26px; padding-bottom: 10px; border-bottom: 2px solid var(--line); }
.rendered h2 { font-size: 20px; padding-left: 12px; border-left: 3px solid var(--gold); }
.rendered h3 { font-size: 17px; color: var(--gold); }
.rendered h4 { font-size: 15px; color: var(--ink-soft); }
.chat-msg-text h1, .chat-msg-text h2, .chat-msg-text h3, .chat-msg-text h4 {
  font-size: 15px;
  margin: 10px 0 6px;
  border: none;
  padding: 0;
}
.rendered p, .chat-msg-text p { margin: 8px 0; color: inherit; }
.rendered ul, .rendered ol, .chat-msg-text ul, .chat-msg-text ol { margin: 8px 0; padding-left: 22px; }
.rendered li, .chat-msg-text li { margin-bottom: 4px; }
.rendered blockquote, .chat-msg-text blockquote {
  margin: 12px 0;
  padding: 12px 18px;
  background: var(--bg-soft);
  border-left: 3px solid var(--gold-soft);
  border-radius: 4px;
  color: var(--ink-soft);
}
.chat-msg-text blockquote {
  background: rgba(0,0,0,0.04);
}
.chat-msg-user .chat-msg-text blockquote {
  background: rgba(255,255,255,0.1);
  color: rgba(255,255,255,0.85);
}
.rendered table, .chat-msg-text table {
  width: 100%;
  border-collapse: collapse;
  margin: 14px 0;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  overflow: hidden;
  font-size: 13px;
}
.chat-msg-text table { font-size: 12px; }
.rendered th, .rendered td,
.chat-msg-text th, .chat-msg-text td {
  padding: 8px 12px;
  text-align: left;
  border-bottom: 1px solid var(--line-soft);
}
.rendered th, .chat-msg-text th {
  background: var(--bg-soft);
  font-weight: 600;
  color: var(--ink);
  font-size: 12px;
}
.chat-msg-user .chat-msg-text th { background: rgba(255,255,255,0.1); color: #fff; }
.chat-msg-user .chat-msg-text td { border-color: rgba(255,255,255,0.15); }
.rendered tr:last-child td, .chat-msg-text tr:last-child td { border-bottom: none; }
.rendered hr, .chat-msg-text hr { border: none; border-top: 1px solid var(--line); margin: 20px 0; }
.rendered pre, .chat-msg-text pre {
  background: #1c1c1f;
  color: #f5ecd9;
  padding: 12px 16px;
  border-radius: var(--r-sm);
  font-size: 12px;
  overflow-x: auto;
  margin: 12px 0;
}
.rendered code, .chat-msg-text code {
  background: var(--gold-bg);
  color: var(--gold);
  padding: 1px 6px;
  border-radius: 4px;
  font-family: ui-monospace, monospace;
  font-size: 0.92em;
}
.rendered pre code, .chat-msg-text pre code {
  background: transparent;
  color: inherit;
  padding: 0;
}
.rendered a, .chat-msg-text a { color: var(--gold); text-decoration: underline; }
.chat-msg-user .chat-msg-text a { color: var(--gold-soft); }

/* ====================================
   History
   ==================================== */
.panel-card { padding: 28px; }
.history-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 14px;
}
.history-item {
  background: var(--bg-soft);
  border: 1px solid var(--line-soft);
  border-radius: var(--r-md);
  padding: 16px 20px;
  transition: background .15s;
}
.history-item:hover { background: var(--gold-bg); border-color: var(--gold-soft); }
.hist-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.hist-mode {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.hist-mode-A { background: var(--good-bg); color: var(--good); }
.hist-mode-B { background: var(--gold-bg); color: var(--gold); }
.hist-mode-C { background: var(--warn-bg); color: var(--warn); }
.hist-title {
  font-weight: 500;
  color: var(--ink);
  font-size: 14px;
}
.hist-date {
  margin-left: auto;
  font-size: 11px;
  color: var(--ink-mute);
  font-family: var(--font-en);
}
.hist-line {
  font-size: 13px;
  color: var(--ink-soft);
  margin-bottom: 10px;
}
.hist-actions {
  display: flex;
  gap: 12px;
}
.link-btn {
  font: inherit;
  font-size: 12px;
  background: none;
  border: none;
  color: var(--gold);
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
}
.link-btn:hover { color: var(--ink); }
.link-btn.danger { color: var(--bad); }
.empty-hint {
  font-size: 13px;
  color: var(--ink-mute);
  padding: 32px;
  text-align: center;
  background: var(--bg-soft);
  border-radius: var(--r-md);
  margin-top: 14px;
}

/* ====================================
   About
   ==================================== */
.about-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px;
  margin-top: 12px;
}
.about-item {
  padding: 20px;
  background: var(--bg-soft);
  border-radius: var(--r-md);
  border: 1px solid var(--line-soft);
}
.about-item h4 {
  margin: 0 0 10px;
  font-family: var(--font-serif);
  font-size: 16px;
  color: var(--gold);
  font-weight: 600;
}
.about-item p {
  margin: 0;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.65;
}
.footnote {
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--line-soft);
  font-size: 12px;
  color: var(--ink-mute);
  line-height: 1.6;
}

/* ====================================
   Modal
   ==================================== */
.modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: none;
  align-items: center;
  justify-content: center;
}
.modal.open { display: flex; }
.modal-bg {
  position: absolute;
  inset: 0;
  background: rgba(15, 15, 18, 0.4);
  backdrop-filter: blur(8px);
}
.modal-box {
  position: relative;
  width: 480px;
  max-width: 92%;
  background: var(--paper);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-md);
  padding: 28px;
  animation: modalIn .25s ease;
}
@keyframes modalIn {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}
.modal-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 18px;
}
.modal-head h3 {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 20px;
  font-weight: 600;
}
.modal-body { display: flex; flex-direction: column; gap: 6px; }
.field-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-top: 12px;
}
.modal-body input, .modal-body select {
  font: inherit;
  font-size: 14px;
  padding: 11px 14px;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  background: var(--bg);
  color: var(--ink);
  width: 100%;
}
.modal-body input:focus, .modal-body select:focus {
  outline: none;
  border-color: var(--gold);
  background: #fff;
}
.field-hint {
  font-size: 11px;
  color: var(--ink-mute);
  line-height: 1.5;
  margin-top: 4px;
}
.modal-foot {
  margin-top: 22px;
  display: flex;
  justify-content: flex-end;
}

/* ====================================
   Stop bar / toast
   ==================================== */
.stop-bar {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(60px);
  z-index: 90;
  background: var(--paper);
  padding: 8px 12px;
  border-radius: 999px;
  box-shadow: var(--shadow-md);
  border: 1px solid var(--line);
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s, transform .2s;
}
.stop-bar.show {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
.toast {
  position: fixed;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%) translateY(60px);
  z-index: 200;
  background: var(--ink);
  color: #fff;
  font-size: 13px;
  padding: 10px 22px;
  border-radius: 999px;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s, transform .2s;
}
.toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ====================================
   业务合作评估 (BD) · v1.1
   ==================================== */
.mode-tag-bd { background: #f0eff7; color: #5b51a8; }
.bd-mode-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  margin-bottom: 16px;
  padding: 12px 14px;
  background: var(--bg-soft);
  border-radius: var(--r-md);
}
.bd-mode-segmented {
  display: inline-flex;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 3px;
  gap: 2px;
}
.bd-seg-btn {
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  padding: 8px 16px;
  background: transparent;
  border: none;
  border-radius: 999px;
  color: var(--ink-soft);
  cursor: pointer;
  transition: all .15s;
}
.bd-seg-btn:hover { color: var(--ink); }
.bd-seg-btn.active {
  background: var(--ink);
  color: #fff;
}
.bd-scope-toggles, .bd-lang-toggles {
  display: inline-flex;
  gap: 4px;
}
.bd-chip-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--ink-soft);
  padding: 5px 10px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  cursor: pointer;
  transition: all .15s;
}
.bd-chip-toggle:has(input:checked) {
  background: var(--gold-bg);
  border-color: var(--gold-soft);
  color: var(--gold);
  font-weight: 500;
}
.bd-chip-toggle input { display: none; }

#bd-input {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 14px 16px;
  font-family: var(--font-zh);
  font-size: 15px;
  line-height: 1.7;
  color: var(--ink);
  background: var(--bg);
  resize: none;
  height: 130px;
  box-sizing: border-box;
  overflow-y: auto;
}
#bd-input:focus { outline: none; border-color: var(--gold); background: #fff; }

/* === Gate Check === */
.gate-card {
  background: linear-gradient(180deg, #fff 0%, #fafaf3 100%);
}
.gate-card.gate-failed {
  background: linear-gradient(180deg, #fff 0%, #fbf0ee 100%);
  border-color: var(--bad-bg);
}
.gate-summary {
  display: flex;
  gap: 6px;
}
.gate-summary-pill {
  font-size: 11px;
  padding: 4px 10px;
  border-radius: 999px;
  font-weight: 600;
}
.gate-summary-pill.pass { background: var(--good-bg); color: var(--good); }
.gate-summary-pill.warn { background: var(--warn-bg); color: var(--warn); }
.gate-summary-pill.fail { background: var(--bad); color: #fff; }
.gate-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  margin-top: 16px;
}
.gate-cell {
  padding: 14px;
  border-radius: var(--r-sm);
  border: 1px solid var(--line-soft);
  background: #fff;
  border-left: 3px solid;
}
.gate-pass { border-left-color: var(--good); }
.gate-warn { border-left-color: var(--gold); background: linear-gradient(180deg, #fff, #fcf8ea); }
.gate-fail { border-left-color: var(--bad); background: linear-gradient(180deg, #fff, #fdf6f5); }
.gate-cell-head {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 6px;
}
.gate-id {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 11px;
  color: var(--ink-mute);
  background: var(--bg-soft);
  padding: 2px 6px;
  border-radius: 3px;
}
.gate-name {
  flex: 1;
  font-size: 13px;
  color: var(--ink);
  font-weight: 500;
}
.gate-icon { font-size: 16px; }
.gate-reason {
  font-size: 12px;
  color: var(--ink-soft);
  line-height: 1.55;
}

/* === Quick Scan === */
.qs-card { background: linear-gradient(180deg, #fff 0%, #faf8f3 100%); }
.qs-go { border-color: var(--good); }
.qs-pilot { border-color: var(--gold-soft); }
.qs-stop { border-color: var(--bad-bg); }
.qs-next-step {
  padding: 6px 12px;
  background: var(--ink);
  color: #fff;
  border-radius: 999px;
  font-size: 12px;
}
.qs-next-label {
  font-size: 10px;
  color: rgba(255,255,255,0.7);
  margin-right: 6px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.qs-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin-top: 14px;
}
.qs-cell {
  padding: 10px 12px;
  background: var(--paper);
  border: 1px solid var(--line-soft);
  border-radius: var(--r-sm);
}
.qs-cell-good { background: var(--good-bg); border-color: var(--good); }
.qs-cell-warn { background: var(--warn-bg); border-color: var(--gold-soft); }
.qs-cell-bad { background: var(--bad-bg); border-color: var(--bad); }
.qs-cell-mat-gold { background: var(--gold-bg); border-color: var(--gold); }
.qs-cell-label {
  font-size: 10px;
  letter-spacing: 0.1em;
  color: var(--ink-mute);
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
.qs-cell-val { font-size: 14px; color: var(--ink); font-weight: 500; }

/* === Deep Dive 评分卡 === */
.bd-deep-card { background: linear-gradient(180deg, #fff 0%, #faf6e8 100%); }
.bd-total {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 36px;
  letter-spacing: -0.02em;
}
.bd-total-max {
  font-weight: 400;
  font-size: 14px;
  color: var(--ink-mute);
  margin-left: 2px;
}
.bd-total-gold { color: var(--gold); }
.bd-total-good { color: var(--good); }
.bd-total-warn { color: var(--warn); }
.bd-total-bad { color: var(--bad); }
.bd-confidence {
  font-size: 12px;
  color: var(--ink-soft);
  margin-top: -8px;
  margin-bottom: 16px;
}
.bd-conf {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 999px;
  font-weight: 600;
  margin-left: 4px;
}
.bd-conf-高 { background: var(--good-bg); color: var(--good); }
.bd-conf-中 { background: var(--warn-bg); color: var(--warn); }
.bd-conf-低 { background: var(--bad-bg); color: var(--bad); }

.bd-score-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 22px;
}
.bd-score-row {
  display: grid;
  grid-template-columns: 200px 1fr 80px;
  align-items: center;
  gap: 14px;
}
.bd-score-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.bd-score-label { font-size: 13px; color: var(--ink); font-weight: 500; }
.bd-score-weight {
  font-size: 10px;
  color: var(--ink-mute);
  letter-spacing: 0.06em;
}
.bd-score-track {
  height: 12px;
  background: var(--line-soft);
  border-radius: 6px;
  overflow: hidden;
}
.bd-score-fill { height: 100%; border-radius: 6px; transition: width .6s cubic-bezier(0.16,1,0.3,1); }
.bd-score-fill.gold { background: linear-gradient(90deg, var(--gold-soft), var(--gold)); }
.bd-score-fill.good { background: linear-gradient(90deg, #6ba382, var(--good)); }
.bd-score-fill.warn { background: linear-gradient(90deg, #d9b87a, var(--warn)); }
.bd-score-fill.bad  { background: linear-gradient(90deg, #d97070, var(--bad)); }
.bd-score-val {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 16px;
  color: var(--ink);
  text-align: right;
}
.bd-score-val span { font-weight: 400; font-size: 11px; color: var(--ink-mute); }

.bd-decision {
  padding: 18px 22px;
  border-radius: var(--r-md);
  margin-bottom: 16px;
}
.bd-decision-go    { background: linear-gradient(135deg, var(--good), #6ba382); color: #fff; }
.bd-decision-pilot { background: linear-gradient(135deg, var(--gold), var(--gold-soft)); color: #fff; }
.bd-decision-watch { background: linear-gradient(135deg, var(--warn), #d9b87a); color: #fff; }
.bd-decision-stop  { background: linear-gradient(135deg, var(--bad), #d97070); color: #fff; }
.bd-decision-neutral { background: var(--ink); color: #fff; }
.bd-decision-label {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: 0.85;
  font-weight: 600;
  margin-bottom: 6px;
}
.bd-decision-text {
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.bd-decision-sub {
  margin-top: 8px;
  font-size: 13px;
  line-height: 1.6;
  opacity: 0.92;
}
.bd-decision-sub strong { font-weight: 600; }

.bd-revenue-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  padding-top: 16px;
  border-top: 1px solid var(--line-soft);
}
.bd-rev-block {
  padding: 12px 14px;
  background: var(--paper);
  border-radius: var(--r-sm);
  text-align: center;
}
.bd-rev-label {
  font-size: 10px;
  letter-spacing: 0.1em;
  color: var(--ink-mute);
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
.bd-rev-val {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 20px;
  color: var(--ink);
}

/* 报告最底部 · 导出 PDF 卡 */
.bd-pdf-card {
  background: linear-gradient(180deg, #fff 0%, #f6f3ea 100%);
  text-align: center;
}
.bd-pdf-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
}
.bd-pdf-hint {
  font-size: 12px;
  color: var(--ink-mute);
}

/* === Pitch Toolkit === */
.pitch-card { background: linear-gradient(180deg, #fff 0%, #f4f5f8 100%); }
.pitch-oneline {
  padding: 22px 26px;
  background: linear-gradient(135deg, var(--ink) 0%, #2c2c30 100%);
  color: #fff;
  border-radius: var(--r-md);
  margin: 14px 0 22px;
  position: relative;
}
.pitch-oneline::before {
  content: '"';
  position: absolute;
  top: 4px; left: 14px;
  font-size: 50px;
  font-family: var(--font-serif);
  color: rgba(184, 146, 76, 0.35);
}
.pitch-section { margin-bottom: 20px; }
.pitch-section-label {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 600;
  margin-bottom: 8px;
}
.pitch-oneline-text {
  font-family: var(--font-serif);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.55;
  letter-spacing: -0.01em;
  padding-left: 8px;
}
.pitch-uvp {
  margin: 0;
  padding-left: 22px;
  font-size: 14px;
  line-height: 1.7;
  color: var(--ink);
}
.pitch-uvp li::marker { color: var(--gold); font-weight: 700; }
.pitch-case {
  padding: 12px 16px;
  background: var(--gold-bg);
  border-left: 3px solid var(--gold);
  border-radius: 4px;
  font-size: 14px;
  color: var(--ink);
  line-height: 1.6;
}
.pitch-objections {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
@media (max-width: 760px) { .pitch-objections { grid-template-columns: 1fr; } }
.pitch-obj {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 12px 14px;
}
.pitch-obj-q {
  font-size: 13px;
  color: var(--bad);
  font-weight: 500;
  margin-bottom: 6px;
  font-style: italic;
}
.pitch-obj-a {
  font-size: 12px;
  color: var(--ink-soft);
  line-height: 1.6;
  padding-left: 8px;
  border-left: 2px solid var(--gold-soft);
}
.pitch-first-contact {
  background: var(--bg-soft);
  padding: 14px 16px;
  border-radius: var(--r-sm);
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.6;
}
.pitch-first-contact strong { color: var(--ink); margin-right: 6px; }
.pitch-steps {
  margin: 0;
  padding-left: 22px;
  font-size: 13px;
  line-height: 1.7;
  color: var(--ink);
}
.pitch-steps li::marker { color: var(--gold); font-weight: 700; }

/* ====================================
   老板版 · 30 秒看懂一页纸
   ==================================== */
.boss-card {
  background: linear-gradient(135deg, #fbf7ec 0%, #fcfaf2 100%);
  border: 1px solid var(--gold-soft);
  padding: 36px 40px 32px;
  position: relative;
  overflow: hidden;
}
.boss-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--gold), var(--gold-soft), var(--gold));
}
.boss-card.boss-tone-go::before { background: linear-gradient(90deg, var(--good), #6ba382, var(--good)); }
.boss-card.boss-tone-pilot::before { background: linear-gradient(90deg, var(--gold), var(--gold-soft), var(--gold)); }
.boss-card.boss-tone-watch::before { background: linear-gradient(90deg, var(--warn), #d9b87a, var(--warn)); }
.boss-card.boss-tone-stop::before { background: linear-gradient(90deg, var(--bad), #d97070, var(--bad)); }

.boss-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
}
.boss-eyebrow-dot {
  width: 8px; height: 8px;
  background: var(--gold);
  border-radius: 50%;
  box-shadow: 0 0 0 4px rgba(184, 146, 76, 0.15);
}
.boss-eyebrow-text {
  font-family: var(--font-en);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.22em;
  color: var(--gold);
  text-transform: uppercase;
}
.boss-subject {
  margin: 0 0 28px;
  font-family: var(--font-serif);
  font-size: clamp(28px, 4vw, 38px);
  font-weight: 600;
  line-height: 1.2;
  color: var(--ink);
  letter-spacing: -0.01em;
}

.boss-grid {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.boss-row {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  padding: 16px 20px;
  background: #fff;
  border-radius: var(--r-md);
  border: 1px solid var(--line-soft);
  transition: all .15s;
}
.boss-row:hover { border-color: var(--gold-soft); transform: translateX(2px); }
.boss-icon {
  font-size: 22px;
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg-soft);
  border-radius: 50%;
}
.boss-row-body { flex: 1; min-width: 0; }
.boss-row-label {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  margin-bottom: 4px;
}
.boss-row-value {
  font-size: 17px;
  color: var(--ink);
  line-height: 1.55;
  font-weight: 500;
}
.boss-row-reason {
  margin-top: 6px;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.6;
  font-style: italic;
}

/* 我们干不干 — 高亮决策行 */
.boss-row-decision {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
.boss-row-decision:hover { transform: none; }
.boss-row-decision .boss-icon {
  background: rgba(255,255,255,0.12);
}
.boss-row-decision .boss-row-label { color: rgba(255,255,255,0.6); }
.boss-row-decision .boss-row-value { color: #fff; font-size: 20px; font-weight: 600; }
.boss-row-decision .boss-row-reason { color: rgba(255,255,255,0.7); }
.boss-decision-go .boss-row-value { color: #a8d4ba; }
.boss-decision-pilot .boss-row-value { color: var(--gold-soft); }
.boss-decision-watch .boss-row-value { color: #d9b87a; }
.boss-decision-stop .boss-row-value { color: #f0a4a4; }

/* 风险行 - 红色淡背 */
.boss-row-risk {
  background: var(--bad-bg);
  border-color: rgba(168, 50, 50, 0.25);
}
.boss-row-risk .boss-icon { background: rgba(168, 50, 50, 0.15); }

/* 一句话金句 — 衬里大字 */
.boss-punchline {
  margin-top: 28px;
  padding: 24px 28px;
  background: linear-gradient(135deg, var(--ink) 0%, #2c2c30 100%);
  color: #fff;
  border-radius: var(--r-md);
  text-align: center;
  position: relative;
}
.boss-punchline::before, .boss-punchline::after {
  content: '"';
  font-family: var(--font-serif);
  font-size: 60px;
  position: absolute;
  color: rgba(184, 146, 76, 0.35);
  line-height: 1;
}
.boss-punchline::before { top: 12px; left: 18px; }
.boss-punchline::after { bottom: -10px; right: 18px; }
.boss-punchline-label {
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--gold);
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 10px;
}
.boss-punchline-text {
  font-family: var(--font-serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.55;
  color: #fff;
  letter-spacing: -0.01em;
}

.boss-foot {
  margin-top: 22px;
  padding-top: 14px;
  border-top: 1px dashed var(--line);
  text-align: center;
}
.boss-foot-hint {
  font-size: 11px;
  color: var(--ink-mute);
  letter-spacing: 0.06em;
}

@media (max-width: 700px) {
  .boss-card { padding: 24px 20px; }
  .boss-subject { font-size: 26px; }
  .boss-row { padding: 14px; gap: 12px; }
  .boss-row-value { font-size: 15px; }
  .boss-punchline-text { font-size: 18px; }
}

/* ====================================
   Signal Dashboard · 信号监测仪表盘
   ==================================== */
.signal-card {
  background: linear-gradient(180deg, #fff 0%, #f8f7f3 100%);
}
.signal-card-alert {
  background: linear-gradient(180deg, #fff 0%, #fbf0ee 100%);
  border-color: var(--bad-bg);
  box-shadow: 0 0 0 1px rgba(168, 50, 50, 0.08), var(--shadow-sm);
}
.signal-totals {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.signal-total {
  font-size: 11px;
  padding: 4px 10px;
  border-radius: 999px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.signal-total-triggered { background: var(--bad-bg); color: var(--bad); }
.signal-total-monitoring { background: var(--warn-bg); color: var(--warn); }
.signal-total-idle { background: var(--good-bg); color: var(--good); }

.signal-dashboard {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 14px;
  margin-top: 20px;
}
@media (max-width: 880px) {
  .signal-dashboard { grid-template-columns: 1fr; }
}
.signal-column {
  background: #fff;
  border-radius: var(--r-md);
  padding: 16px;
  border: 1px solid var(--line-soft);
  border-top: 3px solid;
  display: flex;
  flex-direction: column;
}
.signal-col-red    { border-top-color: var(--bad);  background: linear-gradient(180deg, #fff 0%, #fdf6f5 100%); }
.signal-col-yellow { border-top-color: var(--gold); background: linear-gradient(180deg, #fff 0%, #fcf8ea 100%); }
.signal-col-green  { border-top-color: var(--good); background: linear-gradient(180deg, #fff 0%, #f1f7f3 100%); }

.signal-col-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 4px;
}
.signal-col-title-wrap {
  display: flex;
  align-items: center;
  gap: 10px;
}
.signal-lamp {
  width: 12px; height: 12px;
  border-radius: 50%;
  display: inline-block;
}
.signal-lamp-red    { background: #e9b9b6; box-shadow: 0 0 0 3px rgba(168, 50, 50, 0.08); }
.signal-lamp-yellow { background: #e6cd97; box-shadow: 0 0 0 3px rgba(184, 146, 76, 0.08); }
.signal-lamp-green  { background: #a8c9b5; box-shadow: 0 0 0 3px rgba(47, 122, 82, 0.08); }
/* 已触发：灯亮起 */
.signal-lamp-red.active {
  background: var(--bad);
  box-shadow: 0 0 0 3px rgba(168, 50, 50, 0.2), 0 0 12px rgba(168, 50, 50, 0.5);
  animation: pulse-red 1.6s ease-in-out infinite;
}
.signal-lamp-yellow.active {
  background: var(--gold);
  box-shadow: 0 0 0 3px rgba(184, 146, 76, 0.2), 0 0 12px rgba(184, 146, 76, 0.4);
}
.signal-lamp-green.active {
  background: var(--good);
  box-shadow: 0 0 0 3px rgba(47, 122, 82, 0.2), 0 0 12px rgba(47, 122, 82, 0.4);
}
@keyframes pulse-red {
  0%, 100% { box-shadow: 0 0 0 3px rgba(168, 50, 50, 0.2), 0 0 12px rgba(168, 50, 50, 0.5); }
  50%      { box-shadow: 0 0 0 6px rgba(168, 50, 50, 0.1), 0 0 18px rgba(168, 50, 50, 0.7); }
}
.signal-col-title {
  font-family: var(--font-serif);
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}
.signal-col-count {
  font-family: var(--font-en);
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-mute);
  padding: 2px 8px;
  background: rgba(0,0,0,0.04);
  border-radius: 999px;
}
.signal-col-sub {
  font-size: 11px;
  color: var(--ink-mute);
  margin-bottom: 10px;
  line-height: 1.5;
}
.signal-col-stats {
  display: flex;
  gap: 4px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.sig-stat-pill {
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 999px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.sig-stat-pill.triggered { background: var(--bad); color: #fff; }
.sig-stat-pill.monitoring { background: var(--gold); color: #fff; }

.signal-items {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
}
.signal-empty {
  font-size: 12px;
  color: var(--ink-mute);
  padding: 16px;
  text-align: center;
  background: rgba(0,0,0,0.02);
  border-radius: var(--r-sm);
  font-style: italic;
}
.signal-item {
  padding: 10px 12px;
  background: #fff;
  border: 1px solid var(--line-soft);
  border-radius: var(--r-sm);
  transition: all .15s;
}
.signal-item:hover {
  border-color: var(--gold-soft);
}
.signal-item.signal-status-triggered {
  border-color: var(--bad);
  background: linear-gradient(180deg, #fff 0%, #fdf6f5 100%);
}
.signal-item.signal-status-monitoring {
  border-color: var(--gold-soft);
  background: linear-gradient(180deg, #fff 0%, #faf6ea 100%);
}
.signal-item-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.signal-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}
.signal-dot-idle { background: transparent; border: 1.5px solid var(--ink-mute); }
.signal-dot-monitoring { background: var(--gold); box-shadow: 0 0 0 3px rgba(184, 146, 76, 0.15); }
.signal-dot-triggered { background: var(--bad); box-shadow: 0 0 0 3px rgba(168, 50, 50, 0.2); }
.signal-dot-triggered.signal-dot-green { background: var(--good); box-shadow: 0 0 0 3px rgba(47, 122, 82, 0.2); }

.signal-item-label {
  flex: 1;
  font-size: 12.5px;
  color: var(--ink);
  font-weight: 500;
  line-height: 1.5;
}
.signal-status-chip {
  font-size: 9px;
  padding: 2px 7px;
  border-radius: 999px;
  font-weight: 600;
  letter-spacing: 0.06em;
  white-space: nowrap;
  flex-shrink: 0;
}
.signal-status-chip.status-idle { background: var(--line-soft); color: var(--ink-mute); }
.signal-status-chip.status-monitoring { background: var(--gold-bg); color: var(--gold); }
.signal-status-chip.status-triggered { background: var(--bad); color: #fff; }
.signal-threshold {
  font-size: 11px;
  color: var(--ink-soft);
  padding: 6px 8px;
  background: rgba(0,0,0,0.025);
  border-radius: 3px;
  margin-bottom: 6px;
  line-height: 1.55;
}
.signal-meta-label {
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--gold);
  margin-right: 6px;
  text-transform: uppercase;
}
.signal-foot {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 10px;
  color: var(--ink-mute);
}
.signal-src, .signal-freq {
  font-size: 10px;
  color: var(--ink-mute);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.signal-notes {
  margin-top: 6px;
  font-size: 11px;
  color: var(--ink-soft);
  padding: 6px 8px;
  background: var(--bg);
  border-radius: 3px;
  line-height: 1.5;
  font-style: italic;
}

/* ====================================
   Whitespace · Leads trigger
   ==================================== */
.ws-cta {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px dashed var(--line-soft);
}
.ws-leads-trigger {
  width: 100%;
  font: inherit;
  font-size: 12px;
  padding: 10px 14px;
  background: transparent;
  border: 1px solid var(--gold-soft);
  border-radius: var(--r-sm);
  color: var(--gold);
  cursor: pointer;
  transition: all .15s;
  text-align: center;
}
.ws-leads-trigger:hover:not(:disabled) {
  background: var(--gold-bg);
  border-color: var(--gold);
}
.ws-leads-trigger:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.ws-leads-mount:not(:empty) {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
}
.leads-loading {
  font-size: 12px;
  color: var(--ink-mute);
  padding: 14px;
  background: var(--bg-soft);
  border-radius: var(--r-sm);
}
.leads-streaming {
  font-size: 11px;
  max-height: 240px;
  overflow-y: auto;
}
.leads-streaming * { font-size: 11px !important; }
.leads-error {
  padding: 12px;
  background: var(--bad-bg);
  color: var(--bad);
  border-radius: var(--r-sm);
  font-size: 12px;
}

/* Leads cards */
.leads-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.lead-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 14px;
  font-size: 12px;
}
.lead-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.lead-idx {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 11px;
  color: var(--ink-mute);
  background: var(--bg-soft);
  padding: 3px 8px;
  border-radius: 4px;
}
.lead-name {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.lead-name strong { font-size: 14px; color: var(--ink); }
.lead-website {
  font-size: 11px;
  font-family: var(--font-en);
  color: var(--ink-mute);
  text-decoration: none;
}
.lead-website:hover { color: var(--gold); text-decoration: underline; }
.lead-stage {
  font-size: 10px;
  padding: 3px 8px;
  border-radius: 4px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.lead-stage-early { background: var(--good-bg); color: var(--good); }
.lead-stage-growth { background: var(--gold-bg); color: var(--gold); }
.lead-stage-public { background: var(--warn-bg); color: var(--warn); }
.lead-stage-unknown { background: var(--line-soft); color: var(--ink-mute); }
.lead-line {
  color: var(--ink);
  line-height: 1.6;
  margin-bottom: 8px;
}
.lead-funding {
  font-size: 11px;
  color: var(--ink-soft);
  margin-bottom: 8px;
  font-family: var(--font-en);
}
.src-level {
  background: var(--bg-soft);
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 10px;
  color: var(--ink-mute);
}
.lead-section {
  font-size: 11px;
  color: var(--ink-soft);
  line-height: 1.55;
  margin-top: 6px;
}
.lead-label {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 600;
  margin-right: 6px;
}
.lead-flags {
  font-size: 11px;
  background: var(--bad-bg);
  color: var(--bad);
  padding: 6px 10px;
  border-radius: 4px;
  margin-top: 8px;
}
.lead-actions {
  display: flex;
  gap: 12px;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px dashed var(--line-soft);
}
.leads-foot {
  font-size: 11px;
  color: var(--ink-mute);
  margin-top: 12px;
  padding: 8px 12px;
  background: var(--bg-soft);
  border-radius: 4px;
  line-height: 1.5;
}

/* ====================================
   Term Sheet · 触发 + 生成
   ==================================== */
.termsheet-trigger-card {
  background: linear-gradient(180deg, #fff 0%, #f6f3ea 100%);
}
.ts-trigger-intro {
  margin: 0 0 16px;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.7;
  max-width: 760px;
}
.ts-trigger-intro strong { color: var(--ink); }
.ts-trigger-row {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.ts-trigger-hint {
  font-size: 11px;
  color: var(--bad);
}
#ts-generated:not(:empty) {
  margin-top: 20px;
}
.ts-streaming-wrap {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 16px;
  max-height: 360px;
  overflow-y: auto;
}
.ts-streaming { font-size: 12px; color: var(--ink-soft); }
.ts-error {
  padding: 12px;
  background: var(--bad-bg);
  color: var(--bad);
  border-radius: var(--r-sm);
}
.termsheet-card {
  background: #fff;
  border: 1px solid var(--ink);
}
.termsheet-actions {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.termsheet-body {
  background: #fbfaf6;
  padding: 24px 28px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-soft);
  font-size: 13px;
  line-height: 1.7;
}
.termsheet-body h1 {
  font-size: 22px;
  border-bottom: 2px solid var(--ink);
}
.termsheet-body h2 {
  font-size: 16px;
  margin-top: 18px;
  border-left: 3px solid var(--gold);
}
.termsheet-disclaimer {
  margin-top: 14px;
  padding: 12px 16px;
  background: var(--bad-bg);
  border-left: 3px solid var(--bad);
  border-radius: 4px;
  font-size: 12px;
  color: var(--ink);
  line-height: 1.7;
}

/* ====================================
   ChatThread · 报告对话承接
   ==================================== */
.chat-card {
  background: linear-gradient(180deg, #fff 0%, #f4f5f8 100%);
}
.chat-intro {
  margin: 0 0 18px;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.7;
  max-width: 800px;
}
.chat-intro strong { color: var(--ink); }
.chat-thread {
  max-height: 480px;
  overflow-y: auto;
  padding: 8px 4px;
  margin-bottom: 16px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.chat-empty {
  padding: 24px;
  text-align: center;
  font-size: 13px;
  color: var(--ink-mute);
  background: var(--bg-soft);
  border-radius: var(--r-md);
  border: 1px dashed var(--line);
}
.chat-msg {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-width: 86%;
}
.chat-msg-user {
  align-self: flex-end;
  align-items: flex-end;
}
.chat-msg-ai {
  align-self: flex-start;
  align-items: flex-start;
}
.chat-msg-role {
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  padding: 0 4px;
}
.chat-bubble {
  padding: 12px 16px;
  border-radius: 16px;
  font-size: 14px;
  line-height: 1.65;
  max-width: 100%;
}
.chat-msg-user .chat-bubble {
  background: var(--ink);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.chat-msg-user .chat-bubble a { color: var(--gold-soft); }
.chat-msg-ai .chat-bubble {
  background: #fff;
  color: var(--ink);
  border: 1px solid var(--line);
  border-bottom-left-radius: 4px;
}
.chat-msg-text {
  word-wrap: break-word;
  overflow-wrap: break-word;
}
.chat-msg-text .md-h1,
.chat-msg-text .md-h2,
.chat-msg-text .md-h3 {
  font-size: 15px;
  margin: 10px 0 6px;
  padding: 0;
  border: none;
}
.chat-msg-text .md-p { margin: 6px 0; font-size: 14px; }
.chat-msg-text .md-ul, .chat-msg-text .md-ol { margin: 6px 0; padding-left: 20px; }
.chat-msg-text .md-table { font-size: 12px; }
.chat-msg-text .md-quote {
  background: rgba(0,0,0,0.04);
  border-left: 2px solid var(--gold-soft);
  padding: 6px 12px;
  margin: 6px 0;
}
.chat-files {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}
.chat-file-chip {
  font-size: 11px;
  padding: 2px 8px;
  background: rgba(255,255,255,0.12);
  border-radius: 4px;
  font-family: var(--font-en);
  color: var(--gold-soft);
}
.chat-msg-ai .chat-file-chip {
  background: var(--bg-soft);
  color: var(--ink-soft);
}
.chat-input-area {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 16px;
  border-top: 1px solid var(--line-soft);
}
#chat-input {
  width: 100%;
  font-family: var(--font-zh);
  font-size: 14px;
  line-height: 1.6;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  background: #fff;
  resize: none;
  height: 96px;
  box-sizing: border-box;
  overflow-y: auto;
}
#chat-input:focus {
  outline: none;
  border-color: var(--gold);
}
.chat-uploader-mount { margin: 0; }
.chat-uploader-mount .file-drop { padding: 8px; }
.chat-uploader-mount .file-drop-label { font-size: 12px; gap: 6px; }
.chat-action-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.chat-hint {
  font-size: 11px;
  color: var(--ink-mute);
  font-family: var(--font-en);
}
.chat-buttons {
  display: flex;
  gap: 8px;
}

/* ====================================
   a11y · Focus ring
   ==================================== */
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
  border-radius: 4px;
}
.tab:focus-visible {
  outline-offset: -2px;
}

/* 字段复选框 */
.field-checkbox {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--ink-soft);
  margin-top: 8px;
  cursor: pointer;
}
.field-checkbox input {
  width: 16px; height: 16px;
  accent-color: var(--gold);
}

/* ====================================
   历史工具栏 + 容量 chip
   ==================================== */
.history-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin: 16px 0 18px;
  padding: 14px;
  background: var(--bg-soft);
  border-radius: var(--r-md);
}
.history-toolbar input[type="search"] {
  flex: 1;
  min-width: 200px;
  font: inherit;
  font-size: 13px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: #fff;
}
.history-toolbar select {
  font: inherit;
  font-size: 13px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: #fff;
}
.storage-chip {
  font-size: 11px;
  color: var(--ink-mute);
  font-family: var(--font-en);
  padding: 4px 10px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
}
.storage-chip.warn { color: var(--bad); border-color: var(--bad-bg); background: var(--bad-bg); }
.empty-list { text-align: left; margin-top: 12px; padding-left: 20px; }

/* 跳过链接 - a11y */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--ink);
  color: #fff;
  padding: 10px 16px;
  z-index: 9999;
}
.skip-link:focus { left: 16px; top: 16px; }

/* ====================================
   Print 优化
   ==================================== */
@media print {
  /* 隐藏交互层 */
  .topbar, .tabs, .file-uploader, .file-uploader-mount,
  .action-row, .example-row, .hero-deco, .stop-bar,
  .modal, .toast, .scenario-row, .sandbox-foot,
  .input-card, .mode-tag-row, .roster-actions,
  .history-toolbar, .hist-actions {
    display: none !important;
  }
  body {
    background: #fff;
    font-size: 11pt;
    color: #000;
  }
  .hero { padding: 0; }
  .hero-deco { display: none; }
  .hero-title { font-size: 24pt; margin-bottom: 8pt; }
  .hero-sub { font-size: 12pt; }
  main { padding: 0; max-width: none; }
  .panel { display: block !important; page-break-after: always; }
  .panel:last-child { page-break-after: auto; }
  .card { box-shadow: none; border: 1px solid #ccc; break-inside: avoid; margin-bottom: 16pt; }
  .scorecard, .sandbox-card, .talent-match-card, .ws-card, .batch-card {
    page-break-inside: avoid;
  }
  .md-table { font-size: 9pt; }
  .stream, .rendered pre { display: none; }
  .stream { display: none !important; }
  a[href]:after { content: " (" attr(href) ")"; font-size: 9pt; color: #555; }
}

/* ====================================
   Responsive
   ==================================== */
@media (max-width: 700px) {
  .topbar { padding: 12px 18px; }
  .hero { padding: 60px 20px 40px; }
  .tabs { padding: 0 18px; overflow-x: auto; flex-wrap: nowrap; white-space: nowrap; }
  .tab { padding: 14px 14px; font-size: 13px; }
  main { padding: 24px 16px 80px; }
  .input-card, .card { padding: 20px; }
  .brand-sub { display: none; }
  .decision-row { padding: 14px; }
}
