/* ============================================================================
   pages/report.css · 报告/决策页（决策卡 7 字段 / 章节锚点 / 表格三改法 / 阅读工具）
   依赖：tokens + base + components
   路由：#/match/<key>/report（独立全屏页，pushState + 返回栈）
   说明：
     - 首屏目标：决策卡完整落在 1 屏内（≤ 1.15 屏），结论先行；
     - 已知 6 段表格全部结构重排：基本信息→定义列表、伤停→队卡、时段→视角切换+条、
       数据对比→对比行卡、交锋→时间线；未知表格保留横滚 + 首列吸顶 + 边缘提示；
     - 阅读器：字号 4 档 / 行距 2 档 / 进度条 / 回顶 / 复制，全部通过 CSS 变量驱动。
   ========================================================================== */

/* 栈页隐藏底部 tab（让阅读区完整）；老 WebView 不支持 :has 时自动退回「有 tab」布局 */
body:has(.view-report) #tabbar,
body:has(.view-match) #tabbar { display: none; }
body:has(.view-report) #views,
body:has(.view-match) #views { padding-bottom: calc(96px + var(--safe-b)); }

/* 阅读进度条（JS 写 transform: scaleX(p)） */
.scroll-progress { display: none; }
.view-report .scroll-progress,
.view-match .scroll-progress { display: block; }

/* ------------------------------ 报告头（球队 + 元信息） ------------------------------ */
.report-head { padding: var(--s-1) 2px 0; }
.rh-top { display: flex; align-items: center; gap: var(--s-2); margin-bottom: var(--s-3); }
.rh-top .rh-date { font-size: var(--fs-11); color: var(--txt-2); letter-spacing: .02em; }
.rh-top .badge { margin-left: auto; }
.rh-teams {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--s-2);
}
.rh-team { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; min-width: 0; }
.rh-team--away { align-items: flex-end; }
.rh-name {
  font-size: var(--fs-26);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-cjk-title);
  line-height: 1.15;
  color: var(--txt-0);
}
.rh-side {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-11);
  color: var(--txt-2);
  letter-spacing: .04em;
}
.rh-side b { color: var(--aurora-teal); font-weight: var(--fw-medium); }
.rh-mid { text-align: center; min-width: 62px; }
.rh-mid .vs { font-size: var(--fs-15); font-weight: var(--fw-semibold); color: var(--txt-3); letter-spacing: .08em; }
.rh-mid .kick {
  display: block;
  margin-top: 3px;
  font-size: var(--fs-11);
  color: var(--txt-1);
  white-space: nowrap;
}
.rh-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: var(--s-3);
}
.rh-meta span {
  display: inline-flex;
  align-items: flex-start;
  gap: 4px;
  min-height: 24px;
  padding: 3px 9px;
  border-radius: var(--r-md);
  background: var(--surface-1);
  border: 1px solid var(--line-1);
  font-size: var(--fs-11);
  line-height: 1.45;
  color: var(--txt-1);
  text-align: left;
}
.rh-meta span svg { flex: none; margin-top: 2px; }
.rh-meta span.rh-chip--wide { max-width: 100%; }
.rh-meta svg { width: 12px; height: 12px; color: var(--txt-2); }

/* ------------------------------ 决策卡（首屏核心） ------------------------------ */
.verdict {
  padding: var(--s-4);
  border-radius: var(--r-xl, 22px);
}
.v-eyebrow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
}
.v-eyebrow .eyebrow { color: var(--txt-2); }
.v-eyebrow .eyebrow svg { width: 14px; height: 14px; color: var(--brand-text); }

.v-hero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--s-3);
  margin-top: var(--s-3);
}
.v-dir { min-width: 0; }
.v-dir-label {
  display: block;
  font-size: var(--fs-26);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-cjk-title);
  line-height: 1.1;
  color: var(--txt-0);
}
.v-dir-note {
  display: block;
  margin-top: 5px;
  font-size: var(--fs-11);
  color: var(--txt-2);
  letter-spacing: .01em;
}
.v-conf { flex: none; width: 96px; text-align: right; }
.v-conf-k { font-size: var(--fs-11); color: var(--txt-2); letter-spacing: .04em; }
.v-conf-level {
  display: block;
  font-size: var(--fs-17);
  font-weight: var(--fw-semibold);
  color: var(--brand-text);
  line-height: 1.2;
  margin-top: 1px;
}
.v-meter {
  height: 5px;
  margin-top: 7px;
  border-radius: var(--r-full);
  background: var(--surface-2);
  overflow: hidden;
}
.v-meter > i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--aurora-teal), var(--brand));
  box-shadow: 0 0 10px var(--aurora-teal-soft);
}
.v-conf-range { display: block; margin-top: 5px; font-size: 10px; color: var(--txt-2); }

/* 行动建议：只给「做什么」，不给金额/下注入口 */
.v-action {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin-top: var(--s-3);
  padding: 10px var(--s-3);
  border-radius: var(--r-md);
  background: linear-gradient(100deg, var(--brand-soft), transparent 78%);
  border: 1px solid var(--brand-line);
}
.v-action .v-action-ico {
  width: 26px; height: 26px;
  border-radius: 8px;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--brand-text);
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
}
.v-action .v-action-ico svg { width: 15px; height: 15px; }
.v-action-k { font-size: 10px; color: var(--txt-2); letter-spacing: .04em; flex: none; }
.v-action b { font-size: var(--fs-13); color: var(--brand-text); font-weight: var(--fw-semibold); }

/* 7 字段里的 4 个结构化字段：2×2 网格 */
.v-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  margin-top: var(--s-3);
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--line-1);
  border: 1px solid var(--line-1);
}
.v-cell { padding: 9px 11px; background: var(--bg-inset); min-width: 0; }
.v-k {
  display: block;
  font-size: 10px;
  color: var(--txt-2);
  letter-spacing: .06em;
  margin-bottom: 3px;
}
.v-v { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; font-size: var(--fs-13); font-weight: var(--fw-medium); color: var(--txt-0); line-height: var(--lh-2); }
.v-v .sub { color: var(--txt-2); font-weight: var(--fw-regular); font-size: var(--fs-11); }
.score-chip {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 7px;
  border-radius: var(--r-xs);
  font-size: var(--fs-12);
  font-weight: var(--fw-semibold);
  color: var(--txt-0);
  background: var(--surface-2);
  border: 1px solid var(--line-2);
}
.score-chip.is-first { color: var(--brand-text); background: var(--brand-soft); border-color: var(--brand-line); }
.tag-inline {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 6px;
  border-radius: 5px;
  font-size: 10px;
  font-weight: var(--fw-medium);
  letter-spacing: .02em;
}
.tag-inline--ok { color: var(--ok); background: var(--ok-soft); border: 1px solid var(--ok-line); }
.tag-inline--warn { color: var(--warn); background: var(--warn-soft); border: 1px solid var(--warn-line); }
.tag-inline--danger { color: var(--danger); background: var(--danger-soft); border: 1px solid var(--danger-line); }
.tag-inline--muted { color: var(--txt-2); background: var(--surface-2); border: 1px solid var(--line-1); }

/* 风险：具体的最坏情况，不写套话；首行可见 + 可展开全文 */
.v-risk {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: var(--s-3);
  padding: 10px 11px;
  border-radius: var(--r-md);
  background: var(--warn-soft);
  border: 1px solid var(--warn-line);
}
.v-risk > svg { width: 15px; height: 15px; color: var(--warn); flex: none; margin-top: 2px; }
.v-risk-main { flex: 1; min-width: 0; }
.v-risk-k { font-size: 10px; letter-spacing: .06em; color: var(--warn); }
.v-risk-t {
  margin-top: 2px;
  font-size: var(--fs-12);
  line-height: var(--lh-3);
  color: var(--txt-1);
}
.v-risk-t b { color: var(--txt-0); font-weight: var(--fw-semibold); }

.v-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
  margin-top: var(--s-3);
  padding-top: 10px;
  border-top: 1px solid var(--line-1);
  font-size: 10px;
  color: var(--txt-3);
}
.v-foot .v-ai { display: inline-flex; align-items: center; gap: 4px; }
.v-foot svg { width: 11px; height: 11px; }

/* ------------------------------ 章节锚点（吸顶 chips） ------------------------------ */
.anchor-bar {
  position: sticky;
  top: calc(var(--topbar-h) + var(--safe-t));
  z-index: var(--z-sticky);
  margin: 0 calc(-1 * var(--page-x));
  padding: var(--s-2) 0 6px;
  background: linear-gradient(180deg, var(--bg-0) 78%, transparent);
}
.anchor-bar .chips { padding: 0 var(--page-x); margin: 0; }
.anchor-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: var(--tap-min);
  padding: 0 11px;
  border-radius: var(--r-full);
  border: 1px solid var(--line-1);
  background: var(--surface-1);
  color: var(--txt-2);
  font-size: var(--fs-12);
  white-space: nowrap;
  flex: none;
}
.anchor-chip svg { width: 13px; height: 13px; }
.anchor-chip.is-on { color: var(--aurora-teal); background: var(--aurora-teal-soft); border-color: var(--aurora-teal-line); }

/* ------------------------------ 章节卡（渐进披露） ------------------------------ */
.sec { padding: 0; overflow: hidden; }
.sec-head {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  width: 100%;
  min-height: 50px;
  padding: 0 var(--s-4);
  text-align: left;
  color: var(--txt-0);
}
.sec-head .sec-ico {
  width: 28px; height: 28px;
  flex: none;
  border-radius: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--aurora-teal);
  background: var(--aurora-teal-soft);
  border: 1px solid var(--aurora-teal-line);
}
.sec-head .sec-ico svg { width: 15px; height: 15px; }
.sec-title { font-size: var(--fs-15); font-weight: var(--fw-semibold); letter-spacing: .01em; flex: 1; min-width: 0; }
.sec-note { font-size: var(--fs-11); color: var(--txt-2); flex: none; }
.sec-chev { color: var(--txt-3); flex: none; transition: transform var(--dur-3) var(--ease-out); }
.sec-chev svg { width: 18px; height: 18px; }
.sec-body { padding: 0 var(--s-4) var(--s-4); }
.sec:not(.is-open) .sec-body { display: none; }
.sec:not(.is-open) .sec-chev { transform: rotate(-90deg); }
.sec.is-open .sec-head { padding-bottom: var(--s-2); }

/* ------------------------------ 改法 1：2 列表格 → 定义列表 ------------------------------ */
.def-list { display: flex; flex-direction: column; }
.def-row {
  display: grid;
  grid-template-columns: 84px 1fr;
  gap: var(--s-3);
  padding: 8px 0;
  border-bottom: 1px solid var(--line-1);
  font-size: var(--fs-13);
  line-height: var(--lh-3);
}
.def-row:last-child { border-bottom: 0; }
.def-k { color: var(--txt-2); }
.def-v { color: var(--txt-0); word-break: break-word; }
.def-v .badge { height: 19px; font-size: 10px; }
.def-v .num { font-variant-numeric: tabular-nums; }

/* ------------------------------ 改法 2：伤停表 → 队卡 + 球员 chip ------------------------------
   2026-11-11 修：原实现把「名字+整句原因」塞进红/黄药丸，长句 12px 红字压在粉色块上，和卡片底
   不协调。现改为「条目」形态：浅底卡片 + 左侧状态色条，名字正常前景色，原因降为 11px 灰字。 */
.inj-team { padding: 0 0 var(--s-3); border-bottom: 1px solid var(--line-1); }
.inj-team:last-child { border-bottom: 0; padding-bottom: 0; }
.inj-team-head { display: flex; align-items: center; gap: var(--s-2); margin-bottom: 9px; }
.inj-team-head b { font-size: var(--fs-14); font-weight: var(--fw-semibold); }
.inj-team-head .badge { margin-left: auto; }
.inj-group { display: flex; gap: 9px; padding: 3px 0; }
.inj-k { flex: none; width: 58px; font-size: var(--fs-11); color: var(--txt-2); padding-top: 7px; line-height: 1.45; }
.inj-players { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; flex: 1; }
.player {
  --st: var(--line-2);
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  max-width: 100%;
  padding: 5px 9px 6px 11px;
  border-radius: var(--r-sm);
  background: var(--surface-2);
  border: 1px solid var(--line-1);
  font-size: var(--fs-13);
  line-height: 1.5;
  color: var(--txt-1);
  white-space: normal;
  word-break: break-word;
}
.player::before {
  content: "";
  position: absolute;
  left: 0; top: 6px; bottom: 6px;
  width: 2px; border-radius: 2px;
  background: var(--st);
}
.player--out, .player--stop { --st: var(--danger); }
.player--doubt { --st: var(--warn); }
.player .p-name { color: var(--txt-0); font-weight: var(--fw-medium); }
.player .p-note { color: var(--txt-2); font-size: var(--fs-11); line-height: 1.4; }
.inj-impact {
  display: flex;
  gap: 6px;
  margin-top: 8px;
  padding: 8px 10px;
  border-radius: var(--r-sm);
  background: var(--surface-1);
  border-left: 2px solid var(--aurora-teal-line);
  font-size: var(--fs-13);
  line-height: 1.6;
  color: var(--txt-1);
}
.inj-impact b { color: var(--txt-0); font-weight: var(--fw-semibold); }

/* ------------------------------ 改法 3：5 列时段表 → 视角切换 + 双条 ------------------------------ */
.ts-head { display: flex; align-items: center; justify-content: space-between; gap: var(--s-2); margin-bottom: var(--s-3); }
.ts-legend { display: flex; gap: 10px; font-size: 10px; color: var(--txt-2); }
.ts-legend i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 4px; vertical-align: -1px; }
.ts-legend .in { background: var(--aurora-teal); }
.ts-legend .out { background: var(--data-a); opacity: .8; }
.ts-row {
  display: grid;
  grid-template-columns: 44px 1fr 52px;
  align-items: center;
  gap: 10px;
  padding: 5px 0;
}
.ts-label { font-size: 10px; color: var(--txt-2); letter-spacing: .02em; }
.ts-bars { display: flex; flex-direction: column; gap: 3px; }
.ts-bar {
  height: 6px;
  border-radius: 3px;
  background: var(--surface-1);
  overflow: hidden;
}
.ts-bar > i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--aurora-teal), var(--aurora-blue));
  min-width: 2px;
}
.ts-bar--out > i { background: linear-gradient(90deg, var(--data-a), var(--aura-warn, var(--warn))); opacity: .85; }
.ts-val { text-align: right; font-size: var(--fs-12); color: var(--txt-0); }
.ts-val .muted { color: var(--txt-3); }
.ts-foot {
  margin-top: var(--s-3);
  padding-top: 8px;
  border-top: 1px solid var(--line-1);
  font-size: var(--fs-12);
  line-height: var(--lh-3);
  color: var(--txt-1);
}
.ts-foot b { color: var(--aurora-teal); font-weight: var(--fw-semibold); }

/* ------------------------------ 改法 4：3 列对比表 → 对比行卡 ------------------------------ */
.cmp + .cmp { margin-top: 10px; }
.cmp-top { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2); }
.cmp-name { font-size: var(--fs-12); color: var(--txt-1); min-width: 0; }
.cmp-vals { display: flex; align-items: baseline; gap: 6px; flex: none; }
.cmp-vals b { font-size: var(--fs-15); font-weight: var(--fw-semibold); }
.cmp-vals .home { color: var(--data-a); }
.cmp-vals .away { color: var(--data-c); }
.cmp-vals .mid { font-size: 10px; color: var(--txt-3); }
.cmp-bar {
  display: flex;
  height: 5px;
  margin-top: 5px;
  border-radius: 3px;
  overflow: hidden;
  background: var(--surface-1);
  gap: 2px;
}
.cmp-bar > i { display: block; height: 100%; border-radius: 2px; }
.cmp-bar .home { background: var(--data-a); opacity: .85; }
.cmp-bar .away { background: var(--data-c); opacity: .85; }
.cmp-bar-split { display: flex; width: 100%; height: 100%; gap: 2px; }
.cmp-bar .rail { flex: 1; display: flex; height: 100%; }
.cmp-bar .rail--r { justify-content: flex-end; }
.cmp-bullets { margin-top: var(--s-3); padding-top: var(--s-3); border-top: 1px solid var(--line-1); }
.cmp-bullets li { font-size: var(--fs-12); line-height: var(--lh-3); color: var(--txt-1); }
.cmp-bullets li::marker { color: var(--aurora-teal); }

/* ------------------------------ 改法 5：交锋 4 列 → 时间线 ------------------------------ */
.h2h-row {
  display: grid;
  grid-template-columns: 46px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px solid var(--line-1);
}
.h2h-row:last-child { border-bottom: 0; }
.h2h-date { font-size: 11px; color: var(--txt-2); }
.h2h-main { font-size: var(--fs-12); color: var(--txt-1); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.h2h-main b { color: var(--txt-0); font-weight: var(--fw-semibold); }
.h2h-score { font-size: var(--fs-13); font-weight: var(--fw-semibold); letter-spacing: .02em; }
.h2h-tag { width: 40px; text-align: center; }
.h2h-tag .tag-inline { justify-content: center; width: 100%; }
.h2h-foot { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--s-3); margin-top: var(--s-3); padding-top: 8px; border-top: 1px solid var(--line-1); font-size: var(--fs-12); line-height: 1.55; color: var(--txt-2); }
.h2h-foot > span:first-child { flex: 1; min-width: 0; }
.h2h-foot > span:last-child { flex: none; white-space: nowrap; color: var(--txt-1); font-variant-numeric: tabular-nums; }

/* ------------------------------ 阅读工具（右下浮动胶囊，避免与 tab 双底栏） ------------------------------ */
.read-tools {
  position: fixed;
  right: calc(50% - min(50%, var(--app-max) / 2) + 12px);
  bottom: calc(var(--tabbar-h) + 14px + var(--safe-b));
  z-index: var(--z-sticky);
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 5px;
  border-radius: var(--r-full);
  background: var(--surface-glass);
  -webkit-backdrop-filter: var(--surface-blur);
          backdrop-filter: var(--surface-blur);
  border: 1px solid var(--line-2);
  box-shadow: var(--sh-3);
}
body:has(.view-report) .read-tools { bottom: calc(18px + var(--safe-b)); }
.read-tools button {
  /* QA P2 触控收口：浮动阅读工具条按钮真实热区 ≥44（原来 38） */
  width: var(--tap-min); height: var(--tap-min);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--txt-1);
  transition: background-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out), transform var(--dur-1) var(--ease-out);
}
.read-tools button svg { width: 18px; height: 18px; }
.read-tools button:active { transform: scale(.92); background: var(--surface-2); }
.read-tools .rt-label {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: var(--tap-min);
  padding: 0 12px;
  border-radius: var(--r-full);
  font-size: var(--fs-12);
  color: var(--brand-text);
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
}
.read-tools .rt-label svg { width: 15px; height: 15px; }

/* ------------------------------ 免责 / 原文 / 底栏 ------------------------------ */
.disclaimer {
  padding: var(--s-3) 2px;
  font-size: 10px;
  line-height: var(--lh-4);
  color: var(--txt-3);
  text-align: center;
}
.report-end {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  justify-content: center;
  padding: var(--s-4) 0 var(--s-2);
  font-size: var(--fs-11);
  color: var(--txt-3);
}
.report-end::before, .report-end::after { content: ""; width: 28px; height: 1px; background: var(--line-2); }

/* 表格视图兜底（未知表格 / 用户切回横滚） */
.tbl-scroll {
  position: relative;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  border-radius: var(--r-sm);
  border: 1px solid var(--line-1);
  background: var(--bg-inset);
  scrollbar-width: none;
}
.tbl-scroll::-webkit-scrollbar { display: none; }
.tbl-hint {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 6px 0 0;
  font-size: 10px;
  color: var(--txt-3);
}
.tbl-hint svg { width: 12px; height: 12px; }

/* ============================================================================
   报告页 · builder-core 增补（数据绑定后的动态元素与赔率曲线；全部 tokens 驱动）
   ========================================================================== */

/* 比分大字（完场/进行中） */
.rh-score { display: block; font-size: var(--fs-26); font-weight: var(--fw-bold); letter-spacing: var(--ls-num); color: var(--txt-0); line-height: 1.05; }

/* 把握条：区间段（JS 写 left/width 百分比，0~100% 概率轴） */
.v-meter { position: relative; }
.v-meter > i { position: absolute; top: 0; bottom: 0; }
.v-meter > i::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.v-conf-note { display: block; margin-top: 4px; font-size: 10px; color: var(--txt-3); }

/* 行动建议里的原始补充文案 */
.v-action-note { min-width: 0; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; white-space: normal; word-break: break-word; color: var(--txt-2); font-size: var(--fs-12); line-height: 1.55; }

/* 旧版字段行（半全场等） */
.v-extra { display: flex; align-items: center; gap: 6px; margin-top: var(--s-2); font-size: var(--fs-11); color: var(--txt-2); }
.v-extra svg { width: 13px; height: 13px; }
.v-extra b { color: var(--txt-0); font-weight: var(--fw-medium); }

/* 风险卡：展开全文 */
.risk-more { color: var(--aurora-teal); font-size: var(--fs-11); cursor: pointer; white-space: nowrap; }
.risk-full { margin-top: 6px; font-size: var(--fs-12); line-height: var(--lh-3); color: var(--txt-2); }

/* 进球时段：多队（转置/两表布局） */
.ts-team + .ts-team { margin-top: var(--s-3); padding-top: var(--s-3); border-top: 1px solid var(--line-1); }
.ts-team .eyebrow { margin-bottom: 4px; }

/* 项目符号列表（附注/要点） */
.bullet-list { margin: 0; padding-left: 18px; }
.bullet-list li { font-size: var(--fs-12); line-height: var(--lh-3); color: var(--txt-1); }
.bullet-list li + li { margin-top: 4px; }
.bullet-list li::marker { color: var(--aurora-teal); }

/* 结论原文 */
.concl-list { display: flex; flex-direction: column; gap: 8px; }
.concl-item { display: grid; grid-template-columns: 88px 1fr; gap: var(--s-2); font-size: var(--fs-12); line-height: var(--lh-3); }
.concl-k { color: var(--txt-2); }
.concl-v { color: var(--txt-0); }

/* 赔率曲线 */
.odds-chart { display: block; width: 100%; height: auto; margin-top: var(--s-2); overflow: visible; }
.odds-line { fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.odds-zero { stroke: var(--line-2); stroke-width: 1; stroke-dasharray: 3 4; vector-effect: non-scaling-stroke; }
.odds-axis { font-size: 9px; fill: var(--txt-3); font-variant-numeric: tabular-nums; }
.odds-legend { display: flex; flex-wrap: wrap; gap: 10px 14px; margin-top: 6px; }
.odds-lg { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-11); color: var(--txt-2); }
.odds-lg i { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }
.odds-lg b { color: var(--txt-0); font-weight: var(--fw-medium); }
.odds-lg em { font-style: normal; font-size: 10px; }
.odds-lg em.up { color: var(--data-up); }
.odds-lg em.down { color: var(--data-down); }
.odds-prices { margin-top: var(--s-2); display: flex; flex-direction: column; gap: 4px; }
.odds-prices-row { display: flex; align-items: center; gap: 12px; font-size: var(--fs-12); color: var(--txt-0); }
.odds-prices-row .eyebrow { width: 34px; flex: none; }
.odds-prices-row .odds-m { margin-left: auto; font-size: 10px; }
.odds-prices-row .odds-m.up { color: var(--data-up); }
.odds-prices-row .odds-m.down { color: var(--data-down); }
.odds-curve-head { display: flex; align-items: center; justify-content: space-between; margin-top: var(--s-2); }

/* 上/下一场 */
.report-nav { display: flex; align-items: center; justify-content: space-between; gap: var(--s-2); margin-top: var(--s-4); padding-top: var(--s-3); border-top: 1px solid var(--line-1); }
.report-nav .btn { flex: 1; }

/* 报告头状态徽章组 */
.rh-top .badge + .badge { margin-left: 6px; }

/* ============================================================================
   Lead 冒烟反馈修复（2026-11-10）：中文短徽章不换行 / 报告标题关系标注 / 吸底工具条
   ========================================================================== */

/* 报告页是独立全屏页：内容底部留出吸底阅读工具条的空间，避免遮挡 */
.view-report .page { padding-bottom: calc(104px + var(--safe-b)); }
body:has(.view-report) .scroll-progress { display: block; }

/* 中文短徽章在任何容器里都不竖排/不换行（决策卡/比赛卡/锚点通用兜底） */
.pick,
.badge,
.score-chip,
.tag-inline,
.v-action b,
.v-action-k,
.v-conf-level,
.rt-label { white-space: nowrap; }

/* 行动建议：第一行 icon+标签+结论（nowrap），补充文案独占一行省略 */
.v-action { flex-wrap: wrap; }
.v-action-line { display: flex; align-items: center; gap: var(--s-2); width: 100%; min-width: 0; }
.v-action-note { display: -webkit-box; flex: 1 1 100%; min-width: 0; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 4; white-space: normal; word-break: break-word; color: var(--txt-2); font-size: var(--fs-12); line-height: 1.55; padding-left: 34px; }

/* 比赛信息对比行：长值（如「英甲第15·59分」整段文字）换行显示，不挤压名称 */
.cmp-top { flex-wrap: wrap; row-gap: 2px; }
.cmp-name { flex: 1 1 120px; }
.cmp-vals { flex: 0 1 auto; flex-wrap: wrap; justify-content: flex-end; }
.cmp-vals b { font-size: var(--fs-12); font-weight: var(--fw-medium); white-space: normal; word-break: break-word; text-align: right; }
.cmp-vals b.home, .cmp-vals b.away { max-width: 46%; }

/* 报告头：AI 分析报告标签 + 原报告标题（避免用户误以为数据错位） */
.rh-report-label { display: inline-flex; align-items: center; gap: 4px; color: var(--txt-1); font-weight: var(--fw-medium); }
.rh-report-label svg { width: 12px; height: 12px; color: var(--aurora-teal); }
.rh-report-title { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 8px; font-size: var(--fs-11); color: var(--txt-2); }
.rh-report-title b { color: var(--txt-1); font-weight: var(--fw-medium); }
.rh-report-title svg { width: 12px; height: 12px; color: var(--txt-3); }

/* ============================================================================
   T19 修复（独立评测 P2）：锚点遮挡 / 首屏工具条遮挡 / 对比视角双条形 / 让球行动词
   ========================================================================== */

/* T19-3 章节锚点被吸顶栏遮挡：滚动目标预留「状态栏+顶栏+锚点栏+8px」
   （实测固定栏底部约 100px；--topbar-h=52、锚点栏 ≈44） */
.sec { scroll-margin-top: calc(var(--safe-t) + var(--topbar-h) + 52px); }
/* 原文段与 odds 段同样生效（均是 .sec） */

/* T19-4 首屏底部锚点 chips 被吸底阅读工具栏遮挡：
   阅读工具在页面顶部 140px 内隐藏（滚动后浮现），首屏锚点 chips 完整可见 */
.read-tools { transition: opacity var(--dur-2) var(--ease-out), transform var(--dur-2) var(--ease-out); }
.read-tools.is-hidden { opacity: 0; transform: translateY(10px); pointer-events: none; }

/* T19-1 进球时段「对比」视角：双条形（主/客 × 进/失），替代裸 5 列表格 */
.ts-cmp { display: flex; flex-direction: column; gap: 2px; }
.ts-cmp-head,
.ts-cmp-row {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}
.ts-cmp-head { margin-bottom: 4px; }
.ts-cmp-head b {
  font-size: var(--fs-11);
  font-weight: var(--fw-medium);
  color: var(--txt-2);
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ts-cmp-row { padding: 6px 0; border-bottom: 1px dashed var(--line-1); }
.ts-cmp-row:last-of-type { border-bottom: 0; }
.ts-cmp-team { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ts-cmp-num { display: flex; align-items: baseline; justify-content: space-between; gap: 4px; font-size: 10px; color: var(--txt-2); }
.ts-cmp-num b { color: var(--txt-0); font-weight: var(--fw-semibold); }
.ts-cmp .ts-bar { height: 5px; }
.ts-cmp .ts-legend { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--line-1); }
.ts-cmp .ts-legend .muted { font-size: 10px; color: var(--txt-3); }

/* T19-2 让球行动词 chip：与方向/区间并排时保持一行，不挤掉数值 */
.v-v [data-hcp-action] { flex: none; height: 19px; font-size: 10px; }
.tag-inline--gold { color: var(--brand-text); background: var(--brand-soft); border: 1px solid var(--brand-line); }




/* ============================================================================
   F5-A 核心数据对比可视化（总览三色分段条 + 指标卡双轨条/分段条/要点卡）
   —— 沿用 tokens / --data-a(主) / --data-c(客)；暗亮通用、390/360 不溢出
   ========================================================================== */
.cx-wrap { display: flex; flex-direction: column; gap: 10px; }
.cx-overview {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 8px;
  padding: 12px;
  border-radius: var(--r-md);
  background: var(--bg-inset);
  border: 1px solid var(--line-1);
}
.cx-ov-col { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.cx-ov-col.away { align-items: flex-end; text-align: right; }
.cx-ov-team {
  font-size: var(--fs-11);
  color: var(--txt-2);
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cx-ov-big {
  font-size: var(--fs-26);
  font-weight: var(--fw-bold);
  color: var(--txt-0);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.cx-ov-big em { font-size: var(--fs-11); font-style: normal; font-weight: var(--fw-regular); color: var(--txt-2); margin-left: 2px; }
/* C1：副标题按分项换行（「12 场」不拆），窄屏只缩小间距 */
.cx-ov-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 5px; max-width: 100%; font-size: 10px; line-height: 1.35; color: var(--txt-3); }
.cx-meta-i { white-space: nowrap; }
.cx-meta-sep { opacity: .7; }
.cx-ov-col.away .cx-ov-meta { justify-content: flex-end; }
.cx-ov-wdl { display: flex; gap: 6px; font-size: 10px; font-variant-numeric: tabular-nums; }
.cx-ov-wdl .w { color: var(--ok); }
.cx-ov-wdl .d { color: var(--brand-text); }
.cx-ov-wdl .l { color: var(--danger); }
.cx-ov-mid { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-width: 42px; }
.cx-ov-vs { font-size: 10px; color: var(--txt-3); }
.cx-diff {
  font-size: 9px;
  line-height: 1.3;
  color: var(--brand-text);
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
  border-radius: var(--r-full);
  padding: 2px 6px;
  text-align: center;
  max-width: 92px;
}
.cx-seg {
  display: flex;
  width: 100%;
  height: 8px;
  border-radius: var(--r-full);
  overflow: hidden;
  background: var(--bg-3);
  gap: 1px;
  margin-top: 4px;
}
.cx-seg i { display: block; height: 100%; }
.cx-seg .w { background: var(--ok); }
.cx-seg .d { background: var(--brand); }
.cx-seg .l { background: var(--danger); }
.cx-list { display: flex; flex-direction: column; gap: 8px; }
.cx-item {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  border-radius: var(--r-md);
  background: var(--bg-inset);
  border: 1px solid var(--line-1);
}
.cx-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.cx-label { font-size: var(--fs-12); font-weight: var(--fw-medium); color: var(--txt-1); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cx-kind {
  flex: none;
  font-size: 9px;
  color: var(--txt-3);
  border: 1px solid var(--line-1);
  border-radius: var(--r-full);
  padding: 1px 6px;
  white-space: nowrap;
}
.cx-pair { display: flex; flex-direction: column; gap: 6px; }
.cx-track { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 8px; }
.cx-track-k { font-size: 9px; color: var(--txt-3); white-space: nowrap; }
.cx-rail { display: block; height: 8px; border-radius: var(--r-full); background: var(--bg-3); overflow: hidden; }
.cx-rail i { display: block; height: 100%; border-radius: var(--r-full); opacity: .9; }
.cx-rail i.home { background: var(--data-a); }
.cx-rail i.away { background: var(--data-c); }
.cx-track-v { min-width: 40px; text-align: right; font-size: var(--fs-12); font-variant-numeric: tabular-nums; }
.cx-track-v.home { color: var(--data-a); }
.cx-track-v.away { color: var(--data-c); }
.cx-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
.cx-form-col { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.cx-form-col.away { align-items: flex-end; }
.cx-form-name { font-size: 9px; color: var(--txt-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.cx-seq { display: flex; flex-wrap: wrap; gap: 2px; }
.cx-sq {
  width: 15px;
  height: 15px;
  border-radius: 3px;
  display: grid;
  place-items: center;
  font-size: 9px;
  font-style: normal;
  font-weight: var(--fw-semibold);
  line-height: 1;
}
.cx-sq.w { color: var(--ok); background: var(--ok-soft); }
.cx-sq.d { color: var(--brand-text); background: var(--brand-soft); }
.cx-sq.l { color: var(--danger); background: var(--danger-soft); }
.cx-rank { display: flex; align-items: center; justify-content: center; gap: 10px; font-size: var(--fs-12); color: var(--txt-2); }
.cx-rank-col.home b { color: var(--data-a); }
.cx-rank-col.away b { color: var(--data-c); }
.cx-rank-vs { font-size: 10px; color: var(--txt-3); }
.cx-raw {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  padding-top: 6px;
  border-top: 1px dashed var(--line-1);
  font-size: 10px;
  line-height: 1.45;
  color: var(--txt-3);
}
/* A2：原文不截断（长文本完整展示，信息无损；两列各自换行） */
.cx-raw span { overflow: visible; display: block; white-space: normal; word-break: break-word; }
.cx-raw .a { text-align: right; }
.cx-text {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
  font-size: var(--fs-11);
  line-height: 1.6;
  color: var(--txt-2);
  word-break: break-word;
}
.cx-text .a { text-align: right; }
.cx-item--text { border-style: dashed; }
.cx-points { display: flex; flex-direction: column; gap: 8px; }
.cx-point {
  padding: 10px 12px;
  border-radius: var(--r-md);
  background: var(--bg-inset);
  border: 1px solid var(--line-1);
  font-size: var(--fs-11);
  line-height: 1.6;
  color: var(--txt-2);
}
.cx-point b { display: block; margin-bottom: 2px; font-size: var(--fs-11); font-weight: var(--fw-medium); color: var(--txt-1); }
@media (max-width: 360px) {
  .cx-ov-big { font-size: var(--fs-20); }
  .cx-overview { padding: 10px; gap: 6px; }
  .cx-text { gap: 8px; font-size: 10px; }
  .cx-raw { gap: 6px; }
  .cx-item { padding: 9px 10px; }
}

/* ============================================================================
   F5-B 未来赛程时间线（两队并列；最近一场高亮；≤5 场/队；暗亮通用）
   ========================================================================== */
.ft-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.ft-col { min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.ft-team { display: flex; flex-direction: column; gap: 1px; padding-bottom: 6px; border-bottom: 1px solid var(--line-1); }
.ft-team-name { font-size: var(--fs-12); font-weight: var(--fw-medium); color: var(--txt-0); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ft-team-tag { font-size: 10px; color: var(--txt-3); }
.ft-tl { display: flex; flex-direction: column; gap: 6px; }
.ft-item {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  padding: 7px 8px;
  border-radius: var(--r-sm);
  background: var(--bg-inset);
  border: 1px solid var(--line-1);
}
.ft-item.is-next { border-color: var(--brand-line); background: var(--brand-softer); }
.ft-date { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.ft-date b { font-size: var(--fs-11); color: var(--txt-0); font-variant-numeric: tabular-nums; }
.ft-date span { font-size: 9px; color: var(--txt-3); }
.ft-body { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.ft-opp { display: flex; align-items: center; gap: 4px; min-width: 0; }
.ft-opp-name { font-size: var(--fs-11); color: var(--txt-0); line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; }
.ft-ha {
  flex: none;
  width: 15px;
  height: 15px;
  border-radius: 3px;
  display: grid;
  place-items: center;
  font-size: 9px;
  font-style: normal;
  font-weight: var(--fw-semibold);
  border: 1px solid var(--line-2);
}
.ft-ha.home { color: var(--data-a); }
.ft-ha.away { color: var(--data-c); }
.ft-sub { font-size: 9px; color: var(--txt-3); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; }
.ft-days { display: block; margin-top: 1px; font-size: 9px; font-style: normal; color: var(--txt-3); font-variant-numeric: tabular-nums; }
.ft-days.is-next { color: var(--brand-text); font-weight: var(--fw-medium); }
.ft-empty { font-size: var(--fs-11); color: var(--txt-3); padding: 6px 2px; }
.ft-note { display: flex; align-items: center; gap: 4px; margin-top: 10px; font-size: 10px; color: var(--txt-3); }
/* ============================================================================
   F12：赛程段「未来 / 历史」+ 历史 3/6/10（杯赛非官方卡 chips-only）
   ========================================================================== */
.sched-tabs { display: flex; align-items: center; margin-bottom: 10px; }
/* 触控 ≥44：分段整体高度 = 44 + 边距，按钮 44px 热区 */
.sched-seg { min-height: var(--tap-min); }
.sched-seg > button { height: 44px; min-height: 44px; padding: 0 18px; font-size: var(--fs-13); }
.sched-seg > button.is-on { color: var(--brand-text); background: var(--brand-soft); }
.sched-pane[hidden] { display: none; }
.ft-wrap--hist { gap: 10px; }
.ft-hist-bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.sched-hist-seg { min-height: var(--tap-min); }
.sched-hist-seg > button { height: 44px; min-height: 44px; padding: 0 14px; font-size: var(--fs-12); }
.sched-hist-seg > button.is-on { color: var(--brand-text); background: var(--brand-soft); }
.ft-hist-hint { font-size: 9px; color: var(--txt-3); }
.ft-hist { display: flex; flex-direction: column; gap: 0; }
/* 两队各一列时列宽仅约 150–170px：每场两行（对手+胜平负 / 日期联赛+比分），避免对手名被截断 */
.ft-hist-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 7px 4px;
  border-bottom: 1px dashed var(--line-1);
  font-variant-numeric: tabular-nums;
}
.ft-hist-item:last-child { border-bottom: 0; }
.ft-hist-top { display: flex; align-items: center; gap: 4px; min-width: 0; }
.ft-hist-top .ft-opp-name { flex: 1 1 auto; display: block; min-width: 0; font-size: var(--fs-11); color: var(--txt-0); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: unset; -webkit-box-orient: initial; }
.ft-hist-bot { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; min-width: 0; }
.ft-hist-meta { min-width: 0; font-size: 9px; color: var(--txt-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ft-hist-score { flex: none; font-size: var(--fs-11); color: var(--txt-0); font-weight: var(--fw-medium); white-space: nowrap; }
.ft-hist-res {
  flex: none;
  font-size: 9px;
  line-height: 16px;
  padding: 0 4px;
  text-align: center;
  border-radius: var(--r-xs);
  border: 1px solid var(--line-2);
  color: var(--txt-2);
  white-space: nowrap;
}
.ft-hist-res.res-w { color: var(--ok); background: var(--ok-soft); border-color: var(--ok-line); }
.ft-hist-res.res-d { color: var(--brand-text); background: var(--brand-soft); border-color: var(--brand-line); }
.ft-hist-res.res-l { color: var(--danger); background: var(--danger-soft); border-color: var(--danger-line); }
@media (max-width: 360px) {
  .ft-hist-item { grid-template-columns: 36px minmax(0, 1fr) 40px 26px; gap: 4px; padding: 5px 4px; }
  .sched-seg > button { padding: 0 14px; }
  .sched-hist-seg > button { padding: 0 10px; }
}
/* 杯赛非官方：chips-only 极简卡（仅赛事/小组/轮次，无数字/入口/数据区） */
.cx-cup--chips { padding: 10px 12px; }
.cx-cup--chips .cx-cup-head { margin: 0; }
.cx-cup--chips .cx-cup-tag { align-self: center; }

/* ============================================================================
   赔率区块重做（方案 A+ · 速览 + 明细） · 2026-11-12
   ----------------------------------------------------------------------------
   一条纵向阅读流：结论行 → 速览三联 → 胜平负矩阵 → 亚盘 → 大小球 → 体彩走势 → 注
   纪律：0 横向滚动（grid 固定列宽，不用 overflow:auto 的表格）、0 嵌套滚动、
        全部色值/间距/字阶走 tokens.css、数字一律 tabular-nums。
   390 基准：卡片内容宽 = 390 - 2*14(--page-x) - 2*16(--s-4) = 330px
   320 基准：260px（媒体查询把价格列 56 → 44，返还列 44 → 40）
   ========================================================================== */
.odx { display: flex; flex-direction: column; gap: var(--s-3); }

/* ------------------------------ 本场赔率异动（区块头顶部标注） ------------------------------ */
.odx-anom-chip {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  min-height: 34px;
  padding: 0 10px;
  border-radius: var(--r-sm);
  background: var(--warn-soft);
  box-shadow: inset 0 0 0 1px var(--warn-line);
  font-size: var(--fs-11);
  text-align: left;
  color: var(--txt-1);
}
.odx-anom-k {
  flex: none;
  display: grid;
  place-items: center;
  width: 15px;
  height: 15px;
  border-radius: 4px;
  background: var(--warn);
  color: var(--bg-0);
  font-size: 9px;
  font-style: normal;
  font-weight: var(--fw-semibold);
  line-height: 1;
}
.odx-anom-t { flex: none; color: var(--txt-0); font-weight: var(--fw-medium); letter-spacing: var(--ls-cjk); }
.odx-anom-n { margin-left: auto; font-size: 10px; color: var(--warn); font-variant-numeric: tabular-nums; white-space: nowrap; }
.odx-anom-chev { flex: none; display: grid; place-items: center; width: 14px; height: 14px; color: var(--txt-3); }
.odx-anom-chev svg { width: 14px; height: 14px; display: block; }

/* 异动说明块：点顶部标注跳到此处（同一页内，不新开页/不弹层） */
.odx-anom {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 10px 9px;
  border-radius: var(--r-sm);
  background: var(--warn-soft);
  box-shadow: inset 0 0 0 1px var(--warn-line);
  scroll-margin-top: calc(var(--safe-t) + var(--topbar-h) + 16px);
  transition: box-shadow var(--dur-3) var(--ease-out);
}
.odx-anom.is-flash { box-shadow: inset 0 0 0 2px var(--warn); }
.odx-anom-head { display: flex; align-items: center; gap: 6px; padding-bottom: 2px; }
.odx-anom-head b { font-size: var(--fs-12); font-weight: var(--fw-semibold); color: var(--txt-0); }
.odx-anom-lv {
  margin-left: auto;
  font-size: 9px;
  color: var(--warn);
  border: 1px solid var(--warn-line);
  border-radius: 3px;
  padding: 1px 4px;
}
.odx-anom-item { display: flex; flex-direction: column; gap: 2px; padding: 5px 0; border-top: 1px dashed var(--warn-line); }
.odx-anom-item:first-of-type { border-top: 0; }
.odx-anom-line { display: flex; align-items: baseline; gap: 6px; min-width: 0; }
.odx-anom-src {
  flex: none;
  font-style: normal;
  font-size: 9px;
  line-height: 1.5;
  padding: 0 4px;
  border-radius: 3px;
  color: var(--warn);
  border: 1px solid var(--warn-line);
}
.odx-anom-label { min-width: 0; font-size: var(--fs-11); color: var(--txt-0); line-height: var(--lh-2); }
.odx-anom-vals { font-size: 10px; color: var(--txt-2); font-variant-numeric: tabular-nums; flex-wrap: wrap; gap: 2px 8px; }
.odx-anom-vals i { font-style: normal; }
.odx-anom-vals i.up { color: var(--data-up); }
.odx-anom-vals i.down { color: var(--data-down); }
.odx-anom-vals em { font-style: normal; color: var(--txt-3); }
.odx-anom-mv { color: var(--txt-1); }
.odx-anom-foot { margin-top: 4px; padding-top: 6px; border-top: 1px dashed var(--warn-line); font-size: 9px; line-height: var(--lh-2); color: var(--txt-3); }

/* ------------------------------ 结论行 ------------------------------ */
.odx-verdict {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 10px;
  border-radius: var(--r-sm);
  background: var(--brand-softer);
  box-shadow: inset 0 0 0 1px var(--brand-line);
}
.odx-vd-main { font-size: var(--fs-12); color: var(--txt-0); letter-spacing: var(--ls-cjk); }
.odx-vd-main b { font-weight: var(--fw-semibold); font-variant-numeric: tabular-nums; }
.odx-vd-sub { font-size: 10px; color: var(--txt-2); }
.odx-vd-sub b { color: var(--txt-1); font-weight: var(--fw-medium); font-variant-numeric: tabular-nums; }
.odx-sep { color: var(--txt-3); padding: 0 5px; }

/* ------------------------------ 速览主卡（3 结果并排） ------------------------------ */
.odx-hero {
  padding: 10px 10px 8px;
  border-radius: var(--r-md);
  background: var(--bg-inset);
  box-shadow: inset 0 0 0 1px var(--line-1);
}
.odx-hero-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.odx-hero-title { font-size: var(--fs-11); color: var(--txt-1); font-weight: var(--fw-medium); letter-spacing: var(--ls-label); }
.odx-hero-sub { font-size: 9px; color: var(--txt-3); }
.odx-hero-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.odx-hero-col { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.odx-hero-k {
  display: flex; align-items: baseline; justify-content: space-between; gap: 4px;
  font-size: 10px; color: var(--txt-2); letter-spacing: var(--ls-label);
  min-width: 0;
}
.odx-hero-k i {
  font-style: normal; font-size: 9px; letter-spacing: 0; color: var(--txt-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0;
}
.odx-hero-best { display: flex; align-items: baseline; min-width: 0; }
.odx-hero-best b {
  font-size: var(--fs-20);
  font-weight: var(--fw-semibold);
  color: var(--brand-text);
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
  letter-spacing: var(--ls-num);
}

/* 价格区间条：rail 内是国际盘区间，金点 = 体彩位置 */
.odx-range { position: relative; display: block; height: 5px; margin: 3px 0 0; }
.odx-range::before {
  content: ""; position: absolute; inset: 0; border-radius: var(--r-full);
  background: var(--surface-2);
}
.odx-range-fill {
  position: absolute; top: 0; bottom: 0; border-radius: var(--r-full);
  background: var(--data-c);
  opacity: .55;
}
.odx-range-dot {
  position: absolute; top: 50%; width: 7px; height: 7px; margin: -3.5px 0 0 -3.5px;
  border-radius: 50%;
  background: var(--brand);
  box-shadow: 0 0 0 1.5px var(--bg-2);
}
.odx-range-cap { display: flex; justify-content: space-between; font-size: 8px; color: var(--txt-3); font-variant-numeric: tabular-nums; line-height: 1.2; }
.odx-hero-jc { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0 3px; font-size: 10px; color: var(--txt-2); }
.odx-hero-jc b { font-size: var(--fs-11); color: var(--txt-1); font-weight: var(--fw-medium); font-variant-numeric: tabular-nums; }
.odx-diff { font-style: normal; margin-left: auto; font-size: 10px; color: var(--txt-3); font-variant-numeric: tabular-nums; }

/* ------------------------------ 市场块 ------------------------------ */
.odx-mkt { display: flex; flex-direction: column; gap: 4px; }
.odx-mkt + .odx-mkt { margin-top: 2px; }
.odx-mkt-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding-bottom: 2px; }
.odx-mkt-t { font-size: var(--fs-12); font-weight: var(--fw-semibold); color: var(--txt-0); letter-spacing: var(--ls-cjk); }
.odx-mkt-n { font-size: 10px; color: var(--txt-3); font-variant-numeric: tabular-nums; }

/* 共识位移一行：只在有初盘时出现 */
.odx-consensus {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 3px;
  font-size: 10px; color: var(--txt-2);
  font-variant-numeric: tabular-nums;
  padding-bottom: 2px;
}
.odx-consensus i { font-style: normal; margin-left: 3px; }
.odx-consensus i.up { color: var(--data-up); }
.odx-consensus i.down { color: var(--data-down); }
.odx-consensus em { font-style: normal; color: var(--txt-3); margin-left: 3px; }
.odx-cs-k { color: var(--txt-3); font-size: 9px; margin-right: 6px; }
.odx-cs-d { color: var(--txt-3); margin: 0 6px; }

/* ------------------------------ 书商矩阵 ------------------------------ */
.odx-mx-wrap { display: flex; flex-direction: column; }
.odx-mx {
  --p: 56px; --ret: 44px;
  display: grid;
  grid-template-columns: minmax(54px, 1fr);
  align-items: center;
  column-gap: 0;
  min-height: 30px;
  border-bottom: 1px solid var(--line-1);
}
.odx-mx--3 { grid-template-columns: minmax(54px, 1fr) repeat(3, var(--p)) var(--ret); }
/* 两列（亚盘/大小球）收窄数字块，避免中间出现大片空白；上限 70px 给书商名留够宽度 */
.odx-mx--2 { grid-template-columns: minmax(54px, 1fr) repeat(2, minmax(58px, 70px)) var(--ret); }
.odx-mx:last-child { border-bottom: 0; }

.odx-mx--head {
  min-height: 20px;
  border-bottom-color: var(--line-2);
  position: relative;
}
.odx-mx-h { font-size: 9px; color: var(--txt-3); text-align: right; padding-right: 9px; letter-spacing: var(--ls-label); }
.odx-mx-name {
  font-size: var(--fs-12);
  color: var(--txt-1);
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: flex;
  align-items: center;
  gap: 4px;
  padding-right: 4px;
}
.odx-mx--head .odx-mx-name { font-size: 9px; color: var(--txt-3); letter-spacing: var(--ls-label); }
/* 书商名单行截断（不含箭头，盘口线变化统一在折叠头交代） */
.odx-nm { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 价格格：数字右对齐 + 位移箭头固定 7px 槽位（保证同列数字右缘对齐） */
.odx-p {
  position: relative;
  display: flex; align-items: baseline; justify-content: flex-end;
  gap: 1px;
  padding-right: 2px;
  font-variant-numeric: tabular-nums;
}
.odx-p b {
  font-size: var(--fs-13);
  font-weight: var(--fw-medium);
  color: var(--txt-0);
  letter-spacing: var(--ls-num);
  line-height: 1.1;
}
.odx-p .odx-arrow { width: 7px; flex: none; font-size: 8px; line-height: 1; text-align: left; }
.odx-arrow { font-style: normal; }
.odx-arrow.up { color: var(--data-up); }
.odx-arrow.down { color: var(--data-down); }
.odx-arrow.flat { color: transparent; }
/* 最佳价：金底只包住数字本身（绝对定位，不参与布局 → 数字右缘仍与其它行对齐） */
.odx-p b { position: relative; z-index: 0; }
.odx-p.is-best b::before {
  content: ""; position: absolute; inset: -3px -5px;
  border-radius: var(--r-xs);
  background: var(--brand-soft);
  z-index: -1;
}
.odx-p.is-best b { color: var(--brand-text); font-weight: var(--fw-semibold); }

.odx-mx-ret {
  font-size: 10px;
  color: var(--txt-3);
  text-align: right;
  padding-right: 2px;
  font-variant-numeric: tabular-nums;
}

/* 体彩基准行：不参与排序，永远置顶 + 微底色，一眼区分「官方」与「国际」 */
.odx-mx--jc {
  background: var(--surface-1);
  border-radius: var(--r-xs);
  border-bottom-color: var(--line-2);
  min-height: 32px;
}
.odx-mx--jc .odx-mx-name b { font-size: var(--fs-12); color: var(--txt-0); font-weight: var(--fw-semibold); }
.odx-tag {
  font-style: normal; font-size: 8px; line-height: 1;
  color: var(--brand-text); border: 1px solid var(--brand-line);
  border-radius: 3px; padding: 1px 3px;
}

/* 展开/收起：文字链接式（不用大按钮抢视觉） */
.odx-more {
  align-self: stretch;
  display: flex; align-items: center; justify-content: center; gap: 3px;
  min-height: 32px;
  margin-top: 1px;
  font-size: var(--fs-11);
  color: var(--txt-2);
}
.odx-more:active { color: var(--brand-text); }
.odx-more[aria-expanded="true"] .odx-chev svg { transform: rotate(180deg); }
.odx-more .odx-chev svg { width: 14px; height: 14px; }
.odx-chev { display: grid; place-items: center; width: 14px; height: 14px; color: var(--txt-3); }
.odx-chev svg { width: 14px; height: 14px; display: block; transition: transform var(--dur-3) var(--ease-out); }

/* ------------------------------ 折叠市场（亚盘/大小球/体彩走势） ------------------------------ */
.odx-mkt--fold { border-top: 1px solid var(--line-1); padding-top: 4px; }
.odx-fold {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto 14px;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  width: 100%;
  text-align: left;
}
.odx-fold-v {
  font-size: 10px; color: var(--txt-1);
  font-variant-numeric: tabular-nums;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.odx-fold-v i { font-style: normal; color: var(--txt-3); }
.odx-fold-v .odx-mv { color: var(--brand-text); }
.odx-fold-best {
  font-size: 10px; color: var(--txt-2);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.odx-mkt--fold.is-open .odx-chev svg { transform: rotate(180deg); }
/* 展开后摘要行只剩标题：避免与分组头重复三次 */
.odx-mkt--fold.is-open .odx-fold-best,
.odx-mkt--fold.is-open .odx-fold-v { display: none; }
.odx-scrollbody { display: flex; flex-direction: column; gap: 2px; }

/* 分组头：线不同的组绝不并列比较 */
.odx-grp {
  display: flex; align-items: baseline; gap: 6px;
  padding: 6px 0 2px;
  font-variant-numeric: tabular-nums;
}
.odx-grp-t { font-size: var(--fs-11); color: var(--txt-1); font-weight: var(--fw-medium); }
.odx-grp-n { font-size: 9px; color: var(--txt-3); }

/* 体彩让球参考行：三向口径，独立一行，不进矩阵 */
.odx-jcref {
  margin-top: 6px;
  padding: 6px 8px;
  border-radius: var(--r-sm);
  background: var(--surface-1);
  font-size: 10px;
  color: var(--txt-2);
  font-variant-numeric: tabular-nums;
  line-height: var(--lh-2);
}
.odx-jcref b { color: var(--txt-0); font-weight: var(--fw-medium); }
.odx-jcref em { display: block; font-style: normal; color: var(--txt-3); font-size: 9px; margin-top: 1px; }

/* 体彩走势（原有曲线，仅换位置） */
.odx-curve { padding: 2px 0 0; color: var(--txt-2); }
.odx-curve .odds-chart { margin-top: 2px; }
.odx-curve .odds-legend { margin-top: 4px; }

/* ------------------------------ 空态 / 提示 / 注 ------------------------------ */
.odx-empty {
  display: flex; align-items: center; gap: 6px;
  padding: 14px; border-radius: var(--r-sm);
  background: var(--bg-inset);
  font-size: var(--fs-12); color: var(--txt-2);
}
.odx-empty > svg { width: 14px; height: 14px; flex: none; }
.odx-hint { font-size: 10px; color: var(--txt-3); padding-top: 4px; }
.odx-note {
  display: flex; align-items: flex-start; gap: 4px;
  margin-top: 2px; padding-top: 8px;
  border-top: 1px dashed var(--line-1);
  font-size: 9px; line-height: var(--lh-2); color: var(--txt-3);
}
.odx-note > svg { width: 12px; height: 12px; flex: none; margin-top: 2px; }
.odx-note b { color: var(--txt-2); font-weight: var(--fw-medium); }

/* ------------------------------ 320 宽兜底 ------------------------------ */
@media (max-width: 344px) {
  .odx-mx { --p: 44px; --ret: 40px; }
  .odx-mx-name { font-size: var(--fs-11); }
  .odx-p b { font-size: var(--fs-12); }
  .odx-hero-best b { font-size: var(--fs-17); }
  .odx-hero-grid { gap: 6px; }
  .odx-anom-chip { gap: 5px; padding: 0 8px; }
  .odx-anom-label { font-size: 10px; }
  /* 折叠头改两行：摘要不截断（列宽不够时优先保「最优」） */
  .odx-fold {
    grid-template-columns: auto minmax(0, 1fr) 14px;
    grid-template-areas: "t best chev" "v v v";
    row-gap: 1px;
    column-gap: 6px;
    padding: 4px 0;
  }
  .odx-fold .odx-mkt-t { grid-area: t; }
  .odx-fold .odx-fold-best { grid-area: best; text-align: right; }
  .odx-fold .odx-fold-v { grid-area: v; }
  .odx-fold > .odx-chev { grid-area: chev; justify-self: end; }
}

/* ============================================================================
   F6：联赛归属（跨联赛 chip）+ 杯赛背景卡（赛事/小组/轮次 chip + 小组形势）
   ========================================================================== */
.cx-ov-mid { gap: 5px; }
.cx-cross {
  display: inline-block;
  max-width: 96px;
  padding: 2px 6px;
  border-radius: var(--r-full);
  border: 1px dashed var(--line-3);
  color: var(--txt-2);
  font-size: 9px;
  line-height: 1.25;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cx-cup {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  border-radius: var(--r-md);
  background: var(--bg-inset);
  border: 1px solid var(--line-1);
}
.cx-cup-head { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; }
.cx-cup-tag {
  flex: none;
  font-size: 9px;
  font-weight: var(--fw-semibold);
  color: var(--brand-text);
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
  border-radius: var(--r-full);
  padding: 2px 7px;
  margin-right: 2px;
}
.cx-chip {
  font-size: 9px;
  line-height: 1.4;
  color: var(--txt-1);
  background: var(--bg-3);
  border: 1px solid var(--line-1);
  border-radius: var(--r-full);
  padding: 2px 7px;
  white-space: nowrap;
}
.cx-cup-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
.cx-cup-team { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cx-cup-name { font-size: var(--fs-11); color: var(--txt-1); font-weight: var(--fw-medium); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cx-cup-line { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px; }
.cx-cup-pts { font-size: var(--fs-20); font-weight: var(--fw-bold); line-height: 1.1; color: var(--txt-0); font-variant-numeric: tabular-nums; }
.cx-cup-pts em { font-size: var(--fs-11); font-style: normal; font-weight: var(--fw-regular); color: var(--txt-2); margin-left: 2px; }
.cx-cup-st {
  font-size: 9px;
  line-height: 1.4;
  border-radius: var(--r-full);
  padding: 2px 7px;
  white-space: nowrap;
  border: 1px solid var(--line-1);
  color: var(--txt-2);
}
.cx-cup-st.is-ok { color: var(--ok); background: var(--ok-soft); border-color: var(--ok-line); }
.cx-cup-st.is-gold { color: var(--brand-text); background: var(--brand-soft); border-color: var(--brand-line); }
.cx-cup-st.is-warn { color: var(--data-a); background: transparent; border-color: var(--line-2); }
.cx-cup-st.is-muted { color: var(--txt-3); }
.cx-cup-raw { font-size: 9px; line-height: 1.4; color: var(--txt-3); display: block; white-space: normal; word-break: break-word; }
.cx-cup-team.is-missing .cx-cup-miss { font-size: 9px; color: var(--txt-3); }
.cx-cup-note { display: flex; align-items: flex-start; gap: 4px; padding-top: 6px; border-top: 1px dashed var(--line-1); font-size: 9px; color: var(--txt-3); }
@media (max-width: 360px) {
  .cx-cup { padding: 9px 10px; gap: 7px; }
  .cx-cup-grid { gap: 8px; }
  .cx-cup-pts { font-size: var(--fs-17); }
}

/* ============================================================================
   F14：阵容总身价参考行（异步；无数据/失败整行隐藏）
   ========================================================================== */
.cx-market {
  margin: 10px 0 0;
  padding: 10px 12px;
  border: 1px solid var(--line-1);
  border-radius: var(--r-sm);
  background: var(--bg-inset);
}
.cx-market-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-bottom: 8px; }
.cx-market-title { font-size: var(--fs-11); color: var(--txt-1); font-weight: var(--fw-medium); letter-spacing: var(--ls-cjk); }
.cx-market-badge { font-size: 9px; color: var(--txt-3); border: 1px solid var(--line-2); border-radius: var(--r-xs); padding: 1px 5px; }
.cx-market-body { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 8px; }
.cx-market-col { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cx-market-col.away { text-align: right; align-items: flex-end; }
.cx-market-team { max-width: 100%; font-size: 10px; color: var(--txt-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cx-market-val { font-size: var(--fs-15); font-weight: var(--fw-semibold); color: var(--txt-0); line-height: 1.2; font-variant-numeric: tabular-nums; }
.cx-market-sub { max-width: 100%; font-size: 9px; color: var(--txt-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cx-market-mid { display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 34px; }
.cx-market-mult { font-size: var(--fs-13); font-weight: var(--fw-semibold); color: var(--brand-text); font-variant-numeric: tabular-nums; }
.cx-market-vs { font-size: 9px; color: var(--txt-3); }
.cx-market-bar { display: flex; gap: 2px; height: 6px; margin-top: 8px; }
.cx-market-bar i { display: block; height: 6px; min-width: 2px; border-radius: 3px; }
.cx-market-bar i.home { background: var(--data-a); }
.cx-market-bar i.away { background: var(--data-c); }
.cx-market-note { display: flex; align-items: center; gap: 4px; margin-top: 8px; padding-top: 6px; border-top: 1px dashed var(--line-1); font-size: 9px; line-height: 1.4; color: var(--txt-3); }
@media (max-width: 360px) {
  .cx-market { padding: 9px 10px; }
  .cx-market-val { font-size: var(--fs-13); }
  .cx-market-mult { font-size: var(--fs-12); }
}
