.page-main {
  padding-top: 100px;
  padding-bottom: 60px;
  min-height: 100vh;
}

.page-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-bottom: 32px;
  gap: 16px;
}

.page-title {
  font-size: calc(32px * var(--sv-font-scale, 1));
  font-weight: 700;
  letter-spacing: -0.8px;
  margin-bottom: 8px;
}

.page-description {
  font-size: calc(15px * var(--sv-font-scale, 1));
  color: var(--text-secondary);
}

.review-summary {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 32px;
}

.summary-card {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px;
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  transition: all var(--transition-normal);
}

.summary-card:hover {
  border-color: var(--border-medium);
  transform: translateY(-2px);
}

.summary-icon {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  background: var(--bg-core);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
}

.summary-icon svg { display: block; }

.summary-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.summary-value {
  font-size: calc(28px * var(--sv-font-scale, 1));
  font-weight: 700;
  font-family: var(--font-mono);
}

.summary-value.win {
  color: var(--accent-green);
}

.summary-value.lose {
  color: var(--accent-red);
}

.summary-label {
  font-size: calc(13px * var(--sv-font-scale, 1));
  color: var(--text-muted);
}

.review-toolbar {
  margin-bottom: 24px;
}

.toolbar-filters {
  display: flex;
  gap: 12px;
}

.filter-select {
  padding: 10px 14px;
  padding-right: 36px;
  font-size: calc(14px * var(--sv-font-scale, 1));
  color: var(--text-primary);
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  cursor: pointer;
  font-family: var(--font-sans);
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2394A3B8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  transition: all var(--transition-fast);
}

.filter-select:hover {
  border-color: var(--border-medium);
}

.review-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.review-card {
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-xl);
  padding: 24px;
  transition: all var(--transition-normal);
  position: relative;
  overflow: hidden;
}

.review-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  opacity: 0.8;
}

.review-card.win::before {
  background: var(--accent-green);
}

.review-card.lose::before {
  background: var(--accent-red);
}

.review-card.pending::before {
  background: var(--accent-yellow);
}

.review-card:hover {
  border-color: var(--border-medium);
  transform: translateY(-2px);
}

.review-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 20px;
}

.review-symbol {
  display: flex;
  align-items: center;
  gap: 12px;
}

.symbol-icon {
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--accent-cyan-soft);
  border: 1px solid var(--accent-cyan);
  border-radius: var(--radius-md);
  font-family: var(--font-mono);
  font-size: calc(13px * var(--sv-font-scale, 1));
  font-weight: 700;
  color: var(--accent-cyan);
}

.symbol-details {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.symbol-name {
  font-size: calc(16px * var(--sv-font-scale, 1));
  font-weight: 600;
  font-family: var(--font-mono);
}

.review-date {
  font-size: calc(12px * var(--sv-font-scale, 1));
  color: var(--text-muted);
  font-family: var(--font-mono);
}

.review-result {
  display: flex;
  gap: 10px;
  align-items: center;
}

.result-badge {
  padding: 6px 12px;
  font-size: calc(12px * var(--sv-font-scale, 1));
  font-weight: 600;
  border-radius: var(--radius-sm);
  font-family: var(--font-mono);
}

.result-badge.win {
  background: var(--up-soft);
  color: var(--accent-green);
  border: 1px solid var(--accent-green);
}

.result-badge.lose {
  background: var(--down-soft);
  color: var(--accent-red);
  border: 1px solid var(--accent-red);
}

.result-badge.pending {
  background: var(--warn-soft);
  color: var(--accent-yellow);
  border: 1px solid var(--accent-yellow);
}

.result-value {
  font-size: calc(18px * var(--sv-font-scale, 1));
  font-weight: 700;
  font-family: var(--font-mono);
}

.result-value.win,
.review-card.win .result-value {
  color: var(--accent-green);
}

.result-value.lose,
.review-card.lose .result-value {
  color: var(--accent-red);
}

.result-value.pending,
.review-card.pending .result-value {
  color: var(--accent-yellow);
}

.review-body {
  margin-bottom: 20px;
}

.review-entry {
  margin-bottom: 16px;
}

.review-entry:last-child {
  margin-bottom: 0;
}

.entry-label {
  font-size: calc(12px * var(--sv-font-scale, 1));
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 6px;
}

.entry-text {
  font-size: calc(14px * var(--sv-font-scale, 1));
  line-height: 1.7;
  color: var(--text-secondary);
}

.review-tags {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border-soft);
}

.review-tag {
  padding: 6px 12px;
  font-size: calc(12px * var(--sv-font-scale, 1));
  color: var(--text-muted);
  background: var(--bg-tertiary);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-sm);
  font-family: var(--font-mono);
}

.review-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border-soft);
}

.review-metrics {
  display: flex;
  gap: 32px;
}

.review-metric {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.review-metric .metric-label {
  font-size: calc(11px * var(--sv-font-scale, 1));
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.review-metric .metric-value {
  font-size: calc(15px * var(--sv-font-scale, 1));
  font-weight: 600;
  font-family: var(--font-mono);
}

.review-actions {
  display: flex;
  gap: 10px;
  flex-shrink: 0;
}

.btn-small {
  padding: 8px 16px;
  font-size: calc(13px * var(--sv-font-scale, 1));
}

@media (max-width: 1024px) {
  .review-summary {
    grid-template-columns: repeat(2, 1fr);
  }
  
  .review-metrics {
    gap: 20px;
  }
}

@media (max-width: 768px) {
  .page-main {
    padding-top: 80px;
  }
  
  .page-header {
    flex-direction: column;
    align-items: flex-start;
  }
  
  .page-header .btn {
    width: 100%;
  }
  
  .page-title {
    font-size: calc(24px * var(--sv-font-scale, 1));
  }
  
  .review-summary {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  
  .summary-card {
    padding: 16px;
  }
  
  .summary-icon {
    width: 40px;
    height: 40px;
    font-size: calc(20px * var(--sv-font-scale, 1));
  }
  
  .summary-value {
    font-size: calc(24px * var(--sv-font-scale, 1));
  }
  
  .toolbar-filters {
    width: 100%;
    overflow-x: auto;
  }
  
  .filter-select {
    flex: 1;
    min-width: 120px;
  }
  
  .review-card {
    padding: 16px;
  }
  
  .review-header {
    flex-direction: column;
    gap: 12px;
  }
  
  .review-result {
    width: 100%;
    justify-content: space-between;
  }
  
  .review-footer {
    flex-direction: column;
    align-items: flex-start;
  }
  
  .review-metrics {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
  }
  
  .review-actions {
    width: 100%;
  }
  
  .review-actions .btn {
    flex: 1;
  }
}

/* ---- 复盘真实数据接线 ---- */
.rv-loading { padding: 40px 16px; text-align: center; color: var(--text-muted, #8a8f9c); font-size: calc(13px * var(--sv-font-scale, 1)); }
.rv-bull { color: var(--up, #2ebd85); }
.rv-bear { color: var(--down, #f6465d); }
.metric-value.muted { color: var(--text-muted, #8a8f9c); }
.rv-kind-wrap { margin: 0 0 16px; border: 1px solid var(--line-strong, rgba(255,255,255,0.09)); border-radius: 12px; padding: 12px 16px; background: var(--bg-elevated, rgba(255,255,255,0.02)); }
.rv-kind-title { font-size: calc(13px * var(--sv-font-scale, 1)); font-weight: 600; color: var(--text-main, #f4f5f7); margin-bottom: 8px; }
.rv-kind-table { display: flex; flex-direction: column; gap: 2px; overflow-x: auto; }
.rvk-row { display: grid; grid-template-columns: minmax(110px, 1.4fr) 0.6fr repeat(4, 1fr); gap: 8px; padding: 5px 0; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-main, #f4f5f7); border-bottom: 1px dashed rgba(255,255,255,0.05); }
.rvk-row:last-child { border-bottom: none; }
.rvk-head { color: var(--text-muted, #8a8f9c); font-size: calc(11.5px * var(--sv-font-scale, 1)); }
.rvk-kind { font-weight: 600; }
.rvk-rate.good { color: var(--up, #2ebd85); }
.rvk-rate.mid { color: #f0b90b; }
.rvk-rate.low { color: var(--down, #f6465d); }

/* ---- 复盘三区 tab ---- */
.rv-tabs { display: flex; gap: 8px; margin: 14px 0 16px; }
.rv-tab {
  min-height: 44px; padding: 7px 18px; border-radius: 999px; font-size: calc(13px * var(--sv-font-scale, 1)); cursor: pointer;
  color: var(--text-muted, #8a8f9c); background: transparent; border: 1px solid var(--line-strong, rgba(255,255,255,0.09));
}
.rv-tab.active { color: var(--accent-contrast, #1c2530); background: var(--accent, #f0b90b); border-color: var(--accent, #f0b90b); font-weight: 600; }

/* ---- 做单复盘表单弹窗 ---- */
.rvm-mask { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center; background: transparent; /* 遮罩全透明(糖哥 2026-08-10) */ }
.rvm-modal { width: min(560px, calc(100vw - 32px)); max-height: 88vh; overflow-y: auto; border-radius: 14px; background: var(--bg-panel, #141a24); border: 1px solid var(--line-strong, rgba(255,255,255,0.1)); box-shadow: 0 24px 64px rgba(0,0,0,0.5); }
.rvm-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; font-size: calc(15px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-main, #f4f5f7); border-bottom: 1px solid var(--line-strong, rgba(255,255,255,0.08)); }
.rvm-close { display: grid; place-items: center; width: 44px; height: 44px; border: none; background: none; color: var(--text-muted, #8a8f9c); font-size: calc(20px * var(--sv-font-scale, 1)); cursor: pointer; }
.rvm-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.rvm-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rvm-body label { display: flex; flex-direction: column; gap: 5px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.rvm-body input, .rvm-body select, .rvm-body textarea {
  min-height: 44px; padding: 8px 10px; border-radius: 8px; font-size: calc(13px * var(--sv-font-scale, 1)); color: var(--text-main, #f4f5f7);
  background: rgba(0,0,0,0.25); border: 1px solid var(--line-strong, rgba(255,255,255,0.1));
}
.rvm-body textarea { resize: vertical; font-family: inherit; }
.rvm-error { padding: 8px 12px; border-radius: 8px; font-size: calc(12px * var(--sv-font-scale, 1)); color: #f6465d; background: rgba(246,70,93,0.08); border: 1px solid rgba(246,70,93,0.3); }
.rvm-actions { display: flex; justify-content: flex-end; }

/* ---- 策略信号区 ---- */
.rvs-monitor { display: flex; align-items: center; gap: 10px; padding: 9px 14px; border: 1px solid var(--line-strong, rgba(255,255,255,0.09)); border-radius: 10px; margin-bottom: 8px; background: var(--bg-elevated, rgba(255,255,255,0.02)); font-size: calc(13px * var(--sv-font-scale, 1)); }
.rvs-name { font-weight: 700; color: var(--text-main, #f4f5f7); }
.rvs-meta { color: var(--text-muted, #8a8f9c); font-size: calc(12px * var(--sv-font-scale, 1)); }
.rvs-stat { margin-left: auto; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.rvs-events { border: 1px solid var(--line-strong, rgba(255,255,255,0.09)); border-radius: 12px; overflow: hidden; margin-top: 10px; }
.usm-chip { font-size: calc(10px * var(--sv-font-scale, 1)); padding: 1px 7px; border-radius: 999px; }
.usm-chip.ok { color: #2ebd85; background: rgba(46,189,133,0.12); }
.usm-chip.off { color: #8a8f9c; background: rgba(255,255,255,0.06); }
.usm-chip.err { color: #f6465d; background: rgba(246,70,93,0.12); }
.usm-event { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px dashed rgba(255,255,255,0.06); font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-main, #f4f5f7); }
.usm-event:last-child { border-bottom: none; }
.usm-ev-sig { font-size: calc(11px * var(--sv-font-scale, 1)); font-weight: 700; padding: 1px 8px; border-radius: 4px; }
.usm-ev-sig.bull { color: #2ebd85; background: rgba(46,189,133,0.12); }
.usm-ev-sig.bear { color: #f6465d; background: rgba(246,70,93,0.12); }
.usm-ev-name { font-weight: 600; }
.usm-ev-meta { color: var(--text-muted, #8a8f9c); }
.usm-ev-price { margin-left: auto; font-family: 'JetBrains Mono', monospace; }
.usm-ev-time { color: var(--text-muted, #8a8f9c); font-size: calc(11px * var(--sv-font-scale, 1)); }

/* ---- 杠杆/本金 ---- */
.rv-amount { display: block; font-size: calc(12.5px * var(--sv-font-scale, 1)); font-family: 'JetBrains Mono', monospace; margin-top: 2px; }
.rv-amount.win { color: var(--up, #2ebd85); }
.rv-amount.lose { color: var(--down, #f6465d); }
.rvm-preview { padding: 8px 12px; border-radius: 8px; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); background: rgba(240,185,11,0.06); border: 1px dashed rgba(240,185,11,0.3); }
.rvm-preview b { font-weight: 700; }

@media (max-width: 560px) {
  .rvm-mask { align-items: flex-end; }
  .rvm-modal { width: 100%; max-height: 92vh; border-radius: 16px 16px 0 0; }
  .rvm-row { grid-template-columns: 1fr; }
}

/* ============ 模拟盘(糖币 · 真行情虚拟资金)============ */
/* 糖哥 2026-09-01:「模拟盘这个按钮样式错误,白色主题显示的黑色的看不清」。
   实测:浅色主题下 --accent-cyan 解析成 #0f1115(黑),而这里的文字色硬编码 #05121f
   (也是黑)—— 对比度 1.0,黑底黑字,一个字都看不见。
   文字改用 --accent-contrast:它跟着主题走(浅色下是 #ffffff),与旁边普通 tab 的
   激活态用的是同一个变量,两种主题下都可读。硬编码颜色不再出现在这条规则里。 */
.rv-tab-paper.active { background: var(--accent-cyan, #3ea6ff); border-color: var(--accent-cyan, #3ea6ff); color: var(--accent-contrast, #05121f); }
.pp-note {
  padding: 9px 14px; margin-bottom: 14px; border-radius: 8px; font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 700;
  color: var(--text-secondary, #b0b4bd);
  background: var(--accent-soft, rgba(62, 166, 255, 0.08));
  border: 1px solid var(--line-soft, rgba(255, 255, 255, 0.07));
}
.pp-overview { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.pp-card {
  padding: 14px 16px; border-radius: 12px;
  background: var(--bg-elevated, rgba(255, 255, 255, 0.03));
  border: 1px solid var(--line-soft, rgba(255, 255, 255, 0.07));
}
.pp-card-label { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); margin-bottom: 6px; }
.pp-card-val { font-size: calc(22px * var(--sv-font-scale, 1)); font-weight: 850; font-family: var(--font-mono); color: var(--text-main, #eaecef); }
.pp-card-val .pp-pct { font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 700; }
.pp-card-val.win, .pp-pnl.win, td.win { color: var(--up, #2ebd85); }
.pp-card-val.lose, .pp-pnl.lose, td.lose { color: var(--down, #f6465d); }

.pp-order {
  padding: 14px 16px; margin-bottom: 18px; border-radius: 12px;
  background: var(--bg-elevated, rgba(255, 255, 255, 0.03));
  border: 1px solid var(--line-soft, rgba(255, 255, 255, 0.07));
}
.pp-order-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.pp-input {
  height: 40px; padding: 0 12px; border-radius: 8px; font-size: calc(14px * var(--sv-font-scale, 1)); font-family: var(--font-mono);
  color: var(--text-main, #eaecef); background: var(--bg-core, #0d1017);
  border: 1px solid var(--line-strong, rgba(255, 255, 255, 0.14));
}
#ppSym { width: 130px; text-transform: uppercase; }
#ppAmt { width: 160px; flex: 1; min-width: 120px; }
.pp-dir { display: inline-flex; border-radius: 8px; overflow: hidden; border: 1px solid var(--line-strong, rgba(255, 255, 255, 0.14)); }
.pp-dir-btn { height: 40px; padding: 0 20px; font-size: calc(14px * var(--sv-font-scale, 1)); font-weight: 800; border: none; cursor: pointer; background: transparent; color: var(--text-secondary, #b0b4bd); }
.pp-dir-btn.buy.active { background: var(--up, #2ebd85); color: #04120c; }
.pp-dir-btn.sell.active { background: var(--down, #f6465d); color: #1a0407; }
.pp-submit {
  height: 40px; padding: 0 28px; border-radius: 8px; font-size: calc(14px * var(--sv-font-scale, 1)); font-weight: 850; cursor: pointer;
  border: none; background: var(--text-main, #eaecef); color: var(--bg-core, #0d1017);
}
.pp-submit:disabled { opacity: 0.6; cursor: default; }
.pp-order-tip { margin-top: 10px; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.pp-reset { margin-top: 10px; padding: 8px 14px; border-radius: 8px; font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 700; cursor: pointer;
  background: var(--down-soft, rgba(246, 70, 93, 0.12)); color: var(--down, #f6465d); border: 1px solid var(--down, #f6465d); }

.pp-section-title { font-size: calc(14px * var(--sv-font-scale, 1)); font-weight: 850; color: var(--text-main, #eaecef); margin: 6px 0 10px; }
.pp-table-wrap { overflow-x: auto; margin-bottom: 18px; }
.pp-table { width: 100%; border-collapse: collapse; font-size: calc(13px * var(--sv-font-scale, 1)); }
.pp-table th { text-align: left; padding: 8px 12px; font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 700; color: var(--text-muted, #8a8f9c); border-bottom: 1px solid var(--line-soft, rgba(255, 255, 255, 0.07)); }
.pp-table td { padding: 10px 12px; font-family: var(--font-mono); color: var(--text-main, #eaecef); border-bottom: 1px solid var(--line-soft, rgba(255, 255, 255, 0.05)); }
.pp-pct { font-size: calc(11px * var(--sv-font-scale, 1)); opacity: 0.85; }
.pp-empty { text-align: center; color: var(--text-muted, #8a8f9c); font-family: inherit; }
.pp-close-btn { padding: 5px 14px; border-radius: 7px; font-size: calc(12px * var(--sv-font-scale, 1)); font-weight: 700; cursor: pointer;
  background: transparent; color: var(--text-secondary, #b0b4bd); border: 1px solid var(--line-strong, rgba(255, 255, 255, 0.14)); }
.pp-close-btn:hover { color: var(--down, #f6465d); border-color: var(--down, #f6465d); }
@media (max-width: 720px) { .pp-overview { grid-template-columns: repeat(2, 1fr); } }

/* ============ 模拟盘开通仪式页 ============ */
.pp-onboard {
  max-width: 640px; margin: 20px auto; padding: 34px 32px; text-align: center;
  border-radius: 18px;
  background: var(--bg-elevated, rgba(255, 255, 255, 0.03));
  border: 1px solid var(--line-soft, rgba(255, 255, 255, 0.08));
}
.pp-onboard-badge { font-size: calc(52px * var(--sv-font-scale, 1)); line-height: 1; margin-bottom: 12px; }
.pp-onboard-title { font-size: calc(26px * var(--sv-font-scale, 1)); font-weight: 900; color: var(--text-main, #eaecef); margin: 0 0 6px; }
.pp-onboard-sub { font-size: calc(14px * var(--sv-font-scale, 1)); color: var(--text-secondary, #b0b4bd); margin: 0 0 22px; }
.pp-onboard-gift {
  display: inline-flex; align-items: baseline; gap: 8px; flex-wrap: wrap; justify-content: center;
  padding: 16px 28px; margin-bottom: 24px; border-radius: 14px;
  background: linear-gradient(135deg, rgba(240, 185, 11, 0.14), rgba(46, 189, 133, 0.10));
  border: 1px solid rgba(240, 185, 11, 0.35);
}
.pp-gift-num { font-size: calc(34px * var(--sv-font-scale, 1)); font-weight: 900; font-family: var(--font-mono); color: var(--warn, #f0b90b); }
.pp-gift-unit { font-size: calc(15px * var(--sv-font-scale, 1)); font-weight: 800; color: var(--warn, #f0b90b); }
.pp-gift-tip { width: 100%; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.pp-onboard-terms { text-align: left; margin-bottom: 20px; padding: 16px 18px; border-radius: 12px;
  background: var(--bg-core, rgba(0, 0, 0, 0.2)); border: 1px solid var(--line-soft, rgba(255, 255, 255, 0.06)); }
.pp-term-title { font-size: calc(13px * var(--sv-font-scale, 1)); font-weight: 850; color: var(--text-main, #eaecef); margin-bottom: 10px; }
.pp-onboard-terms ul { list-style: none; margin: 0; padding: 0; }
.pp-onboard-terms li { font-size: calc(13px * var(--sv-font-scale, 1)); line-height: 1.7; color: var(--text-secondary, #b0b4bd); padding: 5px 0; }
.pp-onboard-terms li b { color: var(--text-main, #eaecef); }
.pp-agree { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: calc(13.5px * var(--sv-font-scale, 1)); font-weight: 700;
  color: var(--text-main, #eaecef); margin-bottom: 18px; cursor: pointer; }
.pp-agree input { width: 17px; height: 17px; accent-color: var(--accent-cyan, #3ea6ff); cursor: pointer; }
.pp-open-btn {
  width: 100%; max-width: 420px; height: 50px; border-radius: 12px; border: none; cursor: pointer;
  font-size: calc(16px * var(--sv-font-scale, 1)); font-weight: 900;
  background: linear-gradient(135deg, var(--warn, #f0b90b), #ff9d2f); color: #1a1200;
  transition: opacity var(--transition-fast, .15s);
}
.pp-open-btn:disabled { opacity: 0.4; cursor: not-allowed; background: var(--line-strong, rgba(255,255,255,0.16)); color: var(--text-muted, #8a8f9c); }

/* 模拟盘内嵌真实图表(和 K 线页同源,逼真交易台) */
.pp-chart-wrap {
  height: 560px; margin-bottom: 16px; border-radius: 12px; overflow: hidden;
  border: 1px solid var(--line-soft, rgba(255, 255, 255, 0.08));
  background: var(--bg-core, #0d1017);
}
.pp-chart { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 720px) { .pp-chart-wrap { height: 420px; } }

/* 模拟盘交易台:左市场列表 + 右真实图表(TGC 无真实行情→说明卡) */
.pp-terminal { display: flex; gap: 12px; margin-bottom: 16px; height: 560px; }
.pp-market { width: 200px; flex: none; overflow-y: auto; border-radius: 12px;
  border: 1px solid var(--line-soft, rgba(255,255,255,0.08)); background: var(--bg-elevated, rgba(255,255,255,0.03)); }
.pp-mkt-loading { padding: 16px; text-align: center; color: var(--text-muted, #8a8f9c); font-size: calc(12px * var(--sv-font-scale, 1)); }
.pp-mkt-row { display: flex; align-items: center; justify-content: space-between; padding: 9px 12px; cursor: pointer;
  border-bottom: 1px solid var(--line-soft, rgba(255,255,255,0.05)); border-left: 3px solid transparent; transition: background .12s; }
.pp-mkt-row:hover { background: var(--accent-soft, rgba(62,166,255,0.08)); }
.pp-mkt-row.active { background: var(--accent-soft, rgba(62,166,255,0.10)); border-left-color: var(--accent-cyan, #3ea6ff); }
.pp-mkt-sym { font-size: calc(13px * var(--sv-font-scale, 1)); font-weight: 850; font-family: var(--font-mono); color: var(--text-main, #eaecef); display: flex; align-items: center; gap: 5px; }
.pp-mkt-badge { font-size: calc(10px * var(--sv-font-scale, 1)); font-weight: 700; padding: 1px 5px; border-radius: 4px; background: rgba(240,185,11,0.16); color: var(--warn, #f0b90b); }
.pp-mkt-tgc .pp-mkt-sym { color: var(--warn, #f0b90b); }
.pp-mkt-right { text-align: right; }
.pp-mkt-price { font-size: calc(12.5px * var(--sv-font-scale, 1)); font-family: var(--font-mono); color: var(--text-main, #eaecef); }
.pp-mkt-chg { font-size: calc(11px * var(--sv-font-scale, 1)); font-family: var(--font-mono); }
.pp-mkt-chg.up { color: var(--up, #2ebd85); }
.pp-mkt-chg.down { color: var(--down, #f6465d); }
.pp-mkt-chg.muted { color: var(--text-muted, #8a8f9c); }
.pp-chart-area { flex: 1; min-width: 0; position: relative; border-radius: 12px; overflow: hidden;
  border: 1px solid var(--line-soft, rgba(255,255,255,0.08)); background: var(--bg-core, #0d1017); }
.pp-tgc-panel { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px; text-align: center; padding: 26px 30px; overflow-y: auto; background: var(--bg-core, #0d1017); }
.pp-tgc-panel[hidden] { display: none; }
.pp-tgc-badge { font-size: calc(56px * var(--sv-font-scale, 1)); line-height: 1; }
.pp-tgc-title { font-size: calc(24px * var(--sv-font-scale, 1)); font-weight: 900; color: var(--warn, #f0b90b); margin: 10px 0 4px; }
.pp-tgc-head { display: flex; align-items: baseline; gap: 10px; }
.pp-tgc-name { font-size: calc(22px * var(--sv-font-scale, 1)); font-weight: 900; color: var(--warn, #f0b90b); }
.pp-tgc-tagline { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); font-family: var(--font-mono); }
.pp-tgc-price { font-size: calc(40px * var(--sv-font-scale, 1)); font-weight: 900; font-family: var(--font-mono); color: var(--text-main, #eaecef); margin: 2px 0 4px; }
.pp-tgc-price span { font-size: calc(16px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.pp-tgc-stats { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; font-size: calc(12.5px * var(--sv-font-scale, 1));
  color: var(--text-secondary, #b0b4bd); font-family: var(--font-mono); }
.pp-tgc-stats b { color: var(--text-main, #eaecef); font-weight: 800; }
.pp-tgc-bar { width: min(420px, 90%); height: 5px; border-radius: 4px; background: var(--line-soft, rgba(255,255,255,0.08)); overflow: hidden; }
.pp-tgc-bar-fill { height: 100%; background: var(--warn, #f0b90b); border-radius: 4px; }
.pp-tgc-desc { max-width: 480px; font-size: calc(13.5px * var(--sv-font-scale, 1)); line-height: 1.85; color: var(--text-secondary, #b0b4bd); }
.pp-tgc-desc b { color: var(--text-main, #eaecef); }
.pp-tgc-how { max-width: 480px; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.pp-tgc-how b { color: var(--text-secondary, #b0b4bd); }

/* 交易所式下单面板(Opt-1:限价/市价 · 价格 · 金额↔数量 · 滑块 · 预估 · 买绿卖红) */
.pp-order-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.pp-sym-input { width: 92px; flex: 0 0 auto; text-transform: uppercase; }
.pp-otype { display: inline-flex; background: var(--bg-core, #0d1017); border: 1px solid var(--line-soft, rgba(255,255,255,.08)); border-radius: 8px; padding: 2px; }
.pp-otype-btn { border: 0; background: none; color: var(--text-muted, #8a8f9c); font-size: calc(12.5px * var(--sv-font-scale, 1)); font-weight: 700; padding: 4px 13px; border-radius: 6px; cursor: pointer; }
.pp-otype-btn.active { background: var(--bg-tertiary, #171c27); color: var(--text-main, #eaecef); }
.pp-avail { margin-left: auto; font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); font-family: var(--font-mono); }
.pp-avail b { color: var(--text-main, #eaecef); }
.pp-field { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.pp-field-lb { width: 60px; flex: 0 0 auto; font-size: calc(12.5px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.pp-field .pp-input { flex: 1; min-width: 0; }
.pp-field-unit { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); }
.pp-size-toggle { flex: 0 0 auto; border: 1px solid var(--line-soft, rgba(255,255,255,.08)); background: none; color: var(--text-secondary, #b0b4bd); font-size: calc(11.5px * var(--sv-font-scale, 1)); padding: 6px 9px; border-radius: 7px; cursor: pointer; }
.pp-slider { display: flex; gap: 6px; margin-bottom: 9px; }
.pp-slider button { flex: 1; border: 1px solid var(--line-soft, rgba(255,255,255,.08)); background: var(--bg-core, #0d1017); color: var(--text-secondary, #b0b4bd); font-size: calc(12px * var(--sv-font-scale, 1)); padding: 5px 0; border-radius: 7px; cursor: pointer; font-family: var(--font-mono); }
.pp-slider button:hover { border-color: var(--warn, #f0b90b); color: var(--text-main, #eaecef); }
.pp-est { font-size: calc(12px * var(--sv-font-scale, 1)); color: var(--text-muted, #8a8f9c); font-family: var(--font-mono); margin-bottom: 10px; min-height: 16px; }
.pp-est b { color: var(--text-main, #eaecef); }
.pp-order-btns { display: flex; gap: 10px; }
.pp-buy, .pp-sell { flex: 1; border: 0; border-radius: 10px; padding: 11px 0; font-size: calc(15px * var(--sv-font-scale, 1)); font-weight: 800; cursor: pointer; color: #fff; }
.pp-buy { background: var(--up, #2ebd85); }
.pp-sell { background: var(--down, #f6465d); }
.pp-buy:disabled, .pp-sell:disabled { opacity: .6; cursor: default; }
.pp-cancel-btn { border: 1px solid var(--line-soft, rgba(255,255,255,.08)); background: none; color: var(--down, #f6465d); font-size: calc(12px * var(--sv-font-scale, 1)); padding: 4px 10px; border-radius: 6px; cursor: pointer; }
.pp-cancel-btn:hover { border-color: var(--down, #f6465d); }
@media (max-width: 720px) { .pp-terminal { flex-direction: column; height: auto; } .pp-market { width: 100%; max-height: 190px; } .pp-chart-area { height: 420px; } }

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

/* ---- 卡片里那张「当时的盘面」(用户 2026-08-25:「点击某笔交易后,可以直接查看当时完整盘面,
   包括K线走势、自己的画线、入场/止损/止盈位置等,而不是只能查看文字记录」)----
   高度按视口给一档,再钳一个上下限:太矮看不清结构,太高一条复盘就占满一屏、
   列表失去"一眼扫过去"的作用。 */
.rv-chart-wrap {
  margin-top: 14px;
  border: 1px solid var(--line, rgba(148, 163, 184, .22));
  border-radius: 12px;
  overflow: hidden;
  background: var(--bg-soft, rgba(15, 23, 42, .35));
}
.rv-chart-frame {
  display: block;
  width: 100%;
  height: clamp(320px, 46vh, 560px);
  border: 0;
}
@media (max-width: 768px) {
  /* 窄屏图表本就局促,再压就只剩几根K线;给固定一档,靠横向滚动看不了图表所以不缩宽 */
  .rv-chart-frame { height: 340px; }
}
