:root {
  --sim-bg:#090c0a;
  --sim-panel:#121713;
  --sim-panel-2:#181f1a;
  --sim-line:#2b352e;
  --sim-line-strong:#465349;
  --sim-text:#f1f5f2;
  --sim-muted:#98a49c;
  --sim-dim:#647068;
  --sim-green:#69dc92;
  --sim-red:#ff766d;
  --sim-yellow:#f0c75e;
  --sim-blue:#72a7ff;
}

html,body { background:var(--sim-bg); }
body {
  color:var(--sim-text);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  overflow-x:hidden;
}
button,input,select { font:inherit; }
button:focus-visible,input:focus-visible,select:focus-visible {
  outline:3px solid #69dc9255;
  outline-offset:2px;
}
#simApp { min-height:100vh; background:var(--sim-bg); }

.sim-shell { min-height:100vh; padding-left:218px; }
.sim-sidebar {
  position:fixed; inset:0 auto 0 0; z-index:50; width:218px;
  display:flex; flex-direction:column; padding:22px 15px;
  background:#0d110e; border-right:1px solid var(--sim-line);
}
.sim-brand { display:flex; align-items:center; gap:11px; padding:0 7px 24px; }
.sim-brand-mark {
  width:36px; height:36px; display:grid; place-items:center;
  border-radius:8px; background:var(--sim-yellow); color:#11150f;
  font-size:1.05rem; font-weight:900;
}
.sim-brand-copy strong { display:block; font-size:.94rem; }
.sim-brand-copy span { color:var(--sim-muted); font-size:.66rem; }
.sim-nav { display:grid; gap:5px; }
.sim-nav-btn {
  min-height:44px; display:flex; align-items:center; gap:12px; width:100%;
  padding:0 12px; border:0; border-radius:7px; background:transparent;
  color:var(--sim-muted); cursor:pointer; text-align:left;
}
.sim-nav-btn:hover { background:var(--sim-panel); color:var(--sim-text); }
.sim-nav-btn.active { background:var(--sim-panel-2); color:var(--sim-green); }
.sim-nav-icon { width:20px; text-align:center; font-size:1rem; }
.sim-sidebar-foot { margin-top:auto; padding:14px 9px 2px; border-top:1px solid var(--sim-line); }
.sim-sidebar-foot strong { display:block; color:var(--sim-yellow); font-size:.86rem; }
.sim-sidebar-foot span { color:var(--sim-muted); font-size:.69rem; }

.sim-main { min-height:100vh; }
.sim-page { max-width:1120px; margin:0 auto; padding:42px 34px 64px; }
.sim-page-head { display:flex; justify-content:space-between; align-items:end; gap:24px; margin-bottom:26px; }
.sim-eyebrow { color:var(--sim-green); font-size:.72rem; font-weight:850; letter-spacing:1.4px; margin-bottom:8px; }
.sim-page-title { margin:0; font-size:clamp(1.7rem,4vw,2.65rem); line-height:1.1; letter-spacing:0; }
.sim-page-copy { max-width:630px; margin-top:10px; color:var(--sim-muted); font-size:.9rem; line-height:1.7; }
.sim-ghost-btn,.sim-secondary-btn,.sim-primary-btn,.sim-danger-btn {
  border-radius:7px; min-height:42px; padding:0 16px; font-weight:750; cursor:pointer;
}
.sim-primary-btn { border:1px solid var(--sim-green); background:var(--sim-green); color:#0b1a10; }
.sim-secondary-btn { border:1px solid var(--sim-line-strong); background:var(--sim-panel); color:var(--sim-text); }
.sim-ghost-btn { border:1px solid var(--sim-line); background:transparent; color:var(--sim-muted); }
.sim-danger-btn { border:1px solid #7d403d; background:#251413; color:var(--sim-red); }
.sim-primary-btn:disabled,.sim-secondary-btn:disabled,.sim-danger-btn:disabled { opacity:.4; cursor:not-allowed; }

.sim-dashboard-grid { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr); gap:18px; align-items:start; }
.sim-card { background:var(--sim-panel); border:1px solid var(--sim-line); border-radius:9px; padding:20px; }
.sim-card + .sim-card { margin-top:14px; }
.sim-hero-case { padding:24px; background:#151c16; border-color:#435443; }
.sim-case-top { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.sim-case-tag { color:var(--sim-green); font-size:.7rem; font-weight:850; letter-spacing:1px; margin-bottom:7px; }
.sim-case-title { font-size:1.28rem; font-weight:850; line-height:1.35; }
.sim-case-desc { margin-top:7px; color:var(--sim-muted); font-size:.84rem; line-height:1.6; }
.sim-case-meta { display:flex; gap:7px; flex-wrap:wrap; margin:15px 0 19px; }
.sim-chip { display:inline-flex; align-items:center; min-height:26px; padding:0 9px; border:1px solid var(--sim-line); border-radius:999px; color:#c8d1cb; background:#0e130f; font-size:.7rem; }
.sim-start-btn { width:100%; min-height:50px; border:0; border-radius:7px; background:var(--sim-green); color:#0b1a10; font-weight:900; cursor:pointer; }

.sim-section-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:13px; }
.sim-section-head h2 { margin:0; font-size:1rem; }
.sim-section-head span { color:var(--sim-muted); font-size:.72rem; }
.sim-stat-row { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; }
.sim-stat { padding:14px 10px; border:1px solid var(--sim-line); border-radius:7px; background:#0e130f; text-align:center; }
.sim-stat strong { display:block; font-size:1.08rem; margin-bottom:3px; }
.sim-stat span { color:var(--sim-muted); font-size:.67rem; }
.sim-recent { display:grid; gap:7px; }
.sim-recent-row { display:grid; grid-template-columns:1fr auto auto; gap:10px; align-items:center; padding:10px 0; border-bottom:1px solid var(--sim-line); }
.sim-recent-row:last-child { border-bottom:0; }
.sim-recent-row strong { font-size:.8rem; }
.sim-recent-row span { color:var(--sim-muted); font-size:.7rem; }
.sim-r-pos { color:var(--sim-green)!important; }
.sim-r-neg { color:var(--sim-red)!important; }

.sim-course-list { display:grid; gap:11px; }
.sim-module {
  display:grid; grid-template-columns:48px 1fr auto; gap:14px; align-items:center;
  min-height:80px; width:100%; padding:13px 15px; border:1px solid var(--sim-line);
  border-radius:8px; background:var(--sim-panel); color:inherit; text-align:left;
}
button.sim-module { cursor:pointer; }
.sim-module.current { border-color:#597358; background:#151d16; }
.sim-module.locked { opacity:.46; }
.sim-module-num { width:46px; height:46px; display:grid; place-items:center; border-radius:50%; border:2px solid var(--sim-line-strong); color:var(--sim-muted); font-weight:900; }
.sim-module.current .sim-module-num { background:var(--sim-green); color:#0b1a10; border-color:var(--sim-green); }
.sim-module.done .sim-module-num { background:#1e3525; border-color:#477658; color:var(--sim-green); }
.sim-module-copy strong { display:block; font-size:.92rem; margin-bottom:4px; }
.sim-module-copy span { display:block; color:var(--sim-muted); font-size:.74rem; line-height:1.45; }
.sim-module-state { color:var(--sim-muted); font-size:.72rem; white-space:nowrap; }
.sim-case-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:16px; }
.sim-case-row { display:flex; flex-direction:column; align-items:flex-start; gap:7px; min-height:112px; padding:14px; border:1px solid var(--sim-line); border-radius:8px; background:#0e130f; color:inherit; text-align:left; cursor:pointer; }
.sim-case-row strong { font-size:.85rem; line-height:1.35; }
.sim-case-row span { color:var(--sim-muted); font-size:.7rem; line-height:1.4; }

/* replay workspace */
.sim-replay { min-height:100vh; display:flex; flex-direction:column; background:var(--sim-bg); }
.sim-replay-head {
  position:sticky; top:0; z-index:30; min-height:64px; display:grid;
  grid-template-columns:46px 1fr auto; align-items:center; gap:12px;
  padding:9px 18px; background:#0b0f0cf2; border-bottom:1px solid var(--sim-line); backdrop-filter:blur(14px);
}
.sim-close { width:40px; height:40px; border:1px solid var(--sim-line); border-radius:7px; background:var(--sim-panel); color:var(--sim-muted); cursor:pointer; }
.sim-market strong { display:block; font-size:.91rem; }
.sim-market span { display:block; color:var(--sim-muted); font-size:.68rem; margin-top:2px; }
.sim-replay-counter { text-align:right; }
.sim-replay-counter strong { display:block; color:var(--sim-yellow); font-size:.82rem; }
.sim-replay-counter span { color:var(--sim-muted); font-size:.66rem; }
.sim-replay-body { width:100%; max-width:1320px; margin:0 auto; display:grid; grid-template-columns:minmax(0,1fr) 350px; gap:0; flex:1; }
.sim-chart-side { min-width:0; padding:18px 18px 110px; }
.sim-brief { display:flex; justify-content:space-between; gap:18px; margin-bottom:12px; }
.sim-brief-copy { color:#c8d1cb; font-size:.83rem; line-height:1.55; }
.sim-noise { max-width:420px; color:#d0bd79; font-size:.75rem; line-height:1.45; text-align:right; }
.sim-chart-box { position:relative; border:1px solid var(--sim-line); border-radius:8px; background:#080b09; overflow:hidden; }
.sim-chart-toolbar { display:flex; justify-content:space-between; gap:12px; padding:10px 12px; border-bottom:1px solid var(--sim-line); color:var(--sim-muted); font-size:.7rem; }
.sim-chart-toolbar strong { color:var(--sim-text); font-size:.76rem; }
#simChart { display:block; width:100%; height:460px; touch-action:none; }
.sim-hidden-future { color:var(--sim-yellow); }
.sim-position-strip { display:grid; grid-template-columns:repeat(5,1fr); gap:1px; margin-top:10px; border:1px solid var(--sim-line); border-radius:8px; overflow:hidden; background:var(--sim-line); }
.sim-position-cell { padding:11px; background:var(--sim-panel); }
.sim-position-cell span { display:block; color:var(--sim-muted); font-size:.62rem; margin-bottom:4px; }
.sim-position-cell strong { font-size:.83rem; }
.sim-event-log { display:flex; gap:7px; flex-wrap:wrap; margin-top:10px; }
.sim-event { padding:5px 8px; border:1px solid var(--sim-line); border-radius:6px; color:var(--sim-muted); font-size:.67rem; }

.sim-control-side { border-left:1px solid var(--sim-line); background:#0d110e; padding:20px 18px 100px; }
.sim-control-title { font-size:1rem; font-weight:850; margin-bottom:7px; }
.sim-control-copy { color:var(--sim-muted); font-size:.77rem; line-height:1.55; margin-bottom:17px; }
.sim-action-tabs { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin-bottom:15px; }
.sim-action-tab { min-height:42px; border:1px solid var(--sim-line); border-radius:7px; background:var(--sim-panel); color:var(--sim-muted); cursor:pointer; }
.sim-action-tab.active.long { border-color:#4d8d61; color:var(--sim-green); background:#14241a; }
.sim-action-tab.active.short { border-color:#92504c; color:var(--sim-red); background:#251514; }
.sim-action-tab.active.wait { border-color:#6d7470; color:var(--sim-text); }
.sim-field { margin-bottom:13px; }
.sim-field label { display:flex; justify-content:space-between; gap:10px; margin-bottom:6px; color:var(--sim-muted); font-size:.7rem; }
.sim-field label strong { color:var(--sim-text); }
.sim-input { width:100%; height:42px; padding:0 11px; border:1px solid var(--sim-line); border-radius:7px; background:#080b09; color:var(--sim-text); }
.sim-segments { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.sim-segment { min-height:38px; border:1px solid var(--sim-line); border-radius:6px; background:var(--sim-panel); color:var(--sim-muted); cursor:pointer; }
.sim-segment.active { border-color:var(--sim-yellow); color:var(--sim-yellow); background:#211e12; }
.sim-formula { padding:12px; border:1px solid var(--sim-line); border-radius:7px; background:#0b100c; margin:14px 0; }
.sim-formula-row { display:flex; justify-content:space-between; gap:12px; font-size:.73rem; margin-bottom:7px; }
.sim-formula-row:last-child { margin-bottom:0; }
.sim-formula-row span { color:var(--sim-muted); }
.sim-formula-row strong { color:var(--sim-text); }
.sim-warning { padding:9px 10px; margin:10px 0; border-left:3px solid var(--sim-yellow); background:#201d12; color:#d8c77f; font-size:.71rem; line-height:1.5; }
.sim-submit { width:100%; min-height:48px; border:0; border-radius:7px; background:var(--sim-green); color:#0b1a10; font-weight:900; cursor:pointer; }

.sim-live-actions { display:grid; gap:9px; }
.sim-live-btn { min-height:48px; border:1px solid var(--sim-line); border-radius:7px; background:var(--sim-panel); color:var(--sim-text); cursor:pointer; font-weight:750; }
.sim-live-btn.primary { background:var(--sim-green); color:#0b1a10; border-color:var(--sim-green); }
.sim-live-btn.add { color:var(--sim-blue); border-color:#3c5f8d; }
.sim-live-btn.exit { color:var(--sim-red); border-color:#7d403d; }
.sim-live-btn:disabled { opacity:.35; cursor:not-allowed; }
.sim-fixed-rule { color:#87918a; font-size:12px; line-height:1.6; padding:10px 12px; background:#111714; border:1px solid #27312b; }
.sim-observe-progress { display:flex; align-items:center; justify-content:space-between; margin:16px 0 4px; padding:12px 14px; background:#111714; border:1px solid #27312b; }
.sim-observe-progress span { color:#87918a; font-size:12px; }
.sim-observe-progress strong { color:#dce5df; font-size:13px; }
.sim-live-note { color:var(--sim-muted); font-size:.71rem; line-height:1.5; margin-top:8px; }
.sim-stop-editor { padding:12px; margin-top:10px; border:1px solid var(--sim-line); border-radius:7px; background:#080b09; }

.sim-review { max-width:900px; margin:0 auto; padding:34px 24px 70px; }
.sim-review-hero { display:grid; grid-template-columns:150px 1fr; gap:22px; align-items:center; padding:22px; border:1px solid var(--sim-line); border-radius:9px; background:var(--sim-panel); }
.sim-r-score { font-size:2.8rem; font-weight:950; text-align:center; line-height:1; }
.sim-r-score span { display:block; margin-top:8px; color:var(--sim-muted); font-size:.65rem; font-weight:600; }
.sim-review-title { font-size:1.35rem; font-weight:900; margin-bottom:7px; }
.sim-review-copy { color:var(--sim-muted); font-size:.82rem; line-height:1.65; }
.sim-review-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px; }
.sim-check-list { display:grid; gap:9px; }
.sim-check { display:flex; gap:10px; align-items:flex-start; padding:10px; border:1px solid var(--sim-line); border-radius:7px; }
.sim-check.ok { border-color:#375f43; }
.sim-check.bad { border-color:#75413e; }
.sim-check strong { display:block; font-size:.8rem; margin-bottom:2px; }
.sim-check span { color:var(--sim-muted); font-size:.7rem; line-height:1.45; }
.sim-review-actions { display:flex; gap:9px; margin-top:18px; }

.sim-journal-table { display:grid; gap:8px; }
.sim-journal-row { display:grid; grid-template-columns:1.3fr .7fr .6fr .6fr .7fr; gap:12px; align-items:center; padding:13px 14px; border:1px solid var(--sim-line); border-radius:7px; background:var(--sim-panel); }
.sim-journal-row strong { font-size:.8rem; }
.sim-journal-row span { color:var(--sim-muted); font-size:.71rem; }
.sim-empty { padding:38px 20px; text-align:center; color:var(--sim-muted); border:1px dashed var(--sim-line); border-radius:8px; }
.sim-equity { height:160px; width:100%; display:block; }

.sim-rule-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.sim-rule { padding:18px; border:1px solid var(--sim-line); border-radius:8px; background:var(--sim-panel); }
.sim-rule-num { color:var(--sim-yellow); font-size:.68rem; font-weight:900; letter-spacing:1px; }
.sim-rule h3 { margin:7px 0; font-size:.96rem; }
.sim-rule p { margin:0; color:var(--sim-muted); font-size:.77rem; line-height:1.65; }
.sim-rule code { display:block; margin-top:10px; padding:9px; border-radius:6px; background:#080b09; color:#cbd6ce; font-size:.72rem; white-space:normal; }
.sim-disclaimer { margin-top:16px; color:var(--sim-dim); font-size:.68rem; line-height:1.6; }

.sim-toast { position:fixed; z-index:100; left:50%; bottom:24px; transform:translateX(-50%); max-width:min(420px,calc(100vw - 28px)); padding:11px 14px; border:1px solid var(--sim-line-strong); border-radius:7px; background:#1b221d; color:var(--sim-text); font-size:.78rem; box-shadow:0 12px 32px #0009; }

@media (max-width:900px) {
  .sim-shell { padding-left:0; padding-bottom:calc(68px + env(safe-area-inset-bottom)); }
  .sim-sidebar {
    inset:auto 0 0; width:auto; height:calc(64px + env(safe-area-inset-bottom));
    display:block; padding:0 6px env(safe-area-inset-bottom); border-right:0; border-top:1px solid var(--sim-line);
  }
  .sim-brand,.sim-sidebar-foot { display:none; }
  .sim-nav { height:64px; grid-template-columns:repeat(4,1fr); gap:0; }
  .sim-nav-btn { min-height:60px; flex-direction:column; justify-content:center; gap:3px; padding:4px 2px; border-radius:0; text-align:center; font-size:.67rem; }
  .sim-nav-btn.active { background:transparent; }
  .sim-nav-icon { width:auto; font-size:1.05rem; }
  .sim-page { padding:24px 14px 32px; }
  .sim-dashboard-grid { grid-template-columns:1fr; }
  .sim-page-head { align-items:flex-start; }
  .sim-page-head > .sim-ghost-btn { display:none; }
  .sim-case-list { grid-template-columns:1fr; }

  .sim-replay { padding-bottom:0; }
  .sim-replay-body { display:block; }
  .sim-chart-side { padding:12px 12px 0; }
  .sim-brief { display:block; }
  .sim-noise { max-width:none; text-align:left; margin-top:7px; }
  #simChart { height:330px; }
  .sim-position-strip { grid-template-columns:repeat(3,1fr); }
  .sim-position-cell:nth-child(4),.sim-position-cell:nth-child(5) { display:none; }
  .sim-control-side { border-left:0; border-top:1px solid var(--sim-line); padding:18px 14px calc(24px + env(safe-area-inset-bottom)); }
  .sim-live-actions {
    position:sticky; bottom:0; z-index:25; margin:0 -14px calc(-24px - env(safe-area-inset-bottom));
    padding:12px 14px calc(12px + env(safe-area-inset-bottom)); background:#0c100df2; border-top:1px solid var(--sim-line); backdrop-filter:blur(14px);
  }
  body[data-sim-screen="replay"] .sim-sidebar { display:none; }
  body[data-sim-screen="replay"] .sim-shell { padding-bottom:0; }
  .sim-review { padding:22px 14px 40px; }
  .sim-review-hero { grid-template-columns:1fr; text-align:center; }
  .sim-review-grid { grid-template-columns:1fr; }
  .sim-review-actions { flex-direction:column; }
  .sim-review-actions button { width:100%; }
  .sim-journal-row { grid-template-columns:1fr auto auto; }
  .sim-journal-row span:nth-child(2),.sim-journal-row span:nth-child(4) { display:none; }
  .sim-rule-grid { grid-template-columns:1fr; }
}

@media (max-width:420px) {
  .sim-page-title { font-size:1.75rem; }
  .sim-page-copy { font-size:.84rem; }
  .sim-hero-case { padding:18px; }
  .sim-stat-row { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .sim-stat { padding:11px 4px; }
  .sim-module { grid-template-columns:42px 1fr; }
  .sim-module-num { width:40px; height:40px; }
  .sim-module-state { grid-column:2; }
  .sim-replay-head { grid-template-columns:42px 1fr auto; padding:8px 10px; }
  .sim-chart-side { padding-left:8px; padding-right:8px; }
  #simChart { height:300px; }
  .sim-chart-toolbar { padding:9px; }
  .sim-position-cell { padding:9px 7px; }
  .sim-action-tabs { gap:5px; }
  .sim-segments { gap:4px; }
}

@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; }
}
