/* 行情中心全局样式——页壳照 ERP layout，现货页/组件样式由 ss.vue、SsFactorPanel.vue、
   StrategySignals.vue 的 scoped CSS 手工加前缀移植（.quote-center / .fp / .sg） */

/* ==================== 页壳（ERP App.vue + layout/index.vue + Navbar + Sidebar） ==================== */
html, body, #app { height: 100%; margin: 0; }
body { font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; }

.layout-container { height: 100%; }
.layout-aside { background: linear-gradient(180deg, #0f1b2d, #0a1220); transition: width .28s; overflow: hidden; }
.logo { height: 56px; display: flex; align-items: center; gap: 8px; padding: 0 16px; color: #f8fafc; }
.logo-text { font-size: 16px; font-weight: 800; letter-spacing: 1px; white-space: nowrap; }
.logo-badge { font-size: 12px; font-weight: 800; color: #60a5fa; }
.logo-mini { font-size: 16px; font-weight: 800; }
.layout-menu { border-right: none; }
.layout-menu .el-menu-item:hover { background: rgba(255, 255, 255, .06); color: #fff; }
.layout-menu .el-menu-item.is-active { background: rgba(96, 165, 250, .16); color: #fff; }

.layout-header { background: #fff; border-bottom: 1px solid #ebeef5; padding: 0 16px; display: flex; align-items: center; }
.fold-btn { font-size: 20px; cursor: pointer; color: #5a5e66; }
.header-title { margin-left: 12px; font-size: 15px; font-weight: 600; color: #303133; }
.header-right { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.layout-main { background: #f5f7fa; padding: 0; }
.setting-tip { font-size: 12px; color: #909399; padding-left: 170px; }

/* 折叠弹出菜单（body 级，深色补丁，照 ERP Sidebar.vue） */
.el-menu--popup { background: #0f1b2d !important; }
.el-menu--popup .el-menu-item { color: rgba(255, 255, 255, .75); }
.el-menu--popup .el-menu-item:hover { background: rgba(255, 255, 255, .06); color: #fff; }
.el-menu--popup .el-menu-item.is-active { background: rgba(96, 165, 250, .16); color: #fff; }

/* 涨跌色（国内习惯：红涨绿跌） */
.up { color: #ef5350; }
.down { color: #26a69a; }

/* ==================== 现货行情（ss.vue） ==================== */
.quote-center { padding: 12px; }
.quote-center .qc-card { background: #181b24; border-color: #181b24; }
.quote-center .qc-body { display: flex; gap: 14px; }

/* 左列表 */
.quote-center .mkt { width: 218px; flex-shrink: 0; border-right: 1px solid #242833; padding-right: 10px; display: flex; flex-direction: column; }
.quote-center .mkt-search .el-input__wrapper { background: #20232e; box-shadow: none; }
.quote-center .mkt-search .el-input__inner { color: #cfd3dc; }
.quote-center .mkt-scroll { margin-top: 8px; overflow-y: auto; max-height: 860px; }
.quote-center .mkt-scroll::-webkit-scrollbar { width: 4px; }
.quote-center .mkt-scroll::-webkit-scrollbar-thumb { background: #2b2f3c; border-radius: 2px; }
.quote-center .mg { font-size: 11px; color: #6b7080; letter-spacing: 2px; padding: 8px 8px 4px; }
.quote-center .mi { padding: 7px 9px; border-radius: 7px; cursor: pointer; transition: background 0.15s; }
.quote-center .mi:hover { background: #20232e; }
.quote-center .mi.on { background: #232a3d; }
.quote-center .mi-n { font-size: 12.5px; color: #cfd3dc; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.quote-center .mi-tag { font-size: 10px; color: #e6a23c; border: 1px solid #4d4230; border-radius: 4px; padding: 0 4px; margin-left: 6px; }
.quote-center .mi-p { display: flex; justify-content: space-between; align-items: baseline; margin-top: 2px; }
.quote-center .mi-p b { font-size: 13px; font-variant-numeric: tabular-nums; color: #8b90a0; }
.quote-center .mi-p b.up { color: #ef5350; } .quote-center .mi-p b.down { color: #26a69a; }
.quote-center .mi-c { font-size: 11px; color: #6b7080; }
.quote-center .mi-c.up { color: #ef5350; } .quote-center .mi-c.down { color: #26a69a; }

/* 主区 */
.quote-center .main { flex: 1; min-width: 0; }
.quote-center .head { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: 10px; }
.quote-center .h-name { font-size: 15px; font-weight: 600; color: #cfd3dc; }
.quote-center .h-full { font-size: 12px; font-weight: 400; color: #6b7080; margin-left: 10px; }
.quote-center .h-price-row { display: flex; align-items: baseline; gap: 12px; margin-top: 6px; }
.quote-center .h-price { font-size: 34px; font-weight: 700; font-variant-numeric: tabular-nums; color: #cfd3dc; }
.quote-center .h-price.up { color: #ef5350; } .quote-center .h-price.down { color: #26a69a; }
.quote-center .h-chg { font-size: 14px; font-variant-numeric: tabular-nums; color: #8b90a0; }
.quote-center .h-chg.up { color: #ef5350; } .quote-center .h-chg.down { color: #26a69a; }
.quote-center .h-rt { font-size: 11px; color: #e6a23c; border: 1px solid #4d4230; border-radius: 4px; padding: 1px 6px; }
.quote-center .head-chips { display: flex; gap: 10px; flex-wrap: wrap; }
.quote-center .chip { background: #20232e; border-radius: 8px; padding: 8px 14px; text-align: center; }
.quote-center .chip span { display: block; font-size: 11px; color: #6b7080; }
.quote-center .chip b { font-size: 14px; color: #cfd3dc; font-variant-numeric: tabular-nums; }
.quote-center .chip b.up { color: #ef5350; } .quote-center .chip b.down { color: #26a69a; }

.quote-center .tools { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 14px; }
.quote-center .pd .el-radio-button__inner { background: #20232e; border-color: #2b2f3c; color: #8b90a0; }
.quote-center .pd .el-radio-button.is-active .el-radio-button__inner { background: var(--el-color-primary); border-color: var(--el-color-primary); color: #fff; }
.quote-center .ov { display: flex; align-items: center; gap: 6px; }
.quote-center .ov-l { font-size: 12px; color: #8b90a0; }

.quote-center .chart { width: 100%; height: 560px; margin-top: 10px; }

.quote-center .stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 10px; }
.quote-center .st { background: #20232e; border-radius: 8px; padding: 9px 12px; }
.quote-center .st-l { font-size: 12px; color: #8b90a0; }
.quote-center .st-v { font-size: 17px; font-weight: 600; margin-top: 2px; color: #cfd3dc; font-variant-numeric: tabular-nums; }
.quote-center .st-v.up { color: #ef5350; } .quote-center .st-v.down { color: #26a69a; }

/* 基差胜率信号卡 */
.quote-center .arb-card { margin-top: 12px; padding: 12px 14px; background: #20232e; border-radius: 8px; }
.quote-center .ac-title { font-size: 13px; font-weight: 600; color: #cfd3dc; }
.quote-center .ac-hint { font-size: 11px; font-weight: 400; color: #6b7080; margin-left: 8px; }
.quote-center .bc-row2 { display: grid; grid-template-columns: 2.2fr 1fr; gap: 10px; margin-top: 10px; }
.quote-center .gauge-card { display: flex; flex-direction: column; }
.quote-center .gc-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.quote-center .gc-l { font-size: 12px; color: #8b90a0; }
.quote-center .gc-v { font-size: 20px; font-weight: 700; color: #cfd3dc; font-variant-numeric: tabular-nums; }
.quote-center .gc-v.up { color: #ef5350; } .quote-center .gc-v.down { color: #26a69a; }
.quote-center .bc { background: #181b24; border-radius: 8px; padding: 10px 12px; }
.quote-center .bc.on { outline: 1px solid #2b3a55; }
.quote-center .bc-l { font-size: 12px; color: #8b90a0; }
.quote-center .bc-v { font-size: 20px; font-weight: 700; margin-top: 3px; color: #cfd3dc; font-variant-numeric: tabular-nums; }
.quote-center .bc-v.up { color: #ef5350; } .quote-center .bc-v.down { color: #26a69a; }
.quote-center .bc-v.accent { color: #409eff; }
.quote-center .bc-s { font-size: 11px; color: #6b7080; margin-top: 2px; }
.quote-center .gauge { margin-top: 24px; padding: 0 4px 2px; }
.quote-center .g-track { position: relative; height: 6px; border-radius: 3px; background: linear-gradient(90deg, rgba(38, 166, 154, 0.75), rgba(120, 126, 140, 0.3) 50%, rgba(239, 83, 80, 0.75)); }
.quote-center .g-mid { position: absolute; top: -4px; width: 2px; height: 14px; background: #8b90a0; transform: translateX(-50%); border-radius: 1px; }
.quote-center .g-dot { position: absolute; top: 50%; width: 14px; height: 14px; border-radius: 50%; background: #f0b90b; border: 2px solid #fff; transform: translate(-50%, -50%); box-shadow: 0 0 8px rgba(240, 185, 11, 0.8); }
.quote-center .g-val { position: absolute; bottom: 13px; left: 50%; transform: translateX(-50%); font-size: 12px; font-weight: 700; color: #f0b90b; white-space: nowrap; font-variant-numeric: tabular-nums; }
.quote-center .g-labels { position: relative; display: flex; justify-content: space-between; margin-top: 9px; font-size: 11px; color: #8b90a0; }
.quote-center .g-md { position: absolute; transform: translateX(-50%); }
.quote-center .g-lo { color: #5cc7b0; } .quote-center .g-hi { color: #ef8785; }
.quote-center .ac-sub { font-size: 11px; color: #6b7080; }
.quote-center .ac-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 8px; font-size: 12.5px; color: #a7abb8; }
.quote-center .ac-row b { color: #cfd3dc; font-variant-numeric: tabular-nums; }
.quote-center .ac-row b.up { color: #ef5350; }
.quote-center .ac-row.muted { color: #6b7080; }
.quote-center .ac-side { font-size: 11px; border-radius: 4px; padding: 1px 7px; flex-shrink: 0; }
.quote-center .ac-side.hi { color: #ef8785; background: rgba(239, 83, 80, 0.14); }
.quote-center .ac-side.lo { color: #5cc7b0; background: rgba(38, 166, 154, 0.14); }
.quote-center .ac-side.mid { color: #7ea6e0; background: rgba(64, 158, 255, 0.14); }
.quote-center .ac-kpi { margin-left: 6px; }
.quote-center .ac-note { font-size: 11px; color: #6b7080; margin-top: 9px; line-height: 1.6; }
.quote-center .data-bar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 12px; padding: 10px 12px; background: #20232e; border-radius: 8px; }
.quote-center .db-info { font-size: 12px; color: #8b90a0; }
.quote-center .db-info b { color: #cfd3dc; }
.quote-center .db-btns { display: flex; gap: 8px; }
.quote-center .disc { font-size: 12px; color: #6b7080; margin-top: 10px; line-height: 1.6; }

/* ==================== SS 多空因子（SsFactorPanel.vue） ==================== */
.fp { margin-top: 10px; padding: 8px 10px; background: #20232e; border-radius: 8px; }
.fp .fp-head { font-size: 13px; font-weight: 600; color: #cfd3dc; }
.fp .fp-hint { font-size: 11px; font-weight: 400; color: #6b7080; margin-left: 8px; }
.fp .fp-sec { font-size: 10px; color: #6b7080; letter-spacing: 2px; margin-top: 6px; }
.fp .fp-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 4px; }
.fp .fp-grid.five { grid-template-columns: repeat(5, 1fr); }
.fp .fc { background: #181b24; border-radius: 7px; padding: 4px 8px 5px; }
.fp .fc-top { display: flex; align-items: center; justify-content: space-between; }
.fp .fc-n { font-size: 11.5px; color: #8b90a0; }
.fp .fc-tag { font-size: 10.5px; font-weight: 600; padding: 0 5px; border-radius: 4px; }
.fp .fc-tag.vp { color: #ef8785; background: rgba(239, 83, 80, 0.14); }
.fp .fc-tag.vn { color: #5cc7b0; background: rgba(38, 166, 154, 0.14); }
.fp .fc-tag.vz { color: #6b7080; background: rgba(107, 112, 128, 0.15); }
.fp .fc-v { font-size: 14.5px; font-weight: 700; margin-top: 1px; color: #cfd3dc; font-variant-numeric: tabular-nums; display: inline-block; }
.fp .fc-s { font-size: 10px; color: #6b7080; margin-top: 0; display: inline-block; margin-left: 6px; }
.fp .fp-score { margin-top: 8px; background: #181b24; border-radius: 7px; padding: 6px 10px 8px; }
.fp .fs-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.fp .fs-l { font-size: 12px; color: #8b90a0; }
.fp .fs-v { font-size: 17px; font-weight: 700; color: #cfd3dc; font-variant-numeric: tabular-nums; }
.fp .fs-v.up { color: #ef5350; } .fp .fs-v.down { color: #26a69a; }
.fp .gauge { margin-top: 20px; padding: 0 4px 0; }
.fp .g-track { position: relative; height: 6px; border-radius: 3px; background: linear-gradient(90deg, rgba(38, 166, 154, 0.75), rgba(120, 126, 140, 0.3) 50%, rgba(239, 83, 80, 0.75)); }
.fp .g-mid { position: absolute; top: -4px; width: 2px; height: 14px; background: #8b90a0; transform: translateX(-50%); border-radius: 1px; }
.fp .g-dot { position: absolute; top: 50%; width: 14px; height: 14px; border-radius: 50%; background: #f0b90b; border: 2px solid #fff; transform: translate(-50%, -50%); box-shadow: 0 0 8px rgba(240, 185, 11, 0.8); }
.fp .g-val { position: absolute; bottom: 13px; left: 50%; transform: translateX(-50%); font-size: 12px; font-weight: 700; color: #f0b90b; white-space: nowrap; font-variant-numeric: tabular-nums; }
.fp .g-labels { position: relative; display: flex; justify-content: space-between; margin-top: 9px; font-size: 11px; color: #8b90a0; }
.fp .g-md { position: absolute; transform: translateX(-50%); }
.fp .g-dn { color: #5cc7b0; } .fp .g-up { color: #ef8785; }
.fp .fc.rng { outline: 1px solid #2b3a55; }

/* ==================== 策略信号灯（StrategySignals.vue） ==================== */
.sg { margin-top: 10px; padding: 8px 10px; background: #20232e; border-radius: 8px; }
.sg .sg-head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 13px; font-weight: 600; color: #cfd3dc; }
.sg .sg-tgt { font-size: 11px; font-weight: 600; color: #7ea6e0; background: rgba(64, 158, 255, 0.12); border-radius: 4px; padding: 1px 6px; }
.sg .sg-hint { font-size: 11px; font-weight: 400; color: #6b7080; }
.sg .sg-wx { margin-left: auto; display: flex; align-items: center; }
.sg .sg-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 8px; }
.sg .lamp { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 6px; background: #181b24; border-radius: 7px; padding: 6px 9px; }
.sg .lp-dot { width: 8px; height: 8px; border-radius: 50%; background: #3a3f4d; align-self: center; flex-shrink: 0; }
.sg .lp-n { font-size: 12.5px; font-weight: 600; color: #8b90a0; }
.sg .lp-s { font-size: 10.5px; color: #6b7080; }
.sg .lamp.on-red .lp-dot { background: #ef5350; box-shadow: 0 0 6px rgba(239, 83, 80, 0.8); }
.sg .lamp.on-red .lp-n { color: #ef8785; }
.sg .lamp.on-green .lp-dot { background: #26a69a; box-shadow: 0 0 6px rgba(38, 166, 154, 0.7); }
.sg .lamp.on-green .lp-n { color: #5cc7b0; }
.sg .lamp.on-gold .lp-dot { background: #f0b90b; box-shadow: 0 0 6px rgba(240, 185, 11, 0.8); }
.sg .lamp.on-gold .lp-n { color: #f0b90b; }
.sg .lamp.on-blue .lp-dot { background: #409eff; box-shadow: 0 0 6px rgba(64, 158, 255, 0.8); }
.sg .lamp.on-blue .lp-n { color: #7ea6e0; }

/* ==================== 期货行情（futures.vue，套保浮窗已砍） ==================== */
.fq-page { padding: 12px; background: #10131a; min-height: calc(100vh - 84px); }
.fq-page .layout { display: flex; gap: 12px; align-items: stretch; }
.fq-page .dtabs { margin-top: 12px; }
.fq-page .dtabs-head { display: flex; align-items: center; gap: 4px; border-bottom: 1px solid #232838; padding-bottom: 8px; }
.fq-page .dt { padding: 5px 14px; font-size: 13px; color: #8a92a6; border-radius: 6px; cursor: pointer; }
.fq-page .dt:hover { color: #dfe3ec; }
.fq-page .dt.on { background: rgba(77,163,255,.14); color: #4da3ff; font-weight: 600; }
.fq-page .dt-hint { margin-left: auto; font-size: 11px; color: #5a6377; }
.fq-page .dtabs .wr-card { background: transparent; padding: 2px 0 0; border-radius: 0; }
.fq-page .warrant-block, .fq-page .pos-block { margin-top: 12px; }
.fq-page .qc-card { background: #181b24; border-radius: 10px; padding: 12px; }
.fq-page .left { width: 268px; flex: none; max-height: calc(100vh - 110px); overflow-y: auto; }
.fq-page .right { flex: 1; min-width: 0; padding: 14px 16px; }
.fq-page .grp { margin-bottom: 10px; }
.fq-page .grp-t { font-size: 13px; font-weight: 600; color: #dfe3ec; padding: 4px 8px 6px; display: flex; align-items: center; justify-content: space-between; }
.fq-page .upd { font-size: 10px; color: #e6a23c; font-weight: 400; }
.fq-page .mi { display: grid; grid-template-columns: 1fr 74px 58px; gap: 6px; align-items: center; padding: 6px 8px; border-radius: 6px; cursor: pointer; font-size: 12.5px; color: #dfe3ec; font-variant-numeric: tabular-nums; }
.fq-page .mi:hover { background: #1d2230; }
.fq-page .mi.sel { background: rgba(77,163,255,.12); outline: 1px solid #4da3ff; }
.fq-page .mi-n { font-weight: 600; white-space: nowrap; }
.fq-page .mi-tag { font-size: 10px; color: #e6a23c; border: 1px solid #4d4230; border-radius: 4px; padding: 0 4px; margin-left: 5px; font-weight: 400; }
.fq-page .mi-tag2 { font-size: 10px; color: #5a6377; border: 1px solid #2c3446; border-radius: 4px; padding: 0 4px; margin-left: 5px; font-weight: 400; }
.fq-page .mi-p { text-align: right; }
.fq-page .mi-c { text-align: right; font-size: 11.5px; }
.fq-page .dim { color: #5a6377; }
.fq-page .thin { color: #e6a23c; }
.fq-page .h-row { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.fq-page .h-code { font-size: 18px; font-weight: 700; color: #dfe3ec; }
.fq-page .h-price { font-size: 26px; font-weight: 700; font-variant-numeric: tabular-nums; }
.fq-page .h-chg { font-size: 13px; font-variant-numeric: tabular-nums; }
.fq-page .h-rt { margin-left: auto; font-size: 11px; color: #e6a23c; border: 1px solid #4d4230; border-radius: 4px; padding: 1px 6px; }
.fq-page .chips { display: flex; gap: 14px; flex-wrap: wrap; margin: 10px 0 4px; font-size: 12px; color: #8a92a6; }
.fq-page .chip b { color: #dfe3ec; font-variant-numeric: tabular-nums; margin-left: 2px; }
.fq-page .chip b.up { color: #ef5350; } .fq-page .chip b.down { color: #26a69a; } .fq-page .chip b.thin { color: #e6a23c; }
.fq-page .mdiff { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 6px 0; padding: 6px 0; border-top: 1px solid #232838; border-bottom: 1px solid #232838; font-size: 12px; color: #8a92a6; }
.fq-page .mdiff-i { font-variant-numeric: tabular-nums; }
.fq-page .mdiff-i.opp { border: 1px solid rgba(38,166,154,.5); border-radius: 4px; padding: 0 5px; }
.fq-page .mdiff-hint { color: #5a6377; font-size: 11px; }
.fq-page .k-ctl { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 10px 0; }
.fq-page .k-chart { height: 440px; }
.fq-page .k-empty { height: 140px; display: flex; align-items: center; justify-content: center; color: #5a6377; font-size: 13px; }
.fq-page .disclaimer { font-size: 11px; color: #5a6377; margin-top: 8px; }
@media (max-width: 900px) { .fq-page .layout { flex-direction: column; } .fq-page .left { width: 100%; max-height: none; } }
.fq-page .el-radio-button__inner { background: #10131a; border-color: #2c3446; color: #8a92a6; }
.fq-page .el-radio-button__original-radio:checked + .el-radio-button__inner { background: #4da3ff; border-color: #4da3ff; color: #fff; box-shadow: -1px 0 0 0 #4da3ff; }

/* ==================== 仓单（warrants.vue，可嵌入期货页也可独立路由） ==================== */
.wr-card { background: #181b24; border-radius: 10px; padding: 14px 16px; color: #dfe3ec; }
.wr-card .wr-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.wr-card .wr-title { font-size: 15px; font-weight: 600; }
.wr-card .wr-title span { color: #e6a23c; font-size: 12px; margin-left: 8px; }
.wr-card .wr-sub { color: #5a6377; font-size: 11px; margin-top: 3px; }
.wr-card .wr-ctl { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.wr-card .wr-follow { color: #4da3ff; border: 1px solid rgba(77,163,255,.45); border-radius: 4px; padding: 2px 7px; font-size: 11px; }
.wr-card .wr-date { width: 138px !important; }
.wr-card .wr-progress { margin-top: 10px; color: #e6a23c; font-size: 11px; }
.wr-card .wr-error { margin-top: 10px; color: #f56c6c; background: rgba(245,108,108,.08); border: 1px solid rgba(245,108,108,.35); border-radius: 6px; padding: 7px 10px; font-size: 12px; }
.wr-card .wr-empty { min-height: 120px; display: flex; align-items: center; justify-content: center; color: #5a6377; font-size: 13px; }
.wr-card .wr-meta { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 10px; padding-top: 8px; border-top: 1px solid #232838; color: #8a92a6; font-size: 11px; }
.wr-card .wr-meta b { color: #dfe3ec; }
.wr-card .wr-health { padding: 2px 7px; border-radius: 4px; border: 1px solid #394258; }
.wr-card .wr-health.ok { color: #67c23a; border-color: rgba(103,194,58,.45); }
.wr-card .wr-health.stale { color: #e6a23c; border-color: rgba(230,162,60,.45); }
.wr-card .wr-health.failed { color: #f56c6c; border-color: rgba(245,108,108,.45); }
.wr-card .wr-sums { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 10px; }
.wr-card .wr-sum { border: 1px solid #232838; border-radius: 9px; padding: 10px 12px; min-width: 0; }
.wr-card .wr-sum-label { color: #8a92a6; font-size: 12px; }
.wr-card .wr-sum-value { margin: 4px 0 2px; font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; }
.wr-card .wr-sum-value small { color: #8a92a6; font-size: 11px; font-weight: 400; margin-left: 4px; }
.wr-card .wr-sum-note { color: #5a6377; font-size: 10.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wr-card .inc { color: #e6a23c; }
.wr-card .dec { color: #26a69a; }
.wr-card .dim { color: #8a92a6; }
.wr-card .wr-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(430px, .95fr); gap: 12px; margin-top: 12px; }
.wr-card .wr-panel { border: 1px solid #232838; border-radius: 9px; padding: 10px 12px; min-width: 0; }
.wr-card .wr-panel-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 13px; font-weight: 600; flex-wrap: wrap; }
.wr-card .wr-panel-head small { color: #5a6377; font-size: 10.5px; font-weight: 400; }
.wr-card .wr-chart, .wr-card .wr-chart-empty { height: 300px; }
.wr-card .wr-chart-empty { display: flex; align-items: center; justify-content: center; color: #5a6377; font-size: 12px; }
.wr-card .wr-detail { margin-top: 12px; }
.wr-card .wr-detail-ctl { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.wr-card .wr-ksum { font-size: 11px; color: #8a92a6; font-weight: 400; }
.wr-card .wr-ksum b { color: #dfe3ec; font-variant-numeric: tabular-nums; }
.wr-card .wr-detail-ctl .el-radio-button__inner { background: #10131a; border-color: #2c3446; color: #8a92a6; }
.wr-card .wr-detail-ctl .el-radio-button.is-active .el-radio-button__inner { background: var(--el-color-primary); border-color: var(--el-color-primary); color: #fff; }
.wr-card .wr-table-wrap { height: 300px; overflow: auto; margin-top: 8px; }
.wr-card .wr-table-wrap.tall { height: 400px; }
.wr-card .wr-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 11.5px; font-variant-numeric: tabular-nums; }
.wr-card .wr-table th { position: sticky; top: 0; z-index: 1; background: #181b24; color: #5a6377; font-weight: 500; border-bottom: 1px solid #2c3446; padding: 6px; text-align: left; }
.wr-card .wr-table td { color: #dfe3ec; border-bottom: 1px solid #232838; padding: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wr-card .wr-table tr:hover td { background: #1d2230; }
.wr-card .wr-table th:nth-child(1), .wr-card .wr-table td:nth-child(1) { width: 76px; }
.wr-card .wr-table th:nth-child(3), .wr-card .wr-table td:nth-child(3) { width: 96px; }
.wr-card .wr-table th:nth-child(4), .wr-card .wr-table td:nth-child(4) { width: 84px; }
.wr-card .wr-table th:nth-child(5), .wr-card .wr-table td:nth-child(5) { width: 72px; }
.wr-card .wr-table th:nth-child(6), .wr-card .wr-table td:nth-child(6) { width: 110px; }
.wr-card .wr-table .r { text-align: right; }
.wr-card .wr-table td.inc { color: #e6a23c; }
.wr-card .wr-table td.dec { color: #26a69a; }
.wr-card .wr-table td.dim { color: #8a92a6; }
.wr-card .wr-kind { color: #5a6377; border: 1px solid #2c3446; border-radius: 3px; padding: 0 3px; margin-right: 5px; font-size: 9px; }
.wr-card .wr-grow td { background: #1d2230; font-weight: 600; }
.wr-card .wr-share { position: relative; }
.wr-card .wr-share i { position: absolute; left: 0; top: 2px; bottom: 2px; background: rgba(77,163,255,.16); border-radius: 2px; }
.wr-card .wr-share span { position: relative; }
.wr-card .stat-line { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 10px; padding: 8px 12px; background: #1d2230; border-radius: 8px; font-size: 12px; color: #8a92a6; }
.wr-card .stat-line b { color: #dfe3ec; font-variant-numeric: tabular-nums; }
.wr-card .stat-line b.inc { color: #e6a23c; }
.wr-card .stat-line b.dec { color: #26a69a; }
.wr-card .sl-dim { color: #5a6377; font-style: normal; font-size: 11px; margin-left: 3px; }
.wr-card .wr-weekly { margin-top: 12px; }
.wr-card .wr-whead { cursor: pointer; user-select: none; }
.wr-card .wr-wsum-line { font-size: 11.5px; color: #8a92a6; font-weight: 400; font-variant-numeric: tabular-nums; }
.wr-card .wr-wsum-line b { color: #dfe3ec; }
.wr-card .wr-wsum-line b.inc { color: #e6a23c; }
.wr-card .wr-wsum-line b.dec { color: #26a69a; }
.wr-card .wr-wtoggle { font-size: 11px; color: #5a6377; }
.wr-card .wr-whint { margin-top: 8px; font-size: 11px; color: #5a6377; }
.wr-card .wr-wdate { color: #e6a23c; font-size: 11px; font-weight: 400; margin-left: 8px; }
.wr-card .wr-wsums { margin-top: 10px; }
.wr-card .wk-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 11.5px; font-variant-numeric: tabular-nums; margin-top: 10px; }
.wr-card .wk-table th { position: sticky; top: 0; z-index: 1; background: #181b24; color: #5a6377; font-weight: 500; border-bottom: 1px solid #2c3446; padding: 6px; text-align: left; }
.wr-card .wk-table td { color: #dfe3ec; border-bottom: 1px solid #232838; padding: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wr-card .wk-table tr:hover td { background: #1d2230; }
.wr-card .wk-table th:nth-child(1), .wk-table td:nth-child(1) { width: 76px; }
.wr-card .wk-table th:nth-child(3), .wr-card .wk-table td:nth-child(3) { width: 92px; }
.wr-card .wk-table th:nth-child(4), .wr-card .wk-table td:nth-child(4) { width: 92px; }
.wr-card .wk-table th:nth-child(5), .wr-card .wk-table td:nth-child(5) { width: 80px; }
.wr-card .wk-table th:nth-child(6), .wr-card .wk-table td:nth-child(6) { width: 96px; }
.wr-card .wk-table th:nth-child(7), .wr-card .wk-table td:nth-child(7) { width: 84px; }
.wr-card .wk-table th:nth-child(8), .wr-card .wk-table td:nth-child(8) { width: 110px; }
.wr-card .wk-table .r { text-align: right; }
.wr-card .wk-table td.inc { color: #e6a23c; }
.wr-card .wk-table td.dec { color: #26a69a; }
.wr-card .wk-table td.dim { color: #8a92a6; }
.wr-card .wr-foot { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 10px; color: #5a6377; font-size: 10.5px; }
.wr-card .wr-foot a { color: #4da3ff; text-decoration: none; }
.wr-card .el-input__wrapper { background: #10131a; box-shadow: 0 0 0 1px #2c3446 inset; }
.wr-card .el-input__inner { color: #dfe3ec; }
.wr-card .el-button { background: #10131a; border-color: #2c3446; color: #dfe3ec; }
.wr-card .el-button:hover { border-color: #4da3ff; color: #4da3ff; }
@media (max-width: 1100px) {
  .wr-card .wr-sums { grid-template-columns: repeat(2, 1fr); }
  .wr-card .wr-grid { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .wr-card .wr-sums { grid-template-columns: 1fr; }
  .wr-card .wr-ctl { width: 100%; }
  .wr-card .wr-grid { display: block; }
  .wr-card .wr-panel + .wr-panel { margin-top: 10px; }
}
/* 仓单独立路由页包装 */
.wr-page { padding: 12px; background: #10131a; min-height: calc(100vh - 84px); }
.wr-page .wr-switch { margin-bottom: 10px; }
.wr-page .wr-switch .el-radio-button__inner { background: #10131a; border-color: #2c3446; color: #8a92a6; }
.wr-page .wr-switch .el-radio-button__original-radio:checked + .el-radio-button__inner { background: #4da3ff; border-color: #4da3ff; color: #fff; box-shadow: -1px 0 0 0 #4da3ff; }

/* ==================== 机构持仓（positions.vue，可嵌入也可独立路由） ==================== */
.ip-page { padding: 12px; background: #10131a; min-height: calc(100vh - 84px); }
.ip-page.embedded { padding: 0; background: transparent; min-height: 0; }
.ip-page .title-sub { font-size: 12px; font-weight: 400; color: #e6a23c; margin-left: 10px; }
.ip-page .qc-card { background: #181b24; border-radius: 10px; padding: 12px 16px; margin-bottom: 12px; }
.ip-page .bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.ip-page .title { font-size: 15px; font-weight: 600; color: #dfe3ec; }
.ip-page .source-health { font-size: 11px; padding: 2px 7px; border: 1px solid #394258; border-radius: 4px; color: #8a92a6; }
.ip-page .source-health.ok { color: #67c23a; border-color: rgba(103,194,58,.45); }
.ip-page .source-health.stale { color: #e6a23c; border-color: rgba(230,162,60,.45); }
.ip-page .source-health.failed { color: #f56c6c; border-color: rgba(245,108,108,.45); }
.ip-page .ctl { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ip-page .hint-line { margin-top: 10px; font-size: 12px; color: #8a92a6; }
.ip-page .stat-line { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 10px; padding: 8px 12px; background: #1d2230; border: 1px solid #232838; border-radius: 8px; font-size: 12px; color: #8a92a6; }
.ip-page .stat-line b { color: #dfe3ec; font-variant-numeric: tabular-nums; }
.ip-page .stat-line b.up { color: #ef5350; } .ip-page .stat-line b.down { color: #26a69a; }
.ip-page .stat-line.m-up { border-color: rgba(239,83,80,.5); } .ip-page .stat-line.m-down { border-color: rgba(38,166,154,.5); }
.ip-page .sl-dim { color: #5a6377; font-style: normal; font-size: 11px; margin-left: 3px; }
.ip-page .sc { border: 1px solid #232838; border-radius: 10px; padding: 10px 14px; }
.ip-page .sc-l { font-size: 12px; color: #8a92a6; }
.ip-page .sc-v { font-size: 22px; font-weight: 600; color: #dfe3ec; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.ip-page .sc-u { font-size: 12px; font-weight: 400; color: #8a92a6; margin-left: 3px; }
.ip-page .sc-s { font-size: 11px; color: #5a6377; font-variant-numeric: tabular-nums; }
.ip-page .sc.mood .sc-v { font-size: 16px; }
.ip-page .sc.m-up { border-color: rgba(239,83,80,.5); } .ip-page .sc.m-down { border-color: rgba(38,166,154,.5); }
.ip-page .up { color: #ef5350; } .ip-page .down { color: #26a69a; } .ip-page .dim { color: #5a6377; }
.ip-page .g-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
.ip-page .wx-ctl { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #8a92a6; }
.ip-page .watch-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.ip-page .wc { border: 1px solid #232838; border-radius: 8px; padding: 8px 12px; }
.ip-page .wc.big { border-color: #e6a23c; background: rgba(230,162,60,.07); }
.ip-page .wc-h { display: flex; align-items: center; gap: 6px; }
.ip-page .wc-name { font-size: 13px; font-weight: 600; color: #dfe3ec; }
.ip-page .wc-flash { font-size: 11px; color: #e6a23c; margin-left: auto; }
.ip-page .wc-v { font-size: 18px; font-weight: 600; margin: 3px 0 1px; font-variant-numeric: tabular-nums; }
.ip-page .wc-s { font-size: 11px; color: #5a6377; font-variant-numeric: tabular-nums; }
.ip-page .wc-s b { font-weight: 600; }
.ip-page .rk-badge { display: inline-block; font-size: 10px; border-radius: 4px; padding: 0 4px; margin-left: 5px; font-weight: 600; }
.ip-page .rk-badge.b-v { color: #4da3ff; border: 1px solid rgba(77,163,255,.5); }
.ip-page .rk-badge.b-l { color: #e6a23c; border: 1px solid rgba(230,162,60,.5); }
.ip-page .rk-badge.b-c { color: #26a69a; border: 1px solid rgba(38,166,154,.5); }
.ip-page .g-title { font-size: 14px; font-weight: 600; color: #dfe3ec; }
.ip-page .g-sub { font-size: 11px; color: #5a6377; }
.ip-page .trend-chart { height: 260px; }
.ip-page .rank-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.ip-page .rk { display: flex; flex-direction: column; }
.ip-page .rk-row { display: grid; grid-template-columns: 26px 1fr 76px 76px; gap: 6px; padding: 4px 6px; font-size: 12px; color: #dfe3ec; border-radius: 4px; font-variant-numeric: tabular-nums; }
.ip-page .rk-row:nth-child(even) { background: #1a1e29; }
.ip-page .rk-head { color: #5a6377; font-size: 11px; }
.ip-page .r { text-align: right; }
.ip-page .disclaimer { font-size: 11px; color: #5a6377; padding: 0 4px 8px; }
@media (max-width: 1100px) { .ip-page .rank-grid { grid-template-columns: 1fr; } }
.ip-page .el-radio-button__inner { background: #10131a; border-color: #2c3446; color: #8a92a6; }
.ip-page .el-radio-button__original-radio:checked + .el-radio-button__inner { background: #4da3ff; border-color: #4da3ff; color: #fff; box-shadow: -1px 0 0 0 #4da3ff; }
.ip-page .el-select .el-input__wrapper, .ip-page .el-input__wrapper { background: #10131a; box-shadow: 0 0 0 1px #2c3446 inset; }
.ip-page .el-input__inner { color: #dfe3ec; }

/* ==================== 现货编辑（edit.vue） ==================== */
.quote-edit { padding: 12px; }
.quote-edit .qe-card { background: #181b24; border-color: #181b24; }
.quote-edit .up { color: #ef5350; }
.quote-edit .down { color: #26a69a; }
.quote-edit .bar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
.quote-edit .bar-l, .quote-edit .bar-r { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.quote-edit .wk { font-size: 12px; color: #8b90a0; }
.quote-edit .dirty-tip { font-size: 12px; color: #e6a23c; }
.quote-edit .qkw { width: 170px; }
.quote-edit .adj { display: flex; align-items: center; gap: 4px; }
.quote-edit .adj-in { width: 74px; }
.quote-edit .bar .el-input__wrapper { background: #20232e; box-shadow: 0 0 0 1px #2b2f3c inset; }
.quote-edit .bar .el-input__inner { color: #cfd3dc; }
.quote-edit .bar .el-button { background: #20232e; border-color: #2b2f3c; color: #a7abb8; }
.quote-edit .bar .el-button:hover { color: #cfd3dc; border-color: #3a3f4d; }
.quote-edit .bar .el-button--primary { background: var(--el-color-primary); border-color: var(--el-color-primary); color: #fff; }
.quote-edit .bar .el-button--danger.is-plain { background: rgba(239, 83, 80, 0.12); border-color: #5a3038; color: #ef8785; }
.quote-edit .hint { font-size: 12px; color: #6b7080; margin-top: 10px; line-height: 1.7; }
.quote-edit .hint b { color: #a7abb8; font-weight: 600; }
.quote-edit .tbl { margin-top: 10px; border: 1px solid #242833; border-radius: 8px; overflow: hidden; }
.quote-edit .tr { display: grid; grid-template-columns: 34px 150px 140px 1fr 130px 150px 100px; align-items: center; gap: 8px; padding: 6px 12px; font-size: 12.5px; color: #cfd3dc; border-top: 1px solid #20232e; }
.quote-edit .c-seq { color: #565b6a; font-size: 11.5px; text-align: right; font-variant-numeric: tabular-nums; }
.quote-edit .tr.th { position: sticky; top: 0; background: #20232e; border-top: none; font-size: 11.5px; color: #6b7080; padding: 8px 12px; }
.quote-edit .tr:not(.th):hover { background: #1d2029; }
.quote-edit .tr.bad { background: rgba(239, 83, 80, 0.08); }
.quote-edit .tg { background: #1d2029; font-size: 11px; color: #6b7080; letter-spacing: 2px; padding: 6px 12px 4px; border-top: 1px solid #20232e; }
.quote-edit .c-full { color: #6b7080; font-size: 11.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.quote-edit .c-prev { text-align: right; font-variant-numeric: tabular-nums; color: #8b90a0; }
.quote-edit .c-chg { text-align: right; font-variant-numeric: tabular-nums; color: #6b7080; }
.quote-edit .pin { width: 100%; background: #20232e; border: 1px solid #2b2f3c; border-radius: 6px; color: #cfd3dc; font-size: 13px; font-variant-numeric: tabular-nums; text-align: right; padding: 5px 9px; outline: none; transition: border-color 0.15s; }
.quote-edit .pin::placeholder { color: #4d5261; font-size: 11.5px; }
.quote-edit .pin:focus { border-color: #409eff; }
.quote-edit .pin.on { border-color: #3a4a63; color: #fff; }
.quote-edit .tr.bad .pin { border-color: #ef5350; }
.quote-edit .empty { padding: 26px; text-align: center; color: #6b7080; font-size: 12.5px; }
.quote-edit .disc { font-size: 12px; color: #6b7080; margin-top: 10px; line-height: 1.6; }

/* ==================== 采集监控（ingest.vue，浅色） ==================== */
.ingest-page {
  --ink: #151b27;
  --muted: #697386;
  --line: #e5e9f0;
  background: #f4f6f9;
  min-height: calc(100vh - 84px);
  padding: 12px;
}
.ingest-page .hero {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 26px 30px; color: #f7f9fc; border-radius: 12px;
  background:
    linear-gradient(115deg, rgba(13, 21, 35, .98), rgba(27, 46, 70, .96)),
    repeating-linear-gradient(90deg, transparent 0, transparent 39px, rgba(255,255,255,.03) 40px);
  box-shadow: 0 12px 34px rgba(21, 32, 49, .18);
}
.ingest-page .eyebrow { color: #65b7ff; font-size: 11px; font-weight: 700; letter-spacing: 2px; }
.ingest-page .hero h1 { margin: 7px 0 5px; font-size: 25px; font-weight: 650; }
.ingest-page .hero p { margin: 0; color: #aebbc9; font-size: 13px; }
.ingest-page .hero-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.ingest-page .status-alert { margin-top: 14px; }
.ingest-page .quality-panel { margin-top: 16px; }
.ingest-page .quality-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.ingest-page .quality-head b { display: block; color: var(--ink); font-size: 15px; }
.ingest-page .quality-head span { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; }
.ingest-page .quality-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }
.ingest-page .quality-summary > div { padding: 13px 14px; border: 1px solid var(--line); border-radius: 8px; background: #f8fafc; }
.ingest-page .quality-summary span, .ingest-page .quality-summary small { display: block; color: var(--muted); font-size: 12px; }
.ingest-page .quality-summary b { display: block; margin: 6px 0 3px; color: var(--ink); font-size: 18px; }
.ingest-page .quality-alert { margin-bottom: 14px; }
.ingest-page .freshness-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; margin: 16px 0; }
.ingest-page .fresh-card { padding: 17px 18px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
.ingest-page .fresh-card span, .ingest-page .fresh-card small { display: block; color: var(--muted); font-size: 12px; }
.ingest-page .fresh-card b { display: block; margin: 8px 0 5px; color: var(--ink); font-family: "DIN Alternate", "Roboto Mono", monospace; font-size: 17px; }
.ingest-page .panel { border: 1px solid var(--line); border-radius: 9px; }
.ingest-page .runs-panel { margin-top: 16px; }
.ingest-page .panel-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.ingest-page .panel-head b { display: block; color: var(--ink); font-size: 15px; }
.ingest-page .panel-head span { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; }
.ingest-page .manual-options { display: flex; align-items: center; gap: 8px; }
.ingest-page .manual-options .el-input-number { width: 88px; }
.ingest-page .manual-options .days-label { margin: 0; white-space: nowrap; }
.ingest-page .job-name { color: var(--ink); font-weight: 600; }
.ingest-page .job-code { margin-top: 3px; color: #8b95a7; font-family: "Roboto Mono", monospace; font-size: 11px; }
.ingest-page .error { color: #d64d4d; }
@media (max-width: 1000px) {
  .ingest-page .freshness-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ingest-page .quality-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ingest-page .panel-head { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 680px) {
  .ingest-page .hero { align-items: flex-start; flex-direction: column; }
  .ingest-page .freshness-grid { grid-template-columns: 1fr; }
  .ingest-page .quality-summary { grid-template-columns: 1fr; }
  .ingest-page .manual-options { align-items: flex-start; flex-wrap: wrap; }
}

/* ==================== 套利监控（monitor.vue + 子组件 spread-rev / apb） ==================== */
.arb-monitor { padding: 12px; }
.arb-monitor .am-card { background: #181b24; border-color: #181b24; }
.arb-monitor .am-card .el-card__body { padding: 14px 16px; }
.arb-monitor .am-card .flat { background: transparent; border: none; }
.arb-monitor .am-card .flat .el-card__body { padding: 0; }
.arb-monitor .msec { margin-top: 12px; padding-top: 12px; border-top: 1px solid #242833; }
.arb-monitor .am-card .flat.msec { border-top: 1px solid #242833; }
.arb-monitor .combo { display: flex; gap: 14px; align-items: stretch; flex-wrap: wrap; }
.arb-monitor .combo-main { flex: 1 1 640px; min-width: 0; }
.arb-monitor .am-card .flat.combo-side { flex: 0 0 330px; border-left: 1px solid #242833; padding-left: 14px; border-radius: 0; }
@media (max-width: 1500px) {
  .arb-monitor .am-card .flat.combo-side { flex: 1 1 100%; border-left: none; padding-left: 0; border-top: 1px solid #242833; padding-top: 12px; }
}
.arb-monitor .bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.arb-monitor .am-title { font-weight: 600; font-size: 15px; color: #cfd3dc; }
.arb-monitor .am-hint { font-size: 12px; font-weight: 400; color: #6b7080; margin-left: 10px; }
.arb-monitor .bar-right { display: flex; align-items: center; gap: 10px; }
.arb-monitor .upd { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: #8b90a0; }
.arb-monitor .upd.err { color: var(--el-color-warning); }
.arb-monitor .bc-row2 { display: grid; grid-template-columns: 2.2fr 1fr; gap: 10px; margin-top: 10px; }
.arb-monitor .bc { background: #20232e; border-radius: 8px; padding: 8px 11px; }
.arb-monitor .bc.on { outline: 1px solid #2b3a55; }
.arb-monitor .bc-l { font-size: 12px; color: #8b90a0; }
.arb-monitor .bc-v { font-size: 18px; font-weight: 700; margin-top: 6px; color: #cfd3dc; font-variant-numeric: tabular-nums; }
.arb-monitor .bc-v .up2 { color: #ef5350; }
.arb-monitor .bc-v .dn { color: #26a69a; }
.arb-monitor .bc-v.muted { color: #8b90a0; font-weight: 500; }
.arb-monitor .bc-s { font-size: 11px; color: #6b7080; margin-top: 5px; line-height: 1.6; }
.arb-monitor .gauge-card { display: flex; flex-direction: column; }
.arb-monitor .gc-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.arb-monitor .gc-l { font-size: 12px; color: #8b90a0; }
.arb-monitor .gc-v { font-size: 20px; font-weight: 700; color: #409eff; font-variant-numeric: tabular-nums; }
.arb-monitor .gc-sub { font-size: 11px; color: #6b7080; }
.arb-monitor .gauge { margin-top: 20px; padding: 0 4px 0; }
.arb-monitor .g-track { position: relative; height: 6px; border-radius: 3px; background: linear-gradient(90deg, rgba(38, 166, 154, 0.75), rgba(120, 126, 140, 0.3) 50%, rgba(239, 83, 80, 0.75)); }
.arb-monitor .g-mid { position: absolute; top: -4px; width: 2px; height: 14px; background: #8b90a0; transform: translateX(-50%); border-radius: 1px; }
.arb-monitor .g-dot { position: absolute; top: 50%; width: 14px; height: 14px; border-radius: 50%; background: #f0b90b; border: 2px solid #fff; transform: translate(-50%, -50%); box-shadow: 0 0 8px rgba(240, 185, 11, 0.8); }
.arb-monitor .g-val { position: absolute; bottom: 13px; left: 50%; transform: translateX(-50%); font-size: 12px; font-weight: 700; color: #f0b90b; white-space: nowrap; font-variant-numeric: tabular-nums; }
.arb-monitor .g-labels { position: relative; display: flex; justify-content: space-between; margin-top: 9px; font-size: 11px; color: #8b90a0; }
.arb-monitor .g-md { position: absolute; transform: translateX(-50%); }
.arb-monitor .g-lo { color: #5cc7b0; } .arb-monitor .g-hi { color: #ef8785; }
.arb-monitor .hist-err { padding: 24px; text-align: center; color: var(--el-color-warning); }
.arb-monitor .tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; padding: 7px 10px; background: #20232e; border-radius: 8px; }
.arb-monitor .ts-l { font-size: 12px; color: #8b90a0; }
.arb-monitor .ts-in { width: 58px; }
.arb-monitor .pd .el-radio-button__inner { background: #181b24; border-color: #2b2f3c; color: #8b90a0; }
.arb-monitor .pd .el-radio-button.is-active .el-radio-button__inner { background: var(--el-color-primary); border-color: var(--el-color-primary); color: #fff; }
.arb-monitor .tools .el-input__wrapper { background: #181b24; box-shadow: 0 0 0 1px #2b2f3c inset; }
.arb-monitor .tools .el-input__inner { color: #cfd3dc; }
.arb-monitor .sect { margin-top: 12px; }
.arb-monitor .disclaimer { margin-top: 12px; }

/* 价差分析子组件（spread-rev，嵌在 monitor 大卡内） */
.spread-rev { background: #181b24; border-color: #181b24; }
.spread-rev .bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.spread-rev .sect-title { font-weight: 600; font-size: 14px; color: #cfd3dc; }
.spread-rev .hint { font-size: 12px; color: #8b90a0; font-weight: 400; margin-left: 6px; }
.spread-rev .bar-right { display: flex; align-items: center; gap: 10px; }
.spread-rev .pd .el-radio-button__inner { background: #20232e; border-color: #2b2f3c; color: #8b90a0; }
.spread-rev .pd .el-radio-button.is-active .el-radio-button__inner { background: var(--el-color-primary); border-color: var(--el-color-primary); color: #fff; }
.spread-rev .body { display: flex; gap: 12px; margin-top: 8px; }
.spread-rev .pairs { width: 132px; flex-shrink: 0; border-right: 1px solid #242833; padding-right: 8px; }
.spread-rev .pairs-t { font-size: 12px; color: #cfd3dc; font-weight: 600; padding: 2px 6px 8px; }
.spread-rev .pg { margin-bottom: 10px; }
.spread-rev .pg-t { font-size: 11px; color: #6b7080; padding: 4px 6px; letter-spacing: 1px; }
.spread-rev .pi { padding: 7px 10px; border-radius: 7px; cursor: pointer; color: #a7abb8; margin-bottom: 3px; transition: background .15s, color .15s; white-space: nowrap; }
.spread-rev .pi:hover { background: #20232e; color: #cfd3dc; }
.spread-rev .pi.on { background: var(--el-color-primary); color: #fff; }
.spread-rev .pi-n { font-size: 13px; font-weight: 500; display: flex; align-items: center; justify-content: space-between; }
.spread-rev .pi-go { font-size: 11px; color: #409eff; opacity: 0; padding: 0 4px; border-radius: 4px; transition: opacity 0.15s; }
.spread-rev .pi:hover .pi-go, .spread-rev .pi.on .pi-go { opacity: 1; }
.spread-rev .pi-go:hover { background: rgba(64, 158, 255, 0.15); }
.spread-rev .pi.on .pi-go { color: #fff; }
.spread-rev .pi.on .pi-n { font-weight: 600; }
.spread-rev .pi-h { font-size: 10px; color: #6b7080; margin-top: 3px; }
.spread-rev .pi:hover .pi-h { color: #8b90a0; }
.spread-rev .pi.on .pi-h { color: rgba(255,255,255,0.8); }
.spread-rev .main { flex: 1; min-width: 0; }
.spread-rev .stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 8px; }
.spread-rev .st { background: #20232e; border-radius: 8px; padding: 7px 11px; }
.spread-rev .st-l { font-size: 12px; color: #8b90a0; }
.spread-rev .st-v { font-size: 17px; font-weight: 600; margin-top: 2px; color: #cfd3dc; font-variant-numeric: tabular-nums; }
.spread-rev .st-v.hi { color: #ef5350; } .spread-rev .st-v.lo { color: #26a69a; }
.spread-rev .hc-s { font-size: 12px; font-weight: 400; color: #8b90a0; margin-left: 4px; }
.spread-rev .signal { display: flex; align-items: center; gap: 8px; margin-top: 8px; padding: 7px 12px; border-radius: 8px; font-size: 13px; background: #20232e; color: #cfd3dc; }
.spread-rev .signal.hi { background: rgba(239,83,80,0.12); color: #ef8785; }
.spread-rev .signal.lo { background: rgba(38,166,154,0.12); color: #5cc7b0; }
.spread-rev .alert-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; padding: 7px 10px; background: #20232e; border-radius: 8px; }
.spread-rev .ab-l { font-size: 13px; color: #cfd3dc; font-weight: 500; }
.spread-rev .ab-t { font-size: 12px; color: #8b90a0; margin-left: 4px; }
.spread-rev .ab-num { width: 96px; }
.spread-rev .ab-wh { flex: 1; min-width: 220px; }
.spread-rev .ab-s { font-size: 12px; margin-left: 2px; }
.spread-rev .ab-s.ok { color: #5cc7b0; }
.spread-rev .ab-s.no { color: var(--el-color-warning); }
.spread-rev .err { padding: 24px; text-align: center; color: var(--el-color-warning); }
.spread-rev .chart { width: 100%; height: 760px; margin-top: 8px; }
.spread-rev .note { font-size: 12px; color: #8b90a0; margin-top: 5px; line-height: 1.5; }

/* 持仓台账子组件（apb） */
.apb { background: #181b24; border-color: #181b24; }
.apb .bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px; }
.apb .bar-btns { display: flex; align-items: center; gap: 6px; }
.apb .sect-title { font-weight: 600; font-size: 14px; color: #cfd3dc; }
.apb .apb-hint { font-size: 11px; color: #6b7080; font-weight: 400; margin-left: 8px; }
.apb .apb-sum { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-top: 10px; }
.apb .sm { background: #20232e; border-radius: 8px; padding: 7px 11px; }
.apb .sm span { font-size: 12px; color: #8b90a0; display: block; }
.apb .sm b { font-size: 18px; font-variant-numeric: tabular-nums; color: #cfd3dc; }
.apb .sm b.up { color: #ef5350; } .apb .sm b.down { color: #26a69a; }
.apb .apb-list { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.apb .batch { display: flex; flex-direction: column; align-items: stretch; gap: 5px; border: 1px solid #242833; border-radius: 10px; padding: 8px 10px; }
.apb .batch.closed { opacity: 0.55; background: #20232e; }
.apb .bt-l { display: flex; flex-direction: column; gap: 4px; }
.apb .bt-top { display: flex; align-items: center; gap: 8px; }
.apb .bt-pair { font-size: 12px; color: #cfd3dc; font-weight: 600; }
.apb .bt-tag { display: inline-block; width: fit-content; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 6px; }
.apb .bt-tag.short { background: rgba(38, 166, 154, 0.14); color: #5cc7b0; }
.apb .bt-tag.long { background: rgba(239, 83, 80, 0.14); color: #ef8785; }
.apb .bt-legs { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; color: #a7abb8; }
.apb .bt-time { font-size: 12px; color: #6b7080; }
.apb .bt-r { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.apb .bt-alert { display: flex; align-items: center; gap: 4px; width: 100%; }
.apb .ba-l { font-size: 12px; color: #8b90a0; }
.apb .ba-in { width: 84px; }
.apb .ba-on { font-size: 11px; color: #f0b90b; }
.apb .bt-alert .el-input__wrapper { background: #181b24; box-shadow: 0 0 0 1px #2b2f3c inset; }
.apb .bt-alert .el-input__inner { color: #cfd3dc; }
.apb .bt-pnl { font-size: 18px; font-weight: 600; font-variant-numeric: tabular-nums; color: #cfd3dc; }
.apb .bt-pnl.up { color: #ef5350; } .apb .bt-pnl.down { color: #26a69a; }
.apb .bt-st { font-size: 12px; color: #8b90a0; }
.apb .bt-tgt { font-size: 12px; color: #f0b90b; font-weight: 500; }
.apb .bt-stop { font-size: 12px; color: #ef8785; font-weight: 500; }
.apb .bt-ops { display: flex; align-items: center; gap: 4px; margin-top: 2px; }
.apb .apb-empty { margin-top: 10px; padding: 14px; text-align: center; font-size: 13px; color: #8b90a0; background: #20232e; border-radius: 8px; }
.apb .af { display: flex; flex-direction: column; gap: 14px; }
.apb .af-row { display: flex; align-items: center; gap: 8px; }
.apb .af-l { width: 76px; font-size: 13px; color: var(--el-text-color-regular); }
.apb .af-in { width: 66px; } .apb .af-in3 { width: 100px; }
.apb .af-u { font-size: 12px; color: var(--el-text-color-secondary); }
.apb .af-tip { font-size: 13px; color: var(--el-text-color-secondary); background: var(--el-fill-color-lighter); padding: 8px 12px; border-radius: 8px; }
.apb .af-pnl { font-size: 15px; font-weight: 600; }
.apb .af-pnl.up { color: var(--el-color-danger); } .apb .af-pnl.down { color: var(--el-color-success); }
.apb .al-st { font-size: 12px; }
.apb .al-st.ok { color: var(--el-color-success); }
.apb .al-st.err { color: var(--el-color-danger); }

/* ==================== 套利日历（calendar.vue） ==================== */
.cal-page { padding: 12px; background: #10131a; min-height: calc(100vh - 84px); }
.cal-page .qc-card { background: #181b24; border-radius: 10px; padding: 12px 16px; margin-bottom: 12px; }
.cal-page .head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.cal-page .h-title { font-size: 15px; font-weight: 600; color: #dfe3ec; margin-right: 12px; }
.cal-page .h-dir { font-size: 12px; color: #8a92a6; }
.cal-page .h-r { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cal-page .sel-l { font-size: 12px; color: #8a92a6; }
.cal-page .sel { width: 150px; }
.cal-page .upd { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: #e6a23c; border: 1px solid #4d4230; border-radius: 4px; padding: 1px 6px; }
.cal-page .core-grid { display: grid; grid-template-columns: 1fr 1.6fr 0.9fr 1.1fr 1fr; gap: 14px; }
.cal-page .cc-l { font-size: 12px; color: #8a92a6; }
.cal-page .cc-note { color: #5a6377; }
.cal-page .cc-v { font-size: 22px; font-weight: 600; color: #dfe3ec; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.cal-page .cc-v.up { color: #ef5350; } .cal-page .cc-v.down { color: #26a69a; } .cal-page .cc-v.amber { color: #e6a23c; } .cal-page .cc-v.ok { color: #dfe3ec; }
.cal-page .cc-s { font-size: 11px; color: #5a6377; }
.cal-page .thin-tag { color: #e6a23c; border: 1px solid #4d4230; border-radius: 4px; padding: 0 4px; margin-left: 6px; font-size: 10px; }
.cal-page .gauge { margin-top: 8px; }
.cal-page .g-bar { position: relative; height: 10px; border-radius: 5px; background: #232838; overflow: visible; }
.cal-page .g-seg { position: absolute; top: 0; height: 10px; }
.cal-page .g-seg.opp { left: 0; background: rgba(38,166,154,.45); border-radius: 5px 0 0 5px; }
.cal-page .g-seg.mid { background: rgba(90,99,119,.35); }
.cal-page .g-seg.top { background: rgba(239,83,80,.4); border-radius: 0 5px 5px 0; }
.cal-page .g-dot { position: absolute; top: -3px; width: 16px; height: 16px; border-radius: 50%; background: #e6a23c; border: 3px solid #10131a; transform: translateX(-8px); box-shadow: 0 0 6px rgba(230,162,60,.8); }
.cal-page .g-lbls { display: flex; justify-content: space-between; margin-top: 6px; font-size: 11px; }
.cal-page .g-lo { color: #5cc7b0; } .cal-page .g-hi { color: #ef8785; }
.cal-page .g-zone { font-weight: 600; }
.cal-page .g-zone.opp { color: #26a69a; } .cal-page .g-zone.mid { color: #8a92a6; } .cal-page .g-zone.top { color: #ef5350; }
.cal-page .chart { height: 430px; }
.cal-page .conv-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.cal-page .conv-right { display: flex; align-items: center; gap: 10px; }
.cal-page .strat-now { display: flex; align-items: center; gap: 10px; border-radius: 8px; padding: 10px 14px; margin-bottom: 10px; font-size: 13px; }
.cal-page .sn-tag { font-weight: 700; font-size: 14px; white-space: nowrap; }
.cal-page .sn-text { color: #dfe3ec; }
.cal-page .strat-now.z-heavy { background: rgba(239,83,80,.14); border: 1px solid rgba(239,83,80,.5); } .cal-page .z-heavy .sn-tag { color: #ef5350; }
.cal-page .strat-now.z-main { background: rgba(230,162,60,.12); border: 1px solid rgba(230,162,60,.5); } .cal-page .z-main .sn-tag { color: #e6a23c; }
.cal-page .strat-now.z-light { background: rgba(230,162,60,.07); border: 1px solid rgba(230,162,60,.3); } .cal-page .z-light .sn-tag { color: #e6a23c; }
.cal-page .strat-now.z-rev { background: rgba(92,199,176,.1); border: 1px solid rgba(92,199,176,.45); } .cal-page .z-rev .sn-tag { color: #5cc7b0; }
.cal-page .strat-now.z-none { background: #1d2230; border: 1px solid #2c3446; } .cal-page .z-none .sn-tag { color: #8a92a6; }
.cal-page .strat-now.z-stop { background: rgba(239,83,80,.2); border: 1px solid #ef5350; } .cal-page .z-stop .sn-tag { color: #ef5350; }
.cal-page .strat-rows { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; }
.cal-page .sr { border: 1px solid #2c3446; border-radius: 8px; padding: 10px 14px; opacity: .75; }
.cal-page .sr.on { opacity: 1; border-color: #4da3ff; background: rgba(77,163,255,.04); }
.cal-page .sr-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.cal-page .sr-legs { font-size: 13px; color: #dfe3ec; margin-bottom: 8px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-variant-numeric: tabular-nums; }
.cal-page .sr-legs b { color: #dfe3ec; }
.cal-page .tag-short { color: #26a69a; border: 1px solid rgba(38,166,154,.55); border-radius: 4px; padding: 0 5px; font-size: 12px; font-weight: 600; }
.cal-page .tag-long { color: #ef5350; border: 1px solid rgba(239,83,80,.55); border-radius: 4px; padding: 0 5px; font-size: 12px; font-weight: 600; }
.cal-page .legs-sp { margin-left: auto; font-size: 12px; color: #8a92a6; }
.cal-page .sr-close { font-size: 12px; color: #a8b0c2; margin-bottom: 8px; font-variant-numeric: tabular-nums; }
.cal-page .sr-close b { color: #4da3ff; }
.cal-page .sr-dir { font-size: 13px; font-weight: 600; color: #dfe3ec; }
.cal-page .sr-cond { font-size: 12px; color: #8a92a6; margin-bottom: 4px; }
.cal-page .sr-cond b, .cal-page .sr-stat b, .cal-page .sr-yield b { color: #e6a23c; }
.cal-page .zl { display: flex; flex-direction: column; gap: 4px; margin-bottom: 8px; }
.cal-page .zl-row { padding: 5px 8px; border: 1px solid #232838; border-radius: 6px; font-size: 12px; color: #8a92a6; }
.cal-page .zl-row.cur { border-color: #4da3ff; background: rgba(77,163,255,.1); color: #dfe3ec; }
.cal-page .zl-main, .cal-page .zl-head { display: grid; grid-template-columns: 48px 90px 1fr 44px 52px 62px 52px; gap: 8px; align-items: center; }
.cal-page .zl-win { font-variant-numeric: tabular-nums; white-space: nowrap; color: #5cc7b0; }
.cal-page .zl-head .zl-win { color: #5a6377; }
.cal-page .zl-row.cur .zl-win { font-weight: 700; }
.cal-page .zl-head { padding: 0 8px; font-size: 11px; color: #5a6377; }
.cal-page .zl-day, .cal-page .zl-money { font-variant-numeric: tabular-nums; white-space: nowrap; }
.cal-page .zl-money { color: #e6a23c; }
.cal-page .zl-row.cur .zl-money { font-weight: 700; }
.cal-page .zl-tag { font-weight: 600; }
.cal-page .t-heavy { color: #ef5350; } .cal-page .t-main { color: #e6a23c; } .cal-page .t-light { color: #d8b06a; }
.cal-page .t-rev { color: #5cc7b0; } .cal-page .t-watch { color: #8a92a6; } .cal-page .t-none { color: #8a92a6; } .cal-page .t-stop { color: #ef5350; }
.cal-page .zl-cond { font-variant-numeric: tabular-nums; }
.cal-page .zl-here { color: #4da3ff; font-weight: 700; white-space: nowrap; }
.cal-page .sr-note { font-size: 12px; color: #a8b0c2; background: rgba(44,52,70,.4); border-radius: 6px; padding: 6px 10px; margin-bottom: 6px; line-height: 1.6; }
.cal-page .sr-note b { color: #dfe3ec; }
.cal-page .sr-yield { font-size: 12px; color: #8a92a6; margin-bottom: 4px; }
.cal-page .sr-stat { font-size: 11px; color: #5a6377; }
@media (max-width: 900px) { .cal-page .strat-rows { grid-template-columns: 1fr; } }
.cal-page .conv-t { font-size: 14px; font-weight: 600; color: #dfe3ec; }
.cal-page .conv-sub { font-size: 11px; font-weight: 400; color: #5a6377; margin-left: 10px; }
.cal-page .conv-prog { font-size: 12px; color: #e6a23c; }
.cal-page .conv-grid { display: grid; grid-template-columns: 1fr 1.3fr; gap: 14px; margin-bottom: 10px; }
.cal-page .conv-chart { height: 300px; }
.cal-page .conv-note { font-size: 11px; color: #5a6377; margin-top: 6px; }
.cal-page .cfg-row { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; font-size: 12px; color: #8a92a6; }
.cal-page .cfg-in { width: 70px; }
.cal-page .cfg-i { display: inline-flex; align-items: center; gap: 6px; }
.cal-page .cfg-i.wx { margin-left: auto; }
.cal-page .amber { color: #e6a23c; }
.cal-page .disclaimer { font-size: 11px; color: #5a6377; padding: 0 4px 8px; }
.cal-page .el-select .el-input__wrapper { background: #10131a; box-shadow: 0 0 0 1px #2c3446 inset; }
.cal-page .el-select .el-input__inner { color: #dfe3ec; }
.cal-page .el-input-number .el-input__wrapper { background: #10131a; box-shadow: 0 0 0 1px #2c3446 inset; }
.cal-page .el-input-number .el-input__inner { color: #dfe3ec; }


/* ============ 阶段5 套保模块（浅色 Element 主题，照 ERP scoped CSS 加页面前缀） ============ */

/* —— 基差作战台 hedge-basis（ERP views/hedge/basis.vue） —— */
.hedge-basis { padding: 4px; }
.hedge-basis .bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.hedge-basis .title { font-weight: 600; font-size: 15px; }
.hedge-basis .sub-hint { font-size: 12px; font-weight: 400; color: var(--el-text-color-placeholder); margin-left: 10px; }
.hedge-basis .sect-title { font-weight: 600; font-size: 14px; }
.hedge-basis .bar-right { display: flex; align-items: center; gap: 8px; }
.hedge-basis .upd { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--el-text-color-secondary); }
.hedge-basis .equities { display: grid; grid-template-columns: 1fr 1fr 1.15fr; gap: 14px; margin-top: 14px; }
.hedge-basis .eq { border: 1px solid var(--el-border-color-lighter); border-radius: 10px; padding: 12px 16px; }
.hedge-basis .eq.core { border-color: var(--el-color-primary); background: var(--el-color-primary-light-9); }
.hedge-basis .eq-l { font-size: 12px; color: var(--el-text-color-secondary); }
.hedge-basis .eq-tip { color: var(--el-text-color-placeholder); }
.hedge-basis .eq-v { font-size: 24px; font-weight: 600; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.hedge-basis .eq-v.up { color: var(--el-color-danger); } .hedge-basis .eq-v.down { color: var(--el-color-success); }
.hedge-basis .eq-v.accent { color: var(--el-color-primary); }
.hedge-basis .eq-s { font-size: 12px; color: var(--el-text-color-placeholder); }
.hedge-basis .rt-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--el-border-color-lighter); }
.hedge-basis .rt { display: flex; align-items: center; justify-content: space-between; font-size: 13px; }
.hedge-basis .rt span { color: var(--el-text-color-secondary); }
.hedge-basis .rt b { font-variant-numeric: tabular-nums; }
.hedge-basis .rt b.up { color: var(--el-color-danger); } .hedge-basis .rt b.down { color: var(--el-color-success); } .hedge-basis .rt b.warn { color: var(--el-color-warning); }
.hedge-basis .rt-in { width: 110px; }
.hedge-basis .sect { margin-top: 12px; }
.hedge-basis .empty { margin-top: 12px; padding: 18px; text-align: center; font-size: 13px; color: var(--el-text-color-secondary); background: var(--el-fill-color-lighter); border-radius: 8px; }
.hedge-basis .accent { color: var(--el-color-primary); font-weight: 500; }
.hedge-basis .up { color: var(--el-color-danger); } .hedge-basis .down { color: var(--el-color-success); }
.hedge-basis .disclaimer { margin-top: 12px; }

/* —— 建仓单 新建/编辑 hb-form（ERP views/hedge/basis-form.vue） —— */
.hb-form { padding: 4px; }
.hb-form .bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.hb-form .bar-l { display: flex; align-items: center; gap: 10px; }
.hb-form .bar-r { display: flex; align-items: center; gap: 8px; }
.hb-form .title { font-weight: 600; font-size: 15px; }
.hb-form .upd { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--el-text-color-secondary); margin-right: 6px; }
.hb-form .legs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
.hb-form .leg-t { font-weight: 600; font-size: 14px; margin-bottom: 14px; padding-left: 8px; border-left: 3px solid; }
.hb-form .leg-t.spot { border-color: var(--el-color-warning); }
.hb-form .leg-t.fut { border-color: var(--el-color-primary); }
.hb-form .fr { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; }
.hb-form .fr:last-child { margin-bottom: 0; }
.hb-form .fl { width: 58px; font-size: 13px; color: var(--el-text-color-regular); flex: none; }
.hb-form .fi { width: 140px; }
.hb-form .fu { font-size: 12px; color: var(--el-text-color-secondary); }
.hb-form .fv { font-size: 13px; }
.hb-form .muted-row { font-size: 12px; color: var(--el-text-color-placeholder); background: var(--el-fill-color-lighter); border-radius: 6px; padding: 8px 10px; }
.hb-form .calc { margin-top: 12px; }
.hb-form .calc-t { font-weight: 600; font-size: 13px; margin-bottom: 10px; }
.hb-form .calc-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.hb-form .ci { border: 1px solid var(--el-border-color-lighter); border-radius: 10px; padding: 10px 14px; }
.hb-form .ci-l { font-size: 12px; color: var(--el-text-color-secondary); }
.hb-form .ci-v { font-size: 20px; font-weight: 600; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.hb-form .ci-v.up { color: var(--el-color-danger); } .hb-form .ci-v.down { color: var(--el-color-success); }
.hb-form .ci-v.ok { color: var(--el-color-success); } .hb-form .ci-v.warn { color: var(--el-color-warning); font-size: 16px; }
.hb-form .ci-s { font-size: 12px; color: var(--el-text-color-placeholder); }
@media (max-width: 900px) { .hb-form .legs, .hb-form .calc-grid { grid-template-columns: 1fr; } }

/* —— 建仓单详情 hb-view（ERP views/hedge/basis-view.vue） —— */
.hb-view { padding: 4px; }
.hb-view .bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.hb-view .bar-l { display: flex; align-items: center; gap: 10px; }
.hb-view .bar-r { display: flex; align-items: center; gap: 6px; }
.hb-view .title { font-weight: 600; font-size: 15px; }
.hb-view .sect { margin-top: 12px; }
.hb-view .sect-title { font-weight: 600; font-size: 14px; }
.hb-view .muted { color: var(--el-text-color-placeholder); font-size: 12px; }
.hb-view .accent { color: var(--el-color-primary); font-weight: 600; }
.hb-view .up { color: var(--el-color-danger); } .hb-view .down { color: var(--el-color-success); }
.hb-view .done-tag { font-size: 12px; color: var(--el-color-success); }
.hb-view .term-t { color: var(--el-color-warning); font-size: 12px; }
.hb-view .empty { padding: 18px; text-align: center; font-size: 13px; color: var(--el-text-color-secondary); background: var(--el-fill-color-lighter); border-radius: 8px; margin-top: 8px; }
.hb-view .log { max-height: 200px; overflow-y: auto; }
.hb-view .log-i { font-size: 12px; color: var(--el-text-color-regular); padding: 3px 0; }
.hb-view .log-t { color: var(--el-text-color-placeholder); margin-right: 8px; font-variant-numeric: tabular-nums; }
.hb-view .log-n { color: var(--el-text-color-placeholder); }
.hb-view .af { display: flex; flex-direction: column; gap: 12px; }
.hb-view .af-row { display: flex; align-items: center; gap: 8px; }
.hb-view .af-l { width: 60px; font-size: 13px; color: var(--el-text-color-regular); }
.hb-view .af-in { width: 76px; } .hb-view .af-in3 { width: 100px; }
.hb-view .af-u { font-size: 12px; color: var(--el-text-color-secondary); }
.hb-view .af-tip { display: flex; align-items: center; gap: 10px; }
.hb-view .af-pnl { font-size: 14px; font-weight: 600; }
.hb-view .af-pnl.up { color: var(--el-color-danger); } .hb-view .af-pnl.down { color: var(--el-color-success); }

/* —— 套保账本 hedge-book（ERP views/hedge/book.vue） —— */
.hedge-book { padding: 4px; }
.hedge-book .bar { display: flex; align-items: center; justify-content: space-between; }
.hedge-book .title { font-weight: 600; font-size: 15px; }
.hedge-book .sub-hint { font-size: 12px; font-weight: 400; color: var(--el-text-color-placeholder); margin-left: 10px; }
.hedge-book .tabs { margin-top: 6px; }
.hedge-book .cards { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; margin: 10px 0 4px; }
.hedge-book .sc { border: 1px solid var(--el-border-color-lighter); border-radius: 10px; padding: 10px 14px; }
.hedge-book .sc.ok { border-color: var(--el-color-success); background: var(--el-color-success-light-9); }
.hedge-book .sc.bad { border-color: var(--el-color-danger); background: var(--el-color-danger-light-9); }
.hedge-book .sc-l { font-size: 12px; color: var(--el-text-color-secondary); }
.hedge-book .sc-v { font-size: 20px; font-weight: 600; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.hedge-book .sc-u { font-size: 12px; font-weight: 400; color: var(--el-text-color-secondary); margin-left: 3px; }
.hedge-book .sc-v.up { color: var(--el-color-danger); } .hedge-book .sc-v.down { color: var(--el-color-success); } .hedge-book .sc-v.accent { color: var(--el-color-primary); }
.hedge-book .sc-s { font-size: 12px; color: var(--el-text-color-placeholder); }
.hedge-book .sec-t { font-weight: 600; font-size: 13px; margin: 16px 0 8px; }
.hedge-book .bar2 { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 10px 0; }
.hedge-book .hint { font-size: 12px; color: var(--el-text-color-placeholder); }
.hedge-book .stmt { font-size: 12px; color: var(--el-text-color-secondary); display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
.hedge-book .ok-t { color: var(--el-color-success); } .hedge-book .bad-t { color: var(--el-color-danger); }
.hedge-book .up { color: var(--el-color-danger); } .hedge-book .down { color: var(--el-color-success); }
.hedge-book .empty { padding: 18px; text-align: center; font-size: 13px; color: var(--el-text-color-secondary); background: var(--el-fill-color-lighter); border-radius: 8px; }
.hedge-book .af { display: flex; flex-direction: column; gap: 12px; }
.hedge-book .af-row { display: flex; align-items: center; gap: 8px; }
.hedge-book .af-l { width: 46px; font-size: 13px; color: var(--el-text-color-regular); }
.hedge-book .af-u { font-size: 12px; color: var(--el-text-color-secondary); }
.hedge-book .done-row { background: var(--el-color-success-light-9); }

/* —— 期货行情页 套保持仓浮窗（ERP views/quotes/futures.vue hd-* 段，深色跟随 .fq-page） —— */
.fq-page .hd-fab { position: fixed; right: 0; top: 42%; z-index: 30; background: #1d2230; border: 1px solid #4da3ff; border-right: none; color: #4da3ff; font-size: 12px; font-weight: 600; padding: 10px 8px; border-radius: 8px 0 0 8px; cursor: pointer; writing-mode: vertical-rl; letter-spacing: 2px; }
.fq-page .hd-fab:hover { background: rgba(77,163,255,.15); }
.fq-page .hd-n { display: inline-block; writing-mode: horizontal-tb; background: #ef5350; color: #fff; border-radius: 8px; font-size: 10px; padding: 0 5px; margin-top: 6px; }
.fq-page .hd-panel { position: fixed; z-index: 40; width: 360px; max-height: 72vh; display: flex; flex-direction: column; background: #141824; border: 1px solid #2c3446; border-radius: 10px; box-shadow: 0 8px 30px rgba(0,0,0,.5); }
.fq-page .hd-head { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid #232838; cursor: move; user-select: none; }
.fq-page .hd-title { font-size: 13px; font-weight: 600; color: #dfe3ec; flex: 1; }
.fq-page .hd-btn { width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; border-radius: 4px; color: #8a92a6; cursor: pointer; font-size: 13px; }
.fq-page .hd-btn:hover { background: #2c3446; color: #dfe3ec; }
.fq-page .hd-body { padding: 10px 14px; overflow-y: auto; }
.fq-page .hd-mini { position: fixed; z-index: 40; display: flex; align-items: center; gap: 8px; background: #141824; border: 1px solid #2c3446; border-radius: 20px; padding: 6px 12px; box-shadow: 0 4px 16px rgba(0,0,0,.5); cursor: move; user-select: none; font-size: 12px; }
.fq-page .hd-mini-t { color: #8a92a6; }
.fq-page .hd-mini b { font-variant-numeric: tabular-nums; }
.fq-page .hd-sum { display: flex; justify-content: space-between; font-size: 13px; color: #8a92a6; padding: 8px 12px; background: #1a1e29; border-radius: 8px; margin-bottom: 10px; }
.fq-page .hd-sum b { color: #dfe3ec; font-variant-numeric: tabular-nums; }
.fq-page .hd-card { border: 1px solid #232838; border-radius: 8px; padding: 8px 12px; margin-bottom: 8px; cursor: pointer; }
.fq-page .hd-card:hover { border-color: #4da3ff; }
.fq-page .hd-h { display: flex; align-items: center; gap: 8px; color: #dfe3ec; font-size: 13px; }
.fq-page .hd-code { color: #e6a23c; font-size: 12px; }
.fq-page .hd-px { margin-left: auto; color: #8a92a6; font-size: 12px; font-variant-numeric: tabular-nums; }
.fq-page .hd-l { font-size: 12px; color: #8a92a6; margin-top: 3px; font-variant-numeric: tabular-nums; }
.fq-page .hd-l b { font-weight: 600; }
.fq-page .hd-cost { color: #4da3ff; }
.fq-page .hd-l b.up, .fq-page .hd-sum b.up, .fq-page .hd-mini b.up { color: #ef5350; }
.fq-page .hd-l b.down, .fq-page .hd-sum b.down, .fq-page .hd-mini b.down { color: #26a69a; }
.fq-page .hd-tip { font-size: 11px; color: #5a6377; margin-top: 6px; }
.fq-page .hd-empty { color: #5a6377; font-size: 13px; padding: 20px 0; text-align: center; }

/* 合并页壳:报价系统 iframe 页(占满内容区,el-header 高 60px) */
.quote-frame { display: block; width: 100%; height: 100%; min-height: calc(100vh - 60px); border: 0; background: #fff; }

/* ==================== 报价系统（开单网格/参数/记录，移植老 public/style.css，变量已内联） ==================== */
.qg-page { padding: 10px; display: flex; flex-direction: column; gap: 10px; }
.qg-grid-card .el-card__body { padding: 10px; }
.qg-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.qg-title { font-size: 15px; font-weight: 700; color: #1b3a5c; }
.qg-wrap { position: relative; overflow-x: auto; border: 1px solid #d9dee5; border-radius: 4px; }
.qg-table { border-collapse: collapse; font-size: 12.5px; table-layout: fixed; } /* 定宽列(宽度见表头内联),容器横向滚动兜底,不挤压变形 */
.qg-table th {
  background: #1b4266; color: #dce8f5; font-weight: 600; white-space: nowrap;
  padding: 6px; border: 1px solid #2a5a86; font-size: 12px; box-sizing: border-box; /* 列宽=COLS.w 精确生效 */
  position: sticky; top: 0; z-index: 2;
}
.qg-table th.out { background: #4a6a8a; }
.qg-table td { border: 1px solid #d9dee5; padding: 0; background: #fff; height: 30px; box-sizing: border-box; vertical-align: middle; } /* 行高固定30,middle 对齐防基线撑高 */
.qg-table td.out { background: #f2f6fa; color: #2b3c50; padding: 5px 6px; white-space: nowrap; font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }
.qg-table td.out.detail { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qg-table td.status { min-width: 70px; max-width: 130px; padding: 5px 6px; font-size: 12px; color: #1e7d46; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qg-table td.status.warn { color: #c03535; font-weight: 600; cursor: help; }
.qg-table td.status.miss { color: #c03535; font-weight: 700; cursor: help; } /* 一级缺项（红，阻断报价） */
.qg-table td.status.suggest { color: #b8860b; font-weight: 600; cursor: help; } /* 二级建议（黄，不阻断） */
.qg-table td.ops { padding: 2px 4px; white-space: nowrap; text-align: center; }
.qg-table td.num { text-align: right; }
.qg-table td .price-err { color: #c03535; font-weight: 700; }
/* 编辑浮层:绝对定位覆盖目标格,不进文档流(行高零变化);字号/行高/内边距与 .cell-view 完全一致 */
.qg-wrap input.cell-float {
  position: absolute; z-index: 5; box-sizing: border-box;
  border: none; outline: none; padding: 4px 6px; font-size: 12.5px; line-height: 20px;
  background: #fff; font-family: inherit;
}
.qg-wrap input.cell-float:focus { background: #fff8e1; box-shadow: inset 0 0 0 2px #1f5fa8; }
.qg-wrap input.cell-float.bad { background: #fdeaea; color: #c0392b; font-weight: 600; box-shadow: inset 0 0 0 1.5px #e5a0a0; }
.qg-wrap input.cell-float.bad:focus { background: #fdeaea; box-shadow: inset 0 0 0 2px #c03535; }
.qg-wrap input.cell-float.num { text-align: right; }
.qg-wrap input.cell-float[type=number]::-webkit-outer-spin-button,
.qg-wrap input.cell-float[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.qg-hint { margin-top: 8px; font-size: 12px; color: #7a8694; }

/* 行操作小按钮（复/删） */
.qg-table .btn { height: 22px; padding: 0 7px; font-size: 12px; border: 1px solid #d9dee5; border-radius: 3px; background: #fff; color: #45505c; cursor: pointer; }
.qg-table .btn:hover { border-color: #1f5fa8; color: #1f5fa8; }
.qg-table .btn.danger:hover { border-color: #c03535; color: #c03535; }

/* chip 弹层（五色） */
.chip-pop {
  position: fixed; z-index: 3000; background: #fff; border: 1px solid #d9dee5;
  border-radius: 5px; box-shadow: 0 6px 18px rgba(20,40,60,.22); padding: 6px;
  display: flex; flex-direction: column; gap: 4px; min-width: 90px;
}
.chip-opt {
  padding: 5px 14px; border-radius: 12px; font-size: 12.5px; cursor: pointer;
  text-align: center; font-weight: 600; border: 1px solid transparent;
}
.chip-opt:hover { filter: brightness(.94); }
.chip-c-blue { background: #e3eefb; color: #1f5fa8; border-color: #b9d2ec; }
.chip-c-green { background: #e4f4ea; color: #1e7d46; border-color: #bfe3cd; }
.chip-c-orange { background: #fdefe0; color: #a8620e; border-color: #f0d3a8; }
.chip-c-gray { background: #eef1f4; color: #45505c; border-color: #d4dbe2; }
.chip-c-purple { background: #efe8f8; color: #6a3fa8; border-color: #d8c8ee; }

/* link 格下拉面板（产地/加工/贴膜/包装/喷码，格下展开） */
.qk-drop {
  position: fixed; z-index: 3000; background: #fff; border: 1px solid #d9dee5;
  border-radius: 5px; box-shadow: 0 6px 18px rgba(20,40,60,.22);
  display: flex; flex-direction: column; overflow: hidden;
}
.qk-drop.up { transform: translateY(-100%); } /* 下缘不够时向上展开 */
.qk-drop-title { padding: 6px 10px 2px; font-size: 11.5px; color: #7a8694; }
.qk-drop-search { margin: 6px; padding: 5px 8px; font-size: 12.5px; border: 1px solid #d9dee5; border-radius: 4px; outline: none; font-family: inherit; }
.qk-drop-search:focus { border-color: #2f6df6; }
.qk-drop-list { max-height: 250px; overflow-y: auto; padding: 2px; }
.qk-drop-opt { display: flex; align-items: baseline; gap: 8px; padding: 4px 8px; border-radius: 3px; font-size: 12.5px; cursor: pointer; white-space: nowrap; }
.qk-drop-opt:hover { background: #eef3f9; }
.qk-drop-opt.clear { color: #7a8694; font-style: italic; }
.qk-drop-val { flex: none; }
.qk-drop-aux { color: #8a94a0; font-size: 11px; overflow: hidden; text-overflow: ellipsis; }
.qk-drop-empty { padding: 10px; color: #9aa4ae; font-size: 12px; text-align: center; }
/* 加工处理分组标题（第一段·基础加工 / 第二段·电镀 / 第三段·无指纹 / 组合工艺） */
.qk-drop-group { padding: 5px 8px 2px; font-size: 11px; color: #7a8694; font-weight: 600; background: #f6f8fa; position: sticky; top: 0; }
.qk-drop-new { margin-left: 4px; font-size: 10.5px; color: #9aa5b1; border: 1px solid #dfe3e8; border-radius: 3px; padding: 0 3px; }
.qk-drop-opt.dis { opacity: .42; cursor: not-allowed; } /* 2026-08-16 规格超限工艺置灰 */

/* 表面加工影子成本行（surface_shadow，2026-08-15） */
.qg-table tr.shadow-row td { background: #fbfcfe; padding: 3px 10px 5px; font-size: 12px; border-top: none; }
.qg-shadow-line { color: #44505e; }
.qg-shadow-line.neg { color: #d03030; font-weight: 600; } /* 毛利<0 整行红 */
.qg-shadow-line.low { color: #b8860b; } /* 毛利 0-15% 黄 */
.qg-shadow-rules { margin-left: 8px; color: #9aa5b1; font-size: 11px; cursor: help; }
.qg-shadow-check { color: #d03030; font-size: 12px; }
.qg-shadow-check.fatal { font-weight: 700; font-size: 12.5px; } /* 「无成本参考，禁止报价」醒目红 */

/* 参数管理 · film.film_width 多选弹层（2026-08-15） */
.fw-cell { cursor: pointer; border: 1px dashed #c7d0da; border-radius: 4px; padding: 3px 6px; font-size: 12.5px; color: #33404e; min-height: 20px; }
.fw-cell:hover { border-color: #2f6df6; background: #f0f6ff; }
.fw-mask { position: fixed; inset: 0; z-index: 3000; }
.fw-pop { position: fixed; width: 264px; background: #fff; border: 1px solid #d9dee5; border-radius: 6px; box-shadow: 0 6px 18px rgba(20,40,60,.22); padding: 10px 12px; display: flex; flex-direction: column; gap: 6px; }
.fw-title { font-size: 12px; color: #7a8694; }
.fw-opt { display: flex; align-items: center; gap: 6px; font-size: 13px; cursor: pointer; }
.fw-custom { display: flex; gap: 6px; }
.fw-custom input { flex: 1; min-width: 0; padding: 4px 6px; font-size: 12.5px; border: 1px solid #d9dee5; border-radius: 4px; outline: none; font-family: inherit; }
.fw-custom input:focus { border-color: #2f6df6; }
.fw-btn { padding: 4px 10px; font-size: 12.5px; border: 1px solid #d9dee5; border-radius: 4px; background: #fff; cursor: pointer; }
.fw-btn.primary { background: #2f6df6; border-color: #2f6df6; color: #fff; }
.fw-custom-specs { display: flex; flex-wrap: wrap; gap: 5px; }
.fw-chip { font-size: 12px; color: #1a73e8; background: #e8f0fe; border-radius: 3px; padding: 1px 7px; cursor: pointer; }
.fw-cur { font-size: 12px; color: #7a8694; }

/* 底部空行（点击新增） */
.ghost-row td { text-align: center; color: #9aa5b1; background: #fbfcfe; border-top: 1px dashed #d5dce4; cursor: pointer; font-size: 12.5px; padding: 7px 4px; user-select: none; }
.ghost-row:hover td { color: #2f6df6; background: #f0f6ff; }

/* Excel 式框选（行号格为拖动手柄） */
.qg-wrap:focus { outline: none; }
.qg-table td.row-no { cursor: cell; user-select: none; color: #7a8694; }
.qg-table td.row-no:hover { background: #eef3f9; color: #2f6df6; }
.qg-table td.row-no.sel-row { background: #dbe7f5; color: #1f5fa8; font-weight: 700; }
.qg-table td.sel { background: rgba(47, 109, 246, .13); box-shadow: inset 0 0 0 1px rgba(47, 109, 246, .30); }
.qg-table.sel-dragging, .qg-table.sel-dragging .cell-view { user-select: none; cursor: cell; }

/* Excel 式「先选中、后编辑」的格内容视图（非编辑态渲染） */
.qg-table .cell-view {
  width: 100%; height: 28px; padding: 4px 6px; font-size: 12.5px; line-height: 20px;
  cursor: cell; user-select: none; -webkit-user-select: none;
  overflow: hidden; white-space: nowrap; box-sizing: border-box;
}
.qg-table td.num .cell-view { text-align: right; font-variant-numeric: tabular-nums; }
.qg-table .cell-view.disabled { background: #eceff2; color: #9aa4ae; }
.qg-table .cell-view.bad { background: #fdeaea; color: #c0392b; font-weight: 600; box-shadow: inset 0 0 0 1.5px #e5a0a0; }
.qg-table .cell-view.sel { background: rgba(47, 109, 246, .12); }
.qg-table .cell-view.cur { box-shadow: inset 0 0 0 2px #2f6df6; background: #fff; }
.qg-table .cell-view .mini-chip { margin: 0; }

/* 整单区 */
.qg-order-card .el-card__body { padding: 12px 16px; }
.qg-order-row { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.qg-order-customer { display: flex; align-items: center; font-size: 13px; color: #455160; }
.qg-order-stat { display: flex; flex-direction: column; gap: 2px; }
.qg-order-stat .ol { font-size: 12px; color: #7a8694; }
.qg-order-stat .ov { font-size: 20px; font-weight: 700; color: #1b3a5c; font-variant-numeric: tabular-nums; }
.qg-order-stat .ov.money { color: #b3541e; }

/* 参数管理编辑表 */
.qp-table { border-collapse: collapse; font-size: 12.5px; min-width: 100%; }
.qp-table th { background: #f2f6fa; color: #2b3c50; padding: 6px 8px; border: 1px solid #d9dee5; white-space: nowrap; text-align: left; }
.qp-table td { border: 1px solid #d9dee5; padding: 0; }
.qp-table tr.dirty td { background: #fff8e1; }
.qp-table input, .qp-table select { width: 100%; border: none; outline: none; padding: 5px 6px; font-size: 12.5px; background: transparent; font-family: inherit; }
.qp-table input:focus, .qp-table select:focus { background: #fff8e1; box-shadow: inset 0 0 0 2px #1f5fa8; }

/* 报价记录展开明细 */
.qr-detail { padding: 4px 8px; }
.qr-detail .items-caption { font-weight: 700; color: #1b3a5c; margin: 4px 0; font-size: 12.5px; }
.qr-detail .items-table { border-collapse: collapse; font-size: 12.5px; margin: 4px 0; }
.qr-detail .items-table th { background: #f2f6fa; color: #2b3c50; padding: 5px 8px; border: 1px solid #d9dee5; white-space: nowrap; text-align: left; }
.qr-detail .items-table td { padding: 5px 8px; border: 1px solid #d9dee5; }
.qr-detail .items-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.qr-detail pre { font-size: 12px; background: #f7f9fb; padding: 8px; border-radius: 4px; overflow: auto; }

/* 现货编辑 · 报价基价映射区 */
.map-card { margin-top: 14px; }
.map-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.map-tip { font-size: 12px; color: #7a8694; flex: 1; }
.map-tbl .tr { display: grid; grid-template-columns: 34px 2fr .65fr .65fr .8fr .65fr .65fr .9fr .95fr .75fr .9fr 1fr; align-items: center; border-bottom: 1px solid #eef1f4; font-size: 12.5px; }
.map-tbl .m-seq { color: #9aa3ad; font-size: 11.5px; text-align: right; font-variant-numeric: tabular-nums; }
.ef-preview { margin-top: 12px; padding: 8px 12px; background: #f2f6fa; border-radius: 6px; font-size: 12.5px; color: #1b3a5c; font-weight: 600; }
.map-tbl .tr.th { background: #f2f6fa; color: #2b3c50; font-weight: 600; }
.map-tbl .tr > span { padding: 5px 8px; }
.map-tbl .m-num { text-align: right; font-variant-numeric: tabular-nums; }
.map-tbl .m-tag { margin-left: 6px; }
.map-tbl .map-base { font-weight: 700; color: #1b3a5c; }
.map-tbl .adj-pin { width: 64px; text-align: right; border: 1px solid #d9dee5; border-radius: 4px; padding: 3px 6px; font-size: 12.5px; }
.map-tbl .adj-pin:focus { outline: none; border-color: #1f5fa8; }
.mf { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.mf label { display: flex; flex-direction: column; font-size: 12.5px; color: #455160; gap: 4px; }
.mf input { border: 1px solid #d9dee5; border-radius: 4px; padding: 6px 8px; font-size: 13px; }
.mf-tip { margin-top: 10px; font-size: 12px; color: #7a8694; }

/* 接单模式徽章（报价明细标题栏，2026-08-16 三档模式） */
.stance-badge { font-size: 12px; padding: 2px 10px; border-radius: 10px; margin-left: 4px; font-weight: 400; }
.stance-standard { background: #e8f5e9; color: #2e7d32; }
.stance-grab { background: #fff3e0; color: #e65100; }
.stance-full { background: #ffebee; color: #c62828; }

/* 参数管理·厚度表：组间分隔线（材质+表面+产地+宽度 变化处，2026-08-16） */
.qp-table tr.grp-start td { border-top: 2px solid #b8c4d4; }
