/* ── 全局 ──────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* 相位转变30分钟闪烁动画 */
@keyframes phaseChgBlink {
  from { opacity: 1; box-shadow: 0 0 6px rgba(255,40,40,.4); }
  to   { opacity: 0.55; box-shadow: 0 0 2px rgba(255,40,40,.1); }
}
/* BOSS 血条增强区发光动画 */
@keyframes bossGlow {
  0%,100% { opacity: 1; }
  50%      { opacity: 0.75; }
}

:root {
  --bg:         #0e0f14;
  --bg2:        #161820;
  --bg3:        #1e2030;
  --border:     #2a2d3e;
  --text:       #c8cad8;
  --text-dim:   #6b7080;
  --accent:     #4b6ef5;
  --green:      #32D278;
  --red:        #DC4632;
  --orange:     #FF8C1E;
  --gold:       #E6D23C;
  --topbar-h:   48px;
  --dash-w:     340px;
}

html, body { height: 100%; background: var(--bg); color: var(--text); font-family: 'Segoe UI', 'PingFang SC', sans-serif; font-size: 13px; overflow: hidden; }
body { display: flex; flex-direction: column; }   /* 垂直布局：顶行 gauge-panel + 中间 main-layout + 底部 footer */

/* ── 顶部导航 ───────────────────────────────────────── */
/* ── 左列：logo + 指标面板 ──────────────────────────── */
.left-col {
  width: var(--dash-w); flex-shrink: 0;
  background: var(--bg2); border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
  overflow: hidden;
}
.left-logo {
  flex: 0 0 auto; height: 32px;
  display: flex; align-items: center;
  padding: 0 12px;
  border-bottom: 1px solid var(--border);
  background: var(--bg2);
}
.left-logo .logo { font-size: 14px; }
.dash-scroll {
  flex: 1 1 auto; min-height: 0;
  overflow-y: auto; overflow-x: hidden;
  scrollbar-width: thin;
  scrollbar-color: #15192a transparent;
}
.dash-scroll::-webkit-scrollbar { width: 3px; }
.dash-scroll::-webkit-scrollbar-track { background: transparent; }
.dash-scroll::-webkit-scrollbar-thumb { background: #15192a; border-radius: 4px; }
.dash-scroll::-webkit-scrollbar-thumb:hover { background: #1f2640; }
.left-col.collapsed { width: 0; border-right: none; }
.left-col.collapsed .left-logo,
.left-col.collapsed .dash-scroll { display: none; }

/* ── 右列顶部仪表盘：3 格横向等分 + 底部对齐 ─────────── */
/* 格① 共振研判+多空相位  格② XAUUSD+相位演变+交易季节  格③ 速度盘 */
/* 一般 cell：宽度自适应内容，不强制等分；上限 = 速度盘宽 */
.gauge-cell {
  flex: 0 1 auto;                                /* ★ 不抢占空间，按内容宽度 */
  min-width: 0;
  max-width: 360px;                              /* ★ 不超过速度盘宽度 */
  border-right: 1px solid rgba(255,255,255,.06);
  overflow: hidden;
  background: var(--bg2);
  display: flex; flex-direction: column;
  word-break: break-word;                        /* 文字过长自动换行 */
}
#cellResonance { overflow-y: auto; min-width: 200px; }

.gauge-cell:last-child { border-right: none; }

/* 格① 内部左右拆分：共振研判（宽）| 多空相位（窄，紧凑）*/
#gaugeSideLeft {
  flex-direction: row !important;
  align-items: stretch;
  overflow: hidden;
}
#gaugeSideLeft > .sb-block:first-of-type {
  flex: 1 1 auto; min-width: 0;           /* 共振研判填满剩余空间 */
  border-right: 1px solid rgba(255,255,255,.06);
  overflow-y: auto;
}
#gaugeSideLeft > .sb-block:last-of-type {
  flex: 0 0 120px;                         /* 多空相位固定 120px，不留空白 */
  overflow-y: auto;
}
#gaugeSideLeft > .sb-divider { display: none; }

/* 格② 特殊：左右各半（交易季节 | XAUUSD 实时）—— 顶部对齐 Cell ① */
.gauge-cell-mid {
  flex-direction: row;    /* 覆盖 .gauge-cell 的 column 设置 */
  align-items: stretch;
}
.gauge-cell-mid-left {
  flex: 1 1 50%; min-width: 0;
  border-right: 1px solid rgba(255,255,255,.06);
  padding: 4px 8px;
  justify-content: flex-start;  /* 顶部对齐 */
}
.gauge-cell-mid-right {
  flex: 1 1 50%; min-width: 0;
  display: flex; flex-direction: column;
  justify-content: flex-start;
  gap: 4px; padding: 5px 8px;
  background: rgba(30,40,60,.25);
  height: 100%;
}
.gauge-cell-mid-right .symbol-grid {
  flex: 1 1 auto;                     /* 填满 XAUUSD 下方剩余空间 */
  align-content: space-between;       /* 按钮行在垂直方向均分 */
}
/* XAUUSD 顶部行：下拉 + 状态 + 时钟 */
.ph-xauusd-row1 {
  display: flex; align-items: center; gap: 5px; flex-wrap: wrap;
}
.ph-xauusd-row2 {
  display: flex; align-items: baseline; gap: 4px;
  padding: 2px 2px 4px;
  justify-content: center;    /* ★ 价格左右居中 */
}
.ph-xauusd-row2 .live-price { font-size: 14px; font-weight: 700; color: var(--text); }  /* ★ 缩小20% (18→14px) */

/* XAUUSD 各元素紧凑化 */
.ph-xauusd .symbol-select { min-width: 100px; font-size: 12px; padding: 2px 6px; }
.ph-xauusd .status-text   { font-size: 11px; }
.ph-xauusd .clock         { display: none; }   /* ★ 隐藏时钟 */

/* 3×3 品种矩阵（FINVIZ 风格热力图）*/
.symbol-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
  padding-top: 2px;
}
.symbol-btn {
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 1px;
  font-size: 10px; font-weight: 700;
  padding: 4px 2px;
  background: var(--bg3);
  border: 1px solid transparent;
  color: #ffffff;                                /* ★ 文字统一白色 */
  border-radius: 3px;
  cursor: pointer;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: background .15s, transform .08s, box-shadow .15s;
  user-select: none;
  text-shadow: 0 1px 2px rgba(0,0,0,.4);          /* 提高白字可读性 */
}
.symbol-btn:hover {
  transform: scale(1.04);
  box-shadow: 0 0 0 2px rgba(255,255,255,.25) inset;
}
.symbol-btn.active {
  box-shadow: 0 0 0 2px var(--accent) inset, 0 0 5px var(--accent);
}
.symbol-btn .sym-name { font-size: 11px; font-weight: 700; line-height: 1.1; }
.symbol-btn .sym-pct  { font-size: 10px; font-weight: 600; opacity: .95; }

/* D 行空槽位（"+ 自选" 占位）*/
.symbol-btn.slot-empty {
  background: transparent !important;
  border: 1px dashed rgba(255,255,255,.18) !important;
  color: var(--text-dim);
  text-shadow: none;
}
.symbol-btn.slot-empty .sym-name { color: var(--text-dim); font-size: 10px; }
.symbol-btn.slot-empty .sym-pct  { color: #6070a0; font-size: 9px; }
.symbol-btn.slot-empty:hover {
  background: rgba(75,110,245,.15) !important;
  border-color: var(--accent) !important;
  color: var(--text);
}
/* Fix #13: D 行已配置（slot-custom）右上角 ✎ 更换按钮 */
.symbol-btn.slot-custom { position: relative; }
.slot-edit-icon {
  position: absolute; top: 1px; right: 3px;
  font-size: 9px; opacity: 0; color: #ffffff;
  cursor: pointer; line-height: 1;
  background: rgba(0,0,0,.45); border-radius: 2px;
  padding: 0 2px; transition: opacity .15s;
  pointer-events: auto;
}
.symbol-btn.slot-custom:hover .slot-edit-icon { opacity: 0.75; }
.slot-edit-icon:hover { opacity: 1 !important; color: var(--accent); }

/* ── D 槽位下拉选择器 ─────────────────────────────── */
.slot-picker-overlay {
  z-index: 9999;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 4px;
  box-shadow: 0 4px 16px rgba(0,0,0,.6);
  max-height: 320px;
  min-width: 110px;
  overflow-y: auto;
  font-size: 12px;
  scrollbar-width: thin; scrollbar-color: #15192a transparent;
}
.slot-picker-overlay::-webkit-scrollbar { width: 5px; }
.slot-picker-overlay::-webkit-scrollbar-thumb { background: #15192a; border-radius: 3px; }
.slot-picker-header {
  padding: 6px 10px; background: var(--bg3);
  font-size: 11px; font-weight: 700; color: var(--accent);
  border-bottom: 1px solid var(--border);
  letter-spacing: .5px;
}
.slot-picker-item {
  padding: 5px 12px; cursor: pointer; color: var(--text);
  border-bottom: 1px solid rgba(255,255,255,.04);
  transition: background .1s;
  white-space: nowrap;
}
.slot-picker-item:last-child { border-bottom: none; }
.slot-picker-item:hover { background: rgba(75,110,245,.20); color: #ffffff; }
.slot-picker-item.active { background: rgba(75,110,245,.30); color: #ffffff; font-weight: 700; }
.slot-picker-item.slot-clear { color: #ff8080; font-weight: 600; }
.slot-picker-item.slot-clear:hover { background: rgba(220,70,70,.25); }

/* ★ 强制隐藏 livePriceTicker（永远不显示 B/A/spd 那行）*/
#livePriceTicker { display: none !important; }

.logo { font-size: 15px; font-weight: 700; color: var(--text); letter-spacing: .5px; }

.symbol-select {
  background: var(--bg3); color: var(--text); border: 1px solid var(--border);
  border-radius: 6px; padding: 4px 10px; font-size: 13px; cursor: pointer; outline: none;
  min-width: 140px;
}
.symbol-select:hover { border-color: var(--accent); }

.status-dot {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
}
.status-dot.online  { background: var(--green); box-shadow: 0 0 6px var(--green); }
.status-dot.offline { background: var(--red); }

.status-text { color: var(--text-dim); font-size: 12px; }
.clock { color: var(--text-dim); font-size: 12px; font-variant-numeric: tabular-nums; }

/* ── 品种标题栏（仿 MT5 顶行）────────────────────────── */
.dash-symbol-bar {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 6px 10px 4px; background: var(--bg3);
  border-bottom: 1px solid var(--border); gap: 8px;
}
.dash-symbol {
  font-size: 15px; font-weight: 800; color: #ffe066;
  white-space: nowrap;
}
.dash-tf { font-size: 12px; color: #50dcff; margin-left: 4px; }
.dxy-tag { font-size: 11px; white-space: nowrap; }
.dxy-tag b { font-size: 12px; }
/* v2301: 实时报价居中插在品种和美元标签之间,与左右基线对齐 */
.dash-live-price {
  font-size: 15px; font-weight: 800; color: #ffffff;
  white-space: nowrap; flex: 1; text-align: center;
  letter-spacing: .3px;
}
/* v2301: cellXauusd 里原来的大字报价隐藏(已移到 dashboard 标题栏) */
.ph-xauusd-row2 { display: none !important; }

/* ── 实时价格心跳 ───────────────────────────────────── */
.live-ticker {
  display: flex; align-items: center; gap: 8px;
  padding: 3px 10px; border-radius: 6px;
  background: var(--bg3); border: 1px solid var(--border);
  font-variant-numeric: tabular-nums;
}
.live-symbol { font-size: 11px; color: var(--text-dim); font-weight: 600; }
.live-price  { font-size: 14px; font-weight: 700; color: var(--text); }
.live-bid    { font-size: 11px; color: var(--green); }
.live-ask    { font-size: 11px; color: var(--red); }
.live-spread { font-size: 11px; color: var(--text-dim); }

.btn-icon {
  background: var(--bg3); color: var(--text); border: 1px solid var(--border);
  border-radius: 6px; padding: 4px 10px; cursor: pointer; font-size: 14px;
}
.btn-icon:hover { border-color: var(--accent); color: var(--accent); }

/* ── 主布局 ─────────────────────────────────────────── */
.main-layout {
  display: flex; flex: 1 1 auto; min-height: 0;   /* flex:1 吃掉顶行和底部 footer 之外的剩余空间 */
  overflow: hidden;
}

/* ── 指标面板（保留旧类以防其他引用）──────────────── */
.dashboard-panel {
  width: var(--dash-w); flex-shrink: 0;
  background: var(--bg2); border-right: 1px solid var(--border);
  display: flex; flex-direction: column; overflow-y: auto; overflow-x: hidden;
}

/* ── 左右分隔：指标面板收起按钮 ────────────────────── */
.dash-toggle {
  width: 14px; flex-shrink: 0;
  background: var(--bg3); border-right: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; color: var(--text-dim); font-size: 11px;
  transition: background .15s, color .15s; user-select: none;
}
.dash-toggle:hover { background: var(--bg2); color: var(--accent); }

/* ── 右侧容器（上 gauge + 下 chart）────────────────── */
.right-panel {
  flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0;
}

/* ── 右列顶部仪表盘 ─────────────────────────────────── */
/* 紧凑布局：所有 cell 紧贴，无 gap；速度盘固定宽度作参照 */
/* Fix #8: gauge-panel 高度由 JS 动态设置（默认 160px 对齐 EMA89 行）*/
.gauge-panel {
  flex-shrink: 0;
  background: var(--bg2);
  display: flex; flex-direction: row; align-items: stretch;
  overflow: hidden;
  height: 160px;                     /* ★ Fix #8: 默认高度对齐 EMA89 行位置 */
  transition: opacity .28s ease;     /* 不用 max-height 过渡（与 JS 高度冲突）*/
  opacity: 1;
  border-bottom: 1px solid var(--border);
  gap: 0;                            /* 无间隙 */
}
.gauge-panel.collapsed {
  height: 0; opacity: 0; pointer-events: none; overflow: hidden;
}

/* 仪表盘/图表分隔条（Fix #8: 点击收起 / 拖拽调高） */
.gauge-toggle {
  flex-shrink: 0; height: 20px;
  background: var(--bg3); border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center; gap: 6px;
  cursor: ns-resize;   /* Fix #8: 显示竖向调整光标 */
  color: var(--text-dim); font-size: 10px;
  user-select: none; transition: background .15s, color .15s;
  position: relative;
}
.gauge-toggle:hover { background: var(--bg2); color: var(--accent); }
/* Fix #8: 拖拽提示（中央小点）*/
.gauge-toggle::before {
  content: '⠿';
  position: absolute; left: 50%; transform: translateX(-50%);
  font-size: 10px; opacity: .3; letter-spacing: 2px;
}
.toggle-label { letter-spacing: .3px; }

/* ── 仪表盘信息列（各格内容）──────────────────────── */
.gsb-col {
  overflow-y: auto; overflow-x: hidden;
  display: flex; flex-direction: column; justify-content: flex-start;
  padding: 4px 0;
  scrollbar-width: thin; scrollbar-color: #15192a transparent;
}
.gsb-col::-webkit-scrollbar { width: 3px; }
.gsb-col::-webkit-scrollbar-thumb { background: #15192a; border-radius: 2px; }

/* 紧凑信息块 */
.sb-block {
  padding: 3px 10px 2px;
  display: flex; flex-direction: column;
  justify-content: space-evenly;    /* ★ 均匀分配：有空间则均分间距，避免大片空白 */
  height: 100%;
}
.sb-top    { flex: 0 0 auto; }
.sb-bottom { flex: 0 0 auto; }
/* v2301: 多空相位 label 顶对齐其他 cell,不居中 */
.sb-block-center { justify-content: flex-start !important; }
.sb-mini-label {
  font-size: 11px; color: #ffffff; font-weight: 700;
  letter-spacing: .6px; text-transform: uppercase;
  margin-bottom: 3px; opacity: 1;
}
.sb-divider { height: 1px; background: rgba(255,255,255,.04); margin: 3px 10px; }

/* ── gauge-inner：速度盘（★ 固定长宽，作为其他 cell 的参照）── */
/* Fix #7: 吸顶 — align-items: flex-start (原 flex-end 贴底) */
.gauge-inner {
  flex: 0 0 360px !important;          /* 固定宽 360px（包含 SVG + 药丸）*/
  width: 360px; max-width: 360px;
  display: flex; flex-direction: row;
  align-items: flex-start; justify-content: flex-start; gap: 8px;
  padding: 4px 10px 4px;
  box-sizing: border-box;
}
.gauge-svg-wrap { flex: 0 0 240px; width: 240px; }
#gaugeSvg { width: 100%; height: auto; display: block; }

/* Fix #7: score-row2 吸顶对齐 (原 flex-end 贴底) */
.gauge-inner .score-row2 {
  flex: 0 0 auto; width: auto;
  flex-direction: column; gap: 6px; padding: 0;
  align-self: flex-start;
}
.gauge-inner .sr-pill { min-width: 86px; }

/* ── Gauge 区域（兼容旧类名）───────────────────────── */
.gauge-section { padding: 0; }

/* ── 指标面板收起动画 ──────────────────────────────── */
.dashboard-panel {
  transition: width .28s ease, border .28s ease;
}
.dashboard-panel.collapsed {
  width: 0 !important; overflow: hidden; border: none;
}

.score-row {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 4px 0 8px;
}
.score-value {
  font-size: 26px; font-weight: 700; font-variant-numeric: tabular-nums;
  color: var(--text);
}
.phase-label {
  font-size: 14px; font-weight: 600; padding: 2px 8px;
  border-radius: 4px; background: rgba(255,255,255,.06);
}

/* ── 仪表盘行 ───────────────────────────────────────── */
.dash-rows { padding: 6px 0 12px; flex: 1; }

.dash-sep {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 10px 3px; color: var(--text-dim); font-size: 11px;
}
.dash-sep::after { content: ''; flex: 1; height: 1px; background: var(--border); }

.dash-row {
  display: flex; align-items: center;
  padding: 2px 12px; gap: 6px; min-height: 20px;   /* ★ 行距缩小约10% */
}
.dash-row:hover { background: rgba(255,255,255,.03); }
.row-label { color: var(--text-dim); flex: 0 0 80px; font-size: 12px; }
.row-value { flex: 1; font-variant-numeric: tabular-nums; font-size: 12px; }
.row-arrow { flex: 0 0 16px; text-align: center; font-size: 13px; }
.row-tag {
  font-size: 11px; padding: 1px 5px; border-radius: 3px;
  background: rgba(255,255,255,.07); color: var(--text-dim);
}

.up   { color: var(--green); }
.dn   { color: var(--red); }
.neut { color: var(--text-dim); }
.warn { color: var(--gold); }
.ob   { color: var(--orange); }

/* 风险预警行 */
.risk-row {
  margin: 4px 8px; padding: 6px 10px;
  border-radius: 6px; border: 1px solid rgba(230,210,60,.25);
  background: rgba(230,210,60,.05);
  font-size: 12px; line-height: 1.5; color: var(--gold);
}
.risk-row.bear {
  border-color: rgba(220,70,50,.25); background: rgba(220,70,50,.05);
  color: #FF7060;
}

/* ── 图表区 ─────────────────────────────────────────── */
.chart-section {
  flex: 1; display: flex; flex-direction: column; overflow: hidden;
  background: var(--bg);
}

.chart-toolbar {
  display: flex; align-items: center; gap: 10px; padding: 6px 12px;
  background: var(--bg2); border-bottom: 1px solid var(--border); flex-shrink: 0;
}

.tf-buttons { display: flex; gap: 4px; flex-wrap: wrap; }
.tf-btn {
  background: var(--bg3); color: var(--text-dim); border: 1px solid var(--border);
  border-radius: 4px; padding: 3px 10px; cursor: pointer; font-size: 12px;
  transition: all .15s;
}
.tf-btn:hover       { border-color: var(--accent); color: var(--accent); }
.tf-btn.active      { background: var(--accent); color: #fff; border-color: var(--accent); }

/* SD 供需区切换按钮 */
.sd-btn {
  background: var(--bg3); color: var(--text-dim); border: 1px solid var(--border);
  border-radius: 4px; padding: 3px 10px; cursor: pointer; font-size: 12px;
  transition: all .15s; white-space: nowrap;
}
.sd-btn:hover          { border-color: var(--accent); color: var(--accent); }
.sd-btn.active         { background: #2a3a2a; color: #FFFF00; border-color: #FFFF00; }
.sd-btn.active.compare { background: #1a2a3a; color: #00E5FF; border-color: #00E5FF; }

.layout-btns { margin-left: auto; display: flex; gap: 4px; }
.layout-btn {
  background: var(--bg3); color: var(--text-dim); border: 1px solid var(--border);
  border-radius: 4px; padding: 3px 10px; cursor: pointer; font-size: 14px;
}
.layout-btn.active { border-color: var(--accent); color: var(--accent); }

.chart-container {
  flex: 1; display: flex; overflow: hidden;
}
.chart-container.horizontal { flex-direction: row; }
.chart-container.vertical   { flex-direction: column; }

.chart-pane { flex: 1; overflow: hidden; min-width: 0; min-height: 0; position: relative; }
/* TradingView renders into an iframe — make it fill the pane */
.chart-pane > iframe { position: absolute; inset: 0; width: 100% !important; height: 100% !important; }
.chart-container.horizontal .chart-pane:first-child {
  border-right: 2px solid var(--border);
}
.chart-container.vertical .chart-pane:first-child {
  border-bottom: 2px solid var(--border);
}

/* ── 双列仪表盘表格 ──────────────────────────────────── */
.dc-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  table-layout: fixed;
}
.dc-table thead tr {
  background: var(--bg3);
  border-bottom: 1px solid var(--border);
}
.dc-table thead th {
  padding: 3px 6px;   /* ★ 表头行距微缩 */
  color: var(--text-dim);
  font-weight: 600;
  font-size: 11px;
  text-align: center;
}
.dc-table thead th.dc-label { text-align: left; width: 72px; }
.dc-table thead th.dc-cur   { color: #7090d0; }
.dc-table thead th.dc-htf   { color: #FF8C00; }

.dc-table td {
  padding: 2px 6px;   /* ★ 行距缩小约10% */
  vertical-align: middle;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dc-table tr:hover td { background: rgba(255,255,255,.025); }

.dc-label { color: var(--text-dim); width: 72px; }
.dc-cur   { text-align: center; }
.dc-htf   { text-align: center; }

.dc-sep-row td {
  padding: 6px 8px 2px;
  color: var(--text-dim);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .5px;
  text-transform: uppercase;
  border-top: 1px solid var(--border);
}

/* ── 底部分节 & 月相 & 相位演变 ─────────────────────── */
.b-sep {
  padding: 3px 10px 2px;
  font-size: 11px; font-weight: 700; letter-spacing: .4px;
  border-top: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(30,32,48,.9) 0%, transparent 100%);
  user-select: none;
}

.b-warn-text {
  margin: 2px 8px 3px; padding: 4px 8px;
  border-radius: 5px; font-size: 12px; line-height: 1.4;
}
.b-warn-text.bear {
  color: #FF7060; background: rgba(220,70,50,.07);
  border: 1px solid rgba(220,70,50,.22);
}
.b-warn-text.neut {
  color: #4a6040; background: rgba(50,210,120,.05);
  border: 1px solid rgba(50,210,120,.10);
}

.b-row {
  display: flex; align-items: center; gap: 8px;
  padding: 2px 10px;
}
.b-label {
  font-size: 11px; flex: 0 0 auto; white-space: nowrap;
}

.b-score-bar {
  display: flex; align-items: center; gap: 7px;
  padding: 3px 10px 5px;
}

/* ── 月相行（紧凑横排）──────────────────────────────── */
.b-moon-row {
  display: flex; justify-content: space-around;
  padding: 3px 10px 4px; gap: 6px;
}
/* 新紧凑样式：emoji + 名称横排 */
.b-moon-cell-h {
  display: flex; align-items: center; gap: 5px; flex: 1; justify-content: center;
}
.b-moon-sym-sm {
  font-size: 18px; line-height: 1;
  filter: drop-shadow(0 0 3px rgba(200,200,255,.35));
}
/* 旧样式保留以防兼容 */
.b-moon-cell {
  display: flex; flex-direction: column; align-items: center;
  gap: 2px; flex: 1;
}
.b-moon-label { font-size: 10px; color: #7090d0; letter-spacing: .3px; }
.b-moon-sym   { font-size: 22px; line-height: 1.1; filter: drop-shadow(0 0 4px rgba(200,200,255,.35)); }
.b-moon-name  { font-size: 11px; color: var(--text); font-weight: 600; }

/* ── 相位演变 ──────────────────────────────────────── */
.b-phase-evo {
  display: flex; gap: 6px; padding: 3px 10px 5px;
}
.b-phase-col {
  flex: 1; text-align: center;
  background: rgba(20,24,40,.7);
  border: 1px solid var(--border); border-radius: 5px;
  padding: 4px 6px;
}
.b-phase-lbl {
  font-size: 10px; color: var(--text-dim); margin-bottom: 1px;
}
.b-phase-val {
  font-size: 12px; font-weight: 700;
}

/* ── 当前交易季节 ──────────────────────────────────── */
.b-season {
  padding: 3px 10px 6px;
  font-size: 11px; color: var(--text-dim); line-height: 1.5;
}

/* ── 仪表盘滚动条（可见，右侧轨道）────────────────── */
.dashboard-panel {
  scrollbar-width: thin;
  scrollbar-color: #1a1f30 #10121e;
}
.dashboard-panel::-webkit-scrollbar { width: 6px; }
.dashboard-panel::-webkit-scrollbar-track { background: #10121e; }
.dashboard-panel::-webkit-scrollbar-thumb {
  background: #3a4468; border-radius: 3px;
}
.dashboard-panel::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* ── 双周期评分行（速度盘下方）──────────────────────── */
.score-row2 {
  display: flex; justify-content: space-around; align-items: stretch;
  padding: 4px 8px 8px; gap: 6px;
}
.sr-pill {
  flex: 1; display: flex; flex-direction: column; align-items: center;
  gap: 2px; background: rgba(20,24,40,.8); border: 1px solid var(--border);
  border-radius: 6px; padding: 5px 4px;
}
.sr-pill.htf { border-color: rgba(255,140,0,.22); background: rgba(255,100,0,.05); }
.sr-tf    { font-size: 10px; color: #7090d0; font-weight: 600; letter-spacing: .4px; }
.sr-score { font-size: 19px; font-weight: 700; font-variant-numeric: tabular-nums; }
.sr-phase { font-size: 10px; font-weight: 600; padding: 1px 5px; border-radius: 3px; }

/* ── 风险提示页脚 ───────────────────────────────────── */
.risk-footer {
  position: fixed; bottom: 0;
  left: calc(var(--dash-w) + 14px);   /* 对齐 TV 左侧边框,不盖指标面板 */
  right: 0;
  height: 22px;                       /* v2301: 固定高度,单行,不会因内容换行 */
  line-height: 20px;
  background: rgba(10,11,16,.96); border-top: 1px solid rgba(230,180,60,.18);
  padding: 0 20px; font-size: 11px; color: #8c7e5a;
  z-index: 200; text-align: center; letter-spacing: .2px;
  white-space: nowrap;                /* v2301: 强制单行 */
  overflow: hidden;
  text-overflow: ellipsis;            /* 超出用 ... */
}

/* v2301: 给 chart-section 留出 footer 空间,避免时间轴被遮 */
.chart-section { padding-bottom: 22px; }

/* ── 响应式 ─────────────────────────────────────────── */
/* ── 自适应已禁用（用户要求 16:9 固定布局，不做小屏适配）─────────────── */
/* 原 @media (max-width: 900px) { ... } 已删除 */

/* user-widget 2026-04-28 */
.user-widget {
  position: fixed; top: 0; right: 0; z-index: 9999;
  background: rgba(6,8,16,.96);
  border-left: 1px solid #7f1d1d;
  border-bottom: 1px solid #7f1d1d;
  border-radius: 0 0 0 8px;
  padding: 7px 16px 9px 14px;
  min-width: 130px; text-align: center;
  backdrop-filter: blur(8px);
  box-shadow: -2px 2px 12px rgba(0,0,0,.6);
}
.uw-greet {
  font-size: 11px; font-weight: 700;
  color: #d4a43c; letter-spacing: .4px;
  line-height: 1.5; margin-bottom: 3px;
}
.uw-phone {
  font-size: 13px; font-weight: 600;
  color: #dde4f0; letter-spacing: 1.5px;
  margin-bottom: 7px; font-variant-numeric: tabular-nums;
}
.uw-actions {
  display: flex; gap: 8px; justify-content: center; align-items: center;
}
.uw-sep { color: #4a5568; font-size: 10px; }
.uw-link {
  font-size: 11px; text-decoration: none;
  color: #60a5fa; transition: color .15s;
}
.uw-link:hover { color: #93c5fd; text-decoration: underline; }
.uw-logout { color: #f87171; }
.uw-logout:hover { color: #fca5a5; }
