/* 交易系统监控 · strategyOS 范式重构 */
/* 字号规范（标题档整体下调 2px）：20=KPI数值 / 16=H1主标题 / 14=H2区块标题(粗) / 14=正文 / 12=副标题·标签·小字 */
/* 字距规范：标题 0.3px / 大写标签 0.5px / 其余 0 */
/* 灰色规范（统一 slate 家族，全站只此三档）：text=#334155主文字(柔和非纯黑) / text-2=#64748b次级(标签·副标题·表头·正文灰) / text-3=#94a3b8三级(时间戳·单位·辅助)；深色侧栏同家族取更亮档 */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&family=Noto+Sans+SC:wght@400;500;600;700;800;900&display=swap');

:root{
  --bg:#101828; --canvas:#16203c;
  --surface:#1c2950; --surface-2:#26345e; --surface-3:#26345e;
  --border:#2a416c; --border-2:#2a416c;
  --text:#e8f0fe; --text-2:#94a3b8; --text-3:#64748b;
  --brand:#4a7cf7; --brand-d:#3a6be0; --brand-soft:rgba(74,124,247,.14);
  --accent2:#64b5f6;
  --green:#34d399; --green-d:#34d399; --green-soft:rgba(52,211,153,.14);
  --red:#f87171; --red-d:#f87171; --red-soft:rgba(248,113,113,.14);
  --amber:#fbbf24; --amber-soft:rgba(251,191,36,.14);
  --orange:#fb923c; --grey:#94a3b8;
  --shadow:0 2px 12px rgba(0,0,0,.35);
  --radius:10px; --radius-sm:8px;
}

*{ margin:0; padding:0; box-sizing:border-box; }

/* 数学符号字体回退: Gotham 缺 ±/≈/√/≤/≥ 字形(渲染成连字乱码), 这些码位强制走系统字体, 其余不受影响 */
@font-face{
  font-family:'SymbolSafe';
  src:local('Helvetica Neue'), local('Arial'), local('PingFang SC');
  unicode-range:U+00B1, U+2248, U+221A, U+2264-2265, U+00D7, U+2715;
}
@font-face{
  font-family:'SymbolSafe';
  font-weight:bold;
  src:local('Helvetica Neue Bold'), local('Arial Bold'), local('PingFang SC Semibold');
  unicode-range:U+00B1, U+2248, U+221A, U+2264-2265, U+00D7, U+2715;
}

/* 回弹(overscroll)露出区域分两色：左 224px=侧栏深色 #070d1c，右=浅色主区 #eef1f6，与各自背景一致 */
/* 用 repeat 让左右渐变平铺整个画布(含上下回弹区)；fixed/no-repeat 会让回弹区只显示纯色，导致侧栏侧露白 */
html{
  background:linear-gradient(to right, #070d1c 0, #070d1c 224px, #eef1f6 224px) repeat;
}
/* 隐藏页面最右侧滚动条（仍可正常滚动） */
html, body{ scrollbar-width:none; -ms-overflow-style:none; }
html::-webkit-scrollbar, body::-webkit-scrollbar{ width:0; height:0; display:none; }
@media (max-width:768px){ html{ background:#eef1f6; } }

body{
  font-family:'SymbolSafe','Gotham','Montserrat','Noto Sans SC','Segoe UI',system-ui,-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  background:var(--bg); color:var(--text); font-size:14px;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  font-variant-numeric:tabular-nums;
}

.container{ display:flex; min-height:100vh; }

/* ───────── 侧边栏 ───────── */
.sidebar{
  width:224px; flex-shrink:0; background:#070d1c; border-right:1px solid #1e3558;   /* 描边对齐 os 侧栏 */
  display:flex; flex-direction:column; position:sticky; top:0; height:100vh;
}
.sidebar-brand{ padding:20px 14px 16px; }
.brand-title{ font-size:17px; font-weight:800; color:#fff; letter-spacing:0.3px; }
.brand-sub{ font-size:10px; color:var(--text-2); margin-top:4px; font-weight:500; letter-spacing:0.3px; }
.sidebar-nav{ flex:1; padding:0 14px; }
.nav-link{
  display:flex; align-items:center; color:var(--text-2); text-decoration:none;
  padding:8px 12px; border-radius:8px; font-size:12px; font-weight:700;
  border:1px solid transparent; margin-bottom:2px; transition:background .15s,color .15s;
}
.nav-link:hover{ background:var(--surface-2); color:var(--text); }
.nav-link.active{ background:var(--brand); color:#fff; }
.sidebar-footer{ padding:12px 14px 14px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.user-info{ color:#6e90b8; font-size:12px; padding:0 4px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.logout-btn{
  display:inline-block; flex-shrink:0; color:#6e90b8; text-decoration:none; padding:4px 10px;
  border:1px solid #1e3558; border-radius:20px; text-align:center;
  font-size:10px; font-weight:500; transition:background .15s,color .15s,border-color .15s;
}   /* os logout-btn 同款 */
.logout-btn:hover{ color:var(--text); border-color:#6e90b8; }

/* ───────── 主区 + 顶部栏 ───────── */
.main-content{ flex:1; padding:20px 22px 22px; min-width:0; background:var(--canvas); }
.topbar{ display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:20px; }
.topbar-left h1{ font-size:16px; font-weight:800; letter-spacing:0.3px; color:var(--text); }
.topbar-left .timestamp{ color:var(--text-3); font-size:12px; margin-top:2px; }

/* 服务器切换：连体分段控件（中间分割线） */
.server-switch{ display:flex; align-items:center; flex-shrink:0; }
.server-switch .srv-tabs{ display:inline-flex; align-items:stretch; border:1px solid var(--border); border-radius:9px; overflow:hidden; }
.srv-tab{ display:inline-flex; align-items:center; justify-content:center; height:34px; padding:0 18px; font-size:12px; font-weight:700; line-height:1; color:var(--text-2); background:transparent; border:none; border-left:1px solid var(--border); text-decoration:none; transition:background .15s,color .15s; white-space:nowrap; box-sizing:border-box; }
.srv-tab:first-child{ border-left:none; }
.srv-tab:hover{ background:var(--surface-2); color:var(--text); }
.srv-tab.active{ color:#fff; background:var(--brand); cursor:default; }

/* ───────── 卡片 ───────── */
.card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:16px; margin-bottom:14px; box-shadow:var(--shadow);
}

/* ───────── section header ───────── */
.section-header{ display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:14px; }
.section-title{ font-size:14px; font-weight:700; color:var(--text); }
.section-subtitle{ font-size:12px; color:var(--text-2); margin-top:2px; }

/* ───────── 英雄区：summary 指标卡（合并） ───────── */
.summary-area{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:14px; }
.summary-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:18px 8px; box-shadow:var(--shadow);
  transition:border-color .15s, transform .12s;
}
.summary-card:hover{ border-color:var(--brand); transform:translateY(-1px); }
.summary-card-label{ font-size:12px; font-weight:600; color:var(--text-2); text-transform:uppercase; letter-spacing:0.5px; }
.label-unit{ margin-left:5px; color:var(--text-3); font-weight:600; }
.chart-legend-mini{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
.chart-legend-mini .lg{ display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:400; color:var(--text-2); white-space:nowrap; }
.chart-legend-mini .lg-dot{ width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.summary-card-value{ font-size:16px; font-weight:700; margin-top:5px; line-height:1.15; }
.summary-card-value.profit{ color:var(--green); }
.summary-card-value.loss{ color:var(--red); }

/* 合并卡：横排指标 + 竖分隔 */
.metric-row{ display:flex; align-items:stretch; }
.metric-cell{ flex:1; display:flex; flex-direction:column; align-items:center; text-align:center; gap:7px; padding:0 14px; min-width:0; }
.metric-cell .summary-card-value{ margin-top:0; }
.metric-sep{ width:0.5px; background:var(--border); align-self:stretch; flex-shrink:0; }

/* 多空净 三值：净值大、多/空小一行竖排在下 */
.dual-stat{ display:flex; align-items:baseline; }
.dual-stat .ds-item{ display:flex; align-items:baseline; gap:4px; }
.dual-stat .ds-sep{ width:0.5px; height:1em; background:var(--border); margin:0 12px; flex-shrink:0; align-self:center; position:relative; top:.1em; }
.dual-stat .ds-tag{ font-size:12px; font-weight:600; color:var(--text-3); flex-shrink:0; }
.dual-stat .ds-val{ font-size:16px; font-weight:700; line-height:1; }
.ds-item.long .ds-val{ color:var(--green); } .ds-item.short .ds-val{ color:var(--red); }
.ds-val.long-val{ color:var(--green); } .ds-val.short-val{ color:var(--red); } .ds-val.neutral-val{ color:var(--text); }

/* ───────── 风控面板 ───────── */
.risk-panel{ border-left:3px solid var(--green); transition:border-color .3s,background .3s; }
.risk-panel.risk-warn{ border-left-color:var(--amber); }
.risk-panel.risk-alert{ border-left-color:var(--red); }
.risk-header{ display:flex; align-items:center; gap:9px; margin-bottom:12px; }
.risk-dot{ width:8px; height:8px; border-radius:50%; background:var(--green); flex-shrink:0; }
.risk-panel.risk-warn .risk-dot{ background:var(--amber); }
.risk-panel.risk-alert .risk-dot{ background:var(--red); }
.risk-title{ font-size:14px; font-weight:700; color:var(--text); letter-spacing:0.3px; }
.risk-badge{ font-size:12px; font-weight:700; padding:3px 12px; border-radius:999px; background:var(--green-soft); color:var(--green); letter-spacing:0; }
.risk-panel.risk-warn .risk-badge{ background:var(--amber-soft); color:var(--amber); }
.risk-panel.risk-alert .risk-badge{ background:var(--red-soft); color:var(--red); }
.risk-summary{ color:var(--text-2); font-size:14px; }
.risk-meta{ font-size:14px; color:var(--text-2); margin-bottom:6px; }
.risk-meta strong{ color:var(--text); }
.risk-meta strong.loss{ color:var(--red); }
.risk-ts{ color:var(--text-3); font-size:12px; margin-left:8px; }
.risk-header .risk-ts{ margin-left:auto; white-space:nowrap; }
.drawdown-bar{ height:6px; border-radius:99px; background:var(--bg); margin:10px 0 4px; overflow:hidden; }
.drawdown-fill{ height:100%; border-radius:99px; background:var(--green); transition:width .5s; }
.risk-panel.risk-warn .drawdown-fill{ background:var(--amber); }
.risk-panel.risk-alert .drawdown-fill{ background:var(--red); }
.risk-countdown{ font-size:14px; color:var(--red); margin-top:5px; }
.risk-single-list{ font-size:13px; color:var(--text-2); margin-top:8px; line-height:1.9; }
.risk-single-item{ display:inline-block; background:var(--red-soft); color:var(--red); border-radius:6px; padding:2px 8px; margin:2px 4px 2px 0; white-space:nowrap; }
.risk-single-item em{ font-style:normal; font-weight:600; margin-left:4px; }
.risk-symbol-row{ display:flex; gap:12px; align-items:center; font-size:14px; padding:8px 0; border-top:0.5px solid var(--border); }
.risk-symbol-name{ font-weight:600; min-width:90px; color:var(--text); }
.risk-symbol-pct{ color:var(--red); }
.risk-symbol-cd{ color:var(--text-2); margin-left:auto; }

/* ───────── perf-table (持仓/通用) ───────── */
.perf-table-wrap{ overflow-x:auto; }
.perf-table{ width:100%; border-collapse:collapse; font-size:12px; }
.perf-table th{
  padding:8px 12px; text-align:left; font-size:12px; font-weight:600; text-transform:uppercase;
  letter-spacing:0; color:var(--text-2); border-bottom:1px solid var(--border); white-space:nowrap;
}
.perf-table td{ padding:9px 12px; border-bottom:0.5px solid var(--border); white-space:nowrap; vertical-align:middle; }
.perf-table tbody tr{ transition:background .15s; }
.perf-table tbody tr:hover td{ background:rgba(74,124,247,.04); }
.perf-table tbody tr:last-child td{ border-bottom:none; }
.perf-table td.col-primary{ font-weight:600; color:var(--text); }
.perf-table td.col-aux{ color:var(--text-3); font-size:12px; }
.perf-table td.col-symbol{ font-weight:700; color:var(--text); letter-spacing:0; }
.pnl-pct{ font-size:12px; opacity:.7; font-weight:500; }
/* 未实现盈亏：数值与百分比均加粗 */
.upnl-cell{ font-weight:700; }
.upnl-cell .pnl-pct{ font-weight:700; opacity:.85; }
.profit{ color:var(--green); } .loss{ color:var(--red); }
.dir-badge{ display:inline-flex; align-items:center; justify-content:center; line-height:1; font-size:12px; font-weight:700; padding:3px 6px; border-radius:5px; margin-right:7px; letter-spacing:0; }
/* 方向标 + 仓位价值整体垂直居中（line-height:1 让数字行框贴合字形，避免 pill 相对数字偏下） */
.col-primary .dir-cell{ display:inline-flex; align-items:center; line-height:1; }
.dir-long{ background:var(--green-soft); color:var(--green); } .dir-short{ background:var(--red-soft); color:var(--red); }

/* ───────── 信号表 ───────── */
.signal-table{ width:100%; border-collapse:collapse; table-layout:fixed; }
.signal-table thead th:first-child{ width:100px; }   /* 交易对列固定，其余 bar 列等分剩余宽度 */
.signal-table th{ padding:4px 6px; text-align:center; font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:0.5px; color:var(--text-2); border:1px solid var(--border); }
.signal-table td{ padding:4px 6px; text-align:center; border:0.5px solid var(--border); }
.symbol-cell{ font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding:4px 8px; font-size:12px; text-align:center; color:var(--text); }
.signal-cell{ padding:3px 4px; height:48px; text-align:center; cursor:default; vertical-align:middle; transition:filter .1s; }
.signal-cell:hover{ filter:brightness(1.25); }
.sig-empty{ background:var(--surface-2); color:#3d5478; }
.sig-neutral{ background:var(--surface-2); }
.row-out-of-universe .symbol-cell,.row-out-of-universe .signal-cell{ color:#4d6488 !important; }
.row-out-of-universe .signal-cell{ filter:grayscale(1) opacity(.55); }
.sig-long{ background:rgba(52,211,153,.16); color:var(--green); }
.sig-short{ background:rgba(248,113,113,.16); color:var(--red); }
.sig-executed{ font-weight:700; }
.sig-executed.sig-long{ background:rgba(52,211,153,.28); }
.sig-executed.sig-short{ background:rgba(248,113,113,.28); }
.sig-closed.sig-long{ background:rgba(52,211,153,.40); }
.sig-closed.sig-short{ background:rgba(248,113,113,.40); }
.sig-time{ font-size:12px; color:var(--text-2); line-height:1.1; }
.sig-symbol{ font-size:12px; font-weight:600; line-height:1.15; }
.sig-pred{ font-size:12px; line-height:1.2; }
.sig-neutral .sig-pred{ color:#4d6488; } .sig-neutral .sig-time{ color:#3d5478; }
.sig-badge{ display:inline-block; font-size:12px; }
/* 信号格固定 48px + 垂直居中，等高且内容居中（不再靠占位行撑高） */
.sig-badge-row{ line-height:1; font-size:12px; margin-top:1px; }

/* ───────── 信号 Tooltip ───────── */
.signal-tooltip{ position:fixed; background:var(--surface); color:var(--text); border:1px solid var(--border); border-radius:10px; padding:10px 14px; font-size:12px; min-width:260px; max-width:340px; z-index:9999; box-shadow:0 12px 34px rgba(0,0,0,.55); pointer-events:none; line-height:1.5; }
/* 自定义悬浮提示(即时显示, 替代原生title): data-tip 结构化 */
/* 悬浮气泡: 深色对比范式(侧栏同族navy); 标题不做色带(避免视觉上像粗下划线), 仅细分隔线 */
.custom-tip{ position:fixed; display:none; background:#1c2950; color:#e8f0fe; border:1px solid #2a416c; border-radius:8px; padding:0; max-width:300px; z-index:10000; box-shadow:0 10px 30px rgba(0,0,0,.45); pointer-events:none; overflow:hidden; }
.custom-tip.show{ display:block; }
.custom-tip .tip-title{ font-size:12px; font-weight:700; color:#e8f0fe; padding:9px 13px 0; }
.custom-tip .tip-detail{ padding:7px 13px 9px; display:flex; flex-direction:column; gap:3px; }
.custom-tip .tip-row{ display:flex; justify-content:space-between; gap:16px; font-size:12px; }
.custom-tip .tip-k{ color:#94a3b8; }
.custom-tip .tip-v{ color:#64b5f6; font-weight:700; font-variant-numeric:tabular-nums; }
.custom-tip .tip-hint{ font-size:11px; color:#aab8d0; line-height:1.55; margin-top:8px; padding:8px 13px 10px; border-top:1px solid rgba(255,255,255,.08); display:flex; flex-direction:column; gap:5px; }
.custom-tip .tip-title + .tip-hint{ margin-top:8px; }
.custom-tip .tip-detail + .tip-hint{ margin-top:0; }
.custom-tip .tip-line{ position:relative; padding-left:10px; }
.custom-tip .tip-line::before{ content:''; position:absolute; left:0; top:7px; width:4px; height:4px; border-radius:50%; background:#64748b; opacity:.8; }
.custom-tip .tip-title:last-child{ padding-bottom:9px; }
.custom-tip .tip-detail + .tip-hint{ border-top:1px solid var(--border); }
.tt-row{ display:flex; justify-content:space-between; align-items:flex-start; padding:1px 0; gap:10px; }
.tt-label{ color:var(--text-2); white-space:nowrap; flex-shrink:0; }
.tt-val{ text-align:right; word-break:break-all; color:var(--text); }
.tt-divider{ border:none; border-top:1px solid var(--border); margin:6px 0; }
.tt-profit .tt-val{ color:var(--green); font-weight:600; }
.tt-loss .tt-val{ color:var(--red); font-weight:600; }
.tt-skip .tt-val{ color:var(--amber); }
.tt-section-title{ font-size:12px; color:var(--text-2); text-transform:uppercase; letter-spacing:0.5px; margin:4px 0 2px; }

/* ───────── 日志（终端范式） ───────── */
.logs-container{ background:#070d1c; color:#cdd6e6; padding:16px 18px; border-radius:8px; border:1px solid var(--border); font-family:'SF Mono','JetBrains Mono','Courier New',monospace; font-size:14px; max-height:540px; overflow-y:auto; line-height:1.6; }
.log-line{ margin-bottom:4px; white-space:pre-wrap; word-break:break-all; }

/* ───────── 状态/通用 ───────── */
.loading{ text-align:center; padding:44px; color:var(--text-3); }
.error{ background:var(--red-soft); color:var(--red); padding:14px 16px; border-radius:9px; margin-bottom:18px; border:1px solid rgba(248,113,113,.3); }

/* ───────── toast ───────── */
.toast{ position:fixed; bottom:22px; right:22px; background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:10px 16px; font-size:14px; opacity:0; transform:translateY(6px); transition:all .2s; z-index:5000; pointer-events:none; }
.toast.show{ opacity:1; transform:translateY(0); }
.toast.success{ border-color:var(--green); color:var(--green); }
.toast.error{ border-color:var(--red); color:var(--red); }

/* ───────── 单币杠杆因子: 弹框 + 标签 ───────── */
.pos-symbol.pos-clickable{ cursor:pointer; }
.pos-symbol.pos-clickable:hover{ text-decoration:underline; text-underline-offset:2px; }
.pos-lev-tag{ display:inline-block; margin-left:5px; padding:0 5px; font-size:10px; font-weight:700; line-height:15px;
  color:#f59e0b; background:rgba(245,158,11,.14); border:1px solid rgba(245,158,11,.4); border-radius:5px; vertical-align:middle; cursor:help; }
.pos-row.pos-lev-adj{ background:rgba(245,158,11,.06); }
.pos-rows .pos-row.pos-lev-adj:hover{ background:rgba(245,158,11,.12); }
/* 自动缩仓因子标签(蓝色, 区别手动橙色) + 悬浮提示 */
.pos-autolev-tag{ display:inline-block; margin-left:4px; padding:0 5px; font-size:10px; font-weight:700; line-height:15px;
  color:#3b82f6; background:rgba(59,130,246,.14); border:1px solid rgba(59,130,246,.4); border-radius:5px; vertical-align:middle; cursor:help; }
.pos-row.pos-autolev-adj{ background:rgba(59,130,246,.06); }
.pos-rows .pos-row.pos-autolev-adj:hover{ background:rgba(59,130,246,.12); }
.auto-lev-badge{ cursor:help; }

.lev-modal{ position:fixed; inset:0; z-index:4000; display:none; align-items:center; justify-content:center;
  background:rgba(4,10,24,.55); backdrop-filter:blur(2px); }
.lev-modal.show{ display:flex; }
/* 杠杆因子弹窗: 主区白卡范式(白底/浅描边/10px圆角/浅阴影), 主按钮=品牌蓝(弃橙色) */
.lev-modal-panel{ background:#ffffff; color:#334155; border:1px solid #e4e8f0; border-radius:10px;
  padding:20px 22px; min-width:300px; max-width:360px; box-shadow:0 1px 3px rgba(16,24,40,.06), 0 16px 44px -8px rgba(16,24,40,.22); }
.lev-modal-title{ font-size:14px; font-weight:700; color:#334155; margin-bottom:4px; }
.lev-modal-title #lev-symbol{ color:var(--brand); }
.lev-modal-desc{ font-size:12px; color:#64748b; line-height:1.5; margin-bottom:14px; display:flex; flex-direction:column; gap:4px; }
.lev-modal-desc .tip-line{ position:relative; padding-left:10px; }
.lev-modal-desc .tip-line::before{ content:''; position:absolute; left:0; top:7px; width:4px; height:4px; border-radius:50%; background:#94a3b8; opacity:.7; }
.lev-modal-field{ display:flex; align-items:center; gap:10px; margin-bottom:18px; }
.lev-modal-field label{ font-size:12px; font-weight:600; color:#64748b; }
#lev-input{ flex:1; background:#ffffff; color:#334155; border:1px solid #e4e8f0; border-radius:8px;
  padding:8px 12px; font-size:14px; font-weight:600; outline:none; font-variant-numeric:tabular-nums; }
#lev-input:focus{ border-color:var(--brand); box-shadow:0 0 0 3px rgba(74,124,247,.12); }
.lev-modal-actions{ display:flex; justify-content:flex-end; gap:10px; }
.lev-btn{ padding:7px 16px; font-size:12px; font-weight:600; border-radius:8px; cursor:pointer; border:1px solid #e4e8f0; background:#ffffff; color:#64748b; transition:background .15s, color .15s, border-color .15s; }
.lev-btn:hover{ color:#334155; border-color:#cbd4e1; }
.lev-btn.primary{ background:var(--brand); border-color:var(--brand); color:#fff; }
.lev-btn.primary:hover{ background:var(--brand-d); border-color:var(--brand-d); }

/* ───────── 收益曲线 ───────── */
.trade-filter-card{ padding:13px 16px; margin-bottom:14px; }
.trade-filter{ display:flex; align-items:center; gap:18px; }
.trade-filter-label{ white-space:nowrap; font-size:12px; font-weight:600; color:var(--text-2); text-transform:uppercase; letter-spacing:0.5px; min-width:250px; }
.trade-filter-label strong{ color:var(--text); }
.dual-range{ position:relative; flex:1; height:26px; }
.dual-range-track{ position:absolute; width:100%; height:5px; top:10px; background:var(--surface-2); border-radius:99px; }
.dual-range-fill{ position:absolute; height:100%; background:var(--brand); border-radius:99px; }
.dual-range input[type="range"]{ position:absolute; width:100%; height:5px; top:10px; appearance:none; -webkit-appearance:none; background:transparent; pointer-events:none; outline:none; }
.dual-range input[type="range"]::-webkit-slider-thumb{ -webkit-appearance:none; pointer-events:all; width:16px; height:16px; border-radius:50%; background:var(--brand); cursor:pointer; border:2px solid var(--surface); box-shadow:0 1px 5px rgba(74,124,247,.6); }
.dual-range input[type="range"]::-moz-range-thumb{ pointer-events:all; width:16px; height:16px; border-radius:50%; background:var(--brand); cursor:pointer; border:2px solid var(--surface); box-shadow:0 1px 5px rgba(74,124,247,.6); }

/* curve card（图表卡） */
.chart-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:0; }
.curve-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); padding:16px; margin-bottom:14px; display:flex; flex-direction:column; }
.curve-card-header{ display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:4px 10px; margin-bottom:10px; }
.chart-container{ position:relative; height:280px; width:100%; }
@media (max-width:900px){ .chart-row{ grid-template-columns:1fr; } }

/* 页面切换 */
.page{ display:none; } .page.active{ display:block; }

/* ───────── 滚动条 ───────── */
::-webkit-scrollbar{ width:5px; height:5px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:var(--border); border-radius:3px; }

/* ───────── 响应式 ───────── */
@media (max-width:1100px){ .summary-area{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:768px){
  .container{ flex-direction:column; }
  .sidebar{ width:100%; height:auto; position:sticky; top:0; z-index:100; flex-direction:row; align-items:center; padding:0; box-shadow:0 2px 10px rgba(0,0,0,.5); }
  .sidebar-brand{ padding:10px 14px; }
  .sidebar-nav{ display:flex; padding:0; flex:1; }
  .nav-link{ flex:1; justify-content:center; border-radius:0; border:none; border-bottom:3px solid transparent; margin:0; }
  .nav-link .nav-dot{ display:none; }
  .nav-link.active{ background:transparent; color:#fff; border-bottom:3px solid var(--brand); }
  .sidebar-footer{ display:flex; align-items:center; gap:8px; padding:8px 14px; border-top:none; border-left:1px solid var(--border); }
  .user-info{ margin-bottom:0; font-size:12px; }
  .logout-btn{ padding:5px 10px; font-size:12px; border:none; white-space:nowrap; }
  .topbar{ flex-direction:column; align-items:stretch; gap:12px; }
  .main-content{ padding:14px; }
  .topbar-left h1{ font-size:14px; }
  .summary-area{ grid-template-columns:repeat(2,1fr); gap:10px; }
  .summary-card.wide{ grid-column:span 2; }
  .summary-card-value{ font-size:14px; }
  .card{ padding:14px; margin-bottom:12px; }
  .perf-table th,.perf-table td,.signal-table th,.signal-table td{ padding:8px; font-size:12px; }
  .perf-table-wrap{ -webkit-overflow-scrolling:touch; }
  .chart-container{ height:220px; }
  .trade-filter{ flex-direction:column; align-items:flex-start; gap:8px; } .trade-filter-label{ min-width:unset; }
  .logs-container{ font-size:12px; max-height:380px; padding:14px; }
  .server-switch{ flex-wrap:wrap; }
}

/* ═════════ 主内容区：浅色作用域（深侧栏 + 浅内容区） ═════════ */
.main-content{
  --bg:#eef1f6;
  --canvas:#eef1f6;
  --surface:#ffffff;
  --surface-2:#f4f6fa;
  --surface-3:#f4f6fa;
  --border:#e4e8f0;
  --border-2:#eef1f6;
  --text:#334155;
  --text-2:#64748b;
  --text-3:#94a3b8;
  --brand-soft:rgba(74,124,247,.10);
  --green:#10b981; --green-soft:rgba(16,185,129,.12);
  --red:#ef4444;   --red-soft:rgba(239,68,68,.10);
  --amber:#d97706; --amber-soft:rgba(217,119,6,.12);
  --shadow:0 1px 3px rgba(16,24,40,.06), 0 8px 24px -10px rgba(16,24,40,.10);
  color:var(--text);
}
.main-content .summary-card-value{ color:var(--text); }
.main-content .summary-card-label{ color:#64748b; }
/* 服务器切换：外框 + 分割线加深 */
.main-content .server-switch .srv-tabs{ border-color:#cbd4e1; }
.main-content .srv-tab{ border-left-color:#cbd4e1; }
.main-content .label-unit{ color:#94a3b8; }
/* 表格分隔线 / hover 浅色化 */
.main-content .perf-table td{ border-bottom-color:#e4e8f0; }
.main-content .perf-table tbody tr:hover td{ background:#f4f6fa; }
.main-content .perf-table th{ border-bottom-color:#e4e8f0; }
/* 信号格浅色化 */
.main-content .signal-table th{ background:#f4f6fa; border-color:#e4e8f0; }
.main-content .signal-table td{ border-color:#e4e8f0; }
.main-content .sig-empty{ background:#f4f6fa; color:#c2cad6; }
.main-content .sig-neutral{ background:#f7f9fc; }
.main-content .sig-neutral .sig-pred{ color:#c2cad6; }
.main-content .sig-neutral .sig-time{ color:#cdd5df; }
.main-content .row-out-of-universe .symbol-cell,
.main-content .row-out-of-universe .signal-cell{ color:#aab3c0 !important; }
.main-content .signal-cell:hover{ filter:brightness(.97); }
.main-content .sig-long{ background:rgba(16,185,129,.14); color:#0f9b6c; }
.main-content .sig-short{ background:rgba(239,68,68,.13); color:#dc3545; }
.main-content .sig-executed.sig-long{ background:rgba(16,185,129,.26); }
.main-content .sig-executed.sig-short{ background:rgba(239,68,68,.24); }
.main-content .sig-closed.sig-long{ background:rgba(16,185,129,.40); }
.main-content .sig-closed.sig-short{ background:rgba(239,68,68,.38); }
/* 日志区保持深色终端（浅底上更醒目） */
.main-content .logs-container{ background:#0f1626; color:#cdd6e6; border-color:#0f1626; }
/* 风控进度条槽位浅色 */
.main-content .drawdown-bar{ background:#e9edf4; }
/* 收益曲线双头滑块 thumb 描边改白 */
.main-content .dual-range input[type=range]::-webkit-slider-thumb{ border-color:#fff; }
.main-content .dual-range input[type=range]::-moz-range-thumb{ border-color:#fff; }

/* ═════════ PlanI 专属：持仓多/空分栏 ═════════ */
.position-columns{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.position-col{ min-width:0; }
.position-col-head{ display:flex; align-items:center; gap:7px; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; padding:0 0 10px; color:var(--text); line-height:1; }
.pos-dot{ width:7px; height:7px; border-radius:50%; flex-shrink:0; }
.long-head .pos-dot{ background:var(--green); }
.short-head .pos-dot{ background:var(--red); }
.pos-col-count{ font-size:11px; font-weight:600; padding:3px 7px 2px; border-radius:6px; line-height:1; font-variant-numeric:tabular-nums; margin-left:-1px; position:relative; top:-0.5px; }
.long-head .pos-col-count{ background:var(--green-soft); color:var(--green); }
.short-head .pos-col-count{ background:var(--red-soft); color:var(--red); }
/* 滚动区做成内嵌面板：限高+独立滚动(滚动条隐藏)，白底+细描边与卡片轻分层 */
.position-list{ max-height:427px; overflow-y:auto; background:var(--surface); border:1px solid var(--border); border-radius:8px; overscroll-behavior:contain; scrollbar-width:none; -ms-overflow-style:none; }   /* 表头36+11行×35.5, 整行对齐不留半行白边 */
.position-list::-webkit-scrollbar{ width:0; height:0; display:none; }
.pos-row{ display:grid; grid-template-columns:.55fr .85fr .6fr .7fr .55fr .75fr .75fr; gap:8px; align-items:center; justify-items:center; text-align:center; padding:9px 12px; border-bottom:0.5px solid var(--border); font-size:12px; line-height:17px; transition:background .15s; }
.pos-gap{ color:var(--text-2); font-weight:600; }
.pos-maker{ color:var(--text-2); font-weight:600; }
.pos-oi{ color:var(--text-2); font-weight:600; }
.pos-rows .pos-oi.oi-warn{ color:#b45309; background:#fef3c7; border-radius:6px; padding:0 6px; line-height:17px; display:inline-block; }
.pos-rows .pos-oi.oi-danger{ color:#dc2626; background:#fee2e2; border-radius:6px; padding:0 6px; line-height:17px; display:inline-block; }
.pos-rows .pos-row:hover{ background:rgba(74,124,247,.06); }
.pos-rows .pos-row:last-child{ border-bottom:none; }
.pos-row.pos-head{ position:sticky; top:0; z-index:2; background:#fafbfd; padding:8px 12px; border-bottom:1px solid var(--border); font-weight:600; letter-spacing:0; color:var(--text-2); }
.pos-sort{ cursor:pointer; user-select:none; white-space:nowrap; }
.pos-row.pos-head > span{ line-height:1.4; }
.sort-arrow{ display:inline-block; vertical-align:middle; margin-left:4px; margin-top:-1px; }
.pos-sort:hover{ color:var(--text); }
.pos-head .pos-sort.active{ color:var(--brand); }
.pos-symbol{ font-weight:700; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; justify-self:start; text-align:left; }
.pos-head .pos-symbol{ font-weight:600; color:var(--text-2); }
.pos-head .pos-sort.active.pos-symbol{ color:var(--brand); }
.pos-amount{ font-weight:600; color:var(--text); }
.pos-return{ font-weight:700; }
.pos-empty{ padding:18px; text-align:center; color:var(--text-3); font-size:12px; }
@media (max-width:900px){ .position-columns{ grid-template-columns:1fr; } }

/* PlanI 风控面板补充：保证金率三态着色 */
.risk-meta strong.profit{ color:var(--green); }
.risk-meta strong.warn-val{ color:var(--amber); }


/* 图上区间选择器 (与 52.197 参照站同款) */
.rs-handle{ position:absolute; width:14px; cursor:ew-resize; z-index:6; display:flex; align-items:center; justify-content:center; touch-action:none; }
.rs-grip{ width:4px; height:30px; border-radius:2px; background:rgba(74,124,247,.45); transition:background .15s, height .15s; }
.rs-handle:hover .rs-grip, .rs-handle.dragging .rs-grip{ background:var(--brand); height:44px; }
.rs-chip{ display:none; position:absolute; top:26px; left:50%; transform:translateX(-50%); z-index:8; align-items:center; gap:6px; padding:2px 9px; border-radius:999px; background:var(--surface); color:var(--text-2); font-size:11px; font-weight:600; letter-spacing:0; text-transform:none; line-height:1.6; white-space:nowrap; box-shadow:0 1px 6px rgba(16,24,40,.18); }
.rs-chip-x{ cursor:pointer; opacity:.6; color:var(--text-2); }
.rs-chip-x:hover{ opacity:1; }
.rs-guide{ position:absolute; width:1px; background:repeating-linear-gradient(to bottom, rgba(74,124,247,.75) 0 4px, transparent 4px 7px); z-index:7; pointer-events:none; }
.rs-guide-tag{ position:absolute; top:calc(100% + 2px); left:0; transform:translateX(-50%); background:var(--surface); border:1px solid var(--border); border-radius:7px; padding:5px 9px; font-size:11px; color:var(--text-2); white-space:nowrap; pointer-events:none; box-shadow:0 4px 14px rgba(16,24,40,.14); }
.rs-shade{ position:absolute; background:rgba(255,255,255,.62); z-index:5; pointer-events:none; }

/* 图表表格 tooltip (理论/实盘/差值) */
.trade-tip{ position:absolute; z-index:10; pointer-events:none; opacity:0; transition:opacity .12s; background:#1b2433; border:1px solid #2a3344; border-radius:8px; padding:10px 12px; box-shadow:0 8px 24px rgba(0,0,0,.35); white-space:nowrap; }
.trade-tip .tt-title{ color:#9aa7b8; font-size:11px; font-weight:600; margin-bottom:6px; }
.trade-tip .tt-long{ color:#34d399; font-weight:700; }
.trade-tip .tt-short{ color:#f87171; font-weight:700; }
.trade-tip .tt-table{ border-collapse:collapse; font-size:11.5px; color:#f1f4f8; font-variant-numeric:tabular-nums; }
.trade-tip .tt-table th{ color:#9aa7b8; font-weight:600; text-align:center; padding:2px 7px 4px; font-size:10.5px; }
.trade-tip .tt-table td{ text-align:center; padding:2.5px 7px; }
.trade-tip .tt-table td:first-child, .trade-tip .tt-table th:first-child{ padding-left:0; color:#9aa7b8; }

/* ---------------- 截面风险页 ---------------- */
.riskx-cards{ grid-template-columns:repeat(2,1fr); }
.riskx-cards .summary-card{ text-align:center; }
@media (max-width:768px){ .riskx-cards{ grid-template-columns:1fr; } }
.riskx-cards .summary-card-sub{ font-size:11px; color:var(--text-3); margin-top:4px; line-height:1.4; }
.factor-bars{ display:flex; flex-direction:column; gap:5px; margin-bottom:10px; }
.fb-row{ display:flex; align-items:center; gap:8px; font-size:11px; }
.fb-name{ width:60px; color:var(--text-2); text-align:right; flex-shrink:0; }
.fb-track{ flex:1; height:12px; position:relative; background:rgba(100,116,139,0.12); border-radius:3px; overflow:hidden; }
.fb-track::before{ content:''; position:absolute; left:50%; top:0; bottom:0; width:1px; background:var(--border); }
.fb-fill{ position:absolute; top:1px; bottom:1px; border-radius:2px; }
.fb-val{ width:52px; flex-shrink:0; font-variant-numeric:tabular-nums; }
.fb-band{ position:absolute; top:0; bottom:0; background:rgba(100,116,139,0.16); }
.fb-sig{ width:44px; flex-shrink:0; font-size:10px; color:var(--text-3); text-align:right; font-variant-numeric:tabular-nums; }
.riskx-tables{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:0; align-items:stretch; }
.riskx-tables .card{ display:flex; flex-direction:column; margin-bottom:0; }
/* 三卡同高(纯CSS无时序): 高波桶表固定高=表头33+10.5行×36(半行露头=可滚动暗示), 撑出基准卡高;
   另两表套 .rx-fill(flex:1)+绝对定位脱流, 内容不参与卡高计算, 被拉伸后填满, 超出表内滚动 */
#riskx-hivol-table{ flex:none; height:413px; }
.rx-fill{ position:relative; flex:1; min-height:0; }
.rx-fill .rx-table{ position:absolute; inset:0; }
@media (max-width:1200px){ .riskx-tables{ grid-template-columns:1fr 1fr; } }
@media (max-width:900px){ .riskx-tables{ grid-template-columns:1fr; } }
.rx-table-title{ font-size:12px; font-weight:600; color:var(--text-2); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:14px; }
/* rx-table 对齐账户总览「持仓详情」范式: 圆角描边容器/居中/同行高/同表头/同hover; 高度=表头+10行, 超出内部滚动 */
.rx-table{ background:var(--surface); border:1px solid var(--border); border-radius:8px; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:none; -ms-overflow-style:none; }   /* 高度由JS按427容量吸齐整行(同持仓详情) */
.rx-table::-webkit-scrollbar{ width:0; height:0; display:none; }
.rx-table table{ width:100%; border-collapse:collapse; font-size:12px; }
.rx-table th{ position:sticky; top:0; z-index:2; text-align:center; color:var(--text-2); font-weight:600; letter-spacing:0; padding:8px 10px; border-bottom:1px solid var(--border); background:#fafbfd; line-height:1.4; }
.rx-table td{ text-align:center; color:var(--text-2); font-weight:600; padding:9px 10px; border-bottom:0.5px solid var(--border); font-variant-numeric:tabular-nums; line-height:17px; transition:background .15s; }
.rx-table th:first-child, .rx-table td:first-child{ text-align:left; }
.rx-table td:first-child{ color:var(--text); font-weight:700; }   /* 币种列=持仓表 pos-symbol 范式 */
.rx-table td.rx-pos{ color:var(--green); font-weight:700; }       /* 彩色列=持仓表 pos-return 范式 */
.rx-table td.rx-neg{ color:var(--red); font-weight:700; }
.rx-table tbody tr:hover td{ background:rgba(74,124,247,.06); }
.rx-table tbody tr:last-child td{ border-bottom:none; }
.rx-table .empty{ color:var(--text-3); padding:12px 6px; text-align:center; font-size:12px; }
.rx-pos{ color:var(--green); } .rx-neg{ color:var(--red); }

/* ---------------- 账户总览: 左指标卡 + 右回撤面板 ---------------- */
.overview-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:14px; align-items:stretch; }
.overview-row.solo{ grid-template-columns:1fr; }
.overview-row #account-grid{ min-width:0; }
.overview-row .summary-card{ height:100%; display:flex; flex-direction:column; justify-content:center; gap:16px; }
.overview-row .risk-panel{ margin-bottom:0; min-width:0; }
.metric-hsep{ height:0.5px; background:var(--border); margin:0 8px; }
@media (max-width:1100px){ .overview-row{ grid-template-columns:1fr; } }

/* ---------------- 顶栏手动刷新按钮 ---------------- */
.timestamp-wrap{ display:flex; align-items:center; gap:8px; }
.refresh-btn{ display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px;
  border-radius:50%; color:var(--text-3); font-size:14px; line-height:1; text-decoration:none;
  border:1px solid var(--border); transition:color .2s, border-color .2s; }
.refresh-btn:hover{ color:var(--brand); border-color:var(--brand); }
.refresh-btn.spinning{ animation:rx-spin .6s ease; }
@keyframes rx-spin{ from{ transform:rotate(0deg); } to{ transform:rotate(360deg); } }
/* 总览合并卡一行五格: 收紧留白防挤压 */
.overview-row .metric-cell{ padding:0 8px; }
.overview-row .summary-card{ gap:0; }
/* 时间戳可点击刷新 + 权益卡全宽 */
.timestamp-click{ cursor:pointer; user-select:none; transition:color .2s; }
.timestamp-click:hover{ color:var(--brand); }
#account-grid{ margin-bottom:14px; }

/* ───────── 侧栏策略指标 ───────── */
.sidebar-stats{ padding:0 14px 12px; border-bottom:1px solid rgba(255,255,255,.07); }
.ss-kv{ display:flex; align-items:center; justify-content:space-between; padding:3px 4px; font-size:12px; }
.ss-kv span{ color:var(--text-2); font-weight:500; }
.ss-kv b{ color:var(--text); font-weight:700; }
.ss-pos{ color:var(--green) !important; }
.ss-neg{ color:var(--red) !important; }
.ss-cards{ display:flex; flex-direction:column; gap:8px; margin-top:7px; }
.ss-card{ background:#152040; border:1px solid #1e3558; border-radius:10px; padding:13px 14px 14px; box-shadow:0 2px 12px rgba(0,0,0,.35); }   /* os summary-card 范式 */
.ss-card-label{ font-size:10px; font-weight:600; color:#8aabcc; text-transform:uppercase; letter-spacing:0.5px; }   /* os summary-card-label 范式 */
.ss-card-value{ font-size:14px; font-weight:800; color:var(--text); margin-top:1px; }
.ss-card-sub{ font-size:10px; color:var(--text-3); margin-top:1px; }
@media (max-width:768px){ .sidebar-stats{ display:none; } }
.ss-card-kvs{ margin-top:10px; border-top:1px solid #1e3558; padding-top:8px; }
.ss-card-kvs .ss-kv{ padding:2px 0; }

/* ───────── 金额遮罩(strategyOS 同款): 默认圆点, hover 双层交叉淡入 ───────── */
.money-row{
  display:inline-flex; align-items:center; cursor:default;
  padding:7px 14px; margin:-7px -14px;
  user-select:none; -webkit-user-select:none; -webkit-touch-callout:none;
  -webkit-tap-highlight-color:transparent;
}
.money-reveal{ display:inline-grid; }
.money-reveal > span{ grid-area:1/1; transition:opacity .4s ease-out, filter .4s ease-out; font-variant-numeric:tabular-nums; }
.money-reveal .mm-real{ opacity:0; filter:blur(8px); }
/* hover 整张卡片时四格金额一起揭示(命中区=包含 metric-row 的 summary-card) */
.summary-card:hover .mm-mask{ opacity:0; filter:blur(6px); }
.summary-card:hover .mm-real{ opacity:1; filter:blur(0); }
.pos-impact{ color:var(--text-2); font-weight:600; font-variant-numeric:tabular-nums; }
/* 侧栏策略指标 2×2 网格(strategyOS 组合表现范式) */
.ss-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px 8px; }
.ss-grid .ss-card-label{ font-size:10px; }
/* 风险页合并图表卡: 一卡两图, 中间横向分割线 */
.cc-divider{ height:1px; background:var(--border); margin:16px -16px 14px; }
/* 风险页合并指标卡(多指标一卡, 竖分割线) */
.rx-duo{ display:flex; align-items:stretch; gap:14px; }
.rx-duo-sep{ width:1px; flex:none; background:var(--border); margin:4px 0; }
.rx-duo-item{ flex:1; min-width:0; text-align:center; }
/* 侧栏回撤监控头部 */
.ss-risk-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:7px; }
.ss-risk-title{ font-size:13px; font-weight:700; color:var(--text); letter-spacing:0.3px; }   /* os section-title 范式(按侧栏宽适配) */
.ss-risk-badge{ font-size:10px; font-weight:600; padding:2px 7px 1px; border-radius:6px; line-height:1.4; background:var(--green-soft); color:var(--green); }
.ss-risk-badge.warn{ background:var(--amber-soft); color:var(--amber); }
.ss-risk-badge.alert{ background:var(--red-soft); color:var(--red); }
.sidebar-stats .loss{ color:var(--red); }
.sidebar-stats .profit{ color:var(--green); }
.sidebar-stats .warn-val{ color:var(--amber); }
#sr-single{ margin-top:6px; line-height:1.5; }
/* 侧栏回撤监控: 彩色加粗值与文字统一行高基线(CJK与数字行盒不同导致高低不齐) */
.sidebar-stats .ss-card-value{ line-height:18px; height:18px; overflow:visible; }
.sidebar-stats .ss-card-value strong, .sidebar-stats .ss-card-value span{
  font-weight:800; font-size:inherit; line-height:inherit; vertical-align:top; display:inline-block;
}
.sidebar-stats .drawdown-bar{ background:rgba(255,255,255,.08); margin:10px 0 2px; }
/* "N秒前更新"hover→"刷新": 双层直接渐隐渐现(无模糊, 快速) */
.ts-reveal{ display:inline-grid; cursor:pointer; }
.ts-reveal > span{ grid-area:1/1; transition:opacity .18s ease-out; white-space:nowrap; }
.ts-reveal .tsr-refresh{ opacity:0; color:var(--brand); }
.ts-reveal:hover .tsr-time{ opacity:0; }
.ts-reveal:hover .tsr-refresh{ opacity:1; }
.rx-table th{ white-space:nowrap; }
/* 持仓详情卡是账户页最后一个元素: 去掉卡片默认 margin-bottom:14px, 避免与页面底部padding叠加 */
.pos-card{ margin-bottom:0; }
/* 高波桶卡内三格小卡(同顶部指标卡范式: 竖分割线三列) */
.rx-mini{ border:1px solid var(--border); border-radius:8px; background:#fafbfd; padding:9px 10px 10px; margin-bottom:14px; }
.rx-mini.rx-duo{ gap:8px; }
.rx-mini .rx-duo-item{ text-align:center; }
.rx-mini .summary-card-label{ white-space:nowrap; }
.rx-mini .summary-card-sub{ white-space:nowrap; }
/* 侧栏风险alert(回撤监控上方): red-soft 提示条, ×可关闭(当天不再提示) */
.ss-alerts{ display:none; flex-direction:column; gap:6px; margin-bottom:8px; }
.ss-alert{ display:flex; align-items:flex-start; justify-content:space-between; gap:8px;
  background:var(--red-soft); border:1px solid rgba(248,113,113,.28); color:var(--red);
  border-radius:8px; padding:7px 9px 7px 10px; font-size:11px; font-weight:600; line-height:1.5; }
.ss-alert-x{ cursor:pointer; flex:none; opacity:.65; font-size:11px; line-height:1.5; transition:opacity .15s; }
.ss-alert-x:hover{ opacity:1; }
/* 侧栏卡hover揭示金额(权益峰值): 与账户权益同款双层交叉淡入 */
.ss-card:hover .mm-mask{ opacity:0; filter:blur(6px); }
.ss-card:hover .mm-real{ opacity:1; filter:blur(0); }
.sidebar-stats .ss-card-value .money-reveal{ display:inline-grid; }   /* 防被 .ss-card-value span 的 inline-block 覆盖, 保持双层叠放 */
