/* ============================================================================
   v14-fed.css —— 10 版美联储观察（0912 定稿）：模块卡（整卡即图）+ 三 Tab 详情。
   页公共版式（.mp-*）在 v14.css §10。精确值来源：定稿画布实测（UI规格.md「美联储观察页」表）。
   口径纪律：概率为自行推算，不出现 FedWatch 字样（文案在 js/fed.js）。
   ========================================================================== */

/* 三态 pill 已于 2026-09-16 下线（§B：卡头只留源数据时间）。 */

/* ============ 模块卡 ============ */
.fed-row { display: flex; align-items: center; gap: 8px; height: 20px; flex: none; }
.fed-row-t { font-size: 13px; font-weight: 700; color: var(--ink); white-space: nowrap; }
.fed-row-pill { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: var(--r-pill); font-size: 11px; font-weight: 700; background: var(--soft); color: var(--ink-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.fed-row-cur { margin-left: auto; font-size: 11px; color: var(--ink-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
/* 2026-09-17 上线前增量：起点标注（暂定 = 市场隐含待 FRED 复核 / 人工修正）+ 无概率时的下一场概览与 SEP 摘要 */
.fed-row-tag { display: inline-flex; align-items: center; height: 18px; padding: 0 7px; border-radius: var(--r-pill); font-size: 10.5px; font-weight: 700; white-space: nowrap; }
.fed-row-tag.is-implied, .fed-note.is-implied, .fed-origin.is-implied { color: var(--amber); }
.fed-row-tag.is-manual, .fed-note.is-manual, .fed-origin.is-manual { color: var(--blue); }
.fed-row-tag.is-implied { background: var(--amber-soft); }
.fed-row-tag.is-manual { background: rgba(46, 98, 224, .12); }
.fed-note { margin-top: 6px; font-size: 11px; line-height: 1.4; flex: none; }
.fed-origin.is-manual { background: rgba(46, 98, 224, .10); }
.fed-fb { gap: 0; }
.fed-fb-state { margin-top: 12px; font-size: 12.5px; color: var(--ink-2); line-height: 1.6; }
.fed-fb-state.is-page { font-size: 13px; }
.fed-fb-sep { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--line); }
.mp-card.fed-fb .fed-fb-sep { margin-top: 16px; }
.fed-fb-sep-t { font-size: 11px; font-weight: 700; color: var(--ink-2); }
.fed-fb-sep-row { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; color: var(--ink); font-variant-numeric: tabular-nums; }
.fed-fb-col b { margin-right: 4px; font-weight: 600; color: var(--ink-3); }
.mp-state-btn { margin-top: 14px; height: 32px; padding: 0 16px; border-radius: var(--r-pill); background: var(--soft); color: var(--ink); font-size: 12.5px; font-weight: 600; }
.mp-state-btn:hover { background: var(--line); }

.fed-plot { flex: 1; min-height: 0; display: grid; grid-template-columns: 36px 1fr; margin-top: 6px; }
.fed-yax { display: flex; flex-direction: column; justify-content: space-between; font-size: 11px; color: var(--ink-3); font-variant-numeric: tabular-nums; text-align: right; padding-right: 6px; line-height: 1; transform: translateY(-5px); }
.fed-yax .last { transform: translateY(10px); }
.fed-grid { position: relative; border-bottom: 1px solid var(--line-hover); background-image: linear-gradient(var(--line) 1px, transparent 1px); background-size: 100% 25%; }
.fed-bars { position: absolute; inset: 0; display: flex; align-items: flex-end; justify-content: center; gap: 24px; padding: 0 8px; }
.fed-bar { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; width: 84px; }
.fed-bar-v { font-size: 12px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; margin-bottom: 3px; }
.fed-bar-fill { width: 100%; border-radius: 5px 5px 0 0; min-height: 2px; opacity: .85; transition: height .35s var(--ease); }
.fed-bar-fill.is-hike, .fedp-bar-fill.is-hike { background: var(--bear); }
.fed-bar-fill.is-hold, .fedp-bar-fill.is-hold { background: var(--ink-3); }
.fed-bar-fill.is-cut, .fedp-bar-fill.is-cut { background: var(--bull); }
.fed-xax { display: grid; grid-template-columns: 36px 1fr; margin-top: 4px; flex: none; }
.fed-xax-row { display: flex; justify-content: center; gap: 24px; padding: 0 8px; }
.fed-xax-row span { width: 84px; text-align: center; font-size: 11px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.fed-xax-row span.is-cur { color: var(--ink); font-weight: 800; }

.fed-tiles { display: flex; gap: 8px; margin-top: 8px; flex: none; }
.fed-tile { flex: 1; min-width: 0; border-radius: 10px; padding: 8px 10px; }
.fed-tile.is-hike { background: var(--bear-soft); }
.fed-tile.is-hold { background: var(--soft); }
.fed-tile.is-cut { background: var(--bull-soft); }
.fed-tile-top { display: flex; align-items: baseline; gap: 6px; }
.fed-tile-l { font-size: 11px; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.fed-tile-v { margin-left: auto; font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1; }
.fed-tile.is-hike .fed-tile-v { color: var(--bear); }
.fed-tile.is-hold .fed-tile-v { color: var(--ink); }
.fed-tile.is-cut .fed-tile-v { color: var(--bull); }
.fed-tile-bar { display: block; height: 4px; border-radius: var(--r-pill); background: var(--line-hover); margin-top: 7px; overflow: hidden; }
.fed-tile-bar > span { display: block; height: 100%; border-radius: var(--r-pill); opacity: .9; }
.fed-tile.is-hike .fed-tile-bar > span { background: var(--bear); }
.fed-tile.is-hold .fed-tile-bar > span { background: var(--ink); }
.fed-tile.is-cut .fed-tile-bar > span { background: var(--bull); }

/* ============ Tab 1：最新概率（柱图 280 + 结果卡 + 口径框） ============ */
.fedp-plot { margin-top: 14px; height: 280px; display: grid; grid-template-columns: 40px 1fr; }
.fedp-yax { display: flex; flex-direction: column; justify-content: space-between; font-size: 11px; color: var(--ink-3); font-variant-numeric: tabular-nums; text-align: right; padding-right: 8px; line-height: 1; transform: translateY(-5px); }
.fedp-grid { position: relative; border-bottom: 1px solid var(--line-hover); background-image: linear-gradient(var(--line) 1px, transparent 1px); background-size: 100% 20%; }
.fedp-bars { position: absolute; inset: 0; display: flex; align-items: flex-end; justify-content: center; gap: 20px; padding: 0 12px; }
.fedp-bar { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; flex: 1; max-width: 110px; }
.fedp-bar-v { font-size: 12px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; margin-bottom: 4px; }
.fedp-bar-fill { width: 100%; border-radius: 5px 5px 0 0; min-height: 2px; opacity: .85; transition: height .35s var(--ease); }
.fedp-xax { display: grid; grid-template-columns: 40px 1fr; margin-top: 6px; }
.fedp-xax-row { display: flex; justify-content: center; gap: 20px; padding: 0 12px; }
.fedp-xax-row span { flex: 1; max-width: 110px; text-align: center; font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.fedp-xax-row span.is-cur { color: var(--ink); font-weight: 800; }
.fedp-legend { margin-top: 12px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; font-size: 11px; color: var(--ink-2); }
.fedp-legend .lg { display: inline-flex; align-items: center; gap: 6px; }
.fedp-legend .lg i { width: 10px; height: 10px; border-radius: 3px; }
.fedp-legend .lg i.is-hike { background: var(--bear); }
.fedp-legend .lg i.is-hold { background: var(--ink-3); }
.fedp-legend .lg i.is-cut { background: var(--bull); }
.fedp-legend .lg-u { margin-left: auto; color: var(--ink-3); }
.fedp-stats { margin-top: 14px; display: grid; gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fedp-stats[data-n="1"] { grid-template-columns: minmax(0, 1fr); }
.fedp-stats[data-n="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fedp-stat { border: 1px solid var(--line); border-radius: 16px; padding: 16px 18px; background: var(--soft-2); }
.fedp-stat-v { display: block; font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.fedp-stat-v.is-hike { color: var(--bear); }
.fedp-stat-v.is-hold { color: var(--ink); }
.fedp-stat-v.is-cut { color: var(--bull); }
.fedp-stat-l { display: block; margin-top: 4px; font-size: 12px; font-weight: 600; color: var(--ink-3); }

/* ============ Tab 2：概率分布矩阵（行内单色渐深；无单元格边框；仅当前列虚线） ============ */
.mp-card.is-wide { padding: 18px 22px 20px; }
.fedm-scroll { overflow-x: auto; }
/* 列数 = 真实档位并集（--fedm-n 由 fed.js 按 data-n 写入；窄屏靠 .fedm-scroll 横滚），不再固定 9 列 */
/* 2026-09-18 测试站验收：会议列 104px 放不下「2027-06-09 + SEP」而折成两行，列宽加到 132 且不换行，各行统一单行 */
.fedm { min-width: calc(228px + var(--fedm-n, 9) * 52px); }
.fedm-row { display: grid; grid-template-columns: 132px repeat(var(--fedm-n, 9), minmax(0, 1fr)) 96px; align-items: stretch; height: 40px; border-bottom: 1px solid var(--line-2); }
.fedm-row.fedm-head { height: 34px; border-bottom: 1px solid var(--line); }
.fedm-row > span { display: flex; align-items: center; justify-content: center; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--ink-2); }
.fedm-head > span { font-size: 11px; font-weight: 700; color: var(--ink-3); }
.fedm-c0 { justify-content: flex-start !important; gap: 6px; font-weight: 700; color: var(--ink) !important; white-space: nowrap; }
.fedm-head .fedm-c0 { color: var(--ink-3) !important; font-weight: 700; }
.fedm-sep { font-style: normal; font-size: 10px; font-weight: 700; color: var(--purple); background: var(--purple-soft); border-radius: 4px; padding: 1px 4px; }
.fedm-row > span.is-cur { border-left: 1px dashed var(--ink-3); border-right: 1px dashed var(--ink-3); }
.fedm-row > span.is-top { font-weight: 800; color: var(--ink); }
.fedm-row > span.is-zero { color: var(--ink-3); }
.fedm-cend { justify-content: flex-end !important; gap: 4px; font-size: 12px; }
.fedm-cend b { font-weight: 700; }
.fedm-cend b.is-hike { color: var(--bear); }
.fedm-cend b.is-cut { color: var(--bull); }
.fedm-legend { margin-top: 12px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; font-size: 12px; color: var(--ink-2); }
.fedm-legend .lg { display: inline-flex; align-items: center; gap: 6px; }
.fedm-legend i { width: 10px; height: 12px; border-radius: 2px; }
.fedm-legend i.h1 { background: var(--heat-1); }
.fedm-legend i.h2 { background: var(--heat-2); }
.fedm-legend i.h3 { background: var(--heat-3); }
.fedm-legend i.dash { width: 14px; height: 12px; border-left: 1px dashed var(--ink-3); border-right: 1px dashed var(--ink-3); border-radius: 0; }
.fedm-legend i.sep { width: auto; height: auto; font-style: normal; font-size: 10px; font-weight: 700; color: var(--purple); background: var(--purple-soft); border-radius: 4px; padding: 1px 4px; }

/* ============ Tab 3：点阵图 ============ */
.fedd-wrap { margin-top: 12px; }
.fedd { display: block; width: 100%; height: auto; }
.fedd-legend { margin-top: 6px; display: flex; align-items: center; justify-content: center; gap: 20px; font-size: 12px; font-weight: 600; color: var(--ink-2); }
.fedd-legend .lg { display: inline-flex; align-items: center; gap: 6px; }
.fedd-legend i { width: 10px; height: 10px; border-radius: 50%; }
.fedd-legend i.dot { background: var(--dot); }
.fedd-legend i.med { background: var(--blue); }
.fedd-legend i.mkt { background: var(--bear); }
.fedd-foot { margin-top: 12px; font-size: 12px; color: var(--ink-3); }

/* 依赖合约缺失的会议行（buckets=null）：各格「—」，不猜不补也不解释（2026-09-16 §B） */
.fedm-row.is-missing { color: var(--ink-3); }
/* 页底两行更新时间 / 合规句（替代原 .mp-note 三行框） */
.mp-meta + .mp-meta { margin-top: 4px; }
