/* 策略 · 模拟盘 —— 复用站点 CSS 变量,主题自适应;破坏性按钮固定红(不跟涨跌配色) */

.sg-compliance {
  display: flex; align-items: flex-start; gap: 8px;
  margin: 0 0 16px; padding: 10px 12px;
  font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.5; color: var(--text-dim, #9aa0aa);
  background: var(--bg-panel, rgba(255, 255, 255, .03));
  border: 1px solid var(--line, rgba(255, 255, 255, .08));
  border-left: 3px solid var(--warn, #f0b90b);
  border-radius: 10px;
}
.sg-compliance svg { flex: none; margin-top: 1px; color: var(--warn, #f0b90b); }
.sg-compliance strong { color: var(--text-main, #eaecef); font-weight: 600; }

/* ---------- tabs ---------- */
.sg-tabs { display: flex; gap: 6px; margin-bottom: 16px; border-bottom: 1px solid var(--line, rgba(255, 255, 255, .08)); }
.sg-tab {
  appearance: none; background: none; border: none; cursor: pointer;
  padding: 9px 16px; font-size: calc(14px * var(--sv-font-scale, 1)); font-weight: 600;
  color: var(--text-dim, #9aa0aa); border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.sg-tab:hover { color: var(--text-main, #eaecef); }
.sg-tab.active { color: var(--text-main, #eaecef); border-bottom-color: var(--brand, #f0b90b); }

.sg-loading, .sg-empty { padding: 40px 16px; text-align: center; color: var(--text-dim, #9aa0aa); font-size: calc(14px * var(--sv-font-scale, 1)); }
.sg-empty p { margin: 0 0 14px; }
.sg-empty b { color: var(--text-main, #eaecef); }

/* ---------- 策略广场 卡片 ---------- */
.sg-market-mode {
  display: grid; grid-template-columns: auto auto 1fr; align-items: center; gap: 6px;
  margin: 0 0 16px; padding: 5px; border-radius: 12px;
  background: var(--bg-panel, rgba(255,255,255,.03));
  border: 1px solid var(--line-strong, rgba(255,255,255,.14));
}
.sg-market-mode button {
  appearance: none; display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  min-height: 42px; padding: 7px 13px; border: 1px solid transparent; border-radius: 8px;
  color: var(--text-dim, #9aa0aa); background: transparent;
}
.sg-market-mode button span { font: 700 10px/1 var(--font-mono, monospace); letter-spacing: .08em; opacity: .72; }
.sg-market-mode button b { font-size: calc(13px * var(--sv-font-scale, 1)); }
.sg-market-mode button.active {
  color: var(--text-main, #eaecef); background: var(--bg-elevated, #172033);
  border-color: var(--line-strong, rgba(255,255,255,.18)); box-shadow: 0 4px 14px rgba(0,0,0,.12);
}
.sg-market-mode button[data-sg-market="perp"].active { border-color: rgba(240,185,11,.5); }
.sg-market-mode p { justify-self: end; margin: 0 10px; color: var(--text-dim, #9aa0aa); font-size: calc(12px * var(--sv-font-scale, 1)); }
.sg-market-mode.perp { border-left: 3px solid var(--brand, #f0b90b); }
.sg-card.perp { position: relative; overflow: hidden; }
.sg-card.perp::before {
  content: 'PERP'; position: absolute; top: 0; right: 0; padding: 4px 8px;
  color: rgba(240,185,11,.72); background: rgba(240,185,11,.08);
  border-left: 1px solid rgba(240,185,11,.18); border-bottom: 1px solid rgba(240,185,11,.18);
  font: 700 9px/1 var(--font-mono, monospace); letter-spacing: .1em;
}
.sg-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.sg-card {
  display: flex; flex-direction: column; gap: 10px;
  padding: 16px; border-radius: 14px;
  background: var(--bg-elevated, var(--bg-panel, #16181f));
  /* 与 signals 的 .strat-card 同级卡片对齐用 --line-strong:广场卡片是页面主内容块,
     浅色下 soft 级的线太淡,分不出卡片边界(糖哥 2026-08-09) */
  border: 1px solid var(--line-strong, rgba(255, 255, 255, .15));
  transition: border-color .15s, transform .15s, box-shadow .15s;
}
.sg-card:not(.soon):hover { border-color: var(--line-strong, rgba(255, 255, 255, .18)); transform: translateY(-2px); }
.sg-card.soon { opacity: .6; }
.sg-card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.sg-card-title { display: flex; align-items: center; gap: 7px; min-width: 0; }
.sg-card-name { font-size: calc(15.5px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-main, #eaecef); }

/* 教学入口:标题旁小 chip,hover 转品牌色(糖哥 2026-08-06) */
.sg-teach {
  appearance: none; cursor: pointer; flex: none;
  display: inline-flex; align-items: center; gap: 4px;
  font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 600; padding: 2.5px 7px; border-radius: 999px;
  color: var(--text-dim, #9aa0aa); background: transparent;
  border: 1px solid var(--line-strong, rgba(255, 255, 255, .18));
  transition: color .15s, border-color .15s;
}
.sg-teach:hover { color: var(--brand, #f0b90b); border-color: var(--brand, #f0b90b); }
.sg-teach svg { flex: none; }

/* 教学弹窗正文 */
.sg-modal.teach .sg-teach-body { font-size: calc(13px * var(--sv-font-scale, 1)); line-height: 1.75; color: var(--text-dim, #9aa0aa); }
.sg-teach-lead { margin: 4px 0 14px; padding: 10px 12px; border-radius: 10px; color: var(--text-main, #eaecef); background: var(--bg-panel, rgba(255, 255, 255, .03)); border: 1px solid var(--line, rgba(255, 255, 255, .08)); }
.sg-teach-body h4 { margin: 14px 0 6px; font-size: calc(13px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--brand, #f0b90b); }
.sg-teach-body ul, .sg-teach-body ol { margin: 0; padding-left: 18px; }
.sg-teach-body li { margin: 5px 0; }
.sg-teach-body li b { color: var(--text-main, #eaecef); font-weight: 600; }
.sg-teach-note { margin: 14px 0 2px; padding-top: 10px; border-top: 1px dashed var(--line, rgba(255, 255, 255, .08)); font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.sg-tag {
  font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 600; padding: 2px 8px; border-radius: 999px;
  color: var(--brand, #f0b90b); background: rgba(240, 185, 11, .12); white-space: nowrap;
}
.sg-card-desc { flex: 1; margin: 0; font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.6; color: var(--text-dim, #9aa0aa); }
/* 合约目录卡：用“事实 + 三步执行路径”帮助用户比较，所有参数值仍由用户在创建器中填写。 */
.sg-card.perp-catalog { --perp-card-accent: var(--brand, #f0b90b); gap: 11px; }
.sg-card.perp-catalog[data-perp-tone="long"] { --perp-card-accent: var(--up, #2ebd85); }
.sg-card.perp-catalog[data-perp-tone="short"] { --perp-card-accent: var(--down, #f6465d); }
.sg-card.perp-catalog[data-perp-tone="neutral"] { --perp-card-accent: var(--text-dim, #9aa0aa); }
.sg-perp-card-brief { display: grid; gap: 9px; min-width: 0; }
.sg-perp-card-badges { display: flex; flex-wrap: wrap; gap: 5px; }
.sg-perp-card-badges span {
  padding: 3px 7px; border-radius: 999px; font-size: calc(9.5px * var(--sv-font-scale, 1)); font-weight: 650; line-height: 1.2;
  color: var(--text-dim, #9aa0aa); background: var(--bg-sunken, rgba(0,0,0,.16));
  border: 1px solid var(--line, rgba(255,255,255,.08));
}
.sg-perp-card-facts { display: grid; gap: 1px; margin: 0; overflow: hidden; border-radius: 9px; background: var(--line, rgba(255,255,255,.08)); }
.sg-perp-card-facts > div {
  display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 8px; padding: 7px 9px;
  background: var(--bg-sunken, rgba(0,0,0,.16));
}
.sg-perp-card-facts dt { color: var(--text-muted, #71757f); font: 650 9.5px/1.5 var(--font-mono, ui-monospace, monospace); letter-spacing: .04em; }
.sg-perp-card-facts dd { min-width: 0; margin: 0; color: var(--text-secondary, #b0b4bd); font-size: calc(11px * var(--sv-font-scale, 1)); line-height: 1.5; overflow-wrap: anywhere; }
.sg-perp-card-flow { padding: 8px 9px; border-radius: 9px; background: color-mix(in srgb, var(--perp-card-accent) 7%, var(--bg-sunken, #10151f)); border: 1px solid color-mix(in srgb, var(--perp-card-accent) 24%, transparent); }
.sg-perp-card-flow > b,
.sg-perp-card-options > b { display: block; margin-bottom: 6px; color: var(--text-muted, #71757f); font: 650 9.5px/1.2 var(--font-mono, ui-monospace, monospace); letter-spacing: .05em; }
.sg-perp-card-flow ol { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin: 0; padding: 0; list-style: none; }
.sg-perp-card-flow li { position: relative; min-width: 0; color: var(--text-main, #eaecef); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.35; text-align: center; overflow-wrap: anywhere; }
.sg-perp-card-flow li:not(:last-child)::after { content: '›'; position: absolute; right: -9px; color: var(--perp-card-accent); font-size: calc(15px * var(--sv-font-scale, 1)); line-height: 1; }
.sg-perp-card-options { padding-top: 1px; }
.sg-perp-card-options > span { display: flex; flex-wrap: wrap; gap: 5px; }
.sg-perp-card-options i { padding: 3px 6px; border-radius: 5px; font-style: normal; color: var(--text-dim, #9aa0aa); background: var(--bg-sunken, rgba(0,0,0,.16)); font-size: calc(9.5px * var(--sv-font-scale, 1)); line-height: 1.25; }
.sg-perp-card-truth { margin: 0; color: var(--text-muted, #71757f); font-size: calc(10px * var(--sv-font-scale, 1)); line-height: 1.45; }
.sg-card.perp-catalog .sg-card-foot { margin-top: auto; }
/* ===== 合约卡卡面重设计(2026-08-13):双格「怎么进出/主要风险」,密集信息移入教学 ===== */
.sg-perp-duo { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 7px; min-width: 0; }
.sg-perp-tile { display: grid; gap: 4px; align-content: start; min-width: 0; padding: 8px 9px; border-radius: 9px; background: color-mix(in srgb, var(--perp-card-accent) 6%, var(--bg-sunken, #10151f)); border: 1px solid color-mix(in srgb, var(--perp-card-accent) 20%, transparent); }
.sg-perp-tile > b { color: var(--text-muted, #71757f); font: 650 9.5px/1.2 var(--font-mono, ui-monospace, monospace); letter-spacing: .05em; }
.sg-perp-tile > span { display: flex; gap: 5px; min-width: 0; color: var(--text-secondary, #b0b4bd); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.45; overflow-wrap: anywhere; }
.sg-perp-tile > span i { flex: none; align-self: flex-start; margin-top: 1px; padding: 1px 4px; border-radius: 4px; font-style: normal; font-size: calc(9px * var(--sv-font-scale, 1)); line-height: 1.3; color: var(--perp-card-accent); background: color-mix(in srgb, var(--perp-card-accent) 14%, transparent); }
.sg-perp-tile.warn { border-left: 2px solid var(--perp-card-accent); }
@media (max-width: 520px) { .sg-perp-duo { grid-template-columns: 1fr; } }
/* 教学弹窗里的「执行事实」块:没有卡面的 data-perp-tone,给一个中性强调色兜底 */
.sg-teach-perp { --perp-card-accent: var(--brand, #f0b90b); margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--line, rgba(255, 255, 255, .1)); }
.sg-teach-perp h4 { margin: 0 0 8px; }
/* 合约自定义创建器:执行参数行(保证金/杠杆/ROE止盈止损/滑点) */
.sgc-perp-exec { grid-template-columns: repeat(5, 1fr); }
@media (max-width: 760px) { .sgc-perp-exec { grid-template-columns: repeat(2, 1fr); } }
/* ===== 多周期均线共振创建器:主规则保持紧凑表格,高级路径在当前行下按需展开 ===== */
.sg-ms-head { display: flex; align-items: baseline; gap: 10px; margin: 16px 0 8px; font-size: calc(13.5px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); }
.sg-ms-head .sg-muted { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
.sg-ms-cols,
.sg-ms-compact-main {
  display: grid;
  grid-template-columns: 26px minmax(102px, 1.05fr) 82px 108px 108px minmax(132px, 1.2fr) 92px 92px 36px;
  align-items: center; gap: 7px; min-width: 0;
}
.sg-ms-cols {
  padding: 7px 8px; color: var(--text-dim, #9aa0aa); background: var(--bg-panel, rgba(255,255,255,.025));
  border-bottom: 1px solid var(--line, rgba(255,255,255,.08)); font-size: calc(10px * var(--sv-font-scale, 1)); font-weight: 600; letter-spacing: .035em;
}
.sg-ms-warning {
  margin: 4px 0 10px; padding: 8px 10px; border-radius: 8px;
  color: var(--danger, #f6465d); background: var(--down-soft, rgba(246, 70, 93, .08));
  border: 1px solid color-mix(in srgb, var(--danger, #f6465d) 45%, transparent); font-size: calc(12px * var(--sv-font-scale, 1));
}
.sg-ms-idx {
  flex: none; width: 22px; height: 22px; display: grid; place-items: center;
  font-size: calc(11px * var(--sv-font-scale, 1)); font-family: var(--font-mono, monospace); border-radius: 6px;
  color: var(--text-dim, #9aa0aa); background: var(--bg-core, rgba(255,255,255,.04));
}
.sg-ms-ma { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 5px; font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
.sg-ms-ma input { min-width: 0; width: 100%; }
.sg-ms-signal-cell { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 5px; min-width: 0; }
.sg-ms-slip,
.sg-ms-risk {
  display: grid; grid-template-columns: minmax(34px, 1fr) auto; align-items: center; gap: 4px; min-width: 0;
  font-size: calc(10.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); white-space: nowrap; font-variant-numeric: tabular-nums;
}
.sg-ms-slip input,
.sg-ms-risk input { width: 100%; min-width: 0; padding-left: 6px; padding-right: 4px; }
.sg-ms-slip i,
.sg-ms-risk i { font-style: normal; }
.sg-ms-risk.tp { color: var(--up, #2ebd85); }
.sg-ms-risk.sl { color: var(--down, #f6465d); }
.sg-ms-sw {
  display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 32px; min-width: 0; padding: 5px 7px;
  border-radius: 8px; cursor: pointer; user-select: none; white-space: nowrap; overflow: hidden;
  font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); text-overflow: ellipsis;
  border: 1px solid var(--line, rgba(255, 255, 255, .1)); background: var(--bg-core, rgba(255, 255, 255, .03));
}
.sg-ms-sw input { flex: none; width: 13px; height: 13px; margin: 0; cursor: pointer; }
.sg-ms-sw.buy input { accent-color: var(--up, #2ebd85); }
.sg-ms-sw.sell input { accent-color: var(--down, #f6465d); }
.sg-ms-sw.buy:has(input:checked) { color: var(--up, #2ebd85); border-color: var(--up, #2ebd85); background: var(--up-soft, rgba(46, 189, 133, .08)); }
.sg-ms-sw.sell:has(input:checked) { color: var(--down, #f6465d); border-color: var(--down, #f6465d); background: var(--down-soft, rgba(246, 70, 93, .08)); }
.sg-ms-sw.buy input:checked + span { color: var(--up, #2ebd85); }
.sg-ms-sw.sell input:checked + span { color: var(--down, #f6465d); }
.sg-ms-needs { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 12px 0 14px; }
.sg-ms-needs .sg-field input:disabled { opacity: .5; cursor: not-allowed; }
.sg-ms-summary {
  position: relative; margin: 16px 0 8px; padding: 13px 14px 13px 17px; overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--brand, #f0b90b) 38%, var(--line, transparent));
  border-radius: 11px; background: color-mix(in srgb, var(--brand, #f0b90b) 6%, var(--bg-core, #101820));
}
.sg-ms-summary::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--brand, #f0b90b); }
.sg-ms-summary > span { display: block; margin-bottom: 5px; color: var(--brand, #f0b90b); font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 700; letter-spacing: .05em; }
.sg-ms-summary p { margin: 0; color: var(--text-main, #eaecef); font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.65; }
/* 预演结果块:内嵌在摘要与底部按钮之间,与摘要条同体系但更收敛 */
.sg-ms-preview {
  margin: 10px 0 4px; padding: 12px 14px;
  border: 1px solid var(--line, rgba(255,255,255,.09)); border-radius: 11px;
  background: color-mix(in srgb, var(--bg-panel, #151e2b) 55%, transparent);
}
.sg-ms-preview-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin-bottom: 6px; }
.sg-ms-preview-head > span { color: var(--brand, #f0b90b); font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 700; letter-spacing: .05em; }
.sg-ms-preview-head > i { color: var(--text-dim, #9aa0aa); font-size: calc(10.5px * var(--sv-font-scale, 1)); font-style: normal; }
.sg-ms-preview-head > em {
  padding: 2px 7px; border-radius: 999px; font-size: calc(10px * var(--sv-font-scale, 1)); font-style: normal;
  color: var(--brand, #f0b90b); background: rgba(240,185,11,.1); border: 1px solid rgba(240,185,11,.3);
}
.sg-ms-preview-main { margin: 0 0 8px; color: var(--text-main, #eaecef); font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.65; }
.sg-ms-preview b.up { color: var(--up, #2ebd85); }
.sg-ms-preview b.down { color: var(--down, #f6465d); }
.sg-ms-preview-trades { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 3px 14px; margin: 0 0 8px; padding: 0; list-style: none; }
.sg-ms-preview-trades li { display: flex; justify-content: space-between; gap: 8px; color: var(--text-dim, #9aa0aa); font-size: calc(11px * var(--sv-font-scale, 1)); }
.sg-ms-preview-more { margin: 0 0 8px; color: var(--text-dim, #9aa0aa); font-size: calc(10.5px * var(--sv-font-scale, 1)); }
.sg-ms-preview-legs { margin: 0 0 8px; padding: 0; list-style: none; }
.sg-ms-preview-legs li { color: var(--text-dim, #9aa0aa); font-size: calc(11px * var(--sv-font-scale, 1)); line-height: 1.6; overflow-wrap: anywhere; }
.sg-ms-preview-warnings { margin: 0 0 8px; padding: 8px 10px; border-radius: 8px; list-style: none; background: rgba(240,185,11,.07); border: 1px solid rgba(240,185,11,.26); }
.sg-ms-preview-warnings li { color: var(--text-main, #eaecef); font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.6; }
.sg-ms-preview-caveats summary { color: var(--text-dim, #9aa0aa); font-size: calc(10.5px * var(--sv-font-scale, 1)); cursor: pointer; }
.sg-ms-preview-caveats ul { margin: 5px 0 0; padding-left: 16px; }
.sg-ms-preview-caveats li { color: var(--text-dim, #9aa0aa); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.55; }
@media (max-width: 560px) {
  .sg-ms-preview { padding: 10px 11px; }
  .sg-ms-preview-trades { grid-template-columns: 1fr; }
}
.sg-ms-execution { align-items: end; }
.sg-modal.wide.sg-ms-modal { width: min(1120px, calc(100vw - 32px)); max-width: 1120px; }
.sg-ms-table {
  overflow: hidden; border: 1px solid var(--line, rgba(255,255,255,.09)); border-radius: 11px;
  background: color-mix(in srgb, var(--bg-core, #101820) 60%, transparent);
}
.sg-ms-compact-wrap { min-width: 0; border-bottom: 1px solid var(--line, rgba(255,255,255,.07)); transition: background .15s ease; }
.sg-ms-compact-wrap:last-child { border-bottom: 0; }
.sg-ms-compact-wrap:hover { background: color-mix(in srgb, var(--brand, #f0b90b) 2.5%, transparent); }
.sg-ms-compact-wrap.duplicate {
  outline: 1px solid color-mix(in srgb, var(--danger, #f6465d) 74%, transparent); outline-offset: -1px;
  background: var(--down-soft, rgba(246,70,93,.07));
}
.sg-ms-compact-main { padding: 7px 8px; }
.sg-ms-compact-main > * { min-width: 0; max-width: 100%; }
.sg-ms-compact-main .sg-input { min-width: 0; width: 100%; height: 32px; padding-top: 5px; padding-bottom: 5px; }
.sg-ms-toggle { min-width: 0; min-height: 30px; padding: 5px 7px; font-size: calc(10.5px * var(--sv-font-scale, 1)); white-space: nowrap; }
.sg-ms-del { display: inline-grid; place-items: center; width: 32px; min-width: 32px; height: 32px; padding: 0; }
.sg-ms-details {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 10px 8px 11px 41px;
  border-top: 1px dashed var(--line, rgba(255,255,255,.09)); background: color-mix(in srgb, var(--bg-panel, #151e2b) 38%, transparent);
}
.sg-ms-details[hidden] { display: none; }
.sg-ms-config-card { min-width: 0; padding: 9px; border: 1px solid var(--line, rgba(255,255,255,.09)); border-radius: 9px; background: var(--bg-panel, rgba(255,255,255,.025)); }
.sg-ms-config-card.buy { border-top: 2px solid color-mix(in srgb, var(--up, #2ebd85) 70%, transparent); }
.sg-ms-config-card.sell { border-top: 2px solid color-mix(in srgb, var(--down, #f6465d) 70%, transparent); }
.sg-ms-config-card.disabled { opacity: .48; }
.sg-ms-config-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.sg-ms-config-head b { color: var(--text-main, #eaecef); font-size: calc(12px * var(--sv-font-scale, 1)); }
.sg-ms-config-head span { color: var(--text-dim, #9aa0aa); font-size: calc(10px * var(--sv-font-scale, 1)); }
.sg-ms-advanced-summary { margin: 0 0 7px; color: var(--text-dim, #9aa0aa); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.4; overflow-wrap: anywhere; }
.sg-ms-config-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.sg-ms-config-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; color: var(--text-dim, #9aa0aa); font-size: calc(11px * var(--sv-font-scale, 1)); }
.sg-ms-config-field small { min-height: 25px; color: var(--text-dim, #9aa0aa); font-size: calc(10px * var(--sv-font-scale, 1)); line-height: 1.3; }
.sg-ms-config-field .sg-input-wrap { width: 100%; }
.sg-ms-config-field input { min-width: 0; width: 100%; }
.sg-ms-row-error { margin: 0 8px 9px 41px; padding: 7px 9px; border-radius: 8px; color: var(--danger, #f6465d); background: var(--down-soft, rgba(246,70,93,.08)); font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.sg-ms-invalid { border-color: var(--danger, #f6465d) !important; box-shadow: 0 0 0 2px color-mix(in srgb, var(--danger, #f6465d) 18%, transparent); }
.sg-perp-warning {
  margin: 0 0 14px; padding: 11px 13px; border-radius: 10px;
  color: var(--text-main, #eaecef); background: rgba(240,185,11,.07);
  border: 1px solid rgba(240,185,11,.28); font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.65;
}
.sg-perp-warning b { color: var(--brand, #f0b90b); }
.sg-perp-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px 14px; }
.sg-perp-summary { margin-top: 14px; }
.sg-market-chip.perp { color: var(--brand, #f0b90b); border-color: rgba(240,185,11,.35); }
@media (max-width: 900px) {
  .sg-ms-cols { display: none; }
  .sg-ms-compact-main {
    grid-template-columns: 24px minmax(128px, 1fr) minmax(100px, .8fr) 36px;
    grid-template-areas:
      "idx period ma delete"
      ". buy sell delete"
      ". signal signal delete"
      ". tp sl delete";
    gap: 7px; padding: 9px;
  }
  .sg-ms-idx { grid-area: idx; }
  .sg-ms-compact-main > [data-ms="interval"] { grid-area: period; }
  .sg-ms-ma { grid-area: ma; }
  .sg-ms-sw.buy { grid-area: buy; }
  .sg-ms-sw.sell { grid-area: sell; }
  .sg-ms-signal-cell { grid-area: signal; }
  .sg-ms-risk.tp { grid-area: tp; }
  .sg-ms-risk.sl { grid-area: sl; }
  .sg-ms-del { grid-area: delete; align-self: start; }
  .sg-ms-details { padding-left: 40px; }
  .sg-ms-row-error { margin-left: 40px; }
}
@media (max-width: 560px) {
  .sg-market-mode { grid-template-columns: 1fr 1fr; }
  .sg-market-mode button { justify-content: center; padding-inline: 8px; }
  .sg-market-mode p { grid-column: 1 / -1; justify-self: stretch; margin: 4px 8px 6px; line-height: 1.5; }
  .sg-perp-grid { grid-template-columns: 1fr; }
  .sg-modal.wide.sg-ms-modal { width: calc(100vw - 16px); }
  .sg-ms-table { overflow: visible; border: 0; border-radius: 0; background: transparent; }
  .sg-ms-compact-wrap {
    margin-bottom: 9px; overflow: hidden; border: 1px solid var(--line, rgba(255,255,255,.09)); border-radius: 10px;
    background: color-mix(in srgb, var(--bg-core, #101820) 64%, transparent);
  }
  .sg-ms-compact-wrap:last-child { border-bottom: 1px solid var(--line, rgba(255,255,255,.09)); }
  .sg-ms-compact-main {
    grid-template-columns: 24px minmax(0, 1fr) 34px;
    grid-template-areas:
      "idx period delete"
      ". ma delete"
      ". buy delete"
      ". sell delete"
      ". signal delete"
      ". tp delete"
      ". sl delete";
    align-items: center; gap: 7px; padding: 9px;
  }
  .sg-ms-sw { justify-content: flex-start; }
  .sg-ms-signal-cell { grid-template-columns: minmax(0, 1fr) auto; }
  .sg-ms-details { grid-template-columns: 1fr; padding: 9px; }
  .sg-ms-config-grid { grid-template-columns: 1fr; }
  .sg-ms-row-error { margin: 0 9px 9px; }
  .sg-ms-head { align-items: flex-start; flex-direction: column; gap: 3px; }
}

/* ===== K线形态创建器:形态多选 ===== */
.sg-pat-groups { display: flex; flex-direction: column; gap: 12px; }
.sg-pat-glabel { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); margin-bottom: 6px; }
.sg-pat-glabel span {
  margin-left: 6px; padding: 1px 6px; border-radius: 999px; font-size: calc(11px * var(--sv-font-scale, 1));
  background: var(--bg-core, rgba(255,255,255,.05));
}
.sg-pat-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.sg-pat-chip {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  padding: 5px 10px; border-radius: 999px; font-size: calc(12.5px * var(--sv-font-scale, 1));
  color: var(--text-dim, #9aa0aa); background: var(--bg-core, rgba(255,255,255,.03));
  border: 1px solid var(--line, rgba(255,255,255,.08));
}
.sg-pat-chip:hover { border-color: var(--brand, #f0b90b); }
.sg-pat-chip.on { color: var(--text-main, #eaecef); border-color: var(--brand, #f0b90b); background: rgba(240,185,11,.1); }
.sg-pat-chip input { accent-color: var(--brand, #f0b90b); }

/* 卡片底部:主按钮占满宽度;若同时有教学按钮(现成模式卡),两者并排,教学在左不抢主按钮的位置 */
.sg-card-foot { display: flex; align-items: center; gap: 8px; }
.sg-card-foot .sg-btn { flex: 1; justify-content: center; }
.sg-soon { font-size: calc(12.5px * var(--sv-font-scale, 1)); font-weight: 600; color: var(--text-dim, #9aa0aa); padding: 8px 0; }

/* ---------- 按钮 ---------- */
.sg-btn {
  appearance: none; cursor: pointer; font-size: calc(13px * var(--sv-font-scale, 1)); font-weight: 600;
  padding: 8px 16px; border-radius: 9px; border: 1px solid transparent; transition: filter .15s, opacity .15s;
}
.sg-btn:disabled { opacity: .55; cursor: default; }
.sg-btn.primary { background: var(--brand, #f0b90b); color: #1a1400; }
.sg-btn.primary:hover:not(:disabled) { filter: brightness(1.06); }
.sg-btn.ghost { background: transparent; color: var(--text-main, #eaecef); border-color: var(--line-strong, rgba(255, 255, 255, .18)); }
.sg-btn.ghost:hover { background: var(--bg-hover, rgba(255, 255, 255, .05)); }
.sg-btn.small { padding: 6px 12px; font-size: calc(12.5px * var(--sv-font-scale, 1)); }

/* ---------- 我的策略:总览卡 ---------- */
.sg-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
.sg-sum-card { padding: 14px 16px; border-radius: 12px; background: var(--bg-elevated, var(--bg-panel, #16181f)); border: 1px solid var(--line, rgba(255, 255, 255, .08)); }
.sg-sum-label { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); margin-bottom: 6px; }
.sg-sum-val { font-size: calc(20px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-main, #eaecef); }
.sg-sum-val i { font-size: calc(14px * var(--sv-font-scale, 1)); font-weight: 500; color: var(--text-dim, #9aa0aa); font-style: normal; }
.sg-sum-val small { font-size: calc(13px * var(--sv-font-scale, 1)); font-weight: 600; }

.sg-pnl.up { color: var(--up, #f6465d); }
.sg-pnl.down { color: var(--down, #0ecb81); }

.sg-mine-head { display: flex; align-items: center; justify-content: space-between; margin: 4px 0 10px; }
.sg-mine-head h3 { margin: 0; font-size: calc(15px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); }

/* ---------- 策略列表行 ---------- */
.sg-list { display: flex; flex-direction: column; gap: 10px; }
.sg-row {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 13px 16px; border-radius: 12px;
  background: var(--bg-elevated, var(--bg-panel, #16181f)); border: 1px solid var(--line, rgba(255, 255, 255, .08));
}
.sg-row-main { min-width: 0; flex: 1; }
.sg-row-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 7px; }
.sg-row-name { font-size: calc(14.5px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-main, #eaecef); }
.sg-sym { font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 600; color: var(--text-dim, #9aa0aa); }
.sg-status { font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 600; padding: 2px 8px; border-radius: 999px; }
.sg-status.run { color: #0ecb81; background: rgba(14, 203, 129, .13); }
.sg-status.pause { color: #f0b90b; background: rgba(240, 185, 11, .13); }
.sg-status.stop { color: var(--text-dim, #9aa0aa); background: rgba(150, 150, 150, .13); }
.sg-row-metrics { display: flex; flex-wrap: wrap; gap: 14px; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
.sg-row-metrics b { color: var(--text-main, #eaecef); font-weight: 600; }
.sg-row-metrics .sg-pnl { font-weight: 700; }
.sg-muted { color: var(--text-dim, #9aa0aa); }
.sg-err { margin-top: 6px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--warn, #f0b90b); }
.sg-row-actions { display: flex; gap: 6px; flex: none; }
.sg-mini {
  appearance: none; cursor: pointer; font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 600;
  padding: 6px 11px; border-radius: 8px; color: var(--text-main, #eaecef);
  background: transparent; border: 1px solid var(--line-strong, rgba(255, 255, 255, .18));
}
.sg-mini:hover { background: var(--bg-hover, rgba(255, 255, 255, .05)); }
.sg-mini:disabled { opacity: .5; cursor: default; }
.sg-mini.danger { color: #f6465d; border-color: rgba(246, 70, 93, .4); }
.sg-mini.danger:hover { background: rgba(246, 70, 93, .1); }

/* ---------- 开通模拟盘 ---------- */
.sg-open { max-width: 520px; margin: 20px auto; padding: 24px; text-align: center; border-radius: 14px; background: var(--bg-elevated, var(--bg-panel, #16181f)); border: 1px solid var(--line, rgba(255, 255, 255, .08)); }
.sg-open h3 { margin: 0 0 10px; font-size: calc(17px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); }
.sg-open p { margin: 0 0 16px; font-size: calc(13px * var(--sv-font-scale, 1)); line-height: 1.7; color: var(--text-dim, #9aa0aa); }
.sg-open p b, .sg-open p strong { color: var(--text-main, #eaecef); }
.sg-agree { display: flex; align-items: center; justify-content: center; gap: 7px; font-size: calc(13px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); margin-bottom: 16px; cursor: pointer; }

/* ---------- 弹窗 ---------- */
.sg-mask { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 20px; background: transparent; /* 遮罩全透明(糖哥 2026-08-10) */ }
.sg-modal { width: 100%; max-width: 420px; max-height: 88vh; overflow: auto; padding: 20px; border-radius: 16px; background: var(--bg-elevated, var(--bg-panel, #16181f)); border: 1px solid var(--line-strong, rgba(255, 255, 255, .15)); box-shadow: var(--shadow-lift, 0 16px 42px rgba(0, 0, 0, .48)); }
.sg-modal.wide { max-width: 620px; }
.sg-modal-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.sg-modal-title-row { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.sg-modal-head b { font-size: calc(15.5px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); }
.sg-modal-head .sg-teach.active { color: var(--brand, #f0b90b); border-color: var(--brand, #f0b90b); }
.sg-x { appearance: none; background: none; border: none; cursor: pointer; font-size: calc(16px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); padding: 2px 6px; }
.sg-x:hover { color: var(--text-main, #eaecef); }
.sg-modal-desc { margin: 0 0 14px; font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.6; color: var(--text-dim, #9aa0aa); }
.sg-form { display: flex; flex-direction: column; gap: 12px; margin-bottom: 14px; }
.sg-field { display: flex; flex-direction: column; gap: 6px; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
/* display:flex 会压过 hidden 属性,下单表单靠 hidden 切字段,必须显式关掉 */
.sg-field[hidden] { display: none; }
.sg-input-wrap { position: relative; display: flex; align-items: center; }
.sg-field input, .sg-field select {
  width: 100%; box-sizing: border-box; padding: 9px 11px; font-size: calc(14px * var(--sv-font-scale, 1));
  color: var(--text-main, #eaecef); background: var(--bg-panel, rgba(255, 255, 255, .03));
  border: 1px solid var(--line-strong, rgba(255, 255, 255, .18)); border-radius: 9px;
}
.sg-field input:focus, .sg-field select:focus { outline: none; border-color: var(--brand, #f0b90b); }
.sg-unit { position: absolute; right: 11px; font-style: normal; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); pointer-events: none; }
.sg-modal-note { font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.5; color: var(--text-dim, #9aa0aa); margin-bottom: 16px; }
.sg-modal-note strong { color: var(--text-main, #eaecef); }
.sg-modal-foot { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }

.sg-detail-meta { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 14px; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
.sg-detail-meta b { color: var(--text-main, #eaecef); font-weight: 600; }
.sg-detail-table-wrap { overflow-x: auto; border: 1px solid var(--line, rgba(255, 255, 255, .08)); border-radius: 10px; margin-bottom: 16px; }
.sg-detail-table { width: 100%; border-collapse: collapse; font-size: calc(12.5px * var(--sv-font-scale, 1)); }
.sg-detail-table th, .sg-detail-table td { padding: 8px 10px; text-align: right; white-space: nowrap; }
.sg-detail-table th:first-child, .sg-detail-table td:first-child,
.sg-detail-table th:nth-child(2), .sg-detail-table td:nth-child(2),
.sg-detail-table td:last-child { text-align: left; }
.sg-detail-table thead th { color: var(--text-dim, #9aa0aa); font-weight: 600; border-bottom: 1px solid var(--line, rgba(255, 255, 255, .08)); }
.sg-detail-table tbody tr + tr td { border-top: 1px solid var(--line, rgba(255, 255, 255, .05)); }
.sg-detail-table td.up { color: var(--up, #f6465d); font-weight: 600; }
.sg-detail-table td.down { color: var(--down, #0ecb81); font-weight: 600; }

/* ---------- 跟单:公开开关 + 跟单源列表 ---------- */
.sg-mini.on { color: #0ecb81; border-color: rgba(14, 203, 129, .4); background: rgba(14, 203, 129, .1); }
.sg-copy-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.sg-copy-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid var(--line, rgba(255, 255, 255, .08)); border-radius: 10px; }
.sg-copy-main { min-width: 0; }
.sg-copy-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; font-size: calc(14px * var(--sv-font-scale, 1)); }
.sg-copy-metrics { display: flex; gap: 14px; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
.sg-copy-metrics .sg-pnl { font-weight: 700; }

/* ---------- 响应式 ---------- */
@media (max-width: 720px) {
  .sg-summary { grid-template-columns: repeat(2, 1fr); }
  .sg-row { flex-direction: column; align-items: stretch; }
  .sg-row-actions { justify-content: flex-end; }
}


/* ===== 机会扫描:突破式/埋伏式(2026-08-06 自 database.css 原样迁入,规则零改动) ===== */
.scr-tabs { display: flex; gap: 4px; }
.scr-tab {
  padding: 5px 12px; border-radius: 7px; cursor: pointer; font-size: calc(12px * var(--sv-font-scale, 1));
  background: none; color: var(--text-muted, #8a8f9c);
  border: 1px solid transparent;
}
.scr-tab:hover { color: var(--text-main, #f4f5f7); }
.scr-tab.active {
  color: var(--text-main, #f4f5f7);
  background: rgba(255,255,255,0.05);
  border-color: var(--line-strong, rgba(255,255,255,0.09));
}
.scr-list { display: flex; flex-direction: column; }
.scr-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
.scr-duo .scr-panel { min-width: 0; }
.scr-duo .scr-row { grid-template-columns: 62px 76px 84px 1fr 64px 26px; gap: 8px; font-size: calc(12px * var(--sv-font-scale, 1)); }
.scr-duo .scr-metric, .scr-duo .scr-extra { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.scr-title-btn { background: none; border: 0; padding: 0; cursor: pointer; font: inherit; color: inherit; display: inline-flex; align-items: center; gap: 6px; }
.scr-title-btn:hover { color: var(--warn, #f0b90b); }
.scr-title-hint { font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 500; color: var(--text-muted, #8a8f9c); }
.scr-title-btn:hover .scr-title-hint { color: var(--warn, #f0b90b); }
.scr-more { padding: 8px 4px 2px; font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); text-align: center; }
.il-modal.scrh-modal { width: min(880px, calc(100vw - 32px)); max-height: calc(100vh - 64px); }
.scrh-body { display: block; padding: 14px 18px 18px; }
.scrh-iv { font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); border: 1px solid var(--line-soft, rgba(255,255,255,0.08)); border-radius: 999px; padding: 1px 8px; margin-left: 6px; }
.scrh-sum { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.scrh-card { border: 1px solid var(--line-soft, rgba(255,255,255,0.08)); border-radius: 10px; padding: 10px 12px; background: var(--bg-core, #0b0e11); }
.scrh-k { font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.scrh-v { font-family: var(--font-mono); font-size: calc(22px * var(--sv-font-scale, 1)); font-weight: 700; margin: 2px 0; }
.scrh-v.up { color: var(--up, #2ebd85); } .scrh-v.down { color: var(--down, #f6465d); }
.scrh-s { font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-secondary, #c9cdd6); }
.scrh-note { margin: 12px 0 10px; font-size: calc(11px * var(--sv-font-scale, 1)); line-height: 1.7; color: var(--text-muted, #8a8f9c); }
.scrh-tablewrap { max-height: 46vh; overflow: auto; border: 1px solid var(--line-soft, rgba(255,255,255,0.08)); border-radius: 10px; }
.scrh-table { width: 100%; border-collapse: collapse; font-size: calc(12.5px * var(--sv-font-scale, 1)); }
.scrh-table th { position: sticky; top: 0; background: var(--bg-elevated, #14181f); text-align: left; padding: 8px 10px; font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); font-weight: 500; }
.scrh-table td { padding: 7px 10px; border-top: 1px solid var(--line-soft, rgba(255,255,255,0.05)); font-family: var(--font-mono); }
.scrh-table td.up { color: var(--up, #2ebd85); } .scrh-table td.down { color: var(--down, #f6465d); }
.scrh-sym { color: var(--text-main, #f4f5f7); font-weight: 700; text-decoration: none; }
.scrh-sym:hover { color: var(--warn, #f0b90b); }
.scr-row {
  display: grid;
  grid-template-columns: 72px 84px 110px 1fr 130px 32px;
  gap: 10px; align-items: center;
  text-decoration: none; color: inherit;
  transition: background .12s;
  padding: 10px 4px;
  border-bottom: 1px solid var(--line-soft, rgba(255,255,255,0.04));
  font-size: calc(12.5px * var(--sv-font-scale, 1));
}
.scr-row:last-child { border-bottom: none; }
.scr-row:hover { background: var(--accent-soft, rgba(240,185,11,0.08)); }
.scr-row:hover .scr-sym { color: var(--warn, #f0b90b); }
.scr-sym { font-weight: 700; color: var(--text-main, #f4f5f7); text-decoration: none; font-family: 'JetBrains Mono', monospace; }
.scr-tag { padding: 2px 8px; border-radius: 999px; font-size: calc(11px * var(--sv-font-scale, 1)); text-align: center; }
.scr-tag.up { color: var(--up, #2ebd85); background: rgba(46,189,133,0.10); border: 1px solid rgba(46,189,133,0.30); }
.scr-tag.watch { color: #f0b90b; background: rgba(240,185,11,0.08); border: 1px solid rgba(240,185,11,0.28); }
.scr-price { font-family: 'JetBrains Mono', monospace; color: var(--text-main, #f4f5f7); }
.scr-metric { color: var(--text-muted, #8a8f9c); }
.scr-extra { color: var(--text-muted, #8a8f9c); font-size: calc(11.5px * var(--sv-font-scale, 1)); text-align: right; }
.scr-mkt { color: var(--text-muted, #8a8f9c); font-size: calc(11px * var(--sv-font-scale, 1)); text-align: center; border: 1px solid var(--line-soft, rgba(255,255,255,0.06)); border-radius: 4px; padding: 1px 0; }
.scr-empty { padding: 26px 0; text-align: center; color: var(--text-muted, #8a8f9c); font-size: calc(12.5px * var(--sv-font-scale, 1)); }
/* ⚠️ 从 database.css 迁过来时把 @media 那一行漏了(对照 61310e9e:database.css:471),
   结果这两条在**所有屏幕**生效,机会扫描行的指标列和市场标签被永久隐藏。 */
@media (max-width: 720px) {
  .scr-row { grid-template-columns: 60px 74px 1fr 100px; }
  .scr-metric, .scr-mkt { display: none; }
}

/* 市场细分条(糖哥 2026-08-06):全部/加密/美股/贵金属;后两者仅日线扫描,非日线档锁定 */
.scr-mkt-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.scr-mkt-sw { display: inline-flex; gap: 2px; padding: 2px; border-radius: 8px; background: var(--bg-panel, rgba(255,255,255,.04)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.scr-mkt-btn { appearance: none; background: none; border: none; cursor: pointer; font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 600; padding: 4px 12px; border-radius: 6px; color: var(--text-dim, #9aa0aa); }
.scr-mkt-btn:hover { color: var(--text-main, #eaecef); }
.scr-mkt-btn.on { background: var(--bg-elevated, rgba(255,255,255,.09)); color: var(--text-main, #eaecef); }
.scr-mkt-note { font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--warn, #f0b90b); }
.scr-tab.locked, .scr-tab:disabled { opacity: .35; cursor: not-allowed; }

/* 页头两端布局与数据页/复盘页同构。 */
/* ===== 交易所资产：普通用户永久只读 ===== */
.lv-safety { display: flex; flex-direction: column; gap: 5px; margin-bottom: 16px; padding: 11px 13px; border-radius: 10px; font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.65; color: var(--text-dim, #9aa0aa); background: var(--bg-panel, rgba(255,255,255,.03)); border: 1px solid var(--line, rgba(255,255,255,.08)); border-left: 3px solid var(--up, #0ecb81); }
.lv-safety b { color: var(--up, #0ecb81); font-size: calc(13px * var(--sv-font-scale, 1)); }
.lv-safety strong { color: var(--text-main, #eaecef); font-weight: 600; }
.lv-head { display: flex; align-items: center; justify-content: space-between; margin: 4px 0 12px; }
.lv-head h3 { margin: 0; font-size: calc(15px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); }
.lv-list { display: flex; flex-direction: column; gap: 10px; }
.lv-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 16px; border-radius: 12px; background: var(--bg-elevated, var(--bg-panel, #16181f)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-row-title { display: flex; align-items: center; gap: 8px; font-size: calc(14px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); margin-bottom: 5px; }
.lv-tag { font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 600; padding: 2px 8px; border-radius: 999px; color: var(--up, #0ecb81); background: rgba(14,203,129,.13); }
.lv-row-sub { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); font-family: var(--font-mono, monospace); }
.lv-row-actions { display: flex; gap: 6px; flex: none; }
.lv-detail { margin-top: 14px; padding: 13px 15px; border-radius: 12px; background: var(--bg-elevated, var(--bg-panel, #16181f)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-detail-h { font-size: calc(13.5px * var(--sv-font-scale, 1)); font-weight: 600; color: var(--text-main, #eaecef); margin-bottom: 10px; }
.lv-bal { display: flex; flex-direction: column; }
.lv-bal-row { display: grid; grid-template-columns: 80px 1fr 1fr auto; gap: 10px; padding: 7px 2px; font-size: calc(12.5px * var(--sv-font-scale, 1)); border-top: 1px solid var(--line, rgba(255,255,255,.05)); }
.lv-bal-row:first-child { border-top: none; }
.lv-bal-a { font-weight: 700; color: var(--text-main, #eaecef); }
.lv-bal-t, .lv-bal-u { font-family: var(--font-mono, monospace); color: var(--text-main, #eaecef); }
@media (max-width: 720px) { .lv-row { flex-direction: column; align-items: stretch; } .lv-row-actions { justify-content: flex-end; } .lv-bal-row { grid-template-columns: 70px 1fr; } }

.page-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.page-header > div:first-child { min-width: 0; }  /* 标题块可收缩,否则占满宽度把按钮挤下一行 */
.page-header-actions { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
@media (max-width: 720px) { .page-header { flex-direction: column; align-items: stretch; } }

/* 只读连接承诺：普通用户能力与管理员生产交易能力明确分区。 */
.lv-pledge { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 12px 0 4px; padding: 10px 12px; border-radius: 10px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); background: var(--bg-panel, rgba(255,255,255,.03)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-pledge b { color: #0ecb81; font-weight: 700; }
.lv-pledge span { display: inline-flex; align-items: center; gap: 5px; }
.lv-readonly-note { display: grid; gap: 4px; margin: 4px 0 12px; padding: 11px 12px; border-radius: 10px; color: var(--text-dim, #9aa0aa); background: rgba(14,203,129,.06); border: 1px solid rgba(14,203,129,.24); font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.6; }
.lv-readonly-note b { color: var(--up, #0ecb81); font-size: calc(13px * var(--sv-font-scale, 1)); }
.lv-bind-teach { display: grid; gap: 8px; margin: 2px 0 12px; padding: 11px 12px; border-radius: 10px; color: var(--text-dim, #9aa0aa); background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid color-mix(in srgb, var(--brand, #f0b90b) 32%, var(--line, transparent)); font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.55; }
.lv-bind-teach[hidden] { display: none; }
.lv-bind-teach > b { color: var(--brand, #f0b90b); font-size: calc(12.5px * var(--sv-font-scale, 1)); }
.lv-bind-teach ol { margin: 0; padding-left: 18px; }
.lv-bind-teach li { margin: 3px 0; }
.lv-bind-teach strong, .lv-bind-teach-grid b { color: var(--text-main, #eaecef); }
.lv-bind-teach-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.lv-bind-teach-grid span { padding: 7px 8px; border-radius: 8px; background: var(--bg-panel, rgba(255,255,255,.03)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-bind-teach p { margin: 0; color: var(--text-muted, #71757f); }
.lv-permission-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-bottom: 14px; }
.lv-permission-grid > div { display: grid; gap: 3px; padding: 9px 10px; border-radius: 9px; background: var(--bg-panel, rgba(255,255,255,.03)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-permission-grid span { font: 700 9.5px/1.2 var(--font-mono, monospace); letter-spacing: .08em; }
.lv-permission-grid b { color: var(--text-main, #eaecef); font-size: calc(12px * var(--sv-font-scale, 1)); }
.lv-permission-grid .allow span { color: var(--up, #0ecb81); }
.lv-permission-grid .deny span { color: var(--down, #f6465d); }

/* 管理员 Bitget 生产交易入口；按钮默认锁定，后端角色确认后解锁。 */
.lv-execution-gate {
  position: relative; margin-top: 20px; padding: 18px; overflow: hidden; border-radius: 14px;
  background: var(--bg-elevated, var(--bg-panel, #16181f));
  border: 1px solid color-mix(in srgb, var(--brand, #f0b90b) 34%, var(--line-strong, transparent));
}
.lv-execution-gate::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--brand, #f0b90b); }
.lv-execution-head, .lv-execution-foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.lv-execution-kicker { margin-bottom: 6px; color: var(--brand, #f0b90b); font: 700 9.5px/1 var(--font-mono, monospace); letter-spacing: .14em; }
.lv-execution-title-row { display: flex; align-items: center; gap: 8px; }
.lv-execution-title-row h3 { margin: 0; color: var(--text-main, #eaecef); font-size: calc(17px * var(--sv-font-scale, 1)); }
.lv-execution-statuses { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.lv-stage-chip { padding: 4px 8px; border-radius: 999px; font-size: calc(10.5px * var(--sv-font-scale, 1)); font-weight: 700; white-space: nowrap; }
.lv-stage-chip.locked { color: var(--text-dim, #9aa0aa); background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-execution-copy { max-width: 920px; margin: 13px 0 15px; color: var(--text-dim, #9aa0aa); font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.65; }
.lv-execution-rail { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; margin-bottom: 15px; }
.lv-rail-step { display: grid; grid-template-columns: 30px minmax(0,1fr); align-items: center; gap: 9px; min-height: 60px; padding: 10px; border-radius: 10px; color: var(--text-dim, #9aa0aa); background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-rail-step > span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: var(--text-muted, #71757f); background: var(--bg-panel, rgba(255,255,255,.03)); font: 700 10px/1 var(--font-mono, monospace); }
.lv-rail-step div { display: grid; gap: 3px; min-width: 0; }
.lv-rail-step b { color: var(--text-main, #eaecef); font-size: calc(12px * var(--sv-font-scale, 1)); }
.lv-rail-step small { color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); }
.lv-rail-step.active { border-color: rgba(14,203,129,.32); background: rgba(14,203,129,.05); }
.lv-rail-step.active > span { color: var(--up, #0ecb81); background: rgba(14,203,129,.12); }
.lv-rail-step.locked { opacity: .65; }
.lv-execution-foot { padding-top: 13px; border-top: 1px dashed var(--line, rgba(255,255,255,.08)); }
.lv-execution-foot > span { color: var(--text-muted, #71757f); font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.55; }
.lv-execution-foot .sg-btn:disabled { opacity: .55; cursor: not-allowed; }
.lv-admin-exchange-entry { min-width: 220px; display: inline-flex; align-items: flex-start; flex-direction: column; gap: 2px; text-align: left; }
.lv-admin-exchange-entry span { font-weight: 750; }
.lv-admin-exchange-entry small { font-size: calc(10px * var(--sv-font-scale, 1)); font-weight: 500; opacity: .72; }
.lv-execution-foot .sg-btn.production-ready { border-color: rgba(240,185,11,.72); color: #111827; background: var(--brand, #f0b90b); opacity: 1; box-shadow: 0 8px 20px rgba(240,185,11,.14); }
.lv-execution-foot .sg-btn.production-ready:hover { filter: brightness(1.04); transform: translateY(-1px); }
@media (max-width: 720px) {
  .lv-execution-rail { grid-template-columns: 1fr; }
  .lv-execution-head, .lv-execution-foot { align-items: flex-start; flex-direction: column; }
  .lv-execution-statuses { justify-content: flex-start; }
  .lv-execution-foot .sg-btn { width: 100%; }
}

/* 管理员 Bitget 生产交易：仍在 strategy 页内，视觉沿用交易执行卡，不导入私有后台皮肤。 */
.sg-modal.lv-admin-live-modal {
  display: flex; flex-direction: column; width: min(1180px, calc(100vw - 32px)); max-width: 1180px;
  max-height: min(92vh, 980px); padding: 0; overflow: hidden; border-color: color-mix(in srgb, var(--brand, #f0b90b) 34%, var(--line-strong, transparent));
}
.lv-admin-live-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 20px 22px 16px; border-bottom: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-modal-head > div:first-child { min-width: 0; }
.lv-admin-live-modal-head > div:last-child { display: flex; align-items: center; gap: 9px; flex: none; }
.lv-admin-live-modal-head h3 { margin: 4px 0 5px; color: var(--text-main, #eaecef); font-size: calc(20px * var(--sv-font-scale, 1)); }
.lv-admin-live-modal-head p { margin: 0; color: var(--text-dim, #9aa0aa); font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.55; }
.lv-admin-live-kicker { display: block; color: var(--brand, #f0b90b); font: 700 9.5px/1.2 var(--font-mono, monospace); letter-spacing: .14em; }
.lv-admin-live-badge { padding: 5px 8px; border-radius: 999px; color: #fff; background: #c83b4d; font: 750 9.5px/1 var(--font-mono, monospace); white-space: nowrap; }
.lv-admin-live-boundary { display: flex; align-items: center; gap: 10px; padding: 9px 22px; color: var(--text-dim, #9aa0aa); background: rgba(246,70,93,.075); border-bottom: 1px solid rgba(246,70,93,.22); font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-boundary b { color: #ff6b7d; white-space: nowrap; }
.lv-admin-live-status { min-height: 0; padding: 0 22px; color: var(--text-dim, #9aa0aa); font-size: calc(12px * var(--sv-font-scale, 1)); transition: padding .15s ease; }
.lv-admin-live-status:not(:empty) { padding-top: 9px; padding-bottom: 9px; border-bottom: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-status.success { color: var(--up, #0ecb81); background: rgba(14,203,129,.055); }
.lv-admin-live-status.error { color: var(--down, #f6465d); background: rgba(246,70,93,.055); }
#lvAdminLiveBody { min-height: 180px; padding: 18px 22px 22px; overflow-y: auto; }
.lv-admin-live-rail { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; margin-bottom: 14px; }
.lv-admin-live-rail > div { display: flex; align-items: center; gap: 8px; min-height: 38px; padding: 8px 10px; border-radius: 9px; color: var(--text-muted, #71757f); background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-rail span { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--bg-panel, rgba(255,255,255,.03)); font: 700 9px/1 var(--font-mono, monospace); }
.lv-admin-live-rail b { font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-rail .on { color: var(--text-main, #eaecef); border-color: rgba(14,203,129,.28); background: rgba(14,203,129,.045); }
.lv-admin-live-rail .on span { color: var(--up, #0ecb81); background: rgba(14,203,129,.12); }
.lv-admin-live-security { margin-bottom: 14px; padding: 14px; border-radius: 11px; background: var(--bg-panel, rgba(255,255,255,.03)); border: 1px solid rgba(240,185,11,.28); }
.lv-admin-live-security.ready { border-color: rgba(14,203,129,.28); }
.lv-admin-live-security b { display: block; margin-top: 4px; color: var(--text-main, #eaecef); font-size: calc(13.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-security p { margin: 5px 0 0; color: var(--text-dim, #9aa0aa); font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.55; }
.lv-admin-live-security-head, .lv-admin-live-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.lv-admin-live-security-head > span, .lv-admin-live-section-head > span { color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); white-space: nowrap; }
.lv-admin-live-totp-actions, .lv-admin-live-password-reset { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 10px; margin-top: 12px; }
.lv-admin-live-totp-actions .sg-field, .lv-admin-live-password-reset .sg-field { margin: 0; }
.lv-admin-live-once { display: grid; gap: 9px; margin-top: 12px; padding: 11px; border-radius: 9px; background: rgba(14,203,129,.055); border: 1px solid rgba(14,203,129,.24); }
.lv-admin-live-once > strong { color: var(--up, #0ecb81); font-size: calc(12px * var(--sv-font-scale, 1)); }
.lv-admin-copy-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 7px; }
.lv-admin-copy-row input { min-width: 0; }
.lv-admin-live-form, .lv-admin-live-connections { margin-top: 14px; padding: 14px; border-radius: 11px; background: var(--bg-panel, rgba(255,255,255,.025)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-section-head { align-items: center; margin-bottom: 12px; }
.lv-admin-live-section-head h4 { margin: 4px 0 0; color: var(--text-main, #eaecef); font-size: calc(14px * var(--sv-font-scale, 1)); }
.lv-admin-live-form-lock { display: flex; align-items: flex-start; gap: 9px; margin-bottom: 12px; padding: 10px 11px; border-radius: 9px; color: var(--text-dim, #9aa0aa); background: rgba(240,185,11,.055); border: 1px solid rgba(240,185,11,.22); font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.5; }
.lv-admin-live-form-lock b { flex: none; color: var(--brand, #f0b90b); }
.lv-admin-live-gated { min-width: 0; margin: 0; padding: 0; border: 0; }
.lv-admin-live-fields { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 11px; }
.lv-admin-live-passphrase { grid-column: 1 / -1; }
.lv-admin-live-permissions { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; margin-top: 12px; }
.lv-admin-live-permissions > div { display: grid; grid-template-columns: 26px minmax(0,1fr); gap: 8px; align-items: center; padding: 9px; border-radius: 9px; background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-permissions b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: var(--up, #0ecb81); background: rgba(14,203,129,.1); font: 700 9px/1 var(--font-mono, monospace); }
.lv-admin-live-permissions span { color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.45; }
.lv-admin-live-permissions strong { display: block; color: var(--text-main, #eaecef); font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-agreement { margin-top: 12px; overflow: hidden; border-radius: 10px; border: 1px solid rgba(240,185,11,.24); }
.lv-admin-live-agreement-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 10px 11px; background: rgba(240,185,11,.055); border-bottom: 1px solid rgba(240,185,11,.16); }
.lv-admin-live-agreement-head > div { display: grid; gap: 3px; }
.lv-admin-live-agreement-head b { color: var(--text-main, #eaecef); font-size: calc(12px * var(--sv-font-scale, 1)); }
.lv-admin-live-agreement-head span { color: var(--brand, #f0b90b); font-size: calc(10.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-agreement-head code { max-width: 44%; overflow-wrap: anywhere; color: var(--text-muted, #71757f); font-size: calc(9px * var(--sv-font-scale, 1)); line-height: 1.35; text-align: right; }
.lv-admin-live-agreement ol { max-height: 190px; margin: 0; padding: 11px 28px 11px 32px; overflow-y: auto; color: var(--text-dim, #9aa0aa); font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.55; }
.lv-admin-live-agreement li + li { margin-top: 5px; }
.lv-admin-live-agree { display: flex; align-items: flex-start; gap: 8px; padding: 10px 11px; color: var(--text-main, #eaecef); background: var(--bg-sunken, rgba(0,0,0,.16)); border-top: 1px solid var(--line, rgba(255,255,255,.08)); font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.5; cursor: pointer; }
.lv-admin-live-agree input { margin-top: 2px; accent-color: var(--brand, #f0b90b); }
/* 2026-08-13 连接流程简化:首连时工作台收成与只读弹窗同构的窄卡片 */
.sg-modal.lv-admin-live-modal { transition: width .18s ease; }
.sg-modal.lv-admin-live-modal.connect-only { width: min(500px, calc(100vw - 32px)); }
/* 加载占位与内容淡入(2026-08-13 糖哥:打开时闪动) —— 占位定高防纵向跳,内容换入走淡入 */
.lv-admin-live-modal .sg-loading { min-height: 280px; display: flex; align-items: center; justify-content: center; }
@keyframes lvAdminFadeIn { from { opacity: 0; } to { opacity: 1; } }
#lvAdminLiveBody > * { animation: lvAdminFadeIn .16s ease; }
.lv-admin-live-modal.connect-only .lv-admin-live-modal-head p { display: none; }
.lv-admin-live-modal.connect-only .lv-admin-live-fields { grid-template-columns: 1fr; }
.lv-admin-live-modal.connect-only .lv-admin-live-form { margin-top: 10px; }
.lv-admin-live-form .lv-permission-grid { margin: 0 0 12px; }
.lv-admin-live-form .sg-modal-foot { margin-top: 12px; }
/* 2026-08-13 连接流程简化:TOTP 收窄带 / 自动识别说明行 / 协议折叠为 details / 同意勾选独立成卡 */
.lv-admin-live-security.compact { padding: 12px 14px; }
.lv-admin-live-totp-row { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 10px; margin-top: 10px; }
.lv-admin-live-totp-row .sg-field { margin: 0; }
.lv-admin-live-auto-note { margin: 10px 0 0; color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.55; }
details.lv-admin-live-agreement > summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 11px; background: rgba(240,185,11,.055); color: var(--text-main, #eaecef); font-size: calc(12px * var(--sv-font-scale, 1)); cursor: pointer; list-style: none; }
details.lv-admin-live-agreement > summary::-webkit-details-marker { display: none; }
details.lv-admin-live-agreement > summary span { color: var(--brand, #f0b90b); font-size: calc(10.5px * var(--sv-font-scale, 1)); white-space: nowrap; }
details.lv-admin-live-agreement > summary code { max-width: 30%; overflow-wrap: anywhere; color: var(--text-muted, #71757f); font-size: calc(9px * var(--sv-font-scale, 1)); line-height: 1.35; }
details.lv-admin-live-agreement > summary i { color: var(--text-muted, #71757f); font-size: calc(10px * var(--sv-font-scale, 1)); font-style: normal; white-space: nowrap; }
details.lv-admin-live-agreement[open] > summary { border-bottom: 1px solid rgba(240,185,11,.16); }
.lv-admin-live-agree { margin-top: 10px; border: 1px solid var(--line, rgba(255,255,255,.08)); border-radius: 10px; }
@media (max-width: 560px) {
  .lv-admin-live-totp-row { grid-template-columns: 1fr; align-items: stretch; }
  details.lv-admin-live-agreement > summary { flex-wrap: wrap; }
}
.lv-admin-live-submit { display: grid; grid-template-columns: minmax(0,1fr) minmax(300px,.7fr); align-items: end; gap: 16px; margin-top: 12px; }
.lv-admin-live-submit p { margin: 0; color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.5; }
.lv-admin-live-submit-actions { display: grid; grid-template-columns: minmax(130px,.55fr) minmax(180px,1fr); align-items: end; gap: 8px; }
.lv-admin-live-submit-actions .sg-field { margin: 0; }
.lv-admin-live-submit .sg-btn { min-height: 38px; }
.lv-admin-live-connection { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; }
.lv-admin-live-connection + .lv-admin-live-connection { border-top: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-connection > div { display: grid; gap: 3px; min-width: 0; }
.lv-admin-live-connection b { color: var(--text-main, #eaecef); font-size: calc(12.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-connection span, .lv-admin-live-connection small { color: var(--text-dim, #9aa0aa); font-size: calc(10.5px * var(--sv-font-scale, 1)); overflow-wrap: anywhere; }
.lv-admin-live-empty, .lv-admin-live-load-error { padding: 22px; color: var(--text-muted, #71757f); text-align: center; border: 1px dashed var(--line, rgba(255,255,255,.08)); border-radius: 9px; font-size: calc(12px * var(--sv-font-scale, 1)); }
.lv-admin-live-load-error b { color: var(--text-main, #eaecef); }
.lv-admin-live-load-error p { margin: 7px 0 12px; }
.lv-stage-chip.production { color: #ff8b99; background: rgba(246,70,93,.1); border: 1px solid rgba(246,70,93,.3); }
.lv-admin-live-readiness { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px 16px; padding: 13px 14px; border-radius: 11px; background: var(--bg-panel, rgba(255,255,255,.03)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-readiness.ready { border-color: rgba(14,203,129,.28); }
.lv-admin-live-readiness.blocked { border-color: rgba(246,70,93,.3); background: rgba(246,70,93,.045); }
.lv-admin-live-readiness b { display: block; margin-top: 4px; color: var(--text-main, #eaecef); font-size: calc(13.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-readiness ul { grid-column: 1 / -1; margin: 0; padding-left: 18px; color: var(--text-dim, #9aa0aa); font-size: calc(11px * var(--sv-font-scale, 1)); line-height: 1.5; }
.lv-admin-live-state { align-self: center; padding: 4px 7px; border-radius: 999px; color: var(--text-muted, #71757f); background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08)); font: 700 9px/1 var(--font-mono, monospace); white-space: nowrap; }
.lv-admin-live-state.ok { color: var(--up, #0ecb81); border-color: rgba(14,203,129,.28); background: rgba(14,203,129,.08); }
.lv-admin-live-state.warn { color: #ff8b99; border-color: rgba(246,70,93,.3); background: rgba(246,70,93,.08); }
.lv-admin-live-limits { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-top: 10px; }
.lv-admin-live-limits > div { display: grid; gap: 4px; padding: 10px 11px; border-radius: 9px; background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-limits span { color: var(--text-muted, #71757f); font-size: calc(10px * var(--sv-font-scale, 1)); }
.lv-admin-live-limits b { color: var(--text-main, #eaecef); font: 650 12px/1.3 var(--font-mono, monospace); }
.lv-admin-live-emergency { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 10px; padding: 12px 14px; border-radius: 10px; background: var(--bg-panel, rgba(255,255,255,.03)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-emergency.stopped { border-color: rgba(246,70,93,.3); background: rgba(246,70,93,.045); }
.lv-admin-live-emergency.running { border-color: rgba(14,203,129,.25); }
.lv-admin-live-emergency b { display: block; margin-top: 4px; color: var(--text-main, #eaecef); font-size: calc(13px * var(--sv-font-scale, 1)); }
.lv-admin-live-emergency p { margin: 4px 0 0; color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-emergency-actions { display: flex; align-items: center; gap: 7px; }
.lv-admin-live-emergency-actions input { min-width: 220px; }
.lv-admin-live-tabs { position: sticky; top: -18px; z-index: 2; display: flex; gap: 4px; margin: 14px -4px; padding: 4px; overflow-x: auto; background: var(--bg-elevated, var(--bg-panel, #16181f)); border-bottom: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-tabs button { padding: 8px 13px; color: var(--text-dim, #9aa0aa); background: transparent; border: 0; border-bottom: 2px solid transparent; font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 700; cursor: pointer; white-space: nowrap; }
.lv-admin-live-tabs button.active { color: var(--text-main, #eaecef); border-bottom-color: var(--brand, #f0b90b); }
.lv-admin-live-ticket, .lv-admin-live-workspace { padding: 14px; border-radius: 11px; background: var(--bg-panel, rgba(255,255,255,.025)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-workspace { margin-top: 12px; }
.lv-admin-live-order-form { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.lv-admin-live-order-form .wide { grid-column: span 2; }
.lv-admin-live-ticket-foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-ticket-foot p { margin: 0; color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); line-height: 1.5; }
.lv-admin-live-snapshot-controls { display: grid; grid-template-columns: minmax(220px,1fr) auto; align-items: end; gap: 9px; margin-bottom: 12px; }
.lv-admin-live-snapshot-controls .sg-field { margin: 0; }
.lv-admin-live-snapshot-meta { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 9px; color: var(--text-muted, #71757f); font-size: calc(10.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-data-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 10px; }
.lv-admin-live-data-grid > section, .lv-admin-live-orders-block { min-width: 0; padding: 11px; border-radius: 9px; background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-orders-block { margin-top: 10px; }
.lv-admin-live-section-head.recent { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-table-wrap { overflow-x: auto; }
.lv-admin-live-table-wrap table { width: 100%; min-width: 620px; border-collapse: collapse; font-size: calc(10.5px * var(--sv-font-scale, 1)); }
.lv-admin-live-table-wrap th, .lv-admin-live-table-wrap td { padding: 7px 8px; text-align: left; white-space: nowrap; border-bottom: 1px solid var(--line, rgba(255,255,255,.08)); }
.lv-admin-live-table-wrap th { color: var(--text-muted, #71757f); font-weight: 600; }
.lv-admin-live-table-wrap td { color: var(--text-dim, #9aa0aa); }
.lv-admin-live-order-actions, .lv-admin-live-connection-actions { display: flex; gap: 6px; }
.lv-admin-live-connection-main > div { display: flex; align-items: center; gap: 7px; }
@media (max-width: 720px) {
  .sg-modal.lv-admin-live-modal { width: calc(100vw - 16px); max-height: calc(100vh - 16px); }
  .lv-admin-live-modal-head { padding: 16px; }
  .lv-admin-live-modal-head > div:last-child { align-items: flex-end; flex-direction: column-reverse; }
  .lv-admin-live-boundary { align-items: flex-start; padding: 9px 16px; }
  .lv-admin-live-status { padding-left: 16px; padding-right: 16px; }
  #lvAdminLiveBody { padding: 14px 16px 18px; }
  .lv-admin-live-form-lock { flex-direction: column; gap: 4px; }
  .lv-admin-live-rail, .lv-admin-live-fields, .lv-admin-live-permissions, .lv-admin-live-limits, .lv-admin-live-order-form, .lv-admin-live-data-grid { grid-template-columns: 1fr; }
  .lv-admin-live-totp-actions, .lv-admin-live-password-reset, .lv-admin-live-submit, .lv-admin-live-submit-actions { grid-template-columns: 1fr; align-items: stretch; }
  .lv-admin-live-totp-actions .sg-btn, .lv-admin-live-password-reset .sg-btn, .lv-admin-live-submit .sg-btn { width: 100%; }
  .lv-admin-live-agreement-head, .lv-admin-live-submit, .lv-admin-live-connection { align-items: stretch; flex-direction: column; }
  .lv-admin-live-agreement-head code { max-width: none; text-align: left; }
  .lv-admin-live-connection .sg-mini { align-self: flex-end; }
  .lv-admin-live-emergency, .lv-admin-live-ticket-foot { align-items: stretch; flex-direction: column; }
  .lv-admin-live-emergency-actions { align-items: stretch; flex-direction: column; }
  .lv-admin-live-emergency-actions input { min-width: 0; width: 100%; }
  .lv-admin-live-order-form .wide { grid-column: auto; }
  .lv-admin-live-snapshot-controls { grid-template-columns: 1fr; }
}

/* ---------- 自定义策略创建器(可视化搭条件 / 直接写公式)---------- */
/* 必须写成 .sg-modal.sgc-modal:单靠 .sgc-modal 会被上面的 .sg-modal.wide(两个类,特异性更高)
   压回 620px —— 原先写的 700 其实一直没生效过。一条规则有 6~7 个控件,窄了必然折行。 */
/* 加宽到 860:一条条件现在是「组标签 + 左值段 + 触发段 + 右值段」,790 时右值段会被挤到第二行,
   读起来就断成了两句话。 */
.sg-modal.sgc-modal { max-width: 860px; }
.sgc-base { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 12px; }
.sgc-tabs { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; border-bottom: 1px solid var(--line-soft); padding-bottom: 8px; }
.sgc-tab { padding: 5px 12px; border-radius: 8px; font-size: calc(12.5px * var(--sv-font-scale, 1)); font-weight: 700; cursor: pointer; color: var(--text-dim, #9aa0aa); background: transparent; border: 1px solid transparent; }
.sgc-tab:hover { color: var(--text-main, #eaecef); }
.sgc-tab.active { color: var(--text-main, #eaecef); background: var(--bg-hover); border-color: var(--line-strong); }
.sgc-tab-hint { margin-left: auto; font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-side { padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface-soft); margin-bottom: 10px; }
.sgc-side-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; font-size: calc(13px * var(--sv-font-scale, 1)); }
.sgc-side-head b { color: var(--text-main, #eaecef); }
.sgc-join { font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); display: inline-flex; align-items: center; gap: 4px; }
.sgc-add { margin-left: auto; padding: 3px 9px; border-radius: 7px; font-size: calc(11.5px * var(--sv-font-scale, 1)); cursor: pointer; color: var(--brand, #f0b90b); background: transparent; border: 1px dashed var(--line-strong); }
.sgc-add:hover { border-style: solid; }
.sgc-rule { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
/* 左值 / 触发方式 / 右值 分三段:此前一行 6 个同款灰下拉,眼睛分不出哪个是"跟什么比",
   看上去就像"这里只能填均线"。分段之后,一眼能看出条件的结构。 */
/* 底色走主题变量:硬编码白色半透在浅色主题下等于没有,分段也就白分了 */
.sgc-seg { display: inline-flex; align-items: center; gap: 4px; padding: 3px 5px; border-radius: 8px; }
.sgc-seg.lv, .sgc-seg.rv { background: var(--bg-sunken, rgba(127,127,127,.08)); }
.sgc-seg.opv { background: color-mix(in srgb, var(--brand, #f0b90b) 12%, transparent); }

/* 条件组标签 A/B/C */
.sgc-grp {
  width: 22px; height: 22px; flex: none; border-radius: 6px; cursor: pointer;
  font-size: calc(11.5px * var(--sv-font-scale, 1)); font-weight: 800; color: var(--text-dim, #9aa0aa);
  background: var(--bg-elevated, rgba(255,255,255,.03)); border: 1px solid var(--line-strong);
}
.sgc-grp:hover { color: var(--text-main, #eaecef); border-color: var(--brand, #f0b90b); }
.sgc-grp.g1 { color: #4aa3ff; border-color: rgba(74,163,255,.5); background: rgba(74,163,255,.1); }
.sgc-grp.g2 { color: #b48bff; border-color: rgba(180,139,255,.5); background: rgba(180,139,255,.1); }
.sgc-grp-tip { margin-top: 6px; font-size: calc(11px * var(--sv-font-scale, 1)); line-height: 1.6; color: var(--text-muted, #71757f); }
.sgc-gj { margin-left: 2px; }
.sgc-slash { font-style: normal; font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-n.tiny { width: 44px; }

/* 每条条件的触发次数:整行占满一行,不跟控件挤 */
.sgc-stat { flex-basis: 100%; padding-left: 2px; font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-stat.none { color: #f0b90b; }

/* 起手式胶囊 */
.sgc-starters { padding: 9px 11px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface-soft); margin-bottom: 10px; }
.sgc-starters-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 7px; font-size: calc(13px * var(--sv-font-scale, 1)); }
.sgc-starters-head b { color: var(--text-main, #eaecef); }
.sgc-starters-head span { font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.sgc-chip {
  padding: 4px 10px; border-radius: 999px; font-size: calc(11.5px * var(--sv-font-scale, 1)); cursor: pointer;
  color: var(--text-dim, #9aa0aa); background: var(--bg-elevated, rgba(255,255,255,.03));
  border: 1px solid var(--line-strong);
}
.sgc-chip:hover { color: var(--text-main, #eaecef); border-color: var(--brand, #f0b90b); }
.sgc-chip.active { color: #101114; background: var(--brand, #f0b90b); border-color: var(--brand, #f0b90b); font-weight: 700; }
/* 自定义起手式(糖哥 2026-08-10):用户自己存的那几套,与官方并排 */
.sgc-starters-head.mine { margin-top: 9px; padding-top: 8px; border-top: 1px dashed var(--line-strong); }
/* 标的选择器(糖哥 2026-08-10):点开输入框就能看目录、能搜 */
.sg-sym-host { position: relative; }
.sg-sym-pop {
  position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 40;
  background: var(--bg-elevated, #16181f); border: 1px solid var(--line-strong); border-radius: 10px;
  box-shadow: var(--shadow-lift, 0 16px 42px rgba(0,0,0,.48)); overflow: hidden;
}
.sg-sym-tabs { display: flex; align-items: center; gap: 4px; padding: 6px 8px; border-bottom: 1px solid var(--line); }
.sg-sym-tab {
  padding: 3px 9px; border-radius: 999px; font-size: calc(11.5px * var(--sv-font-scale, 1)); cursor: pointer;
  color: var(--text-dim, #9aa0aa); background: transparent; border: 1px solid transparent;
}
.sg-sym-tab:hover { color: var(--text-main, #eaecef); }
.sg-sym-tab.on { color: #101114; background: var(--brand, #f0b90b); font-weight: 700; }
.sg-sym-count { margin-left: auto; font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sg-sym-list { max-height: 244px; overflow-y: auto; }
.sg-sym-item {
  display: flex; align-items: center; gap: 8px; width: 100%; padding: 7px 10px; cursor: pointer;
  background: transparent; border: 0; text-align: left; color: var(--text-secondary, #b0b4bd);
}
.sg-sym-item b { flex: 0 0 76px; color: var(--text-main, #eaecef); font-size: calc(12.5px * var(--sv-font-scale, 1)); }
.sg-sym-item span { flex: 1 1 auto; font-size: calc(11.5px * var(--sv-font-scale, 1)); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sg-sym-item i { flex: 0 0 auto; font-style: normal; font-size: calc(10px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sg-sym-item:hover, .sg-sym-item.on { background: color-mix(in srgb, var(--brand, #f0b90b) 12%, transparent); }
.sg-sym-empty { padding: 16px 12px; text-align: center; font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
/* 「＋ 自定义」:排在起手式末尾,虚线以示"这是个入口,不是一套现成的模式" */
.sgc-chip.add { border-style: dashed; color: var(--text-muted, #71757f); }
.sgc-chip.add:hover { color: var(--brand, #f0b90b); border-color: var(--brand, #f0b90b); border-style: solid; }
.sgc-chip.mine { padding-right: 6px; }
.sgc-chip-x {
  margin-left: 6px; font-style: normal; font-size: calc(10px * var(--sv-font-scale, 1)); opacity: .5; padding: 0 2px; border-radius: 4px;
}
.sgc-chip-x:hover { opacity: 1; color: var(--down, #f6465d); background: rgba(246,70,93,.12); }
/* 多选序号(糖哥 2026-08-10):A/B/C 与条件区的组标签对应,一眼看出这组是哪套带来的 */
.sgc-chip-g {
  display: inline-flex; align-items: center; justify-content: center; margin-right: 5px;
  min-width: 14px; height: 14px; padding: 0 3px; border-radius: 4px; font-style: normal;
  font-size: calc(10px * var(--sv-font-scale, 1)); font-weight: 800; background: rgba(16,17,20,.24); color: #101114;
}

/* 指标浏览面板 */
.sgc-pick {
  width: 20px; height: 22px; flex: none; border-radius: 6px; cursor: pointer; line-height: 1; padding: 0;
  color: var(--text-muted, #71757f); background: transparent; border: 1px solid var(--line-strong);
}
.sgc-pick:hover { color: var(--brand, #f0b90b); border-color: var(--brand, #f0b90b); }
/* 用 fixed 而不是 absolute:弹窗本身是 overflow:auto 的滚动容器,
   absolute 会让面板跟着内容一起滚走,而它应该稳稳停在屏幕中间。 */
.sgc-picker-mask { position: fixed; inset: 0; background: transparent; /* 遮罩全透明(糖哥 2026-08-10) */ z-index: 1200; }
.sgc-picker {
  position: fixed; z-index: 1201; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: min(560px, calc(100% - 32px)); max-height: min(70vh, 520px); display: flex; flex-direction: column;
  border-radius: 12px; border: 1px solid var(--line-strong); background: var(--surface, #16181d);
  box-shadow: 0 18px 48px rgba(0,0,0,.55); overflow: hidden;
}
.sgc-picker-head { display: flex; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--line-soft); }
.sgc-psearch {
  flex: 1; padding: 7px 10px; border-radius: 8px; font-size: calc(12.5px * var(--sv-font-scale, 1));
  color: var(--text-main, #eaecef); background: var(--bg-sunken); border: 1px solid var(--line-strong);
}
.sgc-psearch:focus { outline: none; border-color: var(--brand, #f0b90b); }
.sgc-picker-x { width: 30px; border-radius: 8px; cursor: pointer; color: var(--text-muted, #71757f); background: transparent; border: 1px solid transparent; }
.sgc-picker-x:hover { color: var(--text-main, #eaecef); border-color: var(--line-strong); }
.sgc-pchips { display: flex; flex-wrap: wrap; gap: 5px; padding: 9px 12px; border-bottom: 1px solid var(--line-soft); }
.sgc-pchip {
  padding: 3px 9px; border-radius: 999px; font-size: calc(11.5px * var(--sv-font-scale, 1)); cursor: pointer;
  color: var(--text-dim, #9aa0aa); background: transparent; border: 1px solid var(--line-strong);
}
.sgc-pchip:hover { color: var(--text-main, #eaecef); }
.sgc-pchip.active { color: #101114; background: var(--brand, #f0b90b); border-color: var(--brand, #f0b90b); font-weight: 700; }
.sgc-plist { overflow-y: auto; padding: 6px; }
.sgc-pitem {
  display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; width: 100%; text-align: left;
  padding: 7px 9px; border-radius: 8px; cursor: pointer; background: transparent; border: 1px solid transparent;
}
.sgc-pitem:hover { background: var(--bg-hover); border-color: var(--line-strong); }
.sgc-pname { font-size: calc(12.5px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-main, #eaecef); }
.sgc-pgrp { font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-phint { grid-column: 1 / -1; font-size: calc(11px * var(--sv-font-scale, 1)); line-height: 1.55; color: var(--text-muted, #71757f); }
.sgc-sel, .sgc-n { padding: 5px 7px; border-radius: 7px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-main, #eaecef); background: var(--bg-elevated, rgba(255,255,255,.03)); border: 1px solid var(--line-strong); }
.sgc-sel:focus, .sgc-n:focus { outline: none; border-color: var(--brand, #f0b90b); }
.sgc-sel.op { color: var(--brand, #f0b90b); font-weight: 700; }
.sgc-sel.tiny { padding: 2px 5px; font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.sgc-n { width: 58px; }
.sgc-del { margin-left: auto; width: 24px; height: 24px; border-radius: 6px; cursor: pointer; color: var(--text-muted, #71757f); background: transparent; border: 1px solid transparent; }
.sgc-del:hover { color: #f6465d; border-color: var(--line-strong); }
.sgc-empty { padding: 8px 2px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-exit { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
.sgc-preview { padding: 9px 11px; border-radius: 10px; border: 1px dashed var(--line-strong); background: var(--bg-sunken); }
.sgc-preview-t { display: block; margin-bottom: 5px; font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-preview pre { margin: 0; font-family: var(--font-mono, ui-monospace, monospace); font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.65; color: var(--text-secondary, #b0b4bd); white-space: pre-wrap; word-break: break-word; }
.sgc-codewrap { margin-bottom: 10px; }
.sgc-codewrap textarea {
  width: 100%; padding: 10px 12px; border-radius: 10px; resize: vertical;
  font-family: var(--font-mono, ui-monospace, monospace); font-size: calc(12.5px * var(--sv-font-scale, 1)); line-height: 1.7;
  color: var(--text-main, #eaecef); background: var(--bg-sunken); border: 1px solid var(--line-strong);
}
.sgc-codewrap textarea:focus { outline: none; border-color: var(--brand, #f0b90b); }
.sgc-code-foot { display: flex; align-items: center; gap: 10px; margin-top: 7px; }
.sgc-err { font-size: calc(12px * var(--sv-font-scale, 1)); }
.sgc-err.ok { color: #0ecb81; }
.sgc-err.bad { color: #f6465d; }
.sgc-share { display: flex; align-items: center; gap: 7px; margin-bottom: 10px; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); cursor: pointer; }
@media (max-width: 640px) {
  .sgc-base, .sgc-exit { grid-template-columns: 1fr; }
  .sgc-rule { gap: 5px; }
  .sgc-n { width: 58px; }
}
.sgc-name { margin-bottom: 12px; }

/* ---------- 模式库(现成策略卡片)---------- */
.sg-sec-head { margin: 26px 0 12px; }
.sg-sec-h2 { margin: 0 0 4px; font-size: calc(17px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-main, #eaecef); }
.sg-sec-desc { margin: 0; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
.sg-preset-sec { margin-bottom: 18px; }
.sg-sec-title {
  display: flex; align-items: baseline; gap: 8px; margin: 0 0 10px;
  font-size: calc(13.5px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-secondary, #b0b4bd);
}
.sg-sec-title span { font-size: calc(11.5px * var(--sv-font-scale, 1)); font-weight: 500; color: var(--text-muted, #71757f); }
.sg-card.preset .sg-preset-when {
  margin: 0; padding: 7px 9px; border-radius: 8px;
  font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.55; color: var(--text-muted, #71757f);
  background: var(--bg-sunken, rgba(0, 0, 0, .16));
}
.sg-card.preset .sg-preset-when b { margin-right: 6px; color: var(--text-dim, #9aa0aa); font-weight: 600; }
.sg-card.locked { opacity: .82; }

/* 会员锁标:与教学 chip 同尺寸,用品牌色区分"要升级"而不是"不可用" */
.sg-lock {
  display: inline-flex; align-items: center; gap: 3px; flex: none;
  font-size: calc(10.5px * var(--sv-font-scale, 1)); font-weight: 700; padding: 2px 6px; border-radius: 999px;
  color: var(--brand, #f0b90b); background: rgba(240, 185, 11, .12);
  border: 1px solid rgba(240, 185, 11, .3);
}
.sg-lock svg { flex: none; }

/* ---------- 创建器:多参数条件行 / 风控区块 ---------- */
.sgc-rule .sgc-sel.ind { max-width: 152px; }
.sgc-rule .sgc-sel.kind { color: var(--text-dim, #9aa0aa); }
.sgc-band, .sgc-pct { display: inline-flex; align-items: center; gap: 4px; }
.sgc-band i { font-style: normal; color: var(--text-muted, #71757f); }
.sgc-unit { font-style: normal; font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-cap { font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-tip { margin-left: auto; font-size: calc(11px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
.sgc-risk-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.sgc-risk .sg-field span { font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.sgc-risk input:disabled, .sgc-risk select:disabled { opacity: .5; cursor: not-allowed; }
.sgc-preset-note {
  margin: 0 0 12px; padding: 9px 11px; border-radius: 10px;
  font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.6; color: var(--text-dim, #9aa0aa);
  background: var(--bg-sunken, rgba(0, 0, 0, .16));
  border-left: 3px solid var(--brand, #f0b90b);
}
.sgc-preset-note b { display: block; margin-bottom: 2px; color: var(--text-main, #eaecef); }
.sgc-preset-note span { display: block; margin-top: 4px; color: var(--text-muted, #71757f); }

@media (max-width: 720px) {
  .sgc-risk-grid { grid-template-columns: 1fr 1fr; }
  .sgc-rule .sgc-sel.ind { max-width: 130px; }
}

/* ---------- 形态扫描窗格(独占一行,信息列比另两个扫描器多)---------- */
.scr-pat-panel { margin-top: 14px; }
.pat-filter-bar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 8px 14px; border-bottom: 1px solid var(--line, rgba(255, 255, 255, .08));
}
.pat-dir-sw { display: inline-flex; gap: 4px; }
.pat-dir-btn {
  appearance: none; cursor: pointer; padding: 4px 10px; border-radius: 7px;
  font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 600; color: var(--text-dim, #9aa0aa);
  background: transparent; border: 1px solid var(--line-strong, rgba(255, 255, 255, .15));
}
.pat-dir-btn:hover { color: var(--text-main, #eaecef); }
.pat-dir-btn.on { color: var(--brand, #f0b90b); border-color: var(--brand, #f0b90b); background: rgba(240, 185, 11, .1); }
.pat-within { display: inline-flex; align-items: center; gap: 5px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa); }
.pat-within select {
  padding: 3px 6px; border-radius: 6px; font-size: calc(12px * var(--sv-font-scale, 1));
  color: var(--text-main, #eaecef); background: var(--bg-elevated, rgba(255, 255, 255, .03));
  border: 1px solid var(--line-strong, rgba(255, 255, 255, .15));
}
.pat-scan-note { margin-left: auto; font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }
/* 形态名比"突破/埋伏"的状态词长,给标签更多空间;至今涨跌用语义色呈现事实,不预设对错 */
/* 看跌标签:.scr-tag 原本只定义了 up/watch,down 一直缺样式(看跌形态标签没有底色边框) */
.scr-tag.down { color: var(--down, #f6465d); background: rgba(246, 70, 93, 0.10); border: 1px solid rgba(246, 70, 93, 0.30); }
.pat-row .scr-tag { min-width: 84px; text-align: center; }
.pat-row .scr-extra.up { color: var(--up, #f6465d); font-weight: 600; }
.pat-row .scr-extra.down { color: var(--down, #0ecb81); font-weight: 600; }
.scr-empty-sub { display: inline-block; margin-top: 6px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #71757f); }

/* 形态扫描行:主信息一行 + 历史表现副行(副行是这个功能最有价值的一句)。
   ⚠️ .scr-row 本身是六列 grid,带副行时必须把外层改成块级、由 .pat-main 承接那套 grid ——
      直接在 .scr-row 上加第二个子元素会把整行挤成竖排(实测文字竖着堆叠,完全没法看)。 */
.pat-row.has-perf { display: block; }
.pat-row .pat-main {
  display: grid;
  grid-template-columns: 72px 84px 110px 1fr 130px 32px;
  gap: 10px; align-items: center;
}
.pat-perf {
  padding-left: 2px; font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.5;
  color: var(--text-muted, #71757f);
}
.pat-perf b { color: var(--brand, #f0b90b); font-weight: 700; }
/* 样本不足的不给重点色 —— 免得看起来像个结论 */
.pat-perf.weak { opacity: .72; font-style: italic; }

/* 形态类型切换:K线形态 / 图形形态 —— 两者"发生时刻"的定义不同,不能混在一个列表里 */
.pat-kind-sw { display: inline-flex; gap: 4px; padding-right: 10px; margin-right: 4px; border-right: 1px solid var(--line, rgba(255,255,255,.08)); }
/* 阶段开关(已突破 / 酝酿中):与类型开关同款,但只在图形形态下出现。
   「酝酿中」选中时用警示色 —— 那一屏全是**还没成立**的东西,视觉上就要跟已成立区分开。 */
.pat-stage-sw { display: inline-flex; gap: 2px; padding: 2px; border-radius: 7px;
  background: rgba(255,255,255,.04); }
.pat-stage-sw[hidden] { display: none; }
.pat-stage-btn { padding: 4px 10px; border: 0; border-radius: 5px; cursor: pointer;
  font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); background: transparent; }
.pat-stage-btn.on { background: rgba(255,255,255,.10); color: var(--text-primary, #e6e6e6); }
.pat-stage-btn[data-pat-stage="forming"].on { background: rgba(240,185,11,.18); color: var(--warn, #f0b90b); }
/* 未成立的行:整条副行走警示色,别让人扫一眼就当成已发生的机会 */
.scr-pat-panel .panel-sub b { color: var(--warn, #f0b90b); font-weight: 700; }
.pat-perf.warn { color: var(--warn, #f0b90b); }
.pat-perf.warn b { color: var(--warn, #f0b90b); }

.pat-kind-btn {
  appearance: none; cursor: pointer; padding: 4px 10px; border-radius: 7px;
  font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 600; color: var(--text-dim, #9aa0aa);
  background: transparent; border: 1px solid transparent;
}
.pat-kind-btn:hover { color: var(--text-main, #eaecef); }
.pat-kind-btn.on { color: var(--text-main, #eaecef); background: var(--bg-hover, rgba(255,255,255,.06)); border-color: var(--line-strong, rgba(255,255,255,.18)); }

/* ===== AI 写策略条(2026-08-13):代码页签顶部,一句话代笔 ===== */
.sgc-ai-bar { display: flex; gap: 8px; margin-bottom: 6px; }
.sgc-ai-bar input { flex: 1; min-width: 0; padding: 8px 10px; border-radius: 8px; border: 1px solid var(--line, rgba(255,255,255,.09)); background: var(--bg-sunken, rgba(0,0,0,.18)); color: var(--text-main, #eaecef); font-size: calc(12.5px * var(--sv-font-scale, 1)); }
.sgc-ai-bar input:focus { outline: none; border-color: rgba(240, 185, 11, .55); }
.sgc-ai-go { flex: none; white-space: nowrap; }
.sgc-ai-hint { min-height: 16px; margin: 0 0 6px; font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.5; color: var(--text-muted, #71757f); }

/* ===== AI写策略独立页签(2026-08-13 升级):描述区 + 生成结果预览 ===== */
.sgc-aiwrap { display: grid; gap: 10px; }
.sgc-ai-lead { margin: 0; font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.6; color: var(--text-dim, #9aa0aa); }
.sgc-aiwrap textarea { width: 100%; resize: vertical; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line, rgba(255,255,255,.09)); background: var(--bg-sunken, rgba(0,0,0,.18)); color: var(--text-main, #eaecef); font-size: calc(13px * var(--sv-font-scale, 1)); line-height: 1.6; }
.sgc-aiwrap textarea:focus { outline: none; border-color: rgba(240, 185, 11, .55); }
.sgc-ai-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.sgc-ai-result { display: grid; gap: 8px; padding: 12px; border-radius: 10px; border: 1px solid rgba(46, 189, 133, .3); background: rgba(46, 189, 133, .05); }
.sgc-ai-result-head { display: flex; align-items: center; gap: 10px; }
.sgc-ai-result-head b { font-size: calc(13.5px * var(--sv-font-scale, 1)); }
.sgc-ai-result-head i { font-style: normal; font-size: calc(11px * var(--sv-font-scale, 1)); color: #2ebd85; }
.sgc-ai-result pre { margin: 0; padding: 10px; border-radius: 8px; background: var(--bg-sunken, rgba(0,0,0,.22)); font-size: calc(12px * var(--sv-font-scale, 1)); line-height: 1.6; overflow-x: auto; white-space: pre-wrap; }
.sgc-ai-result-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

/* 面板折叠开关(通用组件 sv-collapse.js;各页各留一份样式,类名一致)
   ⚠️这一页的 panel-bar 里已经塞了标题+副标题+周期 chip,按钮插进去会被挤到第二行,
   看着像个孤零零的小方块 —— 改成钉在面板右上角。 */
.panel { position: relative; }
.sv-collapse-btn { position: absolute; top: 14px; right: 14px; z-index: 2; display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 7px; border: 1px solid var(--line, rgba(255,255,255,.1)); background: transparent; color: var(--text-muted); cursor: pointer; flex: none; }
.sv-collapse-btn:hover { color: var(--text-main); border-color: var(--warn, #f0b90b); }
.sv-collapse-btn i { font-style: normal; font-size: calc(10px * var(--sv-font-scale, 1)); transition: transform .15s; }
.panel.sv-collapsed .sv-collapse-btn i { transform: rotate(-90deg); }
/* 收起 = 只留标题条;宽度要钉住 —— 面板是 grid/flex 子项,内容一藏宽度就由内容决定 */
.panel.sv-collapsed > *:not(.panel-bar) { display: none; }
.panel.sv-collapsed { padding-bottom: 8px; width: 100%; justify-self: stretch; align-self: start; box-sizing: border-box; }
.panel.sv-collapsed > .panel-bar { width: 100%; flex-wrap: nowrap; }

/* ===== 套利板块(2026-08-19,糖哥「另起一行,做一个专门的套利板块,做在现成模式上面」)=====
   刻意不另起一套观感:卡壳沿用 .sg-card,卡面沿用合约卡那套 .sg-perp-duo / .sg-perp-tile /
   .sg-perp-card-badges,这里只补两件事 —— ① 给它们要用的 --perp-card-accent 定个值
   (那几个 tile 的底色是 color-mix(... var(--perp-card-accent) ...),变量没定义整条声明就作废,
   底色会直接消失,本地不看就发现不了);② 板块特有的三小块。 */
.sg-card.arb-card { --perp-card-accent: var(--brand, #f0b90b); gap: 11px; }
.sg-card.arb-card.reserved { --perp-card-accent: var(--text-muted, #71757f); }
.sg-card.arb-card .sg-card-foot { margin-top: auto; }
/* 预留位:.soon 已给了 60% 灰,再把按钮钉成不可点 —— 不能让它看起来像"马上就有" */
.sg-card.arb-card.reserved .sg-btn[disabled] { cursor: not-allowed; }
/* 分组标题:三类的一句话说明比"N 个模式"长得多,不换行会把标题撑出容器 */
.sg-preset-sec.arb-group .sg-sec-title { flex-wrap: wrap; }
.sg-preset-sec.arb-group .sg-sec-title span { flex: 1 1 240px; min-width: 0; line-height: 1.5; }
/* 「此刻有几个机会」:数字取自价差榜 netPct>0 的个数,拿不到时整个元素会被 JS 移除 —— 不留空壳 */
.sg-arb-chance {
  align-self: flex-start; padding: 3px 8px; border-radius: 999px;
  font: 600 10.5px/1.4 var(--font-mono, ui-monospace, monospace);
  color: var(--brand, #f0b90b); background: rgba(240,185,11,.10);
  border: 1px solid rgba(240,185,11,.24);
}
/* 创建器里的阈值大小关系:后端会拒,但拒之前先说清楚,别让人试错 */
.sg-arb-rule { margin: 10px 0 0; font-size: calc(11.5px * var(--sv-font-scale, 1)); line-height: 1.6; color: var(--text-muted, #71757f); }
.sg-arb-rule b { color: var(--text-secondary, #b0b4bd); }
/* 标的目录被锁死在某一类市场时,页签位置改放一个静态标签(点不动的页签比没有更迷惑) */
.sg-sym-only { font-size: calc(11.5px * var(--sv-font-scale, 1)); font-weight: 600; color: var(--text-dim, #9aa0aa); }
/* 入口卡点进来的落点。scroll-margin-top 是为了避开吸顶的头部,
   闪一下是给用户一个"你被送到这儿了"的回执(永久命令:设计照顾人的使用习惯) */
#sgArb { scroll-margin-top: 78px; }
#sgArb.sg-arb-flash .sg-sec-head { animation: sgArbFlash 1.5s ease-out 1; border-radius: 10px; }
@keyframes sgArbFlash {
  0%, 45% { box-shadow: 0 0 0 6px rgba(240,185,11,.14); background: rgba(240,185,11,.07); }
  100% { box-shadow: 0 0 0 6px rgba(240,185,11,0); background: transparent; }
}
@media (prefers-reduced-motion: reduce) { #sgArb.sg-arb-flash .sg-sec-head { animation: none; } }
/* 套利策略在「我的策略」里的现场块:最近一拍的真实指标 + 路线 + 为什么没开仓。
   没机会所以不动作是套利的常态,不显示这行的话,一条从不成交的策略看上去就像坏了。 */
.sg-arb-live {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px;
  margin-top: 8px; padding: 8px 10px; border-radius: 9px;
  background: var(--bg-sunken, rgba(0,0,0,.16)); border: 1px solid var(--line, rgba(255,255,255,.08));
  font-size: calc(11.5px * var(--sv-font-scale, 1)); color: var(--text-dim, #9aa0aa);
}
.sg-arb-live > b { color: var(--text-secondary, #b0b4bd); font-size: calc(11px * var(--sv-font-scale, 1)); }
.sg-arb-live > span b { color: var(--text-main, #eaecef); font-weight: 650; }
.sg-arb-live > span i { font-style: normal; font-size: calc(10.5px * var(--sv-font-scale, 1)); }
.sg-arb-live .sg-arb-idle { flex: 1 0 100%; margin: 2px 0 0; color: var(--text-muted, #71757f); font-size: calc(11px * var(--sv-font-scale, 1)); line-height: 1.55; }

/* ---- 说明文字的阅读宽度(糖哥 2026-08-24「让网站在每个用户的屏幕上显得协调」)----
   页面副标题/小字说明原本没有宽度上限,一路横跨整个版心。1280 屏上就已经 1216px 一行,
   版心放宽后到 1768px —— 一行装得下四十多个汉字还有富余,眼睛扫到行尾就找不回行首了。
   给一个上限,靠左不动,只是不再无限伸长。 */
.sg-sec-desc { max-width: min(100%, 860px); }
