/**
 * quote.css - 详情面板「雪球式」行情区（QuoteUI，2026-09-16 T4）
 * 令牌全部引用 tokens.css（coding-standards #22）；红涨绿跌 A 股口径：
 * 涨 = --color-danger(#fa5151)，跌 = --color-brand(#07c160)，与
 * .detail-score-chip 的 up/down 类同源。
 */

/* ===== 快照行 ===== */
.quote-snapshot {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
  padding: 8px 0;
  font-family: var(--font-mono);
}
.quote-snapshot .quote-hint { font-family: inherit; }

.quote-price { font-size: 22px; font-weight: 700; letter-spacing: -0.01em; }
/* .quote-chg/.quote-chgpct 已于 2026-09-29 通达信快照 T2 退役（原横排涨跌额/幅
   两 span），改由 .quote-chgline 单行承担（布局见 quote-tx.css T12 段） */
/* 涨跌行 12→13px（2026-10-03 用户拍板「字体像素级参考通达信截图」，回摆 round2
   的 13→12 缩小），左块定宽由大价格决定（quote-tx.css .quote-snap-head 104px）。
   **固定两行（2026-10-30 用户拍板「两个数字做成 2 行固定」）**：原单行流式文本
   在 104px 定宽下按内容长度时而 1 行（短值+币种装得下）时而 2 行（长负值折行），
   观感不稳定——改结构性两行：行1 涨跌额（.quote-chg-amt）、行2 涨跌幅+币种
   （.quote-chg-pct，内嵌 .quote-currency）。两个子行 nowrap：最宽
   「-100.00% CNY」≈78px < 104px，恒不折行；两行结构由 flex 纵向固定，不随内容长度变化。 */
.quote-chgline { font-size: 13px; font-weight: 500; display: flex; flex-direction: column; align-items: flex-start; line-height: 1.35; }
.quote-chg-amt, .quote-chg-pct { white-space: nowrap; }
.quote-currency {
  /* 11→12px（2026-10-03 随涨跌行 13px 像素还原口径同步 +1） */
  font-size: 12px;
  color: var(--color-text-muted);
  font-weight: 400;
  margin-left: 4px;
  /* 2026-09-29 T2：原描边胶囊 chip 退役——TDX 无此元素，降为涨跌行尾灰字 */
}
/* .quote-meta 已于 2026-09-28 通达信化 T12 删除：快照原「开 高 低 昨收」单行 meta 行
   退役，改由 quote-tx.css 的 .quote-snap-grid 网格承担（2026-10-03 起为两列，本类已无 DOM 产出方） */

/* 红涨绿跌（A 股口径，勿按国际盘改绿涨红跌） */
.quote-snapshot .up, .quote-chgline.up { color: var(--color-danger); }
.quote-snapshot .down, .quote-chgline.down { color: var(--color-success); }
.quote-snapshot .flat { color: var(--color-text-secondary); }

/* ===== 走势周期 tab 行 =====
   2026-09-28 v2 T1：原雪球风胶囊分段（24px 高 / 12px 字号 / 描边+底色 / 3 项）整体
   退役——改通达信纯文字 7 项 + 选中红下划线，样式迁 quote-tx.css「v2 T1 周期 tab 行」
   区块（消费 --tx-tab-h/--tx-tab-font/--tx-text-dim/--tx-accent 令牌）。
   此处不再保留任何 .quote-period-seg 外观规则（避免两文件口径分裂）。 */

/* ===== 图表容器（klinecharts init 需要非零布局尺寸） =====
   2026-09-22 浮层化：工具行/图例行/指标行全部悬浮图上（见「浮层化」区块），
   容器改内容自适应——kline 路径由 JS inline 定高（460px），分时由内容撑开；
   原 260px 固定值本就小于分时内容实际高度（~290px 溢出），一并修正 */
.quote-chart-box {
  width: 100%;
  height: auto;
}
.quote-chart-box:empty { height: 0; margin: 0; }

/* ===== 指标 chip 胶囊（.quote-sub-ind-chip）+ 分时「区间」chip 条
   （#quote-trends-days-bar）——均已整体退役（2026-10-01 用户拍板 D5/D3） =====
   指标 chip 条随 D5 走头行 pill 菜单（#quote-tx-popover 分时锚定变体）、区间 chip 条
   随 D3 收进「周期▾」菜单「区间」组（ranking.html .quote-period-menu 内
   [data-quote-days-group]，样式见 quote-tx.css）。两套 chip 样式无其余消费方，
   一并删除。找回看 git 历史。 */

/* ===== 主图图例条（2026-09-20 单行化）——2026-09-28 v2 T3 整体退役 =====
   原 `#quote-legend-bar`/`#quote-legend-scroll`/`#quote-legend-more` +
   `.quote-legend-item`/`.quote-legend-l0~l4` 全套规则随图例行退役一并删除
   （参考图图表顶部无常显图例；OHLC 读数由十字光标任务承接，见 quote_ui.js
   同名退役区注释）。找回看 git 历史。 */

/* ===== 资讯面板（2026-09-19：不再是顶部 tab，改由互动栏按钮触发、段内内联展开） =====
   与 .comment-panel 同款白卡观感（两者是同一行里的兄弟入口）；
   资讯列表通常较短，不做内滚，随详情整体滚动 */
.quote-news-panel {
  margin-top: 8px;
  padding: 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}

/* ===== 资讯列表 ===== */
.quote-news-item {
  display: block;
  padding: 10px 0;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
}
.quote-news-item:last-child { border-bottom: none; }
.quote-news-title {
  display: block;
  font-size: 14px;
  color: var(--color-text-primary);
  line-height: 1.45;
}
.quote-news-item:active .quote-news-title { color: var(--color-brand); }
.quote-news-meta {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-top: 3px;
  font-size: 12px;
  color: var(--color-text-muted);
}

/* ===== 评论：2026-09-19 随顶部 tab 退役 =====
   原「评论」tab 面板（.quote-cm-* 一套）删除——评论入口统一由用户段互动栏的
   「评论」按钮承担（community_ui._onToggleComments → .comment-panel，
   样式在 results.css），与本模块不再有重复实现 */

/* ===== 资讯站内阅读视图（2026-09-17：替代东财原页外链，去「打开APP」引导） ===== */
.quote-reader-back {
  display: inline-block;
  padding: 6px 0;
  margin-bottom: 4px;
  border: none;
  background: none;
  font-size: 13px;
  font-family: inherit;
  color: var(--color-brand);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.quote-reader-title {
  margin: 0 0 6px;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.45;
  color: var(--color-text-primary);
}
.quote-reader .quote-news-meta { margin-bottom: 10px; }
.quote-reader-body { padding-bottom: 8px; }
.quote-reader-p {
  margin: 0 0 14px;
  font-size: 15px;
  line-height: 1.8;
  color: var(--color-text-primary);
  word-break: break-word;
}
.quote-reader-origin {
  display: inline-block;
  margin-top: 4px;
  font-size: 13px;
  color: var(--color-text-muted);
  text-decoration: none;
}
.quote-reader-origin:active { color: var(--color-brand); }

/* ===== 分时自绘图（雪球形态，2026-09-17）：信息行 + canvas + 时间刻度 ===== */
/* 分时 wrap 顶部让位：原 42px 给顶部浮层工具行留位；**2026-09-28 v2 T3 顶部浮层
   整体退役后 --tx-trends-top-pad = 0**，故此处实际无让位（窗口头行贴窗顶）。
   值走单源变量（quote-tx.css --tx-trends-top-pad），与 quote_ui _trendsChartTop
   回退值强耦合（改一处必查另一处；.quote-trends-axis 的 top calc 已于 2026-10-06
   退役——axis top 改 JS inline G.dateTop 定位，不再消费本变量）。
   括号内兜底同源为 0（非 #quote-section 环境理论不可达） */
.quote-trends-wrap {
  width: 100%;
  padding: var(--tx-trends-top-pad, 0px) 0 0;
}
/* .quote-trends-legend（分时顶部信息行「均价/最新/涨跌幅」）已于 2026-09-28 通达信化
   Phase 2 T8 退役——读数迁入价格窗头行（#quote-tx-head-layer .tx-head-row，
   quote_ui.js _trendsHeadValues），DOM/样式不再产出；找回看 git 历史。勿复引。 */
.quote-trends-cv { display: block; }
/* 分时十字光标叠加层（2026-09-29 v2 T7b）：独立 canvas 覆在主 canvas 上，不参与文档流、
   不吃事件（pointer-events:none，手势统一由 #quote-chart 容器监听）。
   ⚠ top 必须计入 wrap padding（架构 #39 陷阱）：绝对定位元素的包含块是最近定位祖先
   （#quote-section .quote-trends-wrap，quote-tx.css）的 **padding-box**（top:0 落 padding
   外沿），而主 canvas 是 in-flow 子元素被 .quote-trends-wrap 的 padding-top 下推——
   漏掉该项会让叠加层相对主 canvas 偏一个 padding（--tx-trends-top-pad 现为 0px；
   .quote-trends-axis 同为 wrap 内绝对定位行，top 改由 JS inline 给出、同含 padding
   基准，改一处必查另一处）。
   z-index 1 = 主 canvas 之上、.tx-head-layer(3) 之下（头行读数覆在十字线上）。 */
#quote-section .quote-trends-cross-cv {
  position: absolute;
  left: 0;
  top: var(--tx-trends-top-pad, 0px);
  pointer-events: none;
  z-index: 1;
}
/* 时间刻度：3 档固定时刻 + 绝对定位（left% 由 JS 按市场时段表写入，
   首/中/末档对齐方式 transform 同由 JS 控制）——2026-09-21 时段轴改造，
   替代旧 flex 四等分。
   ⚠ 2026-09-28 T8 起本基类被 quote-tx.css 的 `#quote-section .quote-trends-axis`
   覆写为「24px 绝对定位行」（窗序列化：日期行不再在画布底部；2026-10-06 起定位
   到窗列最底部、top 由 quote_ui JS inline G.dateTop 给出），下面的 height/padding/top
   仅作基类兜底，实际生效值以 quote-tx.css + JS inline 为准 */
.quote-trends-axis {
  position: relative;
  height: 17px;
  padding-top: 3px;
  font-size: 11px;
  color: var(--color-text-muted);
}
.quote-trends-axis span {
  position: absolute;
  top: 3px;
  white-space: nowrap;
}

/* ===== 通用提示/加载文案 ===== */
.quote-hint {
  display: block;
  padding: 10px 0;
  font-size: 13px;
  color: var(--color-text-muted);
}

/* ===== 公式管理器（通达信公式 Task 3.1，QuoteFormulaUI，2026-09-17） =====
   面板挂在 #quote-section 内；紧凑控件一律绝对 px（coding-standards #29）。
   「公式管理」入口按钮（.quote-fm-open-btn）：2026-10-01 D5 起图表下方按钮行
   退役，#quote-fm-open 降为 ranking.html 的 hidden 保留节点（QuoteFormulaUI 按
   id 绑定 + quote_ui 三处 .click() 桥触发），按钮样式保留供节点语义完整 */
.quote-fm-open-btn {
  height: 24px;
  padding: 0 10px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-surface);
  font-size: 12px;
  font-family: inherit;
  color: var(--color-text-secondary);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.quote-fm-open-btn:active {
  color: var(--color-brand);
  border-color: var(--color-brand);
}

.quote-fm-panel {
  margin-top: 6px;
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}
.quote-fm-head {
  display: flex;
  align-items: center;
  gap: 8px;
}
.quote-fm-title { font-size: 14px; font-weight: 600; color: var(--color-text-primary); }
.quote-fm-note { flex: 1; font-size: 11px; color: var(--color-text-muted); }
.quote-fm-close {
  border: none;
  background: none;
  padding: 4px 6px;
  font-size: 16px;
  line-height: 1;
  color: var(--color-text-muted);
  cursor: pointer;
}

/* 列表态 */
.quote-fm-list { margin-top: 4px; }
.quote-fm-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid var(--color-border);
  font-size: 13px;
}
.quote-fm-row:last-child { border-bottom: none; }
.quote-fm-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--color-text-primary);
}
.quote-fm-pane-tag {
  flex-shrink: 0;
  font-size: 11px;
  color: var(--color-text-muted);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: 1px 5px;
}
.quote-fm-pane-tag.main { color: var(--color-brand); border-color: var(--color-brand); }
.quote-fm-row-actions { display: flex; gap: 6px; flex-shrink: 0; }
.quote-fm-edit-btn, .quote-fm-del-btn {
  height: 24px;
  padding: 0 8px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  font-size: 12px;
  font-family: inherit;
  color: var(--color-text-secondary);
  cursor: pointer;
}
.quote-fm-del-btn { color: var(--color-danger); border-color: var(--color-danger-border); }

/* 启用开关（无既有 wx-switch，本面板内自绘小开关） */
.quote-fm-toggle-wrap { display: inline-flex; align-items: center; cursor: pointer; flex-shrink: 0; }
.quote-fm-toggle {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  width: 34px;
  height: 20px;
  margin: 0;
  border-radius: 10px;
  background: var(--wx-seg-bg);
  outline: none;
  cursor: pointer;
  transition: background 0.2s;
}
.quote-fm-toggle::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--color-surface);
  transition: transform 0.2s;
}
.quote-fm-toggle:checked { background: var(--color-brand); }
.quote-fm-toggle:checked::after { transform: translateX(14px); }

.quote-fm-empty, .quote-fm-hint {
  display: block;
  padding: 10px 0;
  font-size: 13px;
  color: var(--color-text-muted);
}
.quote-fm-new {
  width: 100%;
  height: 32px;
  margin-top: 8px;
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-md);
  background: none;
  font-size: 13px;
  font-family: inherit;
  color: var(--color-brand);
  cursor: pointer;
}

/* 编辑器态 */
.quote-fm-back {
  display: inline-block;
  padding: 4px 0;
  margin-bottom: 4px;
  border: none;
  background: none;
  font-size: 13px;
  font-family: inherit;
  color: var(--color-brand);
  cursor: pointer;
}
.quote-fm-field {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.quote-fm-label { flex-shrink: 0; font-size: 12px; color: var(--color-text-secondary); }
.quote-fm-input {
  flex: 1;
  min-width: 0;
  height: 32px;
  padding: 0 10px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-sunken);
  font-size: 13px;
  font-family: inherit;
  color: var(--color-text-primary);
}
.quote-fm-input:focus { outline: none; border-color: var(--color-brand); }
.quote-fm-input:disabled { color: var(--color-text-muted); background: var(--color-surface); }
.quote-fm-select {
  flex-shrink: 0;
  height: 32px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font-size: 13px;
  font-family: inherit;
  color: var(--color-text-primary);
}
.quote-fm-textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-sunken);
  font-size: 13px;
  line-height: 1.5;
  font-family: var(--font-mono);
  color: var(--color-text-primary);
  resize: vertical;
}
.quote-fm-textarea:focus { outline: none; border-color: var(--color-brand); }
/* 公式函数名自动补全联想浮层（QuoteFormulaUI._acRender 惰性创建，挂编辑器容器内） */
.quote-fm-editor { position: relative; } /* 浮层 absolute 的定位基准（textarea 正下方、同宽） */
.quote-fm-ac {
  position: absolute;
  z-index: 30; /* 高于面板内常规流内容即可（浮层与 textarea 同层容器内） */
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  box-shadow: var(--shadow-lg);
  font-size: 12px;
}
.quote-fm-ac[hidden] { display: none !important; } /* hidden 兜底（corrections 2026-09-11：作者 display 声明会压过 UA 的 [hidden]） */
.quote-fm-ac-item {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 6px 10px;
  line-height: 1.4;
  cursor: pointer;
}
.quote-fm-ac-item.is-hi { background: var(--color-surface-sunken); }
.quote-fm-ac-name {
  flex-shrink: 0;
  font-family: var(--font-mono);
  font-weight: 600;
  font-size: 12px;
  color: var(--color-text-primary);
}
.quote-fm-ac-desc {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 11px;
  color: var(--color-text-secondary);
}
.quote-fm-ac-more {
  padding: 4px 10px;
  font-size: 11px;
  color: var(--color-text-muted);
}
.quote-fm-params {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 8px;
}
.quote-fm-param-row { display: flex; align-items: center; gap: 6px; }
.quote-fm-param-name, .quote-fm-param-val {
  width: 110px;
  height: 28px;
  padding: 0 8px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface-sunken);
  font-size: 12px;
  font-family: inherit;
  color: var(--color-text-primary);
}
.quote-fm-param-val { width: 80px; }
.quote-fm-param-del {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border: none;
  background: none;
  font-size: 16px;
  color: var(--color-text-muted);
  cursor: pointer;
}
.quote-fm-link {
  border: none;
  background: none;
  padding: 4px 0;
  font-size: 12px;
  font-family: inherit;
  color: var(--color-brand);
  cursor: pointer;
}
.quote-fm-check {
  margin-top: 8px;
  padding: 6px 8px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  font-family: var(--font-mono);
  word-break: break-all;
}
.quote-fm-check--ok { color: var(--color-success); background: var(--color-brand-subtle); }
.quote-fm-check--err { color: var(--color-danger); background: var(--color-danger-subtle); }
.quote-fm-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 10px;
}
.quote-fm-btn {
  height: 32px;
  padding: 0 16px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font-size: 13px;
  font-family: inherit;
  color: var(--color-text-primary);
  cursor: pointer;
}
/* 主按钮白字（tokens 无纯白令牌） */
.quote-fm-btn--primary { border-color: var(--color-brand); background: var(--color-brand); color: #fff; }

/* [hidden] 兜底（corrections 2026-09-11）：上述类均有 display 声明，
   作者样式会压过 UA 的 [hidden]，必须显式配平 */
.quote-fm-panel[hidden], .quote-fm-editor[hidden], .quote-fm-list[hidden],
.quote-fm-new[hidden], .quote-fm-check[hidden] { display: none !important; }

/* ===== 公式 AI 区块（2026-09-23 公式 AI）：编辑器内嵌「需求描述 + AI生成/优化 + 状态行」 =====
   视觉口径对齐上方 .quote-fm-*（边框/圆角/字号取同一批令牌）；无动画（coding-standards #31） */
.quote-fm-ai {
  margin: 10px 0 8px;
  padding: 8px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-sunken);
}
.quote-fm-ai-prompt {
  display: block;
  width: 100%;
  box-sizing: border-box;
  min-height: 44px; /* rows=2 基础上给到两行 comfort 高度 */
  padding: 6px 10px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  font-size: 13px;
  line-height: 1.5;
  font-family: inherit;
  color: var(--color-text-primary);
  resize: vertical;
}
.quote-fm-ai-prompt:focus { outline: none; border-color: var(--color-brand); }
.quote-fm-ai-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}
/* 状态行常驻占位（12px，取自 .quote-fm-check 字号口径）：空文案时 flex:1 撑开不塌行 */
.quote-fm-ai-status {
  flex: 1;
  min-width: 0;
  font-size: 12px;
  color: var(--color-text-secondary);
  word-break: break-all;
}
.quote-fm-ai-status--ok { color: var(--color-success); }
.quote-fm-ai-status--err { color: var(--color-danger); }

/* ===== 行情图顶部浮层——2026-09-28 v2 T1/T3 整体退役 =====
   原 `.quote-chart-toolbar`（absolute 浮在图上，内装周期分段 + 黑底 + 图例「更多」）
   与 `.quote-legend-bar`（absolute top:40 图例行）随本轮改造删除：
   - 周期 tab 行进文档流（图表上方，见 quote-tx.css「v2 T1 周期 tab 行」）；
   - 图例行整体退役（OHLC 由十字光标任务承接，见 quote_ui.js 同名退役区注释）；
   - 主题切换 / 预测显隐两个控件移入「周期▼」弹层（见下方菜单项样式），能力不丢。
   图表顶部不再有任何常显浮层，主窗头行贴窗顶（_TX_MAIN_HEAD_TOP=0，2026-10-03
   用户拍板「靠上紧凑」，原 4px 上呼吸会漏出图表内容）。
   ⚠ JS 侧耦合仍在：K 线时 #quote-chart inline 高度 = 窗列总高（quote_ui
   _initChartIfNeeded _txChartTotalHeight）；分时时 #quote-chart 高度由
   .quote-trends-wrap（无顶部让位 + canvas 窗序列总高）决定。 */
#quote-pane-chart {
  position: relative; /* 周期▼ 弹层与图表容器的定位基准 */
}
/* 指标行 .quote-sub-row 已随指标 chip 条整体退役（2026-10-01 D5）——原「文档流
   指标行 + margin-top」规则一并删除（absolute 沉底版更早退役，找回看 git 历史） */
/* 门禁态：门禁卡是自带白底的自包含卡片，浮层压卡上观感破碎且按钮无意义——
   整体隐藏（id 作用域压过组件基类 display 声明，corrections 2026-09-11 同族预防） */
#quote-pane-chart.quote-gated .quote-period-bar { display: none; }

/* ===== ⚙「设置」菜单内的选项行（2026-09-28 v2 T1；2026-10-06 去重改造） =====
   「白底」（#quote-theme-toggle）在设置菜单内；「预测」开关（#quote-pred-toggle-btn）
   已移入周期 tab 行常驻（外观吃 .quote-period-seg > button，见 quote-tx.css）。
   两按钮 id 不变、绑定不变（quote_ui _bindOnce / _applyQuoteTheme / _syncPredToggleUI
   按 id 工作）。
   外观：与菜单其余项同款的紧凑行（绝对 px，coding-standards #29）；
   暗色主题同名规则见文件尾 .quote-dark 块。 */
.quote-theme-toggle {
  flex: none;
  height: 28px;
  padding: 0 6px;
  border: 0;
  background: none;
  font-size: 12px; /* 绝对 px（coding-standards #29：紧凑控件不随根字号缩放） */
  font-family: inherit;
  color: var(--color-text-secondary);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.quote-pred-toggle {
  flex: none;
  height: 28px;
  padding: 0 6px;
  border: 0;
  background: none;
  font-size: 12px; /* 绝对 px（coding-standards #29） */
  font-family: inherit;
  color: var(--color-text-secondary);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.quote-pred-toggle.active { color: var(--color-brand); }

/* ===== 预测按钮（2026-09-24 行情页直调跑数，计划 quote-prediction-buttons Task 4）=====
   「预测分时 / 预测日线」**独立按钮行已于 2026-09-29 round2 退役**（用户拍板
   「收进周期▾菜单」）——两颗按钮现居 .quote-period-menu 内，菜单行外观由
   quote-tx.css「菜单内预测项」覆盖段承接（pill 外观在菜单内被抹平）。
   本段保留 .quote-predict-btn 基类作置灰态寻址钩子：:disabled 由
   ranking_ui._syncQuotePredictButtons 写；.is-guide 手机端引导态见架构 #38。
   **改按钮显隐/置灰先读 quote-tx.css 覆盖段，勿只改这里。** */
.quote-predict-btn {
  height: 24px;
  padding: 0 12px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-surface);
  font-size: 12px;
  font-family: inherit;
  color: var(--color-brand);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.quote-predict-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* 手机端引导态（2026-09-28，ranking_ui._syncQuotePredictButtons 手机端分支）：
   置灰观感但保留可点——点击跳个人配置页看 Sman 桥接状态。
   opacity/filter 对齐 disabled 观感，cursor 刻意 pointer（可点是本态语义）。
   注意：头行变体 .tx-head-predict.is-guide（quote-tx.css）显式 filter:none 抵消本条
   grayscale——其文字金黄 #ffd700 会被灰度滤镜滤成灰白（2026-10-08 用户报「预测日线
   不是金黄色」根因），改本条滤镜前先核对那边的抵消规则。 */
.quote-predict-btn.is-guide {
  opacity: .55;
  filter: grayscale(1);
  cursor: pointer;
}

/* ===== 黑底主题（2026-09-21 行情图双主题） =====
   JS 侧钩子 = quote_ui.js _applyQuoteTheme：置/摘 #quote-pane-chart 的 quote-dark
   类 + 读写 #quote-theme-toggle 文案（黑底态显示「白底」，即点击切往的主题）。
   底色走 **--tx-bg 单源令牌**（quote-tx.css，= 通达信暗色底 #121212）——2026-09-28
   通达信化 T15 实测修正：原写死纯黑 #000000 与 spec §1 实测值差 18/通道，超出
   spec §5 验收容差（±10/通道）；该令牌 Phase 0 已定义但一直无消费点（死令牌），
   本次接上。#quote-pane-chart 恒在 .detail-content 内（#quote-section 在详情面板内），
   令牌可解析；括号内兜底供非该作用域的理论场景。
   白底 = 现状零改动：全部深色规则收在 .quote-dark 作用域下，不改任何现有规则；
   不做过渡动画（瞬时切换，同 coding-standards #31「切页不做整页动画」）。
   浅灰阶：#c9cdd4 一级文字 / #9aa0a6 次级与边框（K 线深色画布上可读）。 */
#quote-pane-chart.quote-dark {
  background: var(--tx-bg, #121212);
}
/* 周期 tab 行不在本区块做 dark 覆盖：tab 行样式已 100% 走 --tx-* 令牌（quote-tx.css
   「v2 T1 周期 tab 行」），令牌定义在 .detail-content 上与主题无关（通达信暗色口径），
   两主题下同值——避免"浅色主题下白底黑字 tab"与参考图口径分裂。 */
/* 主题切换 / 预测显隐（周期▼ 弹层内选项行）：白底主题下跟随 --color-*，黑底显式浅灰 */
#quote-pane-chart.quote-dark .quote-theme-toggle { color: #c9cdd4; }
#quote-pane-chart.quote-dark .quote-pred-toggle { color: #c9cdd4; }
#quote-pane-chart.quote-dark .quote-pred-toggle.active { color: var(--color-brand); }
/* 指标 chip 胶囊 dark 覆盖（.quote-sub-ind-chip）已随 chip 条退役一并删除
   （2026-10-01 D5/D3，见文件头同名退役区注释） */
/* 分时时间刻度：原 muted 灰在黑底偏暗，提一档（信息行 dark 规则随 .quote-trends-legend
   T8 退役一并删除；头行参数值暗色适配见 quote-tx.css --tx-text-dim） */
#quote-pane-chart.quote-dark .quote-trends-axis { color: #9aa0a6; }
/* 图表容器内占位/失败文字（「走势加载中…」「暂无走势数据」「行情数据加载失败」
   等 .quote-hint）：原 muted 灰黑底偏暗；官方树门禁卡（.official-tree-gate-card）
   是自带白底的自包含卡片，黑底上正常可读，不在此覆盖 */
#quote-pane-chart.quote-dark .quote-hint { color: #9aa0a6; }
/* 「公式管理」入口按钮：与分段/chip 同族灰胶囊（原白底胶囊在黑底上是唯一白块，
   观感割裂）；公式管理器面板（.quote-fm-panel 一套）是自带白底的自包含卡片，
   不在此覆盖 */
#quote-pane-chart.quote-dark .quote-fm-open-btn {
  border-color: #9aa0a6;
  background: transparent;
  color: #c9cdd4;
}
#quote-pane-chart.quote-dark .quote-fm-open-btn:active {
  color: var(--color-brand);
  border-color: var(--color-brand);
}
